← Назад к «Руководства»

Снапшоты хостов — подробное руководство

Снапшоты — это механизм создания точек отката корневой файловой системы Linux-хоста перед установкой обновлений или в любой момент по инициативе администратора. Снапшот — это блочный слепок (snapshot) корневого логического тома LVM: если после обновления система повела себя нестабильно, администратор откатывает хост к этому слепку и возвращает рабочее состояние без переустановки.

Это руководство охватывает два уровня работы:

  • Управление в админке LSUS — создание, просмотр, удаление, настройка автоматических снапшотов, ротация.
  • Действия на клиенте (хосте) — что делает агент, как проверить состояние локально, как настроить пороги, как выполнить откат.

infoТолько для Linux с LVM

Снапшоты работают только на Linux-хостах, корневая файловая система которых размещена на логическом томе LVM. На Windows, а также на Linux-машинах без LVM снапшоты недоступны.


Как это работает#

Архитектура#

LSUS не хранит снапшоты централизованно — они создаются и живут на самом хосте средствами LVM:

Где Что
Хост (клиент) LVM-снапшот корневого тома в volume group. Агент lsus-client создаёт, удаляет и перечисляет снапшоты командами lvcreate/lvremove/lvs.
Сервер (админка) Реестр снапшотов: список всех снапшотов каждого хоста с именами, размерами, источником, сроком автоудаления. Сервер не хранит данные снапшотов — только метаданные.

Управление снапшотами асинхронно: сервер передаёт команду агенту → агент выполняет её локально → агент сообщает результат обратно → реестр обновляется. Поэтому после нажатия кнопки в админке может пройти несколько секунд (до следующего опроса сервера агентом), прежде чем снапшот появится в списке.

Что попадает в снапшот#

LVM-снапшот — это снимок всей корневой файловой системы на момент создания. В него попадает всё: установленные пакеты, конфигурационные файлы, системные настройки, пользовательские данные. Откат к снапшоту возвращает систему целиком — не отдельные файлы или пакеты.

Имена и метки снапшотов#

Имя снапшота генерируется автоматически: lsus-snap-<unix_timestamp> (например, lsus-snap-1786257169). Имя фиксировано и не редактируется.

В LVM-тег тома записывается источник создания:

Тег Значение
lsus_src_manual Создан вручную (кнопка в админке или командой на хосте)
lsus_src_campaign Создан автоматически перед установкой обновлений в кампании

Тег виден в выводе lvs (колонка lv_tags) и используется сервером для отображения источника в реестре.


Требования#

Условие Зачем
Linux с корневой ФС на LVM Снапшоты создаются средствами LVM. На Windows или на Linux без LVM функционал недоступен.
Свободное место в volume group LVM-снапшот расходует место той же volume group, где живёт корневой том. Минимальный порог — 512 МБ (настраивается, см. Настройка клиента). При нехватке места снапшот не создаётся.
lsus-client запущен Агент должен работать и опрашивать сервер, чтобы получать команды и отчитываться о снапшотах.

LSUS автоматически определяет, поддерживает ли хост снапшоты, и показывает это в админке и в списке хостов.

Как проверить, что хост готов к снапшотам#

На самом хосте выполните:

# Проверить, что корень на LVM
lsblk -o NAME,TYPE,MOUNTPOINT | grep ' /$'
# Ожидаемый TYPE: lvm

# Узнать volume group и свободное место
sudo vgs --units m
# Колонка VFree должна быть > 512 МБ (или вашего порога)

Если корень на обычном разделе (не LVM), снапшоты на этом хосте недоступны. Чтобы включить поддержку, корневую ФС нужно перенести на LVM — это процедура переустановки/миграции ОС.


Управление в админке#

Просмотр снапшотов хоста#

  1. Откройте раздел «Хосты».
  2. Кликните по строке нужного Linux-хоста — откроется карточка.
  3. Перейдите на вкладку «Снапшоты» (иконка фотоаппарата).

Вкладка «Снапшоты» в карточке хоста

На вкладке три блока:

Состояние дисков — таблица точек монтирования: путь, ФС, общий объём, свободно, процент заполнения. Строки с заполнением 90%+ подсвечиваются красным.

Возможность снапшота — статус-индикатор:

Статус Что значит
Корень не на LVM — снапшот недоступен Хост не поддерживает снапшоты. Кнопка создания отключена.
Мало места в VG для снапшота (≈ N ГБ) LVM есть, но свободного места в VG меньше порога. Кнопка отключена.
LVM: место для снапшота достаточно (≈ N ГБ в VG) Всё в порядке, снапшоты доступны.

Список снапшотов — реестр существующих снапшотов:

Колонка Что показывает
Имя Имя снапшота в LVM (вида lsus-snap-<время>)
Размер Объём, занимаемый снапшотом в VG
Создан Дата и время создания
Источник Как создан: кампания (перед обновлением) или вручную
(иконка корзины) Удалить конкретный снапшот

Создание снапшота вручную#

  1. На вкладке «Снапшоты» нажмите кнопку «Создать снапшот».
  2. Подтвердите создание.

Сервер отправит команду агенту, тот создаст LVM-снапшот корневой ФС. После выполнения команды снапшот появится в списке.

lightbulbКогда создавать вручную

Перед рискованными изменениями, которые вы делаете не через LSUS: ручная установка пакетов, изменение системных конфигов, крупное обновление приложения. Создайте снапшот — и у вас будет точка отката.

Удаление снапшота#

Удалить снапшот можно в двух местах:

  • В карточке хоста — нажмите иконку корзины в строке снапшота.
  • В сводном реестре — кнопками «Удалить просроченные» или «Удалить выбранные» (см. ниже).

Подтвердите удаление. Сервер передаст команду агенту, LVM-снапшот будет удалён, место в volume group освободится.

warningСнапшоты занимают место

Каждый снапшот расходует свободное место в VG — оно растёт по мере изменения данных в «живой» ФС после создания снапшота. Не храните снапшоты бесконечно: удаляйте ненужные или настройте автоматическую ротацию (см. ниже).

Сводный реестр снапшотов#

Единое окно по всем хостам сервера — для аудита и массовой очистки.

Как открыть: в разделе «Хосты» нажмите иконку фотоаппарата в тулбаре.

Сводный реестр снапшотов и политика ротации

Политика ротации (вверху окна) — глобальный срок автоудаления снапшотов кампаний в часах (см. Политика ротации).

Фильтры: источник (все / кампании / ручные), только просроченные, поиск по хосту или имени снапшота.

Таблица: все снапшоты по всем хостам с колонками Хост, Имя, Размер, Создан, Источник, Кампания (#id + название), Автоудаление («через N ч», «просрочен» или «—»).

Массовое удаление:

  • «Удалить просроченные» — команды удаления для всех снапшотов с истёкшим сроком.
  • «Удалить выбранные» — команды удаления для снапшотов, отмеченных чекбоксами.

Автоматические снапшоты перед обновлением#

Главное применение — автоматическая страховка перед установкой обновлений Linux-пакетов. Настраивается в кампаниях и заданиях (batches) в разделе «Управление обновлениями».

Настройка в кампании#

При создании или редактировании кампании доступны три параметра:

Настройки снапшотов в кампании Linux

Параметр Значения Что делает
Снапшот перед обновлением выкл / если возможно / обязательно Режим создания снапшота перед установкой пакетов
Хранить снапшотов 0–10 (по умолчанию 3) Сколько свежих снапшотов оставлять (ротация по числу); старые удаляются при создании нового
Автоудаление через, ч 0–8760 (пусто = глобальный дефолт) Через сколько часов после завершения кампании удалить её снапшоты (ротация по времени). 0 — не удалять по времени.

Режимы «Снапшот перед обновлением»#

Режим Поведение
выкл Снапшот не создаётся. Обновление проходит без точки отката.
если возможно Снапшот создаётся, если хост поддерживает LVM и хватает места. Если нет — обновление продолжается без снапшота. Рекомендуемый режим.
обязательно Снапшот создаётся обязательно. Если хост без LVM или мало места — установка прерывается с ошибкой. Для критичных хостов.

Хранение по числу#

Параметр «Хранить снапшотов» задаёт, сколько последних снапшотов оставлять. При создании нового самые старые сверх этого количества автоматически удаляются. По умолчанию — 3.

Политика ротации#

Автоудаление по времени защищает volume group от переполнения. После завершения кампании её снапшоты автоматически помечаются к удалению через заданное число часов.

Глобальная политика — в окне «LVM-снапшоты: реестр и ротация», поле «автоудаление снапшотов кампаний через N часов» (по умолчанию 48).

Переопределение в кампании — поле «Автоудаление через, ч» перезаписывает глобальный срок для конкретной кампании.

infoТолько снапшоты кампаний

Автоудаление по времени применяется только к снапшотам с источником «кампания». Ручные снапшоты никогда не удаляются автоматически.


Бейджи LVM в списке хостов#

В разделе «Хосты» для каждого хоста отображается бейдж LVM:

Список хостов с бейджами LVM

Цвет Что значит
Синий «LVM •» (с точкой) На хосте есть активный снапшот
Зелёный «LVM» Корень на LVM, свободного места в VG достаточно
Красный «LVM» Корень на LVM, но мало свободного места
Бейджа нет Корень не на LVM — снапшоты недоступны

Бейдж кликабельный — клик открывает карточку хоста на вкладке «Снапшоты».


Действия на клиенте (хосте)#

Снапшоты создаются и управляются агентом lsus-client на самом хосте. Ниже — что происходит на клиентской стороне и как работать со снапшотами локально.

Как агент обрабатывает команды снапшотов#

Когда администратор нажимает «Создать» или «Удалить» в админке, сервер ставит команду в очередь. Агент при следующем опросе забирает команду и выполняет:

Команда сервера Что делает агент
SNAPSHOT_CREATE Вызывает lvcreate -s -L <размер>M -n lsus-snap-<время> /dev/<vg>/<root_lv> с тегом источника lsus_src_manual. После создания запускает prune (удаление старых по retention), если задан keep.
SNAPSHOT_REMOVE Вызывает lvremove -y /dev/<vg>/<имя_снапшота>.

После выполнения агент отправляет серверу актуальный список снапшотов (report_snapshots) — реестр в админке синхронизируется.

Автоматические снапшоты перед обновлением на клиенте#

При получении команды на установку обновлений агент проверяет параметр snapshot_before из кампании:

  1. off — снапшот не создаётся, обновление проходит как обычно.
  2. if_possible — агент пытается создать снапшот (ensure_pre_update_snapshot). Если корень не на LVM или мало места — снапшот пропускается, в журнал пишется предупреждение, обновление продолжается.
  3. required — агент пытается создать снапшот. При неудаче (нет LVM, мало места, ошибка lvcreate) — установка прерывается, команда завершается с ошибкой.

После успешного создания агент удаляет старые снапшоты сверх snapshot_keep (retention по числу).

Настройка порога свободного места на клиенте#

Минимальный порог свободного места в volume group, необходимый для создания снапшота, настраивается в конфиге клиента:

# /etc/lsus-client/lsus-client.conf

[system]
# Минимум свободного места в VG (МиБ) для создания снапшота.
# По умолчанию 512. Если свободного места меньше — снапшот не создаётся.
lvm_snapshot_min_free_mib = 512

Изменение применяется при следующем запуске агента (перезапуск lsus-client).

lightbulbКак рассчитывается размер снапшота

Размер снапшота вычисляется автоматически: min(20% от размера корневого LV, свободное место VG − порог). Это значит, что после создания снапшота в VG останется не меньше порога свободного места. Если свободного места недостаточно даже для минимального снапшота — создание отменяется.

Просмотр снапшотов локально на хосте#

Все снапшоты — это обычные LVM logical volumes. Их можно посмотреть стандартными средствами LVM:

# Список всех снапшотов корневого LV
sudo lvs -o lv_name,lv_size,lv_time,lv_tags,origin --units m \
    --select "origin=<имя_корневого_LV>"

# Или все снапшоты LSUS (по префиксу имени)
sudo lvs | grep lsus-snap-

Пример вывода:

  lsus-snap-1786257169  5844,00m  2026-08-06 06:32:49  lsus_src_manual    root
  lsus-snap-1786291784  5844,00m  2026-08-06 16:23:04  lsus_src_campaign  root

Колонка origin показывает, от какого тома создан снапшот (обычно root). Колонка lv_tags — источник (lsus_src_manual или lsus_src_campaign).

Создание снапшота вручную на хосте#

Если нужно создать снапшот напрямую на хосте (мимо LSUS, например, при недоступности сервера):

# Узнать VG и LV корня
sudo vgs
sudo lvs

# Создать снапшот (замените vg_name/root_lv и размер)
sudo lvcreate -y -s -L 2G --addtag lsus_src_manual \
    -n lsus-snap-manual-$(date +%s) /dev/vg_name/root_lv

infoСнапшот, созданный вручную на хосте

LSUS обнаружит этот снапшот при следующем heartbeat-репорте и добавит его в реестр. Но источник будет определён по LVM-тегу: если вы указали --addtag lsus_src_manual, он отобразится как «вручную». Автоудаление его не затронет.

Удаление снапшота на хосте#

# Удалить конкретный снапшот
sudo lvremove -f /dev/vg_name/lsus-snap-1786257169

# Удалить все снапшоты LSUS
sudo lvs --noheadings -o lv_name | grep '^ *lsus-snap-' | \
    while read name; do sudo lvremove -f /dev/vg_name/"$name"; done

Агент обнаружит изменение при следующем репорте и обновит реестр на сервере.

Проверка состояния LVM для снапшотов#

Скрипт, который использует агент для определения готовности хоста к снапшотам:

# Определить, что корень на LVM
findmnt -n -o SOURCE /

# Объём корневого LV
sudo lvs --units m /dev/vg_name/root_lv

# Свободное место в VG
sudo vgs --units m vg_name

Если findmnt -n -o SOURCE / возвращает путь вида /dev/mapper/vg_name-root_lv или /dev/vg_name/root_lv — корень на LVM. Если /dev/sda2 или /dev/nvme0n1p2 — на обычном разделе, снапшоты недоступны.


Восстановление из снапшота (откат)#

Восстановление (откат) из снапшота LSUS не выполняет автоматически — это делает администратор хоста вручную. Причина: отмена изменений в работающей корневой файловой системе требует перезагрузки и не может быть безопасно выполнена удалённо «на лету».

warningНет кнопки «Восстановить» в админке

В карточке хоста есть только «Создать» и «Удалить» снапшот. Откат выполняется системным администратором напрямую на хосте.

Когда нужно откатиться#

  • После установки обновлений хост не загружается или работает нестабильно.
  • Применённые изменения нужно отменить и вернуть систему к состоянию на момент снапшота.

Процедура отката через lvconvert --merge#

Выполняется на самом хосте (или через IPMI, загрузочный носитель):

# 1. Найти нужный снапшот
sudo lvs

# 2. Запустить объединение снапшота с оригинальным томом
sudo lvconvert --merge /dev/<vg>/<имя_снапшота>

# 3. Перезагрузить хост — merge применяется при активации тома
sudo reboot

После перезагрузки корневая ФС вернётся к состоянию на момент создания снапшота. Все изменения, сделанные после этого момента (включая проблемное обновление), будут отменены.

warningСлияние удаляет снапшот

После lvconvert --merge и перезагрузки снапшот перестаёт существовать (он «влился» обратно в origin). Если хотите сохранить возможность повторного отката — создайте новый снапшот перед merge.

Альтернатива: монтирование снапшота для извлечения файлов#

Если нужно достать отдельные файлы из снапшота, не откатывая всю систему:

# Смонтировать снапшот только для чтения
sudo mkdir /mnt/snap
sudo mount -o ro /dev/<vg>/<имя_снапшота> /mnt/snap

# Скопировать нужные файлы
sudo cp /mnt/snap/etc/some_config.conf /etc/some_config.conf.bak

# Размонтировать
sudo umount /mnt/snap

Устранение неполадок#

Снапшот не создаётся (кнопка отключена или ошибка)#

Симптом Причина Решение
Бейджа LVM нет Корень не на LVM Снапшоты недоступны. Перенос корня на LVM — процедура переустановки ОС.
Бейдж LVM красный Мало места в VG Освободите место: удалите старые снапшоты (lvremove), увеличьте VG (vgextend), или очистите диск.
Кнопка активна, но снапшот не появляется Агент не опросил сервер или lvcreate завершился с ошибкой Проверьте лог агента: journalctl -u lsus-client -n 50 --no-pager. Убедитесь, что агент работает: systemctl status lsus-client.
Кампания со снапшотом «обязательно» прервалась Хост без LVM или мало места Проверьте вкладку «Снапшоты» в карточке хоста — статус покажет причину. Либо переведите режим на «если возможно», либо подготовьте хост (LVM + место).

Снапшот не отображается в админке#

Агент отправляет список снапшотов при каждом heartbeat. Если снапшот создан локально (не через LSUS), он появится в реестре после следующего опроса. Если не появился:

# Проверить, что снапшот реально существует
sudo lvs | grep lsus-snap

# Проверить, что агент работает и отчитывается
systemctl status lsus-client
journalctl -u lsus-client -n 20 --no-pager | grep -i snapshot

Место в VG закончилось#

Снапшоты расходуют место и растут со временем. Если VG переполнена:

# Найти самые большие снапшоты
sudo lvs -o lv_name,lv_size,lv_data_percent --units m | grep lsus-snap

# Удалить ненужные
sudo lvremove -f /dev/<vg>/<имя>

# Проверить свободное место после очистки
sudo vgs --units m

Чтобы избежать переполнения в будущем — настройте ротацию (по числу и по времени) в кампаниях и глобальной политике.

Хост без LVM — можно ли включить снапшоты?#

Нет. LVM-снапшоты требуют, чтобы корневая файловая система находилась на логическом томе LVM. Перенос корня на LVM — это процедура миграции ОС (создание нового LVM-раздела, копирование данных, обновление загрузчика). На многих дистрибутивах (Astra, РЕД ОС) LVM предлагается при установке ОС — выбирайте его, чтобы хост был готов к снапшотам.


Ограничения#

  • Только Linux. Снапшоты недоступны на Windows-хостах.
  • Нужен LVM для корня. На обычных разделах (без LVM) снапшоты не работают.
  • Нужно свободное место в VG. Снапшот расходует место той же VG; при нехватке — не создаётся.
  • Снапшоты — не резервная копия. Снапшот живёт в той же VG. При выходе из строя диска снапшот теряется вместе с основной ФС. Для резервного копирования используйте отдельные средства.
  • Откат — только вручную. LSUS не восстанавливает систему автоматически.
  • Размер снапшота — 20% от корневого LV (или меньше, если в VG меньше места). Этого достаточно для отката после типового обновления, но не для длительного хранения при активной записи.

Связанные страницы#