HDAT2で故障HDDの操作
壊れかけのHDDにHDAT2を使って不良箇所にアクセスしないようにします。この操作で不良箇所の修復や読み込めなくなったデータの復旧などはできません。
概要
壊れかけのHDDにHDAT2を使います。HDDにトドメを刺す可能性もあるので壊れても構わないHDDで試してください。
この後の操作は異常箇所を立入り禁止にするだけで、異常箇所の修復や読み込めなくなったデータの復旧はできません。なので必要なデータは事前にバックアップしておきます。バックアップが取れないような状態の場合、TestDiskでMBRの修復やシェアウェアのHDD Regeneratorなど別の手段を取り、HDAT2は最後に試してみたらよいでしょう。
テストに使用するHDDの状態
今回のHDDの症状としては、一度パーティションが消えてTestDiskでMBRを修復、代替処理保留中セクタあり、そのHDDを接続しているとWindowsが時々一定時間フリーズ、書き込んだデータがたまに破損して読め込めなくなります。
HDDの中にはデータを記録する円盤が入っており、その円盤の一部に異常が出ると前述のような症状が出ることがあります。HDDはそういった異常箇所(代替処理保留中のセクタ)を自動で使わないように処理(代替処理済みのセクタ・回復不能セクタ)してくれるのですが、なかなかそうしてくれないことがあります。
今回はHDAT2のチェック機能などを使って異常箇所に何度も繰り返しアクセスして、HDDが異常箇所を使わないように仕向けます。
起動と操作説明
HDAT2の起動
HDAT2はDOS専用アプリなので起動ディスクを作る必要があります。配布されているISOファイルをCDなどに書き込んでCD起動ディスクにしたり、USBメモリを利用したやり方などがあります。今回は低容量のUSBメモリを利用します。
起動ディスクの作成とソフトウェアのコピー
USB起動ディスクの作成の手順でUSB起動ディスクを作ります。HDAT2 DOWNLOADからLite版じゃない方の最新版をダウンロードします。EXEとISOの2つがありますが、EXEはISOを圧縮した自己解凍形式のファイルで中身はISOと同じです。今回はVersion5.2を使っています。
ISOファイルを手に入れたら仮想ディスクソフトでマウントしたり、ISOに対応した解凍ソフトで中のデータにアクセスします。ISO内の「HDAT2」フォルダ内にある「hdat2.exe」と「CWSDPMI.EXE」の2ファイルをUSB起動ディスクにコピーします。
起動
C:\>hdat2
USB起動ディスクからDOSを起動して「hdat2」と入力してエンターを押せばHDAT2が起動できます。
画面説明
Device list
最初はデバイス選択画面が表示されます。まずは「CTRL+S」キーを押して一度押して警告音を止めます。このショートカットキーは他の画面でも有効です。
続けて作業を行うディスクを矢印キーで選択します。型番や右側の容量などを確認して間違えないようにします。SMART値がエラーになっていると型番の左側に赤い「!」マークが表示されるようです。
Main menu
メインメニューでは「Device tests menu」を選んでエンターキーを押します。どのメニュー画面でも「ESC」キーを押すと前の画面に戻ります。
Device tests menu
今回の作業では主に一番上の「Detect bad sectors menu」でディスクのチェックを行い、その下の「Detect and fix bad sectors menu」で不良箇所をつぶします。
「Powerful test READ/WRITE/READ/COMPARE」は名前の通りパワフルなテストで、「Detect and fix~」に入っている3つのテストよりも念入りにfixを行います。「Create bad sectors」はどうしようもない不良箇所に使いました。
Detect bad sectors menu
検索内容を選んでエンターキーを押せばディスクのチェックが始まります。今回は「Detect with VERIFY」(以降VERIFYと記述)のみ使っています。
VERIFYは2.5インチ・5400rpm・1TBのHDDだと約200分で終わりました。使用するPCやディスク、ディスクの状態によってかかる時間は変わります。READはVERIFYの20倍以上、READ/READ/COMPAREは30倍以上時間がかかります。
Detect and fix bad sectors menu
テスト内容を選んでエンターキーを押せばテストが始まります。今回は「Fix with VERIFY/WRITE/VERIFY」(V/W/V)と「Fix with READ/WRITE/READ」(R/W/R)の2つを使っています。V/W/VとVERIFYのかかる時間は余り変わらないようです。R/W/Rは数十倍かかります。
テスト画面
どのテストもこんな具合の画面が表示されます。中央に進捗、その下にエラー内容とエラー場所を示すアドレスが表示されてエラーが出るたびに表示は更新されますが、あとでログを確認することができます。進捗バーは異常個所があると「B」などと表示されて大まかな場所が分かります。特に操作をしなくても自動的に作業が進んでいきます。テストが終了すると画面上部に「End of test : Press any key...」と表示されます。
左下に「ESC Pause/Abort」と表示されていますが、テスト中に「ESC」キーを押すとテストが止まり、画面上部に何かキーを押したら続行、「ESC」キーを押したら中断すると表示されます。言葉通りに何かキーを押せばテストは再開、ESCで「User canceled: Press any key...」と表示されてテストを中断します。テストを中断してもアドレスのメモを取っておけば、そのアドレスを開始地点に設定して再開することもできます。
テストを終了・中断すると左下に「LOG: V View D Delete ESC Exit」と表示されます。ここで「V」キーを押すとログが閲覧できます。
ログを表示させて十字キーでしたにスクロールさせると不良箇所の範囲を示す「ERROR BLOCK」が確認できます。そこから続けて細々としたエラーとアドレスが表示されることもありますが、とりあえずエラーブロックのアドレスの範囲だけ控えておき、あとのテストに利用します。試していませんがここで「S」キーを押すとログを保存できるようです。
「LOG:V~」の画面で「ESC」キーを押すと終了の確認が表示されて「Y」キーでテスト終了です。ログを保存していたら確認はないかもしれません。
テスト範囲の指定
VERIFYやPowerful testなどのテスト項目を選択した状態で「S」キーを押すと設定画面が開きます。その中の「First sector number」で開始アドレス、「Last sector number」で終了アドレスを指定できます。それらを選択した状態で「INS」キーを押すと数字キーで値を入力できます。設定画面を抜ける時はESCではなく「Enter」キーで抜けます。ESCキーで抜けた場合は入力した値が反映されません。また、テストごとにアドレスを指定する必要があります。
処理時間が非常にかかるR/W/Rなどのテストも、エラーブロックの狭い範囲を指定すればすぐにテストが終了します。
作業の流れ
- VERIFYでディスク全体をチェック
- チェック終了後、ログの不良アドレスの範囲をメモする
- メモした範囲を指定してV/W/VやR/W/Rをエラーが出なくなるまで行う
- 他の範囲も同様にしてエラーをつぶす
- VERIFYでディスク全体をチェック
- 問題がなければ終了
どのアドレスを指定してもVERIFYがほとんど進まない場合は諦めた方がよさそうです。
不良アドレスの検索と処置
初回の操作で全域に対してR/W/Rを行っていますが4日と半日・108時間ほどかかっているので、数十分の一の時間で終わるVERIFYで不良箇所を探した方が早いです。
開始3日ほどで「Selected device is hung - reset required」と表示されてほとんど進まなくなっています。バーには「B」という不良箇所がいくつか表示されています。「LBA」の横に処理が止まった時のアドレスが残っているのでメモをしておきます。こうなってしまうとESCで終了もできなくなるので「CTRL+ALT+DEL」キーで再起動します。試してませんがログは見れたかもしれません。
テスト項目を選んだ状態で「S」キーを押すと開始終了アドレスが指定できます。上の画像では「1222443175」から処理が止まっていたので少しアドレスを進めてみましたがhungしてしまうので、「1222500000」のように6桁目を繰り上げて始めることにしました。こんな具合に6~7桁あたりを繰り上げて進めるとよいかもしれません。
途中で中断してもアドレスをメモしておけば同様の手順で再開ができます。それまでのエラーログなどは破棄されるのでそれらのメモも忘れずに。
「122250000」からあとは特にエラーもなく終了しています。
不良アドレス
一度中断して不良箇所のアドレスが分からなくなっていたので、今度はVERIFYをしてみたところ200分程度で終了しました。
ログを見るとERROR BLOCKが3つ表示されていたのでメモを取っておきます。
- 0030670849-0030736384 Uncorrectable data error
- 0976748545-0978124800 Non-Data command timed out polling for BSY=0
- 1222377473-1222496607 Non-Data command timed out polling for BSY=0
不良アドレスへの処置
- 0030670849-:R/W/R数回で異常箇所が代替処理や回復不能と判定されたようでエラーが消えた
- 0976748545-:hungすることはあったがV/W/VやR/W/Rを何度も繰り返すとエラーが消えた
- 1222377473-:R/W/RはhungでV/W/Vを何度繰り返しても改善せず
この3例だと「Uncorrectable data error」なら何度か行えば異常箇所が代替処理や回復不能と判定されるようです。「Non-Data command timed out polling for BSY=0」は前のエラーよりも重傷で何度も繰り返す必要があり、改善しない場合もあるようです。
エラーもないのに妙な引っかかりがある場所は「Powerful test READ/WRITE/READ/COMPARE」で念入りにテストをしてみるとよいかもしれません。後々エラーが出てきても面倒なので、石橋を叩いて壊すぐらいの勢いでしつこく行います。
Create bad sectors
前の作業で改善しなかった「Selected device is hung - reset required」の領域をなんとかします。
エラーブロック「1222377473-1222496607」に対してR/W/Rを実行するとhungします。V/W/Vを何度行っても「Non-Data command timed out polling for BSY=0」になってしまい改善しませんが、「1222441990-1222442534」と「1222443625-1222444169」という重傷な範囲が見えてきました。それらアドレスに対してCreate bad sectorsを実行してみます。
「Device tests menu」の一番下にある「Create bad sectors」を選択して、「S」キーを押します。
開始と終了のアドレスを入力します。ここで間違えるとまずそうなのでよく確認しておきます。
Create bad sectorsを実行しました。範囲が狭いせいか一瞬で終わりました。
実行後テストを行ってみると「Uncorrectable data error」に変わっています。R/W/Rなど複数のテストを何度か行うと該当アドレスがスキップされるようになり、使用不可判定になったようです。
仕上げのチェック
不良箇所がなんとかなったので全域にVERIFYをかけてみると、今度は後ろの方に不良箇所が見つかりました。今まで通りV/W/Vなどのテストを何度かかけてつぶしました。
今度こそ不良箇所が全滅しました。気になったので続けてVERIFYやV/W/Vを全域に何度かかけても不良箇所の追加は出ず、ひとまず落ち着いたようです。
CrystalDiskInfoを立ち上げてみると、異常で赤表示になっているかと思いきや正常に戻っています。上記テストを行っている内にSMARTのセクタ関連の値が全て0になってしまったようです。
ベンチマークのスコアも上々です。
最終的に表向きのSMART値は健康、動作に異常はなくディスクチェックも問題なしという非常にうさんくさい状態になりました。中古のHDDにはこんな一見正常な異常品が混ざっているかもしれません。