こっちもあるよ
はじめに
Proxmox 9.0からZFS RAIDZプールにディスクを追加して拡張できるようになりました。
そこで、バックアップ用のRAIDアレイにHDDを追加して容量を拡張します。
作業
プールのアップグレード
現在のプールを最新機能に対応させます。
# zpool upgrade PBS(プール名)
This system supports ZFS pool feature flags.
Pool 'PBS' already has all supported and requested features enabled.
プールの整合性チェック
scrubしてデータの整合性を確保します。
# zpool scrub PBS
# zpool status PBS
pool: PBS
state: ONLINE
scan: scrub repaired 0B in 01:18:13 with 0 errors on Sun Aug 10 01:42:14 2025
config:
NAME STATE READ WRITE CKSUM
PBS ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
ata-WDC_WD5003ABYX-20WERA0_WD-WMAYP0K20RMR ONLINE 0 0 0
ata-WDC_WD5000AAKX-22ERMA0_WD-WCC2ESJ60022 ONLINE 0 0 0
ata-WDC_WD5003ABYX-20WERA0_WD-WMAYP0K44EZK ONLINE 0 0 0
errors: No known data errors
errors: No known data errors
になったことを確認してから続けます。
デバイスIDの確認
/dev/sdX
形式は安定性の面から使用できないので、永続デバイスIDを確認してそちらを使用します。
# ls -l /dev/disk/by-id/
total 0
lrwxrwxrwx 1 root root 9 Sep 7 17:50 ata-ST1000DM003-9YN162_S1D29M42 -> ../../sdf
lrwxrwxrwx 1 root root 9 Sep 7 17:50 ata-ST1000DM003-9YN162_Z1D3DLM7 -> ../../sde
lrwxrwxrwx 1 root root 9 Sep 7 17:50 ata-ST2000DM001-1ER164_Z4Z4EGLQ -> ../../sdc
lrwxrwxrwx 1 root root 10 Sep 7 17:50 ata-ST2000DM001-1ER164_Z4Z4EGLQ-part1 -> ../../sdc1
lrwxrwxrwx 1 root root 9 Sep 7 17:50 ata-WDC_WD5000AAKX-22ERMA0_WD-WCC2ESJ60022 -> ../../sdb
lrwxrwxrwx 1 root root 10 Sep 7 17:50 ata-WDC_WD5000AAKX-22ERMA0_WD-WCC2ESJ60022-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 Sep 7 17:50 ata-WDC_WD5000AAKX-22ERMA0_WD-WCC2ESJ60022-part9 -> ../../sdb9
lrwxrwxrwx 1 root root 9 Sep 7 17:50 ata-WDC_WD5003ABYX-20WERA0_WD-WMAYP0K20RMR -> ../../sda
lrwxrwxrwx 1 root root 10 Sep 7 17:50 ata-WDC_WD5003ABYX-20WERA0_WD-WMAYP0K20RMR-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 Sep 7 17:50 ata-WDC_WD5003ABYX-20WERA0_WD-WMAYP0K20RMR-part9 -> ../../sda9
lrwxrwxrwx 1 root root 9 Sep 7 17:50 ata-WDC_WD5003ABYX-20WERA0_WD-WMAYP0K44EZK -> ../../sdd
lrwxrwxrwx 1 root root 10 Sep 7 17:50 ata-WDC_WD5003ABYX-20WERA0_WD-WMAYP0K44EZK-part1 -> ../../sdd1
lrwxrwxrwx 1 root root 10 Sep 7 17:50 ata-WDC_WD5003ABYX-20WERA0_WD-WMAYP0K44EZK-part9 -> ../../sdd9
lrwxrwxrwx 1 root root 10 Sep 7 17:50 dm-name-pve-root -> ../../dm-1
lrwxrwxrwx 1 root root 10 Sep 7 17:50 dm-name-pve-swap -> ../../dm-0
lrwxrwxrwx 1 root root 10 Sep 7 17:50 dm-name-pve-vm--117--disk--0 -> ../../dm-8
lrwxrwxrwx 1 root root 10 Sep 7 17:50 dm-name-pve-vm--117--disk--1 -> ../../dm-9
lrwxrwxrwx 1 root root 11 Sep 7 17:52 dm-name-pve-vm--118--disk--0 -> ../../dm-10
lrwxrwxrwx 1 root root 10 Sep 7 17:50 dm-name-pve-vm--130--disk--0 -> ../../dm-6
lrwxrwxrwx 1 root root 10 Sep 7 17:50 dm-name-pve-vm--130--disk--1 -> ../../dm-7
lrwxrwxrwx 1 root root 10 Sep 7 17:50 dm-uuid-LVM-e1vSrFNNBNHnegY152A64XODxZQGIjUg81luyc3A0jtjReXZ1O26XeG6jFLf33bR -> ../../dm-0
lrwxrwxrwx 1 root root 10 Sep 7 17:50 dm-uuid-LVM-e1vSrFNNBNHnegY152A64XODxZQGIjUgGtHIF2BcO30zUsc1TIqqh85bIHX6NQKl -> ../../dm-9
lrwxrwxrwx 1 root root 10 Sep 7 17:50 dm-uuid-LVM-e1vSrFNNBNHnegY152A64XODxZQGIjUgmr45bCjZ1upYF9SIjXJoGhNr7y5ASfMH -> ../../dm-6
lrwxrwxrwx 1 root root 10 Sep 7 17:50 dm-uuid-LVM-e1vSrFNNBNHnegY152A64XODxZQGIjUgtaGXMvtKuXtebBucmqexKCrkPnlo3So9 -> ../../dm-7
lrwxrwxrwx 1 root root 10 Sep 7 17:50 dm-uuid-LVM-e1vSrFNNBNHnegY152A64XODxZQGIjUgX25aBpSpQWhkZXB2cg7Xz01jgbX1pS1F -> ../../dm-1
lrwxrwxrwx 1 root root 11 Sep 7 17:52 dm-uuid-LVM-e1vSrFNNBNHnegY152A64XODxZQGIjUgXrKMYhkkS3nsHDIFWuVNXKUzcL5Y4HM2 -> ../../dm-10
lrwxrwxrwx 1 root root 10 Sep 7 17:50 dm-uuid-LVM-e1vSrFNNBNHnegY152A64XODxZQGIjUgYZ41BCd9IPGbpI3WC3M4qjEHGOtBD6w2 -> ../../dm-8
lrwxrwxrwx 1 root root 15 Sep 7 17:50 lvm-pv-uuid-TTt00W-ojF7-NMe4-qeS6-B5ta-5OPf-Ovk1Jd -> ../../nvme0n1p3
lrwxrwxrwx 1 root root 13 Sep 7 17:50 nvme-eui.002303563002e4db -> ../../nvme0n1
lrwxrwxrwx 1 root root 15 Sep 7 17:50 nvme-eui.002303563002e4db-part1 -> ../../nvme0n1p1
lrwxrwxrwx 1 root root 15 Sep 7 17:50 nvme-eui.002303563002e4db-part2 -> ../../nvme0n1p2
lrwxrwxrwx 1 root root 15 Sep 7 17:50 nvme-eui.002303563002e4db-part3 -> ../../nvme0n1p3
lrwxrwxrwx 1 root root 13 Sep 7 17:50 nvme-PLEXTOR_PX-256M9PeY_P02818104352 -> ../../nvme0n1
lrwxrwxrwx 1 root root 13 Sep 7 17:50 nvme-PLEXTOR_PX-256M9PeY_P02818104352_1 -> ../../nvme0n1
lrwxrwxrwx 1 root root 15 Sep 7 17:50 nvme-PLEXTOR_PX-256M9PeY_P02818104352_1-part1 -> ../../nvme0n1p1
lrwxrwxrwx 1 root root 15 Sep 7 17:50 nvme-PLEXTOR_PX-256M9PeY_P02818104352_1-part2 -> ../../nvme0n1p2
lrwxrwxrwx 1 root root 15 Sep 7 17:50 nvme-PLEXTOR_PX-256M9PeY_P02818104352_1-part3 -> ../../nvme0n1p3
lrwxrwxrwx 1 root root 15 Sep 7 17:50 nvme-PLEXTOR_PX-256M9PeY_P02818104352-part1 -> ../../nvme0n1p1
lrwxrwxrwx 1 root root 15 Sep 7 17:50 nvme-PLEXTOR_PX-256M9PeY_P02818104352-part2 -> ../../nvme0n1p2
lrwxrwxrwx 1 root root 15 Sep 7 17:50 nvme-PLEXTOR_PX-256M9PeY_P02818104352-part3 -> ../../nvme0n1p3
lrwxrwxrwx 1 root root 9 Sep 7 17:50 wwn-0x5000c5004b7a24a7 -> ../../sdf
lrwxrwxrwx 1 root root 9 Sep 7 17:50 wwn-0x5000c5004fadfafc -> ../../sde
lrwxrwxrwx 1 root root 9 Sep 7 17:50 wwn-0x5000c50087a53c92 -> ../../sdc
lrwxrwxrwx 1 root root 10 Sep 7 17:50 wwn-0x5000c50087a53c92-part1 -> ../../sdc1
lrwxrwxrwx 1 root root 9 Sep 7 17:50 wwn-0x50014ee00434fdba -> ../../sda
lrwxrwxrwx 1 root root 10 Sep 7 17:50 wwn-0x50014ee00434fdba-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 Sep 7 17:50 wwn-0x50014ee00434fdba-part9 -> ../../sda9
lrwxrwxrwx 1 root root 9 Sep 7 17:50 wwn-0x50014ee0598a18e4 -> ../../sdd
lrwxrwxrwx 1 root root 10 Sep 7 17:50 wwn-0x50014ee0598a18e4-part1 -> ../../sdd1
lrwxrwxrwx 1 root root 10 Sep 7 17:50 wwn-0x50014ee0598a18e4-part9 -> ../../sdd9
lrwxrwxrwx 1 root root 9 Sep 7 17:50 wwn-0x50014ee2b3fc6822 -> ../../sdb
lrwxrwxrwx 1 root root 10 Sep 7 17:50 wwn-0x50014ee2b3fc6822-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 Sep 7 17:50 wwn-0x50014ee2b3fc6822-part9 -> ../../sdb9
いろいろと出てきますが、今回追加したHDDは
ata-ST1000DM003-9YN162_S1D29M42
ata-ST1000DM003-9YN162_Z1D3DLM7
の2台です。
確認したデバイスIDを控えておきます。
できればディスクをサーバーに追加する前にこのコマンドを実行して、比較することでわかりやすくしたほうが良いかもしれません。
なお私はおバカさんすぎてプールが500GBディスクだったのを忘れて1TBを2台買ってしまいました。
リシルバを使って500GBディスクを1TBに置き換える予定なのでご心配なく。
プール容量は一番容量が少ないものに引っ張られますので皆様ご注意ください。
vdev名の確認
ディスク追加に使用するzpool attach
コマンドは、プール名とvdev名を使用します。
先ほどのzpool status
で表示されていたraidz1-0
がvdev名です。
くれぐれも間違えないよう注意してください。
拡張実行
ここからは注意してコマンドを実行してください。
念のためtmux内で作業しています。
書式はこんな感じです。
zpool attach <プール名> <vdev名> <永続デバイスID>
# zpool attach PBS raidz1-0 /dev/disk/by-id/ata-ST1000DM003-9YN162_S1D29M42
リフローの確認
zpool attach
がエラーなく終了したら、zpool status
で状況を確認します。
root@pve2:~# zpool status PBS
pool: PBS
state: ONLINE
scan: scrub repaired 0B in 01:18:13 with 0 errors on Sun Aug 10 01:42:14 2025
expand: expansion of raidz1-0 in progress since Sun Sep 7 18:10:59 2025
7.90G / 1.29T copied at 145M/s, 0.60% done, 02:35:10 to go
config:
NAME STATE READ WRITE CKSUM
PBS ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
ata-WDC_WD5003ABYX-20WERA0_WD-WMAYP0K20RMR ONLINE 0 0 0
ata-WDC_WD5000AAKX-22ERMA0_WD-WCC2ESJ60022 ONLINE 0 0 0
ata-WDC_WD5003ABYX-20WERA0_WD-WMAYP0K44EZK ONLINE 0 0 0
ata-ST1000DM003-9YN162_S1D29M42 ONLINE 0 0 0
errors: No known data errors
やはりHDDだとリフローにも時間がかかりますね。
今回は2台追加するので、リフローが終わるまで待機して同じようにzpool attach
します。
autoexpand
ディスクを追加した後容量を拡張するため、autoexpand
をONにします。
# zpool set autoexpand=on PBS
整合性の再チェック
最後にプールのデータ整合性を再度チェックします。
最初と同じようにzpool scrub
でエラーがなければ完了です。
容量確認
zpool list プール名
でプールの総容量(SIZE)と利用可能容量(FREE)が確認できるので、増えているか確かめましょう。
SIZEはパリティを考慮しないので、勘違いしてドカドカデータを突っ込まないようにしましょう。
attach前
# zpool list PBS
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
PBS 1.36T 1.29T 69.9G - - 41% 94% 1.00x ONLINE -
attach後
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
PBS 2.27T 1.29T 999G - - 17% 56% 1.00x ONLINE -
おわり
ようやくZFSプールへのディスク追加がサポートされました。
今までディスク追加ができないことで避けていた方もいるかと思いますが、これを機にmdadm
などから移行してみてはいかがでしょうか。
個人的にはバッテリー付きのRAIDカードを導入したいですが。