ZFS. Расширение раздела ZFS: различия между версиями

Материал из Wiki
Перейти к навигации Перейти к поиску
 
Строка 101: Строка 101:
      provsize: '''24000210141184'''
      provsize: '''24000210141184'''
    ...
    ...
Восстанавливаем файл метаданных на новый расширенный диск<blockquote>'''-s 24000210141184''' - старый объем диска "'''provsize: 24000210141184'''" до расширения, который мы посмотрели в файле метаданных</blockquote><code>geli resize -v -s 24000210141184 /dev/da4</code>
Расширяем шифрованный раздел<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
  ...

Готово! Раздел расширен.