OpenZFS on Gentoo Linux
Tech > Distoribution > gentoo
Gentoo LinuxでOpenZFSを使う方法、ほぼ、SolarisのZFSと同じで使い方には迷わない、さほど暇ではないのでMirrorの設定のみ
インストール
OpenZFSを利用するためのアプリケーションやカーネルモジュールを設定しておく
インストールパッケージ
インストールには以下のパッケージを利用
項番 | パッケージ | 備考 |
---|---|---|
1 | sys-fs/zfs | zfs関連コマンド各種 |
2 | sys-fs/zfs-kmod | zfsカーネルモジュール |
カーネルオプション
圧縮アルゴリズムを利用可能にしておく
*** Compression ***
-*- Deflate compression algorithm
-*- LZO compression algorithm
-*- 842 compression algorithm
{M} LZ4 compression algorithm
{M} LZ4HC compression algorithm
-*- Zstd compression algorithm
デバイス
partedでHDDの内容を確認、パーティションは作成しなくてよいが GPT ラベルへしておいた方がよい、ラベルが未指定の場合、rpoolを作成した際に自動で設定されるので、ここで指定しなくてもよい
HDD1
# parted /dev/sdc
GNU Parted 3.4
Using /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p
Error: /dev/sdc: unrecognised disk label
Model: ATA TOSHIBA MG03ACA3 (scsi)
Disk /dev/sdc: 3001GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
(parted)
HDD2
cmv ~ # parted /dev/sdd
GNU Parted 3.4
Using /dev/sdd
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p
Error: /dev/sdd: unrecognised disk label
Model: ATA TOSHIBA MG03ACA3 (scsi)
Disk /dev/sdd: 3001GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
(parted)
Mirrorの作成
2台のHDDをミラーリングする
# zpool create -f rpool mirror -m /rpool /dev/sdc /dev/sdd
設定の確認
cmv ~ # zpool status
pool: rpool
state: ONLINE
config:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
このままでもよいとは思いますが、 /dev/sd 系のデバイス指定でミラーリングした場合に、再起動後にデバイスの名前が変更されてしまいDEGRATEDされてしまう時があったので、一旦rpoolをdestroyし再度作成し直し。
# zpool destroy rpool
cmv ~ # zpool status
no pools available
この処理で、それぞれのディスクてきにはZFS用のパーティションができているのでディスクラベルを確認する
cmv ~ # ls -l /dev/disk/by-partlabel/
...
...
lrwxrwxrwx 1 root root 10 2月 27 05:51 zfs-9047042c5488e84b -> ../../sdd1
lrwxrwxrwx 1 root root 10 2月 27 05:51 zfs-e2078e06cc7943ce -> ../../sdc1
ラベルで再度ミラー設定する
# zpool create -f rpool mirror -m /extends /dev/disk/by-partlabel/zfs-e2078e06cc7943ce /dev/disk/by-partlabel/zfs-9047042c5488e84b
確認
cmv ~ # zpool status
pool: rpool
state: ONLINE
config:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
zfs-e2078e06cc7943ce ONLINE 0 0 0
zfs-9047042c5488e84b ONLINE 0 0 0
errors: No known data errors
cmv ~ #
これでデバイスがじれることを回避できる模様、partedコマンドでもラベルは確認できる
cmv ~ # parted /dev/sdc
GNU Parted 3.4
Using /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p
Model: ATA WDC WD60EZAZ-00S (scsi)
Disk /dev/sdc: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 6001GB 6001GB zfs-e2078e06cc7943ce
9 6001GB 6001GB 8389kB
(parted)
OpenZFS用サービス設定
再起動後に自動的に import するように各種サービスを起動するように設定
cmv ~ # systemctl enable zfs.target
Created symlink /etc/systemd/system/multi-user.target.wants/zfs.target -> /lib/systemd/system/zfs.target.
cmv ~ # systemctl enable zfs-import-cache
Created symlink /etc/systemd/system/zfs-import.target.wants/zfs-import-cache.service -> /lib/systemd/system/zfs-import-cache.service.
cmv ~ # systemctl enable zfs-mount
Created symlink /etc/systemd/system/zfs.target.wants/zfs-mount.service -> /lib/systemd/system/zfs-mount.service.
cmv ~ # systemctl enable zfs-import.target
Created symlink /etc/systemd/system/zfs.target.wants/zfs-import.target -> /lib/systemd/system/zfs-import.target.
ARCの設定
ARC等のZFSパラメータを設定する
cmv ~ # echo "options zfs zfs_arc_max=1073741824" >> /etc/modprobe.d/zfs.conf
再起動して再度動いているか確認する
DEGRATEDした場合
何かの原因でDEGRATEDした場合、まずDEGRATEDしている方をofflineにする
cmv ~ # zpool offline rpool zfs-9047042c5488e84b
オフラインにし
cmv ~ # zpool status -v rpool
pool: rpool
state: DEGRADED
status: One or more devices has experienced an unrecoverable error. An
attempt was made to correct the error. Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
using 'zpool clear' or replace the device with 'zpool replace'.
see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-9P
scan: resilvered 90K in 00:00:01 with 0 errors on Mon Feb 21 05:21:08 2022
config:
NAME STATE READ WRITE CKSUM
rpool DEGRADED 0 0 0
mirror-0 DEGRADED 0 0 0
zfs-e2078e06cc7943ce ONLINE 0 0 0
zfs-9047042c5488e84b OFFLINE 14 2 0
errors: No known data errors
切り離す
cmv ~ # zpool detach rpool zfs-9047042c5488e84b
1本で稼働中
cmv ~ # zpool status -v
pool: rpool
state: ONLINE
config:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
zfs-e2078e06cc7943ce ONLINE 0 0 0
errors: No known data errors
再度ミラーにHDDをattach追加する
cmv ~ # zpool attach rpool zfs-e2078e06cc7943ce zfs-9047042c5488e84b
追加する場合の注意
add で追加するとミラーリングでなくストライピングで追加されるので間違わないよう注意する
cmv ~ # zpool add rpool zfs-9047042c5488e84b
以下はmirrorになってはいない
cmv ~ # zpool status -v
pool: rpool
state: ONLINE
config:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
zfs-e2078e06cc7943ce ONLINE 0 0 0
zfs-9047042c5488e84b ONLINE 0 0 0
errors: No known data errors
その他
arcstatコマンド
cmv ~ # arcstat 1
time read miss miss% dmis dm% pmis pm% mmis mm% size c avail
09:55:17 0 0 0 0 0 0 0 0 0 2.6M 1001M 25G
09:55:18 0 0 0 0 0 0 0 0 0 2.6M 1001M 25G
09:55:19 0 0 0 0 0 0 0 0 0 2.6M 1001M 25G
09:55:20 0 0 0 0 0 0 0 0 0 2.6M 1001M 25G
09:55:21 0 0 0 0 0 0 0 0 0 2.6M 1001M 25G
Posted on 2022-02-27 10:01:42