hack のためのネタ帳, etc,,,

状況

zpool は縮小できないって認識だったんだけど、ふと「zfs pool shrink」でググってみたところ以下のページを見つけた。

曰く、新しい小さな vdev を add して stripe を拡張した後、古い大きな vdev を remove すれば stripe が縮小出来るよと。
え?マジですか!?
と思い、Ubuntu 16.04.7 LTS で試してみた所
$ sudo zpool remove shrinktest mirror-0
cannot remove mirror-0: only inactive hot spares, cache, top-level, or log devices can be removed
みたいに言われて失敗。
やっぱ出来んじゃん!
と思いつつ、上記の例示では出来てるのでバージョンの問題か?と思い、Ubuntu 20.04.3 LTS で試してみた所、出来るじゃないですか!!!
しかも、例示では mirror 組んでるけど mirror なしで生の vdev でも出来る。

もしや、attach する vdev も小さいの与えると自動的に pool を縮小してくれるのでは?と期待したがこちらは
$ sudo zpool attach shrinktest /tmp/zpool/a_2g /tmp/zpool/a_1g
cannot attach /tmp/zpool/a_1g to /tmp/zpool/a_2g: device is too small
みたいに言われてしまった。

とりあえず stripe 間で全データ移動するので send, recv で clone するのと時間的には変わらん気がするけど、オンラインで移動出来るのはメリットだろう。

それぞれの環境で ZFS のバージョンはこんな感じだった。
$ # Ubuntu 16.04.7 LTS
$ dpkg -l|grep zfsutils
ii  zfsutils-linux   0.6.5.6-0ubuntu29   amd64   Native OpenZFS management utilities for Linux
$ # Ubuntu 20.04.3 LTS
$ dpkg -l | grep zfsutils
ii  zfsutils-linux   0.8.3-1ubuntu12.12   amd64   command-line tools to manage OpenZFS filesystems

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

フリーエリア

管理人/副管理人のみ編集できます