LVM — что это и зачем
LVM — слой абстракции между физическими дисками и файловыми системами в Linux. Объединяет диски в пулы (Volume Groups), нарезает их на логические тома (Logical Volumes) и позволяет изменять размер на лету. Альтернатива классическому partitioning, которая делает работу с дисками гибкой.
LVM (Logical Volume Manager)
LVM — слой абстракции между физическими дисками и файловыми системами в Linux. Объединяет диски в пулы (Volume Groups), нарезает их на логические тома (Logical Volumes) и позволяет изменять размер на лету. Альтернатива классическому partitioning, которая делает работу с дисками гибкой.
Что это в одном абзаце
Без LVM схема такая: диск → раздел → файловая система. Раздел нельзя растянуть, не выключив систему и не перенарезав диск. С LVM появляется промежуточный слой: диски (или их разделы) превращаются в PV (Physical Volumes), несколько PV объединяются в VG (Volume Group), а из VG нарезаются LV (Logical Volumes), на которых уже живёт файловая система. Размер LV можно менять на лету, добавлять новые диски в VG, переносить данные между PV без даунтайма.
sudo pvs # physical volumes
sudo vgs # volume groups
sudo lvs # logical volumes
sudo lsblk # увидите LVM-устройства как /dev/<vg>/<lv>
При установке Ubuntu Server инсталлятор предлагает «use LVM with the new ubuntu group» — это рекомендованная схема для серверов.
Из чего состоит LVM
Три уровня:
- PV (Physical Volume) — физический том. Это либо целый диск (
/dev/sdb), либо раздел (/dev/sda3), помеченный как PV черезpvcreate. С точки зрения LVM это «сырое пространство». - VG (Volume Group) — группа томов. Это пул, в который собираются один или несколько PV. Свободное место VG = сумма свободного места всех её PV.
- LV (Logical Volume) — логический том. Нарезается из VG; именно на LV живёт файловая система. Создаётся через
lvcreate, форматируется обычнымmkfs.ext4.
[ /dev/sda3 ] [ /dev/sdb ] <- PV
\ /
[ ubuntu-vg ] <- VG (пул)
/ | \
[root] [home] [var] <- LV (тома, на которых ext4/xfs/...)
Полная схема Ubuntu по умолчанию — одна VG ubuntu-vg, в ней один LV ubuntu-lv на 100% места. Это «LVM-без-LVM», но дальше можно расширять.
Зачем нужен LVM
Расширение тома без даунтайма. Закончилось место в /var? Добавили диск в VG — и lvextend -L +50G /dev/ubuntu-vg/var && resize2fs /dev/ubuntu-vg/var без размонтирования.
Объединение дисков. Два диска по 1 ТБ → одна VG на 2 ТБ → один том на 1.8 ТБ. Без RAID, просто конкатенация. Производительность не растёт, но удобство — да.
Снапшоты. lvcreate --snapshot делает мгновенный copy-on-write слепок LV. Можно использовать для бэкапов: «снимок → бэкап с него → удалили снимок». LVM-снимки тяжелее btrfs-снимков, но универсальнее (работают на ext4, xfs).
Перенос данных между дисками. pvmove /dev/sda3 /dev/sdb1 копирует все данные с одного PV на другой, не выключая систему. Удобно при замене изношенного диска.
Тонкие тома (thin provisioning). Можно создать LV «на 100 ГБ», который физически занимает только реально записанные данные. Удобно для контейнеров и VM-снапшотов.
Базовые команды
Создание стека «с нуля»:
# 1. Помечаем диски как PV
sudo pvcreate /dev/sdb /dev/sdc
# 2. Создаём VG из них
sudo vgcreate data /dev/sdb /dev/sdc
# 3. Нарезаем LV
sudo lvcreate -L 100G -n logs data
sudo lvcreate -l 100%FREE -n media data
# 4. Форматируем и монтируем
sudo mkfs.ext4 /dev/data/logs
sudo mkfs.ext4 /dev/data/media
sudo mkdir -p /mnt/logs /mnt/media
sudo mount /dev/data/logs /mnt/logs
sudo mount /dev/data/media /mnt/media
Расширение существующего тома:
# Добавить новый диск в VG
sudo pvcreate /dev/sdd
sudo vgextend data /dev/sdd
# Расширить LV до конца VG
sudo lvextend -l +100%FREE /dev/data/logs
# Расширить файловую систему (для ext4)
sudo resize2fs /dev/data/logs
Все три шага можно объединить флагом -r:
sudo lvextend -r -L +50G /dev/data/logs # сразу расширит и FS
В /etc/fstab LV прописываются как обычные блочные устройства:
/dev/data/logs /mnt/logs ext4 defaults,noatime 0 2
Лучше использовать UUID: blkid /dev/data/logs → копируете в fstab.
LVM vs btrfs/ZFS
LVM решает похожие задачи с современными файловыми системами, но иначе:
| Возможность | LVM | btrfs | ZFS |
|---|---|---|---|
| Расширение тома | ✅ | ✅ | ✅ |
| Снапшоты | ✅ (медленно) | ✅ (быстро, COW) | ✅ |
| Чексуммы данных | ❌ | ✅ | ✅ |
| Сжатие | ❌ | ✅ | ✅ |
| RAID встроенный | базовый | RAID 0/1/10 | RAID-Z |
| Зрелость | очень высокая | средняя | высокая |
| Лицензия | GPL | GPL | CDDL (трения) |
Когда LVM — правильный выбор:
- Хочется ext4 или xfs. Эти ФС не имеют встроенного volume manager — LVM единственный путь к гибкости.
- Сервер, где важна стабильность. LVM в ядре с 1998 года, отлично отполирован. btrfs всё ещё ловит «not great» в некоторых сценариях RAID.
- Сложная схема с ручным управлением (несколько VG, тонкие пулы, миграция между дисками). LVM умеет это лучше.
Когда брать btrfs:
- Снапшоты постоянно — на LVM они тяжелее по записи (copy-on-write через таблицу exceptions).
- Чексуммы — для защиты от тихой коррупции данных.
- Декларативная настройка — один
mkfs.btrfs, без слоёв PV/VG/LV.
LVM не исключает btrfs — можно сделать btrfs поверх LV, тогда у вас будет и гибкость томов, и фишки btrfs. На практике делают одно из двух: либо чистый LVM + ext4/xfs, либо чистый btrfs.
Грабли LVM
- Загрузчик и LVM —
/bootобычно держат вне LVM, отдельным разделом. Не все варианты GRUB корректно бутятся с LVM-корня; стандартная схема Ubuntu —/bootна физическом разделе, остальное в LVM. - Восстановление — если потеряли VG-конфигурацию, нужно
vgcfgrestore. Поэтому всегда держите бэкап/etc/lvm/backup/<vg>где-то вне сервера. - Снапшоты съедают I/O — каждая запись в исходный LV копирует «старый» блок в снапшот. На write-heavy нагрузке это заметная просадка. Для частых снимков лучше btrfs.
- Шринк (
lvreduce) — опасная операция: сначала уменьшить файловую систему (resize2fs <fs> <new-size>), только потом сам LV (lvreduce). Перепутаете порядок — потеряете данные.
Частые вопросы
Что такое LVM в Linux простыми словами
Это «менеджер дисков»: вместо привычной схемы «диск → раздел → файловая система» LVM добавляет промежуточный пул, в который можно сложить несколько дисков и потом нарезать из него тома любого размера. Главная польза — менять размер томов на лету, без выключения системы.
Чем LVM отличается от обычных разделов
Обычный раздел — это фиксированный кусок диска, который нельзя легко расширить. LV (логический том в LVM) — это «гибкий раздел»: его можно увеличить, добавив диск в группу томов, или ужать (с осторожностью). Плюс снапшоты, перенос между дисками, конкатенация нескольких дисков в один том.
Что такое PV, VG и LV в LVM
Это три уровня абстракции LVM. PV (Physical Volume) — физический том, помеченный для использования в LVM (целый диск или раздел). VG (Volume Group) — пул, в который объединяются один или несколько PV. LV (Logical Volume) — логический том, нарезанный из VG; на нём уже живёт файловая система.
Можно ли расширить LVM-том без перезагрузки
Да, это одна из главных причин использовать LVM. Команда sudo lvextend -r -L +50G /dev/<vg>/<lv> расширит и сам том, и файловую систему на нём — без размонтирования. Работает для ext4 и xfs (для xfs — только увеличение, ужать xfs нельзя в принципе).
LVM или btrfs — что выбрать на Ubuntu
Если нужна максимальная стабильность, классические ext4/xfs и сложные схемы с управлением томами — берите LVM. Если важны быстрые снапшоты, чексуммы данных и сжатие — btrfs. Подробнее про btrfs — btrfs снапшоты и subvolume. Можно совмещать: btrfs поверх LV.
Использует ли Ubuntu LVM по умолчанию
При установке Ubuntu Server 24.04 в инсталляторе есть опция «Use an entire disk» с галочкой «Set up this disk as an LVM group» — это рекомендованная схема. Дефолт — одна VG ubuntu-vg с одним LV на 100% диска. Дальше можно дорезать LV под /home, /var и т. д. Ubuntu Desktop по умолчанию ставится без LVM (на простой раздел).
Что почитать
- btrfs снапшоты и subvolume — современная альтернатива LVM-снапшотам с быстрым copy-on-write и встроенными чексуммами.
- swap — swap-раздел можно держать на отдельном LV; удобно для динамического пересоздания.
- systemd —
systemctl status local-fs.targetпомогает в отладке проблем с монтированием LVM-томов при загрузке.