パーティションの壊れたHDDを修復したよ

発端は母の使用しているPC(Ubuntu 10.04 LTS)のDVDドライブが壊れたこと。実際には壊れてなかったことは後からわかったのだけれど。
12.04 LTSも出たことだし、もしかするとシステムが壊れたせいでDVDが読み込めなくなっているのかも、と淡い期待をしてUbuntuをアップグレードしたのです。
アップグレードする際には当然のことながら外付けHDDにファイルをコピーしたのですが……この外付けHDDがコピー後に壊れてしまったようで……

はじめにUbuntu 12.04の新規インストール

外付けHDDに/homeのデータをバックアップし、アップグレードでなく新規インストールをすることに。
後から気がついたのだけど、/homeは別パーティションになっていたのだからこれだけ残して/だけをフォーマットすれば良かったなあと。
まあこのときは/と/homeをフォーマットし直したのです。


インストールは普通に完了し、DVDを入れてみたところ普通に再生されるようになりました。
で、バックアップしたデータを再度コピーしようと外付けHDDをUSBに差し込んだところ……
自動マウントがされない。手動でマウントしようとしてもマウントができない。ext4でフォーマットしたはずのHDDが読めなくなっていました。

OS Xと別のUbuntu機でマウントしてみる

MacBookと私のUbuntu機でマウントしようとUSBを刺してみるも、やはりマウントできず。
MacBookには「おかしいHDDだからフォーマットする?」などと言われる始末。フォーマットされたら困ります……

ひとまずバックアップ

ddでバックアップできることを思い出したので、検索で調べつつ以下のコマンドでバックアップしました。

$ time dd if=/dev/sdb1 of=output.img bs=512 conv=noerror,sync

それなりの時間がかかりましたがとりあえずバックアップのバックアップがとれたのでいろいろいじってみることに。
これもあとから知ったのですが、ddよりddrescueなどのコマンドを使った方がより良いらしいです。

$ fdisk -l -u output.img

壊れている的なメッセージが。

$ fsck output.img

全然効果なし。


ddについて参考にしたサイト:
http://onlineconsultant.jp/pukiwiki/?dd%E3%81%A7%E4%BD%9C%E6%88%90%E3%81%97%E3%81%9FHDD%E3%82%A4%E3%83%A1%E3%83%BC%E3%82%B8%E3%82%92%E3%83%9E%E3%82%A6%E3%83%B3%E3%83%88%E3%81%99%E3%82%8B
http://kusumoto-jp.org/article.php/dd
http://d.hatena.ne.jp/pyopyopyo/20061118/p1


まーここらへんで既に半分諦めてました。
でももう少し調べてみるとSystemRescueCDというディストリビューション(?)にTestDiskなるコマンドがあるらしいことを知りました。
突然HDD全体が読めなくなるというとパーティションとかその辺かなーと思ってたのですが、復旧方法がわからず……というところで知ったので、使ってみることに。
http://linuxcom.info/system-rescue-2-7-0.html

SystemRescueCDUSBメモリにインストール……できず

SystemRescueCDUSBメモリにインストールも出来るようなので、公式の手順通りにやってみたのですが、どうしてもファイルをコピーする段階で落ちる。
しょうがないのでCD-Rに焼いて使うことに……

SystemRescueCD起動

CD-RをUbuntu機に入れ、起動しました。4GBメモリを積んでいるので2番目のメニューのメモリに全部展開するメニューを選択しました。
あとは以下の参考サイトを元に同様の操作をしてみると……
http://uiuicy.cs.land.to/testdisk1.html
http://pctrouble.lessismore.cc/software/testdisk.html
ちゃんと読めるように!
途中のpを押すとファイルの一覧を表示できるところでもちゃんとファイルが見れたので、やはりパーティションテーブル(?)が壊れたのかなーと。
修復してrebootしてあげるとmountコマンドで普通にマウントできるように!

ファイルのコピー、終わり

読み込めるようになった外付けHDDを再度USBで母のPCに接続し、コピーしてファイルの移動を完了したのでした。


文章にすると一瞬のようだけれど、これをやるのに大体2日かかった……orz