Управление логическими томами (LVM) это полезный инструмент для управления большими томами хранения данных на Linux. Он позволяет создавать логические тома, которые могут охватывать несколько физических устройств хранения. Это обеспечивает гибкость в распределении дискового пространства, выходящую за рамки ограничений физических разделов диска.
В этом руководстве мы рассмотрим основы настройки и управления томами LVM на Debian & Ubuntu 18.04, 20.04 и 22.04.
Обзор LVM
Некоторые ключевые термины и понятия, связанные с LVM:
- Физические тома (PV) — Физические устройства хранения данных, обеспечивающие фактическую емкость хранения, например разделы на жестких дисках или SSD.
- Группы томов (VG) — Набор физических томов, сгруппированных вместе. Это позволяет объединять физические устройства хранения в более крупные пулы хранения.
- Логические тома (LV) — Виртуальные блочные устройства, которым выделяется пространство из группы базовых томов. Вы можете создавать, изменять размер и удалять логические тома по мере необходимости.
- Экстенты — Небольшие по размеру куски непрерывного пространства на физическом томе. При выделении логическому тому они обеспечивают хранение данных на томе.
Ключевым преимуществом LVM является абстракция между физическими дисками и логическими томами. Используя LVM, вам не нужно беспокоиться о специфике физического хранилища. Вы можете изменять размеры, делать снимки и перемещать логические тома без необходимости изменять базовые физические устройства.
Установка LVM
Чтобы начать работу с LVM, сначала нужно установить пакет lvm2:
$ sudo apt install lvm2
Это позволит установить все инструменты, необходимые для управления томами LVM.
Создание физических томов
Первым шагом является инициализация дисков или разделов как физических томов (PV), которые будут использоваться LVM.
Например, чтобы инициализировать /dev/sdb1
раздел как физический том LVM:
$ sudo pvcreate /dev/sdb1
Выходные данные:
Physical volume "/dev/sdb1" successfully created
Вы можете проверить доступные PV:
$ sudo pvs
Выходные данные:
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 --- <223.57G <223.57G
Здесь будет приведен список всех физических томов, к которым может получить доступ LVM.
Создание групп томов
Далее необходимо объединить один или несколько PV в группу томов (VG). VG будет выделено пространство из объединенных PV.
Например, чтобы создать группу томов под названием data
с помощью /dev/sdb1
PV:
$ sudo vgcreate data /dev/sdb1
Выходные данные:
Volume group "data" successfully created
Вы можете проверить доступные VG:
$ sudo vgs
Выход:
VG #PV #LV #SN Attr VSize VFree
data 1 0 0 wz--n- <223.57G <223.57G
Список деталей конкретного VG:
$ sudo vgdisplay data
Выходные данные:
--- Volume group ---
VG Name data
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size <223.57 GiB
PE Size 4.00 MiB
Total PE 57313
Alloc PE / Size 0 / 0
Free PE / Size 57313 / <223.57 GiB
Создание логических томов
После создания группы томов можно создавать логические тома (LV) в этой VG.
Например, чтобы создать логический том объемом 10 ГБ под названием logs
:
$ sudo lvcreate -L 10G -n logs data
Выходные данные:
Logical volume "logs" created.
Создается LV размером 10 ГБ под названием logs
в VG data
.
Чтобы создать LV, который использует все оставшееся свободное пространство в VG:
$ sudo lvcreate -l 100%FREE -n apps data
Выходные данные:
Logical volume "apps" created.
Проверка логических томов:
$ sudo lvs
Выходные данные:
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
apps data -wi-a----- <213.57G
logs data -wi-a----- 10.00G
Вы также можете посмотреть полный путь к созданным LV с помощью:
$ sudo lvdisplay
Вывод:
--- Logical volume ---
LV Path /dev/data/apps
LV Name apps
VG Name data
LV UUID XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
LV Write Access read/write
LV Creation host, time ubuntu-server, 2023-07-26 15:37:11 +0200
LV Status available
# open 0
LV Size <213.57 GiB
Current LE 54698
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2
Логические тома будут отображены на /dev/VG/LV
устройства, которые можно форматировать и монтировать, как и обычные разделы.
Форматирование и монтирование логических томов
Чтобы использовать логические тома LVM, их нужно отформатировать с помощью файловой системы, как и любое другое блочное устройство.
Например, чтобы отформатировать logs
LV в ext4 и смонтировать его по адресу /var/log
:
$ sudo mkfs.ext4 /dev/data/logs
$ sudo mkdir /var/log
$ sudo mount /dev/data/logs /var/log
Чтобы монтировать это автоматически при перезагрузке, добавьте следующее /etc/fstab
:
/dev/data/logs /var/log ext4 defaults 0 0
Проделайте то же самое с другими LV, которые вы хотите использовать постоянно.
Расширение логического тома
Одно из преимуществ LVM заключается в том, что вы можете легко расширять логические тома.
Например, чтобы увеличить logs
LV на 5 ГБ, сначала расширьте группу томов на 5 ГБ:
$ sudo lvextend -L +5G /dev/data/logs
Выходные данные:
Size of logical volume data/logs changed from 10.00 GiB (2560 extents) to 15.00 GiB (3840 extents).
Logical volume data/logs successfully resized.
Затем измените размер файловой системы:
$ sudo resize2fs /dev/data/logs
Выходные данные:
resize2fs 1.45.5 (07-Jan-2020)
Filesystem at /dev/data/logs is mounted on /var/log; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/data/logs is now 153600 (4k) blocks long.
Размер LV теперь составляет 5 ГБ.
Это гораздо проще, чем расширение дисковых разделов, которое требует таких мучительных действий, как перемещение и изменение размеров соседних разделов.
Уменьшение логического тома
Чтобы уменьшить LV, сначала измените размер файловой системы:
$ sudo resize2fs /dev/data/logs 20G
Выходные данные:
resize2fs 1.45.5 (07-Jan-2020)
Resizing the filesystem on /dev/data/logs to 5242880 (4k) blocks.
The filesystem on /dev/data/logs is now 5242880 (4k) blocks long.
Это уменьшает файловую систему до 20 ГБ.
Затем уменьшите размер LV до этого значения:
$ sudo lvreduce -L 20G /dev/data/logs
Выходные данные:
Size of logical volume data/logs changed from 15.00 GiB (3840 extents) to 20.00 GiB (5120 extents).
Logical volume data/logs successfully resized.
The logs
LV теперь уменьшен до 20 ГБ.
Создание моментальных снимков
LVM позволяет создавать снимки логических томов. Это можно использовать для создания резервных копий LV.
Например, создайте снимок тома logs
LV:
$ sudo lvcreate --size 10G --snapshot --name logs-snap /dev/data/logs
Выходные данные:
Logical volume "logs-snap" created.
В результате будет создан снимок под названием logs-snap
, который является копией logs
в то время, когда был сделан снимок.
Изначально снимок не занимает места, но по мере изменения исходного LV снимок будет увеличиваться для хранения старых блоков по мере их перезаписи.
Вы можете монтировать, создавать резервные копии или восстанавливать данные из моментального снимка так же, как и из обычного LV.
Мониторинг использования LVM
Важно следить за группами томов LVM и логическими томами, чтобы не допустить нехватки места.
Чтобы просмотреть выделенные физические экстенты для VG:
$ sudo vgdisplay -v data
Выходные данные:
--- Volume group ---
VG Name data
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size <223.57 GiB
PE Size 4.00 MiB
Total PE 57313
Alloc PE / Size 15360 / 60.00 GiB
Free PE / Size 41953 / <163.57 GiB
Для мониторинга использования LV:
$ sudo lvdisplay
Выходные данные:
--- Logical volume ---
LV Path /dev/data/logs
LV Name logs
VG Name data
LV UUID XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX
LV Write Access read/write
LV Creation host, time ubuntu-server, 2022-03-05 10:17:11 +0200
LV Status available
# open 0
LV Size 20.00 GiB
Current LE 5120
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
--- Logical volume ---
LV Path /dev/data/apps
LV Name apps
VG Name data
LV UUID XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX
LV Write Access read/write
LV Creation host, time ubuntu-server, 2023-07-26 15:37:11 +0200
LV Status available
# open 0
LV Size <193.57 GiB
Current LE 49408
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
Можно также установить утилиту мониторинга LVM, например lvm2 snarf
для получения уведомлений о превышении пороговых значений использования.
Преимущества LVM
К числу основных преимуществ LVM относятся:
- Гибкость в увеличении и уменьшении логических томов по мере необходимости, без ограничений на разделы.
- Удобное создание моментальных снимков и резервных копий томов.
- Объедините хранилища с нескольких устройств в общую группу томов.
- Миграция данных путем перемещения логических томов между устройствами хранения.
- Выделяйте логические тома с чередованием, зеркальным отображением или шифрованием.
В целом LVM обеспечивает мощное и гибкое управление хранением данных для ваших серверов Ubuntu. Немного освоившись, он может оказаться чрезвычайно полезным для управления большими и растущими потребностями в хранении данных.
Заключение
LVM обеспечивает надёжный способ управления крупномасштабными и динамическими системами хранения данных в Ubuntu и Debian. Используя LVM, вы можете эффективно справляться с постоянно меняющимися потребностями в хранении, а также реализовать такие ключевые функции, как моментальные снимки и тонкое выделение ресурсов. Однако это требует изучения некоторых новых концепций и команд. После некоторой практической работы LVM может стать незаменимой частью процесса развертывания и управления хранилищем Ubuntu. При правильном использовании он может сэкономить вам много времени и хлопот по мере роста и изменения ваших потребностей. Гибкость, позволяющая динамически увеличивать, уменьшать и перемещать тома, делает LVM достойным первоначальных усилий по изучению.