200GB Maxtor IDEハードドライブの最後の数ブロックをdd
しようとすると、次のエラーが発生します。
$ dd if=/dev/zero of=/dev/sdc bs=4M status=progress
203901894656 bytes (204 GB, 190 GiB) copied, 7283.07 s, 28.0 MB/s
dd: error writing '/dev/sdc': Permission denied
48621+0 records in
48620+0 records out
208223076351 bytes (208 GB, 194 GiB) copied, 8379.27 s, 24.8 MB/s
このエラーは、dd
をseek=48620
で再開しようとした後も持続します。ここで、48620はスキップするブロックの量です。このエラーが不良セクタの結果であるかどうかを判断するために、badblocks
が失敗した場所から同じ方法でdd
を実行したいと思います。
これは、次のようなbadblocks
コマンドに変換されます。
badblocks -svw -b 4000000 -c 500000 -p 1 -o /cygdrive/b/badblocks.txt /dev/sdc 199148543 48620
...ここで、-b 4000000
は、ドライブを最初にdd
するときに使用した4Mブロックサイズに相当し、48620はbadblocks
の最初のブロックを指定するfirst_block
オプションです。から始めます。
ただし、これにより2つのエラーのいずれかが発生します。致命的でないエラーのいずれか...
badblocks: Invalid argument during seekrs)
...コマンドの実行中に表示されるか、1つの致命的なエラーで終了します。
Segmentation fault (core dumped)
上記のエラー は、-c
が2000
のようなより適切な値に設定されている場合でも持続します。
さらに、badblocks
が失敗した正確なブロックでdd
を実行しようとするのをあきらめ、代わりにfirst_block
オプションを十分な数に増やしてみてください。
badblocks -svw -b 4000000 -c 1000000 -p 1 -o /cygdrive/b/users/hashim/desktop/maxtorbadblocks.txt /dev/sdc 199148543 12345678
...コマンドを中断せずに、次のエラーのインスタンスが多数表示されます。
badblocks: Invalid argument during seekrs) again get several get the same error.
badblocks
を開始して、実行にかかる時間を大幅に節約するにはどうすればよいですか?whyが失敗するという答えの半分(今のところ)。
この行のスイッチは正しくありません。
badblocks -svw -b 4000000 -c 500000 -p 1 \
-o /cygdrive/b/badblocks.txt /dev/sdc 199148543 48620
-b
は、ブロックサイズ(ブロック内のバイト数)用であり、通常は512の倍数であり、通常は次のようになります。 1024、2048、または 4096。 4,000,000の値は512の倍数ではなく、より大きい現在のどのHDDが使用するよりも。
-c
は、一度にテストするブロックの数であり、-b
に渡された値を掛けると、一度に読み取られるバイト数がわかります。したがって、-b 4000000 -c 500000
はコンピューターに次のように指示します。一度に2,000,000,000,000(2兆)バイトを読み取ります。
さらに悪いことに、引数199148543
はファイルシステムに少なくともその数のブロックが含まれていることをbadblocks
に伝え、ブロックは-b
スイッチによって定義されるため、badblocks
は計算しますファイルシステムには、少なくとも796,594,172,000,000バイト、(または796TB、ほぼペタバイト)。
ディスク全体が200GBであるため、badblocks
は停止し、エラーメッセージを出力します。