Block的知識小結

2021-10-04 06:04:39 字數 1456 閱讀 5582

磁碟分割槽格式化檔案系統後,會分為inode和block兩部分內容

1) 磁碟讀取資料是按照block為單位讀取的

2) 乙個檔案可能占用多個block。每讀取乙個block就會消耗一次磁碟i/o

3)  如果要提高磁碟io效能,那麼就應該盡可能一次性讀取資料盡量的多。

4) 乙個block只能存放乙個檔案的內容,無**件的內容有多小,如果block為4k,那麼存放1k的檔案,剩下的3k就浪費了。

5) block並非越大越好. block太大對於小檔案存放會浪費磁碟空間,例如:1000k的檔案,block為4k,占用250個block,block為1k,占用1000個block. 消耗i/o分別是250次和1000次。

6) 大檔案(大於16k)一般設定block大一些,小檔案(小於1k)一般設定block小一些。

7) block太大如4k,檔案全是0.1k的,大量浪費磁碟空間,但是訪問效率高 

8) block太小如1k,檔案全是1000k的,消耗磁碟io

9) block的設定是格式化分割槽的時候,mkfs.ext4 -b 2048 -i 256 /dev/sdb

10)  檔案較大時,block設定大一些會提公升磁碟訪問效率

11) ext3/ext4  檔案系統(centos5和6),一般設定4k

12)乙個檔案可以有多個block,但乙個block只能被乙個檔案使用。

13)乙個檔案至少占用乙個inode和乙個block。

面試題:乙個100m(1000 000k)的磁碟分割槽,分別寫入1k的檔案或寫入1m的檔案,分別可以寫多少個

分析:a:上面的考試題考查的是檔案系統inode和block的知識

b:   inode 是存放檔案屬性資訊的,預設大小是128byte(c58),256byte c(64)

c: block是存放檔案實際內容的,預設大小為1k,或者4k,一般企業多用4k的block

d:乙個檔案至少占用  乙個inode和乙個block

e: 預設較大分割槽常規企業真實場景中,inode數量是足夠的(預設不影響儲存數量),而block數量消耗的會很快。

面試題 2   往磁碟寫入資料的時候,出現 no space on device left   

出現這種情況  1 磁碟inode滿了    2  磁碟block滿了

先用 df  -h 檢視磁碟空間,如果沒有滿,則是inode滿了。 (一般是磁碟上面存入小檔案太多,比block小很多的檔案太多)

可能出現的情況有  企業工作中郵件臨時對列/var/spool/clientmquene 這裡很容易被大量小檔案佔滿導致 no space on device left 的錯誤。clientmquene目錄只有安裝了sendmail服務,才會有,是sendmail郵件的臨時對列,centos5.8預設就會安裝sendmail,centos6.6預設沒有sendmail。

回答:假設block為4k,寫入1k的檔案數量  

Block 使用的小結 有轉的成分

block 簡介 block 作為在 c語言的擴充套件,並不是高新技術,和其他語言的閉包或 lambda 表示式是一回事.需要注意的是由於 objective c在 ios 中不支援 gc機制,使用 block 必須自己管理記憶體,而記憶體管理正是使用 bloc 坑最多的地方,錯誤的記憶體管理會導致...

Block的使用 初探Block

看了兩天的block。網上是有非常多解說與教程,也有講得非常好的。這裡就主要解說下我的理解與收穫。歡迎拍磚。所謂block。我覺得應該是乙個閉包函式。而閉包,就是說block以及內部全部的變數生命週期都在其呼叫函式的生命週期內。它一被呼叫完畢,則會被立刻釋放。這裡不講執行機制,僅僅簡要地講基本的用法...

DLL知識小結

目標 在dll中實現乙個函式,用乙個exe對函式進行顯式的呼叫,只需將dll放在vc同一工程下。動態鏈結庫的實現 include stdafx.h bool apientry dllmain handle hmodule,dword ul reason for call,lpvoid lpreser...