LVM в Linux — что это, PV, VG, LV, снапшоты | Глоссарий FREEHOSTING

LVM

Logical Volume Manager
LVM — LVM — менеджер логических томов в Linux. Объединяет физические диски (PV) в группы (VG) и нарезает на логические тома (LV), которые можно расширять, уменьшать и снимать снапшоты на лету.

Определение простыми словами

LVM (Logical Volume Manager) — слой абстракции между физическими дисками и файловыми системами в Linux. Состоит из трёх уровней. Physical Volume (PV) — физический диск или раздел, отданный под LVM. Volume Group (VG) — пул из нескольких PV, объединённых в одно адресуемое пространство. Logical Volume (LV) — логический том, нарезанный из VG, на который кладётся файловая система.

Главные преимущества — гибкость и снапшоты. Том можно расширить, добавив новый диск в VG, без размонтирования и простоев. Можно снять снапшот для бэкапа консистентного состояния БД. Минус — добавляется ещё один слой, при сбоях на нём отлаживаться сложнее, чем на голом разделе.

Сравнение подходов к разметке

Способ Гибкость Снапшоты Сложность
Голый раздел Низкая Нет Низкая
LVM Высокая Да (CoW) Средняя
Btrfs Высокая Да (нативно) Средняя
ZFS Очень высокая Да + send/receive Высокая

Кейсы использования

  • Расширение раздела /var на VPS, когда логи и базы перестают помещаться — добавили диск, расширили VG и LV, ресайзнули ext4.
  • Снапшот перед обновлением системы или БД — если что-то пошло не так, откатились командой lvconvert —merge.
  • Thin provisioning: создать виртуальный том на 100 ГБ, физически занимая только реально использованные данные.
  • Шифрование поверх LVM (LUKS поверх LV) для разных томов с разными ключами.
  • Негативный сценарий: снапшоты LVM медленные при большой записи — каждый блок пишется дважды (CoW). Для активно меняющихся БД лучше использовать снапшоты на уровне СУБД или btrfs/ZFS.

Технические детали

Базовый сценарий: собрать VG из двух дисков, нарезать LV, расширить в будущем:

apt install lvm2

# 1. PV из двух дисков
pvcreate /dev/sdb /dev/sdc

# 2. Объединить в VG
vgcreate vg_data /dev/sdb /dev/sdc

# 3. Создать LV на 100 ГБ
lvcreate -L 100G -n lv_db vg_data
mkfs.ext4 /dev/vg_data/lv_db
mount /dev/vg_data/lv_db /mnt/db

# 4. Расширение на лету (добавили sdd в VG)
pvcreate /dev/sdd
vgextend vg_data /dev/sdd
lvextend -L +50G /dev/vg_data/lv_db
resize2fs /dev/vg_data/lv_db

# 5. Снапшот перед миграцией
lvcreate -s -L 10G -n lv_db_snap /dev/vg_data/lv_db

Связку с RAID 10 часто делают так: mdadm собирает массив, сверху ставится PV, дальше LVM нарезает тома под виртуалки.

Частые вопросы

Можно ли уменьшить LVM-том?

Да, но порядок строгий: сначала уменьшить файловую систему (resize2fs), потом сам LV (lvreduce). Для XFS уменьшение невозможно — только увеличение.

Тормозят ли снапшоты LVM?

Да, при большой нагрузке на запись. Снапшот хранит изменённые блоки методом Copy-on-Write, и каждая запись становится двойной. Для БД с активной записью используйте снапшоты на уровне СУБД или ZFS.

LVM или Btrfs — что выбрать?

LVM проще, стабильнее и лучше дружит с любой файловой системой. Btrfs даёт нативные снапшоты и сжатие, но менее предсказуем под высокой нагрузкой и требует свежего ядра.