Снапшоты хостов — подробное руководство
Снапшоты — это механизм создания точек отката корневой файловой системы Linux-хоста перед установкой обновлений или в любой момент по инициативе администратора. Снапшот — это блочный слепок (snapshot) корневого логического тома LVM: если после обновления система повела себя нестабильно, администратор откатывает хост к этому слепку и возвращает рабочее состояние без переустановки.
Это руководство охватывает два уровня работы:
- Управление в админке LSUS — создание, просмотр, удаление, настройка автоматических снапшотов, ротация.
- Действия на клиенте (хосте) — что делает агент, как проверить состояние локально, как настроить пороги, как выполнить откат.
Только для 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 — это процедура переустановки/миграции ОС.
Управление в админке¶
Просмотр снапшотов хоста¶
- Откройте раздел «Хосты».
- Кликните по строке нужного Linux-хоста — откроется карточка.
- Перейдите на вкладку «Снапшоты» (иконка фотоаппарата).

На вкладке три блока:
Состояние дисков — таблица точек монтирования: путь, ФС, общий объём, свободно, процент заполнения. Строки с заполнением 90%+ подсвечиваются красным.
Возможность снапшота — статус-индикатор:
| Статус | Что значит |
|---|---|
| Корень не на LVM — снапшот недоступен | Хост не поддерживает снапшоты. Кнопка создания отключена. |
| Мало места в VG для снапшота (≈ N ГБ) | LVM есть, но свободного места в VG меньше порога. Кнопка отключена. |
| LVM: место для снапшота достаточно (≈ N ГБ в VG) | Всё в порядке, снапшоты доступны. |
Список снапшотов — реестр существующих снапшотов:
| Колонка | Что показывает |
|---|---|
| Имя | Имя снапшота в LVM (вида lsus-snap-<время>) |
| Размер | Объём, занимаемый снапшотом в VG |
| Создан | Дата и время создания |
| Источник | Как создан: кампания (перед обновлением) или вручную |
| (иконка корзины) | Удалить конкретный снапшот |
Создание снапшота вручную¶
- На вкладке «Снапшоты» нажмите кнопку «Создать снапшот».
- Подтвердите создание.
Сервер отправит команду агенту, тот создаст LVM-снапшот корневой ФС. После выполнения команды снапшот появится в списке.
Когда создавать вручную
Перед рискованными изменениями, которые вы делаете не через LSUS: ручная установка пакетов, изменение системных конфигов, крупное обновление приложения. Создайте снапшот — и у вас будет точка отката.
Удаление снапшота¶
Удалить снапшот можно в двух местах:
- В карточке хоста — нажмите иконку корзины в строке снапшота.
- В сводном реестре — кнопками «Удалить просроченные» или «Удалить выбранные» (см. ниже).
Подтвердите удаление. Сервер передаст команду агенту, LVM-снапшот будет удалён, место в volume group освободится.
Снапшоты занимают место
Каждый снапшот расходует свободное место в VG — оно растёт по мере изменения данных в «живой» ФС после создания снапшота. Не храните снапшоты бесконечно: удаляйте ненужные или настройте автоматическую ротацию (см. ниже).
Сводный реестр снапшотов¶
Единое окно по всем хостам сервера — для аудита и массовой очистки.
Как открыть: в разделе «Хосты» нажмите иконку фотоаппарата в тулбаре.

Политика ротации (вверху окна) — глобальный срок автоудаления снапшотов кампаний в часах (см. Политика ротации).
Фильтры: источник (все / кампании / ручные), только просроченные, поиск по хосту или имени снапшота.
Таблица: все снапшоты по всем хостам с колонками Хост, Имя, Размер, Создан, Источник, Кампания (#id + название), Автоудаление («через N ч», «просрочен» или «—»).
Массовое удаление:
- «Удалить просроченные» — команды удаления для всех снапшотов с истёкшим сроком.
- «Удалить выбранные» — команды удаления для снапшотов, отмеченных чекбоксами.
Автоматические снапшоты перед обновлением¶
Главное применение — автоматическая страховка перед установкой обновлений Linux-пакетов. Настраивается в кампаниях и заданиях (batches) в разделе «Управление обновлениями».
Настройка в кампании¶
При создании или редактировании кампании доступны три параметра:

| Параметр | Значения | Что делает |
|---|---|---|
| Снапшот перед обновлением | выкл / если возможно / обязательно |
Режим создания снапшота перед установкой пакетов |
| Хранить снапшотов | 0–10 (по умолчанию 3) | Сколько свежих снапшотов оставлять (ротация по числу); старые удаляются при создании нового |
| Автоудаление через, ч | 0–8760 (пусто = глобальный дефолт) | Через сколько часов после завершения кампании удалить её снапшоты (ротация по времени). 0 — не удалять по времени. |
Режимы «Снапшот перед обновлением»¶
| Режим | Поведение |
|---|---|
| выкл | Снапшот не создаётся. Обновление проходит без точки отката. |
| если возможно | Снапшот создаётся, если хост поддерживает LVM и хватает места. Если нет — обновление продолжается без снапшота. Рекомендуемый режим. |
| обязательно | Снапшот создаётся обязательно. Если хост без LVM или мало места — установка прерывается с ошибкой. Для критичных хостов. |
Хранение по числу¶
Параметр «Хранить снапшотов» задаёт, сколько последних снапшотов оставлять. При создании нового самые старые сверх этого количества автоматически удаляются. По умолчанию — 3.
Политика ротации¶
Автоудаление по времени защищает volume group от переполнения. После завершения кампании её снапшоты автоматически помечаются к удалению через заданное число часов.
Глобальная политика — в окне «LVM-снапшоты: реестр и ротация», поле «автоудаление снапшотов кампаний через N часов» (по умолчанию 48).
Переопределение в кампании — поле «Автоудаление через, ч» перезаписывает глобальный срок для конкретной кампании.
Только снапшоты кампаний
Автоудаление по времени применяется только к снапшотам с источником «кампания». Ручные снапшоты никогда не удаляются автоматически.
Бейджи 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 из кампании:
off— снапшот не создаётся, обновление проходит как обычно.if_possible— агент пытается создать снапшот (ensure_pre_update_snapshot). Если корень не на LVM или мало места — снапшот пропускается, в журнал пишется предупреждение, обновление продолжается.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).
Как рассчитывается размер снапшота
Размер снапшота вычисляется автоматически: 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
Снапшот, созданный вручную на хосте
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 не выполняет автоматически — это делает администратор хоста вручную. Причина: отмена изменений в работающей корневой файловой системе требует перезагрузки и не может быть безопасно выполнена удалённо «на лету».
Нет кнопки «Восстановить» в админке
В карточке хоста есть только «Создать» и «Удалить» снапшот. Откат выполняется системным администратором напрямую на хосте.
Когда нужно откатиться¶
- После установки обновлений хост не загружается или работает нестабильно.
- Применённые изменения нужно отменить и вернуть систему к состоянию на момент снапшота.
Процедура отката через lvconvert --merge¶
Выполняется на самом хосте (или через IPMI, загрузочный носитель):
# 1. Найти нужный снапшот
sudo lvs
# 2. Запустить объединение снапшота с оригинальным томом
sudo lvconvert --merge /dev/<vg>/<имя_снапшота>
# 3. Перезагрузить хост — merge применяется при активации тома
sudo reboot
После перезагрузки корневая ФС вернётся к состоянию на момент создания снапшота. Все изменения, сделанные после этого момента (включая проблемное обновление), будут отменены.
Слияние удаляет снапшот
После 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 меньше места). Этого достаточно для отката после типового обновления, но не для длительного хранения при активной записи.
Связанные страницы¶
- Управление обновлениями — Linux — кампании и задания установки, где настраиваются автоматические снапшоты.
- Быстрый старт — подготовка хоста с LVM.
- Требования и подготовка — дисковое планирование под volume group.
- Клиент LSUS — конфигурация агента, параметры
lsus-client.conf.