安裝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的更新失敗,造成數據不一致,操作系統只能在重啟的時候進行強制同步,掃表磁盤所有文件來查找異常寫入的數據。而這會話費大量的時間,所以引入了日志文件系統,通過一個日志記錄塊來磁盤的寫入記錄,當異常發生時,查找這個日志文件就能很快的找到造成數據不一致的文件,從而修復異常。
