Работа с LVM

LVM, це система управління дисковим простором з додатковим ступенем абстракції від фізичного рівня. Вона дає змогу гнучко й ефективно керувати дисковим простором, відмовостійкістю даних, а також допомагає у розв'язанні різноманітних завдань із резервного копіювання даних, розгортання систем зберігання для середовищ віртуалізації та інше.

У цій статті ми розглянемо, як встановити і використовувати LVM у Linux.

Установка

LVM зазвичай встановлюється разом з операційною системою Linux, але якщо його немає, ви можете встановити його за допомогою менеджера пакетів вашого дистрибутива Linux. Для більшості дистрибутивів команда для встановлення LVM матиме такий вигляд:

Для Debian чи Ubuntu:

sudo apt-get install lvm2

Для CentOS, Fedora та RHEL: 

sudo yum install lvm2

Створення фізичних томів

Перед створенням логічних томів, необхідно створити фізичні томи (pv). Фізичний том - це віртуальний пристрій, такий як жорсткий диск або розділ диска, який використовується LVM для створення логічних томів.

Рекомендується створювати фізичні томи поверх жорсткого диска без
використання розмітки на розділи, оскільки в іншому разі в перспективі
ускладнюється процес динамічної зміни розміру lvm.

Щоб створити фізичний том, виконайте такі кроки:

  1. Використовуйте команду pvcreate для створення фізичного тому:
sudo pvcreate /dev/sdb

Де /dev/sdb - це шлях до фізичного пристрою.

 2. Перевірте створений фізичний том, використовуючи команду pvdisplay:

sudo pvdisplay

У висновку ви побачите інформацію про створений фізичний том.

Створення групи фізичних томів

Група фізичних томів (physical volume group, vg) - це логічний контейнер, який може об'єднати кілька фізичних томів в одну загальну групу. Однак ніщо не заважає використовувати його в межах одного фізичного тому. Щоб створити групу фізичних томів, виконайте такі кроки:

 1. Використовуйте команду vgcreate для створення групи фізичних томів:

sudo vgcreate vg0 /dev/sdb
# або для декількох pv
sudo vgcreate vg0 /dev/sdb /dev/sdc

Створення логічного тому

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

 1. Створіть логічний том у групі фізичних томів за допомогою команди lvcreate:

sudo lvcreate -n lv0 -L 10G vg0   # Створення логічного тому lv0 розміром 10 ГБ у группі фізичних томів vg0

Де -n - ім'я логічного тому, -L - розмір логічного тому.

 2. Перевірте створений логічний том, використовуючи команду lvdisplay:

sudo lvdisplay

Ви побачите інформацію про створений логічний том.

 3. Створіть файлову систему на логічному томі, використовуючи команду mkfs:

sudo mkfs.ext4 /dev/vg0/lv0

 4. Створіть точку монтування для нової файлової системи, використовуючи команду mkdir:

sudo mkdir /mnt/lv0

 5. Змонтуйте нову файлову систему в точці монтування, використовуючи команду mount:

sudo mount /dev/vg0/lv0 /mnt/lv0

Тепер ви можете використовувати нову файлову систему, що знаходиться на логічному томі.

Використання LVM

VM надає безліч команд для керування фізичними томами, групами фізичних томів і логічними томами. Деякі з найбільш часто використовуваних команд перераховані нижче:

    pvcreate: Створює новий фізичний том.
    pvdisplay
    : Відображає інформацію про фізичні томи.
    vgcreate
    : Створює нову групу фізичних томів.
    vgextend
    : Додає фізичний том до групи фізичних томів.
    vgdisplay
    : Відображає інформацію про групи фізичних томів.
    lvcreate
    : Створює новий логічний том.
    lvextend
    : Збільшує розмір логічного тому.
    lvdisplay
    : Відображає інформацію про логічні томи.

LVM також дає змогу збільшувати розміри фізичних томів, груп фізичних томів і логічних томів під час роботи системи. Для цього існують відповідні команди:

       pvresize: Змінює розмір фізичного тому.
       vgresize: Змінює розмір групи фізичних томів.
       lvresize: Змінює розмір логічного тома.

виконавши будь-яку з перерахованих вище команд з параметром --help, ви зможете ознайомитися з додатковими параметрами аргументами команди.

Керування розміром логічного тому:

Наприклад, щоб збільшити розмір логічного тому lv0 у групі фізичних томів vg0 на 5 ГБ, використовуйте команду:

sudo lvresize -L +5G /dev/vg0/lv0

або на все вільне місце, що залишилося на фізичному томі:

sudo lvresize -l +100%FREE /dev/vg0/lv0
Зверніть увагу що в останньому прикладі застосовується прописна літера l, а в попередньому - прописна L.
У такому форматі ви можете гнучко задавати у відсотковому співвідношенні скільки вільного простору від того, що залишився на фізичному томі, додати до логічного тому.

Після цього можна змінити розмір файлової системи "на льоту", використовуючи команду resize2fs:

sudo resize2fs /dev/vg0/lv0

LVM Snaphots

LVM у Linux підтримує механізм знімків (snapshot), який дозволяє створювати точні копії логічних томів у певний момент часу. Це корисна функція, яка дає змогу зберігати стан даних у певний момент часу і відновлюватися до цього стану, якщо це необхідно.

Технологія знімків LVM працює наступним чином: знімок створюється шляхом збереження стану логічного тому в момент часу, коли знімок створюється. Після створення знімка всі зміни, які відбуваються у вихідному логічному томі, зберігаються в додатковому диференціальному дисковому просторі. Це може допомогти у створенні резервних копій і відновленні даних на момент створення знімка.

Давайте розглянемо, як створювати і використовувати механізм знімків LVM.

 Створення знімка LVM

Створення знімка LVM відбувається за допомогою команди lvcreate. Наприклад, щоб створити знімок логічного тому myvolume у групі томів myvg, використовуйте таку команду:

sudo lvcreate --snapshot --name myvolume_snap --size 1G /dev/myvg/myvolume

Ця команда створить знімок логічного тому myvolume з ім'ям myvolume_snap розміром 1 ГБ.

Зверніть увагу, що для створення знімка необхідно вказати розмір знімка.

Використання знімка LVM

Після створення знімка можна використовувати його для виконання різних завдань. Наприклад, можна використовувати знімок для відновлення даних або для створення бекапа. Для монтування знімка у файловій системі використовуйте таку команду:

sudo mount /dev/myvg/myvolume_snap /mnt/snapshot

Тут /mnt/snapshot - це точка монтування, куди буде змонтовано знімок. Після монтування знімка можна скопіювати дані з нього або використовувати їх для відновлення даних.

Видалення знімка LVM

Після використання знімка його можна видалити. Для видалення знімка використовуйте команду lvremove. Наприклад, щоб видалити знімок myvolume_snap у групі томів myvg, використовуйте таку команду:

sudo lvremove /dev/myvg/myvolume_snapТут /mnt/snapshot - це точка монтування, куди буде змонтовано знімок. Після монтування знімка можна скопіювати дані з нього або використовувати їх для відновлення даних.
Зверніть увагу, що під час видалення знімка всі дані, які були змінені після створення знімка, будуть втрачені.

Thin pools

Thin pool - це механізм LVM, який дає змогу створювати логічний том, що використовує тільки ту частину фізичних дискових пристроїв, яка фактично містить дані. Це дає змогу знизити споживання дискового простору і більш ефективно керувати ним. Найбільшого поширення ця властивість LVM набула в системах віртуалізації, як зручне та економне рішення для виділення дискового простору для віртуальних машин і контейнерів. Давайте розглянемо, як створювати thin pool у LVM.

Створення thin pool LVM

Thin pool створюється за допомогою вже знайомої нам команди lvcreate. Наприклад, щоб створити thin pool mythinpool у групі томів myvg на фізичних томах /dev/sdb і /dev/sdc, використовуйте таку команду:

sudo lvcreate -L 50G -T myvg/mythinpool /dev/sdb /dev/sdc

Тут -L визначає розмір thin pool у гігабайтах, а -T вказує, що ми створюємо thin pool. Після виконання цієї команди буде створено thin pool mythinpool розміром 50 ГБ.

Створення thin volume LVM

Thin volume - це логічний том, який створюється всередині thin pool. Thin volume можна створити за допомогою команди lvcreate. Наприклад, щоб створити thin volume mythinvolume розміром 10 ГБ у thin pool mythinpool у групі томів myvg, використовуйте таку команду:

sudo lvcreate -V 10G -T myvg/mythinpool -n mythinvolume

Тут -V визначає розмір thin volume у гігабайтах, а -n вказує ім'я thin volume. Після виконання цієї команди буде створено thin volume mythinvolume розміром 10 ГБ всередині thin pool mythinpool.

Використання thin volume LVM

Thin volume може бути використаний як звичайний логічний том. Наприклад, щоб створити файлову систему ext4 на thin volume mythinvolume, використовуйте таку команду:

sudo mkfs.ext4 /dev/myvg/mythinvolume

Після створення файлової системи thin volume можна монтувати і використовувати як звичайний логічний том.

Thin pool дає змогу створювати більш гнучкі та ефективні конфігурації зберігання даних у Linux. Thin pool використовується в поєднанні з thin volume для оптимального використання дискового простору.