Работа с LVM: расширение диска без остановки сервисов
В работе с серверами рано или поздно возникает задача расширения дискового пространства. При этом остановка сервисов нежелательна — она ведёт к простоям и потере доступности.
В этой статье разберём, как с помощью 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, не останавливая сервисы. Этот метод экономит время, избавляет от простоев и позволяет управлять дисковым пространством по мере необходимости. Освойте его — и работа с серверами станет заметно проще и надёжнее.
Перейти на оригинал