После развертывания виртуальной машины linux из шаблона в виртуальной среде, автоматическое корректное изменение размера логических томов в LVM происходит не всегда. Ниже короткая памятка как это исправить.
Рассмотрим, для примера, такой кейс:
# df -h
Файловая система Размер Использовано Дост Использовано% Cмонтировано в
devtmpfs 16G 0 16G 0% /dev
tmpfs 16G 0 16G 0% /dev/shm
tmpfs 16G 8,6M 16G 1% /run
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/mapper/rhel-root 9,0G 1,7G 7,4G 19% /
/dev/sda1 1014M 240M 775M 24% /boot
tmpfs 3,2G 0 3,2G 0% /run/user/0
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 9G 0 part
└─rhel-root 253:0 0 9G 0 lvm /
sr0 11:0 1 1024M 0 rom
/dev/sda
имеет после развертывания размер 100 Gb, необходимо увеличить /dev/rhel/root
до соответствующего размера под сотню Gb.
Порядок действий
1. Увеличиваем /dev/sda2:
fdisk /dev/sda
Добро пожаловать в fdisk (util-linux 2.32.1).
Изменения останутся только в памяти до тех пор, пока вы не решите записать их.
Будьте внимательны, используя команду write.
Команда (m для справки): p
Диск /dev/sda: 100 GiB, 107374182400 байт, 209715200 секторов
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0x30027481
Устр-во Загрузочный начало Конец Секторы Размер Идентификатор Тип
/dev/sda1 * 2048 2099199 2097152 1G 83 Linux
/dev/sda2 2099200 20971519 18872320 9G 8e Linux LVM
Команда (m для справки): d
Номер раздела (1,2, default 2):
Раздел 2 был удален.
Команда (m для справки): p
Диск /dev/sda: 100 GiB, 107374182400 байт, 209715200 секторов
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0x30027481
Устр-во Загрузочный начало Конец Секторы Размер Идентификатор Тип
/dev/sda1 * 2048 2099199 2097152 1G 83 Linux
Команда (m для справки): n
Тип раздела
p основной (1 первичный, 0 расширеный, 3 свободно)
e расширенный (контейнер для логических разделов)
Выберите (по умолчанию - p):
Используется ответ по умолчанию p
Номер раздела (2-4, default 2):
Первый сектор (2099200-209715199, default 2099200):
Последний сектор + число секторов или + размер{K,M,G,T,P} (2099200-209715199, default 209715199
Создан новый раздел 2 с типом 'Linux' и размером 99 GiB.
Partition #2 contains a LVM2_member signature.
Do you want to remove the signature? [Y] Да/[N] Нет: n
Команда (m для справки): p
Диск /dev/sda: 100 GiB, 107374182400 байт, 209715200 секторов
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0x30027481
Устр-во Загрузочный начало Конец Секторы Размер Идентификатор Тип
/dev/sda1 * 2048 2099199 2097152 1G 83 Linux
/dev/sda2 2099200 209715199 207616000 99G 83 Linux
Команда (m для справки): t
Номер раздела (1,2, default 2):
Шестнадцатеричный код (введите L для получения списка кодов): 8e
Тип раздела 'Linux' изменен на 'Linux LVM'.
Команда (m для справки): p
Диск /dev/sda: 100 GiB, 107374182400 байт, 209715200 секторов
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0x30027481
Устр-во Загрузочный начало Конец Секторы Размер Идентификатор Тип
/dev/sda1 * 2048 2099199 2097152 1G 83 Linux
/dev/sda2 2099200 209715199 207616000 99G 8e Linux LVM
Команда (m для справки): w
Таблица разделов была изменена.
Синхронизируются диски.
Обращаем внимание на то, что тип /dev/sda2
должен быть 8e Linux LVM
и не забываем про повышенную осторожность при работе с fdisk.
Проверяем:
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 99G 0 part
└─rhel-root 253:0 0 9G 0 lvm /
sr0 11:0 1 1024M 0 rom
2. Увеличиваем размер Physical Volume в LVM:
# pvresize /dev/sda2
Physical volume "/dev/sda2" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
3. Увеличиваем размер Logical Volume в LVM
# lvextend -l +100%FREE /dev/rhel/root
Size of logical volume rhel/root changed from 8,99 GiB (2302 extents) to <99,00 GiB (25343 extents).
Logical volume rhel/root successfully resized.
Проверка. Должен увеличиться раздел rhel-root:
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 99G 0 part
└─rhel-root 253:0 0 99G 0 lvm /
sr0 11:0 1 1024M 0 rom
4. Увеличиваем размер файловой системы (по умолчению XFS, для ext4 использовать resize2fs)
# xfs_growfs /dev/rhel/root
meta-data=/dev/mapper/rhel-root isize=512 agcount=4, agsize=589312 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=2357248, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 2357248 to 25951232
Финальная проверка:
# df -h
Файловая система Размер Использовано Дост Использовано% Cмонтировано в
devtmpfs 16G 0 16G 0% /dev
tmpfs 16G 0 16G 0% /dev/shm
tmpfs 16G 8,6M 16G 1% /run
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/mapper/rhel-root 99G 2,3G 97G 3% /
/dev/sda1 1014M 240M 775M 24% /boot
tmpfs 3,2G 0 3,2G 0% /run/user/0