[Linux] 壊れたパーティションの復旧に成功したのでメモ

どうも以前からLinuxの調子が悪くて、再起動したらbootしない現象が発生。
しかたがないので、Live CDから起動してみるとどうも/bootのパーティションがおかしいので復旧してみてもbootしない。
ちなみにHDDは3TBで、/bootはext4にしてあった。これがGWの一週間程前の話。


再インストールせずにデータ復旧しようとしたけど色々問題が重なって失敗。
しかたなくGWに入って、時間がとれてLinuxの再インストールをすることにした。
ついでなので会社の同僚の雑談から起きたSSDが欲しい衝動もあって、SSD秋葉原で買ってきてこっちにLinuxをインストール。
そしておかしくなっているHDDをのぞいているとおかしな事に...


ちなみに、対象のHDDは/dev/sdcです。

root@Hermes:~# parted /dev/sdc
GNU Parted 2.3
/dev/sdc を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) p
警告: /dev/sdc は GPT テーブルの存在を示す GPT のシグネチャを含んでいますが、持っているべき見せかけの msdos パーティションテーブルを持っていません。おそらく壊れているのでしょう。GPT
パーティションテーブルを理解しないプログラムが壊してしまったのかもしれません。あるいは、GPT テーブルを自ら消していて、msdos パーティションテーブルを使っているのかもしれません。このテーブルは GPT パーティションテーブルですか?
はい(Y)/Yes/いいえ(N)/No? y 


どうもpartedがエラーメッセージを吐く。


そして、lsしてみると/dev/sdc3がない。partedではあるのに...。

# ls /dev/sdc*
sdc   sdc1  sdc2


やっぱりpartedのエラーメッセージにヒントがありそうだとおもい、GPTがうんぬんといっている。
GPTについてはWikipedia説明でも見てもらえればいいが、おそらく管理テーブルの一部分が壊れている可能性がある。
多分原因は/bootをfsck.ext4したのが問題だと思う。


と、ここまで推測は出来たのだが対策なんて無い。そりゃあ理屈上はHDDの中身を正しく書き換えてやればいいだけなんだけどそんなのやってられない。
partedでGPTを設定しようとすると、全データ消えるとおどされ、/dev/sdc3が見えないのでmountもできない。
仕方ないので、壊れるのを覚悟してgpartedで/dev/sdc1,/dev/sdc2を削除して/dev/sdc3の位置を移動させてみたところ/dev/sdc3が見えるように。
mountも成功。ということでデータ復旧したらSSDの為の設定をして終了かな。
このあたりはまた記事を書いておく。


ところで、SSDは本当に早い。Mac Airで経験はしているんだけどLinuxで試すと本当にすごい。
SSDを試していない人はマジおすすめ。書き込み回数制限はあるけど、書き込めないだけで読めないというとはHDDよりも少ないと思うし。