NAS 用マシンを自作してみる (3) —FreeBSD on ZFS—

先日 組んだ 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 に対応していないので、手動で設定しなければならず多少面倒な手順ですが、以下のサイトの完璧なガイドに助けられ、インストールを進めました。

以下備忘録として手順をここにも残しておきます。

インストールスタート

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

初期設定

パスワード・タイムゾーン・ユーザー追加

# passwd
# tzsetup
# adduser

rc.conf

# vi /etc/rc.conf
zfs_enable="YES"
hostname="host1.example.com"
ifconfig_re0="DHCP"
keymap="us.iso"
sshd_enable="YES"
sendmail_enable="NONE"

以上で FreeBSD 9.1 RC3 がインストールされました。

# cat /var/run/dmesg.boot

freebsd_dmesg.png

次回はこの FreeBSD をもう少しだけ使いやすく設定してみます。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください