2014年11月27日木曜日

BtrFSが死んだ。

10/27、突如ラップトップの/homeがRead-Onlyに。
Linux3.17.1をつかっており、FSはすべてbtrfs。
/homeだけは一時間に一度スナップショットを取っていた。



アッ……
スナップショットとるとトランザクションが壊れるバグが3.17.0と3.17.1に発生してたらしい。
3.16.xから3.17.xにupdateして、24時間も経たぬ出来事であった。



なるほどね?

btrfsckで事無きを得たと思ったけど、backrefが死んでいた。
この状態でも普通にログインしてデータをR/Wして、と出来ていたのだが、
backrefについてのエラーがずっとdmesgに流れるのは精神衛生上よろしくない。



だそうです。

btrfsck --init-csum-treeを断行。

結果。
悪化しました♡

そこで、btrfs restoreコマンドを実行。

btrfs restoreで、どのディスクをどのディレクトリにrestoreするか指定して、ひたすらrestore。

input/output errorが出たりして完全に読み書きできなくなったファイルも欠けなく全部サルベージできました。やっぱりBtrFSってすごい。

んで、結論として、FSの復活は無理だったので、mkfs.btrfsでフォーマットしました(懲りずにbtrfsをつかう)
restoreしたファイル郡をそのまま再び書きなおして、UUIDが変わったのでfstabを書き直して、終わり。

無事復旧しました、めでたしめでたし……