воскресенье, 2 мая 2021 г.

Proxmox VE. Увеличение виртуального диска гостя FreeBSD (GPT+ZFS)

Ввиду длинных выходных (Христос Воскрес! & Мир-Труд-Май), появилась возможность остановить на время почтовый сервер (FreeBSD) и добавить ему немного дискового пространства.

В первую очередь убедился, что есть свежий бэкап виртуалки, после чего тушу машину.
Становлюсь на вкладку оборудование Виртуалки, жесткий диск

Кнопка изменить размер и указываем сколько гигабайт добавить

Добавить 10 Gb

Запускаем машину и подключаемся к ней по SSH

Смотрим ZFS pool

# zpool list
NAME    SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
zroot   208G   196G  12.0G        -         -    76%    94%  1.00x  ONLINE  -

Видим что добавления пространства не произошло
Идем смотреть нашу GPT разметку

# gpart list vtbd0
Geom name: vtbd0
modified: false
state: CORRUPT
fwheads: 16
fwsectors: 63
last: 440401879
first: 40
entries: 128
scheme: GPT
Providers:
1. Name: vtbd0p1
   Mediasize: 524288 (512K)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 20480
   Mode: r0w0e0
   ........
   type: freebsd-boot
   index: 1
   end: 1063
   start: 40
2. Name: vtbd0p2
   Mediasize: 225483685888 (210G)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 1048576
   Mode: r1w1e1
   ........
   type: freebsd-zfs
   index: 2
   end: 440399871
   start: 2048
Consumers:
1. Name: vtbd0
   Mediasize: 236223201280 (220G)
   Sectorsize: 512
   Mode: r1w1e2

Так как у меня 2 виртуальных диска я ограничил вывод только необходимым.
Нас интересует строка state и Mediasize, из которых мы делаем вывод, что изменение размера нарушило разметку и ее необходимо восстановить:

# gpart recover vtbd0
vtbd0 recovered

Если вместо recovered видим recovering is not needed, необходимо перегрузить виртуалку и повторить восстановление GPT

В итоге выполнив gpart list, видим:

# gpart list vtbd0
Geom name: vtbd0
modified: false
state: OK
...

А выполнив gpart show, видим появившееся свободное не размеченное пространство 10 Gb

# gpart show vtbd0
=>       40  461373360  vtbd0  GPT  (220G)
         40       1024      1  freebsd-boot  (512K)
       1064        984         - free -  (492K)
       2048  440397824      2  freebsd-zfs  (210G)
  440399872   20973528         - free -  (10G)

Теперь необходимо расширить на эти 10 GB нужный нам раздел - в нашем случае frebsd-zfs с индексом 2

# gpart resize -i 2 vtbd0
vtbd0p2 resized

Выполнив gpart show, видим, что необходимый раздел занял все свободное место:

# gpart show vtbd0
=>       40  461373360  vtbd0  GPT  (220G)
         40       1024      1  freebsd-boot  (512K)
       1064        984         - free -  (492K)
       2048  461371352      2  freebsd-zfs  (220G)

Теперь нам необходимо, чтоб это пространство увидела ZFS. Перегружаем ВМ и выполняем:

# zpool list
NAME    SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
zroot   208G   196G  12.0G        -       10G    76%    94%  1.00x  ONLINE  -

ZFS пространство для расширения видит, но не занимает, для того чтоб расширение произошло, выполняем:

# zpool set autoexpand=on zroot
# zpool online -e zroot vtbd0p2

После чего zpool list выдаст нам:

# zpool list
NAME    SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
zroot   218G   196G  22.0G        -         -    73%    89%  1.00x  ONLINE  -

Пул zroot увеличился не необходимые нам 10 Gb. Цель достигнута!

Комментариев нет:

Отправить комментарий