ZFS. Расширить дисковое пространство пула: различия между версиями
Cless (обсуждение | вклад) (Новая страница: «Добавим виртуальное устройство VDEV (MIRROR, RAIDZ1, RAIDZ2) в уже созданный пул RAIDZ1<blockquote>РАСШИРИТЬ...») |
Cless (обсуждение | вклад) |
||
| (не показаны 3 промежуточные версии этого же участника) | |||
| Строка 1: | Строка 1: | ||
= Описание = | |||
'''Нельзя:''' | |||
* Расширить пул, добавив отдельный диск в уже созданное виртуальное устройство (например, в '''mirror''' или в '''raidz1'''). | |||
'''Можно:''' | |||
* Добавить в текущий пул аналогичное виртуальное устройство тому, которое уже работает в пуле. Например, если оригинальный пул собран на основе '''mirror''', то и добавить в него можно только '''vdev''' '''mirror''' из дисков аналогичного объема. | |||
* Заменить все диски на новые диски большего объема. | |||
= Вариант 1. Добавление виртуального устройства VDEV (MIRROR, RAIDZ1, RAIDZ2) в уже созданный пул RAIDZ1 = | |||
=== Входные данные === | |||
Имеется пул pool01 на основе виртуального устройства типа raidz1 | |||
config: | <code>zpool status</code> | ||
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 | |||
=== Задача === | |||
Необходимо расширить дисковое пространство. | |||
Добавим виртуальное устройство VDEV (MIRROR, RAIDZ1, RAIDZ2) в уже созданный пул RAIDZ1 | |||
=== Решение === | |||
Отформатируем новые диски аналогичного объема с gpt метками | |||
<code>gpart create -s gpt ada3</code> | |||
<code>gpart create -s gpt ada4</code> | |||
<code>gpart create -s gpt ada5</code> | |||
gpart | <code>gpart add -t freebsd-zfs -l d4 ada3</code> | ||
gpart | <code>gpart add -t freebsd-zfs -l d5 ada4</code> | ||
gpart | <code>gpart add -t freebsd-zfs -l d6 ada5</code> | ||
При ошибке "gpart: geom 'ada0': File exists" делаем: | |||
/ | <code>gpart delete -i 1 ada3</code> | ||
gpart | <code>gpart destroy ada3</code> | ||
=== Соберем такое же vdev (raidz1 из 3-х дисков), как и в существующем в пуле устройстве, и добавим его в пул === | |||
<blockquote>!!! ВНИМАНИЕ !!! | |||
Как только новое '''vdev''' будет добавлено к существующему пулу и объем пула будет увеличен, не будет способа удалить этот или оригинальный '''vdev''' из пула. | |||
Теперь новый '''vdev''' - часть пула, и далее объем пула можно только увеличить новым '''vdev'''! | |||
Единственный способ уменьшить объем текущего пула - это сделать резервную копию данных пула, уничтожить текущий пул и собрать новый!</blockquote><code>zpool add pool01 raidz /dev/gpt/d4 /dev/gpt/d5 /dev/gpt/d6</code> | |||
Объем пула увеличен в 2 раза | |||
// | <code>zpool status</code> | ||
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 | |||
<code>df -h</code> | |||
Filesystem Size Used Avail Capacity Mounted on | |||
... | |||
pool01 3.5G 144K 3.5G 0% /mnt/pool01 | |||
... | |||
= Вариант 2. Замена всех дисков в пуле на более объемные = | |||
=== Входные данные === | |||
Пул RAIDZ1 '''raid1''' из 3-х дисков по 2ГБ объемом 3.5ГБ | |||
// | <code>zpool status raid1</code> | ||
... | |||
pool: raid1 | |||
state: ONLINE | |||
config: | |||
NAME STATE READ WRITE CKSUM | |||
raid1 ONLINE 0 0 0 | |||
raidz1-0 ONLINE 0 0 0 | |||
da1p1 ONLINE 0 0 0 | |||
da2p1 ONLINE 0 0 0 | |||
da3p1 ONLINE 0 0 0 | |||
... | |||
<code>zfs list</code> | |||
... | |||
NAME USED AVAIL REFER MOUNTPOINT | |||
raid1 68.4M 3.47G 128K /mnt/raid1 | |||
raid1/dataset1 67.7M 3.47G 67.7M /mnt/raid1/dataset1 | |||
... | |||
=== Задача === | |||
Расширить объем пула, используя замену всех дисков 2ГБ на новые диски 4ГБ | |||
=== Решение === | |||
Вставим диски в сервер. | |||
Отформатируем новые диски аналогичного объема с gpt метками (также это действие можно произвести через веб-интерфейс (форматирование с GPT-метками), если используется '''Xigmanas''') | |||
<code>gpart create -s gpt ada3</code> | |||
/ | <code>gpart create -s gpt ada4</code> | ||
<code>gpart create -s gpt ada5</code> | |||
<code>gpart add -t freebsd-zfs -l d4 ada3</code> | |||
<code>gpart add -t freebsd-zfs -l d5 ada4</code> | |||
<code>gpart add -t freebsd-zfs -l d6 ada5</code> | |||
При ошибке "gpart: geom 'ada0': File exists" делаем: | |||
<code>gpart delete -i 1 ada3</code> | |||
<code>gpart destroy ada3</code> | |||
Заменим каждый диск 2ГБ на новый диск 4ГБ | |||
<code>zpool replace raid1 da1p1 /dev/gpt/d4</code> | |||
<code>zpool replace raid1 da2p1 /dev/gpt/d5</code> | |||
<code>zpool replace raid1 da3p1 /dev/gpt/d6</code> | |||
Выключим/включим опцию авторасширения для пула | |||
<code>zpool set autoexpand=off raid1</code> | |||
<code>zpool set autoexpand=on raid1</code> | |||
gpt/d5 ONLINE 0 0 0 | Смотрим | ||
... | |||
gpt/d6 ONLINE 0 0 0 | zpool status | ||
pool: raid1 | |||
... | state: ONLINE | ||
scan: resilvered 34.8M in 00:00:00 with 0 errors on Tue Oct 24 20:09:54 2023 | |||
config: | |||
NAME STATE READ WRITE CKSUM | |||
raid1 ONLINE 0 0 0 | |||
raidz1-0 ONLINE 0 0 0 | |||
gpt/d4 ONLINE 0 0 0 | |||
gpt/d5 ONLINE 0 0 0 | |||
gpt/d6 ONLINE 0 0 0 | |||
... | |||
Введем команду расширения для каждого диска | |||
<code>zpool online -e raid1 gpt/d4</code> | |||
<code>zpool online -e raid1 gpt/d5</code> | |||
<code>zpool online -e raid1 gpt/d6</code> | |||
Смотрим результат | |||
<code>zfs list raid1</code> | |||
... | |||
NAME USED AVAIL REFER MOUNTPOINT | |||
raid1 68.4M 7.35G 128K /mnt/raid1 | |||
... | |||
<code>df -h</code> | |||
... | |||
raid1 7.4G 128K 7.4G 0% /mnt/raid1 | |||
raid1/dataset1 7.4G 68M 7.4G 1% /mnt/raid1/dataset1 | |||
... | |||
Нетрудно видеть, что объем пула увеличился с 3.5ГБ до 7.5ГБ. | |||
. | Все файлы и директории остались на месте. | ||
[[Категория:ZFS]] | |||
__ОБЯЗАТЕЛЬНОЕ_ОГЛАВЛЕНИЕ__ | |||
[[Категория:FreeBSD]] | |||
Текущая версия на 23:40, 24 октября 2023
Описание
Нельзя:
- Расширить пул, добавив отдельный диск в уже созданное виртуальное устройство (например, в mirror или в raidz1).
Можно:
- Добавить в текущий пул аналогичное виртуальное устройство тому, которое уже работает в пуле. Например, если оригинальный пул собран на основе mirror, то и добавить в него можно только vdev mirror из дисков аналогичного объема.
- Заменить все диски на новые диски большего объема.
Вариант 1. Добавление виртуального устройства VDEV (MIRROR, RAIDZ1, RAIDZ2) в уже созданный пул RAIDZ1
Входные данные
Имеется пул 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
Задача
Необходимо расширить дисковое пространство.
Добавим виртуальное устройство VDEV (MIRROR, RAIDZ1, RAIDZ2) в уже созданный пул RAIDZ1
Решение
Отформатируем новые диски аналогичного объема с 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 ...
Вариант 2. Замена всех дисков в пуле на более объемные
Входные данные
Пул RAIDZ1 raid1 из 3-х дисков по 2ГБ объемом 3.5ГБ
zpool status raid1
... pool: raid1 state: ONLINE config: NAME STATE READ WRITE CKSUM raid1 ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 da1p1 ONLINE 0 0 0 da2p1 ONLINE 0 0 0 da3p1 ONLINE 0 0 0 ...
zfs list
... NAME USED AVAIL REFER MOUNTPOINT raid1 68.4M 3.47G 128K /mnt/raid1 raid1/dataset1 67.7M 3.47G 67.7M /mnt/raid1/dataset1 ...
Задача
Расширить объем пула, используя замену всех дисков 2ГБ на новые диски 4ГБ
Решение
Вставим диски в сервер.
Отформатируем новые диски аналогичного объема с gpt метками (также это действие можно произвести через веб-интерфейс (форматирование с GPT-метками), если используется Xigmanas)
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
Заменим каждый диск 2ГБ на новый диск 4ГБ
zpool replace raid1 da1p1 /dev/gpt/d4
zpool replace raid1 da2p1 /dev/gpt/d5
zpool replace raid1 da3p1 /dev/gpt/d6
Выключим/включим опцию авторасширения для пула
zpool set autoexpand=off raid1
zpool set autoexpand=on raid1
Смотрим
... zpool status pool: raid1 state: ONLINE scan: resilvered 34.8M in 00:00:00 with 0 errors on Tue Oct 24 20:09:54 2023 config: NAME STATE READ WRITE CKSUM raid1 ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 gpt/d4 ONLINE 0 0 0 gpt/d5 ONLINE 0 0 0 gpt/d6 ONLINE 0 0 0 ...
Введем команду расширения для каждого диска
zpool online -e raid1 gpt/d4
zpool online -e raid1 gpt/d5
zpool online -e raid1 gpt/d6
Смотрим результат
zfs list raid1
... NAME USED AVAIL REFER MOUNTPOINT raid1 68.4M 7.35G 128K /mnt/raid1 ...
df -h
... raid1 7.4G 128K 7.4G 0% /mnt/raid1 raid1/dataset1 7.4G 68M 7.4G 1% /mnt/raid1/dataset1 ...
Нетрудно видеть, что объем пула увеличился с 3.5ГБ до 7.5ГБ.
Все файлы и директории остались на месте.