さっそくbtrfsをぶっとばした。
正確にはぶっ壊れたライブラリを入れたまま運用していてシステムが固まり、電源ブチギリ→そのとき変更のかかっていたファイル群が軒並みファイルサイズ0に。
1日かけて仕上げかけていた仕事のデータも一個死亡してしまった。
フ……。
そういえばbtrfsにもスナップショット機能があったはず!と機能を探してみたが、btrfsのスナップショットは自分で作るタイプなので当然スナップショットはなし。
自分でスナップショットとるくらいだったら、端からバックアップとっているわい。
と八つ当たりしても仕方がない。
「nilfs2使ってたら今頃さくっとスナップショットから復帰してるよなー」というセリフが脳内で繰り返されるのであった。
後悔先に立たず。
長女 Nikon D40 N-N 20mm F4
むーん、作業用パーティションだけnilfs2にしておくか、btrfsでcronを使って定時にスナップショットでもとるか、どっちかしないといかんですなこりゃ。
とりあえずbtrfsのsnapshotでやってみよう。
ということで、crontabに、
*/10 * * * * /bin/btrfsctl -s `date '+%Y%m%d%H%M'` /tank #作業パーティションは10分ごとにsnapshot
10 */1 * * * /bin/btrfsctl -s `date '+%Y%m%d%H%M'` /
#ルートパーティションは1時間ごとにsnapshot
などと入れておいた。
永遠にsnapshotをとり続けるとどうなるのかは不明。
このまま使えそうであれば、そのうちinitrdに掃除スクリプトでもいれよう。
スナップショットを見たいときはアンマウントしてから、
# mount -t btrfs -o subvol=. /tank
とするとサブボリュームというのが見えるようになり、snapshotのディレクトリがズラ〜っと並んでいるのが見える。
zfsのようだ。
果たして、ぶっ飛んだときにこのsnapshotが破綻なく、本当に有用に使えるのかどうかは次回ぶっ飛ぶまでわからず。
……などと言ってないで一応検証してみませう。
試しにVMware上のsaiからデータを保存して、その後できたsnapshotを覗いてみたら、なぜかそのsaiのデータだけ0byteのファイルになる。
新規フォルダや新規テキストはちゃんと反映されているのだが、なんで?飛ばしても0byte、snapshotをとっても0byte。
使えん。
結局、作業パーティションだけnilfs2に戻した。
nilfs_cleanerdの負荷は1パーティションだけならまだなんとか……マシか。
こっちはこっちでいつまでも消し続ける謎の挙動が解せん。
いつかは止まっても良さそうな物だが、いつ止まるのやら。
省電力的にもあまりよろしくないし。
一応nilfs2のsnapshot機能も試してみた。
こっちはオンラインのままcheck pointをsnapshotに変更、そのままマウントできてデータの復帰が非常に簡単。
実際にやってみたら問題なく過去のデータが取り出せた。
さすがにそこがウリなだけはある。
しかしまあ、実はというかなんというか、X300に乗っているSSDクラスのもの、ないしは最近の質の良いSSDであればwear levelingという機能が乗っかっていて別にどんなFSを持ってきてもさして問題はないらしく、XFSでいいんでないかという話もある。
マニヤとしてはもう少しうんざりするまで頑張ってみたくはある。