LVM (Logical Volume Manager) – підсистема операційних систем Linux, Що дозволяє використовувати різні галузі фізичного жорсткого диска або різних жорстких дисків як один логічний том. LVM вбудована в ядро ​​Linux і реалізується на базі device mapper.

Головні переваги LVM – високий рівень абстракції від фізичних дисків, гнучкість і масштабованість. Ви можете на льоту змінювати розмір логічного тому, додавати (і видаляти) нові диски. Для LVM томів підтримується зекалірованіе, снапшоти (persistent snapshot) і striping (розшарування даних між декількома дисками з метою збільшення продуктивності).

У даній статті ми розглянемо використання LVM розділів на прикладі Linux CentOS 8, покажемо процес об’єднання двох дисків в одну групу LVM, подивимося як створювати групи, тому, монтувати, розширювати і зменшувати розмір LVM розділів.

Перш за все потрібно розібратися з рівнями дискових абстракцій LVM.

  • Physical Volume (PV) – фізичний рівень. Фізичні диски инициализируются для використання в LVM.
  • Volume Group (VG) – рівень групи томів. Початкові диски об’єднуються в логічні групи з ім’ям.
  • Logical Volume (LV) – створюється логічний тому на групі томів, на якому розміщується файлова система і дані.

архітектура і рівні абстраціі LVM в Linux

Установка утиліти lvm2

Щоб почати роботу з LVM, Потрібно встановити утиліту lvm2. Виконаємо такі команди:

apt-get install lvm2 — для Ubuntu, Mint, Debian

yum install lvm2 – для Centos, Red-Hat, Fedora

установка lvm2

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

Створення LVM розділів

Отже, у нас є віртуальна машина KVM, до якої підключені два додаткових диски. Перевіримо, що вони доступні в системі, використовуючи команду:

fdisk -l

fdisk - визначення фізичних дисків в lunux під LVM

Як ви бачите, у мене доступні два диска /dev/vdb і /dev/vdc.

під час налаштування LVM на своєму віртуальному чи фізичному сервері, використовуйте своє маркування дисків.

Щоб диски були доступні для LVM, Їх потрібно позначити (ініціалізацію) утилітою pvcreate:

pvcreate /dev/vdb /dev/vdc

pvcreate - ініціалізація дисків під LVM в Linux

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

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:

vgdisplay - створення LVM групи

Як бачимо, всі диски поєднані в групу тест і VG Розмір показує загальний розмір дисків.

Розберемо інформацію з лістингу команди 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.

Як бачимо з лістингу, в групі тест був створений логічний тому з ім’ям lvol0 і розміром 5G.

Якщо ви хочете самі задати ім’я, використовуйте прапор :

# lvcreate -L 5G -n test1 test

Logical volume "test1" created

Кілька прикладів для створення логічних томів з різними розмірами:

lvcreate -l 40%VG test – 40% від дискового простору групи тест

lvcreate -l 100%FREE test – використовувати весь вільний простір групи тест

Щоб вивести інформацію про логічному томі, використовуйте lvdisplay:

lvdisplay - створення логічного розділу LVM

Так само розберемо лістинг даної команди:

  • 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

файлова система на LVM томі mkfs.ext4

Файлова система була створена без помилок.

Тепер створимо тестову директорію і прімонтіруем логічний тому до даної директорії:

# mkdir /var/www/home
# mount /dev/test/test1 /var/www/home/

встановлення обсягу LVM

Як бачите, все пройшло без помилок і тепер директорія / var / www / home існує як окремий розділ.

Щоб логічний тому монтувався при завантаженні системи, потрібно додати його в fstab і призначити директорію для монтування.

Відкриємо файл:
nano /etc/fstab

І додамо в нього наступну інформацію:

/dev/test/test1 /var/www/home ext4 defaults 1 2

fstab - автомоннтірованіе томи LVM

Після чого примонтировать тому можна буде через кріплення -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:

lsblk - інформація про диски ДМЬ

Як бачимо, наш створений тому відображається, і вказана директорія до якої він примонтовано.

команда lvmdiskscan дозволяє просканувати доступні диски, показує їх розмір і приналежність до LVM.

Збільшення логічного тому LVM

Щоб додати додатковий диск до групи томів, потрібно скористатися вже знайомої схемою:

pvcreate /dev/нашдиск – ініціалізація диска для lvm

vgextend test /dev/нашдиск – додавання диска в групу томів

Щоб розширити логічний тому, скористайтеся наступною схемою:

lvextend -L10G /dev/test/test1

Даним способом ви розширите розділ на 10 Гб.

поточний розмір LVM томи

Ще кілька прикладів розширення LVM розділу:

lvextend -L+10G /dev/test/test1 – додасте 10 Гб до вашого тому

lvextend -l +100%FREE /dev/test/test1 – виділіть все нерасподілений простір в групі тест

Залишилося збільшити розділ файлової системи:

resize2fs /dev/test/test1 – для доб4

xfs_growfs /dev/test/test1 – для xfs

Зменшення LVM томів

LVM дозволяють зменшувати розмір томи. Але для безпеки умеьшенія розміру розділу його потрібно відключити.

Отмонтіруем тому від директорії:

umount /var/www/home/

Виконаємо перевірку диска:

e2fsck -fy /dev/test/test1

зменшити розмір LVM в Linux

Зменшимо розділ файлової системи на 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

Після чого, потрібно примонтировать тому назад і перевірити поточний розмір:

монтування LVM після зменшення розміру

Як бачимо, розмір зменшився до 4 Гб.

Видалення LVM груп і томів

Для видалення LVM томів, використовується команда lvremove:

lvremove /dev/test/test1

lvremove видалення LVM томи

Щоб видалити групу логічних томів, використовуйте:

# 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.

Leave a Reply

Your email address will not be published. Required fields are marked *