Создание снапшота виртуальной машины в Proxmox VE

Пошаговое создание снапшота виртуальной машины в Proxmox VE, проверка поддержки хранилища, откат и безопасное удаление.

Снапшот фиксирует состояние виртуальной машины на определённый момент времени. Его удобно создавать перед обновлением системы, изменением конфигурации или установкой нового программного обеспечения.

Снапшот не является полноценной резервной копией: он зависит от того же хранилища и не защищает от его отказа.

В этой инструкции рассматривается только создание снапшота VM, откат к нему и безопасное удаление.

Подходит для: Proxmox VE 8 и 9
Уровень сложности: начальный
Время выполнения: около 10 минут
Требуемый доступ: учётная запись с правами управления виртуальной машиной

Что будет рассмотрено

После выполнения инструкции можно будет:

  • проверить поддержку снапшотов;
  • создать снапшот через веб-интерфейс;
  • создать снапшот через CLI;
  • сохранить состояние оперативной памяти;
  • выполнить откат;
  • удалить снапшот;
  • отличать снапшот от резервной копии.

Когда полезен снапшот

Снапшот удобно создавать перед:

  • обновлением операционной системы;
  • изменением сетевых параметров;
  • установкой драйверов;
  • изменением конфигурации приложения;
  • миграцией данных;
  • тестированием обновления;
  • выполнением потенциально рискованных работ.

Снапшот особенно полезен, когда требуется быстро вернуть VM в предыдущее состояние.

Когда снапшот не подходит

Снапшот не заменяет резервную копию, потому что:

  • хранится на том же хранилище;
  • зависит от исходного виртуального диска;
  • может быть потерян вместе с хранилищем;
  • не предназначен для долгосрочного хранения;
  • может снижать производительность при длительном использовании;
  • не гарантирует прикладную согласованность базы данных.

Для защиты от отказа хранилища используйте отдельный backup.

Проверка типа хранилища

Откройте:

Datacenter → Storage

Выберите хранилище виртуального диска.

Проверьте его тип.

Поддержка снапшотов зависит от backend. Обычно снапшоты доступны для:

  • ZFS;
  • LVM-thin;
  • Ceph RBD;
  • qcow2 на файловом хранилище;
  • некоторых других storage backend.

Обычный raw-диск на неподдерживаемом файловом хранилище может не поддерживать снапшоты.

Проверка через CLI

Покажите конфигурацию VM:

qm config VM_ID

Пример:

qm config 100

Проверьте диски:

qm config VM_ID |
grep -E '^(scsi|sata|virtio|ide)'

Покажите доступные хранилища:

pvesm status

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

Через веб-интерфейс:

VM → Snapshots

Через CLI:

qm listsnapshot VM_ID

Пример:

qm listsnapshot 100

Если снапшотов нет, будет показано только текущее состояние.

Подготовка перед созданием

Перед снапшотом рекомендуется:

  1. Проверить состояние VM.
  2. Убедиться, что нет активного backup или миграции.
  3. Проверить свободное место.
  4. Завершить критические операции внутри гостевой ОС.
  5. Для базы данных выполнить штатный flush или дамп при необходимости.
  6. Убедиться, что QEMU Guest Agent работает.

Проверка состояния VM

qm status VM_ID

Пример:

qm status 100

Ожидаемый результат:

status: running

Проверка свободного места

pvesm status

Для ZFS:

zpool list
zfs list

Для LVM-thin:

lvs

Недостаток свободного места может привести к проблемам при росте снапшота.

Проверка QEMU Guest Agent

В настройках VM:

Options → QEMU Guest Agent

Должно быть:

Enabled

В гостевой Ubuntu или Debian:

systemctl status qemu-guest-agent --no-pager

Проверка с узла Proxmox:

qm agent VM_ID ping

Пример:

qm agent 100 ping

Создание снапшота через веб-интерфейс

Выберите виртуальную машину.

Откройте:

Snapshots

Нажмите:

Take Snapshot

Укажите имя:

before-upgrade

Добавьте описание:

Перед обновлением операционной системы

При необходимости включите:

Include RAM

Нажмите:

Take Snapshot

Дождитесь завершения задачи.

Правила имени снапшота

Используйте короткие имена:

before-upgrade
before-network-change
before-app-update

Лучше использовать:

  • латинские буквы;
  • цифры;
  • дефисы;
  • понятное назначение.

Не используйте дату как единственное описание. Назначение снапшота должно быть очевидным.

Параметр Include RAM

Если включить:

Include RAM

Proxmox сохранит состояние оперативной памяти вместе с дисками.

После отката VM сможет продолжить работу примерно с того же состояния.

Преимущества:

  • сохраняется состояние работающих процессов;
  • быстрее возвращается текущая сессия.

Недостатки:

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

Для большинства изменений конфигурации достаточно снапшота без RAM.

Создание снапшота через CLI

Базовая команда:

qm snapshot VM_ID SNAPSHOT_NAME

Пример:

qm snapshot 100 before-upgrade

С описанием:

qm snapshot 100 before-upgrade   --description 'Перед обновлением операционной системы'

Снапшот с сохранением RAM

qm snapshot 100 before-upgrade   --vmstate 1   --description 'Перед обновлением с сохранением RAM'

Параметр:

--vmstate 1

включает сохранение состояния памяти.

Проверка после создания

qm listsnapshot VM_ID

Пример:

qm listsnapshot 100

Проверьте:

  • имя;
  • дату;
  • описание;
  • текущее состояние;
  • наличие сохранённой RAM при необходимости.

Выполнение изменений после снапшота

После создания снапшота можно выполнять запланированные работы.

Пример внутри Ubuntu:

sudo apt update
sudo apt upgrade

После изменений проверьте:

  • загрузку системы;
  • сеть;
  • SSH;
  • приложение;
  • журнал ошибок;
  • свободное место.

Когда нужен откат

Откат выполняют, если после изменения:

  • VM перестала загружаться;
  • пропала сеть;
  • приложение не запускается;
  • обновление нарушило совместимость;
  • конфигурация повреждена;
  • восстановление вручную займёт больше времени.

Перед откатом сохраните важные данные, созданные после снапшота, если они ещё нужны.

Что произойдёт при откате

Откат возвращает виртуальные диски к состоянию на момент снапшота.

Все изменения после него будут потеряны, включая:

  • новые файлы;
  • обновления;
  • изменения конфигурации;
  • данные приложения;
  • новые записи базы данных.

Если снапшот содержит RAM, также восстанавливается сохранённое состояние памяти.

Откат через веб-интерфейс

Откройте:

VM → Snapshots

Выберите снапшот.

Нажмите:

Rollback

Подтвердите операцию.

Дождитесь завершения задачи.

После отката проверьте состояние VM и запустите её при необходимости.

Откат через CLI

qm rollback VM_ID SNAPSHOT_NAME

Пример:

qm rollback 100 before-upgrade

Проверьте:

qm status 100
qm listsnapshot 100

Проверка после отката

Откройте консоль VM.

Проверьте гостевую систему:

ip addr
ip route

Проверьте сервисы:

systemctl --failed

Проверьте приложение и его журнал.

Для веб-сервиса:

curl -I http://127.0.0.1

Удаление снапшота через веб-интерфейс

После успешной проверки обновления снапшот лучше удалить.

Откройте:

VM → Snapshots

Выберите снапшот.

Нажмите:

Remove

Подтвердите удаление.

Удаление может занять некоторое время в зависимости от backend и объёма изменений.

Удаление через CLI

qm delsnapshot VM_ID SNAPSHOT_NAME

Пример:

qm delsnapshot 100 before-upgrade

Проверьте:

qm listsnapshot 100

Почему снапшоты не стоит хранить долго

Длительное хранение снапшотов может:

  • усложнять структуру дисков;
  • увеличивать расход места;
  • снижать производительность;
  • усложнять обслуживание;
  • увеличивать время удаления;
  • повышать риск заполнения thin pool или ZFS pool.

Снапшот лучше использовать как краткосрочную точку возврата.

Рекомендуемый срок хранения

Для временного снапшота перед изменением:

от нескольких часов до нескольких дней

После успешной проверки изменений снапшот следует удалить.

Для долгосрочного хранения используйте резервные копии.

Снапшот и резервная копия

Снапшот

  • создаётся быстро;
  • хранится рядом с VM;
  • удобен для быстрого отката;
  • зависит от исходного хранилища;
  • предназначен для краткосрочного использования.

Резервная копия

  • создаётся дольше;
  • может храниться отдельно;
  • защищает от потери исходного storage;
  • подходит для долгосрочного хранения;
  • позволяет восстановить VM на другом узле.

Правильная схема использует и снапшоты, и резервные копии, но для разных задач.

Особенности баз данных

Снапшот диска не всегда гарантирует логическую согласованность базы данных.

Для PostgreSQL, MySQL или MariaDB желательно:

  • выполнить штатный дамп;
  • использовать механизм backup самой СУБД;
  • остановить запись;
  • применять согласованный snapshot;
  • проверять восстановление.

QEMU Guest Agent улучшает согласованность файловой системы, но не заменяет прикладной backup базы данных.

Типичные проблемы

Кнопка Take Snapshot недоступна

Проверьте:

  • тип хранилища;
  • формат диска;
  • права пользователя;
  • наличие неподдерживаемого диска;
  • состояние VM;
  • активные задачи.

Проверьте конфигурацию:

qm config VM_ID

Ошибка feature 'snapshot' is not available

Хранилище или формат диска не поддерживает снапшоты.

Используйте поддерживаемый backend либо создайте резервную копию вместо снапшота.

Снапшот не создаётся из-за места

Проверьте:

pvesm status
df -h

Для LVM-thin:

lvs

Для ZFS:

zpool list
zfs list

Освободите место до повторной попытки.

После отката пропали данные

Это ожидаемо: все изменения после момента снапшота удаляются.

Перед откатом нужно сохранить новые данные отдельно.

Удаление снапшота выполняется долго

Причины:

  • большой объём изменений;
  • медленное хранилище;
  • высокая нагрузка;
  • особенности backend;
  • цепочка нескольких снапшотов.

Не прерывайте задачу без необходимости.

VM зависла после отката с RAM

Сохранённое состояние памяти может оказаться нежелательным для конкретного приложения.

В таких случаях используйте снапшот без Include RAM.

Безопасный рабочий процесс

  1. Проверить свежую резервную копию.
  2. Проверить свободное место.
  3. Проверить QEMU Guest Agent.
  4. Создать снапшот с понятным именем.
  5. Выполнить изменение.
  6. Проверить загрузку, сеть и сервисы.
  7. При ошибке выполнить откат.
  8. При успехе удалить снапшот.

Быстрый набор команд

Показать снапшоты:

qm listsnapshot VM_ID

Создать:

qm snapshot VM_ID before-change   --description 'Перед изменением конфигурации'

Создать с RAM:

qm snapshot VM_ID before-change   --vmstate 1

Откатить:

qm rollback VM_ID before-change

Удалить:

qm delsnapshot VM_ID before-change

Итог

После выполнения инструкции:

  • проверена поддержка снапшотов;
  • создан снапшот через веб-интерфейс и CLI;
  • рассмотрено сохранение RAM;
  • выполнена проверка списка снапшотов;
  • разобран безопасный откат;
  • показано удаление;
  • объяснена разница между снапшотом и резервной копией.

Снапшот удобен как краткосрочная точка возврата перед изменениями, но не должен заменять отдельную резервную копию.

← Предыдущая статья Резервное копирование виртуальной машины в Proxmox VE Следующая статья → Создание шаблона Cloud-Init в Proxmox VE