LVM (Logical Volume Manager) — це підсистема операційних систем Linux, яка дозволяє використовувати різні області жорсткого диска або різні жорсткі диски як один логічний том. LVM вбудований в ядро Linux і реалізований за допомогою пристрою маппера.
Основними перевагами LVM є високий рівень абстракції від жорстких дисків, гнучкість і масштабованість. Ви можете змінювати розмір логічного тому під час роботи, а також додавати (і видаляти) нові диски. Для томів LVM підтримуються дзеркальне відображення, знімки (постійні знімки) та смугове розміщення (розподіл даних між декількома дисками для підвищення продуктивності).
У цій статті ми розглянемо використання розділів LVM на прикладі Linux CentOS 8, покажемо процес об’єднання двох дисків в одну групу LVM, дізнаємося, як створювати групи, томи, монтувати, розширювати та зменшувати розмір розділів LVM.
Спочатку необхідно зрозуміти рівні абстракції диска LVM.
Фізичний том (PV) — фізичний рівень. Фізичні диски ініціалізуються для використання в LVM.
Група томів (VG) — рівень групи томів. Ініціалізовані диски об’єднуються в логічні групи з іменем.
Логічний том (LV) — логічний том створюється на групі томів, яка містить файлову систему та дані.
т 
Встановлення утиліти lvm2
Щоб почати роботу з LVM, потрібно встановити утиліту lvm2. Виконаємо наступні команди:
apt-get install lvm2 – для Ubuntu, Mint, Debian
yum install lvm2 – для Centos, Red Hat, Fedora

У різних версіях Linux відрізняється лише спосіб встановлення утиліти lvm2 (встановлення за допомогою yum/ dnf або apt-get), подальші команди для роботи з LVM є однаковими.
Створення розділів LVM
Отже, ми маємо віртуальну машину KVM, до якої підключено два додаткові диски. Перевірте, чи вони доступні в системі, за допомогою команди:
fdisk -l

Як бачите, у мене є два доступні диски /dev/vdb та /dev/vdc .
Під час налаштування LVM на вашому віртуальному або фізичному сервері використовуйте мітки дисків.
Щоб диски були доступні для LVM, їх необхідно позначити (ініціалізувати) за допомогою утиліти pvcreate:
pvcreate /dev/vdb /dev/vdc

Тепер, щоб переконатися, що ці диски можна використовувати для LVM, виконайте команду pvdisplay:

Як бачите, відображаються обидва диски. Проаналізуємо інформацію з виводу команди:
- PV Name – назва диска або розділу
- VG Name – група томів, до якої належить цей диск (ми ще не створили групу)
- PV Size – розмір диска або розмір
- Allocatable – розподіл за групами. У нашому випадку розподілу не було, тому вказано NO
- PE Size – розмір фізичного фрагмента. Якщо диск не доданий до жодної групи, значення завжди буде 0
- Total PE – кількість фізичних фрагментів
- Free PE – кількість вільних фізичних фрагментів
- Allocated PE – розподілені фрагменти
PV UUID – ідентифікатор розділу
За допомогою команди pvscan можна сканувати диски на наявність PV.
Наступним кроком є створення групи томів. Для створення груп томів використовується команда vgcreate. Щоб об’єднати раніше позначені диски, використовуйте команду:
# vgcreate test /dev/vdb /dev/vdc
Група томів «test» успішно створена
Щоб перевірити результат, введіть vgdisplay:

Як бачите, диски об’єднані в групу test, а VG Size показує загальний розмір дисків.
Давайте проаналізуємо інформацію з виводу команди vgdisplay:
- VG Name — група томів, до якої належить цей диск.
- Format — версія підсистеми lvm, яка використовується для створення групи (у нашому випадку версія 2)
- Metadata Areas — область метаданих
- VG Access — рівень доступу до групи логічних томів
- VG Size — загальний обсяг дисків, що входять до групи
- PE Size — розмір фізичного фрагмента
- Alloc PE / Size — виділений простір (кількість і обсяг фрагментів)
- VG UUID – ідентифікатор групи
Після створення спільної групи для дисків ми можемо створити логічний том у цій групі. Для створення тому використовується команда lvcreate.
Щоб створити логічний том певного розміру та імені у вашій групі, використовуйте команду:
# lvcreate -L 5G test
Логічний том «lvol0» створено.
Як видно з виведення, у групі test створено логічний том з іменем lvol0 і розміром 5G.
Якщо ви хочете самостійно встановити ім’я, використовуйте прапор -n:
# lvcreate -L 5G -n test1 test
Логічний том «test1» створено
Деякі приклади створення логічних томів різного розміру:
lvcreate -l 40%VG test – 40% дискового простору групи test
lvcreate -l 100%FREE test – використання всього вільного простору групи test
Щоб відобразити інформацію про логічний том, використовуйте lvdisplay:

Давайте подивимося на список цієї команди:
- LV Path – шлях до пристрою логічного тому (диск або розділ)
- LV Name – ім’я логічного тому
- VG Name – ім’я групи томів
- LV UUID – ідентифікатор логічного тому
- LV Write Access – рівень доступу до логічного тому
- LV Creation host, time – інформація про хост, дату створення логічного тому
- LV Size – розмір диска, доступний для використання логічним томом
- Current LE – кількість логічних фрагментів
LVM: створення файлової системи, монтування логічного тому
Щоб створити файлову систему на логічному томі, використовуйте утиліту mkfs:
Створіть файлову систему ext4 на томі LVM:
mkfs.ext4 /dev/test/test1

Файлова система була створена без помилок.
Тепер створимо тестовий каталог і підключимо логічний том до цього каталогу:
# mkdir /var/www/home
# mount /dev/test/test1 /var/www/home/

Як бачите, все пройшло без помилок, і тепер каталог /var/www/home існує як окремий розділ.
Щоб логічний том монтувався при завантаженні системи, потрібно додати його до fstab і призначити каталог для монтування.
Відкриємо файл:
nano /etc/fstab
І додамо до нього наступну інформацію:
/dev/test/test1 /var/www/home ext4 defaults 1 2

Після цього ви можете змонтувати том за допомогою команди mount -a:
# mount -a
# df -h
Filesystem Size Used Avail Use% Mounted on devtmpfs 485M 0 485M 0% /dev tmpfs 496M 0 496M 0% /dev/shm tmpfs 496M 6.7M 489M 2% /run tmpfs 496M 0 496M 0% /sys/fs/cgroup /dev/vda2 20G 1.3G 19G 7% / /dev/vda1 488M 100M 353M 23% /boot tmpfs 100M 0 100M 0% /run/user/0 /dev/mapper/test-test1 4.8G 20M 4.6G 1% /var/www/home
Щоб перевірити загальну інформацію про диски, розділи та томи, введіть команду lsblk:

Як бачите, відображається створений нами том і вказується каталог, до якого він підключений.
Команда lvmdiskscan дозволяє сканувати доступні диски, показуючи їх розмір і приналежність до LVM.
Розширення логічного тому LVM
Щоб додати додатковий диск до групи томів, потрібно використовувати вже знайому схему:
pvcreate /dev/ourdisk – ініціалізація диска для lvm
vgextend test /dev/ourdisk – додавання диска до групи томів
Щоб розширити логічний том, використовуйте таку схему:
lvextend -L10G /dev/test/test1
Таким чином ви розширите розділ на 10 ГБ.

Ще кілька прикладів включення розділу LVM:
lvextend -L+10G /dev/test/test1 – додати 10 ГБ до вашого тому
lvextend -l +100%FREE /dev/test/test1- розподілити весь нерозподілений простір у групі test
Залишається збільшити розділ файлової системи:
resize2fs /dev/test/test1 –для ext4
xfs_growfs /dev/test/test1 – для xfs
Зменшення обсягів LVM
LVM дозволяє зменшити розмір обсягу. Але для безпеки зменшення розміру розділу його необхідно вимкнути.
Знімемо обсяг з каталогу:
umount /var/www/home/
Перевіримо диск:
e2fsck -fy /dev/test/test1

Зменшимо розділ файлової системи на 4 ГБ:
# resize2fs /dev/test/test1 4G
resize2fs 1.42.9 (28-Dec-2013)
Зміна розміру файлової системи на /dev/test/test1 до 1048576 (4k) блоків.
Файлова система на /dev/test/test1 тепер має розмір 1048576 блоків.
# lvreduce -L-4G /dev/test/test1
ПОПЕРЕДЖЕННЯ: Зменшення активного логічного тому до 6,00 Гб.
ЦЕ МОЖЕ ЗНИЩИТИ ВАШІ ДАНІ (файлову систему тощо).
Ви дійсно хочете зменшити test/test1? [y/n]: y
Розмір логічного тому test/test1 змінено з 10,00 Гб (2560 розширень) до 6,00 Гб (1536 розширень).
Логічний том test/test1 успішно змінено.
Тепер зменшимо розмір самого тому LVM:
lvreduce -L-4G /dev/test/test1
Після цього потрібно знову змонтувати том і перевірити його поточний розмір:

Як бачите, розмір зменшився до 4 ГБ.
Видалення груп і томів LVM
Щоб видалити томи LVM, скористайтеся командою lvremove:
lvremove /dev/test/test1

Щоб видалити логічну групу томів, скористайтеся командою:
# vgremove test
Група томів «test» успішно видалена
Видалення міток з дисків LVM:
# pvremove /dev/vdb /dev/vdc
Мітки на фізичному томі «/dev/vdb» успішно видалені.
Мітки на фізичному томі «/dev/vdc» успішно видалені.
Створення дзеркальних томів LVM
LVM дозволяє створювати дзеркальні томи для підвищення відмовостійкості системи зберігання даних. У дзеркалі LVM дані одночасно зберігаються на двох (або більше) фізичних дисках (аналогічно RAID-1). Процедура створення дзеркального тому в LVM.
- Ініціалізація дисків: pvcreate /dev/sd{b,c}
- Створення групи LVM: vgcreate mirror1 /dev/sd{b,c}
- Створення дзеркального тому LVM: lvcreate -L 5g -m1 -n lvMirr1 VGmirror1
Інструменти LVM дуже прості у використанні, за їх допомогою ви можете легко керувати томами, розрізати їх на необхідні розміри та легко використовувати відповідно до своїх потреб. У цій статті я спробував охопити всі основні моменти роботи з LVM.
VPS Linux
VPS-хостинг з віртуалізацією KVM