LVM в Linux

Описание

LVM (Logical Volume Manager) — система управления логическими разделами. Позволяет агрегировать несколько устройств в один или несколько пулов (групп томов). Объем LVM можно произвольно распределять между логическими томами. Логический том состоит из объединения "физических экстентов", и представляют собой виртуальные устройства хранения для размещения ФС.

Создание LVM разделов

Подготовка

Для создания LVM раздела нужно создать раздел через fdisk, указать для него id = 8e, что соответствует Linux LVM, затем можно создать физические LVM тома или можно сразу это сделать с диском не разбивая его на разделы.

Подготовка разделов
fdisk /dev/sdb
Создание двух разделов по 500M
n
p (тип раздела primary)
1 (номер раздела 1)
+500M (размер раздела, если не указать будет взят диск целиком)

n
p (тип раздела primary)
2 (номер раздела 2)
+500M (размер раздела, если не указать будет взят диск целиком)
Смена типа разделов
t
1
8e

t
2
8e
Проверка
p
Запись
w

Физические тома LVM

При инициализации физического тома LVM всё устройство будет размечено на небольшие сегменты данных (физические экстенты), и будет записан специальный заголовок.

Создание физических разделов LVM
pvcreate /dev/sdb1
pvcreate /dev/sdb2
Создание физических разделов LVM из всего диска
pvcreate /dev/sdb
Вывод подробного списка физических томов
pvdisplay
Вывод сокращенного списка физических томов
pvs

Группы томов LVM

Группа LVM создается из одного или нескольких физических томов. Физический том может входить только в одну группу.

Создание группы LVM из одного тома
vgcreate vg1 /dev/sdb1
из нескольких томов
vgcreate vg1 /dev/sdb1 /dev/sdb2
из всего диска
vgcreate vg1 /dev/sdb
Добавление раздела в группу
vgextend vg1 /dev/sdb2
Удаление группы
vgremove vg1
Вывод подробного списка групп
vgdisplay
Вывод сокращенного списка групп
vgs

Разделы LVM

Создание логических разделов LVM
Создание LVM раздела lv1 размером 2 ГБ из группы vg1
lvcreate -n lv1 -L 2G vg1
Создание LVM раздела lv1 размером 100% свободного места
lvcreate -n lv1 -l 100%FREE vg1
Вывод подробного списка логических томов
lvdisplay
Вывод сокращенного списка логических томов
lvs
Вывод всех LVM разделов с их именами
lvscan

Создание файловой системы

После создания раздела нужно создать на нем файловую систему утилитой mkfs.

Создание файловой системы
mkfs.ext4 /dev/vg1/lv1
mkfs.ext4 /dev/vg1/lv2
После форматирования раздела его можно примонтировать
mount /dev/mapper/lv1 /mnt/data

В каталоге /dev/mapper располагаются логические устройства LVM, имя устройства является постоянным, для монтирования можно использовать его или uuid, только при использовании uuid нужно использовать uuid устройства логического раздела.

Полное удаление раздела LVM

Нужно удалить строку автоматического монтирования из
/etc/fstab
Отмонтировать
umount /mnt/data
Удалить логический том
lvremove /dev/vg1/lv1
Удалить группу
vgremove vg1
Удалить физический том
pvremove /dev/sdb1

Расширение логического тома LVM

    План действий
  1. Проанализировать достаточно ли места
  2. Если не хватает, создать физический LVM том
  3. Расширить группу логических LVM томов
  4. Расширить логический LVM том
  5. Расширить файловую систему
  6. Проверить результат
Добавление раздела в группу
vgextend vg1 /dev/sdb1
    Изменение размера LVM тома
  • lvextend -L +300M /dev/mapper/lv1 добавить 300 МБ к разделу
  • lvextend -L 300M /dev/mapper/lv1 размер будет установлен абсолютно, размер раздела будет 300 МБ
  • lvextend -l 128 /dev/mapper/lv1 сделать размер логического тома равным 128 экстентов
  • lvextend -l +128 /dev/mapper/lv1 добавить 128 экстентов к текущему размеру логического тома
  • lvextend -L 128M /dev/mapper/lv1 сделать размер логического тома равным 128 МБ
  • lvextend -L +128M /dev/mapper/lv1 добавить 128 МБ к текущему размеру логического тома
  • lvextend -l +50%FREE /dev/mapper/lv1 добавить 50% текущего свободного пространства в группе томов в логический том

Не каждая файловая система поддерживает динамическое расширение.

Расширение размера файловой системы xfs, чтобы она заняла расширенный логический том. Для работы xfs_growfs нужно, чтобы файловая система была смонтирована в момент расширения.
xfs_growfs /mnt/data
Расширение размера файловой системы ext4.
resize2fs /dev/vg1/lv1