最近我接触到了一些看似磁盘损坏的情况,我想更好地了解它们。
我有一个每天使用的构建服务器。在最近一次 LLVM 版本的完整构建过程中,由于出现奇怪的错误消息而停止,我获得了一个生成文件的以下摘录 ( X86GenDisassemblerTables.inc
):
...
/* 0xa5 */
{ /* ModRMDecision */
MODRM_ONEENTRY,
0 /* EmptyTable */
},
/* 0xa6 */
{ /* ModRMDecision */
MODÒM_ONEENTRY, # Ò = 0xD2
0 /* EmptyTable */ # R = 0x52
},
/* 0xa7 */
{ /* ModRMDecision */
MODRM_ONEENTRY,
0 /* EmptyTable */
},
...
这似乎是单比特文件损坏。我删除了该文件,构建再次生成了它并成功完成。
今天,在不同的机器,该.d
文件是在构建过程中生成的:
output-gcc-8.2.0-x86_64-linux-gnu/obj/headers.hpp.gch: src/headers.hpp
pp # What's this?
其余一切(文件大小、权限,甚至终止换行符)都已就绪。删除文件也允许构建再次生成它,而不会出现问题。
这些是磁盘损坏的合法案例吗?我可以使用哪些工具来诊断?这些磁盘分别是运行 ext4 文件系统的一到两年的 SSD。
答案1
您可能希望先进行 RAM 测试。硬盘驱动器通常知道何时发生读取或写入故障。如果您尚未在内核消息中收到硬盘驱动器错误,并且您未使用 ECC RAM,那么我会怀疑 RAM 而不是硬盘驱动器。