Если вы хотите забыть про фразу «не хватает места, нужно переразбивать диск», то вам необходимо узнать, что такое LVM и почему он считается must-have для любого сервера. С ним вы сможете расширять разделы за пару команд, создавать мгновенные снимки и даже объединять разнородные диски. И всё это — не останавливая работающие приложения.
Что такое LVM простыми словами
LVM (Logical Volume Management) — это система управления дисковым пространством, создающая дополнительный уровень абстракции между физическими накопителями и файловой системой (ФС). Говоря совсем просто, этот уровень объединяет несколько физических дисков или разделов в одно логическое хранилище — вы можете создавать, изменять и удалять логические тома, не перестраивая всю дисковую подсистему.
Сегодня LVM стал стандартом де-факто для серверных решений c ОС Linux. Администраторы могут не задумываться о том, на каком именно диске лежит файл — система сама распределяет данные по доступным ресурсам, а увеличить размер тома можно без остановки работы сервисов — просто добавив новый накопитель в пул.
Из чего состоит LVM: основные компоненты
Внутреннее устройство LVM основывается на трех взаимосвязанных понятиях. Разберем каждое из них без излишней теории.
Physical Volume (PV) — физические тома
Основа структуры LVM — Physical Volumes (PV). Это HDD, SSD и/или отдельные разделы на них. Прежде чем диск сможет участвовать в работе LVM, его нужно инициализировать специальным образом.
Подготовка выглядит так: вы берете блочное устройство (к примеру, /dev/sdb) и превращаете его в физический том. После этого операционная система (будь то Ubuntu или иной Линукс-дистрибутив) воспринимает его не как обычный диск, а как строительный блок для будущего логического хранилища (storage). Это первый step в создании сложной структуры хранения данных.
Volume Group (VG) — группы томов
Это следующий уровень абстракции. VG можно представить как виртуальный контейнер или пул хранения. В него можно добавить один или несколько физических томов (PV).
Группы томов объединяют пространства разных физических устройств в единый ресурс — когда у вас заканчивается место, вы просто добавляете новый disk, инициализируете его как PV и присоединяете к существующей группе. От этого общий объем доступного пространства увеличивается, вновь настраивать логические разделы вручную не нужно.
Logical Volume (LV) — логические тома
Вершиной этой пирамиды являются Logical Volumes (LV) — логические тома. Именно их вы форматируете в нужную ФС (например, ext4 или XFS) и монтируете в каталоги вашей Линукс-системы.
Логические тома видны операционной системе как обычные разделы (partitions), однако вы можете изменять их размер «на лету», создавать мгновенные снимки (snapshots) и перемещать данные между физическими устройствами без прерывания работы системы.
Как работает LVM: схема от диска до файловой системы
Работа LVM напоминает конструктор: вы берете отдельные детали (диски) и собираете из них сложные структуры.
Всё начинается с физического уровня: к примеру, у вас есть один либо несколько накопителей. Вы инициализируете их как Physical Volumes. Затем эти PV объединяются в Volume Group — общий пул дискового пространства. Из этого пула вы «нарезаете» (provides) Logical Volumes необходимого размера. Эти LV уже видны системе как блочные устройства, на которые можно накладывать ФС — теперь логическая структура хранения полностью отделена от физической реализации. Администратору не нужно беспокоиться о том, хватит ли места на конкретном диске — он оперирует понятием свободного места в VG.
Преимущества и недостатки LVM
Универсальных решений не бывает, и LVM — не исключение. Пройдемся по тому, что делает его удобным, и по моментам, где стоит проявить осторожность.
К преимуществам LVM можно отнести:
- Гибкость — возможность легко изменять размеры томов без переустановки системы.
- Масштабируемость — простое добавление новых дисков в общий пул хранения.
- Абстракцию — работу с данными без привязки к конкретным физическим устройствам.
Однако есть и нюансы:
- начальная настройка может показаться запутанной для новичков;
- при неправильной настройке или нехватке места можно потерять данные или повредить структуру томов;
- дополнительный слой абстракции может незначительно влиять на скорость доступа к данным по сравнению с обычными разделами.
Базовые операции с LVM в Linux
Всё, что нужно на старте — это пять минут времени, один свободный диск и три несложные операции. Приведённые команды универсальны для большинства дистрибутивов Linux.
Создание физического тома и группы томов
Первый этап — подготовка физического устройства. Далее рассматриваем на примере Ubuntu: допустим, у вас есть новый пустой диск /dev/sdb. Чтобы начать работу, создайте на нем физический том:
sudo pvcreate /dev/sdb
Эта команда пометит весь диск как доступный для volume manager. Создаем группу томов (назовем ее my_vg):
sudo vgcreate my_vg /dev/sdb
Теперь у нас есть виртуальный пул хранения my_vg, состоящий из одного физического диска.
Создание логического тома
Из созданной группы можно выделить пространство для логического тома. К примеру, создадим том data_lv размером 500 гигабайт:
sudo lvcreate -L 500G -n data_lv my_vg
В результате этой операции появится новое блочное устройство /dev/my_vg/data_lv.
Форматирование и монтирование
Последний шаг — создание ФС на логическом томе Ubuntu и его подключение к дереву каталогов:
sudo mkfs.ext4 /dev/my_vg/data_lv
sudo mkdir /mnt/data
sudo mount /dev/my_vg/data_lv /mnt/data
Теперь новый раздел готов к работе.
Как увеличить размер раздела через LVM
Одно из главных достоинств LVM — возможность расширения пространства без переустановки системы. Рассмотрим последовательность пошагово.
Добавление нового диска
Предположим, место в группе my_vg заканчивается. Мы купили новый диск /dev/sdc. Сначала настроим его так же, как и первый:
sudo pvcreate /dev/sdc
Расширение Volume Group
Теперь добавим свободное пространство с нового накопителя в существующую группу Ubuntu:
sudo vgextend my_vg /dev/sdc
Группа my_vg теперь видит суммарный объем обоих disks.
Увеличение Logical Volume и файловой системы
Отдаем это пространство нашему логическому тому data_lv:
sudo lvextend -L +1000G /dev/my_vg/data_lv
(Здесь мы добавили 1 ТБ).
И финальный штрих — расширение самой ФС Ubuntu, чтобы она увидела новое место:
sudo resize2fs /dev/my_vg/data_lv # Для ext4
или
sudo xfs_growfs /dev/my_vg/data_lv # Для XFS
Теперь раздел /mnt/data стал больше без потери данных и перезагрузки.
Что такое снапшоты в LVM и как они работают
Снапшот (snapshot) — функция LVM, позволяющая создать «мгновенный снимок» состояния логического тома в определенный момент времени.
Когда вы создаете снапшот, LVM использует выделенное для него пространство для записи только тех блоков данных, которые изменились на основном томе после создания предыдущего снимка — это значит, что вы как бы «замораживаете» состояние ФС для резервного копирования или тестирования обновлений ПО.
Когда использовать снапшоты
Вот распространенные сценарии:
- Резервное копирование: можно сделать бэкап базы данных или файлов сайта без остановки сервиса.
- Обновление системы: перед установкой обновлений ядра или важного ПО в Ubuntu можно создать снапшот корневого раздела. Если что-то пойдет не так, вы сможете мгновенно откатиться к рабочему состоянию.
- Тестирование: проверка работы нового софта на копии данных без риска для оригинала.
Однако нужно помнить: снапшоты занимают место. Это значит, что если выделенное для них пространство закончится, снимок станет неработоспособным.
Типичные ошибки при работе с LVM
LVM — надёжный инструмент, однако есть несколько ловушек, в которые попадают почти все новички (и не только). Это:
- Нехватка места в Volume Group. Если вы создадите слишком много снапшотов или неправильно рассчитаете размер логических томов, свободное место в VG закончится — в этом случае вы не сможете расширять LV или создавать новые снимки. Всегда оставляйте 10-15% пространства в VG свободным.
- Удаление томов без проверки зависимостей. Если вы решите удалить LV, убедитесь, что он размонтирован и данные с него перенесены. Удаление тома в lvm — процесс необратимый, и данные стираются практически мгновенно. Всегда делайте umount перед деструктивными действиями.
- Работа со снапшотами без контроля свободного места. Как мы уже упоминали, снапшоты «растут» по мере изменения данных на основном томе. Если область, выделенная под снапшот, переполнится (из-за слишком большого количества изменений на основном томе), снапшот станет невалидным и просто «сломается».
Заключение
Надеемся, что теперь для вас увеличение дискового пространства на сервере с Linux (в т. ч. с Ubuntu) — это всего лишь пара команд, а не «танцы с бубном». Главные уроки, которые стоит вынести: следите за свободным местом в группе томов, не удаляйте тома, не проверив зависимости, и не экономьте на размере места для снапшотов. А дальше — экспериментируйте в тестовой среде и переносите удачные практики на боевые системы.