FreeBSD 11のインストールの続きです。
swapを設定する
CDからのインストール時にはswapは0にしたので、現在はswapの設定がありません。
# swapinfo
Device 512-blocks Used Avail Capacity
[root@kona /usr/home/ss]# gpart show
=> 40 7814037088 ada0 GPT (3.6T)
40 1600 1 efi (800K)
1640 1024 2 freebsd-boot (512K)
2664 1432 - free - (716K)
4096 7814031360 3 freebsd-zfs (3.6T)
7814035456 1672 - free - (836K)
=> 40 7814037088 ada1 GPT (3.6T)
40 1600 1 efi (800K)
1640 1024 2 freebsd-boot (512K)
2664 1432 - free - (716K)
4096 7814031360 3 freebsd-zfs (3.6T)
7814035456 1672 - free - (836K)
…
#
zfs上にswapファイルを置くので、zfsコマンドで32GBのswap用のファイルを作ります。
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
zkona00 1.60G 3.51T 96K /zkona00
zkona00/ROOT 387M 3.51T 96K none
zkona00/ROOT/default 387M 3.51T 387M /
zkona00/tmp 484K 3.51T 484K /tmp
zkona00/usr 1.22G 3.51T 96K /usr
zkona00/usr/home 136K 3.51T 136K /usr/home
zkona00/usr/ports 640M 3.51T 640M /usr/ports
zkona00/usr/src 608M 3.51T 608M /usr/src
zkona00/var 648K 3.51T 96K /var
zkona00/var/audit 96K 3.51T 96K /var/audit
zkona00/var/crash 96K 3.51T 96K /var/crash
zkona00/var/log 168K 3.51T 168K /var/log
zkona00/var/mail 96K 3.51T 96K /var/mail
zkona00/var/tmp 96K 3.51T 96K /var/tmp
# zfs create -V 32gb zkona00/var/swap
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
zkona00 34.6G 3.48T 96K /zkona00
…
zkona00/var/swap 33.0G 3.51T 64K -
zkona00/var/tmp 96K 3.48T 96K /var/tmp
#
次にzkona00/var/swapをスワップ領域として設定します。
# zfs set org.freebsd:swap=on zkona00/var/swap
# zfs get org.freebsd:swap zkona00/var/swap
NAME PROPERTY VALUE SOURCE
zkona00/var/swap org.freebsd:swap on local
# reboot
…
$ swapinfo -g
Device 1G-blocks Used Avail Capacity
/dev/zvol/zkona00/var/swap 32 0 32 0%
$
zfsで使用するパーティションをラベルで参照する
先日、以下のようなことを書きました。
追記: ZFSに使うパーティションをラベルで参照する
http://www.sakashita-net.jp/2016/11/freebsd-11zfs-rootmirror.html
bsd-installだとzfsに使うパーティションの参照が物理デバイス名になっています。
物理デバイス名は、接続されているディスク数によって変わってしまうので、故障のときにうまくありません。
以下に変更の手順を示します。
まず現状を確認します。
$ zpool status
pool: zkona00
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
zkona00 ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
ada0p3 ONLINE 0 0 0
ada1p3 ONLINE 0 0 0
errors: No known data errors
$ gpart show
=> 40 7814037088 ada0 GPT (3.6T)
40 1600 1 efi (800K)
1640 1024 2 freebsd-boot (512K)
2664 1432 - free - (716K)
4096 7814031360 3 freebsd-zfs (3.6T)
7814035456 1672 - free - (836K)
=> 40 7814037088 ada1 GPT (3.6T)
40 1600 1 efi (800K)
1640 1024 2 freebsd-boot (512K)
2664 1432 - free - (716K)
4096 7814031360 3 freebsd-zfs (3.6T)
7814035456 1672 - free - (836K)
$
zfsのプールはada0p3とada1p3のようにデバイス名で参照されています。これをパーティションテーブルに設定したラベルを参照するに変更します。
まずラベルが/dev/gptの下に見えるように設定を変更します。
# vi /boot/loader.conf
…
kern.geom.label.gptid.enable="1"
…
# reboot
現在のラベルを確認すると、まだ設定していないことがわかります。
# gpart show ada0 ada1
=> 40 7814037088 ada0 GPT (3.6T)
40 1600 1 efi (800K)
1640 1024 2 freebsd-boot (512K)
2664 1432 - free - (716K)
4096 7814031360 3 freebsd-zfs (3.6T)
7814035456 1672 - free - (836K)
=> 40 7814037088 ada1 GPT (3.6T)
40 1600 1 efi (800K)
1640 1024 2 freebsd-boot (512K)
2664 1432 - free - (716K)
4096 7814031360 3 freebsd-zfs (3.6T)
7814035456 1672 - free - (836K)
# gpart show -l ada0 ada1
=> 40 7814037088 ada0 GPT (3.6T)
40 1600 1 efiboot0 (800K)
1640 1024 2 gptboot0 (512K)
2664 1432 - free - (716K)
4096 7814031360 3 (null) (3.6T)
7814035456 1672 - free - (836K)
=> 40 7814037088 ada1 GPT (3.6T)
40 1600 1 efiboot1 (800K)
1640 1024 2 gptboot1 (512K)
2664 1432 - free - (716K)
4096 7814031360 3 (null) (3.6T)
7814035456 1672 - free - (836K)
#
3番目のパーティション、パーティションタイプがfreebsd-zfsとなっているところにラベル、disk0とdisk1を設定します。
# gpart modify -i 3 -l disk0 ada0
ada0p3 modified
# gpart modify -i 3 -l disk0 ada1
ada1p3 modified
# gpart show -l ada0 ada1
=> 40 7814037088 ada0 GPT (3.6T)
40 1600 1 efiboot0 (800K)
1640 1024 2 gptboot0 (512K)
2664 1432 - free - (716K)
4096 7814031360 3 disk0 (3.6T)
7814035456 1672 - free - (836K)
=> 40 7814037088 ada1 GPT (3.6T)
40 1600 1 efiboot1 (800K)
1640 1024 2 gptboot1 (512K)
2664 1432 - free - (716K)
4096 7814031360 3 disk0 (3.6T)
7814035456 1672 - free - (836K)
#
次にミラー構成のディスクの片側を外して(detach)、ふたたびラベル参照で取り付けます(attach)。最初にada0p3を外します。
# zpool status
pool: zkona00
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
zkona00 ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
ada0p3 ONLINE 0 0 0
ada1p3 ONLINE 0 0 0
errors: No known data errors
# zpool detach zkona00 ada0p3
# zpool status
pool: zkona00
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
zkona00 ONLINE 0 0 0
ada1p3 ONLINE 0 0 0
errors: No known data errors
ada0p3の代わりにgpt/disk0というラベル名で取り付けます。
# ls /dev/gpt
disk0 efiboot1 gptboot1 swap1
efiboot0 gptboot0 swap0
# zpool attach zkona00 ada1p3 gpt/disk0
Make sure to wait until resilver is done before rebooting.
If you boot from pool 'zkona00', you may need to update
boot code on newly attached disk 'gpt/disk0'.
Assuming you use GPT partitioning and 'da0' is your new boot disk
you may use the following command:
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0
# zpool status
pool: zkona00
state: ONLINE
status: One or more devices is currently being resilvered. The pool will
continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
scan: resilver in progress since Thu Dec 8 07:24:58 2016
236M scanned out of 1.60G at 26.2M/s, 0h0m to go
236M resilvered, 14.41% done
config:
NAME STATE READ WRITE CKSUM
zkona00 ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
ada1p3 ONLINE 0 0 0
gpt/disk0 ONLINE 0 0 0 (resilvering)
errors: No known data errors# zpool status
pool: zkona00
state: ONLINE
scan: resilvered 1.60G in 0h0m with 0 errors on Thu Dec 8 07:25:39 2016
config:
NAME STATE READ WRITE CKSUM
zkona00 ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
ada1p3 ONLINE 0 0 0
gpt/disk0 ONLINE 0 0 0
errors: No known data errors
次にada1p3を外します。
# zpool detach zkona00 ada1p3
# zpool status
pool: zkona00
state: ONLINE
scan: resilvered 1.60G in 0h0m with 0 errors on Thu Dec 8 07:25:39 2016
config:
NAME STATE READ WRITE CKSUM
zkona00 ONLINE 0 0 0
gpt/disk0 ONLINE 0 0 0
errors: No known data errors
# ls /dev/gpt
disk0 efiboot0 gptboot0 swap0
disk1 efiboot1 gptboot1 swap1
ada1p3の代わりにgpt/disk1というラベル名で取り付けます。
# zpool attach zkona00 gpt/disk0 gpt/disk1
Make sure to wait until resilver is done before rebooting.
If you boot from pool 'zkona00', you may need to update
boot code on newly attached disk 'gpt/disk1'.
Assuming you use GPT partitioning and 'da0' is your new boot disk
you may use the following command:
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0
# zpool status
pool: zkona00
state: ONLINE
status: One or more devices is currently being resilvered. The pool will
continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
scan: resilver in progress since Thu Dec 8 07:30:53 2016
360M scanned out of 1.60G at 32.7M/s, 0h0m to go
359M resilvered, 21.96% done
config:
NAME STATE READ WRITE CKSUM
zkona00 ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
gpt/disk0 ONLINE 0 0 0
gpt/disk1 ONLINE 0 0 0 (resilvering)
errors: No known data errors
#
これでzfsのプールに使うパーティションをラベルで参照するように変更できました。
FreeBSD 11ではインストール時にZFSで構成すると圧縮が有効になっているので、ついでに、ここで解除します。理由は性能とファイルシステムの空き容量の推測が難しくなるためです。
# zfs get compression
NAME PROPERTY VALUE SOURCE
zkona00 compression lz4 local
zkona00/ROOT compression lz4 inherited from zkona00
zkona00/ROOT/default compression lz4 inherited from zkona00
zkona00/tmp compression lz4 inherited from zkona00
…
# zfs set compression=off zkona00
# zfs get compression
NAME PROPERTY VALUE SOURCE
zkona00 compression off local
zkona00/ROOT compression off inherited from zkona00
zkona00/ROOT/default compression off inherited from zkona00
zkona00/tmp compression off inherited from zkona00
…
#