Создание, изменение и удаление 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 и сможете гибко масштабировать свои дисковые ресурсы.