當新建乙個檔案或目錄時,ext2是如何處理的?這個時候就要blockbitmap及inode bitmap的幫忙。假設我們想要新增乙個檔案,此時檔案系統的行為是:
1、先確定使用者對於欲新增的檔案是否有w與x許可權,如果有才能新增
2、根據inode bitmap找到沒有使用的inode號碼,將新檔案的許可權/屬性寫入
3、根據block bitmap找到沒有使用的block號碼,將實際的資料寫入block中,並更新inode的block指向資料。
4、將剛才寫入的block與inode同步更新到inode bitmap與block bitmap中,並更新superblock的內容
一般來說,我們將inode table與data block稱為資料存放區域,至於其他例如super block、block bitmap、inode bitmap等區段稱為metadata(中間資料),因為super block、inode bitmap與block bitmap的資料是經常變動的,每次新增,編輯,刪除都可能影響到這三部分的資料,因此才將其稱為中間資料。
在一般正常情況下,上述操作自然可以順利完成,如果出現意外怎麼辦?比如檔案在寫入檔案系統時,因為不明原因導致系統中斷(比如突然通電,核心發生錯誤等),所以寫入的資料僅有inode bitmap與block bitmap而已,最後乙個同步更新中間資料的步驟沒有做完,此時就會發生meta data 的內容與實際資料存放區產生不一致的情況。
既然不一致,那麼就得克服。在早期的ext2檔案系統中,如果發生這個問題,那麼系統在重新啟動的時候,就會通過super block當中記錄的valid bit(是否有掛載)與檔案系統的state等狀態來判斷是否強制進行資料一致性的檢查。但是這樣檢查很費時,特別當檔案系統特別大時。所以後面一般使用日誌檔案系統。
為了避免上述提到的檔案系統不一致的情況發生,乙個辦法是:如果在檔案系統中規劃出乙個塊,該塊專門記錄寫入或修訂檔案時的步驟,那不就可以簡化一致性檢查的操作了。區域性如下:
1、預備:當系統要寫入乙個檔案時,會先在日誌記錄塊中記錄某個檔案準備要寫入的資訊。
2、實際寫入:開始寫入檔案的許可權與資料,開始更新meta data的資料
3、結束:完成資料與meta data的更新後,在日誌記錄塊當中完成該檔案的記錄
在這樣的程式當中,萬一資料的記錄過程中發生了問題,那麼系統只要檢查日誌記錄塊就可以知道哪個檔案發生了問題,針對該問題做一致性檢查即可,而不必針對整塊檔案系統去檢查,這樣就可以達到快速修復檔案系統的能力。這就是日誌式檔案最基礎的功能。
ext2檔案系統
ext2磁碟結構 ext2分割槽和ext2分組的分布圖 下圖是借用其他部落格的 塊組中的每個塊包含的資訊 超級快 1個塊 描述該分割槽中的整個檔案系統的資訊,包括有多少個快組,每個快組有多少個塊,多少個索引節點等。組描述符塊 n塊 塊點陣圖 1塊 索引節點位圖 1塊 索引節點 n塊 資料塊 n塊 塊...
Ext2檔案系統
ext2檔案系統的總體布局,如下圖。1檔案系統的最小儲存單元是塊 block 塊的大小一般為512bytes,或者是它的整數倍,塊的大小是在格式化是所確定的。不能修改除非重新格式化。上圖中顯示了檔案系統的總體布局,由乙個boot block和對個block group組成,每個block group...
認識Linux下Ext2與Ext3檔案系統的區別
linux下的ext2檔案系統,是 gnu linux 系統中標準的檔案系統,其特點為訪問檔案的效能極好,對於中小型的檔案更顯示出優勢,這主要得利於其簇快取層的優良設計。其單一檔案大小與檔案系統本身的容量上限與檔案系統本身的簇大小有關,在一般常見的 x86 電腦系統中,簇最大為 4kb,則單一檔案大...