最近、ディスク破損のシナリオと思われるものに遭遇したので、それをもっとよく理解したいと思います。
私は毎日使用しているビルド サーバーを持っています。最近の LLVM リリースのフル ビルド中に、奇妙なエラー メッセージが表示されて停止し、生成された 1 つのファイル ( X86GenDisassemblerTables.inc
) から次の抜粋を取得しました。
...
/* 0xa5 */
{ /* ModRMDecision */
MODRM_ONEENTRY,
0 /* EmptyTable */
},
/* 0xa6 */
{ /* ModRMDecision */
MODÒM_ONEENTRY, # Ò = 0xD2
0 /* EmptyTable */ # R = 0x52
},
/* 0xa7 */
{ /* ModRMDecision */
MODRM_ONEENTRY,
0 /* EmptyTable */
},
...
これは 1 ビットのファイル破損のようです。ファイルを削除すると、ビルドによって再度生成され、正常に完了しました。
そして今日、違うマシンでは、この.d
ファイルはビルド中に生成されました:
output-gcc-8.2.0-x86_64-linux-gnu/obj/headers.hpp.gch: src/headers.hpp
pp # What's this?
その他すべて (ファイル サイズ、権限、終了改行まで) は適切に設定されていました。ファイルを削除しても、問題なくビルドで再度生成できるようになりました。
これらはディスク破損の正当なケースでしょうか? これを診断するにはどのツールを使用できますか? これらのディスクは、それぞれ ext4 ファイル システムを実行している 1 年前と 2 年前の SSD です。
答え1
RAM テストから始めるといいかもしれません。ハード ドライブは通常、読み取りまたは書き込みの障害が発生したことを認識しています。カーネル メッセージでハード ドライブ エラーを受信しておらず、ECC RAM を使用していない場合は、ハード ドライブよりも RAM が問題であると思われます。