复制/下载大文件(3+ GB)时,校验结果会有所不同。
尝试的方法:
- 两台计算机之间的跳线传输。(源总和正常)
- 从主站点下载。
- 从另一个分区复制。(原始总和没问题)
该文件是基于 Debian 的操作系统的 ISO。(但这不是唯一有问题的文件……)
我同时使用 Ubuntu 15.10 和 Mac OSX El Capitian,两者都遇到了这个问题。不过,在 Mac 上我最终能够正确获取文件。
我已经从实时 CD 运行了该badblocks
命令(在整个磁盘上)和fsck.ext4
(仅在 Ububntu 分区上),没有报告任何问题。此外,驱动器的 SMARTS 报告还报告磁盘正常。
这可能是驱动器故障吗?我还能做些什么来检查硬盘的完整性?
更新:
所以另一件有趣的事情正在发生...我运行了一次 sha1sum 并得到:
87004a6bea1ff1792f733f9048b3c43b7a2c66af
我又运行了三次并得到了6607f5a66aee980a8958bb99f9871158a852a319
91b8a6674b9a90ab07c151cedc203a2d9806193f
和
076d303bbbce719edffd9ed821bc83c448d42bb4
。我没有对这个文件做任何更改...有什么想法吗?
更新2:
我刚刚重启了系统,总和已经停止“移动”了……所以看起来我可能在写入过程中切断了它,尽管cp
它返回了……我现在很困惑,为什么它会在缓冲区中停留这么长时间。有人知道我该怎么办吗?
答案1
我猜是内存坏了——如果内存很小,不经常使用,那么复制文件时可能会出现小错误,而且可能非常间歇性。我希望在dmesg
/var/log/syslog 中看到有关磁盘读取错误的提示。
当计算机“预热”时,检查memtest
几次。我读到过,运行 24 小时是一个 100% 可靠的测试,但只需几分钟就能发现任何大错误,一个小时应该就足够了。
如果文件适合 RAM,则只能从磁盘读取一次,后续读取将从 RAM 中的磁盘缓存中读取。要清除/刷新磁盘缓存并尝试再次从磁盘读取,请运行:
sync; echo 3 | sudo tee /proc/sys/vm/drop_caches
回应 3 清除所有缓存,回应 1 仅清除页面缓存(磁盘缓存和其他缓存我认为), 2 释放可回收的 slab 对象(包括 dentry 和 inode) - 参见/proc/sys/vm/* 的内核文档