Резервное Копирование Proxmox: Настраиваем PBS И Восстанавливаем Виртуальную Машину

В предыдущей статье мы установили Windows Server на Proxmox. Теперь разберёмся с резервными копиями. Настроим Proxmox Backup Server, сделаем бэкап виртуальной машины и восстановим её под другим ID. Рабочую машину при этом не трогаем.

Что имеем?

Ниже — пример конфигурации для Proxmox VE 9.x и PBS 4.x. Адреса, диски и номера VM нужно заменить своими.

Что Значение в примере
Узел Proxmox VE 192.168.10.10
Отдельный сервер PBS 192.168.10.20
Имя PBS pbs01.example.net
Хранилище копий на PBS backup-vm
Подключение PBS в Proxmox VE pbs-office
Исходная виртуальная машина 101
ID для проверки восстановления 901, свободный во всём кластере
Хранилище восстановленных дисков local-lvm

local-lvm должно существовать на выбранном узле и иметь достаточно свободного места. Если диски VM лежат на ZFS или другом хранилище, при восстановлении выберите нужное вам.

Куда складываем копии
PBS в виртуальной машине на том же диске, что и исходные VM, не спасёт при потере этого диска. В примере PBS работает на отдельном компьютере со своим накопителем. RAID на основном сервере резервную копию не заменяет.

Иллюстрации ниже взяты из официальной документации Proxmox. Часть сделана в более ранних версиях интерфейса. Это не снимки описанного стенда: имена пользователей, хранилищ и параметры берём из текста, а не копируем с картинок.

1. Устанавливаем Proxmox Backup Server

Скачиваем ISO с сайта Proxmox, записываем на загрузочную флешку и загружаем с неё отдельный сервер.

В установщике:

  1. Выбираем системный диск PBS. Диск для резервных копий пока не используем.
  2. Задаём пароль root и действующий адрес электронной почты администратора.
  3. Указываем имя pbs01.example.net, статический IP 192.168.10.20, свой шлюз и DNS.
  4. После установки извлекаем флешку и перезагружаемся.

Установщик удалит данные на выбранном диске. Перед подтверждением сверяем модель и объём.

Открываем https://192.168.10.20:8007. Входим под root, realm — Linux PAM. Проверяем время и часовой пояс сервера. От узла Proxmox VE до PBS должен быть разрешён TCP-порт 8007.

В Administration → Repositories проверяем репозитории. При наличии подписки используем Enterprise. Для стенда без подписки отключаем недоступный Enterprise и добавляем соответствующий версии PBS репозиторий No-Subscription через интерфейс. Затем устанавливаем обновления через Administration → Updates. No-Subscription получает менее тщательно проверенные пакеты; для рабочего сервера выбирайте репозиторий осознанно.

2. Готовим диск для резервных копий

На PBS, в Shell, смотрим накопители:

lsblk -o NAME,SIZE,MODEL,SERIAL,FSTYPE,MOUNTPOINTS

Нужен отдельный пустой диск. Сверяем серийный номер, а не только имя вроде sdb: порядок устройств может измениться.

Открываем Administration → Storage / Disks → Directory → Create:

  • Disk — проверенный пустой накопитель;
  • Filesystem — ext4;
  • Name — backup-vm;
  • Add as Datastore — включено.

Создание файловой системы уничтожит прежнее содержимое выбранного диска. После завершения слева должен появиться datastore backup-vm.

Проверяем на PBS:

proxmox-backup-manager datastore list
findmnt /mnt/datastore/backup-vm
df -h /mnt/datastore/backup-vm

Путь должен находиться на выделенном диске. Если у вас уже есть подготовленная файловая система, не форматируйте её повторно: используйте Add Datastore с каталогом на смонтированном накопителе. Управление дисками и datastore.

3. Создаём пользователя и API-токен

На PBS открываем Configuration → Access Control → User Management → Add. Создаём пользователя pve-backup в realm pbs, задаём отдельный пароль, оставляем Enabled включённым.

/posts/proxmox-backup-server/images/pbs-gui-user-management-add-user.png
Добавление пользователя PBS. Источник: документация Proxmox; в нашем примере имя — pve-backup.

Во вкладке API Token нажимаем Add, выбираем pve-backup@pbs, имя токена — pve01. Сохраняем выданный секрет в менеджере паролей: повторно он не показывается.

Полный идентификатор токена:

pve-backup@pbs!pve01

В Permissions добавляем две записи:

Path Кому Role
/datastore/backup-vm Пользователю pve-backup@pbs DatastoreBackup
/datastore/backup-vm Токену pve-backup@pbs!pve01 DatastoreBackup

В обоих случаях включаем Propagate. Для пользователя используем Add → User Permission, для токена — Add → API Token Permission.

/posts/proxmox-backup-server/images/pbs-gui-permissions-add.png
Окно назначения прав из документации Proxmox. Здесь показан DatastoreAdmin; нам нужен DatastoreBackup и путь /datastore/backup-vm.

DatastoreBackup позволяет создавать и восстанавливать собственные копии. Удаление старых копий настроим на самом PBS. Права токена ограничены правами пользователя: одной записи для токена недостаточно. Права доступа PBS.

4. Подключаем PBS к Proxmox VE

Сначала на PBS получаем отпечаток сертификата:

proxmox-backup-manager cert info

Копируем значение Fingerprint (sha256) целиком.

Теперь в Proxmox VE открываем Datacenter → Storage → Add → Proxmox Backup Server:

Поле Значение
ID pbs-office
Server 192.168.10.20
Username pve-backup@pbs!pve01
Password Секрет API-токена
Datastore backup-vm
Namespace Пусто, корневое пространство
Fingerprint Отпечаток, полученный на PBS

Нажимаем Add. В Shell узла Proxmox VE проверяем:

pvesm status --storage pbs-office

Ожидаем состояние active. Если получили 401 или 403, проверяем идентификатор, секрет и обе записи прав. При ошибке сертификата сверяем отпечаток на PBS. Не отключаем его проверку ради успешного подключения.

Подключение PBS к Proxmox VE.

5. Делаем первую копию вручную

Для работающей VM устанавливаем QEMU Guest Agent внутри гостевой ОС и включаем его в VM → Options → QEMU Guest Agent. Для Windows установщик агента есть на ISO VirtIO; после установки проверяем службу агента. Если включение опции требует полного выключения и запуска VM, выполняем это в согласованное окно.

На узле Proxmox VE проверяем связь с агентом:

qm agent 101 ping

В VM → Hardware проверяем диски: все диски с нужными данными должны участвовать в бэкапе, опция Backup не должна быть отключена.

Открываем VM 101 → Backup → Backup now:

  • Storage — pbs-office;
  • Mode — Snapshot.

То же действие из Shell Proxmox VE:

vzdump 101 --storage pbs-office --mode snapshot

Выбираем один способ запуска. В журнале задания проверяем итоговый TASK OK и отсутствие ошибок агента. Затем на PBS открываем Datastore → backup-vm → Content: должна появиться группа vm/101 с новой копией.

Что гарантирует Snapshot
Snapshot позволяет копировать работающую VM. Агент помогает согласовать файловую систему, но не заменяет резервное копирование средствами СУБД. Для базы данных отдельно проверяем поддержку согласованного бэкапа; для Windows — работу VSS и нужных writers. Успешный бэкап диска сам по себе не доказывает, что приложение восстановится.

Режимы резервного копирования Proxmox VE.

6. Включаем расписание

В Proxmox VE → Datacenter → Backup → Add создаём задание:

Параметр Значение
Storage pbs-office
Schedule 02:00, ежедневно
Selection mode Include selected VMs
Выбранные VM 101
Mode Snapshot
Enabled Включено

На вкладке Retention оставляем Keep all backups: удалением управляет PBS. С ролью DatastoreBackup попытка очистки со стороны PVE может завершиться ошибкой прав.

Нажимаем Run now и проверяем именно созданное задание. При ежедневной копии можно потерять изменения после последнего успешного запуска — примерно до суток при исправном расписании. Если это слишком много, сокращаем интервал.

7. Настраиваем хранение и очистку

На PBS → Datastore → backup-vm → Prune & GC добавляем Prune Job:

Поле Значение
Namespace Root
Schedule 04:00
Keep Daily 7
Keep Weekly 4
Keep Monthly 3

Остальные поля Keep оставляем пустыми. Это политика хранения, а не обещание ровно 14 копий: число зависит от истории запусков. Перед применением проверяем правила в Prune Simulator.

/posts/proxmox-backup-server/images/pbs-gui-datastore-prune-job-add.png
Задание Prune из документации Proxmox. Для статьи используем Root, 04:00 и сроки 7 / 4 / 3 из таблицы.

Prune удаляет устаревшие снимки из списка. Garbage Collection освобождает блоки, которые больше не нужны оставшимся копиям. Ставим GC на 05:00. Освобождение места не обязательно произойдёт сразу: действует защитный период.

Время здесь примерное. Сначала измеряем длительность ночного бэкапа, затем разносим тяжёлые задания так, чтобы они не конкурировали за диск. Обслуживание PBS.

8. Проверяем целостность копий

На PBS → Datastore → backup-vm → Verify Jobs → Add задаём:

  • Schedule — 06:00;
  • Skip Verified — включено;
  • Re-Verify After — 30 дней;
  • Namespace — Root.
/posts/proxmox-backup-server/images/pbs-gui-datastore-verifyjob-add.png
Создание задания Verify. Источник: документация Proxmox. В примере выбираем backup-vm и запуск в 06:00.

Первую копию проверяем вручную через Content → Verify. Ждём успешного завершения. Verify проверяет целостность данных; загрузку ОС и работоспособность приложения проверим отдельно.

9. Восстанавливаем VM под другим ID

Исходную VM 101 не удаляем. На узле Proxmox VE открываем хранилище pbs-office → Backups, выбираем копию vm/101 и нажимаем Restore.

Указываем:

  • VM ID — свободный 901;
  • Storage — local-lvm или своё хранилище дисков;
  • Unique — включено, чтобы создать новые MAC-адреса;
  • Start after restore — выключено;
  • Live restore — выключено.

После завершения, до первого запуска, открываем VM 901 → Hardware и отключаем каждый сетевой адаптер через Disconnect. Для сетевого теста можно вместо этого подключить адаптеры к заранее подготовленному изолированному bridge без физических портов и маршрута в рабочую сеть.

Новый MAC не меняет адрес внутри ОС
Восстановленная VM сохраняет имя, статический IP и настройки служб. Не запускайте её в рабочей сети рядом с оригиналом. Особенно это касается контроллеров домена, DHCP и серверов телефонии. Для восстановления Active Directory нужен отдельный план, а не просто запуск копии VM.

Запускаем VM 901 и открываем консоль. Проверяем:

  1. ОС загрузилась без режима восстановления.
  2. Нужные диски и файлы доступны.
  3. Службы запускаются, приложение открывает свои данные.
  4. Данные соответствуют времени выбранного бэкапа.

Для файлового сервера открываем несколько документов. Для базы — выполняем проверку средствами СУБД. Если приложению нужна сеть, проводим проверку на изолированном стенде.

Записываем дату копии, время восстановления и результат проверки приложения. После теста выключаем VM 901. Не оставляем работающий клон «на всякий случай».

10. Настраиваем уведомления

Отдельно проверяем Proxmox VE → Datacenter → Notifications и PBS → Configuration → Notifications. Создаём доступный канал доставки, например SMTP, выполняем Test и убеждаемся, что сообщение пришло.

Настраиваем matchers так, чтобы получать результаты резервного копирования, ошибки Verify и GC. Для начала удобно получать все результаты: отсутствие привычного сообщения тоже повод проверить расписание. Настройки PVE и PBS независимы. Уведомления PBS.

Что ещё нужно для рабочего сервера

Отдельный PBS защищает от потери основного узла, но обе машины могут пострадать одновременно. Нужна ещё одна копия вне этой площадки: например, на втором PBS с собственной политикой хранения и отдельными учётными данными. Синхронизация PBS.

Если включаете клиентское шифрование, сохраните ключ восстановления и пароль к нему отдельно от PVE и PBS. Без ключа зашифрованная копия бесполезна. Шифрование резервных копий.

Не забываем и о конфигурации самого гипервизора: бэкап VM не является образом установленного Proxmox VE.

Заключение

На этом базовая настройка закончена. Есть расписание, сроки хранения, проверка целостности и понятный порядок восстановления. Повторяем тест восстановления после значимых изменений и периодически по графику. Именно он показывает, можно ли вернуть сервер в работу.