LVM. Расширение объема раздела LV за счет свободного места на физическом диске

Материал из Wiki
Перейти к навигации Перейти к поиску

Описание

В данной инструкции мы увеличиваем системный раздел root, но она также подойдет и для увеличения НЕсистемного раздела.

Расширение

Вариант 1. Простой. Все действия производим онлайн в рабочей системе. БЕЗ удаления раздела root.

Если расширяемый раздел LV имеет ФС EXT4

Сначала убедимся что на нашем физическом диске есть свободная от разделов область (дополнительный незанятый разделами объем).

Или, если у нас виртуальная машина - сначала увеличиваем объем диска в ВМ.

Далее смотрим информацию о физическом диске и разделах. Должны увидеть что объем физического диска имеет необходимый объем для расширения (или что общий объем диска увеличился, если мы увеличили его в ВМ гипервизора).

fdisk -l

Смотрим что изначальный объем раздела LV root - 21G, а свободного места - 86M

df -h

Filesystem                       Size  Used Avail Use% Mounted on
/dev/mapper/almalinux_alma-root   21G   20G   86M  99% /

Если мы посмотрим на PV, то увидим что свободного места для расширения на нем нет, несмотря на то, что физически диск имеет свободную область (или что мы вручную увеличили объем физического диска в ВМ).

pvs

PV         VG             Fmt  Attr PSize   PFree
/dev/sda2  almalinux_alma lvm2 a--  <21.00g    0

Так и должно быть, идем далее.

Для начала необходимо расширить логический раздел /dev/sdbX для root на физическом диске (например, если на диске было свободное от разделов место или мы прибавили место к виртуальному диску в виртуальной машине (если машина в гипервизоре)). Иначе pvs и vgs будут показывать что размер раздела не увеличился и неоткуда брать место для создания LV большего объема.

Если PV создан на партиции /dev/sdaX

Интерактивное расширение через parted

parted

Смотрим

(parted) print

...
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 4295MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number  Start   End     Size    Type     File system  Flags
 1      1049kB  1074MB  1073MB  primary  ext4
 2      1075MB  4295MB  4294MB  primary  ext4
...

Система не даст расширить раздел до объема большего, чем объем самого диска, будет ошибка:

(parted) resizepart 2 4296

Error: The location 4296 is outside of the device /dev/sdb.

! Если logical раздел находится на extended разделе, то сначала расширяем extended раздел, а потом logical.

Расширяем объем раздела до полного объема физического диска - 4295MB

(parted) resizepart 2 4295

Смотрим

(parted) print

...
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 4295MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number  Start   End     Size    Type     File system  Flags
 1      1049kB  1075MB  1074MB  primary  ext4         boot
 2      1075MB  4295MB  4294MB  primary  ext4
                              display the version number and copyright information of GNU Parted
...          

Выходим из "parted"

(parted) quit

НЕинтерактивное расширение через growpart

-N - Можно предварительно запустить в холостом режиме с данным ключом


3 - номер раздела (/dev/sdb3)

growpart -v /dev/sda 3

Расширяем PV

pvresize /dev/sdaX

Если PV создан на голом диске /dev/sda

Просто расширяем PV

pvresize /dev/sde


Идем далее.

Смотрим что есть дополнительный незанятый объем

pvs

  PV         VG             Fmt  Attr PSize   PFree
  /dev/sda2  almalinux_alma lvm2 a--  <31.00g 8.00g

vgs

  VG             #PV #LV #SN Attr   VSize   VFree
  almalinux_alma   1   2   0 wz--n- <31.00g 8.00g

Расширяем LV на весь свободный объем

lvresize /dev/almalinux_alma/root /dev/sda2

или

Расширяем раздел и одновременно расширяем ФС (только если данный раздел отформатирован в XFS), используя ключ "-r" (используется xfs_growfs).

В данном случае после расширения раздела нет необходимости использовать xfs_growfs

Расширение на весь объем

lvresize -r /dev/almalinux_alma/root /dev/sda2

Расширение на +определенный объем

lvresize -r -L +5G /dev/vg00/root /dev/vda2

Расширение до итогового объема 20GB

lvresize -r -L 20G /dev/vg00/root /dev/vda2

ИЛИ

Расширяем LV на конкретное значение в GB

-A n - Turn off auto-backup of metadata (see man page for details and cautions) which should prevent having to write to /etc/lvm You can then run vgcfgbackup after you have been successful in resizing. Необходимая опция если на расширяемом разделе осталось 0 свободного места.

lvextend -A n -L +5G /dev/almalinux_alma/root

Смотрим что объем LV увеличился

lvs

  LV   VG             Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root almalinux_alma -wi-ao---- 28.59g
  swap almalinux_alma -wi-ao----  2.40g

Расширяем ФС EXT4 на LV root на весь доступный объем

resize2fs /dev/almalinux_alma/root

ИЛИ

Если расширяемый раздел LV имеет ФС XFS

Указываем именно директорию с примонтированным расширенным разделом (/ в данном случае, или, например, /mnt/d1, если расширяли не системный диск)

xfs_growfs -d /

Смотрим что общий объем раздела root и объем свободного места увеличился

df -h

Filesystem                       Size  Used Avail Use% Mounted on
/dev/mapper/almalinux_alma-root   29G   20G  7.7G  72% /

Готово!

Вариант 2. Сложный. Увеличение раздела через удаление текущего раздела и создание нового увеличенного раздела. (Лучше использовать Вариант 1 как более простой, без удаления раздела.)

Грузимся с загрузочного LIVE дистрибутива Linux. Предпочтительно с SystemRescueCD. Все действия производим в LIVE системе SystemRescueCD. В ней имеются необходимые утилиты, например, fsarchiver.

Если расширяемый раздел LV имеет ФС XFS

Активируем LVM разделы

vgchange -ay

lvs

  LV   VG                    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos_centos7-test01 -wi-ao----  10.00g

Создаем директорию для монтирования системы root

mkdir /mnt/root_lv

Создаем директорию для бэкапа файлов раздела root в образ

mkdir /mnt/root_backup

Монтируем раздел root в директорию

mount /dev/centos_centos7-test01/root /mnt/root_lv/

Монтируем сетевую шару, на которую будем бэкапировать файлы раздела root (для этого подойдет и обычный раздел локального диска, например, подключенного через USB)

mount -t cifs -o username=admin,password=PassWord#1 //192.168.17.12/img/tmp/root /mnt/root_backup/

Бэкапим файлы раздела root в образ

xfsdump -l 0 -L "root_backup" -M "root_backup" -f /mnt/root_backup/root_backup.img /mnt/root_lv

Демонтируем раздел root

umount /mnt/root_lv

Удаляем раздел root, чтобы на его месте создать новый root увеличенного размера

lvremove /dev/centos_centos7-test01/root

СКОРЕЕ ВСЕГО ПЕРЕД СОЗДАНИЕМ НОВОГО РАЗДЕЛА LV НЕОБХОДИМО РАСШИРИТЬ ЛОГИЧЕСКИЙ РАЗДЕЛ НА ДИСКЕ

ВОЗМОЖНО Я НЕ УЧЕЛ ЭТО ПРИ НАПИСАНИИ МАНУАЛА

ЭТО МОЖНО СДЕЛАТЬ С ИСПОЛЬЗОВАНИЕМ parted

СМОТРИ НИЖЕ - РАСШИРЕНИЕ РАЗДЕЛА EXT4 ЭТОГО МАНУАЛА

ДОПОЛНИТЬ ЭТОТ МАНУАЛ КОГДА БУДУ РАСШИРЯТЬ LVM С XFS

Создаем новый root увеличенного размера

lvcreate -Zy -L 15G -n root centos_centos7-test01

lvs

  LV   VG                    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos_centos7-test01 -wi-a-----  15.00g

vgs

  VG                    #PV #LV #SN Attr   VSize    VFree
  centos_centos7-test01   1   2   0 wz--n-  <30.00g <15.00g

Форматируем новый раздел root

В mkfs.xfs (начиная с версии 3.2.4 xfsprogs) недавно стал использоваться по умолчанию суперблок версии 5 с множеством новых улучшений, таких как контрольные суммы метаданных CRC.

Чтобы избежать ошибки, требуется "-m reflink=0", что отключает несовместимую поддержку копирования при записи reflink.

Иначе при загрузке основной системы root раздел загрузится в RO режиме

mkfs.xfs -m reflink=0 /dev/centos_centos7-test01/root

Монтируем новый раздел в директорию

mount /dev/centos_centos7-test01/root /mnt/root_lv/

Восстанавливаем файлы root из сохраненного образа

xfsrestore -f /mnt/root_backup/root_backup.img /mnt/root_lv

Демонтируем раздел root и директорию для бэкапа

umount /mnt/root_*

Отключаем подключенный SystemRescueCD

Грузимся в основную систему

Система должна загрузиться

reboot

Если расширяемый раздел LV имеет ФС EXT4.

Активируем LVM разделы

vgchange -ay

lvs

  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root vg01 -wi-ao---- 10.00g

Создаем директорию для бэкапа раздела root в образ

mkdir /mnt/root_backup

Монтируем сетевую шару, на которую будем бэкапировать раздел root (для этого подойдет и обычный раздел локального диска, например, подключенного через USB)

mount -t cifs -o username=admin,password=PassWord#1 //192.168.17.12/img/tmp/root /mnt/root_backup/

Создаем образ раздела root

Будет создан образ /mnt/root_backup/root_lv.fsa

fsarchiver savefs /mnt/root_backup/root_lv /dev/vg01/root

    Statistics for filesystem 0
    * files successfully processed:....regfiles=27662, directories=5301, symlinks=1186, hardlinks=4250, specials=23
    * files with errors:...............regfiles=0, directories=0, symlinks=0, hardlinks=0, specials=0

Удаляем раздел root

lvremove /dev/vg01/root

Теперь необходимо расширить логический раздел /dev/sdbX для root на физическом диске (например, если на диске было свободное от разделов место или мы прибавили место к виртуальному диску в виртуальной машине (если машина в гипервизоре)). Иначе pvs и vgs будут показывать что размер раздела не увеличился и неоткуда брать место для создания LV большего объема.

parted

Смотрим

(parted) print

...
Model: VMware Virtual disk (scsi)
Disk /dev/sdb: 4295MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number  Start   End     Size    Type     File system  Flags
 1      1049kB  1074MB  1073MB  primary  ext4
...

Система не даст расширить  раздел до объема большего, чем объем самого диска, будет ошибка:

(parted) resizepart 1 4296

Error: The location 4296 is outside of the device /dev/sdb.

Расширяем объем раздела

(parted) resizepart 1 4295

Смотрим

(parted) print

...
Model: VMware Virtual disk (scsi)
Disk /dev/sdb: 4295MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number  Start   End     Size    Type     File system  Flags
 1      1049kB  4295MB  4294MB  primary  ext4
                              display the version number and copyright information of GNU Parted
...          

Выходим из "parted"

(parted) quit

Расширяем PV

pvresize /dev/sdbX

Создаем раздел root с увеличенным объемом

lvcreate -Zy -L 15G -n root vg01

Форматируем root

mkfs.ext4 /dev/vg01/root

Восстанавливаем раздел root из сохраненного ранее образа

fsarchiver restfs /mnt/root_backup/root_lv.fsa id=0,dest=/dev/vg01/root

    Statistics for filesystem 0
    * files successfully processed:....regfiles=27662, directories=5301, symlinks=1186, hardlinks=4250, specials=23
    * files with errors:...............regfiles=0, directories=0, symlinks=0, hardlinks=0, specials=0

vgs

  VG   #PV #LV #SN Attr   VSize   VFree
  vg01   1   2   0 wz--n- <30.00g 15.00g

lvs

  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root vg01 -wi-ao---- 15.00g

Отключаем подключенный SystemRescueCD

Грузимся в основную систему

Система должна загрузиться

reboot