我使用脚本以自动的方式对CF卡(与USB写卡器连接)进行分区和格式化。 在主要过程之后,我再次用fsck检查卡。 为了检查坏块,我也尝试了'-c'开关,但是我总是得到一个返回值!= 0,并显示“FILE SYSTEM WAS MODIFIED”(见下文)。 我几次检查同一个驱动器时得到了相同的结果…
有谁知道为什么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
说说手册:
-C
此选项会导致e2fsck运行badblocks(8)程序来查找文件系统上的任何坏块,然后将它们添加到坏块inode中,将其标记为坏。 如果这个选项被指定了两次,那么坏块扫描将使用非破坏性的读写testing来完成。
因此, -c
选项写入文件系统, fsck
将其解释为“更正错误”,因此返回码为1
(“更正文件系统错误”)
…所以,你问,为什么当你指定-n
,它会返回1
,这应该打开文件系统只读,没有改变?
那么,进一步阅读manpage就会发现,答案也是这样的:
-n以只读方式打开文件系统,对所有问题都回答“否”。 允许e2fsck以非交互方式使用。 ( 注意:如果除-n选项外还指定了-c , -l或-L选项,则文件系统将以读写方式打开,以允许更新坏块列表 。将对文件系统进行更改。)
(换句话说: -n
是谎言!)
这个答案完全由fsck.ext3
的联机手册带给你。
你有没有尝试-v切换到fsck获得更多的信息? 您也可以尝试单独运行badblocks并检查其输出。
最有可能写入文件系统的“标签”区域。 那么上次fsck'd的date/时间以及文件系统标签中上次安装计数字段以来的次数呢?
如果你看看tune2fs参数,这种types的写入将支持-c和-i参数,以支持ext3文件系统的自动full fsck。