これだけ、btrfs。はじめないとわからないこともある

追記2018年7月23日

いつまでも大人になってくれない、btrfsのことは忘れました。ストレージサーバ用途に使うならZFSでしょうか。当職は、長い検討の末、LVMにしました。なんといってもカンタンです。性格にもあっているようです。

はじめに

 (追記)2017-05-24。5年ぶりにいろいろ確認。やっぱもう少し様子をみよう。長いなぁ。以下、過去の原稿。内容的には同じです。まぁ、2012年段階よりもかなり安定しているとは思いますが、自分は本格利用には踏み切れないです。

追記2017-10-02。ひさびさに17.10finalebetaで使ってみてから、考えました。btrfsはもう使いません。安心して使えるレベルまで到達する日が来ない気がしてきたのです。


いろいろ見て回った印象として、
btrfsは実用に耐えますか?  いいえ!!
btrfsを使っている人はいますか? 多くの人たちがすでに業務場面で使っており日々改善が続けられているようだ。つまり、熱い!!

と自分の中では整理することができました。KernelにZFSを組み込んでZFSを運用するか、DATA領域だけでもfuseを通してZFSを使うかもあわせて検討した結果、(よく考えてみれば)エンタープライズ級システムに試してみるわけではありませんし、バックアップも多重に行なっているので、気軽に先進・先鋭のファイルシステムにトライしてみることにしました。クライアントレベルでbtrfsの利便性を味わえればいうことなしです。

環境:12.10 mint14 Cinnamon 64bit /dev/sda4、/dev/sda3(用途未定btrfs)

uname
Linux 3.5.0-21-generic #32-Ubuntu SMP Tue Dec 11 18:51:59 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux


以下、How to use というよりCheat。緊張感あふれる実環境で :) 。ほとんどファイルが書き換わっていない状態とはいえ、スナップショット作成、削除とも一瞬です。さまざまな機能が使えるなら夢のファイルシステムじゃないかなって気がしてきました。基礎運用だけはじめています。念の為申し添えておくと以下のリファレンスは参照されてから考えたほうがいいかもしれません。

kernel.org の記事によれば、Linux kernel 3.8ではbtrfsがチューンされ速くなるようです。

主要リファレンス

すいません、全部、英語です。

例0)スナップショットリスト(サブボリューム)表示

sudo btrfs subvolume list /

例1) root

作成して
sudo btrfs subvolume snapshot / /@_snapshotYYMMDD
削除する
sudo btrfs subvolume delete   /@_snapshotYYMMDD

例2) /home

作成する
sudo btrfs subvolume snapshot /home/ /home/@snapshot

例2-2) /home

作成して
sudo btrfs subvolume snapshot /home/ /home/testsnap
削除する
sudo btrfs subvolume delete /home/testsnap

@が必須なわけではないみたい。通例?!

削除例

うかつに変なDirectoryで実行しちゃうとアレなので、/での実行を心がけたほうがいいみたいです。

/usr/binで実行して、
@/usr/bin/@Back2The-2012-12-24_06:07:45.root
が生まれてしまった場合の削除例です。

sudo btrfs subvolume delete /usr/bin/@Back2The-2012-12-24_06:07:45.root
先頭の@に留意。

apt用はインストールするだけでOK

実体はpythonスクリプトみたい。
インストールして
sudo apt-get install apt-btrfs-snapshot
利用可能かどうか調べる
sudo apt-btrfs-snapshot supported

リスト表示すると自動的にスナップショットを作成してくれています。ありがとう。

ID 273 top level 5 path @apt-snapshot-2012-12-24_14:56:57
ID 274 top level 5 path @apt-snapshot-2012-12-24_15:07:08
ID 276 top level 5 path @apt-snapshot-2012-12-24_15:09:55

都度、自動取得!! 困った時には戻せばいいですね。導入したことを忘れていましたので、どの時刻に自分がaptでパッケージ導入などをしたのか正確には覚えていませんが、自動なんだと思います。すばらしい。

自分向け運用スクリプト骨格


最低でも日付時刻は含めておかないとわかりにくくなると気がつきました。 もっともID順で新旧はわかりますね。都合、apt-btrfs-snapshotにならった時刻設定にしました。

b2p.sh (Back to the Past)

#!/bin/zsh
pushd /
sudo btrfs subvolume snapshot / /@Back2The`date +-%Y-%m-%d_%H:%M:%S`.root
sudo btrfs subvolume snapshot /home/ /home/@$USER`date +-%Y-%m-%d_%H:%M:%S`
sudo btrfs subvolume list /
popd


例3)ロールバック(個別ファイル未検証)につき……後日-->玉砕ス!

sudo
sudo

として、sudo rebootでロールバック(戻る)。応用はまだ先ということ。ここで玉砕。IDをセットして、defaultとするコマンドは、ubuntuのレイアウト壊すと上記リファレンスで発見しました。実際に壊してから理由を調べてみました。^^;


いまいちおう、マウントして見ていますが、どう壊れているのかわかりません。しばらくフリーズかな。^^; やっぱ春までまったほうがいいかも。Redhat系なら大丈夫?!


その他


なお、btrfsは、デフォルトで75%ディスク利用率を閾値として文句をいってくるらしいです。それにしても感動です。たとえば、dfコマンドの戻りが遅かったりしますけど、そんな些細なことは、(壊れなければ)メリット前にはどうでもいいことじゃないかって感じています。

いろいろ至らぬ点もありましょうが、勘違い等発見されましたら御教授いただけますと幸いです。何せ、Google先生にうかがいを立てたところで英文の僅かなページしかわかりやすい資料がないもので、不安を感じつつもすこしづつ読みこなしながら?! つかいはじめたところです。