DN2820FYKHにFreeBSDを入れるにあたって,ここのzfs設定を見直し.
前提は基本的に同じ.インストーラで入れると,bsdinstallからzfsbootというスクリプトが呼ばれるので,これも参考にする.
- 1TBのディスク1本のみ使う.ミラーにはしない.
- 4kセクターなディスクなのでzfsパーティションを作るときにちょっと気を使ってあげる.
- プール名はrpoolにする.
- swapは
ZFSのプール内に作る別パーティションにする.
1. パーティション作成
GPTパーティションを作る.
swapは独立パーティションとして作る.
まずパーティションをきれいにして,GPTパーティションにする.
# gpart destroy -F ada0 # gpart create -s gpt ada0
freebsd-boot, freebsd-swap, freebsd-zfsの順にGPTパーティションを作る.
# gpart add -s 512k -a 4k -t freebsd-boot -l boot0 ada0 # gpart add -s 8G -a 4k -t freebsd-swap -l swap0 ada0 # gpart add -a 4k -t freebsd-zfs -l disk0 ada0
ブートコードを書き込む.
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0
IntelのBIOSではアクティブフラグが立っていないと Legacy boot (非EFI) できないことがあるので,PMBR (Protective MBR) にアクティブフラグを立てる.
※DN2820FYKHもアクティブフラグが立っていないと起動できず,アクティブにしたら起動出来た.
# fdisk -a /dev/ada0
4kセクタ対応ZFSパーティション(ashift=12)を作る.
一旦,gnopで作ったラッパーデバイスでzfsを作り,export,nop削除,importする.
# gnop create -S 4096 /dev/gpt/disk0 # kldload zfs # zpool create -o altroot=/mnt -O compression=lz4 -O atime=off -m none rpool /dev/gpt/disk0.nop # zpool export rpool # gnop destroy /dev/gpt/disk0.nop # zpool import -o altroot=/mnt -o cachefile=/tmp/zpool.cache rpool
ファイルシステムのデフォルト設定をzpool作成時に指定するよう変更 (-O オプション).
デフォルトで「圧縮」に変更.
2. ファイルシステムの設定
ルート (Boot Environment) の作成.
# zfs create -o mountpoint=none rpool/ROOT # zfs create -o mountpoint=/ rpool/ROOT/default
各ディレクトリ
- /usr, /var は boot environmentに含めるため,マウントポイントだけ作る (canmount=off).
- /usr/{ports, src, obj}, /home, /export は boot environmentで共通とするため,個別のファイルシステムとして作る.
- /home, /export はネットワーク越しに大きいファイルのアクセスがありそうなので,パフォーマンスを気にして圧縮オフにする.また,/usr/obj はmake buildworld, make buildkernel に影響しそうなので,こちらも圧縮はオフにする.
- /tmp, /var/tmpはすべてのユーザが読み書きできるよう,パーミッションを設定する.
- /export (ファイル共有用) を追加.念のため noexec, nosuidにしておく.
# zfs create -o mountpoint=/tmp -o exec=on -o setuid=off rpool/tmp # zfs create -o mountpoint=/usr -o canmount=off rpool/usr # zfs create rpool/usr/src # zfs create -o compression=off rpool/usr/obj # zfs create -o setuid=off rpool/usr/ports # zfs create -o compression=off -o exec=off -o setuid=off rpool/usr/ports/distfiles # zfs create -o compression=off -o exec=off -o setuid=off rpool/usr/ports/packages # zfs create -o compression=off -o mountpoint=/home rpool/home # zfs create -o compression=off -o mountpoint=/export -o exec=off -o setuid=off rpool/export # zfs create -o mountpoint=/var -o canmount=off rpool/var # zfs create -o exec=off -o setuid=off rpool/var/crash # zfs create -o exec=off -o setuid=off rpool/var/log # zfs create -o atime=on rpool/var/mail # zfs create -o setuid=off rpool/var/tmp # chmod 1777 /mnt/tmp # chmod 1777 /mnt/var/tmp
ブート設定
# zpool set bootfs=rpool/ROOT/default rpool
3. インストールの続き
shellをexecで抜けてインストールの続きを実行.
4. インストール後の設定
zfsの設定:
# echo 'zfs_enable="YES"' >> /mnt/etc/rc.conf # echo 'zfs_load="YES"' >> /mnt/boot/loader.conf # cp /tmp/zpool.cache /mnt/boot/zfs/
swapの設定はfstabへ.
# Device Mountpoint FStype Options Dump Pass# /dev/ada0p2 none swap sw 0 0
これでおしまい.