2012年5月2日 星期三

fsck / e2fsck

fsck 會檢查分割區類型, 調用其分割區檢查程式


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

沒有留言:

張貼留言