Как настраивал LVM (Logical Volume Manager) на Linux

«Как настраивал LVM (Logical Volume Manager) на Linux» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Использовал LVM для гибкого управления дисковым пространством на серверах баз данных, файловых хранилищах и в виртуальных машинах. Основное преимущество — возможность «на лету» расширять файловые системы и создавать снапшоты для консистентных бэкапов.

Типичный сценарий — добавление нового диска и расширение существующего тома:

  1. Обнаружение и подготовка диска:

    # Находим новый диск (например, /dev/sdb)
    lsblk
    # Создаем на нем раздел с типом LVM (8e)
    sudo fdisk /dev/sdb  # -> n, p, 1, Enter, Enter, t, 8e, w
  2. Расширение группы томов (VG):

    # Создаем физический том на новом разделе
    sudo pvcreate /dev/sdb1
    # Расширяем существующую группу томов 'vg_data'
    sudo vgextend vg_data /dev/sdb1
  3. Расширение логического тома (LV) и файловой системы:

    # Расширяем логический том 'lv_app' на 50 ГБ
    sudo lvextend -L +50G /dev/vg_data/lv_app
    # Расширяем файловую систему ext4 внутри тома БЕЗ ПРОСТОЯ
    sudo resize2fs /dev/vg_data/lv_app
    # Для XFS команда другая:
    # sudo xfs_growfs /mount/point

Практическое применение в DevOps:

  • Снапшоты для бэкапов: Перед обновлением БД создавал снапшот, что позволяло мгновенно откатиться в случае проблем.
    sudo lvcreate -L 10G -s -n db_backup_snap /dev/vg_data/lv_database
    # ... выполняем обновление ...
    # Если что-то пошло не так:
    sudo lvconvert --merge /dev/vg_data/db_backup_snap
  • Шаблонизация в облаке: В образах VM (например, для OpenStack или VMware) заранее создавал тонкие LV, чтобы при развертывании инстанса можно было легко изменить размер корневого раздела через cloud-init.
  • Мониторинг: Следил за свободным местом в группе томов (vgs, pvs) и настраивал алерты в Prometheus при заполнении более чем на 80%.