先日 組んだ NAS 用マシンに FreeBSD を入れてみます。
私は趣味で Linux を少しだけ触っているのですが、今回初めて FreeBSD に挑戦してみます。FreeBSD を選択したのは ZFS で Raid-Z を構成しようと考えたからです。ZFS RAID-Z の導入には比較的高いスペックが必要で (cf. Hardware Recommendations – Freenas)、実はその点が HP ProLiant MicroServer ではなく、自分で組んでみようと思った動機でもありました。そして、そうした目的のために導入が簡単なのは FreeNAS なのですが、いざマシンを組んでみると十分デスクトップでも使用できそうでしたので、勉強がてら FreeBSD をインストールして少し遊んでみたくなった、というわけです。
さて、前回 導入した SSD にファイルシステム ZFS で FreeBSD-9.1-RC3-amd64 をインストールしてみます。FreeBSD のインストーラは ZFS に対応していないので、手動で設定しなければならず多少面倒な手順ですが、以下のサイトの完璧なガイドに助けられ、インストールを進めました。
- Root on ZFS FreeBSD 9 (Updated) | aisecure.net
- FreeBSD:FreeBSD9.0(amd64) on ZFS – KinusatiWiki
- FreeBSD 8.1 on ZFS-boot – murankの日記
- FreeBSD 9.0-RELEASEのインストール(zfs環境構築) – kawa_128の日記
- 徒然なるままに » ZFS上にFreeBSD9.0
以下備忘録として手順をここにも残しておきます。
インストールスタート
FreeBSD のインストールディスク (FreeBSD-9.1-RC3-amd64-disc1) で起動し、パーティショニングのところで “Shell” を選択します。あらかじめインストール先のSSDのデバイス名を確認しておきます。
# dmesg | fgrep MB
(ここでは ada0)
物理パーティションの作成
# umount -f /dev/md1 # mdmfs -s 512M md1 /tmp # gpart destroy -F ada0 # 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 -t freebsd-zfs -l disk0 ada0 # gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0
zpoolの作成
# zpool create zroot /dev/gpt/disk0 # zpool set bootfs=zroot zroot # zfs set checksum=fletcher4 zroot # zfs set mountpoint=/mnt zroot # zpool export zroot # zpool import -o cachefile=/tmp/zpool.cache 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
FreeBSDの展開
# chmod 1777 /mnt/tmp # cd /mnt; ln -s usr/home home # chmod 1777 /mnt/var/tmp # 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 -af # 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