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

はじめまして

お茶の国静岡で、焼酎のお茶割なんか罰当たりで飲んだことはありません、常に一番搾りを嗜む静岡極東のBBQerです、最近まわりのエンジニアの方々がお料理を上手にやっている姿を恨めしそうに横目に見ながら、軟骨ピリ辛チクワを食べています、みなさんよろしく。

Posted

Amazon

tags

家系 日本酒池 広井酒店 やがら やっぱた 刺身 丸干し 鯵 東京マラソン fpm php82 servant thread spawn Rust Oracle Linux 8 microcode firmware linux openzfs zfs gitea 麒麟 真野鶴 金鶴 日本酒 docker oracle pod podman cli virtualbox VirtualBox epub mobi calibre mask lens ワンライナー php 海 redmine Linux Oracle Map OMap omap map 夏 BBQ カテゴリ管理 カテゴリ timestamp date oracle database string 麦焼酎 ダービー process 磨き蒸留 広井酒店、日本酒 芋焼酎 酒 焼酎 ゆるキャン 広井酒店、日本酒池 spring framework java persistent spring session session spring hdbc-odbc persistent-odbc odbc day utctime スィート レマンの森 elm初期化 elm バイク xlr80 esqueleto database xl2tpd strongswan vpn l2tp ipsec 正月 ゲーム grub nginx systemctl portage 豚骨 圧力鍋 yesod-auth-hashdb yesod-auth