LVM (Logical Volume Manager) - підсистема операційних систем Linux, що дозволяє використовувати різні галузі фізичного жорсткого диска або різних жорстких дисків як один логічний том. LVM вбудована в ядро Linux і реалізується на базі device mapper.
Головні переваги LVM - високий рівень абстракції від фізичних дисків, гнучкість і масштабованість. Ви можете на льоту змінювати розмір логічного тому, додавати (і видаляти) нові диски. Для LVM томів підтримується зекалірованіе, снапшоти (persistent snapshot) і striping (розшарування даних між декількома дисками з метою збільшення продуктивності).
У даній статті ми розглянемо використання LVM розділів на прикладі Linux CentOS 8, покажемо процес об'єднання двох дисків в одну групу LVM, подивимося як створювати групи, тому, монтувати, розширювати і зменшувати розмір LVM розділів.
зміст:
- Установка утиліти lvm2
- Створення LVM розділів
- LVM: створення файлової системи, монтування логічного тому
- Збільшення логічного тому LVM
- Зменшення LVM томів
- Видалення LVM груп і томів
- Створення дзеркальних томів LVM
Перш за все потрібно розібратися з рівнями дискових абстракцій LVM.
- Physical Volume (PV) - фізичний рівень. Фізичні диски инициализируются для використання в LVM.
- Volume Group (VG) - рівень групи томів. Початкові диски об'єднуються в логічні групи з ім'ям.
- Logical Volume (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
Volume group "test" successfully created
Щоб перевірити результат введіть 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
Logical volume "lvol0" created.
Як бачимо з лістингу, в групі test був створений логічний тому з ім'ям lvol0 і розміром 5G.
Якщо ви хочете самі задати ім'я, використовуйте прапор -n:
# Lvcreate -L 5G -n test1 test
Logical volume "test1" created
Кілька прикладів для створення логічних томів з різними розмірами:
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 / нашдіск
- ініціалізація диска для lvm
vgextend test / dev / нашдіск
- додавання диска в групу томів
Щоб розширити логічний тому, скористайтеся наступною схемою:
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) Resizing the filesystem on / dev / test / test1 to 1048576 (4k) blocks. The filesystem on / dev / test / test1 is now 1048576 blocks long.
# Lvreduce -L-4G / dev / test / test1
WARNING: Reducing active logical volume to 6.00 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce test / test1? [Y / n]: y Size of logical volume test / test1 changed from 10.00 GiB (2560 extents) to 6.00 GiB (1536 extents). Logical volume test / test1 successfully resized.
Тепер зменшимо розмір самого LVM томи:
lvreduce -L-4G / dev / test / test1
Після чого, потрібно примонтировать тому назад і перевірити поточний розмір:
Як бачимо, розмір зменшився до 4 Гб.
Видалення LVM груп і томів
Для видалення LVM томів, використовується команда lvremove:
lvremove / dev / test / test1
Щоб видалити групу логічних томів, використовуйте:
# Vgremove test
Volume group "test" successfully removed
Прибрати мітки з LVM дисків:
# Pvremove / dev / vdb / dev / vdc
Labels on physical volume "/ dev / vdb" successfully wiped. Labels on physical volume "/ dev / vdc" successfully wiped.
Створення дзеркальних томів 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.