不良セクタが存在すると、その箇所において正常なアクセスができなくなるので、
パソコンはシステム全体として不良セクタを回避するような仕組みを持っています。
ユーザー側で不良セクタの修復を考えなければならないのは、
これらの処理に不都合がある場合です。
不良セクタにも様々なものがありますが、
特に注意すべきは、ファームウェア上の不良セクタです。
ファイルシステム上の不良セクタを修正するにしても、
ハードディスクのアクセスに問題がある状態では、意味がありませんので。
ファームウェア上の不良セクタの修復
ファームウェア上の不良セクタを調べるには、
ハードディスクのSMART情報を確認すればいいです。
SMART情報の詳細については、下記ページ参照。
特に、不良セクタに関して修正可能な属性値があります。
「C5(197)」、代替処理保留中のセクタ数です。
代替処理保留中のセクタは、少なくとも実際に読み出しエラーが発生したセクタであり、
しかもまだそれを使っている状態です。
セクタ代替処理済であれば、再び不安定なセクタを使うことはありません。
ファームウェアが不良セクタと判断して、不安定なセクタを使うのをあきらめた状態だからです。
もし、不安定なセクタが原因でハードディスクに正常なアクセスができないとしたら、
代替処理保留中の不安定なセクタを白黒はっきりさせることには意味があります。
代替処理保留中のセクタの代替処理は、当該セクタへの書き込みがあったタイミングで行われます。
従って、ゼロフィルすれば、「C5(197)」の値はゼロになります。
ただし、ゼロフィルを実行すると、すべてのデータが失われます。
できることなら、データは保持したまま、でも不良セクタのある箇所は修復したいものです。
そこで、極力データを維持したまま、セクタ代替処理を行わせるツールがあります。
これは、「HDAT2」を用いて不良セクタを修復した例です。
詳細は下記ページにて。
これらの作業により、「C5(197)」をゼロにすることは可能です。
ただし、ここでも代替処理されたセクタのデータは失われる点に注意してください。
ファイルシステム上の不良セクタの修復
ファームウェアとは別に、ファイルシステムも不良セクタを管理していますが、
ファイルシステム上の不良セクタを修復する際は、ハードディスクの動作に問題がないことを確認してください。
つまり、少なくとも前述のSMART情報には問題がないこと。
ハードディスクの入出力に問題がある状態では、
その上で機能する仕組みであるファイルシステムにも問題が発生する可能性が高いからです。
ファイルシステムが管理している不良セクタは、「chkdsk」実行後の画面で確認できます。
「chkdsk」の詳細については、下記ページにて。
たとえば、不良セクタのあるハードディスクから、新しいハードディスクへ、
パーティションを丸ごとコピーした場合は、
不良セクタが存在しないのに、ファイルシステム上は不良セクタが記録されたままになります。
この状態を解消するには、やはり「chkdsk」を使用します。
具体的には、「/b」オプションを指定して実行します。
ファイルシステムに登録されている不良セクタの情報を無視して、不良セクタをチェックし直します。
対象領域に不良セクタが存在しなければ、不良クラスタの登録が削除されます。
ファイルシステムが修正され、不良セクタがゼロになりました。
この操作の目的は、ファイルシステムの情報を修正することです。
「chkdsk」で不良セクタそのものを修復できるわけではありません。
※この例は、「HDAT2」で不良セクタを修復した後、「chkdsk」でファイルシステムを修正したもの。
別の方法として、フォーマットし直しても、ファイルシステム上の不良セクタの情報はリセットされます。
もちろん、ファイルもすべて消えますが。
物理的な不良セクタの修復
物理的な不良セクタは、修復できません。
物理セクタにおいてデータの読み出しができないものは、どうしようもありません。
根本的には、ハードディスクの交換が必要です。
不良セクタのあるハードディスクから、
「ddrescue」等を使って、正常なハードディスクへデータをコピーすべきです。
不良セクタの判定基準はファームウェアによって異なり、
またファイルシステム側でも別の判定基準を設けています。
それらがすべて正しく機能していればいいんですが、必ずしもそういうわけではありません。
不良セクタの修復とは、これらの仕組みが正しく機能できるよう対処することです。
物理的な不良セクタを正常なセクタに回復する魔法ではありません。