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

Что такое 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Вы должны увидеть все дополнительные диски как на изображении ниже:

Примечание: на серверах с 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
Шаги (быстрая памятка):
- n — создать новый раздел.
- p — основной раздел (или просто Enter для логического/по умолчанию).
- номер раздела — обычно 1.
- Enter дважды — использовать весь диск.
- t — изменить тип раздела.
- введите 8e (MBR) или выберите ‘Linux LVM’ в GPT.
- p — проверить созданный раздел.
- w — записать изменения и выйти.
Повторите для /dev/sdc и /dev/sdd. Затем проверьте:
fdisk -lВы должны увидеть новые разделы /dev/sdb1, /dev/sdc1, /dev/sdd1:

Важно: если диски содержали данные, они будут потеряны при перезаписи таблицы разделов.
Создание физических томов (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
Если pvcreate жалуется на существующую сигнатуру или метку, используйте pvremove / wipefs с осторожностью.
Создание группы томов (vgcreate)
Объедините PV в Volume Group, например vg01:
vgcreate vg01 /dev/sdb1 /dev/sdc1 /dev/sdd1Ожидаемый отклик:
Volume group "vg01" successfully createdПроверьте группу томов:
vgs
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
Проверьте список логических томов:
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
Создайте точки монтирования и смонтируйте тома:
mkdir /mount1
mkdir /mount2
mkdir /mount3
mount /dev/vg01/lv01 /mount1
mount /dev/vg01/lv02 /mount2
mount /dev/vg01/lv03 /mount3Проверьте результат:
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
Примените и проверьте:
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:
- Если LV пустой (новый) — lvremove /dev/vg01/lvXX
- Если вы удалили разделы — пересоздайте их и используйте команды восстановления файловых систем (сложно без бэкапа).
Когда LVM не подходит (контрпримеры)
- Нужна встроенная целостность данных и дедупликация — рассмотрите ZFS или btrfs.
- Простые статики без планов на изменение — LVM может усложнить администрирование.
- Очень важна предсказуемая производительность на оборудовании с ограниченными IOPS — добавление слоёв абстракции может внести небольшую задержку.
Альтернативные подходы
- Аппаратный RAID + стандартные разделы.
- mdadm (software RAID) + LVM (комбинация часто используется).
- ZFS / btrfs — объединяют управление пулом и файловую систему.
Мини-методология внедрения LVM в продакшн
- Спроектируйте: какие VG и LV нужны, какие размеры и политики резервирования.
- Протестируйте на стенде: расширение, уменьшение, снятие снапшота, восстановление.
- Документируйте имена томов и зеркалирование.
- Накатите изменения с планом отката и тестом восстановления из бэкапа.
Контрольные тесты и критерии приёмки
Критерии приёмки:
- 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Руководство при инциденте и откат
Быстрый план действий при ошибке:
- Остановите дальнейшие операции и соберите логи: pvs, vgs, lvs, dmesg.
- Если LV можно удалить (пустой) — lvremove.
- Если удалён PV, попробуйте pvcreate с теми же параметрами и восстановление из бэкапа.
- Восстановление данных — из последних резервных копий.
Роли и чек-листы
Для системного администратора:
- Проверить свободное место 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 даёт гибкость в управлении дисковым пространством: создавайте пул, делите его на логические тома, расширяйте и снимайте снапшоты. Это мощный инструмент в арсенале администратора, но требует внимательного планирования и резервирования данных.
Ключевые шаги, пройдённые в статье:
- Создание разделов (fdisk).
- pvcreate -> pvs.
- vgcreate -> vgs, vgdisplay.
- lvcreate -> lvs.
- mkfs -> mkdir -> mount -> fstab.
Важно: прежде чем выполнять операции на продуктивных данных — протестируйте процесс на стенде и убедитесь в наличии резервной копии.
1‑строчный глоссарий
- PV — физический том; VG — группа томов (пул); LV — логический том (виртуальный диск).
Важно: используйте команды с осторожностью и всегда держите актуальные резервные копии.
Похожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone