ZFS. Расширение раздела ZFS: различия между версиями
Cless (обсуждение | вклад) |
Cless (обсуждение | вклад) |
||
| (не показана 1 промежуточная версия этого же участника) | |||
| Строка 61: | Строка 61: | ||
Готово! | Готово! | ||
= Вариант 2. Расширение ZFS раздела на | = Вариант 2. Расширение ZFS раздела на шифрованном разделе GELI путем увеличения объема диска (в данном примере через расширение хард-рейда) = | ||
== Ссылки == | == Ссылки == | ||
| Строка 101: | Строка 101: | ||
provsize: '''24000210141184''' | provsize: '''24000210141184''' | ||
... | ... | ||
Расширяем шифрованный раздел<blockquote>'''-s 24000210141184''' - старый объем диска "'''provsize: 24000210141184'''" до расширения, который мы посмотрели в файле метаданных</blockquote><code>geli resize -v -s 24000210141184 /dev/da4</code> | |||
... | ... | ||
Done. | Done. | ||
Текущая версия на 14:06, 5 января 2025
Вариант 1. Расширение ZFS раздела путем увеличения объема диска (например на виртуальной машине)
Изначально имеем диск 16G
gpart show
... => 40 67108791 da5 GPT (16G) 40 2008 - free - (1.0M) 2048 67106783 1 freebsd-zfs (16G) ...
zpool list -v d101
... NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT d101 15.5G 544K 15.5G - - 0% 0% 1.00x ONLINE - da5p1 16.0G 544K 15.5G ...
Выключаем машину (обязательно, иначе будет CORRUPT партиция при просмотре через gpart)
Добавляем объема диску до 32G
Включаем машину
gpart show
... => 40 67108791 da5 GPT (32G) 40 2008 - free - (1.0M) 2048 33550336 1 freebsd-zfs (16G) 33552384 33556447 - free - (16G) ...
Расширяем диск до максимального объема
da5 - имя диска 1 - номер партиции
gpart resize -i 1 /dev/da5
ИЛИ расширяем до определенного размера:
-s size - Specifies the new size of the partition, in logical blocks. An SI unit suffix is allowed.
gpart resize -i 2 -s 19G da0
Если gpart show показывает статус раздела [CORRUPT]
gpart recover da5
Расширяем ФС
Можно включить автоматические расширение для пула, тогда не придется расширять руками: zpool set autoexpand=on zfspoolname
zpool online -e d101 da5p1
Смотрим
zpool list -v d101
... NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT d101 31.5G 808K 31.5G - - 0% 0% 1.00x ONLINE - da5p1 32.0G 808K 31.5G - - 0% 0.00% - ONLINE ...
gpart show
... => 40 67108791 da5 GPT (32G) 40 2008 - free - (1.0M) 2048 67106783 1 freebsd-zfs (32G) ...
df -h
... d101 32G 100K 32G 0% /mnt/d101 ...
Готово!
Вариант 2. Расширение ZFS раздела на шифрованном разделе GELI путем увеличения объема диска (в данном примере через расширение хард-рейда)
Ссылки
https://genneko.github.io/playing-with-bsd/storage/expanding-zfs-on-geli/
https://www.truenas.com/community/threads/geli-cannot-read-metadata-from-invalid-argument.93142/
Входные данные
- Имеем хардовый RAID5 (24ТБ) в контроллере HP dl380 G9, собранный из 3 дисков 12ТБ
- В nas4free он определяется как /dev/da4 объемом 24ГБ и пришифрован как /dev/da4.elip1
- На da4.elip1 собран ZFS stripe с использованием GPT - /dev/gpt/raid2
Задача
- Необходимо расширить хардовый RAID5 на +1 12ТБ диск (в итоге получим устройство объемом 36ТБ)
Процесс
!!! ОБЯЗАТЕЛЬНО ДЕЛАЕМ БЭКАП МЕТАДАННЫХ ШИФРОВАННОГО ДИСКА /dev/da4 В ФАЙЛ da4.eli
И СОХРАНЯЕМ ЭТОТ ФАЙЛ ЛОКАЛЬНО
geli backup /dev/da4 /root/da4.eli
Расширяем хард RAID5 через утилиту в BIOS сервера путем добавления одного диска 12ТБ в массив (расширение может длиться 1-2 дня)
Расширяем логический диск на расширенном массиве
Грузимся в nas4free
Копируем ранее сохраненный файл метаданных на nas4free в /root/
Смотрим размер старого диска - нас интересует "provsize: 24000210141184"
geli dump /root/da4.eli
... Metadata on /root/da4.eli: ... provsize: 24000210141184 ...
Расширяем шифрованный раздел
-s 24000210141184 - старый объем диска "provsize: 24000210141184" до расширения, который мы посмотрели в файле метаданных
geli resize -v -s 24000210141184 /dev/da4
... Done. ...
В веб-интерфейсе подключаем шифрованный диск da4 с новым объемом 36ТБ, используя пароль шифрования, с которым создавали старый диск до расширения
!!! НЕ ИСПОЛЬЗУЯ ГАЛКУ "INITIALIZE", ИНАЧЕ УБЪЕМ РАНЕЕ ШИФРОВАННЫЙ ДИСК
Аналог процедуры через консоль: geli attach /dev/da4
Импортируем ZFS POOL, который был ранее создан на шифрованном разделе
zpool import -a
Смотрим, ZFS раздел в порядке
zpool status
... pool: raid2 state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM raid2 ONLINE 0 0 0 gpt/raid2 ONLINE 0 0 0 ...
Но объем раздела старый, нерасширенный, так и должно быть
df -h
... raid2 20T 88K 20T 0% /mnt/raid2 raid2/bkup 21T 1.5T 20T 7% /mnt/raid2/bkup ...
Также видим статус CORRUPT
gpart show /dev/da4.eli
... => 40 46875410352 da4.eli GPT (33T) [CORRUPT] 40 8152 - free - (4.0M) 8192 46875394048 1 freebsd-zfs (22T) 46875402240 8152 - free - (4.0M) ...
Лечим раздел
gpart recover da4.eli
... da4.eli recovered ...
Смотрим
gpart show /dev/da4.eli
... => 40 70313115568 da4.eli GPT (33T) 40 8152 - free - (4.0M) 8192 46875394048 1 freebsd-zfs (22T) 46875402240 23437713368 - free - (11T) ...
Расширяем партицию до максимального размера
gpart resize -i 1 /dev/da4.eli
... da4.elip1 resized ...
Смотрим
gpart show /dev/da4.eli
... => 40 70313115568 da4.eli GPT (33T) 40 8152 - free - (4.0M) 8192 70313107416 1 freebsd-zfs (33T) ...
Расширяем ZFS-pool raid2
raid2 - пул ZFS /dev/gpt/raid2 - единственный диск, который входит в пул
zpool online -e raid2 /dev/gpt/raid2
Смотрим
zpool list
... raid3 32.5T 28.9T 3.59T - 42% 88% 1.00x ONLINE - ...
df -h
... raid2 30T 88K 30T 0% /mnt/raid2 raid2/bkup 32T 1.5T 30T 5% /mnt/raid2/bkup ...
Готово! Раздел расширен.