Создание, изменение и удаление LVM

Введение

Logical Volume Manager (LVM) — это гибкая система управления логическими томами в Linux. Она позволяет динамически изменять размер разделов, объединять несколько физических устройств в один пул, а также быстро создавать резервные копии и мигрировать данные без простоя. Эта статья охватывает основные операции с LVM: создание группы физического хранения (Physical Volume → PV), логической группы (Volume Group → VG) и логических томов (Logical Volume → LV); изменение размеров томов; удаление компонентов. Мы будем использовать команды из пакета lvm2 (pvcreate, vgcreate, lvcreate, lvextend, lvreduce, lvremove, vgreduce, vgremove и т.д.) и покажем примеры в виде скриптов.

⚠️ Внимание!
Любые операции с LVM влияют на данные. Перед началом убедитесь, что у вас есть актуальные резервные копии и вы работаете над тестовой системой или виртуальной машиной.

Основная часть

1️⃣ Создание физических томов (Physical Volumes)

Физический том — это обертка над реальным диском или разделом. Для создания PV используем pvcreate.

# Создадим PV на /dev/sdb
sudo pvcreate /dev/sdb

Проверяем статус:

sudo pvs
PV VG Fmt Attr LSize PSize PFree
sdb1 lvm2 a--o- 100.00g 100.00g 100.00g

2️⃣ Создание группы томов (Volume Group)

Группа томов объединяет один или несколько PV в единый пул ресурсов.

# Создадим VG под названием vg_data, используя ранее созданный PV
sudo vgcreate vg_data /dev/sdb1

Проверяем:

sudo vgs
VG #PV #LV Attr VSize VFree
vg_data 1 0 -wi-ao---- 100.00g 100.00g

3️⃣ Создание логического тома (Logical Volume)

Логический том — это виртуальный раздел, который можно монтировать как обычный файловый систем.

# Создадим LV размером 20G и назовем его lv_home
sudo lvcreate -L 20G -n lv_home vg_data

# Форматируем в ext4
sudo mkfs.ext4 /dev/vg_data/lv_home

# Монтируем
sudo mkdir /mnt/home
sudo mount /dev/vg_data/lv_home /mnt/home

Проверяем:

sudo lvs
LV VG Attr LSize Origin Data% Meta%
lv_home vg_data -wi-ao--- 20.00g

4️⃣ Расширение логического тома (lvextend)

Если нужно увеличить размер LV, используем lvextend. Важно не превышать свободное пространство в VG.

# Увеличим lv_home до 30G
sudo lvextend -L +10G /dev/vg_data/lv_home

# После расширения необходимо растянуть файловую систему
sudo resize2fs /dev/vg_data/lv_home

Проверяем:

df -h | grep lv_home

5️⃣ Уменьшение логического тома (lvreduce)

Уменьшить LV можно только если в нем нет данных, иначе потребуется удалить или переместить файлы.

# Сначала смонтируем точку монтирования в read-only режим и уберём все данные
sudo umount /mnt/home
sudo e2fsck -f /dev/vg_data/lv_home   # Проверка файловой системы

# Уменьшаем до 15G (не более чем на 5G меньше текущего)
sudo lvreduce -L 15G /dev/vg_data/lv_home

# После уменьшения снова растягиваем файловую систему
sudo resize2fs /dev/vg_data/lv_home

6️⃣ Удаление логического тома (lvremove)

sudo lvremove /dev/vg_data/lv_home

7️⃣ Удаление группы томов (vgremove) и физического тома (pvremove)

Перед удалением убедитесь, что в VG нет активных LV.

# Удаляем группу vg_data
sudo vgremove vg_data

# Теперь удаляем PV
sudo pvremove /dev/sdb1

Заключение

LVM — мощный инструмент для динамического управления хранилищем. Создание, изменение и удаление томов можно выполнять без перезагрузки системы, что делает LVM идеальным решением для серверных сред и облачных инфраструктур. Главное — всегда держать актуальные резервные копии и внимательно следить за свободным пространством в Volume Group. С практикой вы быстро освоите все нюансы работы с LVM и сможете гибко масштабировать свои дисковые ресурсы.

Метки: