Ответ
Использовал LVM для гибкого управления дисковым пространством на серверах баз данных, файловых хранилищах и в виртуальных машинах. Основное преимущество — возможность «на лету» расширять файловые системы и создавать снапшоты для консистентных бэкапов.
Типичный сценарий — добавление нового диска и расширение существующего тома:
-
Обнаружение и подготовка диска:
# Находим новый диск (например, /dev/sdb) lsblk # Создаем на нем раздел с типом LVM (8e) sudo fdisk /dev/sdb # -> n, p, 1, Enter, Enter, t, 8e, w -
Расширение группы томов (VG):
# Создаем физический том на новом разделе sudo pvcreate /dev/sdb1 # Расширяем существующую группу томов 'vg_data' sudo vgextend vg_data /dev/sdb1 -
Расширение логического тома (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 — это же просто песня, а не технология! Прям ёпта, спасение для админа, у которого сервера жрут место как не в себя. Использовал эту штуку везде — на базах данных, на файловых хранилищах, в виртуальных машинах. Главный кайф в чём? Можно прямо на ходу, без всяких остановок, расширить файловую систему, и снапшоты для бэкапов делать — просто красота, а не жизнь.
Вот смотри, типичная история: прилетел новый диск, надо его пристроить к делу.
-
Сначала ищем эту железяку и готовим:
# Смотрим, что у нас есть (ну где же ты, новенький?) lsblk # Дальше классика: режем диск под LVM sudo fdisk /dev/sdb # -> n, p, 1, Enter, Enter, t, 8e, wГлавное тут — не облажаться с выбором диска, а то будет тебе хиросима, а не расширение.
-
Теперь втискиваем диск в нашу компанию томов (группу):
# Делаем из раздела физический том для LVM sudo pvcreate /dev/sdb1 # И добавляем его в нашу существующую группу 'vg_data' sudo vgextend vg_data /dev/sdb1Всё, группа томов стала толще, можно выдохнуть.
-
А вот самый сочный момент — увеличиваем сам том и файловку:
# Расширяем логический том '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%. Иначе потом сидишь и думаешь: «какого хуя всё легло?», а оказывается, диск переполнен.