[zfs]ディスク交換、zpool容量の拡張

Pocket

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  /itunes

No tags for this post.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください