フルZFSのインストール
http://blog.kteru.net/freebsd-100-bsdinstall-manual-zfs/ あたりを参照しながら実施。
前提
- プール名はrpool
- ルートは128G上限
- swapはzvolを利用
- その他はホーム
- レガシーなファイルシステムにする
- とりあえずユーザアカウント作成は後にする
パーティションを切る
いつものインストールでパーティションを切る直前"Partitioning"ダイアログまで行き、ここで"Shell"を選択。
パーティションをクリア
まずパーティションが残ってるようなら強制削除してやる。
gpart destroy -F /dev/mfisyspd0 gpart destroy -F /dev/mfisyspd1 gpart destroy -F /dev/mfisyspd2 gpart destroy -F /dev/mfisyspd3
gptを作成
gpart create -s gpt /dev/mfisyspd0 gpart create -s gpt /dev/mfisyspd1 gpart create -s gpt /dev/mfisyspd2 gpart create -s gpt /dev/mfisyspd3
ブートパーティションを作成
gpart add -s 64K -t freebsd-boot /dev/mfisyspd0 gpart add -s 64K -t freebsd-boot /dev/mfisyspd1 gpart add -s 64K -t freebsd-boot /dev/mfisyspd2 gpart add -s 64K -t freebsd-boot /dev/mfisyspd3
bootcode書き込み
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 /dev/mfisyspd0 gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 /dev/mfisyspd1 gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 /dev/mfisyspd2 gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 /dev/mfisyspd3
全てのHDDにブートコードを書いていますが、これはHDD0が壊れた際でもブートするようにするためです。
zfsパーティションを作成
disk[n] と mfisyspd[n] の2箇所が0,1,2,3となっているので注意しましょう。
4コマンドすべてdisk0にしてしまって、/dev/gpt/disk0だけしかない!なんてことにならないようorz
gpart add -t freebsd-zfs -l disk0 /dev/mfisyspd0 gpart add -t freebsd-zfs -l disk1 /dev/mfisyspd1 gpart add -t freebsd-zfs -l disk2 /dev/mfisyspd2 gpart add -t freebsd-zfs -l disk3 /dev/mfisyspd3
zfsの構築
プール作成
zpool create -f -o altroot=/mnt -m none rpool raidz1 \ /dev/gpt/disk0 /dev/gpt/disk1 /dev/gpt/disk2 /dev/gpt/disk3
swapのためにzvolを切り出す
rpool/swap0という名前で64Gのzvolを切り出す("-V"でzvol切りだしになります)
zfs create -V 64G -o checksum=off rpool/swap0
rpool/root, rpool/home 作成
rpool/rootを/にマウントするようにしました。当然ルートにマウントできないので、altrootが効いて/mntにマウントされます。
rpool/homeはとりあえずマウントしません。
rpool/rootには128Gの制限をかけました。
zfs create -o mountpoint=/ rpool/root zfs create rpool/home zfs set quota=128G rpool/root
ブートパーティションをrpool/rootにする
zpool set bootfs=rpool/root rpool
いったん終了
exitで抜けて、bsdinstallを続行します。
でもリブートまでしたらダメです。
インストール完了直前
最後に"Manual Configuration"ダイアログが出て、最後の手動設定をしますか?と聞かれるので"Yes"とします。
設定ファイルを記述
loaderでzfsモジュールを読むことと、ルートをrpool/rootとすることを設定します。zfsモジュールが依存するopensolarisモジュールはzfsを読む場合に自動で読みます。
vi /boot/loader.conf zfs_load="YES" vfs.root.mountfrom="zfs:rpool/root"
/etc/rc.d/zfs を実行できるようにします。
vi /etc/rc.conf zfs_enable="YES"
レガシーなマウント登録を書きます。
最低でもfreebsd-swapのぶんは登録する必要があります。
また、zfsのマウントもレガシーにしたい(後述)ので、もうここで書いちゃいましょう。
vi /etc/fstab /dev/zvol/rpool/swap0 none swap sw 0 0 rpool/home /home zfs rw 0 0
rpool自体のマウントは切って、rpool/root, rpool/homeはlegacyにします。
zfs set mountpoint=none rpool zfs set mountpoint=legacy rpool/home # zfs set mountpoint=legacy rpool/root
rpool/rootはboot時にルートファイルシステムと認識されるように設定されているので、無視します。
設定完了
リブートしましょう。リブート時に/homeがマウントできないとか言われてブートが止まったら、マウントポイントが無いだけですので、あわてず mkdir /home を実行します。