FreeBSD 9.0-RELEASEのインストール

SSDを使ってキャッシュを行うIntel SRTを使いたいなーと思っていたのですが、ZFSのZILとかL2ARCってまさにそういう機能じゃないですか。というわけで、みたびファイルサーバOSを変更いたしました。結局はFreeBSD-9.0にして、ルートファイルシステムごとZFSで構築する、いわゆるZFSonRootに挑戦しました。以下手順です

■HDDの構成

■下準備

# umount -f /dev/md1
# mdmfs -s 512M md1 /tmp

■HDDパーティションを切る。ZILとL2ARCの領域を確保する。

# gpart create -s gpt ada0
# gpart add -b 34 -s 64k -t freebsd-boot ada0
# gpart add -s 4G -t freebsd-swap -l swap0 ada0
# gpart add -s 64G -t freebsd-zfs -l disk0 ada0
# gpart add -s 4G -t freebsd-zfs -l zil0 ada0
# gpart add -s 16G -t freebsd-zfs -l l2arc0 ada0
# gpart add -t freebsd-zfs -l disk0 ada1
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0

■zpoolを作る

# zpool create zroot /dev/gpt/disk0
# zpool create tank /dev/gpt/disk1
# zpool set bootfs=zroot zroot
# zfs set checksum=fletcher4 zroot
# zfs set checksum=fletcher4 tank

ZFSデータセットの作成

# zfs set mountpoint=/mnt zroot
# zfs create zroot/usr
# zfs create zroot/usr/home
# zfs create zroot/var
# zfs create -o compression=on -o exec=on -o setuid=off zroot/tmp
# zfs create -o compression=lzjb -o setuid=off zroot/usr/ports
# zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/distfiles
# zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/packages
# zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/usr/src
# zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/crash
# zfs create -o exec=off -o setuid=off zroot/var/db
# zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/db/pkg
# zfs create -o exec=off -o setuid=off zroot/var/empty
# zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/log
# zfs create -o compression=gzip -o exec=off -o setuid=off zroot/var/mail
# zfs create -o exec=off -o setuid=off zroot/var/run
# zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/tmp
# zfs create -o compression=gzip -o exec=off -o setuid=off zroot/var/mail

■ホームディレクトリの設定(ZIL/L2ARCの設定)

# zfs create tank/export
# zfs create tank/export/home
# zfs set mountpoint=/export tank
# zfs add -f tank cache /dev/gpt/l2arc0 log /dev/gpt/zil0

■こまごまとした後処理

# zpool export zroot
# zpool import -o cachefile=/tmp/zpool.cache zroot
# chmod 1777 /mnt/tmp
# cd /mnt ; ln -s usr/home home
# chmod 1777 /mnt/var/tmp

FreeBSD本体の展開

# sh
# cd /usr/freebsd-dist
# export DESTDIR=/mnt
# for file in base.txz lib32.txz kernel.txz doc.txz ports.txz src.txz;
# do (cat $file | tar --unlink -xpJf - -C ${DESTDIR:-/}); done

ZFSブート設定

# cp /tmp/zpool.cache /mnt/boot/zfs/zpool.cache
# echo 'zfs_load="YES"' >> /mnt/boot/loader.conf
# echo 'vfs.root.mountfrom="zfs:zroot"' >> /mnt/boot/loader.conf
# cat << EOF > /mnt/etc/fstab
# Device Mountpoint FStype Options Dump Pass#
/dev/gpt/swap0 none swap sw 0 0
EOF
# echo 'zfs_enable="YES"' >> /mnt/etc/rc.conf
# zfs set readonly=on zroot/var/empty
# zfs umount -a
# umount -f /mnt
# zfs set mountpoint=legacy zroot
# zfs set mountpoint=/tmp zroot/tmp
# zfs set mountpoint=/usr zroot/usr
# zfs set mountpoint=/var zroot/var
# sync;sync;sync
# reboot