Серверное оборудование для бизнеса — надёжные решения для любых задач Подробнее →
Статья

LVM: управление дисками без головной боли

LVM (Logical Volume Manager) — один из тех инструментов, которые кардинально меняют подход к управлению дисковым пространством в Linux. Если вы ещё работаете с разделами напрямую, эта статья объяснит, почему стоит перейти на LVM уже сегодня.

Концепция PV / VG / LV

LVM работает в три уровня абстракции:

  • PV (Physical Volume) — физический диск или раздел, инициализированный под LVM (/dev/sdb, /dev/sdc1)
  • VG (Volume Group) — пул из одного или нескольких PV, единое пространство хранения
  • LV (Logical Volume) — виртуальный раздел внутри VG, на котором создаётся файловая система

Такая модель даёт главное преимущество: логические тома не привязаны к физическому расположению данных на диске.

Создание: с нуля за пять команд

# 1. Инициализируем диски как PV
pvcreate /dev/sdb /dev/sdc

# 2. Создаём Volume Group
vgcreate vg_data /dev/sdb /dev/sdc

# 3. Создаём Logical Volume (например, 100 ГБ)
lvcreate -L 100G -n lv_storage vg_data

# 4. Создаём файловую систему
mkfs.ext4 /dev/vg_data/lv_storage

# 5. Монтируем
mount /dev/vg_data/lv_storage /mnt/storage

Расширение LV на лету

Это то, ради чего многие переходят на LVM. Расширение без остановки сервиса:

# Добавляем новый диск в VG
pvcreate /dev/sdd
vgextend vg_data /dev/sdd

# Расширяем LV на всё доступное место
lvextend -l +100%FREE /dev/vg_data/lv_storage

# Расширяем файловую систему (ext4 — онлайн, без размонтирования)
resize2fs /dev/vg_data/lv_storage

Для XFS используйте xfs_growfs /mnt/storage — тоже без размонтирования.

Снапшоты

LVM-снапшоты — быстрый способ создать консистентную копию тома для бэкапа:

# Создаём снапшот размером 10 ГБ (COW-хранилище для изменений)
lvcreate -L 10G -s -n lv_storage_snap /dev/vg_data/lv_storage

# Монтируем снапшот (только чтение)
mount -o ro /dev/vg_data/lv_storage_snap /mnt/snap

# После бэкапа удаляем
lvremove /dev/vg_data/lv_storage_snap

Важно: снапшот растёт по мере изменения исходного тома. Если заполнится — он станет невалидным.

Thin Provisioning

Thin-тома позволяют выделить больше места, чем физически есть — удобно для dev-сред и виртуализации:

# Создаём thin pool
lvcreate -L 200G --thinpool tp_main vg_data

# Создаём thin-тома (суммарно больше, чем pool)
lvcreate -V 100G --thin -n vm01_disk vg_data/tp_main
lvcreate -V 100G --thin -n vm02_disk vg_data/tp_main
lvcreate -V 50G  --thin -n vm03_disk vg_data/tp_main

Мониторинг заполнения thin pool — обязателен:

lvs -o lv_name,data_percent,metadata_percent vg_data

Миграция данных: pvmove

pvmove позволяет перенести данные с одного физического диска на другой без остановки сервисов:

# Переносим всё с /dev/sdb на другие PV в VG
pvmove /dev/sdb

# После успешного переноса можно удалить PV из VG
vgreduce vg_data /dev/sdb
pvremove /dev/sdb

Процесс можно прервать и продолжить — LVM запоминает прогресс.

Мониторинг

Базовые команды для ежедневного использования:

pvs    # состояние физических томов
vgs    # состояние групп томов
lvs    # состояние логических томов
pvdisplay /dev/sdb   # детальная информация о PV
vgdisplay vg_data    # детальная информация о VG

LVM + LUKS: шифрование дисков

Связка LVM поверх LUKS — стандартный подход для шифрования данных:

# Шифруем физический диск
cryptsetup luksFormat /dev/sdb
cryptsetup open /dev/sdb sdb_crypt

# Создаём PV на зашифрованном устройстве
pvcreate /dev/mapper/sdb_crypt
vgcreate vg_secure /dev/mapper/sdb_crypt
lvcreate -L 50G -n lv_private vg_secure

LVM — must-have инструмент для любого Linux-администратора. Один раз разобравшись с концепцией PV/VG/LV, вы перестанете бояться перераспределения дискового пространства.

3 Ответа

  1. pvmove спас меня несколько раз, когда умирал диск и нужно было срочно эвакуировать данные. Главное — запускать его в screen или tmux, чтобы не потерять прогресс при обрыве SSH-сессии.

  1. Про thin provisioning написано правильно, но я бы добавил: обязательно настройте алерт на заполнение pool хотя бы на 80%, иначе при переполнении все thin-тома моментально уходят в read-only.

  1. Хорошая статья для начинающих. Не хватает раздела про метаданные VG — при большом количестве снапшотов они могут неожиданно занять много места.