概要とか https://openzfs.org/wiki/Main_Page?utm_source=chatgpt.com
ドキュメント https://openzfs.github.io/openzfs-docs/
github https://github.com/openzfs/zfs

高速なストレージ、小さいファイルにも十分対応できて大きなファイルにも対応。HPC用途とかで。 小規模向けかな。大規模ならcephやlustre、IBM Storage Scale(GPFS)とかでしょうか
cephでクラスターファイルシステムがスケーラブルなのでしょうけど、初期費用が高い。っで1台で収められてそこそここ早いのがとなるとこれかなと。

HDDが飛んだ際にはメール通知、slack通知が可能です. 設定次第ではbeep音も出せるそうな.
最近のadaptec SmartRAIDは無口になってアラート音はなしです. LED点灯やメール通知のみですね。双璧のBroadcom MegaRAIDシリーズも最近の製品は無口になっているそうな

ここでは rockylinux9 に OpenZFS を入れてみたいと思います

導入

専用のリポジトリを追加します. 参照先 https://openzfs.github.io/openzfs-docs/Getting%20Started/RHEL-based%20distro/index.html

[root@zfs ~]# cat /etc/redhat-release
Rocky Linux release 9.7 (Blue Onyx)
 
[root@zfs ~]# uname -r
5.14.0-611.5.1.el9_7.x86_64
 
[root@zfs ~]# dnf install https://zfsonlinux.org/epel/zfs-release-3-0$(rpm --eval "%{dist}").noarch.rpm
 
[root@zfs ~]# ls /etc/yum.repos.d/
rocky-addons.repo  rocky-devel.repo  rocky-extras.repo  rocky.repo  zfs.repo
 
[root@zfs ~]#

zfsのカーネルモジュールですが、dkms版とkABI版がある. dkms版ならkernel updateの際に自動的にそのkernelにあったkernel moduleをコンパイルして用意してくれます.
まぁそれはそれでいいのですが、そのkernel向けとして特化したkABI版の方がまぁー安定かなぁ.
ここでは kABI版を使います

そして現時点(2026.04)で最新版の zfs-2.4.1 を使いたいと思います.

[root@zfs ~]# dnf repolist --all
 :
zfs                        OpenZFS for EL9 - dkms                       enabled
 :
zfs-latest-kmod            OpenZFS latest for EL9 - kmod                disabled
 :
[root@zfs ~]# dnf config-manager --disable zfs
[root@zfs ~]# dnf config-manager --enable zfs-latest-kmod

ここで、「dnf install zfs」でkernel moduleらがインストールされるのですが、どうもrockylinux9.7の初回のkernel version「5.14.0-611.5.1」向けの zfs-2.4.1 はないようなのでkernel updateします

[root@zfs ~]# dnf update kernel kernel-core kernel-modules kernel-modules-core kernel-tools kernel-tools-libs
[root@zfs ~]# grubby --update-kernel ALL --args selinux=0
[root@zfs ~]# grub2-mkconfig -o /boot/efi/EFI/rocky/grub.cfg
[root@zfs ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
[root@zfs ~]# reboot
 
(再ログイン)
[root@zfs ~]# uname -r
5.14.0-611.47.1.el9_7.x86_64
 
[root@zfs ~]# dnf install zfs
 
[root@zfs ~]# ls -l /lib/modules/$(uname -r)/weak-updates/zfs/
total 0
lrwxrwxrwx. 1 root root 58 Apr 26 03:01 spl.ko -> /lib/modules/5.14.0-611.34.1.el9_7.x86_64/extra/zfs/spl.ko
lrwxrwxrwx. 1 root root 58 Apr 26 03:01 zfs.ko -> /lib/modules/5.14.0-611.34.1.el9_7.x86_64/extra/zfs/zfs.ko
[root@zfs ~]#

と、5.14.0-611.47.1 なのですが、5.14.0-611.34.1 に入ったkernel moduleが、weak-updatesで 5.14.0-611.47.1 に提供されている

設計

色々調べて、小さいファイルにも大きなファイルにも有効にしたいと願い

項目要件300TBなストレージなら備考
HDDvdevを複数作る. 多い方がいい実用量の80%が約300TBになるなら384TBほど盛る
ミラー構成: 24TB x(2-1)*16=384TB, 16vdev(32slot必要)
RAIDZ構成:24TB x(3-1)*8=384TB, 8vdev(24slot)
RAIDZ2構成:24TB x(6-2)*4=384TB, 4vdev(24slot)
32slotマシンで前面24slotはHDDで埋めて
背面12slotは下記目的のSSDで埋めるのがいいかも
あるいは1UのフロントU.2 slot搭載マシン+24 HDD slot JBODとかで
special devicemetadataと小さいファイルを置く8TB ミラーで2組
8TB x(2-1)*2= 16TB (8TB 4枚)
ミラー構成必須
小さいファイルであふれるなら、同じミラー構成(8TB*2枚)を追加
SLOGNFSで同期書き込みなら有効、非同期なら微妙. 20GBほどあればいいみたい480GB PLP付 nvme ミラー小さいPLP nvmeってある?
L2ARCキャッシュ. 主メモリーの5倍から10倍以内主メモリー256GBなら 2TB nvmeRAID0構成でも可. 10倍以内にすること
主メモリ一次キャッシュ256GBとか 128GB
CPUクロック高め、core数そこそこ3.0から3.5GHz, 24-48コアチェックサム計算,RAIDZパリティ計算が嵩むので
nic25GbEか100GbE100GbEswithing HUBのuplinkポートに繋げるとか. bondingもいいかも

1Uのフロントに12slotsなnvme U.2とHBAを付けて、24bay JBOD構成かな.
一応拡張は可能っぽいけど、初めに作った構成を変更せず使うって感じに思えた. 大きくしたいなら別のシステムを用意するって感じかなぁ

っでこのようなストレージは作れないので仮想マシンで手順だけ試した

構築

HDDは3本RAIDZ単位で2つ(2vdev). 合計6HDD
special deviceは SSDで2枚のmirrorで1vdev
SLOGもSSD2枚でmirrorで
L2ARCはSSD1枚
ってな感じで仮想マシンを作ってみた

[root@zfs ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda      8:0    0   32G  0 disk
├sda1   8:1    0    1M  0 part
├sda2   8:2    0    1G  0 part /boot
├sda3   8:3    0  128M  0 part [SWAP]
├sda4   8:4    0    1K  0 part
└sda5   8:5    0 30.9G  0 part /
sdb      8:16   0  100G  0 disk       sdbからsdqの100Gは HDD として
sdc      8:32   0  100G  0 disk
sdd      8:48   0  100G  0 disk
sde      8:64   0  100G  0 disk
sdf      8:80   0  100G  0 disk
sdg      8:96   0  100G  0 disk
sdh      8:112  0   50G  0 disk      special device
sdi      8:128  0   50G  0 disk      special device
sdj      8:144  0   64G  0 disk      SLOG
sdk      8:160  0   64G  0 disk      SLOG
sdl      8:176  0   32G  0 disk      L2ARC
[root@zfs ~]#

なので

zpool create -o ashift=12 tank \
  raidz sdb sdc sdd \
  raidz sde sdf sdg \
  special mirror sdh sdi \
  log mirror sdj sdk \
  cache sdl

で完成になるが、
「PATHのデバイス名での指定はよくなく、「/dev/disk/by-id」か「/dev/disk/by-path」で指定する事。

[root@zfs ~]# ls -l /dev/disk/by-path/
total 0
lrwxrwxrwx. 1 root root  9 Apr 26 13:29 pci-0000:09:01.0-scsi-0:0:0:0 -> ../../sda
lrwxrwxrwx. 1 root root 10 Apr 26 13:29 pci-0000:09:01.0-scsi-0:0:0:0-part1 -> ../../sda1
lrwxrwxrwx. 1 root root 10 Apr 26 13:29 pci-0000:09:01.0-scsi-0:0:0:0-part2 -> ../../sda2
lrwxrwxrwx. 1 root root 10 Apr 26 13:29 pci-0000:09:01.0-scsi-0:0:0:0-part3 -> ../../sda3
lrwxrwxrwx. 1 root root 10 Apr 26 13:29 pci-0000:09:01.0-scsi-0:0:0:0-part4 -> ../../sda4
lrwxrwxrwx. 1 root root 10 Apr 26 13:29 pci-0000:09:01.0-scsi-0:0:0:0-part5 -> ../../sda5
lrwxrwxrwx. 1 root root  9 Apr 26 13:29 pci-0000:09:02.0-scsi-0:0:0:1 -> ../../sdb
lrwxrwxrwx. 1 root root  9 Apr 26 13:29 pci-0000:09:03.0-scsi-0:0:0:2 -> ../../sdc
lrwxrwxrwx. 1 root root  9 Apr 26 13:29 pci-0000:09:04.0-scsi-0:0:0:3 -> ../../sdd
lrwxrwxrwx. 1 root root  9 Apr 26 13:29 pci-0000:09:05.0-scsi-0:0:0:4 -> ../../sde
lrwxrwxrwx. 1 root root  9 Apr 26 13:29 pci-0000:09:06.0-scsi-0:0:0:5 -> ../../sdf
lrwxrwxrwx. 1 root root  9 Apr 26 13:29 pci-0000:09:07.0-scsi-0:0:0:6 -> ../../sdg
lrwxrwxrwx. 1 root root  9 Apr 26 13:29 pci-0000:09:08.0-scsi-0:0:0:7 -> ../../sdh
lrwxrwxrwx. 1 root root  9 Apr 26 13:29 pci-0000:09:09.0-scsi-0:0:0:8 -> ../../sdi
lrwxrwxrwx. 1 root root  9 Apr 26 13:29 pci-0000:09:0a.0-scsi-0:0:0:9 -> ../../sdj
lrwxrwxrwx. 1 root root  9 Apr 26 13:29 pci-0000:09:0b.0-scsi-0:0:0:10 -> ../../sdk
lrwxrwxrwx. 1 root root  9 Apr 26 13:29 pci-0000:09:0c.0-scsi-0:0:0:11 -> ../../sdl
[root@zfs ~]#

実機では「/dev/disk/by-id」が望ましい。
理由はHDD/SSD/nvmeのシリアル番号で指定することになるので。
zfsはHDDの障害時にLEDランプなんて異常を提示しないので、デバイスのシリアル番号をslotにテプラで付けておくのがいいみたい

なので実際には

[root@zfs ~]# modprobe zfs
 
[root@zfs ~]# zpool create -o ashift=12 tank \
  raidz pci-0000:09:02.0-scsi-0:0:0:1 \
        pci-0000:09:03.0-scsi-0:0:0:2 \
        pci-0000:09:04.0-scsi-0:0:0:3 \
  raidz pci-0000:09:05.0-scsi-0:0:0:4 \
        pci-0000:09:06.0-scsi-0:0:0:5 \
        pci-0000:09:07.0-scsi-0:0:0:6 \
  special mirror pci-0000:09:08.0-scsi-0:0:0:7 \
                 pci-0000:09:09.0-scsi-0:0:0:8 \
  log mirror pci-0000:09:0a.0-scsi-0:0:0:9  \
             pci-0000:09:0b.0-scsi-0:0:0:10 \
  cache pci-0000:09:0c.0-scsi-0:0:0:11
 
[root@zfs ~]# zpool status tank
  pool: tank
 state: ONLINE
config:
 
        NAME                                STATE     READ WRITE CKSUM
        tank                                ONLINE       0     0     0
          raidz1-0                          ONLINE       0     0     0
            pci-0000:09:02.0-scsi-0:0:0:1   ONLINE       0     0     0
            pci-0000:09:03.0-scsi-0:0:0:2   ONLINE       0     0     0
            pci-0000:09:04.0-scsi-0:0:0:3   ONLINE       0     0     0
          raidz1-1                          ONLINE       0     0     0
            pci-0000:09:05.0-scsi-0:0:0:4   ONLINE       0     0     0
            pci-0000:09:06.0-scsi-0:0:0:5   ONLINE       0     0     0
            pci-0000:09:07.0-scsi-0:0:0:6   ONLINE       0     0     0
        special
          mirror-2                          ONLINE       0     0     0
            pci-0000:09:08.0-scsi-0:0:0:7   ONLINE       0     0     0
            pci-0000:09:09.0-scsi-0:0:0:8   ONLINE       0     0     0
        logs
          mirror-3                          ONLINE       0     0     0
            pci-0000:09:0a.0-scsi-0:0:0:9   ONLINE       0     0     0
            pci-0000:09:0b.0-scsi-0:0:0:10  ONLINE       0     0     0
        cache
          pci-0000:09:0c.0-scsi-0:0:0:11    ONLINE       0     0     0
 
errors: No known data errors
[root@zfs ~]#

となる

mount

作ったzfsボリュームをmountします

zfs の ストレージプール名を「tank」にしたので、ファイルシステム上には/tankとしてmountされます

[root@zfs ~]# df -lTht zfs
Filesystem     Type  Size  Used Avail Use% Mounted on
tank           zfs   386G  128K  386G   1% /tank
[root@zfs ~]#
 
(zfsコマンドからの確認としては)
[root@zfs ~]# zfs get mountpoint
NAME  PROPERTY    VALUE       SOURCE
tank  mountpoint  /tank       default
[root@zfs ~]#

初期構築時なので、作った名称がそのまま使われてますが、「zfs set mountpoint」で変更も可能です

[root@zfs ~]# zfs set mountpoint=/home tank
[root@zfs ~]# zfs get mountpoint
NAME  PROPERTY    VALUE       SOURCE
tank  mountpoint  /home       local
[root@zfs ~]# df -lTht zfs
Filesystem     Type  Size  Used Avail Use% Mounted on
tank           zfs   386G  128K  386G   1% /home
[root@zfs ~]#

と変更が可能です。従来の /etc/fstab らの調整は不要です。

加えて/appsと/homeを同じプール(tank)で賄い事も可能で、まず/homeのmountを解除して、tank/homeとtank/appsを作ります。
そしてmountpointで場所を指定します

[root@zfs ~]# zfs set mountpoint=none tank
 
[root@zfs ~]# zfs create tank/home
[root@zfs ~]# zfs create tank/apps
 
(確認)
[root@zfs ~]# zfs list -r tank
NAME        USED  AVAIL  REFER  MOUNTPOINT
tank        792K   385G    96K  none
tank/apps    96K   385G    96K  none
tank/home    96K   385G    96K  none
[root@zfs ~]#
 
[root@zfs ~]# zfs set mountpoint=/home tank/home
[root@zfs ~]# zfs set mountpoint=/apps tank/apps
[root@zfs ~]# df -lTht zfs
Filesystem     Type  Size  Used Avail Use% Mounted on
tank/home      zfs   386G  128K  386G   1% /home
tank/apps      zfs   386G  128K  386G   1% /apps
[root@zfs ~]#

これらをnfsでexportする際ですが、疑似ファイルシステムを作らずに単に「/etc/exports」に

/home  192.168.1.0/24(rw,sync,no_subtree_check)
/apps  192.168.1.0/24(rw,sync,no_subtree_check)

で十分.
ZFSならではの「sharenfs」プロパティで公開する方法もありますが、「/etc/exports」に慣れていればそれを使った方がいいみたい

zfs set sharenfs="rw=@192.168.1.0/24" tank/home

zfsコマンドで調整する形になりますが、まぁー「/etc/exports」でいいかな。

あとスナップショットに関してですが、

[root@zfs ~]# zfs create tank/home/userA
[root@zfs ~]# zfs create tank/home/userB
 
[root@zfs ~]# zfs set mountpoint=/home/userA tank/home/userA
[root@zfs ~]# zfs set mountpoint=/home/userB tank/home/userB
 
[root@zfs ~]# mkdir /home/userC

と/home/userCだけデータセットからの切り出しではなくmkdirで作ったとします。
っで

zfs snapshot tank/home@backup1

とすると/home/userAと/home/userBを含まない形でスナップショットが取れます。
もし/home全体のスナップショットが欲しければ

zfs snapshot -r tank/home@monday_backup

と「-r」を付ける。

透過的圧縮。ファイルをそこに置いておくと自動的に内部で圧縮されます。表には元のファイル名ですが、裏では圧縮されて空き容量を増やす仕組みです
データセットを指定して行います

zfs set compression=lz4 tank/home/userA

これで/home/userAに集まるファイルはすべて透過的圧縮の対象となります。

クオート設定

zfs set quota=1T tank/home/userA
zfs set quota=200G tank/home/userA

とデータセットを作った領域に設けられます。単に「mkdir /home/userC」には適用されないです
解除方法は

zfs set quota=none tank/home/userA

残り幾つ使えるかは「zfs list」で見れて

[root@zfs ~]# zfs list
NAME              USED  AVAIL  REFER  MOUNTPOINT
tank              996K   385G    96K  none
tank/apps          96K   385G    96K  /apps
tank/home         288K   385G    96K  /home
tank/home/userA    96K   385G    96K  /home/userA
tank/home/userB    96K   200G    96K  /home/userB
[root@zfs ~]#

と表示される。「AVAIL」に出ます

ZFS Event Daemon(zed)による通知機能を作る

ZFSでは使っているエンクロージャ、JBODによりますが、HDD/nvme/SSDらが飛ぶとLEDが点灯します
でもそれだけでは不十分でメール通知を有効にしてみます

使用するのはzed. zfs-zed.service です。
でもこのzedは「ローカルのメール送信コマンドを叩くのみ」なので、マシンにメール送信機能(MTA)を準備する必要があります
ここでは簡易な方法として msmtp での構築を行ってみます. っでパッケージをインストールします

[root@zfs ~]# dnf install epel-release 
[root@zfs ~]# dnf install msmtp s-nail
(確認)
[root@zfs ~]# alternatives --list
 :
mta                     auto    /usr/bin/msmtp
mailx                   auto    /usr/bin/mailx.s-nail
[root@zfs ~]#

そして設定ファイル「/etc/smtprc」を作成します
下記はGmailを使った場合です。

Gamilのpasswordは「アプリパスワード」という物で
1.Googleアカウントに入って
2.「セキュリティーとログイン」ページに行って
3.「Googleにログインする方法」欄の「2段階認証プロセス」をクリックします
4.「アプリパスワード」欄がでますので、そこで「>」をクリックして、例えば msmtp とアプリ固有名を付けて「作成」ボタンを押下すると文字列がでます。それが「アプリパスワード」です。
「アプリパスワード」はその「作成」ボタンを押下した瞬間しか表示されないです。閉じると2度と見れません。見落とした、忘れたなら再度作成して作ってください。

[root@zfs ~]# vi /etc/msmtprc
defaults
auth           on
tls            on
tls_trust_file /etc/pki/tls/certs/ca-bundle.crt
logfile        /var/log/msmtp.log
 
account        gmail
host           smtp.gmail.com
port           587
from           xxxxxxxxxxxxxxxxxxxxxxx@gmail.com
user           xxxxxxxxxxxxxxxxxxxxxxx@gmail.com
password       aaaabbbbccccdddd
 
account default : gmail

っでテストメールを出してみる。

[root@zfs ~]# echo "test mail" | mail -s "test" xxxxxxxxxxxxxxxxxxxxxxx@gmail.com

これでメールが届いたらok

そしてzedの設定を行います

[root@zfs ~]# vi /etc/zfs/zed.d/zed.rc
 
[root@zfs ~]# sed -e '/^#/d' -e '/^$/d' /etc/zfs/zed.d/zed.rc
ZED_EMAIL_ADDR="xxxxxxxxxxxxxxxxxxxxxxx@gmail.com"
ZED_NOTIFY_VERBOSE=1                                   <-- これを1にしないと「zpool scrub tank」程度の内容でメールが来ない. けどテストのために有効にしておく
ZED_USE_ENCLOSURE_LEDS=1
ZED_SYSLOG_SUBCLASS_EXCLUDE="history_event"
 
[root@zfs ~]# systemctl restart zfs-zed.service

テストとしては「zpool scrub tank」とかで。

[root@zfs ~]# zpool scrub tank

っで、メールが届くか確認します。

「ZED_NOTIFY_VERBOSE=1」ですが、「/etc/zfs/zed.d/zed.rc」には下記のように書かれてます

# Notification verbosity.
#   If set to 0, suppress notification if the pool is healthy.
#   If set to 1, send notification regardless of pool health.

pool自体に問題がなければ通知しない。ZED_NOTIFY_VERBOSEを有効にすれば、poolに問題がなくても通知する。テスト目的なら有効にして、
本番は無効でいいのかなと。

とんだHDDをLEDで場所を知らせる

zedの設定ファイル「/etc/zfs/zed.d/zed.rc」には
「ZED_USE_ENCLOSURE_LEDS=1」との設定項目がある. 該当部分は

# Turn on/off enclosure LEDs when drives get DEGRADED/FAULTED.  This works for
# device mapper and multipath devices as well.  This works with JBOD enclosures
# and NVMe PCI drives (assuming they're supported by Linux in sysfs).

と書かれているので、多分システム次第で飛んだHDDの場所が分かるようになっているかと.

Broadcom の HBA に接続していると

[root@zfs ~]# ls /sys/class/enclosure/1\:0\:14\:0/Slot11/device/block/
sdn
[root@zfs ~]#

とデバイス名がでます。なので、zedによるLED点灯は行けるかなと思われます

意図的に HDD を飛ばしてみる

[root@zfs ~]# zpool status
  pool: tank
 state: ONLINE
  scan: scrub repaired 0B in 00:00:00 with 0 errors on Fri May  1 01:30:35 2026
config:
 
        NAME                                STATE     READ WRITE CKSUM
        tank                                ONLINE       0     0     0
          raidz1-0                          ONLINE       0     0     0
            pci-0000:09:02.0-scsi-0:0:0:1   ONLINE       0     0     0
            pci-0000:09:03.0-scsi-0:0:0:2   ONLINE       0     0     0
            pci-0000:09:04.0-scsi-0:0:0:3   ONLINE       0     0     0
          raidz1-1                          ONLINE       0     0     0
            pci-0000:09:05.0-scsi-0:0:0:4   ONLINE       0     0     0
            pci-0000:09:06.0-scsi-0:0:0:5   ONLINE       0     0     0
            pci-0000:09:07.0-scsi-0:0:0:6   ONLINE       0     0     0
        special
          mirror-2                          ONLINE       0     0     0
            pci-0000:09:08.0-scsi-0:0:0:7   ONLINE       0     0     0
            pci-0000:09:09.0-scsi-0:0:0:8   ONLINE       0     0     0
        logs
          mirror-3                          ONLINE       0     0     0
            pci-0000:09:0a.0-scsi-0:0:0:9   ONLINE       0     0     0
            pci-0000:09:0b.0-scsi-0:0:0:10  ONLINE       0     0     0
        cache
          pci-0000:09:0c.0-scsi-0:0:0:11    ONLINE       0     0     0
 
errors: No known data errors
[root@zfs ~]#

この状態で事象発生させてみる (proxmoxでOSDノードのHDDを選択して detach 操作を行う)
「pci-0000:09:06.0-scsi-0:0:0:5」の部分をDetachさせてみた

[root@zfs ~]# zpool status
  pool: tank
 state: DEGRADED
status: One or more devices have been removed.
        Sufficient replicas exist for the pool to continue functioning in a
        degraded state.
action: Online the device using zpool online' or replace the device with
        'zpool replace'.
  scan: scrub repaired 0B in 00:00:00 with 0 errors on Fri May  1 01:30:35 2026
config:
 
        NAME                                STATE     READ WRITE CKSUM
        tank                                DEGRADED     0     0     0
          raidz1-0                          ONLINE       0     0     0
            pci-0000:09:02.0-scsi-0:0:0:1   ONLINE       0     0     0
            pci-0000:09:03.0-scsi-0:0:0:2   ONLINE       0     0     0
            pci-0000:09:04.0-scsi-0:0:0:3   ONLINE       0     0     0
          raidz1-1                          DEGRADED     0     0     0
            pci-0000:09:05.0-scsi-0:0:0:4   ONLINE       0     0     0
            pci-0000:09:06.0-scsi-0:0:0:5   REMOVED      0     0     0
            pci-0000:09:07.0-scsi-0:0:0:6   ONLINE       0     0     0
        special
          mirror-2                          ONLINE       0     0     0
            pci-0000:09:08.0-scsi-0:0:0:7   ONLINE       0     0     0
            pci-0000:09:09.0-scsi-0:0:0:8   ONLINE       0     0     0
        logs
          mirror-3                          ONLINE       0     0     0
            pci-0000:09:0a.0-scsi-0:0:0:9   ONLINE       0     0     0
            pci-0000:09:0b.0-scsi-0:0:0:10  ONLINE       0     0     0
        cache
          pci-0000:09:0c.0-scsi-0:0:0:11    ONLINE       0     0     0
 
errors: No known data errors
[root@zfs ~]#

これは意図的に抜いても同じようになります。
実機では恐らくそのHDDに問題があって利用できなくなるとzfsからは「FAULTED」と付けられます。そうなった際はそのHDDをzfsの管理から外させるコマンド(zpool offline)を実行します

[root@zfs ~]# zpool offline tank pci-0000:09:06.0-scsi-0:0:0:5
 
[root@zfs ~]# zpool status
 :
          raidz1-1                          DEGRADED     0     0     0
            pci-0000:09:05.0-scsi-0:0:0:4   ONLINE       0     0     0
            pci-0000:09:06.0-scsi-0:0:0:5   OFFLINE      0     0     0
            pci-0000:09:07.0-scsi-0:0:0:6   ONLINE       0     0     0
 :
[root@zfs ~]#

次に、飛んだHDDを抜いて、新しいHDDをシステムに入れます。
この際、追加するHDDがどこかのzfsで使っていたHDDなら大事故になるようで、要注意。
その際は「ZFSラベルを消す」ことが大事。

[root@zfs ~]# zpool labelclear -f  "/dev/disk/by-path/pci-0000:09:06.0-scsi-0:0:0:5"
 
あるいは
[root@zfs ~]# wipefs -a  "/dev/disk/by-path/pci-0000:09:06.0-scsi-0:0:0:5"
[root@zfs ~]# sgdisk --zap-all   "/dev/disk/by-path/pci-0000:09:06.0-scsi-0:0:0:5"

でラベルを消す

その上で差し替え操作を行います

[root@zfs ~]# zpool replace tank "pci-0000:09:06.0-scsi-0:0:0:5"  "pci-0000:09:06.0-scsi-0:0:0:5"

今回は同じPATHになってますが、気にしなくてもいいみたい。新しいHDDには未使用なHDDなので大丈夫なそうな

posix acl

デフォではPOSIX ACLは有効になっていないです。
なので有効にします

[root@zfs ~]# zfs set acltype=posixacl tank/home
 
[root@zfs ~]# zfs get acltype
NAME             PROPERTY  VALUE     SOURCE
tank             acltype   off       default
tank/apps        acltype   off       default
tank/home        acltype   posix     local
tank/home/userA  acltype   posix     inherited from tank/home
tank/home/userB  acltype   posix     inherited from tank/home
[root@zfs ~]#

tank/homeでaclが有効ならそれが配下にも波及されるみたい

[root@zfs ~]# setfacl -m user:cryosparc:rx /home/saber
[root@zfs ~]# getfacl /home/saber/
getfacl: Removing leading '/' from absolute path names
# file: home/saber/
# owner: saber
# group: saber
user::rwx
user:cryosparc:r-x
group::---
mask::r-x
other::---
 
[root@zfs ~]#

っとなるみたい.

nfs先では?
まずは

[root@zfs ~]# vi /etc/exports
/home  192.168.0.0/24(rw,sync,no_subtree_check)
/apps  192.168.0.0/24(rw,sync,no_subtree_check)
 
[root@zfs ~]# systemctl enable nfs-server --now

っでnfs-clientから

[root@rockylinux9 ~]# mount -t nfs zfs:/home /home
[root@rockylinux9 ~]# df -Tht  nfs4
Filesystem     Type  Size  Used Avail Use% Mounted on
zfs:/home      nfs4  386G  1.0M  386G   1% /home
[root@rockylinux9 ~]#
[root@rockylinux9 ~]# ls -l /home
total 2
drwx------. 2 cryosparc cryosparc 5 May  3 00:10 cryosparc
drwxr-x---+ 2 saber     saber     5 May  3 00:09 saber
drwxr-xr-x. 2 root      root      2 May  2 04:18 userA
drwxr-xr-x. 2 root      root      2 May  2 04:19 userB
[root@rockylinux9 ~]#
 
[root@rockylinux9 ~]# getfacl /home/saber/
getfacl: Removing leading '/' from absolute path names
# file: home/saber/
# owner: saber
# group: saber
user::rwx
group::r-x
other::---
 
[root@rockylinux9 ~]# umount /home
 
 
(nfs v3でmount)
[root@rockylinux9 ~]# mount -t nfs -o vers=3 zfs:/home /home
[root@rockylinux9 ~]# ls -l /home
total 2
drwx------. 2 cryosparc cryosparc 5 May  3 00:10 cryosparc
drwxr-x---+ 2 saber     saber     5 May  3 00:09 saber
drwxr-xr-x. 2 root      root      2 May  2 04:18 userA
drwxr-xr-x. 2 root      root      2 May  2 04:19 userB
 
[root@rockylinux9 ~]#
[root@rockylinux9 ~]# getfacl /home/saber/
getfacl: Removing leading '/' from absolute path names
# file: home/saber/
# owner: saber
# group: saber
user::rwx
user:cryosparc:r-x         <--- ACLが効いている
group::---
mask::r-x
other::---
 
[root@rockylinux9 ~]#

zfsに関わらず、普通にnfs versiomn3でexportすれば、getfac/setfaclが使えます。NFSv4なら面倒なnfs4_setacl とかの出番になります

zfs同士のバックアップ

最新の60件
2026-06-08 2026-06-06 2026-06-05 2026-06-04 2026-06-03 2026-05-31 2026-05-28 2026-05-26 2026-05-23 2026-05-22 2026-05-21 2026-05-20 2026-05-19 2026-05-18 2026-05-12 2026-05-11 2026-05-08 2026-05-06 2026-05-05 2026-05-03
  • OpenZFS
2026-04-30 2026-04-29 2026-04-28 2026-04-27 2026-04-25 2026-04-24 2026-04-22 2026-04-21 2026-04-12 2026-04-08 2026-04-06 2026-04-05 2026-04-02 2026-03-26 2026-03-23 2026-03-21 2026-03-19 2026-03-15 2026-03-14

edit


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2026-05-03 (日) 01:18:20