我在 Fedora 12 盒子上配置了 2 个 1TB 驱动器的 RAID 1。存储在那里的大多数内容都是标有数字的视频文件。我遇到的问题是其中一个视频文件损坏了。我从备份中复制了一个替换文件并替换了损坏的文件,现在它工作正常。但是,执行此操作后,下一个编号文件从 350MB 变为 200KB,除了大约 0.5 秒的视频外,其余视频都消失了。如果我随后替换该文件,下一个文件也会发生这种情况。
前任:
Replace corrupt file 1.avi and file 2.avi shrinks to 200KB.
Replace now corrupted 2.avi and it works but 3.avi gets screwed up.
我已经对硬盘运行了 SMART 测试,结果显示一切正常。有人能帮我运行一些测试来找出问题所在吗?
编辑:这是一个双磁盘软件 RAID 1,带有 ext4 文件系统
答案1
我不知道您正在寻找什么测试来告诉您任何您不知道的信息。
文件系统已损坏。
最简单的解决方案是将数据复制到另一个系统(具有可用的文件系统),验证它,然后删除现有系统上的 RAID。在单独重新格式化驱动器并重建 RAID 后,您应该可以再次使用现有系统了。
在使用 Server 2003 软件 RAID 的 Server 2003 系统上也发生过同样的事情。在写入阵列期间发生电源故障或系统崩溃,磁盘不同步,因此文件系统表现出您描述的相同症状。(同样,我运行的所有测试都骗了我,说磁盘和阵列完全正常,尽管显然不是。)在阵列上的某个点之后复制的任何东西都会损坏。数据对于文件的前 ~500KB 有效,之后就是垃圾。图像会显示顶部 x% 正常,然后在底部变白,文档会包含几页或几行有效数据,然后变成乱码,等等。如果我在损坏点“之前”添加文件,损坏似乎会转移到“下一个”文件,好像损坏距离阵列上的某个点偏移了 ~500 KB。
如果您可以隔离阵列中哪个磁盘包含文件系统损坏,则您可以通过拔出包含损坏数据的磁盘并强制从良好磁盘重建阵列来解决问题。(假设损坏仅存在于一个磁盘上,就像我的情况一样。)这对我有用,这就是我恢复损坏阵列上数据的方法。只需使用 2 个磁盘镜像 RAID,您甚至可以根据每个磁盘强制重建,并查看哪个阵列可以正常工作,哪个阵列最终损坏。
事后我仍然不相信它,所以我复制了数据,删除了阵列,重新格式化了磁盘,重新安装了操作系统,并警告任何人,如果我发现他们再次在我的网络上使用软件 RAID,我会踢他们的乐子。我建议你也这么做。嗯,至少在数据方面。是否要放弃 Linux 软件 RAID 并威胁你的用户,更多的是个人喜好。
答案2
听起来你的文件系统有问题。卸载文件系统并fsck -f
在其上运行以查看。该-f
标志指示 fsck 运行,即使文件系统看起来是干净的。
答案3
您可以尝试 Theodore Ts'o's debugfs
。
http://linux.die.net/man/8/debugfs
您可以使用它来交互式调试文件系统。查看哪些 inode 对应哪些文件等等。