LVM: Расширение тома ROOT

Иногда требуется увеличение корневого раздела Linux в LVM-конфигурации. Рассмотрим, как это можно сделать без остановки виртуальной машины…

Исходные данные

Имеется виртуальная машина с диском sda размером 20 GB:

Терминал
1
2
3
4
5
6
7
8
lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda               8:0    0   20G  0 disk
├─sda1            8:1    0    1M  0 part
├─sda2            8:2    0  1.9G  0 part /boot
└─sda3            8:3    0 18.1G  0 part
  ├─system-swap 254:0    0  3.8G  0 lvm  [SWAP]
  └─system-root 254:1    0 14.3G  0 lvm  /

Увеличиваем размер виртуального диска sda на 10 GB:

Терминал
1
2
3
4
5
6
7
8
lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda               8:0    0   30G  0 disk
├─sda1            8:1    0    1M  0 part
├─sda2            8:2    0  1.9G  0 part /boot
└─sda3            8:3    0 18.1G  0 part
  ├─system-swap 254:0    0  3.8G  0 lvm  [SWAP]
  └─system-root 254:1    0 14.3G  0 lvm  /

Экспорт переменных

Для начала экспортируем заранее подготовленные параметры в переменные окружения:

1
export PV='/dev/sda3'; export LV='system-root'

Параметры

  • PV='/dev/sda3' - имя физического тома (PV).
  • LV='system-root' - имя группы логических томов (VG) system и логического тома (LV) root.

Расширение LVM

Увеличение раздела root при помощи одной команды:

1
echo 1 > "/sys/block/$( echo "${PV##*/}" | sed 's/[0-9]*//g' )/device/rescan" && parted -sf -a 'optimal' -- "${PV//[0-9]/}" "resizepart ${PV//[^0-9]/} 100%" && pvresize "${PV}" && lvextend -l +100%FREE "/dev/${LV%%-*}/${LV##*-}"

В этой команде имеется 4 под-команды:

  • rescan - обновить информацию об устройстве sda.
  • parted - расширить раздел sda3 на всё свободное место.
  • pvresize - расширить физический том PV.
  • lvextend - расширить логический том LV.

Расширение ФС

Расширить файловую систему ext4:

1
resize2fs "/dev/${LV%%-*}/${LV##*-}"

Расширить файловую систему xfs:

1
xfs_growfs -d "/dev/${LV%%-*}/${LV##*-}"

Итоговые значения

В итоге, имеем увеличение раздела sda3/system-root на всё свободное место:

Терминал
1
2
3
4
5
6
7
8
lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda               8:0    0   30G  0 disk
├─sda1            8:1    0    1M  0 part
├─sda2            8:2    0  1.9G  0 part /boot
└─sda3            8:3    0 28.1G  0 part
  ├─system-swap 254:0    0  3.8G  0 lvm  [SWAP]
  └─system-root 254:1    0 24.3G  0 lvm  /
Категории
Авторы
Мета
Лицензия
ID файла
UUID
Системный путь
Тип
Статистика
Количество слов
Время чтения
мин.