Увеличение корневого раздела на LVM в Linux

Предположим, нам стало места на системном разделе в виртуальной машине под KVM/VMWare или вовсе в облаке какого-либо хостинга.После физического увеличения размера блочного устройства для виртуальной машины внутри ничего не поменяется, и система продолжит думать, что всё плохо.

Последовательность действий при использовании LVM такова:
1. Увеличиваем размер раздела, выделенного под LVM
2. Увеличиваем физический раздел pv
3. Увеличиваем логический раздел lv по аналогии с обычной системой разметки
4. Расширяем файловую систему на увеличенном разделе

В качестве примера используем облачный сервер от Селектела:

#fdisk -l

Disk /dev/xvda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000916ff

Device Boot Start End Blocks Id System
/dev/xvda1 * 2048 292863 145408 83 Linux
/dev/xvda2 292864 16775167 8241152 8e Linux LVM

Disk /dev/mapper/vg_system-root: 6387 MB, 6387924992 bytes
255 heads, 63 sectors/track, 776 cylinders, total 12476416 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/vg_system-root doesn't contain a valid partition table

Disk /dev/mapper/vg_system-swap: 2046 MB, 2046820352 bytes
255 heads, 63 sectors/track, 248 cylinders, total 3997696 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/vg_system-swap doesn't contain a valid partition table

Как видим, в системе имеется раздел xvda, на котором с помощью LVM созданы томы под систему и раздел подкачки, но суммарный их объем в 8ГБ с небольшим отличается от размера блочного устройства xvda — 10ГБ. Добавим недостающие 2ГБ к системному разделу.

Для этого с помощью fdisk пересоздадим раздел xvda2, который займет всё доступное физическое пространство:

fdisk /dev/xvda
p (запоминаем как выглядит текущая разметка)
d 2 (удаляем имеющийся раздел)
n p 2 (создаем новый раздел, первичный, под номером 2 - предложит по умолчанию)
t 8e (меняем тип раздела на Linux LVM, список типов доступен по команде L)
w (записываем новую конфигурацию разделов)

Новая таблица разметки не применяется до перезагрузки, но можно попробовать принудительно обновить данные командой partprobe из набора инструментов parted

partprobe /dev/xvda

После этого проверяем появившееся свободное место для LVM с помощью команды pvs

PV VG Fmt Attr PSize PFree
/dev/xvda2 vg_system lvm2 a— 8.23g 1.76g

Расширяем физический том LVM
pvresize /dev/xvda2

Увеличиваем логический том
lvresize -l +100%FREE /dev/vg_system/root

Растягиваем файловую систему на весь раздел
resize2fs /dev/vg_system/root

Ссылки: