Подключение 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 без необходимости.
Безопасный порядок подключения
- Проверить datastore PBS.
- Проверить DNS и порт 8007.
- Получить fingerprint.
- Создать отдельного пользователя.
- Создать API token.
- Назначить минимальные ACL.
- Добавить PBS storage в PVE.
- Проверить
pvesm status. - Создать ручной backup.
- Проверить snapshot на PBS.
- Создать prune, GC и verify jobs.
- Выполнить тестовое восстановление.
Быстрый набор команд
Получить 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 и тестового восстановления.