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

HDAT2 - 不良セクタの修復

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

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

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

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

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

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

「HDAT2」では、事前にハードディスクの診断を行い、
エラーが検出された箇所にのみ書き込み処理を行います。
このことで、代替処理保留セクタの代替処理を促進させます。
動作があやしいセクタを使うのを早々にやめて、正常なセクタと置き換えてしまうのです。

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

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

HDAT2 - Device tests menu

「HDAT2」を起動し、「Main Menu」から「Device tests menu」まで進みます。
ここまでの操作については、下記ページ参照。

「HDAT2」の使い方

「Device tests」を使うので、バージョンは4.5.3以下もしくは4.9以降である必要があります

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

HDAT2 - Detect and fix bad sectors menu

「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」コマンドなわけですが、その対象となるセクタの判定方法に違いがあるのです。

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

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

HDAT2 - Setup

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

HDAT2 - First sector number

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

HDAT2 - 動作中

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

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

実際の不良セクタ修復作業

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

CrystalDiskInfo - 不良セクタ修復前

これは、当該ハードディスクのSMART値CrystalDiskInfoで調べた結果です。
不良セクタに関するSMART値については、下記ページを参照。

ファームウェアで認識されている不良セクタ - 不良セクタの修復

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

HDAT2 - 不良セクタ修復結果

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

Repaired = 44

となっています。

CrystalDiskInfo - 不良セクタ修復後

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

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

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

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

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

Bad sectors = 0

になりました。

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