Выберите продукт

Linux LVM: resize томов, snapshots и диагностика

Практическое руководство по LVM: как быстро инвентаризировать PV/VG/LV, восстановить видимость томов через vgscan/vgchange, безопасно расширить или уменьшить LV и файловую систему (ext4/XFS), а также создавать, контролировать и удалять snapshots для откатов и бэкапов.
Linux LVM: resize томов, snapshots и диагностика

Зачем LVM администратору: быстрые изменения диска без переустановок

LVM (Logical Volume Manager) — это слой абстракции между дисками/разделами и файловой системой. На практике LVM ценят за две вещи: возможность менять размеры томов (расширять и, иногда, уменьшать) и возможность делать снимки (snapshots) для быстрых откатов/бэкапов.

Ниже — типовые операции, которые чаще всего ищут как “lvm resize”: расширение/уменьшение logical volume (команды lvextend/lvreduce) и приведение в соответствие файловой системы (команды resize2fs для ext4 и xfs_growfs для XFS). Плюс — базовая диагностика и активация томов через vgscan/vgchange.

Уменьшение тома всегда рискованнее расширения. Особенно это касается XFS: XFS штатно не умеет уменьшаться. Для критичных данных заранее проверьте бэкапы и план отката.

Короткая шпаргалка по терминам: PV, VG, LV

Чтобы команды не выглядели магией, держим в голове простую модель:

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

Типовой путь: диск/раздел → PV → VG → LV → файловая система (ext4/XFS).

Схема уровней LVM: PV, VG и LV между диском и файловой системой

Диагностика и инвентаризация LVM: что есть в системе прямо сейчас

Перед любыми изменениями сначала фиксируем факты: какие устройства видны, какие группы активны, где смонтированы файловые системы и сколько в них места.

lsblk -f
pvs
vgs
lvs -a -o +devices
findmnt -rno SOURCE,TARGET,FSTYPE,SIZE,AVAIL,USED

Что полезно смотреть в выводах:

  • в vgs — свободное место в VG (поле VFree), чтобы понять, есть ли чем расширять LV;
  • в lvs -o +devices — из каких PV собран LV (важно для понимания рисков и миграций);
  • в lsblk -f — тип ФС (ext4/XFS) и точки монтирования.

Если вы расширяете диск на виртуализации, полезно держать под рукой пошаговый сценарий “увеличили диск → расширили раздел → pvresize → lvextend → grow FS”. Отдельно разобрано в материале: как безопасно увеличить диск и раздел на VDS.

FastFox VDS
Облачный VDS-сервер в России
Аренда виртуальных серверов с моментальным развертыванием инфраструктуры от 195₽ / мес

Когда том «пропал» после загрузки: vgscan и vgchange

После аварийной перезагрузки, миграции или изменения порядка дисков группы LVM могут не активироваться автоматически, и LV не появляются в /dev/mapper/. Тогда помогают две классические команды: vgscan и vgchange.

vgscan
vgchange -ay

vgscan пересканирует PV и найдёт группы, а vgchange -ay активирует все найденные VG (и, соответственно, LV внутри них).

Если нужно активировать конкретную группу:

vgscan
vgchange -ay vg0

Проверяем, что устройства появились:

lvs
ls -l /dev/vg0

Расширение LVM (lvm resize) в правильном порядке: сначала «дать место», потом «растянуть ФС»

В расширении почти всегда участвуют два шага:

  1. увеличить размер LV (LVM-уровень) — lvextend;
  2. увеличить файловую систему (FS-уровень) — resize2fs или xfs_growfs.

Перед этим у VG должно появиться свободное место. Оно появляется либо после увеличения существующего PV (через pvresize), либо после добавления нового диска в VG.

Сценарий A: увеличили размер диска/раздела, теперь нужно pvresize

Частый кейс на виртуалках: вы увеличили виртуальный диск в панели, расширили раздел (если он есть), и дальше LVM нужно «увидеть» новый размер.

1) Убедитесь, что ядро видит новый размер устройства:

lsblk
blockdev --getsize64 /dev/sda

2) Если LVM стоит на разделе (например, /dev/sda3), расширьте раздел подходящим вам инструментом, затем обновите информацию о PV:

pvresize /dev/sda3

3) Проверьте, что свободное место появилось в VG:

vgs
pvs

Ключевой момент: без pvresize команда lvextend просто не из чего будет расширять LV.

Сценарий B: добавили новый диск и расширяем VG

Если подключили новый диск (например, /dev/sdb), делаем из него PV и добавляем в VG:

pvcreate /dev/sdb
vgextend vg0 /dev/sdb
vgs

Увеличиваем LV: lvextend

Когда в vgs есть свободное место, расширяем нужный LV. Два удобных варианта:

  • добавить конкретный объём;
  • занять всё свободное место VG.
lvextend -L +20G /dev/vg0/data
lvextend -l +100%FREE /dev/vg0/data

Проверяем новый размер LV:

lvs /dev/vg0/data
lsblk -f

Увеличиваем файловую систему: resize2fs для ext4 и xfs_growfs для XFS

Дальше команды зависят от типа файловой системы.

ext4: resize2fs

Для ext4 расширение обычно можно делать онлайн (на смонтированной ФС):

resize2fs /dev/vg0/data

Проверка:

df -hT /mountpoint

XFS: xfs_growfs

XFS расширяется только в смонтированном состоянии. Команда применяется к точке монтирования:

xfs_growfs /mountpoint

Проверка:

df -hT /mountpoint

Одна команда «всё сразу»: lvextend -r (осознанно)

Во многих дистрибутивах lvextend умеет сразу вызвать правильный resize для ФС через опцию -r (resizefs). Это удобно, но используйте, только если вы уверены в типе ФС и наличии нужных утилит.

lvextend -r -L +20G /dev/vg0/data

Если нужен максимально предсказуемый процесс — делайте расширение LV и ФС отдельными командами.

Уменьшение LVM: lvreduce и почему порядок действий обратный

Уменьшение — место, где чаще всего «стреляют в ногу». Нельзя сначала уменьшить LV, если файловая система всё ещё считает, что место есть. Иначе данные окажутся «за границей» устройства.

Правильный порядок для ext4:

  1. уменьшить файловую систему (как правило, offline — с отмонтированием);
  2. уменьшить LV командой lvreduce;
  3. смонтировать обратно и проверить.

ext4: пример безопасного уменьшения

Допустим, нужно уменьшить /dev/vg0/data до 50G.

1) Отмонтируем (если это не root и не критический сервис):

umount /mountpoint

2) Проверим ФС и уменьшим её до целевого размера:

e2fsck -f /dev/vg0/data
resize2fs /dev/vg0/data 50G

3) Уменьшим сам LV до 50G:

lvreduce -L 50G /dev/vg0/data

4) Смонтируем обратно и проверим:

mount /mountpoint
df -hT /mountpoint

Опция lvreduce -r существует, но для уменьшения лучше контролировать шаги вручную и видеть ошибки e2fsck/resize2fs отдельно.

XFS: штатно не уменьшается

Если на LV лежит XFS и нужно уменьшить объём, стандартный путь такой: создать новый LV меньшего размера, сделать новую XFS, скопировать данные (например, rsync), переключить точку монтирования. Прямого аналога resize2fs на уменьшение для XFS нет; xfs_growfs работает только на рост.

Если вы выбираете файловую систему под проект и заранее знаете, что могут понадобиться “поджатия”, полезно понимать практические ограничения ext4 и XFS. По теме — разбор различий и сценариев: ext4 vs XFS на VDS: настройка и эксплуатация.

Контроль LVM snapshot: создание снимка и мониторинг заполнения data_percent

LVM snapshot: как работает и когда полезен

LVM snapshot — это снимок LV на момент времени. Технически это copy-on-write: пока данные не меняются, snapshot почти не занимает места; как только блоки в исходном LV перезаписываются, старые версии блоков сохраняются в snapshot.

Практические выводы:

  • snapshot нужно выделить место (COW-область). Если место закончится — snapshot станет непригоден и его придётся удалять;
  • чем активнее запись в origin-LV, тем быстрее растёт snapshot;
  • snapshot не заменяет нормальный бэкап, но отлично подходит для коротких рискованных операций: обновления, миграции, снятия консистентной копии.

Создание snapshot

Пример: делаем snapshot размера 10G для /dev/vg0/data:

lvcreate -s -L 10G -n data_snap_2026-01-17 /dev/vg0/data
lvs -a

После этого snapshot можно смонтировать read-only и снять файловый бэкап:

mkdir -p /mnt/data-snap
mount -o ro /dev/vg0/data_snap_2026-01-17 /mnt/data-snap

Проверить заполнение COW-области (это ключевой контроль):

lvs -a -o lv_name,lv_size,origin,data_percent,metadata_percent,lv_attr /dev/vg0/data_snap_2026-01-17

Если data_percent приближается к 100%, snapshot нужно увеличить или завершить операцию и удалить — иначе он переполнится.

Увеличение места snapshot (если не рассчитали)

Snapshot — это такой же LV, его можно расширять:

lvextend -L +5G /dev/vg0/data_snap_2026-01-17
lvs -a -o lv_name,lv_size,data_percent /dev/vg0/data_snap_2026-01-17

Удаление snapshot

Когда snapshot больше не нужен:

umount /mnt/data-snap
lvremove /dev/vg0/data_snap_2026-01-17

Откат на snapshot (rollback через merge)

Откат опаснее создания snapshot: вы возвращаете состояние origin-тома назад во времени и теряете изменения после момента снимка. Убедитесь, что сервисы остановлены и том не используется.

umount /mountpoint
lvconvert --merge /dev/vg0/data_snap_2026-01-17

После merge иногда требуется повторная активация тома или перезагрузка (зависит от того, где и как смонтирован том). Затем монтируем обратно и проверяем.

Частые ошибки и быстрые проверки

1) «Нет места», хотя диск увеличили

Почти всегда пропущен шаг pvresize (если расширяли существующий PV) или не добавили новый диск в VG (pvcreate + vgextend).

pvs
vgs

2) LV расширили, а df не изменился

Это ожидаемо: df показывает размер файловой системы, а не LV. Нужно выполнить resize2fs (ext4) или xfs_growfs (XFS).

3) Snapshot внезапно «сломался»

Чаще всего он переполнился. Смотрите data_percent. Для активной записи не экономьте размер snapshot и не держите снимок дольше необходимого.

4) Томов не видно после восстановления/миграции

Используйте связку vgscan и vgchange -ay, проверьте появление устройств, и только потом чините монтирование.

FastFox SSL
Надежные SSL-сертификаты
Мы предлагаем широкий спектр SSL-сертификатов от GlobalSign по самым низким ценам. Поможем с покупкой и установкой SSL бесплатно!

Мини-чеклист перед lvm resize в проде

  • Понимаете тип ФС: ext4 или XFS.
  • Есть актуальный бэкап или понятный план отката (snapshot подходит для «коротких работ», но не заменяет бэкап).
  • Проверили свободное место в VG: vgs.
  • Для расширения: сначала lvextend, затем resize2fs или xfs_growfs.
  • Для уменьшения ext4: сначала e2fsck и resize2fs (обычно offline), затем lvreduce.
  • Для XFS: уменьшение делается только через перенос данных на новый меньший том.
  • Для snapshot: мониторите data_percent и не держите снимки дольше необходимого.

Итоги

LVM закрывает сразу несколько админских задач: гибкое управление дисковым пространством и быстрые снимки для безопасных операций. В большинстве случаев вам нужны несколько команд: pvresize, vgscan/vgchange, lvextend/lvreduce и корректный resize файловой системы (resize2fs или xfs_growfs). Главное — соблюдать порядок действий и помнить про ограничение XFS на уменьшение.

Для проектов на виртуальных серверах это особенно удобно: LVM позволяет без даунтайма (или с минимальным окном) добавлять место под базы, логи и медиа. Если вы выбираете площадку под такие задачи, смотрите тарифы VDS и планируйте дисковую схему с запасом под рост.

Поделиться статьей

Вам будет интересно

Linux: /etc/fstab и emergency mode (rescue) — как быстро поднять систему после ошибки монтирования OpenAI Статья написана AI (GPT 5)

Linux: /etc/fstab и emergency mode (rescue) — как быстро поднять систему после ошибки монтирования

Если после перезагрузки Linux падает в emergency mode или rescue из‑за /etc/fstab, чаще всего виноваты неверный UUID, опции монтир ...
Linux: когда зависает PID 1 (systemd) — D-state, stop-jobs и hung_task OpenAI Статья написана AI (GPT 5)

Linux: когда зависает PID 1 (systemd) — D-state, stop-jobs и hung_task

Если растёт load average, сервисы не останавливаются, а перезагрузка висит на stop jobs — часто виноваты D-state и блокировки I/O. ...
systemd hardening: DynamicUser, ProtectSystem и практичный sandboxing для сервисов OpenAI Статья написана AI (GPT 5)

systemd hardening: DynamicUser, ProtectSystem и практичный sandboxing для сервисов

Пошагово усиливаем безопасность systemd-сервисов без контейнеров: включаем DynamicUser, ограничиваем файловую систему через Protec ...