HDDがいっぱいになってきたので容量の大きい別のHDDに移した。
zfsなのでmirrorをしつつ入れ替えができる。
その時のメモ。
端的に言えばディスク交換後zpool online -eをすればよい。
以下、経緯。
ディスク追加
2.5TのHDD, ada1上に作られたzpool、vaultがあり、残容量は150Gである。
もともとzfsは残容量が少なくなると格段にパフォーマンスが落ちると言われていて、これはちょっと危険な状態である。
ada1 at ahcich1 bus 0 scbus1 target 0 lun 0 ada1: <WDC WD25EZRX-00MMMB0 80.00A80> ATA8-ACS SATA 3.x device ada1: Serial Number WD-WMAWZ0230443 ada1: 300.000MB/s transfers (SATA 2.x, UDMA6, PIO 8192bytes) ada1: Command Queueing enabled ada1: 2384658MB (4883781168 512 byte sectors) ada1: quirks=0x1<4K> # zpool status pool: vault state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM vault ONLINE 0 0 0 gpt/disk_01 ONLINE 0 0 0 # zfs list NAME USED AVAIL REFER MOUNTPOINT vault 2.05T 150G 88K /vault vault/chamber 1017G 150G 1017G /chamber vault/itunes 1.06T 150G 1.05T /itunes
そこで、zpoolにmirrorとして容量の大きいディスクを追加し、その後オリジナルのディスクを外す、という手順。
追加するのは以下のディスク。3T。
2.5Tから3Tじゃ焼け石に水ですがね…。
ada2 at ahcich2 bus 0 scbus2 target 0 lun 0 ada2: <WDC WD30EZRX-00D8PB0 80.00A80> ACS-2 ATA SATA 3.x device ada2: Serial Number WD-WMC4N0765033 ada2: 300.000MB/s transfers (SATA 2.x, UDMA6, PIO 8192bytes) ada2: Command Queueing enabled ada2: 2861588MB (5860533168 512 byte sectors) ada2: quirks=0x1<4K>
既存のzpoolにmirrorとしてディスクを追加するには、zpool attachを使う。
zpool attachに続けてzpool名、既存ディスク、追加ディスクの順で指定。
以下の例では、ディスクの指定をada2などのデバイス名ではなくGPT名で行っている。
# zpool attach vault gpt/disk_01 gpt/disk_02
以下のようにzpoolがmirror構成になり、resilveringが始まる。
# zpool status pool: vault status: One or more devices is currently being resilvered. The pool will continue to function, possibly in a degraded state. action: Wait for the resilver to complete. scrub: resilver in progress for 0h0m, 0.01% done, 7h1m to go config: NAME STATE READ WRITE CKSUM vault ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 gpt/disk_01 ONLINE 0 0 0 gpt/disk_02 ONLINE 0 0 0
しばらく待つと;
pool: vault state: ONLINE scan: resilvered 2.04T in 6h48m with 0 errors on Sun Dec 16 19:15:11 2018 config: NAME STATE READ WRITE CKSUM vault ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 gpt/disk_01 ONLINE 0 0 0 gpt/disk_02 ONLINE 0 0 0
resilvering終了。
旧ディスクの除去
2.5Tと3Tのディスクでmirrorを構成しているので、当然ながら残容量に変化はない。
NAME USED AVAIL REFER MOUNTPOINT vault 2.05T 150G 88K /vault vault/chamber 1017G 150G 1017G /chamber vault/itunes 1.06T 150G 1.05T /itunes
では旧ディスクを外す。
mirrorからディスクを外すにはdetachを使う。
zpool detachに続けてzpool名、ディスク名を指定。
# zpool detach vault gpt/disk_01 # zpool status pool: vault state: ONLINE scan: resilvered 2.04T in 6h48m with 0 errors on Sun Dec 16 19:15:11 2018 config: NAME STATE READ WRITE CKSUM vault ONLINE 0 0 0 gpt/disk_02 ONLINE 0 0 0 errors: No known data errors
ご覧の通りmirror構成が解除される。
容量の拡張
さてこの状態ではまだ残容量が増えない。
NAME USED AVAIL REFER MOUNTPOINT vault 2.05T 150G 88K /vault vault/chamber 1017G 150G 1017G /chamber vault/itunes 1.06T 150G 1.05T /itunes
ただ物理ディスクは3Tなので、zpoolに「安心して容量を増やしたまえ」と通知する。
通知にはzpool online -eを使う。
zpool onlineは物理ディスクを有効にするコマンドだが、-eを付ければ、使用可能な領域をすべて使うようにできる。
manを以下に引用する。
zpool online [-e] pool device ... Brings the specified physical device online. This command is not applicable to spares or cache devices. -e Expand the device to use all available space. If the device is part of a mirror or raidz then all devices must be expanded before the new space will become available to the pool.
ご覧の通り残容量が増えた。
たったの450Gだけど。
# zpool online -e vault gpt/disk_02 $ zfs list NAME USED AVAIL REFER MOUNTPOINT vault 2.05T 599G 88K /vault vault/chamber 1017G 599G 1017G /chamber vault/itunes 1.06T 599G 1.05T /itunesNo tags for this post.