LVM (Logical Volume Manager) — це рівень зберігання даних у Linux, який дозволяє розглядати декілька дисків (або розділів) як єдиний гнучкий масив простору. За допомогою LVM можна розширювати томи в режимі реального часу, створювати знімки, налаштовувати дзеркалення та перерозподіляти простір без перевстановлення ОС.
LVM вбудовано в ядро Linux (через device-mapper) і є одним із найкорисніших інструментів системного адміністратора для управління VPS, виділеними серверами, базами даних, файловими сховищами, резервними копіями та проектами, що розширюються.
Рівні LVM (просте пояснення):

Встановіть інструменти LVM (пакет lvm2) за допомогою менеджера пакетів вашого дистрибутива:
# Ubuntu / Debian
apt update
apt install -y lvm2
# RHEL / CentOS Stream / Rocky / Alma
dnf install -y lvm2
# Older CentOS
yum install -y lvm2
Перевірте, чи доступні команди LVM:
pvs
vgs
lvs
Приклад налаштування: у вас є два додаткові диски, підключені до сервера, наприклад /dev/vdb та /dev/vdc.
Крок 1 — ідентифікація дисків:
lsblk
fdisk -l

Важливо: будьте на 100% впевнені, що вибрали правильні диски. На виробничих серверах неправильна команда може знищити дані.
Крок 2 — ініціалізація дисків як фізичних томів (PV):
pvcreate /dev/vdb /dev/vdc

Перевірте стан PV:
pvdisplay
pvs

Крок 3 — створіть групу томів (VG). Тут ми назвемо її test:
vgcreate test /dev/vdb /dev/vdc
Перевірте VG:
vgdisplay
vgs
Крок 4 — створіть логічний том (LV). Приклад: LV розміром 5 ГБ з назвою test1 всередині VG test:
lvcreate -L 5G -n test1 test
Корисні приклади:
# Use 40% of VG capacity:
lvcreate -l 40%VG -n data test
# Use all free VG space:
lvcreate -l 100%FREE -n data test
Перевірте LV:
lvdisplay
lvs
lsblk
Створіть файлову систему. Для загальних цілей виберіть ext4. (Якщо ви використовуєте XFS, зверніть увагу: XFS не можна зменшувати.)
# ext4 example:
mkfs.ext4 /dev/test/test1

Створіть точку монтування та змонтуйте її:
mkdir -p /var/www/home
mount /dev/test/test1 /var/www/home
Зробіть монтування постійним після перезавантаження, додавши запис у /etc/fstab:
nano /etc/fstab
/dev/test/test1 /var/www/home ext4 defaults 0 2
Застосуйте та перевірте:
mount -a
df -h
lsblk -f

Існує два типових сценарії розширення:
Розширити LV (приклад: додати 10 ГБ):
lvextend -L 10G /dev/test/test1
Потім змініть розмір файлової системи:
# ext4:
resize2fs /dev/test/test1
# xfs (if you used XFS):
# xfs_growfs /var/www/home
Якщо спочатку потрібно додати новий диск:
pvcreate /dev/vdd
vgextend test /dev/vdd
Попередження: зменшення є ризикованим. Робіть це лише за наявності резервних копій. Також пам’ятайте: XFS не можна зменшувати. Наведена нижче безпечна процедура зменшення призначена для ext4.
1) Змонтуйте:
umount /var/www/home
2) Перевірте цілісність файлової системи:
e2fsck -fy /dev/test/test1
3) Спочатку зменшіть файлову систему (наприклад: до 4 ГБ):
resize2fs /dev/test/test1 4G
4) Зменшіть LV відповідно (наприклад: зменшіть до 4 ГБ):
lvreduce -L 4G /dev/test/test1
5) Змонтуйте знову та перевірте:
mount /dev/test/test1 /var/www/home
df -h
Щоб повністю видалити LVM:
umount /var/www/home
lvremove /dev/test/test1
vgremove test
pvremove /dev/vdb /dev/vdc
Дзеркалювання в LVM зберігає однакові дані на декількох дисках (подібно до RAID1). Це підвищує відмовостійкість, але зменшує корисний простір.
Класичний приклад (два диски):
pvcreate /dev/sdb /dev/sdc
vgcreate vgmirror /dev/sdb /dev/sdc
# Mirror LV (LVM mirror)
lvcreate -L 5G -m1 -n lvMirr1 vgmirror
У сучасних системах ви також можете використовувати типи LVM RAID (наприклад, RAID1), залежно від вашого дистрибутива та потреб.
vg_data/lv_mysql, vg_data/lv_www тощо
