Служба поддержки работает онлайн круглосуточно

8(800) 505-93-34

Бесплатный звонок ( с 7:00 до 15:00 пн. – пт.)

Что такое LVM в Linux и зачем нужен менеджер логических томов

Если вы хотите забыть про фразу «не хватает места, нужно переразбивать диск», то вам необходимо узнать, что такое LVM и почему он считается must-have для любого сервера. С ним вы сможете расширять разделы за пару команд, создавать мгновенные снимки и даже объединять разнородные диски. И всё это — не останавливая работающие приложения.

Что такое LVM простыми словами

LVM (Logical Volume Management) — это система управления дисковым пространством, создающая дополнительный уровень абстракции между физическими накопителями и файловой системой (ФС). Говоря совсем просто, этот уровень объединяет несколько физических дисков или разделов в одно логическое хранилище — вы можете создавать, изменять и удалять логические тома, не перестраивая всю дисковую подсистему.

Сегодня LVM стал стандартом де-факто для серверных решений c ОС Linux. Администраторы могут не задумываться о том, на каком именно диске лежит файл — система сама распределяет данные по доступным ресурсам, а увеличить размер тома можно без остановки работы сервисов — просто добавив новый накопитель в пул.

Что такое LVM простыми словами
Image by freepik.

Из чего состоит 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 можно отнести:

  1. Гибкость — возможность легко изменять размеры томов без переустановки системы.
  2. Масштабируемость — простое добавление новых дисков в общий пул хранения.
  3. Абстракцию — работу с данными без привязки к конкретным физическим устройствам.

Однако есть и нюансы:

  • начальная настройка может показаться запутанной для новичков;
  • при неправильной настройке или нехватке места можно потерять данные или повредить структуру томов;
  • дополнительный слой абстракции может незначительно влиять на скорость доступа к данным по сравнению с обычными разделами.

Базовые операции с 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 использует выделенное для него пространство для записи только тех блоков данных, которые изменились на основном томе после создания предыдущего снимка — это значит, что вы как бы «замораживаете» состояние ФС для резервного копирования или тестирования обновлений ПО.

Когда использовать снапшоты

Вот распространенные сценарии:

  1. Резервное копирование: можно сделать бэкап базы данных или файлов сайта без остановки сервиса.
  2. Обновление системы: перед установкой обновлений ядра или важного ПО в Ubuntu можно создать снапшот корневого раздела. Если что-то пойдет не так, вы сможете мгновенно откатиться к рабочему состоянию.
  3. Тестирование: проверка работы нового софта на копии данных без риска для оригинала.

Однако нужно помнить: снапшоты занимают место. Это значит, что если выделенное для них пространство закончится, снимок станет неработоспособным.

Типичные ошибки при работе с LVM

LVM — надёжный инструмент, однако есть несколько ловушек, в которые попадают почти все новички (и не только). Это:

  1. Нехватка места в Volume Group. Если вы создадите слишком много снапшотов или неправильно рассчитаете размер логических томов, свободное место в VG закончится — в этом случае вы не сможете расширять LV или создавать новые снимки. Всегда оставляйте 10-15% пространства в VG свободным.
  2. Удаление томов без проверки зависимостей. Если вы решите удалить LV, убедитесь, что он размонтирован и данные с него перенесены. Удаление тома в lvm — процесс необратимый, и данные стираются практически мгновенно. Всегда делайте umount перед деструктивными действиями.
  3. Работа со снапшотами без контроля свободного места. Как мы уже упоминали, снапшоты «растут» по мере изменения данных на основном томе. Если область, выделенная под снапшот, переполнится (из-за слишком большого количества изменений на основном томе), снапшот станет невалидным и просто «сломается».

Заключение

Надеемся, что теперь для вас увеличение дискового пространства на сервере с Linux (в т. ч. с Ubuntu) — это всего лишь пара команд, а не «танцы с бубном». Главные уроки, которые стоит вынести: следите за свободным местом в группе томов, не удаляйте тома, не проверив зависимости, и не экономьте на размере места для снапшотов. А дальше — экспериментируйте в тестовой среде и переносите удачные практики на боевые системы.