Подключение Proxmox Backup Server к Proxmox VE

Пошаговое подключение Proxmox Backup Server к Proxmox VE: fingerprint, API token, datastore, права, тестовый backup и проверка восстановления.

Proxmox Backup Server предназначен для централизованного хранения резервных копий виртуальных машин и LXC-контейнеров. В отличие от обычного файлового хранилища, PBS поддерживает дедупликацию, инкрементальную передачу, проверку целостности, шифрование и специализированные задания обслуживания.

В этой инструкции рассматривается только подключение уже установленного Proxmox Backup Server к Proxmox VE и проверка первой резервной копии.

Подходит для: Proxmox VE 8 и 9, Proxmox Backup Server 3 и 4
Уровень сложности: средний
Время выполнения: около 20–30 минут
Требуемый доступ: административные права в PVE и PBS

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

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

  • будет проверена сеть между PVE и PBS;
  • будет получен TLS fingerprint;
  • будет создан отдельный пользователь или API token;
  • будут назначены минимальные права на datastore;
  • PBS будет добавлен как storage в Proxmox VE;
  • будет выполнен тестовый backup;
  • будет проверен список snapshot;
  • будет выполнена базовая проверка восстановления.

Что потребуется

Подготовьте:

PBS address
PBS port
Datastore name
User or API token
Password or token secret
TLS fingerprint
Namespace, если используется

Пример:

PBS server: pbs.example.com
Port: 8007
Datastore: backup-store
User: pve-backup@pbs

Используйте параметры своей инфраструктуры.

Проверка доступности PBS

С узла Proxmox VE:

ping -c 3 pbs.example.com

Проверьте DNS:

getent hosts pbs.example.com

Проверьте порт:

nc -zv pbs.example.com 8007

Если nc отсутствует:

apt update
apt install -y netcat-openbsd

Проверка веб-интерфейса PBS

Откройте:

https://pbs.example.com:8007

Проверьте:

  • вход;
  • состояние datastore;
  • свободное место;
  • задачи Verify;
  • Prune;
  • Garbage Collection.

Перед подключением PVE datastore должен существовать и иметь состояние available.

Проверка datastore на PBS

В веб-интерфейсе PBS:

Datastore → backup-store → Summary

Проверьте:

  • общий объём;
  • использованное место;
  • свободное место;
  • путь datastore;
  • статус.

Через CLI на PBS:

proxmox-backup-manager datastore list

Показать конкретный datastore:

proxmox-backup-manager datastore show backup-store

Получение TLS fingerprint

На PBS:

proxmox-backup-manager cert info |
grep Fingerprint

Другой вариант:

openssl x509   -in /etc/proxmox-backup/proxy.pem   -noout   -fingerprint   -sha256

Пример:

SHA256 Fingerprint=AA:BB:CC:...

Сохраните fingerprint без изменений.

Он нужен, если PBS использует собственный сертификат, которому PVE не доверяет через общую PKI.

Проверка сертификата удалённо

С узла PVE:

openssl s_client   -connect pbs.example.com:8007   -servername pbs.example.com   </dev/null 2>/dev/null |
openssl x509   -noout   -subject   -issuer   -fingerprint   -sha256

Сравните fingerprint с полученным на PBS.

Не принимайте неизвестный fingerprint.

Создание отдельного пользователя на PBS

В веб-интерфейсе PBS:

Configuration → Access Control → User Management

Создайте пользователя:

pve-backup@pbs

Задайте сложный пароль.

Не используйте root@pam для постоянного подключения PVE к PBS.

Создание пользователя через CLI

На PBS:

proxmox-backup-manager user create   pve-backup@pbs

Задайте пароль:

proxmox-backup-manager user update   pve-backup@pbs   --password

Команда может запросить пароль интерактивно.

API token вместо пароля

Для интеграции удобнее использовать API token.

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

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

В PBS откройте:

Configuration → Access Control → API Token

Создайте token:

User: pve-backup@pbs
Token ID: pve01

Полный Auth ID будет выглядеть так:

pve-backup@pbs!pve01

Сохраните token secret сразу. Повторно он обычно не отображается.

Создание API token через CLI

На PBS:

proxmox-backup-manager user generate-token   pve-backup@pbs   pve01

Сохраните выведенный secret в защищённом хранилище.

Выбор модели прав

Для обычной загрузки backup PVE должен иметь право создавать backup group и snapshot в нужном datastore или namespace.

Не выдавайте право удаления backup, если pruning выполняется самим PBS.

Это снижает последствия компрометации узла PVE.

Назначение прав на datastore

В PBS откройте:

Configuration → Access Control → Permissions

Добавьте ACL.

Путь:

/datastore/backup-store

Для пользователя или token назначьте роль, достаточную для backup и restore.

В зависимости от модели доступа могут использоваться роли:

DatastoreBackup
DatastoreReader
DatastorePowerUser

Для минимальной модели загрузки backup обычно достаточно роли, позволяющей создавать и читать собственные backup group.

Права на namespace

Если используется namespace:

/datastore/backup-store/pve01

назначьте права только на него.

Это позволяет разделить backup нескольких кластеров или площадок.

Пример структуры:

backup-store
└── pve-cluster-01

Почему лучше использовать namespace

Namespace помогает:

  • разделять несколько PVE-кластеров;
  • ограничивать ACL;
  • упрощать retention;
  • исключать пересечение backup group;
  • организовывать отдельные sync jobs.

Для одного небольшого PVE namespace необязателен.

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

На PBS покажите ACL:

proxmox-backup-manager acl list

Фильтрация:

proxmox-backup-manager acl list |
grep pve-backup

Проверка API token

С узла PVE можно проверить доступ через proxmox-backup-client.

Установите клиент при необходимости:

apt update
apt install -y proxmox-backup-client

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

proxmox-backup-client version

Формат repository

Формат подключения:

AUTH_ID@SERVER:DATASTORE

Для API token:

pve-backup@pbs!pve01@pbs.example.com:backup-store

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

Проверка списка backup

export PBS_PASSWORD='TOKEN_SECRET'
proxmox-backup-client list   --repository 'pve-backup@pbs!pve01@pbs.example.com:backup-store'

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

unset PBS_PASSWORD

Не сохраняйте token secret в history.

Защита секрета от shell history

Безопаснее использовать временный файл:

install -m 600 /dev/null /root/.pbs-token

Запишите secret:

nano /root/.pbs-token

Используйте:

export PBS_PASSWORD_FILE=/root/.pbs-token

После теста:

unset PBS_PASSWORD_FILE

Добавление PBS через веб-интерфейс PVE

В Proxmox VE откройте:

Datacenter → Storage

Нажмите:

Add → Proxmox Backup Server

Поле ID

Укажите понятный Storage ID:

pbs-backup

Он будет использоваться в backup jobs и CLI.

Поле Server

Укажите:

pbs.example.com

или IP-адрес.

Предпочтительнее использовать FQDN с корректным DNS.

Поле Username

Для обычного пользователя:

pve-backup@pbs

Для API token:

pve-backup@pbs!pve01

Поле Password

Для пользователя укажите пароль.

Для API token укажите token secret.

Поле Datastore

backup-store

Имя должно точно совпадать с datastore на PBS.

Поле Namespace

Если используется namespace:

pve-cluster-01

Если namespace не используется, оставьте поле пустым.

Поле Fingerprint

Вставьте SHA-256 fingerprint сертификата PBS.

Если PBS использует сертификат от доверенного CA и имя сервера совпадает, fingerprint может не требоваться.

Для собственного сертификата fingerprint обязателен.

Поле Content

Для PBS используется:

VZDump backup file

Другие типы содержимого на PBS storage не применяются.

Поле Nodes

В кластере PVE укажите узлы, которым разрешено использовать этот PBS.

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

Сохранение storage

Нажмите:

Add

После добавления откройте:

Datacenter → Storage → pbs-backup

Проверьте статус.

Добавление через CLI

На узле PVE:

pvesm add pbs pbs-backup   --server pbs.example.com   --datastore backup-store   --username 'pve-backup@pbs!pve01'   --password   --fingerprint 'AA:BB:CC:...'

Команда может запросить secret интерактивно.

Для namespace:

pvesm add pbs pbs-backup   --server pbs.example.com   --datastore backup-store   --namespace pve-cluster-01   --username 'pve-backup@pbs!pve01'   --password   --fingerprint 'AA:BB:CC:...'

Проверьте справку:

pvesm add pbs --help

Проверка storage в PVE

pvesm status

Ожидается:

pbs-backup   pbs   active

Показать содержимое:

pvesm list pbs-backup

Если backup ещё нет, список будет пустым.

Проверка конфигурации storage

grep -A10 '^pbs: pbs-backup'   /etc/pve/storage.cfg

Пример:

pbs: pbs-backup
    datastore backup-store
    server pbs.example.com
    content backup
    fingerprint AA:BB:CC:...
    username pve-backup@pbs!pve01

Секрет не хранится открытым текстом в этой строке.

Создание тестовой резервной копии

Выберите небольшую тестовую VM или LXC.

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

VM → Backup → Backup now

Укажите:

Storage: pbs-backup
Mode: Snapshot

Запустите backup.

Backup через CLI

Для VM:

vzdump VM_ID   --storage pbs-backup   --mode snapshot

Для LXC:

vzdump CT_ID   --storage pbs-backup   --mode snapshot

Сжатие и дедупликация управляются форматом PBS.

Проверка задачи

В журнале должно появиться:

TASK OK

Проверьте:

  • скорость передачи;
  • размер backup;
  • количество reused chunks;
  • ошибки TLS;
  • ошибки ACL;
  • datastore usage.

Проверка backup на PBS

Откройте:

Datastore → backup-store → Content

Выберите namespace при необходимости.

В списке появится backup group вида:

vm/100
ct/200

Внутри группы будут snapshot с датой и временем.

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

На PBS:

proxmox-backup-client list   --repository 'pve-backup@pbs@localhost:backup-store'

Либо используйте веб-интерфейс, чтобы не передавать лишние credentials в shell.

Дедупликация и incremental backup

Каждый backup отображается как полноценный snapshot, но после первой копии PBS передаёт только новые и изменившиеся chunks.

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

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

Проверка reused chunks

В журнале backup ищите строки о:

reused
uploaded
backup speed

Большое число reused chunks при повторной копии означает, что дедупликация работает.

Создание backup job

После ручного теста откройте:

Datacenter → Backup

Создайте job со storage:

pbs-backup

Настройте:

  • список VM и LXC;
  • расписание;
  • режим snapshot;
  • notification mode.

Retention для PBS лучше выполнять prune job на самом Backup Server.

Почему pruning лучше выполнять на PBS

Если PVE token не имеет права удаления, компрометированный узел не сможет удалить старые backup.

На PBS создайте отдельный prune job.

Это разделяет:

PVE — создаёт backup
PBS — управляет retention

Настройка prune job на PBS

Откройте:

Datastore → backup-store → Prune & GC

Создайте Prune Job.

Пример retention:

Keep Last: 3
Keep Daily: 7
Keep Weekly: 4
Keep Monthly: 6

Сначала проверьте результат через prune simulator или dry-run, если он доступен.

Garbage Collection

Prune удаляет ссылки на snapshot, но chunks физически освобождаются Garbage Collection.

Создайте GC schedule:

Datastore → backup-store → Prune & GC

Не запускайте GC одновременно с тяжёлыми backup и verify jobs без необходимости.

Verification Job

Откройте:

Datastore → backup-store → Verify Jobs

Создайте регулярную проверку.

Verification проверяет контрольные суммы backup и помогает обнаружить повреждение данных.

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

В PVE откройте:

Storage → pbs-backup → Backups

Выберите тестовый snapshot.

Нажмите:

Restore

Безопаснее восстановить его с новым VM ID.

Пример:

Исходная VM: 100
Тестовая VM: 150

Восстановление через CLI

Для VM:

qmrestore   'pbs-backup:backup/vm/100/SNAPSHOT'   150   --storage TARGET_STORAGE

Точный volume ID скопируйте из:

pvesm list pbs-backup

Для LXC используйте:

pct restore

Проверка восстановленной VM

После восстановления:

qm config 150
qm start 150

Перед подключением к production-сети измените:

  • IP;
  • hostname;
  • MAC при необходимости;
  • application identifiers.

File Restore

PBS поддерживает восстановление отдельных файлов из backup VM и LXC.

В PVE выберите snapshot:

Storage → pbs-backup → Backups

Нажмите:

File Restore

Выберите файловую систему и скачайте нужный файл или каталог.

Это удобнее полного восстановления VM при случайном удалении одного файла.

Клиентское шифрование backup

PVE может шифровать backup до отправки на PBS.

При включении шифрования ключ должен храниться отдельно.

Без ключа восстановить backup невозможно даже при полном доступе к PBS.

Настройка encryption key требует отдельной инструкции.

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

На PBS:

proxmox-backup-manager datastore show backup-store

Также:

df -h

Следите за свободным местом до запуска GC.

При почти заполненном datastore backup может завершиться ошибкой.

Проверка задач PBS

proxmox-backup-manager task list

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

Administration → Tasks

Проверяйте:

  • backup;
  • prune;
  • garbage collection;
  • verify;
  • sync.

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

Storage в PVE отображается как inactive

Проверьте:

pvesm status

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

nc -zv pbs.example.com 8007

Проверьте DNS и fingerprint.

Ошибка fingerprint

Получите актуальный fingerprint на PBS:

proxmox-backup-manager cert info

Сравните его с /etc/pve/storage.cfg.

Если сертификат был заменён законно, обновите fingerprint после проверки.

Authentication failed

Проверьте:

  • realm;
  • полное имя API token;
  • token secret;
  • enable state пользователя;
  • ACL;
  • privilege separation.

Полное имя token:

USER@REALM!TOKEN_ID

Permission denied

Проверьте ACL на PBS:

proxmox-backup-manager acl list

Убедитесь, что права назначены на правильный datastore или namespace.

Datastore not found

Проверьте точное имя:

proxmox-backup-manager datastore list

Имена чувствительны к ошибкам ввода.

Backup выполняется медленно

Проверьте:

  • сеть;
  • storage PBS;
  • загрузку CPU;
  • ZFS или RAID;
  • concurrent jobs;
  • verify и GC;
  • первый ли это backup;
  • большое количество новых данных.

Backup есть, но место не освобождается после prune

Запустите Garbage Collection.

Prune и GC решают разные задачи.

File Restore не открывается

Проверьте целостность snapshot и доступность PBS.

Запустите Verification Job.

После смены сертификата PBS PVE потерял доступ

Обновите fingerprint после проверки нового сертификата.

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

Безопасный порядок подключения

  1. Проверить datastore PBS.
  2. Проверить DNS и порт 8007.
  3. Получить fingerprint.
  4. Создать отдельного пользователя.
  5. Создать API token.
  6. Назначить минимальные ACL.
  7. Добавить PBS storage в PVE.
  8. Проверить pvesm status.
  9. Создать ручной backup.
  10. Проверить snapshot на PBS.
  11. Создать prune, GC и verify jobs.
  12. Выполнить тестовое восстановление.

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

Получить fingerprint на PBS:

proxmox-backup-manager cert info

Проверить datastore:

proxmox-backup-manager datastore list

Добавить PBS в PVE:

pvesm add pbs pbs-backup   --server pbs.example.com   --datastore backup-store   --username 'pve-backup@pbs!pve01'   --password   --fingerprint 'AA:BB:CC:...'

Проверить:

pvesm status
pvesm list pbs-backup

Создать backup:

vzdump VM_ID   --storage pbs-backup   --mode snapshot

Итог

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

  • проверена сеть между PVE и PBS;
  • получен TLS fingerprint;
  • создан отдельный пользователь или API token;
  • назначены минимальные права;
  • PBS добавлен как storage;
  • выполнен первый backup;
  • настроены prune, GC и verify jobs;
  • выполнена базовая проверка восстановления.

Интеграцию PBS следует считать завершённой только после успешного backup, verification и тестового восстановления.

← Предыдущая статья Настройка High Availability для виртуальной машины в Proxmox VE Следующая статья → Установка и базовая настройка Nginx в Ubuntu