ZFS で複数のデバイスを replace するのなら一度に全て ― 2016年02月21日 13時25分13秒
ディスク容量の拡張などで、ディスクの交換をする。raidz では最低四台のディスクが必要になるし、mirror 等の構成でも二台からになる。特に raidz を用いている場合の容量は、最小のディスクサイズが元になるので、無駄なく使うにはディスクの大きさを揃えることになる。そして、拡張するには全てを交換することになる。
FreeBSD 10.2-RELEASE で実験してみたところ、zpool replace
は複数のディスクを同時に交換することが出来る。そして、replace の作業は scrub の作業を行いつつデータを新しいディスクに移す作業のようだ。複数の replace の要求があると、replace を同時に進める。結局やることは scrab とデータの書き出しなので、恐らく同時に進めるのが実装的に一番簡単なのだろう。逆に、同時に進めるために、二つめの replace の要求をすると、一つ目が停止し、最初から同時に再開となる。
四つのデバイスを使った構成で raidz を構築している。今回、容量の拡張で、二つのデバイスを同時に変更、そして、一時的なデータ領域の移動に一つをファイルに移している。
USB-2.0 が限界の HP Pavilion dv6426us で 2GB のメモリで動いている為、速度は遅い。32bit CPU なので、i386 カーネルの zfs。
# zpool status
pool: bkup
state: ONLINE
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.
scan: resilver in progress since Sat Feb 20 22:37:02 2016
9.00G scanned out of 692G at 13.3M/s, 14h38m to go
6.53G resilvered, 1.30% done
config:
NAME STATE READ WRITE CKSUM
bkup ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
replacing-0 ONLINE 0 0 0
gpt/zfs1 ONLINE 0 0 0
gpt/zfs5 ONLINE 0 0 0 (resilvering)
replacing-1 ONLINE 0 0 0
gpt/zfs2 ONLINE 0 0 0
gpt/zfs6 ONLINE 0 0 0 (resilvering)
gpt/zfs3 ONLINE 0 0 0
replacing-3 ONLINE 0 0 0
gpt/zfs4 ONLINE 0 0 0
/mnt/ufs/bkup.zfs ONLINE 0 0 0 (resilvering)
尚、replace の速度は、IO やバスの制限は掛かるものの、replace 自体の速度は何台同時に変えていても、大きな変化は無いようだ。一台の時と、三台のときでは一割り程度しか変わっていない。そして、scarb の時間は利用量に影響されるので、必要のないファイルは replace の前に消しておくと時間の節約になる。
コメント
トラックバック
このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2016/02/21/8024287/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。