ZFS. Расширение раздела ZFS: различия между версиями
Cless (обсуждение | вклад) (Новая страница: «= Расширение ZFS раздела путем увеличения объема диска (например на виртуальной машине) = И...») |
Cless (обсуждение | вклад) |
||
| (не показаны 3 промежуточные версии этого же участника) | |||
| Строка 1: | Строка 1: | ||
= Расширение ZFS раздела путем увеличения объема диска (например на виртуальной машине) = | = Вариант 1. Расширение ZFS раздела путем увеличения объема диска (например на виртуальной машине) = | ||
Изначально имеем диск 16G | Изначально имеем диск 16G | ||
| Строка 60: | Строка 60: | ||
... | ... | ||
Готово! | Готово! | ||
= Вариант 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''' | |||
И СОХРАНЯЕМ ЭТОТ ФАЙЛ ЛОКАЛЬНО | |||
<code>geli backup /dev/da4 /root/da4.eli</code> | |||
Расширяем хард RAID5 через утилиту в BIOS сервера путем добавления одного диска 12ТБ в массив (расширение может длиться 1-2 дня) | |||
Расширяем логический диск на расширенном массиве | |||
Грузимся в nas4free | |||
Копируем ранее сохраненный файл метаданных на '''nas4free''' в <code>/root/</code> | |||
Смотрим размер старого диска - нас интересует "'''provsize: 24000210141184'''" | |||
<code>geli dump /root/da4.eli</code> | |||
... | |||
Metadata on /root/da4.eli: | |||
... | |||
provsize: '''24000210141184''' | |||
... | |||
Расширяем шифрованный раздел<blockquote>'''-s 24000210141184''' - старый объем диска "'''provsize: 24000210141184'''" до расширения, который мы посмотрели в файле метаданных</blockquote><code>geli resize -v -s 24000210141184 /dev/da4</code> | |||
... | |||
Done. | |||
... | |||
В веб-интерфейсе подключаем шифрованный диск da4 с новым объемом 36ТБ, используя пароль шифрования, с которым создавали старый диск до расширения | |||
!!! НЕ ИСПОЛЬЗУЯ ГАЛКУ "INITIALIZE", ИНАЧЕ УБЪЕМ РАНЕЕ ШИФРОВАННЫЙ ДИСК<blockquote>Аналог процедуры через консоль: | |||
'''geli attach /dev/da4'''</blockquote>Импортируем ZFS POOL, который был ранее создан на шифрованном разделе | |||
<code>zpool import -a</code> | |||
Смотрим, ZFS раздел в порядке | |||
<code>zpool status</code> | |||
... | |||
pool: raid2 | |||
state: ONLINE | |||
scan: none requested | |||
config: | |||
NAME STATE READ WRITE CKSUM | |||
raid2 ONLINE 0 0 0 | |||
gpt/raid2 ONLINE 0 0 0 | |||
... | |||
Но объем раздела старый, нерасширенный, так и должно быть | |||
<code>df -h</code> | |||
... | |||
raid2 20T 88K 20T 0% /mnt/raid2 | |||
raid2/bkup 21T 1.5T 20T 7% /mnt/raid2/bkup | |||
... | |||
Также видим статус CORRUPT | |||
<code>gpart show /dev/da4.eli</code> | |||
... | |||
=> 40 46875410352 da4.eli GPT (33T) [CORRUPT] | |||
40 8152 - free - (4.0M) | |||
8192 46875394048 1 freebsd-zfs (22T) | |||
46875402240 8152 - free - (4.0M) | |||
... | |||
Лечим раздел | |||
<code>gpart recover da4.eli</code> | |||
... | |||
da4.eli recovered | |||
... | |||
Смотрим | |||
<code>gpart show /dev/da4.eli</code> | |||
... | |||
=> 40 70313115568 da4.eli GPT (33T) | |||
40 8152 - free - (4.0M) | |||
8192 46875394048 1 freebsd-zfs (22T) | |||
46875402240 23437713368 - free - (11T) | |||
... | |||
Расширяем партицию до максимального размера | |||
<code>gpart resize -i 1 /dev/da4.eli</code> | |||
... | |||
da4.elip1 resized | |||
... | |||
Смотрим | |||
<code>gpart show /dev/da4.eli</code> | |||
... | |||
=> 40 70313115568 da4.eli GPT (33T) | |||
40 8152 - free - (4.0M) | |||
8192 70313107416 1 freebsd-zfs (33T) | |||
... | |||
Расширяем ZFS-pool raid2<blockquote>'''raid2''' - пул ZFS | |||
'''/dev/gpt/raid2''' - единственный диск, который входит в пул</blockquote><code>zpool online -e raid2 /dev/gpt/raid2</code> | |||
Смотрим | |||
<code>zpool list</code> | |||
... | |||
raid3 32.5T 28.9T 3.59T - 42% 88% 1.00x ONLINE - | |||
... | |||
<code>df -h</code> | |||
... | |||
raid2 30T 88K 30T 0% /mnt/raid2 | |||
raid2/bkup 32T 1.5T 30T 5% /mnt/raid2/bkup | |||
... | |||
Готово! Раздел расширен. | |||
[[Категория:ZFS]] | |||
__ОБЯЗАТЕЛЬНОЕ_ОГЛАВЛЕНИЕ__ | |||
Текущая версия на 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 ...
Готово! Раздел расширен.