Xubuntuのrootファイルシステムをbtrfsではなくnilfs2にする

最近、Xubuntuにしました。UbuntuのXがXfceになったやつです。軽量さを求めてXfceにしています。

SSDなのでファイルシステムはログ構造化されているものにしようと考えていました。選択肢はbtrfs、nilfs2、f2fsあたりなんですかね。btrfsはXubuntuで標準サポートされているので安心です。nilfs2はXubuntuではインストーラでサポートされていないものの、Linuxカーネルのメインラインに取り込まれているので大丈夫でしょう。f2fsはSSDのために作られたらしいけど、初耳なのでパス。

そんなわけで、Xubuntuのインストーラではサポートされていないnilfs2でrootファイルシステムを作る物語です。

とはいえ、そんな難しいことはしません。とりあえず何か別のファイルシステムでインストールして、再度インストーラで起動、バックアップを取って、rootファイルシステムをnilfs2で作り直し、リストアする。想像できた人は読む必要ないでしょう。

というわけで、まずはnilfs2について。公式サイトはこちらです。
NILFS – Continuous Snapshotting Filesystem for Linux.
NTTの研究所が作っているログ構造化ファイルシステムです。割と早期にLinuxカーネルへマージされたこともあり、Experimental(実験的)のマークが付いている期間が長く、その印象が強いかもしれません。けれど、今は違います。十分に実用的で、自動的で連続的なチェックポイントの作成、チェックポイントのスナップショット化とマウント、などなど。魅力的なファイルシステムだと思います。

対するbtrfsはというと、Ext4の次のファイルシステムと目されている、注目のファイルシステムですね。こちらも長らくExperimentalな状態だったんだけど、今は仕様も確定し、SUSE Linuxがデフォルトのファイルシステムにしちゃうぐらいらしいです。機能的にも、コピーオンライトなログ、書き込み可能なスナップショット、サブボリューム、SSD対応、圧縮、などなど。ext4の次という位置づけでもあるので、ext4からの変換も可能だそうです。ただ、自分の印象としては、ファイルシステムの機能にLVMの機能が融合している感じがして、なんか気持ち悪かったです。ファイルシステムと論理ボリュームは統合してもいいとは思うんだけど、気持ちの準備ができてなかったのかなぁ。

そんなわけで、今夏愛のファイルシステムはnilfs2にしようと思ったんだけど、Xubuntuのインストーラを立ち上げてみると、なんとnilfs2が選択肢にないのです。なんということでしょう。標準サポートではないんですね。インストール後はnilfs-toolsを入れれば普通に使えるんだけど、インストーラで使えないとrootファイルシステムとしては使えません。困った。

困ったので、とりあえず普通にインストール。ext4かxfsあたりがいいんじゃないかな。ダンプ取れるし。btrfsもダンプ取れそうだけど、詳しくないのでパス。自分はxfsで。

インストールして、普通に起動。まずはnilfs-toolsを入れます。そして、おもむろに/etc/initramfs-tools/modulesを開き、nilfs2とそっと書き込みます。そしてコマンドを叩きます。

$ sudo update-initramfs -u

これでinitrdにnilfs2が組み込まれ、起動プロセスでnilfs2を使えるようになります。そう、rootファイルシステムとして使えるようになるということなのです。

あとはrootファイルシステムをnilfs2で作り変えればOK。インストーラで起動してライブCD的にTryで起動して作業します。xfsdumpがないけど、apt-get installできます。そして、そのまま再起動すれば・・・、ってのをよくやってしまいますが、ダメです。rootファイルシステムのUUIDが変わっているからです。とりあえず/boot/grub/grub.cfgと/etc/fstabを書き換えておけば大丈夫だと思います。UUIDはblkidコマンドで確認しましょう。

$ sudo blkid /dev/sda2
/dev/sda2: UUID="5e5f4c8c-d690-49e7-bba8-2f32ddbe56d8" TYPE="xfs" PARTUUID="80aa6d60-02"

あれ、xfsだな。

そう、結局xfsにしちゃいました。なぜかというと、nilfs2だとサスペンドからの復帰が調子悪かったのです。サスペンドなんてメモリに退避しているだけなのでrootファイルシステムとか関係なさそうだけど、実際そうでした。原因不明。なんでだろうな、残念だな。そのうち/varと/homeだけでもnilfs2にするかな。だったらLVMにしておけばよかったな。だったらbtrfsでいいんじゃないか。色々と考えてしまいます。

ちなみに、btrfsを使う際の注意点がひとつ。現時点でスワップファイルを作れないのです。開発予定らしいので時間の問題でしょうけど。まー、普通は専用のパーティションを切るだろうから関係ないけどね。