我有一个脚本,在文件系统仅处于“错误”状态时调用fsck。 我想testing它。 不幸的是,我不知道如何强制ext3分区上的“错误”状态。
我唯一的想法是首先在挂载的分区上运行fsck。 只要有警告文件系统可以被破坏,我希望它可以帮助。 需要尝试。 同时,可能有人知道答案了吗?
那么,这里是:debugfs -w -R“ssv state 2”/ dev / sda1
debugfs是用于低级访问ext2 / 3文件系统的e2fsprogs软件包的一部分。
-w - work in r/w; -R - run one command and exit; ssv - set superblock value, self-describing; state - just a name of the field containing state of filesystem.
代码是:
0 - not clean 1 - clean 2 - not clean with errors
我在虚拟机中简单地摆弄这个。 我最初的想法是核弹分区的主要超级块。 这样做并不会导致dumpe2fs报告一个“文件系统状态”的“错误”,但它确实(显然)破坏你的分区(“超级块中的坏魔法数字”)…所以也许这就是你所需要的testing。 在此状态下对分区运行fsck并检查$?的值$? 将报告状态8(操作错误)。
无论如何,这是危险的,我不会build议你在有你关心的数据的任何系统上做。 像我一样在虚拟机中尝试。
你可以像这样得到一些有关文件系统的信息:
dumpe2fs /dev/sda1 | egrep "state|superblock|Block size"
你会看到文件系统有一个主超级块和一些备份超级块。 如果你准备好打破这些事情,在输出中注意一些事情:
现在销毁您的主要超级块:
dd if=/dev/zero of=/dev/sda1 bs=X count=1 seek=Y
恭喜! 你的文件系统现在已经坏了。
卸载它,如果它被安装:
umount /dev/sda1
然后运行fsck指定之前提到的其中一个备份超级块的位置:
fsck -b Z /dev/sda1
现在挂载/ dev / sda1,你应该重新开始工作。