我的系统是 Gentoo Linux(内核是 3.16.0),我的文件系统是 reiserfs。
前几天,我解压了一个超过 100MB 的大 tarball,解压后大约有 1.3GB,有 10,000 个文件,然后我发现解压后有几个文件是乱序的、不完整的、损坏的。所以我对那个分区 (/dev/sda9) 进行了 fsck。发现文件系统错误。
Comparing bitmaps..vpf-10640: The on-disk and correct bitmaps differs.
2 found corruptions can be fixed when running with --fix-fixable
于是我再次使用 --fix-fixable 执行了 fsck,最后显示成功。我以为没问题了,但事实并非如此。
如果我再次解压该 tarball,错误会再次发生,无论我使用 --fix-fixable 执行了多少次 fsck,甚至使用了 --rebuild-tree。
这个 tarball 没问题,我把它解压到另一个分区(也是 reiserfs),没有错误。所以我怀疑磁盘上是否有坏块。我使用命令“badblocks -nsv”检查整个磁盘(/dev/sda),没有报告坏块。(检查坏块的方法对吗?)
我也尝试过重新格式化,但不幸的是,没有什么好结果。(我将“问题”分区上的所有文件备份到另一个地方,然后重新格式化该分区(仍然是 reiserfs),然后将它们复制回来。再次解压该 tarball 后,错误再次出现。我确定 tarball 没问题,因为我尝试了其他大型 tarball,同样的错误。)
所以,现在,我很困惑,如果磁盘上没有坏块,为什么在我修复它之后文件系统会一次又一次地损坏。
答案1
被这个问题折磨了几个星期,今天我终于找到了答案。
今天突然想到,是不是我的硬盘本身没有问题,可能是reiserfs的bug,我的Linux kernel是3.16.0的bug,于是google了一下,果然是reiserfs的bug,kernel 3.16.0和3.16.1的都有。
请参阅以下链接了解详细信息。
https://bugzilla.kernel.org/show_bug.cgi?id=83321
https://bugzilla.kernel.org/show_bug.cgi?id=83121
因此,实际上这不是一个常见问题,它只是针对特定版本的 Linux 内核。(如果您使用的是带有 reiserfs 的有缺陷的内核版本,请尽快升级它!)