Linux

fsck:每次使用-c檢查後文件系統都被修改了,為什麼?

  • July 21, 2012

我使用腳本以自動方式對 CF 卡(與 USB 讀卡器連接)進行分區和格式化。在主要過程之後,我再次使用 fsck 檢查卡。為了檢查壞塊,我還嘗試了“-c”開關,但我總是得到一個返回值!= 0 和消息“文件系統已修改”(見下文)。多次檢查同一驅動器時,我得到相同的結果…

有誰知道為什麼a)文件系統完全被修改,b)為什麼每次我檢查時都會發生這種情況,而不僅僅是在發生錯誤的情況下(如壞塊)?

這是輸出:

linux-box# fsck.ext3 -c /dev/sdx1
e2fsck 1.40.2 (12-Jul-2007)
Checking for bad blocks (read-only test): done
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information

Volume (/dev/sdx1): ***** FILE SYSTEM WAS MODIFIED *****
Volume (/dev/sdx1): 5132/245760 files (1.2% non-contiguous), 178910/1959896 blocks

Quoth手冊頁:

-c

此選項使 e2fsck 執行 badblocks(8) 程序以查找文件系統上的任何壞塊,然後通過將它們添加到壞塊 inode 將它們標記為壞塊。如果此選項指定了兩次,則將使用非破壞性讀寫測試完成壞塊掃描。

因此,該-c選項寫入文件系統,fsck解釋為“糾正錯誤”,因此返回程式碼為1(“File system errors Corrected”)

…所以,你問,為什麼1當你指定-n它應該以只讀方式打開文件系統並且不做任何更改時它會返回?

好吧,進一步閱讀手冊頁也揭示了這個答案:

-n 以只讀方式打開文件系統,並假設所有問題的答案都是“否”。允許以非互動方式使用 e2fsck。(注意:如果除了*-n選項之外還指定了****-c**、-l或**-L**選項,則文件系統將以讀寫方式打開,以允許更新壞塊列表*。但是,沒有其他將對文件系統進行更改。)

(換句話說:這-n是一個謊言!)


這個fsck.ext3答案完全由.

引用自:https://serverfault.com/questions/141122