22. Дек 2020, 14:05

Изменение размера раздела с LVM после развертывания ВМ из шаблона

После развертывания виртуальной машины 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
   
comments powered by Disqus

© andrdi.com 2020