« 数式を書く方法 | メイン | メモリのアライメント »

2007年12月16日

日常の備忘録:: 壊れたハードディスクからデータを読む

    

最近、物理的に壊れたハードディスクからデータが読み出せたので、その方法を書きとめておく。
ここで物理的に壊れたと言っているのは、HDD メーカーのチェックツールで Physical defect と表示されるようなケース。
外形が変わるような壊れ方ではない。

事例1.
問題のハードディスクはサーバーに使っていたもので、ある日気付くとサーバーが応答しなくなっていた。
サーバーを再起動すると HDD が認識されない。
ケースを開けて確認すると回転自体していないようだった。
で、この時は仕方なく HDD を交換して対処し、壊れた HDD はしばらく放置していた。
その後、IDE - USB で HDD を裸でつなげる機器を買ったことから、何気につなげてみたがやはり回転せず。
やはりダメかと思って HDD 手にとって、HDD を縦にしてから電源を入れなおすこと2回。
突然モーターが回転を始めた。
これは!と思って PC に接続すると普通に読めた。
縦か横かでモーターへの負荷のかかり方が変わるからだろうか? 理由はわからないが、HDD のモーターが回転しなくなった時は HDD を立てて電源を入れてみると回転しだすかもしれない。

事例2.
ある日外付け HDD を PC につなぐと HDD から変な音がひたすら繰り返し鳴るだけで一向に認識されない。
前日まで快調に動いていて、前日データを保存したばかりなのだが……
何度つなぎなおしても向きを変えてもダメで、PC に直接つなぎメーカーのチェックツールを実行すると Physical defect と出る。
完全セクタチェックは数時間経ってもほとんどプログレスバーが進まない状態。
これはダメかと思ったが、ふと Linux ( Debian Etch ) につないでみた。
すると認識されてデータも読めた。
とりあえず、データを吸い出した後、再度 Windows につなぐもやはり読めない。
ドライバの違いか。
ATA HDD には、PIO モードと DMA モードがあり、さらにその中にいくつかスピードに応じてモードがある。
普通は、読み出せる最速のモードで使う。
組み込み機器などで ATA ドライバを作ったことがあれば経験していることがあるかもしれないが、低速のモードの方が読み出せる確率が高い。
また、コマンドを発行してから何ミリ秒待つ必要があったりもする。
これらのことから、HDD のドライバにはいくつかのノウハウがあり、それによって安定性や傾向が異なる。
安定性を重視しすぎるとパフォーマンスが落ちたりもするので、その辺りのバランスは難しいだろう。
と言うことで今回は、Windows で読みなかったものが Linux で読めたのかもしれない。
ある OS で HDD が読めない時、ドライバの異なる他の OS で試すと読み出せることがあるかもしれない。
ちなみにこのハードディスクは Giga LAN Disk で読めたことから、そこでフォーマットした後、Windows につないで再度フォーマットしたら使えた。
が、かなり不安なのでほとんど使ってない。
いくつかセクタが死んでいるかもしれないし。

壊れたハードディスクからデータを吸い出してくれるサービスもあるが、数万~数十万と高いのでかなり大事なデータでないと利用し辛い。
そこまで大事ではないが、読み出したいデータが入っているハードディスクが壊れた時、これらの方法を試してみると読み出せるかもしれない。



投稿者 Takenori : 2007年12月16日 18:06




comments powered by Disqus
Total : Today : Yesterday : なかのひと