ServerAID
Найти гайд, команду, тег… ⌘ K
Глоссарий  ·  термин

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; удобно для динамического пересоздания.
  • systemdsystemctl status local-fs.target помогает в отладке проблем с монтированием LVM-томов при загрузке.

Похожие материалы

grep — что это и зачем
Глоссарий

grep — что это и зачем

grep — стандартная команда Linux для поиска строк по шаблону внутри текстовых файлов и потоков. Берёт текст на вход, отдаёт строки, в которых нашлось совпадение. Базовый инструмент работы с логами, конфигами, выводом других команд через пайп.

Редакция
find — что это и зачем
Глоссарий

find — что это и зачем

find — стандартная команда Linux для поиска файлов и каталогов по имени, типу, правам, размеру, дате и десяткам других критериев. С помощью `-exec` поверх найденного можно сразу выполнять команды. Универсальный инструмент админа для массовой работы с файловой системой.

Редакция
snap — что это и зачем
Глоссарий

snap — что это и зачем

snap — система упаковки и установки приложений от Canonical, разработанная как альтернатива apt. Каждый snap — самодостаточный пакет со своими зависимостями, изолированный от системы через AppArmor. Используется на Ubuntu для Firefox, Chromium, microk8s и многих desktop-приложений.

Редакция
swap — что это и зачем
Глоссарий

swap — что это и зачем

swap — пространство на диске, которое Linux использует как «продолжение» оперативной памяти, когда физической RAM не хватает. Бывает в виде отдельного swap-раздела или файла. На современных серверах с большим количеством RAM swap всё равно нужен — но не для скорости, а для устойчивости.

Редакция