badblocks不良ディスクコントローラを取得できません。

badblocks不良ディスクコントローラを取得できません。

私のHDDにファイル破損の問題があります(同じコンピュータのSDDは正常に動作します)。

for i in {1..10}; do
  dd if=/dev/zero of=zeroes_$i.dat bs=512 count=4M
done
md5sum zeroes_*

一部のファイルに対して正しいチェックサム a981130cf2b7e09f4686dc273cf7187e を生成しますが、通常は別のファイルを生成します。grep一部のファイルでゼロ以外の文字が見つかったことを確認しました。したがって、これには確かに何かが怪しいことがあります(ハードウェアを他のコンピュータと交換した結果、ディスクよりもコントローラに近いと思いますが、これはこの質問の主題ではありません)。チェックサムが失敗する0_$i.datファイルが常に複数あるため、これは「再現可能」です。

奇妙なことは、badblocks -wvs -b 32768 -c 20484つのモードをテストしてもエラーが報告されないことです。破損したIOで不良ブロックが見つからない原因は何ですか?私を混乱させるのは、md5sum読んだ内容ddと書いた内容が異なりますが、badblocksもう一度読む内容は書いた内容と同じです。それはどこから来たの?

編集:アイデアをいただいたDominicに感謝します。 IIUCは、コントローラに不正なキャッシュがあり、不正なチェックサムを引き起こす可能性があり、不正なブロックにはキャッシュを無効にし(たとえば、ディスクを再読み込みする前にディスク全体に書き込む)、実際にコントローラの代わりにディスクをテストするメカニズムがあります。そうですか?

答え1

編集で言及したキャッシュは、OS管理キャッシュ、つまりRAMに常駐するキャッシュでもあります。次の条件によって、これらの症状が説明されることもあります。

  • リモートアドレスを持つRAMの一部に欠陥があります。オペレーティングシステムはRAMの先頭にロードされるため、影響を受けません。
  • 後でディスクに大量のデータを読み書きするときは、問題のある部分を含むすべてのRAMを使用します。
  • badblocksは少量のRAM(故障の可能性なし)のみを使用し、ディスクIOのOSキャッシュを無効にするため、影響を受けません。
  • 一方、md5sumがディスクを「読み込む」場合、実際にはオペレーティングシステムによってキャッシュされたデータを読み取るため、エラーが発生することがあります。

したがって、私と同じ症状を持つ他の読者のために、以下を実行してくださいmemtest

関連情報