自分向け: ファイルシステムが壊れた時に読むエントリ
やあ (´・ω・`)
ようこそ、このエントリへ。
このテキーラはサービスだから、まず飲んで落ち着いて欲しい。
うん、「また」なんだ。済まない。
仏の顔もって言うしね、謝って許してもらおうとも思っていない。
でも、このエントリを見たとき、君は、きっと言葉では言い表せない
「ときめき」みたいなものを感じてくれたと思う。
殺伐とした世の中で、そういう気持ちを忘れないで欲しい
そう思って、このエントリを書いたんだ。
じゃあ、データの復旧を始めようか。
まずは最新データをとりだす
ファイルシステムが読みこみ専用でmountできるなら、とりあえずデータを抜き出しておこう。あとでいろいろ捗るぞ。
できれば、baculaに最新データを読ませたいけど、この方法はまだ確立していない。うまく作業領域をtmpfsでmountすればできるような気もする。
mountすらできない状態からデータを取り出してくれる btrfs restoreも使えるかもしれない。
データを復旧する
とりあえず systemrescuecdでbootするんだ。話はそれからだ。
/dev/vg2/storageを/mnt/gentooにmountしてごらん。そこに recover.shがあるはずだ。 念のために gistにも貼っておこう。 https://gist.github.com/naota/929bf442efbecee5df7b
このスクリプトを動かせば、FSを新しく作り直して、しかるべくmountして、chrootしてくれる。chrootした先には、データ復旧用の環境がある。 ようするに、stage3をunpackしてbaculaをemergeして、/etc/baculaをコピーしただけのところだ。もしこのchroot環境を新しく作る時には、backup jobの設定を削除していた方がいい。データ復旧用環境のデータで、本物の環境が上書きされてしまわないように。
chrootした環境では元環境と同じ設定のbaculaが動いているので、bconsoleをたたけばあっというまにrestoreできる。
とはいえ、時々restoreは失敗するようだ。その時は最後に"yes/no/modify"のところでnoといって、bextract -b /var/lib/bacula/なんたら.bsr FileStorage /mnt/btrfs するといい。エラーを無視して、extractしてくれる。実のところ、こっちの方がどこまでextractしてるかの進捗が見えてべんりだ。
もしも、もしもうっかり、変なデータが復旧された時、たとえばデータ復旧環境のデータでバックアップが上書きされてしまった時には、restoreで日付を指定するといい。
復旧後の作業
データ復旧したからと言って気をぬいてはいけない。FSが新しくなったのでいろいろな作業が必要だ。
まず /mnt/btrfsにchrootしてくれ。
次に mount /boot/efi してから grub2-install だ。新しい/bootの位置をgrubに書きこむんだ。
そして grub2-mkconfig -o /boot/grub/grub.cfg でGRUBの設定ファイルを再生成だ。FSのUUIDが変わっているから、そのままではinitrdが困ってしまうぞ。
準備はいいか? じゃあ、一番上までchrootを抜けてrebootだ
マシンが立ち上がったら
!!!! マシンが立ち上がったからといってうかれてそのままCivを始めたりしてはいけない !!!!!
まずは、必ず絶対に最初に間違いなく確実にbaculaのバックアップが動くかどうかを確認するんだ! 絶対!確実に!!必ず!!!なにをおいても!!!!! あとでデータがまき戻って泣くことになるぞ!!!
あと、snapperとかdockerあたりもいろいろめんどくなってるからぼちぼち直しとくといいよ。このへんはしょせんどーでもいいけどね。
その他: BIOSがリセットされたら
困ったことに、時々、BIOSがリセットされてしまうことがある。そうすると、EFI bootエントリが消えてしまう。
あわてずに、まずはboot時にF1を押してBIOSを設定してほしい。Intel VTをONにして、EFI bootをデフォルトにするんだ。
そして、Gentoo PenguinのUSBメモリをさして起動してほしい。 今度はboot時にDELを押せばEFI設定に入れる。この時、HDMIのモニタはEFI設定画面になるまでつかない。右側のモニタの電源をいれるんだ。
systemrescueがGentoo Penguinから立ち上がれば、後はもうわかるだろう? chrootして、grub2-install するだけだ。Good luck!