Налагодження та управління LVM розділами в Linux

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.

  1. Ініціалізація дисків: pvcreate / dev / sd b, c
  2. Створюємо LVM групу: vgcreate mirror1 / dev / sd b, c
  3. Створимо дзеркальний LVM тому: lvcreate -L 5g -m1 -n lvMirr1 VGmirror1

Інструменти LVM дуже зручні для роботи, за допомогою них можна легко управляти томами, нарізати їх на потрібні вам розміри і з легкістю використовувати під свої потреби. У даній статті я постарався торкнутися всі основні моменти в роботі з LVM.