TGViewer
ServerAdmin.ru ServerAdmin.ru @srv_admin · 32.6K subscribers
Post #4484 9.98K
Я уже ранее делал заметку насчёт 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
  • 👍 192
  • 👎 3
More from @srv_admin
  1. Oct 9, 2026В пятницу расскажу про один сервис, который не имеет отношения к теме канала, но который м…
  2. Oct 7, 2026Рассказываю про одну простую, но очень полезную в хозяйстве штуку для передачи файлов межд…
  3. Oct 7, 2026❓Какие реальные возможности у 1С:Расширенная корпоративная лицензия (1С:РКЛ) и как компани…
  4. Oct 7, 2026Столкнулся на днях с типичной ситуацией, когда катастрофически вырос Load Average на серве…
  5. Oct 6, 2026🎉 10 лет Kaspersky Anti Targeted Attack — юбилейный стрим! Друзья, делимся анонсом важног…
  6. Oct 6, 2026Компания Selectel выкатила в public preview своего бесплатного ИИ-агента aish. Далее будет…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →