e2fsck 檢查步驟
- 第一步:檢查所有 inode 的一致性 - 檢查所有 inode 所表示檔案和目錄的 mode
(包括檔案類型和使用權限) 是否有效,所有區塊 (block) 指標中的區塊編號是否有效,inode 中的檔案大小 (size count)
和區塊數目 (block count) 欄是否正確以及多於一個 inode 使用同一個區塊。在檢查過程中,fsck
同時收集檔案系統以下資料以方便進行往後的步驟:
- 記錄那個 inode 確實正在使用,表示檔案還是目錄。
- 記錄那個區塊確實正在使用,和有沒有多於一個 inode 使用同一個區塊。
- 識別表示目錄的 inode 所使用的資料區塊 (data block)
- 第二步:檢查所有目錄 - 使用第一步建立的紀錄檢查所有目錄中資料,並在過程中同時同時收集各目錄的父目錄 inode:
- 每個目錄項目的長度和檔案/目錄名稱是否有效
- 目錄中 inode 編號是否有效 (大於 1 和小於檔案系統的 inode 總數)
- 目錄中 inode 編號所指的 inode 是否正使用
- 第一個項目是 “.” 而且 inode 編號指向目錄自己
- 第二個項目是 “..”
- 第三步:檢查目錄結構 - 先將根目錄 (/) 標記為 “done”,並追蹤所有目錄 inode 的父目錄 inode 直至一個已標記為 “done”的目錄 inode。如果不成功或追蹤過程訪問同一目錄 inode 多於一次 (表示為循環目錄),e2fsck 會把目錄移至 lost+found 中。
- 第四步:檢查所有 inode 的連結數目 (link count/reference counter) - 比較在第一步計算出來的連結數目和第二、三步的結果,把連結數目 0 的 inode 移至 lost+found 中。
- 第五步:檢查超級區塊 (superblock) 的資料 - 比較超級區塊的資料和前四步所計算的資料包括區塊對應表 (block bitmaps) 和 inode 對應表 (inode bitmaps) 。如果不一樣,將使用前四步所計算的資料修正超級區塊的資料。
* 不要在已掛載的檔案系統上執行 fsck
Reference :
檢查檔案系統 (Filesystem Check, fsck) - FlossDoc
鳥哥的 Linux 私房菜 -- EXT2 / EXT3 的 filesystem
沒有留言:
張貼留言