淺析 Ext 文件系統


安裝Linux的時候可以將 /, /boot, /home 等放在不同的分區,每個分區可以選擇需要的文件系統

Ext文件系統的組織

1. boot sector 用於存放引導程序,不同於Windows, Linux的安裝可以將引導程序安裝在自己選定的分區的boot sector,從而避免了覆蓋MBR,不會損壞之前的系統的引導

此處特別注意,如果你的 block size = 1024Bytes, 那么boot sector將占用 1個block,並位於block group 0, superblock將占用1個block,位於block group1;

而如果你的blocksize>1024Bytes,那么你的boot sector與superblock將各占用1024Bytes,並一起放在同一個block里,位於block group 0.(意思是block group0只有1個block,這個block同時包含了boot sector 和 superblcok)

2. 文件系統將block分成多個block group,每個group又包括如下幾部分:

1) Super Block: 這個區域記載了block/inode總量,可用量,每個block和inode的大小,日志系統的大小,FS的掛載時間等等數據,只有第1個Group會有這個Superblock,如果其他group也有,都是備份,如果1號group損壞,可以用備份來挽救

2) FS Desc: 記錄了SuperBlock,bitmap,data block的起止block段, 可以通過 dumpe2fs 命令來查看super block 和 block group的信息

3) inode bitmap: 記錄了所有inode的占用情況,每次寫入文件前先要查找這個bitmap,確定使用的空inode

4) block bitmap: 記錄了所有data block的占用情況,每次寫入文件簽先查找這個bitmap,確定使用的空block

5) inode table: 記錄了所有文件夾,文件的屬性(權限,所有者等)和數據block存儲號,查找到文件的inode后就可以獲得數據存儲的block號,一次性將數據全部讀取出來

6) data block: 實際存儲數據的地方,ext2中每個block的大小可以為 1K, 2K, 4K

 

inode與data block的關系

linux的文件系統屬於索引文件系統,其中inode table就是文件索引,無論是目錄和文件的索引都是存在inode中,每個目錄或文件數據至少占用一個data block

對於目錄而言,他的inode對應的data block里存儲了該目錄下所有目錄和文件的文件名及其對應的inode

對於文件而言, 他的inode里存儲了文件屬性,所有者,存儲該文件的所有data block號,而data block里存儲了實際文件內容,其示意圖如下

他的好處就是系統可以一次性知道所有data block的號碼,從而磁盤最多需要轉一圈便可以把數據全都讀出來

而對於U盤的FAT文件系統,其存儲如下

這種情況由於每次需要讀取完一個block才知道下一個block在哪里,則有可能需要磁盤轉很多圈才能讀取完數據,所謂“碎片整理”就是因為磁盤的數據存儲過於分散,造成讀取效率低下,整理既是把同一個文件的數據block都放到一起。

 

文件讀取的步驟

例如讀取 /etc/hosts

1. 通過掛載點信息查找 / 的inode, 並找到 / 的block

2. 通過 / 的block 找到/etc的inode,並找到/etc的block

3. 通過 /etc 的block找到hosts文件的inode,最后讀取hosts文件的data block

 

Ext3的日志文件系統

由於系統的異常中斷,可能造成某些輸入的寫入成功,但是bitmap和super block的更新失敗,造成數據不一致,操作系統只能在重啟的時候進行強制同步,掃表磁盤所有文件來查找異常寫入的數據。而這會話費大量的時間,所以引入了日志文件系統,通過一個日志記錄塊來磁盤的寫入記錄,當異常發生時,查找這個日志文件就能很快的找到造成數據不一致的文件,從而修復異常。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM