2018年1月27日土曜日

FreeBSD 11 on ZFS rootの不思議

手元で利用しているZFS上にインストールしたFreeBSD 11で、ZFSのスナップショットを取ろうとしてZFSの構成を確認してみました。するとすこし不思議な状態になっていました。

/usrと/varはZFSのファイルシステムになっているのですが、マウントされていません。
$ cd /
$ df -h .
Filesystem        Size    Used   Avail Capacity  Mounted on
zz00/ROOT/default 144G    6.5G    138G     5%    /
$ cd /var
$ df -h .
Filesystem        Size    Used   Avail Capacity  Mounted on
zz00/ROOT/default 144G    6.5G    138G     5%    /
$
zfsのプロパティを見るとcanmountがoffになっていてマウントできないようになっています。
$ zfs list -t filesystem -H -o name,mountpoint,canmount
zz00              /disk/z/zz00    on
zz00/ROOT         none            on
zz00/ROOT/default /               noauto
zz00/tmp          /tmp.ORG        on
zz00/usr          /usr            off
zz00/usr/home     /usr/home       on
zz00/usr/ports    /usr/ports      on
zz00/usr/src      /usr/src        on
zz00/var          /var            off
zz00/var/audit    /var/audit      on
zz00/var/crash    /var/crash      on
zz00/var/log      /var/log        on
zz00/var/mail     /var/mail       on
zz00/var/tmp      /var/tmp        on
zz10              /disk/z/zz10    on

$
私のインストール時の間違いかと思い、他の2つのzfsを使ったFreeBSD 11を見てみましたが同じです。

検索システムで探してみると以下のページを見つけました。
Why are /usr and /var not in a boot environment?
https://forums.freebsd.org/threads/59844/
このフォーラムでも同じような質問をしている人がいます。読んでみると、
  • UFSでも同じような構成になっていて、/usrと/varは分けていない
  • /にOSのすべてが入っているのでbootが簡単になる
という答えがありました。

たしかにシングルユーザーモードで/しかない状態で、/usr/binにあるコマンド使うために/usrを改めてマウントするのはちょっと大変です。