FreeBSD-10.1RELEASE on ZFS

投稿日:

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

これでおしまい.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です