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

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

Снапшоты — это механизм создания точек отката корневой файловой системы 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 меньше места). Этого достаточно для отката после типового обновления, но не для длительного хранения при активной записи.

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