我有一个很小很旧的硬盘,大约32G。
在这个磁盘上,我复制了一个较大的 tar 文件,大约 5G。
当我运行 md5sum 以在此文件上生成校验和时,我反复得到不同的结果(在同一台机器和同一文件上)。这显然不应该发生。
如果我用一个小得多的文件重复实验,正如预期的那样,每次校验和都是相同的。我只能假设因为大文件跨越了大部分磁盘,而且它是一个旧驱动器,我在硬盘驱动器上遇到了很多读取错误 - 它需要更换吗?这还有什么其他好的理由吗?除了购买新磁盘,我还能做些什么来解决这个问题?
更新: sha1sum 也会产生不一致的结果。
唯一可能的原因是磁盘损坏或 RAM 损坏,并且由于磁盘较旧并且您没有遇到其他问题,因此不太可能是 RAM。
它可能是一个狡猾的连接器/控制器:我曾经有一个 IDE->USB 适配器坏了,导致传输损坏,即使驱动器非常好。
可能值得运行
fsck
(或您使用的任何文件系统的等效文件)来修复磁盘错误。但是,如果它在最后一站,它可能是这个驱动器做的最后一件事。为了安全起见,我建议您通宵运行memtest86+以确保它没有发现内存错误。
根本原因是您的 RAM 以某种方式损坏。这可能是一个坏棒,但有时像视频卡这样的设备会破坏主内存。
在您确认内存是安全的之前,不要 fsck 。否则 fsck 可能会破坏一切。
拉出驱动器,放入已知良好的系统,并在修复此系统时进行 FSCK。
是否
sha1sum
有相同的行为?在收到改变散列过程的幻像数据之前,我希望磁盘读取错误。你在什么平台上运行?
我曾经也遇到过同样的问题。原来是主板上的硬盘控制器。
但是,在这种情况下,它绝对听起来像一个哑硬盘。硬盘驱动器往往通过在后台透明地标记坏扇区来维持生命。当扇区最终在操作系统级别开始变坏时,驱动器很快就会过期。
由于每次数据都不同,因此 md5sum 在每次运行后读取的数据可能会越来越少。但是读取失败应该会导致 md5sum 退出并报告输入/输出错误。
备份此驱动器上的所有数据并转移到新驱动器非常重要。该驱动器随时可能发生故障。请勿将此驱动器用于任何重要工作。
是否有任何进程或 cron 作业设置为自动从此 tar 文件中添加或删除文件?
我还会运行磁盘检查。如您所说,确保磁盘本身没有任何问题。