Ubuntu 19.10でzfs root試してみた

κeenです。Ubuntu 19.10出ましたね。Ubuntu 19.10からZFSをroot fsにしたインストールがサポートされるようになったので試しました。

一番気になるのはライセンスですよね。 過去に何度もやるって言ってはライセンスで揉めて取り下げてます。 この記事によるとCanonicalは問題ないというスタンスだということです。本当に大丈夫なのかな…。

さて、インストールは特に難しいことはなくて、いつものパーティションどうする?と聞いてくるところでzfsの選択肢が出てきます。それを選択すればよいようです。

インストール後は、LTSの直前のリリースにしては何も問題がないくらい普通に動いてます。 よく壊れるSlack for Linux (β)も問題なく動いてます。

因みにDropboxは最近btrfsやzfsのサポートを再開したらしいです。 私もちゃんと動きました。Dropboxユーザも安心してzfsを試せますね。

さて、少しだけの機能をzfsを使ってみましょう。

zfsのプールはこのように切られているようです。

$ zpool list
NAME    SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
bpool  1.88G  66.1M  1.81G        -         -      -     3%  1.00x    ONLINE  -
rpool   460G  15.3G   445G        -         -     0%     3%  1.00x    ONLINE  -
$ zfs list bpool
NAME    USED  AVAIL     REFER  MOUNTPOINT
bpool  65.8M  1.69G      176K  /boot
$ zfs list rpool
NAME    USED  AVAIL     REFER  MOUNTPOINT
rpool  15.3G   430G       96K  /

ちょっとスナップショットを試してみましょう。

適当なファイルを用意します。

$ mkdir tmp
$ cd tmp
$ echo hogehoge > text.txt

スナップショットを取りましょう。 rpool/USERDATA/shun_2meu5j がユーザのホームディレクトリを指しているようです。 そこのスナップショットを test という名前で撮ります。

$ sudo zfs snapshot rpool/USERDATA/shun_2meu5j@test

zfs list-t snapshot を渡すとスナップショットの一覧が取れます。

$ zfs list -t snapshot
NAME                              USED  AVAIL     REFER  MOUNTPOINT
rpool/USERDATA/shun_2meu5j@test   332K      -     11.2G  -

スナップショットのリネームもできるらしいです。

$ sudo zfs rename rpool/USERDATA/shun_2meu5j@test backup
$ zfs list -t snapshot
NAME                                USED  AVAIL     REFER  MOUNTPOINT
rpool/USERDATA/shun_2meu5j@backup   648K      -     11.2G  -

さて、これでrollbackも試してみましょう。 適当に用意したファイルの内容を上書きます。

$ echo fugafuga > text.txt

そしてロールバック

$ sudo zfs rollback rpool/USERDATA/shun_2meu5j@backup

これで中身を見ると変更が差し戻されているのが分かります。すごい。

$ cat text.txt
hogehoge

因みにrollbackしても該当のスナップショットは消えません。 該当のスナップショット以降に撮ったスナップショットは消えるらしいです。

$ zfs list -t snapshot
NAME                                USED  AVAIL     REFER  MOUNTPOINT
rpool/USERDATA/shun_2meu5j@backup   468K      -     11.2G  -

最後にスナップショットを消しましょう。 zfs destroy でできるらしいです。

$ sudo zfs destroy rpool/USERDATA/shun_2meu5j@backup
$ zfs list -t snapshot
no datasets available

今回試したのはノートパソコンだったのでホットプラグとかは試せませんでした。 詳しくはFSとかに詳しそうな人のブログをあたって下さい。

Written by κeen