0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Proxmox上のZFS RAIDZ-1アレイにオンラインでディスクを追加して拡張する

Last updated at Posted at 2025-09-07

こっちもあるよ

はじめに

Proxmox 9.0からZFS RAIDZプールにディスクを追加して拡張できるようになりました。

image.png

そこで、バックアップ用の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カードを導入したいですが。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?