image

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


От тестового стенда к ВМ на проде


Будем работать с реальной виртуальной машиной, на которую установлена операционная система Linux Mint.

image

В GParted мы видим таблицу MBR с загрузочным и логическим разделом (последний примонтирован как корневая файловая система), а также extended partition. Наша целевая ФС без LVM, поэтому мы можем расширить её утилитой growpart, предварительно увеличив объем диска sda.

growpart /dev/sda
echo 1 > /sys/block/sda/device/rescan
parted /dev/sde print free

image

Далее расширим extended-диск. Для этого сперва убедимся, что sda5 находится в пределах extended-раздела — сравним начало и конец. Выполняем команды:

growpart /dev/sda 2
growpart /dev/sda 5

Дальше расширяем файловую систему ext4:

resize2fs /dev/sda5

Мы расширили ФС и соответствующий раздел с 15,6 Гбайт до 16,6 Гбайт.

image

Теперь произведем аналогичную манипуляцию с подгрузкой LiveCD. Сперва перезагрузим виртуальную машину, к которой мы уже подключили iso-образ.

reboot -f

Пока она загружается, увеличим объем диска до 17 Гбайт в панели управления облаком.

image

После загрузки наш раздел (тот, который мы только что расширили) определился последним.

image

Заходим в консоль под рутом и обновляем информацию о разделах.

echo 1 > /sys/block/sde/device/rescan

Это нужно сделать только в том случае, если диск был расширен уже после загрузки операционной системы. Далее в графическом интерфейсе GParted увеличим объем extended partition. Последовательность действий уже известна — выбираем выпадающее меню, пункт Resize/Move, перетаскиваем границы раздела.

image
image

Аналогичным образом расширяем целевой раздел.

image

Осталось нажать на зеленую кнопку Apply в верхней части рабочей области.

image

Дополнение


Рассмотрим пару примеров виртуальных машин, которые немного отличаются разметкой.

Первый кейс


Допустим, мы подключились к нашему серверу и не знаем о нем ничего. Чтобы получить представление о системе, введем df -h.

image

Сразу видно, что у нас используется LVM. Есть раздел ubuntu-vg-root, а также /dev/sda. Отобразим разметку диска:

parted /dev/sda print free

image

Расширение физического диска мы провели заранее, но свободное пространство не отобразилось в консоли. Обновим эту информацию с помощью:

echo 1 > /sys/block/sda/device/rescan
parted /dev/sda print free

image

Видим, что появилось неразмеченное пространство объемом в 10 Гбайт. В этом случае у нас нет GParted, чтобы посмотреть устройство разметки в графическом интерфейсе. Будем ориентироваться на данные консоли. Например, мы видим, что во втором разделе (extended) присутствуют два других раздела — пятый и шестой. Чтобы в этом убедиться, сравниваем их конечные точки — они меньше 10,7 Гбайт.

image

Таким образом, чтобы расширить шестой раздел, нам сперва необходимо увеличить второй. Отобразим информацию в мегабайтах:

parted /dev/sda unit MB print free

Смотрим, где заканчивается свободное пространство.

image

Расширяем разделы, сокращая конец на один мегабайт.

parted /dev/sda resizepart 2 21474MB
parted /dev/sda resizepart 6 21474MB

Далее отображаем информацию по разделам:

parted /dev/sda unit MB print free

image

Видим, что свободное пространство стало меньше мегабайта. Теперь остается только расширить LVM. Смотрим на наши разделы:

lvscan
image

Видим два логических раздела — root и swap_1. Первый имеет объем 8,52 Гб, но мы расширим его файловую систему на все добавленное пространство.

Lvextend /dev/ubuntu-vg/root -l +100%FREE -r

Вводим lvscan и видим, что файловая система не расширилась.

image

Дело в том, что мы не увеличили объем физического тома. Снова вводим:

pvresize /dev/sda6
lvextend /dev/ubuntu-vg/root -l +100%FREE -r


Теперь файловая система успешно расширена.

Второй кейс


Переключимся на другое окно. Отобразим информацию о смонтированных файловых системах.

df -h

image

Видим, что корневая ФС смонтирована как LVM-раздел. Значит, действия аналогичные — отображаем содержимое диска:

parted /dev/sda print free

Но тут уже другая таблица разделов. Мы видим загрузочный раздел (boot), а под ним раздел с LVM, который нам и нужно расширить.

image

Обновим информацию о диске, чтобы вывести объем свободного пространства.

echo 1 > /sys/block/sda/device/rescan

Отобразим информацию заново и видим, что у нас свободны 10,7 Гбайт.

image

Выведем информацию о структуре диска в мегабайтах.

parted /dev/sda unit MB print free

Нас интересует конец свободного дискового пространства.

image

Копируем это значение и уменьшаем его на один мегабайт.

parted /dev/sda resizepart 2 75161MB
pvresize /dev/sda2

Наконец, расширяем LVM-раздел.

lvscan 
Lvextend /dev/centos_centos/root -l +100%FREE -r

На скриншоте ниже видно, что LVM-раздел был расширен. Теперь его объем составляет 68,71 Гбайт, хотя был 58,71 Гбайт.

image

Еще раз обратим внимание на ключ -r, который нам сильно помогает и автоматически расширяет файловую систему — вне зависимости от её типа. В LVM также не нужно перезагружать сервер, и облачные приложения продолжают успешно работать без простоев.

На этом всё, спасибо за ваше внимание.

P.S. Продолжается акция при запуске ИТ‑инфраструктуры IaaS c #CloudMTS.

Комментарии (4)


  1. BubaVV
    03.08.2022 13:25

    Guestfs позволяет многое из этого автоматизировать


    1. oklam
      04.08.2022 00:05

      Посоветуйте где можно подробнее прочитать про это


      1. BubaVV
        04.08.2022 11:08

        Для начала, в их мануале. Он обширный и понятный


  1. navion
    03.08.2022 20:28

    Расширение раздела без потери данных опубликовано 3 января 2016 года.