不良セクターのあるディスクを購入し、それらを修正してRAID 6クラスターの一部として使用する予定です。私はWindowsで不良セクターの修正を行うことができます。非常に優れた不良ブロック修正ツールがありますが、Windowsではプロセスが非常に遅く、1つのセクターの修正に15分かかります。
私の経験では、Linuxは時間内に応答しないデバイスの処理に優れており、これによりLinuxでの処理がはるかに高速になります。しかし、私はfsck
のマニュアルを確認しましたが、サーフェスと不良ブロックのスキャンまたは不良ブロックの再割り当てに役立つオプションが見つかりませんでした。
コマンドラインからLinuxのハードディスクの表面をスキャンして不良セクターを修正/再割り当てするにはどうすればよいですか?
この答えは磁気ディスクに関するものです。 SSDは異なります。また、これはデータがない(または保持したいデータがない)ディスクです。ディスクに重要なデータがある場合の対処法については、 私の回答「ハードディスクの不良ブロックを1つのコマンドで修正できますか」 を参照してください。
少なくとも90年代後半以降に作成されたディスクは、不良ブロック自体を管理します。簡単に言うと、ディスクは不良ブロックをスペアセクターに透過的に置き換えることにより、不良ブロックを処理します。 (a)読み取り中に、ブロックが「弱い」ことを検出した場合でもそうしますが、ECCはデータを回復するのに十分です。 (b)書き込み中に、セクターヘッダーが不良であることがわかります。 (c)書き込み中に、読み取りが以前にセクターを不良として検出したが、データを回復できなかった場合。
通常、ディスクファームウェアでは、SMART属性を使用してこのプロセス(少なくともカウント)を監視できます。通常、少なくとも再割り当てされたセクターのカウントと保留中の2つのカウント(読み取り時に不良が検出された、 ECCが失敗した、まだ書き込まれていない)。
ディスクに不良セクターを通知させる方法は2つあります。
smartctl -t offline /dev/sdX
を使用して、ディスクファームウェアにオフラインの表面スキャンを実行するように指示します。その後、完了するまでディスクをそのままにしておきます(完全にアイドル状態が最も高速です)(smartctl -c /dev/sdX
の[オフラインデータ収集ステータス]を確認します)。これは通常、SMARTの「オフラインの修正不可能な」カウントを更新します。 (注:ドライブは、オフラインチェックを定期的に自動的に実行するように構成できます。)
Linuxにディスク全体を読み取らせます(例:badblocks -b 4096 -c 1024 -s /dev/sdX
)。これは通常、SMARTの「現在保留中のセクター」の数を更新します。
上記のどちらでも、再割り当てされたセクターの数が増える可能性があります。これはケース(b)で、ECCがデータを回復しました。
ここで、セクターを回復するには、セクターに書き込む必要があります。通常、これは単純なpv -pterba /dev/zero > /dev/sdX
(または単純なcat
、またはdd
)ですしかしこれらの部分をRAIDアレイの一部にする予定です。RAID initはとにかくディスク全体に書き込みます、それは無意味です。唯一の例外は、ディスクの最初と最後です。数十メガバイトが失われる可能性があります(配置、ヘッダーなどが原因で)。そう:
disk=/dev/sdX
end=$(echo "$(/sbin/blockdev --getsize64 "$disk")/4096-32768" | bc)
dd if=/dev/zero bs=4096 count=32768 of="$disk" # first 128 MiB
dd if=/dev/zero bs=4096 seek="$end" count=32768 of="$disk" # last 128 MiB
全然簡単なフェンスポストエラーをなんとか回避できたと思います1 上記のように、ディスクの最初と最後の128MiBを空にする必要があります。次に、残りをmdadm raid initに書き込みます。ただし、必要に応じてディスク全体をゼロにすることは無害です(ささいな摩耗と時間の無駄を除いて)。
ディスクがサポートしている場合のもう1つのこと:smartctl -l scterc,40,100
(または任意の数値)で、ディスクにwant読み取りエラーの修正をあきらめるように指示するより速く— 40は4秒です。 2つの数値は、読み取りエラーと書き込みエラーです。 mdraidは、パリティを介して読み取りエラーを簡単に修正します(失敗したセクターをディスクに書き込んで再割り当てします)。ただし、書き込みエラーが発生すると、アレイからディスクが故障します。
PS:再割り当てされたセクターの数に注意してください。失敗するその属性は悪いニュースです。そして、それが継続的に増加している場合、それも悪いニュースです。
PPS:RAIDアレイが定期的にスクラブ(すべてのセクターが読み取られ、すべてのパリティが検証される)されていることを確認します。多くのディストリビューションは、これを毎月行うスクリプトをすでに出荷しています。これは、新しい不良ブロックを検出して修復します。そうしないと、まれにしか読み込まれない不良ブロックが残り、最終的に再構築の失敗を引き起こす可能性があります。
1 フェンスポストエラー-終了の1つを数えられないことによる1つ前のエラーの一種。から名前が付けられている場合、3フィートごとにフェンスポストがある場合、9フィートの自立型フェンスにフェンスポストはいくつありますか?正解は4です。フェンスポストエラーは3で、最初または最後にポストを数えないことによるものです。
目に見える不良ブロックを特定した場合は、ディスクが非常に速く不良になる可能性があります。非常に古いディスクがない限り、不良ブロックの置換は内部で処理され、表示されません。これらが表示されている場合は、交換用ブロックキャッシュが使い果たされているようです。
私はそのような状態のディスクを使用せず、おそらくそれを拭いてからそれを投げます。