Введение / Зачем это нужно
LVM (Logical Volume Manager) превращает отдельные жёсткие диски и SSD в гибкий пул хранилища. Вместо статичных разделов /dev/sda1 вы работаете с абстрактными логическими томами, которые можно растягивать на несколько физических устройств и изменять без остановки сервисов. Это стандарт для серверной инфраструктуры, позволяющий быстро реагировать на нехватку диска и безопасно переносить данные между накопителями.
Требования / Подготовка
Перед началом убедитесь, что у вас есть sudo или root-доступ. В большинстве дистрибутивов пакет lvm2 установлен по умолчанию, но если его нет, установите его через менеджер пакетов вашей ОС. Для работы понадобится как минимум один неразмеченный диск (например, /dev/sdb). Все команды выполняются в терминале.
⚠️ Важно: Инициализация и изменение томов уничтожает данные на целевом устройстве. Перед операциями сделайте резервную копию критичной информации.
Шаг 1: Инициализация физического диска
Сначала нужно превратить «сырой» диск в физический том (PV). Проверьте список доступных устройств:
lsblk
Если на диске остались старые разделы или файловые системы, очистите их сигнатуры, чтобы избежать конфликтов:
sudo wipefs -a /dev/sdb
Создайте физический том:
sudo pvcreate /dev/sdb
Проверьте, что система распознала устройство:
sudo pvs
Шаг 2: Создание группы томов и логического тома
Группы томов (VG) объединяют физические диски в единый пул. Создадим группу с именем vg_data:
sudo vgcreate vg_data /dev/sdb
Проверьте статус командой sudo vgs. Теперь выделите из пула пространство под логический том (LV). Создадим том размером 50 ГБ с именем lv_storage:
sudo lvcreate -L 50G -n lv_storage vg_data
Если нужно выделить всё свободное место, используйте -l 100%FREE вместо указания конкретного размера.
Шаг 3: Форматирование и автоматическое монтирование
Логический том готов, но пока не содержит файловой системы. Отформатируем его в ext4:
sudo mkfs.ext4 /dev/vg_data/lv_storage
Для автоматического подключения после перезагрузки добавьте запись в /etc/fstab. Узнайте UUID тома:
sudo blkid /dev/vg_data/lv_storage
Отредактируйте таблицу монтирования, добавив строку (подставьте ваш UUID):
echo "UUID=ваш_uuid /mnt/data ext4 defaults 0 2" | sudo tee -a /etc/fstab
Создайте точку монтирования и проверьте конфигурацию:
sudo mkdir -p /mnt/data
sudo mount -a
Шаг 4: Безопасное расширение хранилища
Когда место заканчивается, LVM позволяет добавить новый диск или выделить оставшиеся гигабайты. Допустим, вы подключили /dev/sdc, инициализировали его через sudo pvcreate /dev/sdc и добавили в группу:
sudo vgextend vg_data /dev/sdc
Теперь растянем логический том на всё доступное пространство:
sudo lvextend -l +100%FREE /dev/vg_data/lv_storage
Изменения вступают в силу только после изменения размера файловой системы. Для ext4:
sudo resize2fs /dev/vg_data/lv_storage
Для xfs используется другая утилита, которая требует точку монтирования, а не устройство:
sudo xfs_growfs /mnt/data
Проверка результата
Убедитесь, что система видит обновлённые размеры дисков:
df -h /mnt/data
Команда sudo lvs покажет детализацию по логическим томам, их размер и процент использования. Если вывод совпадает с ожидаемыми значениями, а точка монтирования доступна для записи, настройка завершена корректно.
Возможные проблемы
- Ошибка
Device /dev/sdX is busy: Диск уже используется или примонтирован. Проверьте активные процессы черезsudo lsof /dev/sdXилиsudo fuser -m /dev/sdX, остановите мешающие службы и отключите раздел командойumount. resize2fsзависает или выдаёт ошибку: Файловая система могла быть повреждена или не размонтирована корректно. Запустите проверкуsudo e2fsck -f /dev/vg_data/lv_storageперед изменением размера.- Нехватка места в
/после расширения: Убедитесь, что вы расширяете правильный том. LVM не перемещает данные между томами автоматически. Для перераспределения пространства используйтеlvreduceс предварительным уменьшением ФС или вручную мигрируйте файлы на новый том.