[FreeBSD 10.0-RELEASE] bsdinstall でも自由なパーティションレイアウトで Root on ZFS
あらすじ
FreeBSD 10.0 からインストーラで ZFS が選択できるようになりました。
僕の自宅のストレージサーバは、8.2 の頃から Root on ZFS になっていたり、freebsd-update で数回メジャーバージョンを渡ってきていたりするため、そろそろ一度クリーンインストールしてスッキリしたいと思っていました。
早速 Partitioning の項目で ZFS を選択してインストールしたはいいものの、パーティションと ZFS の切り方は下記のようになっていました。
# gpart show -l
=> 34 209715133 vtbd0 GPT (100G)
34 1024 1 gptboot0 (512K)
1058 4194304 2 swap0 (2.0G)
4195362 205519805 3 zfs0 (98G)
# zfs list -r zroot
NAME USED AVAIL REFER MOUNTPOINT
zroot 2.17G 93.8G 144K none
zroot/ROOT 857M 93.8G 144K none
zroot/ROOT/default 857M 93.8G 857M /
zroot/tmp 176K 93.8G 176K /tmp
zroot/usr 1.33G 93.8G 144K /usr
zroot/usr/home 184K 93.8G 184K /usr/home
zroot/usr/ports 813M 93.8G 813M /usr/ports
zroot/usr/src 545M 93.8G 545M /usr/src
zroot/var 1.23M 93.8G 608K /var
zroot/var/crash 148K 93.8G 148K /var/crash
zroot/var/log 212K 93.8G 212K /var/log
zroot/var/mail 144K 93.8G 144K /var/mail
zroot/var/tmp 152K 93.8G 152K /var/tmp
私的にこの切り方は気に入りません。
/usr/local
は別ファイルシステムにしておきたいし、swap 用にわざわざパーティション切るなんてナンセンス。swap は zvol でやりたいです。
更に、ディスク全体を zroot にせず、半分くらいを L2ARC や ZIL に充てたいという思いもあります。
インストール手順
というわけで、大方の部分は bsdinstall を使いつつ、自由なパーティションレイアウト・ZFS レイアウトを実現すべく頑張ってみました。
※ 下記手順は VM での検証のためディスク名が vtbd0 になっています。
Partitioning の項目で SHELL
を選択すると、シェルが起動します。
パーティションと zroot を手動で設定していきます。
メッセージにも出ていますが、このシェルを抜けるときにシステムの / が /mnt にマウントされていれば OK です。
# gpart create -s gpt vtbd0
# gpart add -a 4k -s 512k -t freebsd-boot -l boot0 vtbd0
# gpart add -a 4k -s 40g -t freebsd-zfs -l sys0 vtbd0
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 vtbd0
# gpart set -a active vtbd0
# gnop create -S 4096 vtbd0p2
# zpool create -o altroot=/mnt -m none -f zroot vtbd0p2.nop
# zfs set atime=off zroot
# zfs set checksum=fletcher4 zroot
# zfs create -V 8g -o checksum=off zroot/swap0
# zfs create -o mountpoint=none zroot/ROOT
# zfs create -o mountpoint=/ zroot/ROOT/default
# zfs create -o mountpoint=/tmp -o setuid=off zroot/tmp
# zfs create -o mountpoint=/usr zroot/usr
# zfs create zroot/usr/home
# zfs create zroot/usr/local
# zfs create -o compression=lz4 -o setuid=off zroot/usr/ports
# zfs create -o compression=lz4 -o exec=off -o setuid=off zroot/usr/src
# zfs create -o mountpoint=/var zroot/var
# zfs create -o compression=lz4 -o exec=off -o setuid=off zroot/var/crash
# zfs create -o compression=lz4 -o exec=off -o setuid=off zroot/var/log
# zfs create -o compression=lz4 -o atime=on zroot/var/mail
# zfs create -o compression=lz4 -o setuid=off zroot/var/tmp
# zpool export zroot
# gnop destroy vtbd0p2.nop
# zpool import -o altroot=/mnt zroot
# mkdir -p /mnt/boot/zfs
# zpool set cachefile=/mnt/boot/zfs/zpool.cache zroot
# zpool set bootfs=zroot/ROOT/default zroot
# exit
exit で抜けた後は、通常と同じようにファイルの展開が行われます。
ネットワークやタイムゾーンの設定など通常通りにすすめていくと、下記のダイアログが出てくるので、YES を選択します。
ここで、起動時の設定・swap 設定を入れてあげます。
こちらもメッセージにも出ていますが、このシェルは /mnt に chroot した状態で起動しているので、注意です。
# echo 'zfs_load="YES"' >> /boot/loader.conf
# echo 'zfs_enable="YES"' >> /etc/rc.conf
# echo '/dev/zvol/zroot/swap0 none swap sw 0 0' >> /etc/fstab
# exit
これで、自由な Root on ZFS で、システムが起動してきます。
めでたしめでたし。
(余談)
portmaster でのコンパイル生活から pkgng でのバイナリ生活にチェンジしましたが、もう快適すぎて涙がでそうです。
- 更新 (Thu, 27 Mar 2014 03:53:03 JST) pmbr に active フラグを立てる
- 初稿 (Tue, 25 Mar 2014 22:53:30 JST)