*КУБ - повний комплекс хмарних послуг!
LVM (Logical Volume Manager) — це підсистема операційних систем Linux, яка дозволяє використовувати різні області жорсткого диска або різні жорсткі диски як один логічний том. LVM вбудований в ядро Linux і реалізований за допомогою пристрою маппера.
Основними перевагами LVM є високий рівень абстракції від жорстких дисків, гнучкість і масштабованість. Ви можете змінювати розмір логічного тому під час роботи, а також додавати (і видаляти) нові диски. Для томів LVM підтримуються дзеркальне відображення, знімки (постійні знімки) та смугове розміщення (розподіл даних між декількома дисками для підвищення продуктивності).
У цій статті ми розглянемо використання розділів LVM на прикладі Linux CentOS 8, покажемо процес об’єднання двох дисків в одну групу LVM, дізнаємося, як створювати групи, томи, монтувати, розширювати та зменшувати розмір розділів LVM. Подібні операції найчастіше виконуються на Linux VPS, де LVM використовується для гнучкого керування дисковим простором, масштабування сховища та спрощення адміністрування серверів.
Спочатку необхідно зрозуміти рівні абстракції диска LVM.
Фізичний том (PV) — фізичний рівень. Фізичні диски ініціалізуються для використання в LVM.
Група томів (VG) — рівень групи томів. Ініціалізовані диски об’єднуються в логічні групи з іменем.
Логічний том (LV) — логічний том створюється на групі томів, яка містить файлову систему та дані.

Щоб почати роботу з LVM, потрібно встановити утиліту lvm2. Виконаємо наступні команди:
apt-get install lvm2 – для Ubuntu, Mint, Debian
yum install lvm2 – для Centos, Red Hat, Fedora

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

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

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

Як бачите, відображаються обидва диски. Проаналізуємо інформацію з виводу команди:
PV UUID – ідентифікатор розділу
За допомогою команди pvscan можна сканувати диски на наявність PV.
Наступним кроком є створення групи томів. Для створення груп томів використовується команда vgcreate. Щоб об’єднати раніше позначені диски, використовуйте команду:
# vgcreate test /dev/vdb /dev/vdc
Група томів «test» успішно створена
Щоб перевірити результат, введіть vgdisplay:

Як бачите, диски об’єднані в групу test, а VG Size показує загальний розмір дисків.
Давайте проаналізуємо інформацію з виводу команди vgdisplay:
Після створення спільної групи для дисків ми можемо створити логічний том у цій групі. Для створення тому використовується команда 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:

Давайте подивимося на список цієї команди:
Щоб створити файлову систему на логічному томі, використовуйте утиліту 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.
Щоб додати додатковий диск до групи томів, потрібно використовувати вже знайому схему:
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 дозволяє зменшити розмір обсягу. Але для безпеки зменшення розміру розділу його необхідно вимкнути.
Знімемо обсяг з каталогу:
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, скористайтеся командою lvremove:
lvremove /dev/test/test1

Щоб видалити логічну групу томів, скористайтеся командою:
# vgremove test
Група томів «test» успішно видалена
Видалення міток з дисків LVM:
# pvremove /dev/vdb /dev/vdc
Мітки на фізичному томі «/dev/vdb» успішно видалені.
Мітки на фізичному томі «/dev/vdc» успішно видалені.
LVM дозволяє створювати дзеркальні томи для підвищення відмовостійкості системи зберігання даних. У дзеркалі LVM дані одночасно зберігаються на двох (або більше) фізичних дисках (аналогічно RAID-1). Процедура створення дзеркального тому в LVM.
Інструменти LVM дуже прості у використанні, за їх допомогою ви можете легко керувати томами, розрізати їх на необхідні розміри та легко використовувати відповідно до своїх потреб. У цій статті я спробував охопити всі основні моменти роботи з LVM.