不良セクタの修復

元に戻せるわけじゃない

不良セクタにも様々なものがありますが、それぞれユーザー側で対処できる部分はあります。
ただし、パソコンはもともと、システム全体として不良セクタを回避する仕組みを持っています。
ユーザーが不良セクタの修復を考えなければならないのは、
不良セクタの処理に不都合がある場合のみ
です。

特に注意すべきは、ファームウェア上の不良セクタです。
ファイルシステム上の不良セクタも、間接的にファームウェア上の不良セクタを処理するものです。
不良セクタの判定基準はファームウェアによって異なり、
また、ファイルシステム側でも別の判定基準を設けています。
これらが正しく機能していれば問題ないんですが、常にそういうわけではありません。

不良セクタの修復とは、不良セクタに対する仕組みが正しく機能できるよう修正することです。
物理的な不良セクタを正常なセクタに回復する魔法ではありません。

ファームウェア上の不良セクタの修復

ファームウェア上の不良セクタを調べるには、
ハードディスクのSMART情報を確認すればいいです。

不良セクタ - CrystalDiskInfo

SMART情報の詳細については、下記ページ参照。

不良セクタに関する属性 - SMART情報と不良セクタ

特に、不良セクタに関して修正可能な属性値があります。
「C5(197)」、代替処理保留中のセクタ数です。

代替処理保留中のセクタは、少なくとも実際に読み出しエラーが発生したセクタであり、
しかもまだそれを使っている状態です。
セクタ代替処理済であれば、再び不安定なセクタを使うことはありません
ファームウェアが不良セクタと判断して、不安定なセクタを使うのをあきらめた状態だからです。

もし、不安定なセクタが原因でハードディスクに正常なアクセスができないとしたら、
代替処理保留中の不安定なセクタを白黒はっきりさせることには意味があります。

代替処理保留中のセクタの代替処理は、当該セクタへの書き込みがあったタイミングで行われます。
従って、ゼロフィルすれば、「C5(197)」の値はゼロになります。
ただし、ゼロフィルを実行すると、すべてのデータが失われます。
できることなら、データは保持したまま、でも不良セクタのある箇所は修復したいものです。

そこで、極力データを維持したまま、セクタ代替処理を行わせるツールがあります。

不良セクタの修復 - HDAT2

これは、「HDAT2」を用いて不良セクタを修復した例です。
詳細は下記ページにて。

「HDAT2」による不良セクタの修復

不良セクタ修復後 - CrystalDiskInfo

代替処理保留中のセクタに書き込み命令を送ることにより、
「C5(197)」をゼロにすることは可能です。
ただし、ここでも代替処理されたセクタのデータは失われる点に注意してください。

ファイルシステムにおける不良セクタの修復

ファームウェアとは別に、ファイルシステムも不良セクタを管理しています。
ファイルシステムが管理している不良セクタは、「chkdsk」実行後の画面で確認できます。

不良セクタ - chkdsk

「chkdsk」の詳細については、下記ページ参照。

「chkdsk」と修復オプション

以下、不良セクタに対して何ができるのかを書きます。

不良セクタの検出と回避

ファイルシステム上の不良セクタは、
ハードディスクを使用している間、リアルタイムでカウントされていきます。
ファイルシステムに登録された不良セクタは、以後使われることはありません。
不良セクタを使わないようにすることで、不良セクタに対処しているのです。
不良セクタの検出と回避は、自動的に行われます。

ただ、不良セクタが存在する可能性が高いハードディスクを扱う場合は、
事前に不良セクタを検出しておきたいものです。
そうすれば、ファイルシステム上は不良セクタが存在する箇所を避けてデータを保存できるからです。

強制的に不良セクタを検出してファイルシステムを修正するには、
「chkdsk」を「/r」オプションを指定して実行
します。

具体的には、コマンドプロンプト(Windows PowerShell)を管理者として実行し、

chkdsk f: /r

chkdsk (対象のドライブ) /r

と入力して「Enter」キー

ただし、これはファイルシステム上の不良セクタを減らす作業ではありません。
先の不良セクタが存在する画像も、「chkdsk /r」実行後のものです。
不良セクタが存在しているにもかかわらず、「問題は見つかりませんでした」と表示されます。
不良セクタを不良セクタとして管理下に置いている状態が、正常なのです。

むしろ、「chkdsk /r」を実行すると、ファイルシステム上の不良セクタは増えることがあります。
不良セクタとしてファイルシステムに登録された結果、正常なデータのやりとりができるようになるのです。

不良セクタの再スキャン

たとえば、不良セクタのあるハードディスクから、新しいハードディスクへ、
パーティションを丸ごとコピーした場合は、
不良セクタが存在しないのに、ファイルシステム上は不良セクタが記録されたままになります。

同様に、前述の方法でファームウェア上の不良セクタを修復した場合も、
ファイルシステム上は不良セクタとして登録されたままです。

このような場合は、不良セクタを再スキャンすることで、
ファイルシステム上の不良セクタを修正することができます。
つまり、ファイルシステム上の不良セクタをリセットすることができます。

ただし、不良セクタの再スキャンを行う際は、ハードディスクの動作に問題がないことが前提です。
少なくとも、前述のSMART情報には大きな問題がないこと。
ハードディスクの入出力に問題がある状態では、
その上で機能する仕組みであるファイルシステムにも問題が発生する可能性が高いからです。
多数の不良セクタが存在するのに以下の操作を行うのは、無意味どころか逆効果です。

ファイルシステム上の不良セクタを再スキャンするには、
「chkdsk」を「/b」オプションを指定して実行
します。

具体的には、コマンドプロンプト(Windows PowerShell)を管理者として実行し、

chkdsk f: /b

chkdsk (対象のドライブ) /b

と入力して「Enter」キー
ファイルシステムに登録されている不良セクタの情報を無視して、不良セクタをチェックし直します。

不良クラスタ削除 - CHKDSK

対象領域に不良セクタが存在しなければ、不良クラスタの登録が削除されます。

不良セクタの回復 - CHKDSK

ファイルシステムが修正され、不良セクタがゼロになりました。

この操作の目的は、ファイルシステムの情報を修正することです。
「chkdsk」で不良セクタそのものを修復できるわけではありません
※この例は、「HDAT2」で不良セクタを修復した後、「chkdsk」でファイルシステムを修正したもの。

別の方法として、フォーマットし直しても、ファイルシステム上の不良セクタの情報はリセットされます。
もちろん、ファイルもすべて消えますが。

物理的な不良セクタの修復

物理的な不良セクタは、修復できません。
物理セクタにおいてデータの読み出しができないものは、どうしようもありません。
根本的には、ハードディスクの交換が必要です。
不良セクタのあるハードディスクから、
ddrescue」等を使って、正常なハードディスクへデータをコピーすべきです。

ただし、現状で読めないデータはコピーすることができません。
例外的に、特殊な機器と接続したり、問題のある部品を交換することで、
現在読めないデータを読み出すことはできます。
これには、相応の環境と交換部品の確保が必要なので、
「デジタルデータリカバリー」さんのような、データ復旧業者の作業領域になります。

ハードディスクのデータ復旧作業 - デジタルデータリカバリー

デジタルデータリカバリー