• 1. Linux內核源代碼導讀 中國科學技術大學計算機系 陳香蘭(0551-3606864) [email protected] Spring 2009
  • 2. Ext2文件系統簡介
  • 3. EXT2文件系統是EXT文件系統的升級,在Linux中得到了廣泛的使用。 介紹EXT2文件系統的 磁盤組織 目錄項和支持的文件類型3
  • 4. (一)EXT2文件系統的磁盤組織 除了引導扇區之外,EXT2磁盤分區被順序劃分為若干個磁盤塊組(Block Group)。 每個塊組由若干個磁盤塊,按照相同的方式組織,具有相同的大小。 EXT2磁盤塊組中的磁盤塊按順序被組織成: 一個用作超級塊的磁盤塊。 在這個磁盤塊里,存放了文件系統超級塊的一個拷貝; N個記錄組描述符的磁盤塊; 1個記錄數據塊位圖的磁盤塊; 1個記錄索引結點位圖的磁盤塊; N個用作索引結點表的磁盤塊; N個用作數據塊的磁盤塊。冗余,使用塊組0 e2fsck更新或恢復 塊組大小主要受限于塊位圖4
  • 5. EXT2的超級塊每個塊組的第一個磁盤塊用來保存所在EXT2 fs的超級塊 多個塊組中的超級塊形成冗余 在某個或少數幾個超級塊被破壞時,可用于恢復被破壞的超級塊信息。(e2fsck) 注意:大多數數據結構存在兩個版本 磁盤存儲版本,例如ext2_super_block(閱讀) 內存版本,例如ext2_sb_info (閱讀)5
  • 6. 組描述符組描述符用來描述一個磁盤塊組的相關信息 數據結構為ext2_group_desc(閱讀)6
  • 7. 索引結點 EXT2中所有的索引結點大小相同,都是128個字節。 數據結構 磁盤存儲數據結構ext2_inode(閱讀) 內存中結構ext2_inode_info(閱讀) 理論基?。何募菘櫚淖櫓絞?鏈式(顯式 vs 隱式) 索引方式(直接索引,一級索引,二級索引,等等;組合索引)7
  • 8. 關于索引節點中的i_block[]ext2的索引結點中使用了組合索引方式。 前12項用作直接索引 第13項用作間接索引 第14項用作二次間接索引 第15項用作三次間接索引 8
  • 9. 索引節點表EXT2的一個磁盤塊組中的索引結點存儲在一組連續的磁盤塊中,形成一個索引結點表。 這組磁盤塊中的第一個磁盤塊的塊號存儲在超級塊的bg_inode_table數據項中。 根據磁盤塊的大小,可以計算出每個磁盤塊能容納多少個索引結點 根據索引結點的總個數,可以計算出索引結點表所需要占用的磁盤塊的個數。 9
  • 10. 數據塊位圖和索引結點塊位圖EXT2的空閑盤塊分配算法采用了位圖法 位圖: 便于查找數據塊或索引結點的分配信息 每個位(bit)都對應了一個磁盤塊: 0,表示對應的磁盤塊(或索引結點)空閑 1,表示占用。 2個位圖分別占用一個專門的磁盤塊。 根據磁盤塊的大小,可以計算出每個塊組中最多能容納的數據塊個數和索引節點塊個數。 10
  • 11. (二)EXT2中的目錄項和文件類型 在EXT2中,目錄是一種特殊的文件,這種文件的數據塊中存放了該目錄下的所有目錄項 11
  • 12. 新版的目錄項結構12
  • 13. EXT2支持的文件類型 EXT2在目錄項中存放了文件的類型信息。文件類型可以是0~7中的任意一個整數。它們分別代表如下含義: 0:文件類型未知; 1:普通文件類型; 2:目錄; 3:字符設備; 4:塊設備; 5:有名管道FIFO; 6:套接字; 7:符號鏈接。13
  • 14. 注意:14
  • 15. (三)創建一個ext2文件系統在磁盤上創建文件系統通常有兩個步驟: 格式化磁盤 Linux中:superformat或者fdformat 創建文件系統 Ext2:mke2fs mke2fs的缺省參數 磁盤塊大?。?024字節 分片:目前不支持,因此與磁盤塊一樣 分配inode的個數:1/8192B 永久保留的塊的個數:5%15
  • 16. 創建流程初始化超級塊和組描述符 Optionally, 檢查是否有壞塊,若有創建壞塊列表 對每個塊組,保留所有用來存放超級塊、組描述符、inode表、2個位圖的磁盤塊 初始化每個塊組中的位圖 初始化每個塊組中的inode表 創建 /root 目錄 創建 lost+found 目錄(供e2fsck 使用,與壞塊相關) 為上述兩個目錄而更新位圖信息 若有壞塊,則將其在 lost+found 目錄中組織起來16
  • 17. 以1.44MB的軟盤為例,創建ext2文件系統后17
  • 18. (四)Ext2提供的各種對象方法超級塊對象方法18
  • 19. 索引節點對象方法 19
  • 20. 文件對象方法20
  • 21. (五)管理ext2的磁盤空間存儲在磁盤上的文件與用戶所“看到”的文件有所不同: 用戶感覺,文件在邏輯上是連續的 而在磁盤上,存儲文件數據的磁盤塊可能分散在磁盤各處 用戶感覺,文件可能比較大 而在磁盤上,由于文件空洞的存在,分配給文件的磁盤空間可能小于用戶感覺到的文件大小。21
  • 22. 涉及到如下操作: 創建/刪除一個索引節點 數據塊的尋址 文件空洞 分配/釋放一個數據塊22
  • 23. 創建/刪除一個索引節點創建一個磁盤索引節點 刪除一個索引節點23
  • 24. 關于數據塊的尋址任何一個常規文件都會包含一系列數據塊 文件內塊號 vs. 邏輯塊號 根據數據在文件中的偏移可以計算邏輯塊號: 首先計算出文件內塊號 =(偏移f-1)/塊大小的商 +1 根據索引信息,查詢到邏輯塊號24
  • 25. 混合索引示意圖25
  • 26. 文件大小限制26
  • 27. 關于文件空洞A file hole is a portion of a regular file that contains null characters and is not stored in any data block on disk. 這是UNIX文件一直以來都有的一個特性 例如命令: 創建一個大小為1024×6+1字節的文件,這個文件有一個1024×6=6144個字節大小的空洞。只有最后一個字節存放了字母“X” 文件空洞可以節省磁盤空間 Ext2通過數據塊的動態分配來實現這一點: 當且僅當一個進程要寫數據到文件中的時候才真正分配磁盤塊27
  • 28. 分配/釋放一個數據塊當一個文件需要新的數據塊來存放數據時 當一個文件被刪除或者被截斷時28
  • 29. Thanks!The end.

梦幻诛仙手游丹青阁天书 www.rasug.icu 下載文檔到電腦,查找使用更方便

需要 10 金幣 [ 分享文檔獲得金幣 ] 0 人已下載

下載文檔