Гид по технологиям

Настройка гибкого хранилища с LVM на Linux

7 min read DevOps Обновлено 09 Jan 2026
Настройка гибкого хранилища с LVM на Linux
Настройка гибкого хранилища с LVM на Linux

Схема LVM: физические диски, группа томов и логические тома

Что такое LVM?

LVM — технология управления дисковым пространством, которая создаёт слой абстракции поверх физических устройств. Она позволяет динамически увеличивать и уменьшать размеры томов, объединять несколько дисков в один пул и брать моментальные снимки (snapshots) для резервного копирования.

Коротко: Physical Volume (PV) — физическое устройство/раздел; Volume Group (VG) — пул из PV; Logical Volume (LV) — раздел внутри VG, на котором создаётся файловая система.

Почему использовать LVM

  • Гибкость: изменение размера томов без простоя (в большинстве случаев).
  • Масштабируемость: добавление дисков в VG и расширение LV по мере роста потребностей.
  • Снапшоты: быстрые копии для бэкапа или тестирования.
  • Управление отказоустойчивостью: можно сочетать с RAID, зеркалированием или страйпингом.

Важно: LVM — инструмент управления пространством, а не замена файловой системе или RAID. Для избыточности используйте аппаратный/программный RAID или интегрированные в файловую систему возможности (ZFS, btrfs).

Компоненты LVM — кратко

  • Physical Volume (PV): диск или раздел с меткой LVM.
  • Volume Group (VG): пул из PV, содержит все доступные extents.
  • Logical Volume (LV): виртуальный логический диск в пределах VG.

Требования перед началом

  • Linux-дистрибутив с доступом к root или sudo.
  • Резервные копии важных данных (операции с дисками опасны).
  • В демонстрации используются три дополнительных диска по 50 ГБ: /dev/sdb, /dev/sdc, /dev/sdd.

Посмотреть подключённые диски

В терминале выполните:

fdisk -l

Вы должны увидеть все дополнительные диски как на изображении ниже:

Вывод fdisk -l со списком дисков

Примечание: на серверах с UEFI и GPT можно использовать parted или sgdisk вместо fdisk.

Установка LVM

На некоторых дистрибутивах пакет lvm2 нужно установить вручную:

Для RHEL/CentOS/Fedora:

dnf install lvm2 -y

Для Debian/Ubuntu/Linux Mint:

apt-get install lvm2 -y

После установки системные сервисы LVM обычно автоматически активируются.

Создание разделов (fdisk)

Для каждого диска сначала создайте раздел, пометив его как LVM (тип 8e в MBR-карта или соответствующий GUID в GPT).

Например, чтобы создать раздел на /dev/sdb:

fdisk /dev/sdb

Интерактивный сеанс fdisk для создания раздела

Шаги (быстрая памятка):

  1. n — создать новый раздел.
  2. p — основной раздел (или просто Enter для логического/по умолчанию).
  3. номер раздела — обычно 1.
  4. Enter дважды — использовать весь диск.
  5. t — изменить тип раздела.
  6. введите 8e (MBR) или выберите ‘Linux LVM’ в GPT.
  7. p — проверить созданный раздел.
  8. w — записать изменения и выйти.

Повторите для /dev/sdc и /dev/sdd. Затем проверьте:

fdisk -l

Вы должны увидеть новые разделы /dev/sdb1, /dev/sdc1, /dev/sdd1:

Вывод fdisk -l с новыми разделами

Важно: если диски содержали данные, они будут потеряны при перезаписи таблицы разделов.

Создание физических томов (pvcreate)

Теперь пометим разделы как PV для LVM:

pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1

Ожидаемый вывод:

  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdc1" successfully created.
  Physical volume "/dev/sdd1" successfully created.

Проверьте информацию о физических томах:

pvs

Вывод команды pvs с информацией о физических томах

Если pvcreate жалуется на существующую сигнатуру или метку, используйте pvremove / wipefs с осторожностью.

Создание группы томов (vgcreate)

Объедините PV в Volume Group, например vg01:

vgcreate vg01 /dev/sdb1 /dev/sdc1 /dev/sdd1

Ожидаемый отклик:

Volume group "vg01" successfully created

Проверьте группу томов:

vgs
vgdisplay vg01

Вывод vgdisplay для группы томов vg01

В примере суммарный размер VG составляет ~150 ГБ (3×50 ГБ).

Создание логических томов (lvcreate)

Создадим три логических тома по 5000 МБ (≈4.88 ГБ) каждый: lv01, lv02, lv03.

lvcreate -L 5000 -n lv01 vg01
lvcreate -L 5000 -n lv02 vg01
lvcreate -L 5000 -n lv03 vg01

Создание логических томов lv01 lv02 lv03

Проверьте список логических томов:

lvs

Вывод lvs с информацией о логических томах

Подсказка: можно создать LV на всё свободное пространство командой lvcreate -l 100%FREE -n lvdata vg01

Создание файловой системы и монтирование

Создайте файловую систему ext4 на каждом LV (в примере используется опция -m 0 чтобы не резервировать 5% для root — применяйте аккуратно):

mkfs.ext4 -m 0 /dev/vg01/lv01
mkfs.ext4 -m 0 /dev/vg01/lv02
mkfs.ext4 -m 0 /dev/vg01/lv03

Выполнение mkfs.ext4 на логических томах

Создайте точки монтирования и смонтируйте тома:

mkdir /mount1
mkdir /mount2
mkdir /mount3
mount /dev/vg01/lv01 /mount1
mount /dev/vg01/lv02 /mount2
mount /dev/vg01/lv03 /mount3

Проверьте результат:

df -h

Вывод df -h с примонтированными томами

Чтобы монтирование было постоянным, добавьте записи в /etc/fstab:

nano /etc/fstab

Добавьте строки:

/dev/vg01/lv01 /mount1 ext4    defaults 0 0
/dev/vg01/lv02 /mount2 ext4    defaults 0 0
/dev/vg01/lv03 /mount3 ext4    defaults 0 0

Редактирование /etc/fstab в nano

Примените и проверьте:

mount -av

Ожидаемый вывод:

/                        : ignored
/mount1                  : successfully mounted
/mount2                  : successfully mounted
/mount3                  : successfully mounted

Базовые операции расширения и уменьшения

  • Расширение LV: увеличьте размер LV и затем файловую систему.
    • Пример: lvextend -L +10G /dev/vg01/lv01 && resize2fs /dev/vg01/lv01
  • Уменьшение LV: сначала уменьшите файловую систему (например, resize2fs), затем lvreduce. Осторожно: риск потери данных.
  • Добавление диска: создайте раздел, pvcreate, vgextend vg01 /dev/sdX, затем lvextend.

Точки отказа и как откатывать изменения

  • Если вы случайно создали PV на диске с данными: немедленно остановите дальнейшие операции и восстановите из бэкапа.
  • Для удаления PV используйте pvremove /dev/sdX1 (стереть метки LVM).
  • Удаление VG: убедитесь, что на нём нет LV: lvremove, затем vgremove, затем pvremove.

Краткий пошаговый откат после ошибки с lvcreate:

  1. Если LV пустой (новый) — lvremove /dev/vg01/lvXX
  2. Если вы удалили разделы — пересоздайте их и используйте команды восстановления файловых систем (сложно без бэкапа).

Когда LVM не подходит (контрпримеры)

  • Нужна встроенная целостность данных и дедупликация — рассмотрите ZFS или btrfs.
  • Простые статики без планов на изменение — LVM может усложнить администрирование.
  • Очень важна предсказуемая производительность на оборудовании с ограниченными IOPS — добавление слоёв абстракции может внести небольшую задержку.

Альтернативные подходы

  • Аппаратный RAID + стандартные разделы.
  • mdadm (software RAID) + LVM (комбинация часто используется).
  • ZFS / btrfs — объединяют управление пулом и файловую систему.

Мини-методология внедрения LVM в продакшн

  1. Спроектируйте: какие VG и LV нужны, какие размеры и политики резервирования.
  2. Протестируйте на стенде: расширение, уменьшение, снятие снапшота, восстановление.
  3. Документируйте имена томов и зеркалирование.
  4. Накатите изменения с планом отката и тестом восстановления из бэкапа.

Контрольные тесты и критерии приёмки

Критерии приёмки:

  • LV созданы и доступны через /dev/vg01/*.
  • Файловая система создана и корректно монтируется.
  • Запись/чтение тестовых файлов проходят без ошибок.
  • Изменение размеров LV выполняется и файловая система расширяется/сжимается корректно.

Тесты/Acceptance:

  • Создать файл размером, близким к границе LV, записать и проверить контрольную сумму.
  • Отмонтировать, выполнить lvresize и повторно смонтировать, проверить данные.
  • Создать снапшот, изменить оригинал, откатиться и проверить целостность.

Шаблоны и сниппеты (cheat sheet)

Создать PV:

pvcreate /dev/sdX1

Создать VG:

vgcreate myvg /dev/sdX1 /dev/sdY1

Создать LV на 10 ГБ:

lvcreate -L 10G -n mylv myvg

Создать LV на всё свободное место:

lvcreate -l 100%FREE -n mylv myvg

Форматировать и монтировать:

mkfs.ext4 /dev/myvg/mylv
mkdir /mnt/mylv
mount /dev/myvg/mylv /mnt/mylv

Расширить LV на 5 ГБ и расширить файловую систему ext4:

lvextend -L +5G /dev/myvg/mylv
resize2fs /dev/myvg/mylv

Уменьшить LV (опасно — сначала уменьшить FS):

resize2fs /dev/myvg/mylv 8G
lvreduce -L 8G /dev/myvg/mylv

Руководство при инциденте и откат

Быстрый план действий при ошибке:

  1. Остановите дальнейшие операции и соберите логи: pvs, vgs, lvs, dmesg.
  2. Если LV можно удалить (пустой) — lvremove.
  3. Если удалён PV, попробуйте pvcreate с теми же параметрами и восстановление из бэкапа.
  4. Восстановление данных — из последних резервных копий.

Роли и чек-листы

Для системного администратора:

  • Проверить свободное место VG (vgs).
  • Документировать имена LV и точки монтирования.
  • Настроить мониторинг (диск, метрики LVM).

Для DevOps:

  • Автоматизировать создание LV через скрипты/terraform/ansible.
  • Тестировать расширение в CI/CD средах.

Модель мышления (ментальная модель)

Представьте VG как резервуар воды (общий пул), PV — ёмкости, которые вы добавляете в резервуар, а LV — это отсеки внутри резерва для конкретных потребителей.

Факты и практические числа

  • В примере общий VG = ~150 ГБ (3 × 50 ГБ).
  • LV в примере создаются по 5000 МБ (~4.88 ГБ).
  • Резерв (VFree) показывает свободное пространство в VG.

Примеры ошибок и диагностика

  • pvcreate: “Device /dev/sdX already contains a filesystem” — используйте wipefs или подтвердите, что данные можно потерять.
  • lvextend: “not enough free extents” — добавьте PV или уменьшите требуемый размер.

Советы по безопасности и резервированию

  • Всегда имейте бэкап перед изменением размеров томов.
  • Для критичных данных используйте зеркалирование (RAID1) или RAID10.
  • Ограничьте доступ к командам LVM через sudoers.

Краткая сводка

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

Ключевые шаги, пройдённые в статье:

  1. Создание разделов (fdisk).
  2. pvcreate -> pvs.
  3. vgcreate -> vgs, vgdisplay.
  4. lvcreate -> lvs.
  5. mkfs -> mkdir -> mount -> fstab.

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

1‑строчный глоссарий

  • PV — физический том; VG — группа томов (пул); LV — логический том (виртуальный диск).

Важно: используйте команды с осторожностью и всегда держите актуальные резервные копии.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство