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

セクタ代替処理の促進

「HDAT2」は、いろんなことができるハードディスクユーティリティですが、
なかでも不良セクタを修復できるのが大きな特徴のひとつです。

不良セクタの修復 - HDAT2

不良セクタの修復といっても、壊れたものを元に戻せるわけではありません
不良セクタを使わないようにすることで、ハードディスクに不良セクタがないよう振る舞わせるのです。

特に、正常なアクセスができず、ファイル復元ソフト等を使ってもまともに機能しないハードディスクでは、
不良セクタが原因になっている場合があります。
もしそうであれば、「HDAT2」を使って不良セクタを修復することにより、
ハードディスクにアクセスできるかもしれません。
読み込みの途中で、物理的に引っかかってしまうことがなくなるからです。

ただし、この過程でデータを上書きするので、データの完全性を保つものではありません
間違っても、データ復元ソフトではありません
他の方法でデータを救出できるのなら、当然ですがそちらを優先すべきです。

不良セクタを修復することの意味

不良セクタの修復は、データの復元とは違います
不良セクタの修復過程において、読み出せないセクタのデータは基本的にあきらめます。
その代わりに、正常に読み書きできるセクタを使おうとするものです。

ハードディスクは、もともと内部的にこのような仕組みを持っています。
それを補助するのが、「HDAT2」の役割です。

「HDAT2」では、事前にハードディスクの診断を行い、
エラーが検出された箇所にのみ書き込み処理を行います

このことで、ペンディングセクタの代替処理を促進させます。
動作があやしいセクタを使うのをただちにやめ、正常なセクタと置き換えてしまうのです。

読めないものを無理矢理読み出すのではありません。
読めないセクタは、正常なセクタと置き換えます
その結果として、ハードディスクが読めるようになるという理屈です。
データが元通りになるわけではありません。

「HDAT2」の起動

「HDAT2」の入手から起動までは、下記ページ参照。

「HDAT2」の使い方

ここでは、「HDAT2」の「Main menu」より「Device tests menu」を選択した状態から話を始めます。

不良セクタの修復

Device tests menu - HDAT2

不良セクタを修復するので、
「Detect and fix bad sectors menu」を選択します。
※バージョン4.5.3ではこの画面がなく、直接実行内容選択画面に移る。

Detect and fix bad sectors menu - HDAT2

「Detect and fix bad sectors menu」が表示されました。
複数の項目がありますが、いずれも不良セクタの修復を目的としています。

一般的には、「Fix with VERIFY/WRITE/VERIFY」を選択しておくことをおすすめします。
※バージョン4.5.3では「Check and Repair bad sectors」
それでも問題が解決しない場合に、「Fix with READ/WRITE/READ」等を使用するべきです。
※同様、バージョン4.5.3では「Read and Repair bad sectors」
いきなり「READ/WRITE/READ」を実行すると、必要以上のデータを失ってしまうからです。

「READ」と「VERIFY」の違いについては、下記参照。

「READ」と「VERIFY」の違い - 「HDAT2」の使い方

セクタ代替処理を行わせるためには、ハードディスクに対して書き込みを行う必要があります。
つまり、それが「WRITE」コマンドなわけですが、その対象となるセクタの判定方法に違いがあるのです。
「VERIFY」に比べ、「READ」は判定が厳しいです。

「HDAT2」は、不良セクタのデータを読み込んでいるわけではありません。
不良セクタであるかどうかを判定し、
不良セクタ、つまりデータを正しく読めないセクタについては、新たなデータで上書きして修復を試みます。

「READ/WRITE/READ」だと、必然的に上書きされる箇所が多くなります。
ハードディスクに対する負荷も高まりますし、修復にかかる時間も長くなります。
データの復旧も考えている場合は、こういった操作は後回しにすべきだと思います。

Setup - HDAT2

テスト項目を選択した状態で「S」キーを押すと、各種パラメータの設定画面に移ります。
不良セクタのある位置が大体わかっている場合は、あらかじめここでテスト範囲を設定しておいたほうがいいです。

First sector number - HDAT2

左右カーソルキーでも値を変更できますが、
「Ins」キーを押すと、LBAにおける位置を直接数値で入力できます。

動作中 - HDAT2

テスト項目を選択した状態で「Enter」キーを押すと、不良セクタの修復作業が始まります。
それなりに時間がかかります。

「HDAT2」はエラーを検出するたびにビープ音を鳴らすので、
ハードディスクの状態によっては非常にさわがしくなります。
ビープ音のON/OFFを切り替えるには、「Ctrl」+「S」キーを押します。
テスト実行中でも有効です。

実例

実際に不良セクタが存在するハードディスクを例にとって、「HDAT2」による修復作業を見ていきます。

不良セクタ修復前 - CrystalDiskInfo

これは、「HDAT2」を実行する前の、当該ハードディスクのSMART情報です。
不良セクタに関する属性値については、下記ページ参照。

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

この場合で問題なのは、「C5」の値、つまり、代替処理保留中のセクタ数です。
「生の値」が「2C」になっています。
正常であれば、「0」のはずです。

不良セクタ修復結果 - HDAT2

「HDAT2」で「VERIFY/WRITE/VERIFY」を行った結果です。

Repaired = 44

となっています。

不良セクタ修復後 - CrystalDiskInfo

「HDAT2」による修復後、再びSMART情報を確認してみました。
代替処理保留中のセクタ数が「0」になっています。
逆にその分、代替処理済のセクタ数が増えています

「HDAT2」によって修復されたセクタ数が「44」。
「HDAT2」実行前の代替処理保留中のセクタ数は「2C」でした。
これを10進数で表すと「44」。
代替処理済のセクタ数も、「HDAT2」実行前「B4」(10進数で「180」)から、
「HDAT2」実行後「E0」(10進数で「224」)に変化しています。
その差は10進数で「44」です。

つまり、代替処理保留中のセクタが、すべて代替処理済になったことがわかります。
すべて代替処理済になったということは、
読み込み不安定なセクタが、とりあえずは正常に読み書きできるセクタに置き換えられたことを意味します。

不良セクタ修復後の確認 - HDAT2

確認のため、再度「HDAT2」で「VERIFY」テストを行ってみました。
今度は、

Bad sectors = 0

になりました。

ただ、代替処理が行われた領域にさしかかると、カチャカチャとヘッドが動く音がするのでわかります。
不良セクタの修復に成功しても、こういったハードディスクを継続使用するのは避けたほうがいいと思います。
ハードディスクの交換も検討すべきでしょう。