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

Ответ

Использовал 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%.

Ответ 18+ 🔞

Блин, слушай, вот LVM — это же просто песня, а не технология! Прям ёпта, спасение для админа, у которого сервера жрут место как не в себя. Использовал эту штуку везде — на базах данных, на файловых хранилищах, в виртуальных машинах. Главный кайф в чём? Можно прямо на ходу, без всяких остановок, расширить файловую систему, и снапшоты для бэкапов делать — просто красота, а не жизнь.

Вот смотри, типичная история: прилетел новый диск, надо его пристроить к делу.

  1. Сначала ищем эту железяку и готовим:

    # Смотрим, что у нас есть (ну где же ты, новенький?)
    lsblk
    # Дальше классика: режем диск под LVM
    sudo fdisk /dev/sdb  # -> n, p, 1, Enter, Enter, t, 8e, w

    Главное тут — не облажаться с выбором диска, а то будет тебе хиросима, а не расширение.

  2. Теперь втискиваем диск в нашу компанию томов (группу):

    # Делаем из раздела физический том для LVM
    sudo pvcreate /dev/sdb1
    # И добавляем его в нашу существующую группу 'vg_data'
    sudo vgextend vg_data /dev/sdb1

    Всё, группа томов стала толще, можно выдохнуть.

  3. А вот самый сочный момент — увеличиваем сам том и файловку:

    # Расширяем логический том '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

    Вот это и есть магия — приложение даже не моргнуло, а место прибавилось. Просто ебушки-воробушки!

А где это реально выручало? Да везде!

  • Снапшоты для бэкапов — это святое. Перед тем как лезть в базу данных с обновлением, делал снапшот. Если всё пошло по пизде — мгновенный откат.

    sudo lvcreate -L 10G -s -n db_backup_snap /dev/vg_data/lv_database
    # ... выполняем обновление, сердце в пятках...
    # Ой, всё хуёво? Откатываемся!
    sudo lvconvert --merge /dev/vg_data/db_backup_snap

    Доверия к этим обновлениям, блядь, ноль, поэтому снапшоты — лучшие друзья.

  • Шаблоны в облаке. В образах для виртуалок сразу настраивал тонкие LV. Когда инстанс запускается, cloud-init мог спокойно увеличить корневой раздел под нужный размер. Удобно, ёпта!

  • Мониторинг. Забить группу томов — это же конец света. Поэтому постоянно смотрел (vgs, pvs) и в Prometheus настраивал алерты, чтобы орал, когда свободного места меньше 20%. Иначе потом сидишь и думаешь: «какого хуя всё легло?», а оказывается, диск переполнен.