Бортовой журнал
Бортовой журнал

В работе с серверами рано или поздно возникает задача расширения дискового пространства. При этом остановка сервисов нежелательна — она ведёт к простоям и потере доступности.

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

Что такое LVM и зачем он нужен

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

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

Использование LVM особенно актуально там, где администратор сам управляет дисками и томами. Поэтому для таких задач подходят VPS и VDS серверы: они дают необходимый уровень доступа и позволяют масштабировать хранилище без простоев.

Когда требуется расширение диска без остановки сервисов

Расширение диска без остановки сервисов необходимо, когда на сервере почти закончилось свободное место, а прерывать его работу нельзя (например, для веб‑сайтов, баз данных, корпоративных или почтовых сервисов). Простой даже на короткое время может привести к ошибкам и недоступности сервиса.

Нехватка места возникает из‑за:

  • роста объёма логов;
  • увеличения размера базы данных;
  • загрузки новых файлов пользователями;
  • расширения каталогов с резервными копиями;
  • заполнения системных разделов.

Решить проблему помогает LVM: он позволяет добавить дисковое пространство и передать его нужному логическому тому без остановки приложений — то есть масштабировать хранилище без простоев.

Основные компоненты LVM

LVM строится из нескольких уровней:

  • Physical Volume (PV) — физический том. Это реальный диск или раздел диска, который LVM использует как основу для хранения данных.
  • Volume Group (VG) — группа томов. Она объединяет один или несколько физических томов в общее пространство хранения. Проще говоря, VG — это общий пул дискового места, из которого потом выделяются нужные объёмы.
  • Logical Volume (LV) — логический том. Это виртуальный раздел, который создаётся внутри группы томов. Именно с ним обычно работает администратор: форматирует его в файловую систему, монтирует и использует под данные, базы, логи или приложения.
  • Physical Extent (PE) — физический экстент. Это небольшие блоки, на которые LVM делит физическое пространство внутри группы томов. За счёт таких блоков система может гибко распределять место между логическими томами.
  • Logical Extent (LE) — логический экстент. Это блоки логического тома, которые по размеру соответствуют physical extent. LVM сопоставляет LE и PE, чтобы связать логические тома с реальным местом на дисках.

Сначала LVM берёт физический диск или раздел, потом добавляет его в общее пространство хранения, а уже из него создаёт логические тома нужного размера. За счёт этого можно гибко менять объём разделов и добавлять место без переразметки диска.

Проверка текущего состояния дисков и разделов

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

Посмотрите общий список дисков и разделов:

lsblk

Команда выведет структуру устройств — покажет физические диски, разделы, точки монтирования и LVM‑тома. По этим данным легко быстро определить, какой диск уже используется системой, а какой можно задействовать.

Затем проверьте таблицу разделов и размеры устройств:

fdisk -l

В выводе вы увидите подробную информацию о дисках — их объёме и существующих разделах. С её помощью легко проверить, видит ли система новый диск или увеличенный размер виртуального накопителя.

После этого стоит проверить состояние LV:

pvs
vgs
lvs

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

Дополнительно стоит проверить занятость файловой системы:

df -h

Так можно увидеть, какие разделы почти заполнены, где именно не хватает места и какой том нужно расширять в первую очередь.

Добавление нового диска или раздела в LVM

Если свободного места в текущей группе томов не хватает, в LVM можно добавить новый диск или отдельный раздел.

Сначала нужно убедиться, что система видит новое устройство:

lsblk

Если был подключён новый диск, например /dev/sdb, его можно сразу подготовить для LVM:

pvcreate /dev/sdb

Далее добавьте диск в существующую группу томов:

vgextend vg_data /dev/sdb

Если в LVM нужно включить не весь диск, а только раздел, сначала создайте раздел, а затем инициализируйте его как физический том:

pvcreate /dev/sdb1
vgextend vg_data /dev/sdb1

Расширение Volume Group

Сначала убедитесь, что нужный диск или раздел подготовлен как Physical Volume:

sudo pvs

Найдите в списке новое устройство и проверьте его имя. Затем расширьте группу томов:

sudo vgextend vgdata /dev/sdb

Здесь vgdata — имя вашей группы томов, а /dev/sdb — новый физический том, который вы добавляете.

Посмотрите состояние группы томов:

sudo vgs

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

sudo vgdisplay

Обратите внимание на параметр Free PE / Size. Он покажет, сколько свободного пространства теперь есть внутри группы томов.

Увеличение Logical Volume

После того как в Volume Group появилось свободное место, его можно передать нужному логическому тому. На этом этапе увеличивается сам Logical Volume, то есть раздел, с которым работает файловая система.

Чтобы расширить том, используют команду lvextend. Например:

lvextend -L +20G /dev/vg_data/lv_data

В нашем примере к логическому тому /dev/vg_data/lv_data добавляется 20 ГБ.

Если нужно передать тому всё свободное место из группы, удобнее использовать:

lvextend -l +100%FREE /dev/vg_data/lv_data

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

Расширение файловой системы

Увеличив Logical Volume, нужно расширить файловую систему, чтобы ОС увидела новое доступное место.

Какая команда нужна, зависит от типа файловой системы.

Для ext4 обычно используют:

resize2fs /dev/vg_data/lv_data

Для XFS применяется другая команда:

xfs_growfs /точка/монтирования

Например:

xfs_growfs /data

Файловая система начнёт использовать всё добавленное пространство.

Проверка корректности изменений

Теперь нужно убедиться, что система видит новый объём и все изменения применились без ошибок. Это финальная проверка: она покажет, что том работает корректно и сервисы могут использовать добавленное место.

Сначала проверьте размер файловой системы:

df -h

Команда покажет, увеличился ли доступный объём на нужной точке монтирования.

Затем можно проверить состояние логического тома и группы томов:

lvs
vgs
pvs

Так можно убедиться, что Logical Volume расширен, новое пространство учтено, а Volume Group отображается корректно.

Проверьте общую структуру устройств:

lsblk

Если нужно убедиться, что файловая система смонтирована без проблем и работает штатно, можно проверить системные сообщения:

dmesg | tail

Возможные ошибки, и как их избежать

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

Частые ошибки, с которыми сталкиваются администраторы:

  • Выбран не тот диск или раздел. Ошибка возникает, если перепутать устройство в командах pvcreate, vgextend или lvextend. В результате можно затронуть не тот том или вообще повредить рабочую структуру. Чтобы этого не случилось, стоит заранее проверить схему через lsblk, pvs, vgs и lvs.
  • На уровне VG нет свободного места. Иногда администратор пытается увеличить LV, но в группе томов уже нет доступного пространства. Сначала лучше проверить объём свободного места через vgs и только потом выполнять расширение.
  • Увеличен логический том, но не расширена файловая система. LV становится больше, а система продолжает видеть старый объём. Чтобы новое место стало доступно, после lvextend нужно обязательно выполнить resize2fs для ext4 или xfs_growfs для XFS.
  • Использована не та команда для файловой системы. Для разных файловых систем нужны разные инструменты. Например, resize2fs не подходит для XFS, а xfs_growfs работает не с устройством, а с точкой монтирования. Сначала лучше уточнить тип файловой системы через df -T или lsblk -f.
  • Не создана резервная копия важных данных. Любая ошибка в командах или проблема с диском может привести к потере данных. Для рабочих серверов лучше заранее сделать бэкап или хотя бы снапшот, если это позволяет конфигурация.
  • Новое пространство не появилось в системе после изменения диска на уровне виртуальной машины. Бывает, что диск уже увеличен в панели виртуализации, но ОС ещё не видит новый размер. Тогда нужно сначала убедиться, что ядро обнаружило обновлённый объём, и только потом переходить к LVM.

Практический пример расширения диска

Разберём реальный сценарий для веб-сервера на Ubuntu.

На сервере работает сайт с Nginx и PHP-FPM, каталог /var/www размещён на логическом томе lv_www в группе vg_web. Свободное место почти закончилось: раздел вырос из-за загруженных файлов, логов и кэша. К серверу уже подключён новый диск /dev/sdb объёмом 50 ГБ.

Задача — добавить это место в LVM и расширить раздел без остановки сервисов.

Сначала посмотрим текущее состояние:

df -h /var/www
lsblk
pvs
vgs
lvs

На этом этапе видно, что:

  • каталог /var/www смонтирован с тома /dev/vg_web/lv_www;
  • размер тома сейчас составляет 40 ГБ;
  • в группе vg_web свободного места нет;
  • новый диск /dev/sdb определился системой.

Теперь подготовим новый диск для LVM:

pvcreate /dev/sdb

Добавим его в существующую группу томов:

vgextend vg_web /dev/sdb

Проверим, что группа получила новое свободное место:

vgs

Дальше расширим логический том, на котором находится /var/www, ещё на 50 ГБ:

lvextend -L +50G /dev/vg_web/lv_www

Размер логического тома увеличился с 40 ГБ до 90 ГБ.

Файловая система на сервере — ext4, поэтому сразу расширим и её:

resize2fs /dev/vg_web/lv_www

Осталось проверить итог:

df -h /var/www
lvs

Итак, каталог /var/www получил новый объём, а сайт продолжил работать в обычном режиме.

Рекомендации по безопасности и бэкапам

Перед расширением диска обязательно сохраните резервную копию важных данных или создайте снимок системы. Хотя LVM упрощает работу с томами, ошибка — например, в имени устройства, сбой диска или неверная команда — может привести к потере данных.

Прежде чем вносить какие‑либо изменения, проверьте текущую схему дисков и томов с помощью команд lsblk, pvs, vgs и lvs. При запуске команд будьте внимательны: тщательно сверяйте имена диска, группы томов и логического тома.

Если работаете с рабочим сервером, заранее убедитесь, что для бэкапа хватит места и у вас есть чёткий план восстановления данных. Лучше сначала опробовать всю процедуру на тестовом сервере или в копии окружения — и только после успешного теста выполнять её на продакшене.

Итоги

Теперь вы знаете, как расширить диск с помощью LVM, не останавливая сервисы. Этот метод экономит время, избавляет от простоев и позволяет управлять дисковым пространством по мере необходимости. Освойте его — и работа с серверами станет заметно проще и надёжнее.