ZFS. Расширить дисковое пространство пула
Задача
Добавим виртуальное устройство VDEV (MIRROR, RAIDZ1, RAIDZ2) в уже созданный пул RAIDZ1
Расширить пул, добавив отдельный диск в уже созданное виртуальное устройство (например, в mirror или в raidz1), нельзя!
Можно лишь добавить в текущий пул аналогичное виртуальное устройство тому, которое уже работает в пуле.
Например, если оригинальный пул собран на основе mirror, то и добавить в него можно только vdev mirror из дисков аналогичного объема
Имеется пул pool01 на основе виртуального устройства типа raidz1
zpool status
pool: pool01 state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM pool01 ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 gpt/d1 ONLINE 0 0 0 gpt/d2 ONLINE 0 0 0 gpt/d3 ONLINE 0 0 0
Необходимо расширить дисковое пространство
Отформатируем новые диски аналогичного объема с gpt метками
gpart create -s gpt ada3
gpart create -s gpt ada4
gpart create -s gpt ada5
gpart add -t freebsd-zfs -l d4 ada3
gpart add -t freebsd-zfs -l d5 ada4
gpart add -t freebsd-zfs -l d6 ada5
При ошибке "gpart: geom 'ada0': File exists" делаем:
gpart delete -i 1 ada3
gpart destroy ada3
Соберем такое же vdev (raidz1 из 3-х дисков), как и в существующем в пуле устройстве, и добавим его в пул
!!! ВНИМАНИЕ !!!
Как только новое vdev будет добавлено к существующему пулу и объем пула будет увеличен, не будет способа удалить этот или оригинальный vdev из пула.
Теперь новый vdev - часть пула, и далее объем пула можно только увеличить новым vdev!
Единственный способ уменьшить объем текущего пула - это сделать резервную копию данных пула, уничтожить текущий пул и собрать новый!
zpool add pool01 raidz /dev/gpt/d4 /dev/gpt/d5 /dev/gpt/d6
Объем пула увеличен в 2 раза
zpool status
pool: pool01 state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM pool01 ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 gpt/d1 ONLINE 0 0 0 gpt/d2 ONLINE 0 0 0 gpt/d3 ONLINE 0 0 0 raidz1-1 ONLINE 0 0 0 gpt/d4 ONLINE 0 0 0 gpt/d5 ONLINE 0 0 0 gpt/d6 ONLINE 0 0 0
df -h
Filesystem Size Used Avail Capacity Mounted on ... pool01 3.5G 144K 3.5G 0% /mnt/pool01 ...