tgoop.com/srv_admin/4484
Last Update:
Я уже ранее делал заметку насчёт LVM, где пояснил, что чаще всего виртуалки делаю с LVM. Это добавляет некоторые удобства, которые по сути ничего не стоят. То есть не вижу смысла их не использовать. Хоть и не часто, но LVM может сильно выручить.
Например, была виртуалка с большим разделом под хранилище. Покупалось всё с запасом, но через несколько лет место всё равно закончилось. В сервере были свободные слоты под диски. Добавили пару дисков, сделали RAID1, подключили его к виртуалке и расширили раздел с данными. Никаких рискованных движений, никаких переносов данных, даже перезапуск виртуалки не понадобился. Всё сделали наживую.
Расскажу про ещё одну фичу LVM, которую легко использовать, и которая в некоторых ситуациях может серьезно выручить. Речь пойдёт про снепшоты. Именно снепшот LVM спас Gitlab во время эпической аварии, когда они могли потерять все данные, но между делом сделанный снепшот их спас.
Снепшоты могут выручить, если у вас хранилище гипервизора без их поддержки, что не так уж редко бывает. Например, хранилище в Proxmox типа LVM, не LVMThin, снепшоты не поддерживает. Также актуально, если вы арендуете VPS без доступа к гипервизору. Обычно там можно только расширить диск, что достаточно для использования снепшотов.
Для того, чтобы использовать снепшоты LVM никаких настроек делать не надо. Главное условие – в VG должно быть свободное место. Если его нет, то надо его где-то найти. Покажу на конкретном примере.
Беру виртуалку, которая полностью установлена на LVM, что я чаще всего и делаю. На VG свободного места нет. Проверяем это:# pvs
Добавляем в виртуальную машину ещё один диск, либо расширяем существующий. Принципиальной разницы нет. У вас либо появится новый диск, либо новый раздел на текущем диске. Их и используем для расширения VG. Я добавил диск sdb размером 10G. Расширяю им VG:# vgextend vgroup /dev/sdb
По хорошему лучше сначала сделать раздел sdb1, и расширить уже им, но для краткости опускаю этот момент. # pvs
PV VG Fmt Attr PSize PFree
/dev/sda1 vgroup lvm2 a-- <20.00g 0
/dev/sdb vgroup lvm2 a-- <10.00g <10.00g
Теперь могу создать снепшот корня. Делаю ему размер 9G:# lvcreate -L 9G -s -n root_snap /dev/vgroup/root
Смотрю, что получилось:# lvs
По сути появился ещё один LV. С ним можно работать, как с обычным разделом. Например, подмонтировать его:# mount /dev/vgroup/root_snap /mnt
Увидим в /mnt состояние системы на момент создания снепшота.
Посмотрим, как снепшот работает. Полностью обновим систему и перезагрузимся:# apt update && apt upgrade -y && reboot
После перезагрузки посмотрим на статус LV и на версию загруженного ядра:# lvs
root vgroup owi-aos--- <20.00g
root_snap vgroup swi-a-s--- 9.00g root 15.85
# uname -a
Допустим, что-то пошло не так и нам надо откатиться на состояние до обновления. Восстанавливаем снепшот:# lvconvert --merge /dev/vgroup/root_snap
Видим ошибку:Delaying merge since origin is open.
Merging of snapshot vgroup/root_snap will occur on next activation of vgroup/root.
Это нормально, так как для восстановления нужно размонтировать LV. Наживую восстановить снепшот нельзя. Восстановление будет запущено после перезагрузки, во время активации LV. Текущий корневой LV будет помечен как (O)rigin with merging snapshot, это видно в lvs:# lvs
root vgroup Owi-aos--- <20.00g
После первой перезагрузки начнётся восстановление из снепшота. Так как это корневой раздел, полностью всё перезаписать не получится, так как раздел системный, файлы заняты рабочими процессами. Делаем reboot
ещё раз. После него система вернётся в состояние до снепшота. Можно проверить это по загруженному ядру:# uname -a
Для несистемного раздела всё выполняется без перезагрузок. В случае, если всё ОК и снепшот не пригодился, удаляем его:# lvremove /dev/vgroup/root_snap
💥 Обязательно удалите снепшот после того, как убедитесь, что он не нужен.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#lvm
BY ServerAdmin.ru

Share with your friend now:
tgoop.com/srv_admin/4484