過去に一度ZFS化しているのですが、24時間程度でなぜか再起動しちゃって使い勝手が悪かったので戻しちゃいました。FreeBSDのバージョンもいっこ上がったので使えるようになったかな? ということで再挑戦です。なお、やっぱりダメだったときにまた今度やり直せるよう、手順をすべて書き記しておきます。
Filesystem Size Used Avail Capacity Mounted on /dev/ad1s1a 19G 10G 7.6G 57% / /dev/ad1s1d 19G 9.7G 8.1G 55% /usr /dev/ad1s1e 48G 17G 28G 38% /var/smb /dev/ad1s1f 57G 10G 42G 19% /var/smb/takatani/mpeg4
vm.kmem_size_max="512M"
vm.kmem_size="512M"
# zpool create tank /dev/ad0
# zfs create tank/root
# zfs create tank/usr
# zfs create tank/var
# zfs create tank/var.smb
# zfs create -o compression=on tank/usr.ports
# zfs create -o compression=on tank/usr.src
# zfs create tank/usr.home
# zfs create -V 1GB tank/swap
# swapon /dev/zvol/tank/swap
# zfs set org.freebsd:swap=on tank/swap
# zfs set mountpoint=/tank tank/root
# zfs set mountpoint=/tank/usr tank/usr
# zfs set mountpoint=/tank/var tank/var
# zfs set mountpoint=/tank/var/smb tank/var.smb
# zfs set mountpoint=/tank/usr/ports tank/usr.ports
# zfs set mountpoint=/tank/usr/src tank/usr.src
# zfs set mountpoint=/tank/usr/home tank/usr.home
# dump -0auf - /dev/ad1s1a | (cd /tank ; restore -rf -)
# dump -0auf - /dev/ad1s1d | (cd /tank/usr ; restore -rf -)
# dump -0auf - /dev/ad1s1e | (cd /tank/var/smb ; restore -rf -)
# dump -0auf - /dev/ad1s1f | (cd /tank/var/smb/takatani/mpeg4 ; restore -rf -)
# rm -r /tank/boot
# cd /tank
# mkdir bootdir
# ln -s bootdir/boot boot
/dev/da0s1a /bootdir ufs rw,noatime 1 1※ 元からあった /dev/ad1s1a 等の行は必要ないので消す
zfs_enable="YES"
zfs_load="YES"
vfs.root.mountfrom="zfs:tank/root"
# zfs set mountpoint=/usr/ports tank/usr.ports/usr/ports の前に /usr のマウントポイントを変更しようとするとエラーになります。/usr/ports の後に /usr を変更すると /usr/ports の中身が見えなくなりますが、再起動後はちゃんと見えるようになるみたいです。
# zfs set mountpoint=/usr/src tank/usr.src
# zfs set mountpoint=/usr/home tank/usr.home
# zfs set mountpoint=/usr tank/usr
# zfs set mountpoint=/var/smb tank/var.smb
# zfs set mountpoint=/var tank/var
# cd /
# zfs set mountpoint=legacy tank/root
# reboot
以上。
# zfs create tank/log
# mv /log/* /tank/log/
# zfs set mountpoint=/var/log tank/log
# zpool import -f tankにて可能だけれど、ルートのマウントポイントが変わっちゃうかもしれないので、再起動の前にマウントポイントを一通りチェックすること。 なお、make world では USBメモリ内は /boot しか更新されないので、アップグレードの際には
make installworld DESTDIR=/bootdirとかしておかないと後々困るかもしれない。
# zpool attach tank ad0 ad1とやればOKかな?
□ 関連記事