Инструкция: как расширить файловую систему в Linux. Часть 2: работа с виртуальной машиной
Продолжаем материал о расширении файловых систем в облачной среде. В прошлый раз мы разобрали пару теоретических примеров и проводили все операции исключительно с демонстрационными дисками. Сегодня покажем, как применить эти знания на реальной виртуальной машине с системными дисками.
От тестового стенда к ВМ на проде
Будем работать с реальной виртуальной машиной, на которую установлена операционная система Linux Mint.
В GParted мы видим таблицу MBR с загрузочным и логическим разделом (последний примонтирован как корневая файловая система), а также extended partition. Наша целевая ФС без LVM, поэтому мы можем расширить её утилитой growpart, предварительно увеличив объем диска sda.
growpart /dev/sda
echo 1 > /sys/block/sda/device/rescan
parted /dev/sde print free
Далее расширим extended-диск. Для этого сперва убедимся, что sda5 находится в пределах extended-раздела — сравним начало и конец. Выполняем команды:
growpart /dev/sda 2
growpart /dev/sda 5
Дальше расширяем файловую систему ext4:
resize2fs /dev/sda5
Мы расширили ФС и соответствующий раздел с 15,6 Гбайт до 16,6 Гбайт.
Теперь произведем аналогичную манипуляцию с подгрузкой LiveCD. Сперва перезагрузим виртуальную машину, к которой мы уже подключили iso-образ.
reboot -f
Пока она загружается, увеличим объем диска до 17 Гбайт в панели управления облаком.
После загрузки наш раздел (тот, который мы только что расширили) определился последним.
Заходим в консоль под рутом и обновляем информацию о разделах.
echo 1 > /sys/block/sde/device/rescan
Это нужно сделать только в том случае, если диск был расширен уже после загрузки операционной системы. Далее в графическом интерфейсе GParted увеличим объем extended partition. Последовательность действий уже известна — выбираем выпадающее меню, пункт Resize/Move, перетаскиваем границы раздела.
Аналогичным образом расширяем целевой раздел.
Осталось нажать на зеленую кнопку Apply в верхней части рабочей области.
Дополнение
Рассмотрим пару примеров виртуальных машин, которые немного отличаются разметкой.
Первый кейс
Допустим, мы подключились к нашему серверу и не знаем о нем ничего. Чтобы получить представление о системе, введем df -h
.
Сразу видно, что у нас используется LVM. Есть раздел ubuntu-vg-root, а также /dev/sda. Отобразим разметку диска:
parted /dev/sda print free
Расширение физического диска мы провели заранее, но свободное пространство не отобразилось в консоли. Обновим эту информацию с помощью:
echo 1 > /sys/block/sda/device/rescan
parted /dev/sda print free
Видим, что появилось неразмеченное пространство объемом в 10 Гбайт. В этом случае у нас нет GParted, чтобы посмотреть устройство разметки в графическом интерфейсе. Будем ориентироваться на данные консоли. Например, мы видим, что во втором разделе (extended) присутствуют два других раздела — пятый и шестой. Чтобы в этом убедиться, сравниваем их конечные точки — они меньше 10,7 Гбайт.
Таким образом, чтобы расширить шестой раздел, нам сперва необходимо увеличить второй. Отобразим информацию в мегабайтах:
parted /dev/sda unit MB print free
Смотрим, где заканчивается свободное пространство.
Расширяем разделы, сокращая конец на один мегабайт.
parted /dev/sda resizepart 2 21474MB
parted /dev/sda resizepart 6 21474MB
Далее отображаем информацию по разделам:
parted /dev/sda unit MB print free
Видим, что свободное пространство стало меньше мегабайта. Теперь остается только расширить LVM. Смотрим на наши разделы:
lvscan
Видим два логических раздела — root и swap_1. Первый имеет объем 8,52 Гб, но мы расширим его файловую систему на все добавленное пространство.
Lvextend /dev/ubuntu-vg/root -l +100%FREE -r
Вводим lvscan и видим, что файловая система не расширилась.
Дело в том, что мы не увеличили объем физического тома. Снова вводим:
pvresize /dev/sda6
lvextend /dev/ubuntu-vg/root -l +100%FREE -r
Теперь файловая система успешно расширена.
Второй кейс
Переключимся на другое окно. Отобразим информацию о смонтированных файловых системах.
df -h
Видим, что корневая ФС смонтирована как LVM-раздел. Значит, действия аналогичные — отображаем содержимое диска:
parted /dev/sda print free
Но тут уже другая таблица разделов. Мы видим загрузочный раздел (boot), а под ним раздел с LVM, который нам и нужно расширить.
Обновим информацию о диске, чтобы вывести объем свободного пространства.
echo 1 > /sys/block/sda/device/rescan
Отобразим информацию заново и видим, что у нас свободны 10,7 Гбайт.
Выведем информацию о структуре диска в мегабайтах.
parted /dev/sda unit MB print free
Нас интересует конец свободного дискового пространства.
Копируем это значение и уменьшаем его на один мегабайт.
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 Гбайт.
Еще раз обратим внимание на ключ -r, который нам сильно помогает и автоматически расширяет файловую систему — вне зависимости от её типа. В LVM также не нужно перезагружать сервер, и облачные приложения продолжают успешно работать без простоев.
На этом всё, спасибо за ваше внимание.
P.S. Продолжается акция при запуске ИТ‑инфраструктуры IaaS c #CloudMTS.