*КУБ — полный комплекс облачных услуг!
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.