2008年9月30日火曜日

ddrescueでHDを復旧する

壊れたハードディスクの復旧をやりました。
先日友人のハードディスクが壊れた。いつもだったら、BeartPEを使うか外付けのusbケースに取り付けてデータのレスキューを行うのだけど、今回はどちらもダメ。で、いろいろ探してたら、ddrescueってのがいいみたい、ってのを見つけたのだけど、使い方がさっぱりわからなかった。なので、使い方などを残しておく。

ddrescue ってのは、Linuxなんかで使えるコマンドらしい。ハードディスクを丸ごとコピーできるので、壊れて物理的にも不安定になってるハードディスクから、新品のハードディスクにまるまるコピーができる。新品にコピーしたのをいじれば、物理的に壊れていくのを心配せずにデータのレスキューをいろいろ試せる。
ddrescue はknopixやubuntuにも入っているって書き込みを見つけたけど、私の持ってるやつには入ってなかったので、SystemRescueCd-x86-1.1.0 をダウンロードして、起動用のCDを作成した
以下はあちこちから集めたもの

0.壊れたハードディスクの1.5倍以上の容量のハードディスクを準備する。

 ハードディスクはあらかじめフォーマットしておく。

 と書いてあったけど、ハードディスク丸ごとコピー(ddrescue /dev/sda /dev/sdb)だと、フォーマットしてなくてもいいみたい。特定のパーティションにコピーする場合は、必要なのかな。
で、用意したのは新品の120Gのハードディスク。
 
1.壊れてるHDをマスタ側、新しいHDスレーブにつないで、SystemRescueCdでパソコンを起動する。
2.ハードディスクのデバイス名を確認する、
ddrescueを使うには、ハードディスクのデバイス名を知る必要があるんだけど、これがわからなかった。次のコマンドのいずれかで、確認できるようだ。

2-1. fdisk -l でデバイス名を確認  
 これが一番わかりやすいけど、ハードディスクが壊れてるとすごく時間がかかる。ってか今回は10分待っても、反応が返ってこなかったので、途中でctrl+c で中止。
  
2-2. lvscan でデバイス名を確認
2-3. dmesg でデバイス名を確認
 このコマンドうつと、いろいろ表示されるけど、途中でdev・・・ってあるとこを見つけて適当に判断する。

sysrescue cdから起動した場合、ide接続のマスターが sda、スレーブがsdbになるみたい。

ちなみに、fdisk -l では下記のように表示される。

/dev/sda1  ・・プライマリパーティション Cドライブ
/dev/sda2  ・・拡張パーティション
/dev/sda5  ・・論理ドライブ  Dドライブ

3.Ddrescue コマンドでハードディスクを丸ごとコピーする

ddrescue /dev/sda /dev/sdb

 dev/sda マスター側に接続してあるハードディスクを
 dev/sdb セカンダリーに接続してあるハードディスクにコピーする ってこと
 壊れたハードディスクに、C,Dのパーティションをきってあると、新しいハードディスクにもC,Dドライブができる。余った領域は、未割り当てになる。

ddrescue -r3 /dev/sda1 /dev/sdb1
 -r3は読み込みを3回リトライさせるためのオプション。

ハードディスクが物理的に壊れてなかったら、1-2時間で80G程度のハードディスクならコピーできる。

4.コピーしたハードディスクを、通常のリカバリーツールを使って必要なファイルを回復する。
 コピーしたハードディスクをUSBでパソコンへつないで、エラーチェックをする。私の経験ではddrescueで最後までコピーが終わっていれば、何事も無かったかのように起動出来る事が多いです。

0 件のコメント:

コメントを投稿