PVE/Backup Server

Материал из ALT Linux Wiki

Proxmox Backup Server (PBS) — клиент-серверное решение для резервного копирования и восстановления виртуальных машин, контейнеров и физических узлов. Решение оптимизировано для проекта PVE и позволяет безопасно создавать резервные копии. Поддерживается инкрементное резервное копирование с полной дедупликацией, что значительно снижает нагрузку на сеть и экономит пространство для хранения.

Сервер резервного копирования хранит данные резервного копирования и предоставляет API для создания хранилищ данных и управления ими. С помощью API также можно управлять дисками и другими ресурсами на стороне сервера. Клиент резервного копирования использует этот API для доступа к резервным данным.

Одна резервная копия может содержать несколько архивов. Например, при резервном копировании ВМ каждый диск сохраняется как отдельный архив внутри этой резервной копии. Сама конфигурация ВМ хранится в виде дополнительного файла.

Установка

Установка сервера

Минимальные требования к серверу (предназначены только для тестирования):

  • CPU: 64bit (x86-64 или AMD64), 2+ Ядра
  • ОЗУ: 2 ГБ
  • Диск: от 8 ГБ
  • Сеть: 1 интерфейс

Рекомендуемые требования к серверу:

  • CPU: 64bit, 4 Ядра
  • ОЗУ: 4 ГБ (+1 ГБ на каждый ТБ дискового пространства)
  • Диск: от 32 ГБ + резервное хранилище
  • Сеть: 1 интерфейс + резервирование
Примечание: Не рекомендуется устанавливать сервер резервного копирования непосредственно на гипервизор. Безопаснее использовать отдельный физический сервер для хранения резервных копий.


Установить сервер PBS (пакет proxmox-backup-server) можно следующей командой:

# apt-get install proxmox-backup-server

Запустить и добавить в автозагрузку Proxmox Backup API Proxy Server:

# systemctl enable --now proxmox-backup-proxy.service

Служба proxmox-backup-proxy предоставляет API Proxmox Backup Server через TCP-порт 8007 с использованием HTTPS. Она имеет весьма ограниченные разрешения. Операции, требующие дополнительных разрешений, перенаправляются в локальную службу proxmox-backup.

Служба proxmox-backup предоставляет API управления Proxmox Backup Server по адресу 127.0.0.1:82. Она имеет разрешение на выполнение всех привилегированных операций.

Примечание: Для работы с локальным ZFS хранилищем должен быть установлен модуль ядра с поддержкой ZFS (например, kernel-modules-zfs-std-def).

Включить модуль можно следующей командой:

# modprobe zfs

Чтобы не вводить эту команду после перезагрузки, следует раскомментировать строку:

#zfs
в файле /etc/modules-load.d/zfs.conf.


Установка клиента

Установить клиент PBS (пакет proxmox-backup-client):

# apt-get install proxmox-backup-client

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

PBS предлагает интегрированный веб-интерфейс для управления сервером. Все административные задачи можно выполнять в веб-браузере. Веб-интерфейс также предоставляет встроенную консоль.

Веб-интерфейс PBS доступен по адресу https://<IP-адрес|имя>:8007. Потребуется пройти аутентификацию (логин по умолчанию: root, пароль указывается в процессе установки).

Аутентификация в веб-интерфейсе PBS

Веб-интерфейс Proxmox Backup Server

Хранилище данных

Управление дисками

Увидеть диски, подключенные к системе, можно в веб-интерфейсе «Управление» → «Хранилище/Диски»:

PBS. Диски, подключенные к системе

Просмотр списка дисков в командной строке:

# proxmox-backup-manager disk list
┌─────────┬─────────┬─────┬───────────┬──────────────┬──────────────────────┬─────────┬─────────┐
│ name    │ used    │ gpt │ disk-type │         size │ model                │ wearout │ status  │
╞═════════╪═════════╪═════╪═══════════╪══════════════╪══════════════════════╪═════════╪═════════╡
│ nvme0n1 │ zfs     │   1 │ ssd       │ 161061273600 │ ORCL-VBOX-NVME-VER12 │  0.00 % │ passed  │
├─────────┼─────────┼─────┼───────────┼──────────────┼──────────────────────┼─────────┼─────────┤
│ nvme0n2 │ zfs     │   1 │ ssd       │ 161061273600 │ ORCL-VBOX-NVME-VER12 │  0.00 % │ passed  │
├─────────┼─────────┼─────┼───────────┼──────────────┼──────────────────────┼─────────┼─────────┤
│ nvme0n3 │ mounted │   1 │ ssd       │  53687091200 │ ORCL-VBOX-NVME-VER12 │  0.00 % │ passed  │
├─────────┼─────────┼─────┼───────────┼──────────────┼──────────────────────┼─────────┼─────────┤
│ sda     │ mounted │   1 │ hdd       │  62277025792 │ VBOX_HARDDISK        │       - │ unknown │
└─────────┴─────────┴─────┴───────────┴──────────────┴──────────────────────┴─────────┴─────────┘

Создание файловой системы ext4 или xfs на диске в веб-интерфейсе:

Proxmox Backup Server. Создать файловую систему на диске

Пример создания файловой системы в командной строке (будет создана файловая система ext4 и хранилище данных на диске nvme0n3, хранилище данных будет создано по адресу /mnt/datastore/store1):

# proxmox-backup-manager disk fs create store1 --disk nvme0n3 --filesystem ext4 --add-datastore true
create datastore 'store1' on disk nvme0n3
Chunkstore create: 1%
Chunkstore create: 2%
…
Chunkstore create: 99%
TASK OK

Для создания zpool в веб-интерфейсе, следует в разделе «Хранилище/Диски» перейти на вкладку «ZFS» и нажать кнопку «Создать: ZFS». В открывшемся окне следует задать параметры zpool: имя хранилища, выбрать диски, уровень RAID и нажать кнопку «OK»:

Proxmox Backup Server. Создание хранилища ZFS

Команда для создания зеркального zpool с использованием двух дисков и монтированием в /mnt/datastore/zfs_st:

# proxmox-backup-manager disk zpool create zfs_st --devices nvme0n1,nvme0n2 --raidlevel mirror

Для мониторинга состояния локальных дисков используется пакет smartmontools. Он содержит набор инструментов для мониторинга и управления S.M.A.R.T. системой для локальных жестких дисков. Если диск поддерживает S.M.A.R.T. и поддержка SMART для диска включена, просмотреть данные S.M.A.R.T. можно в веб-интерфейсе или с помощью команды:

# proxmox-backup-manager disk smart-attributes sdX

Хранилище данных

Хранилище данных — это место, где хранятся резервные копии. Текущая реализация PBS использует каталог внутри стандартной файловой системы (ext4, xfs или zfs) для хранения данных резервного копирования. Информация о конфигурации для хранилищ данных хранится в файле /etc/proxmox-backup/datastore.cfg.

Необходимо настроить как минимум одно хранилище данных. Хранилище данных идентифицируется именем и указывает на каталог в файловой системе. С каждым хранилищем связаны настройки хранения, определяющие, сколько снимков резервных копий для каждого интервала времени (ежечасно, ежедневно, еженедельно, ежемесячно, ежегодно) хранить в этом хранилище.

Создание хранилища данных

Для создания хранилища в веб-интерфейсе, необходимо нажать кнопку «Добавить хранилище данных» в боковом меню в разделе «Хранилище данных». В открывшемся окне необходимо указать:

  • «Имя» — название хранилища данных;
  • «Путь к каталогу хранилища» — путь к каталогу, в котором будет создано хранилище данных;
  • «Расписание сборщика мусора» — частота, с которой запускается сборка мусора;
  • «Расписание удаления» — частота, с которой происходит удаление ранее созданных резервных копий;
  • «Параметры удаления» — количество резервных копий, которые необходимо хранить.

Proxmox Backup Server. Создание хранилища данных

Создание хранилища данных в консоли:

# proxmox-backup-manager datastore create store2 /mnt/backup/disk1

После создания хранилища данных по умолчанию появляется следующий макет:

# ls -arilh /mnt/backup/disk1/
итого 1,1M
665243 -rw-r--r-- 1 backup backup    0 мар 31 14:05 .lock
665242 drwxr-x--- 1 backup backup 1,1M мар 31 14:05 .chunks
665240 drwxr-xr-x 3 root   root   4,0K мар 31 13:56 ..
665241 drwxr-xr-x 3 backup backup 4,0K мар 31 14:05
  • .lock — пустой файл, используемый для блокировки процесса;
  • каталог .chunks — содержит подкаталоги, с именами от 0000 до ffff. В этих каталогах будут храниться фрагментированные данные, после выполнения операции резервного копирования.

Управление хранилищами данных

Вывести список существующих хранилищ данных:

# proxmox-backup-manager datastore list

Изменить расписание сборки мусора и вывести свойства хранилища данных:

# proxmox-backup-manager datastore update store2 --gc-schedule 'Tue 04:27'
# proxmox-backup-manager datastore show store2

Удалить хранилище данных:

# proxmox-backup-manager datastore remove store2

Данная команда удалит только конфигурацию хранилища данных, данные из базового каталога удалены не будут.

Пользователи

Управление пользователями

PBS хранит данные пользователей в файле /etc/proxmox-backup/user.cfg.

Пользователя часто внутренне идентифицируют по его имени и области аутентификации в форме <user>@<realm>.

После установки PBS существует один пользователь root@pam, который соответствует суперпользователю ОС. Этого пользователя нельзя удалить, все системные письма будут отправляться на адрес электронной почты, назначенный этому пользователю. Суперпользователь имеет неограниченные права, поэтому рекомендуется добавить других пользователей с меньшими правами.

Proxmox Backup Server. Выбор типа аутентификации в веб-интерфейсе

Области аутентификации

PBS поддерживает следующие области (методы) аутентификации:

  • Стандартная аутентификация Linux PAM (Linux PAM standart authentication) — пользователь аутентифицируется с помощью своего обычного системного пароля;
  • Сервер аутентификации Proxmox Backup (Proxmox Backup authentication server) — аутентификация Proxmox Backup Server. Хэшированные пароли хранятся в файле /etc/proxmox-backup/shadow.json;
  • Сервер LDAP — позволяет использовать внешний LDAP-сервер для аутентификации пользователей (например, OpenLDAP);
  • Сервер OpenID Connect — уровень идентификации поверх протокола OATH 2.0. Позволяет аутентифицировать пользователей на основе аутентификации, выполняемой внешним сервером авторизации.

Стандартная аутентификация Linux PAM

При использовании аутентификации Linux PAM системный пользователь должен существовать (должен быть создан, например, с помощью команды adduser).

Область Linux PAM создается по умолчанию и не может быть удалена.

Сервер аутентификации Proxmox Backup

Область аутентификации PBS представляет собой хранилище паролей в стиле Unix ({path|/etc/proxmox-backup/shadow.json}}). Пароль шифруется с использованием метода хеширования SHA-256.

Область создается по умолчанию.

Для добавления пользователя в веб-интерфейсе, следует в веб-интерфейсе перейти в раздел «Конфигурация» → «Управление доступом» и на вкладке «Управление пользователями» нажать кнопку «Добавить»:

Proxmox Backup Server. Создание нового пользователя

Управление пользователями в консоли:

  • просмотреть список пользователей:
    # proxmox-backup-manager user list
    ┌──────────────┬────────┬────────┬───────────┬──────────┬───────┬───────────┐
    │ userid       │ enable │ expire │ firstname │ lastname │ email │ comment   │
    ╞══════════════╪════════╪════════╪═══════════╪══════════╪═══════╪═══════════╡
    │ backup_u@pbs │      1 │  never │           │          │       │           │
    ├──────────────┼────────┼────────┼───────────┼──────────┼───────┼───────────┤
    │ root@pam     │      1 │  never │           │          │       │ Superuser │
    └──────────────┴────────┴────────┴───────────┴──────────┴───────┴───────────┘
    
  • создать пользователя:
    # proxmox-backup-manager user create backup_u@pbs --email backup_u@test.alt
    
  • обновить или изменить любые свойства пользователя:
    # proxmox-backup-manager user update backup_u@pbs --firstname Дмитрий --lastname Иванов
    
  • отключить учетную запись пользователя:
    # proxmox-backup-manager user update backup_u@pbs --enable 0
    
  • удалить учетную запись пользователя:
    # proxmox-backup-manager user remove backup_u@pbs
    

LDAP аутентификация (FreeIPA)

В данном разделе приведён пример настройки аутентификации LDAP для аутентификации на сервере FreeIPA. В примере используются следующие исходные данные:

  • ipa.example.test, 192.168.0.113 — сервер FreeIPA;
  • admin@example.test — учётная запись с правами чтения LDAP;
  • pve — группа, пользователи которой имеют право аутентифицироваться в PBS.

Для настройки LDAP аутентификации необходимо выполнить следующие шаги:

  1. Создать область аутентификации LDAP. Для этого в разделе «Конфигурация» → «Управление доступом» → «Сферы» нажать кнопку «Добавить» → «Сервер LDAP».
  2. В открывшемся окне на вкладке «Общее» указать следующие данные:
    • «Сфера» — идентификатор области;
    • «Имя основного домена» (base_dn) — каталог, в котором выполняется поиск пользователей (cn=accounts,dc=example,dc=test);
    • «Имя пользовательского атрибута» (user_attr) — атрибут LDAP, содержащий имя пользователя, с которым пользователи будут входить в систему (uid);
    • «Bind Domain Name» — имя пользователя (uid=admin,cn=users,cn=accounts,dc=example,dc=test);
    • «Пароль (bind») — пароль пользователя;
    • «Сервер» — IP-адрес или имя FreeIPA-сервера (ipa.example.test или 192.168.0.113);
    • «Резервный сервер» (опционально) — адрес резервного сервера на случай, если основной сервер недоступен;
    • «Порт» — порт, который прослушивает сервер LDAP (обычно 389 без ssl, 636 с ssl).
    Proxmox Backup Server. Настройка аутентификации FreeIPA (вкладка «Общее»)
  3. На вкладке «Параметры синхронизации» заполнить следующие поля (в скобках указаны значения, используемые в данном примере):
    • «Атрибут имени пользователя» (First Name attribute) (опционально) — атрибут LDAP, содержащий имя пользователя (givenname);
    • «Атрибут фамилии пользователя» (Last Name attribute) (опционально) — атрибут LDAP, содержащий фамилию пользователя (sn);
    • «Атрибут электронной почты» (опционально) — атрибут LDAP, содержащий электронную почту пользователя (mail);
    • «Классы пользователей» — класс пользователей LDAP (inetOrgPerson);
    • «Фильтр пользователей» — фильтр пользователей (memberOf=cn=pve,cn=groups,cn=accounts,dc=example,dc=test).
    Proxmox Backup Server. Настройка аутентификации FreeIPA (вкладка «Параметры синхронизации»)
  4. Нажать кнопку «OK».
  5. Выбрать добавленную область и нажать кнопку «Синхронизировать»:
    Proxmox Backup Server. Кнопка «Синхронизировать»
  6. Указать, если необходимо, параметры синхронизации и нажать кнопку «Синхронизировать». В результате синхронизации пользователи PBS будут синхронизированы с сервером FreeIPA LDAP. Сведения о пользователях можно просмотреть на вкладке «Управление пользователями».
  7. Настроить разрешения для пользователя на вкладке «Разрешения».
Примечание: Команда синхронизации пользователей:
# proxmox-backup-manager ldap sync example.test
Для автоматической синхронизации пользователей и групп можно добавить команду синхронизации в планировщик задач.


LDAP аутентификация (AD)

В данном разделе приведён пример настройки аутентификации LDAP для аутентификации на сервере AD. В примере используются следующие исходные данные:

  • dc1.test.alt, 192.168.0.122 — сервер AD;
  • administrator@test.alt — учётная запись администратора (для большей безопасности рекомендуется создать отдельную учетную запись с доступом только для чтения к объектам домена и не использовать учётную запись администратора);
  • office — группа, пользователи которой имеют право аутентифицироваться в PBS.

Для настройки LDAP аутентификации необходимо выполнить следующие шаги:

  1. Создать область аутентификации LDAP. Для этого в разделе «Конфигурация» → «Управление доступом» → «Сферы» нажать кнопку «Добавить» → «Сервер LDAP».
  2. В открывшемся окне на вкладке «Общее» указать следующие данные:
    • «Сфера» — идентификатор области;
    • «Имя основного домена» (base_dn) — каталог, в котором выполняется поиск пользователей (dc=test,dc=alt);
    • «Имя пользовательского атрибута» (user_attr) — атрибут LDAP, содержащий имя пользователя, с которым пользователи будут входить в систему (sAMAccountName);
    • «Bind Domain Name» — имя пользователя (cn=Administrator,cn=Users,dc=test,dc=alt);
    • «Пароль (bind») — пароль пользователя;
    • «Сервер» — IP-адрес или имя FreeIPA-сервера (dc1.test.alt или 192.168.0.122);
    • «Резервный сервер» (опционально) — адрес резервного сервера на случай, если основной сервер недоступен;
    • «Порт» — порт, который прослушивает сервер LDAP (обычно 389 без ssl, 636 с ssl).
    Proxmox Backup Server. Настройка аутентификации AD (вкладка «Общее»)
  3. На вкладке «Параметры синхронизации» заполнить следующие поля (в скобках указаны значения, используемые в данном примере):
    • «Атрибут имени пользователя» (First Name attribute) (опционально) — атрибут LDAP, содержащий имя пользователя (givenname);
    • «Атрибут фамилии пользователя» (Last Name attribute) (опционально) — атрибут LDAP, содержащий фамилию пользователя (sn);
    • «Атрибут электронной почты» (опционально) — атрибут LDAP, содержащий электронную почту пользователя (mail);
    • «Классы пользователей» — класс пользователей LDAP (user);
    • «Фильтр пользователей» — фильтр пользователей ((&(objectclass=user)(samaccountname=*)(MemberOf=CN=UDS,cn=Users,dc=TEST,dc=ALT))).
    Proxmox Backup Server. Настройка аутентификации AD (вкладка «Параметры синхронизации»)
  4. Нажать кнопку «OK».
  5. Выбрать добавленную область и нажать кнопку «Синхронизировать».
  6. Указать, если необходимо, параметры синхронизации и нажать кнопку «Синхронизировать». В результате синхронизации пользователи PBS будут синхронизированы с сервером AD. Сведения о пользователях можно просмотреть на вкладке «Управление пользователями».
  7. Настроить разрешения для пользователя на вкладке «Разрешения».
Примечание: Команда синхронизации пользователей:
# proxmox-backup-manager ldap sync test.alt
Для автоматической синхронизации пользователей и групп можно добавить команду синхронизации в планировщик задач.


API-токены

Любой аутентифицированный пользователь может генерировать API-токены, которые, в свою очередь, можно использовать для настройки клиентов вместо прямого ввода имени пользователя и пароля.

API-токены служат двум целям:

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

API-токен состоит из двух частей: идентификатора, состоящего из имени пользователя, области и имени токена (user@realm!имя токена), и секретного значения.

Генерация API-токена в веб-интерфейсе:

Proxmox Backup Server. Генерация API-токена

Proxmox Backup Server. Генерация API-токена

Генерация API-токена в консоли:

# proxmox-backup-manager user generate-token backup_u@pbs client1
Result: {
  "tokenid": "backup_u@pbs!client1",
  "value": "ff13e5e0-30df-4a70-99f1-c62b13803769"
}
Примечание: Отображаемое секретное значение необходимо сохранить, так как после создания токена его нельзя будет отобразить снова.


Контроль доступа

По умолчанию новые пользователи и API-токены не имеют никаких разрешений. Добавить разрешения можно, назначив роли пользователям/токенам на определенных объектах, таких как хранилища данных или удаленные устройства.

PBS использует систему управления разрешениями на основе ролей и путей. Запись в таблице разрешений позволяет пользователю играть определенную роль при доступе к объекту или пути. Это означает, что такое правило доступа может быть представлено как тройка (путь, пользователь, роль) или (путь, API-токен, роль), причем роль содержит набор разрешенных действий, а путь представляет цель этих действий.

Информация о правах доступа хранится в файле /etc/proxmox-backup/acl.cfg. Файл содержит 5 полей, разделенных двоеточием (':'):

acl:1:/datastore:backup_u@pbs!client1:DatastoreAdmin

В каждом поле представлены следующие данные:

  • идентификатор acl;
  • 1 или 0 – включено или отключено;
  • объект, на который установлено разрешение;
  • пользователи/токены, для которых установлено разрешение;
  • устанавливаемая роль.

Добавление разрешения в веб-интерфейсе («Конфигурация» → «Управление доступом» вкладка «Разрешения»):

Proxmox Backup Server. Добавление разрешений

Добавление разрешения в консоли (добавить пользователя backup_u@pbs в качестве администратора хранилища данных для хранилища данных store2, расположенного в /mnt/backup/disk1/store2):

# proxmox-backup-manager acl update /datastore/store2 DatastoreAdmin --auth-id backup_u@pbs

Вывести список разрешений:

# proxmox-backup-manager acl list

Отобразить действующий набор разрешений пользователя или API-токена:

# proxmox-backup-manager user permissions backup_u@pbs --path /datastore/store2
Privileges with (*) have the propagate flag set

Path: /datastore/store2
- Datastore.Audit (*)
- Datastore.Backup (*)
- Datastore.Modify (*)
- Datastore.Prune (*)
- Datastore.Read (*)
- Datastore.Verify (*)

Двухфакторная аутентификация

Двухфакторная аутентификация реализована только для веб-интерфейса.

Proxmox Backup Server. Двухфакторная аутентификация

Proxmox Backup Server поддерживает три метода двухфакторной аутентификации:

  • TOTP (одноразовый пароль на основе времени) — для создания этого кода используется алгоритм одноразового пароля с учетом времени входа в систему (код меняется каждые 30 секунд). Настройка аутентификации TOTP:
    Proxmox Backup Server. Настройка аутентификации TOTP
    Использование TOTP при аутентификации пользователя:
    Proxmox Backup Server. Запрос второго фактора (TOTP) при аутентификации пользователя в веб-интерфейсе
  • WebAuthn (веб-аутентификация) — реализуется с помощью различных устройств безопасности, таких как аппаратные ключи или доверенные платформенные модули (TPM). Для работы веб-аутентификации необходим сертификат HTTPS;
  • Ключи восстановления — список ключей, каждый из которых можно использовать только один раз. В каждый момент времени у пользователя может быть только один набор одноразовых ключей. Создание набора ключей:
    Proxmox Backup Server. Настройка аутентификации Recovery Keys
    Использование Recovery Key при аутентификации пользователя:
    Proxmox Backup Server. Запрос второго фактора (Recovery Key) при аутентификации пользователя в веб-интерфейсе

Управление удалёнными PBS

Хранилища данных с удалённого сервера можно синхронизировать с локальным хранилищем с помощью задачи синхронизации.

Информация о конфигурации удалённых PBS хранится в файле /etc/proxmox-backup/remote.cfg.

Для добавления удалённого PBS в веб-интерфейсе следует перейти в раздел «Конфигурация» → «Удалённые хранилища» и нажать кнопку «Добавить»:

Proxmox Backup Server. Добавление удалённого PBS

Примечание: Отпечаток TLS-сертификата можно получить на удалённом PBS в веб-интерфейсе:

Proxmox Backup Server. Отпечаток TLS-сертификата

Или в командной строке:

# proxmox-backup-manager cert info | grep Fingerprint


Управление удалёнными PBS в консоли:

  • добавить удалённый PBS:
    # proxmox-backup-manager remote create pbs2 --host pbs2.test.alt --userid root@pam --password 'SECRET' --fingerprint 42:5d:ff:3a:50:38:53:5a:9b:f7:50:...:ab:1b
    
  • вывести список удалённых PBS:
    # proxmox-backup-manager remote list
    
  • удалить удалённый PBS:
    # proxmox-backup-manager remote remove pbs2
    

Для настройки задачи синхронизации необходимо в разделе «Хранилище данных» перейти на вкладку «Задания синхронизации» и нажать кнопку «Добавить»:

Proxmox Backup Server. Добавление задачи синхронизации

Управление задачами синхронизации в консоли:

  • добавить задачу синхронизации:
    # proxmox-backup-manager sync-job create test_job --remote pbs2 --remote-store remotestore --store zfs_st --schedule 'Sat 18:15'
    
  • вывести список задач синхронизации:
    # proxmox-backup-manager sync-job list
    
  • изменить задачу синхронизации:
    # proxmox-backup-manager sync-job  update test_job --comment 'offsite'
    
  • удалить задачу синхронизации:
    # proxmox-backup-manager sync-job remove test_job
    

После создания задания синхронизации оно будет запускаться по заданному расписанию, также его можно запустить вручную из веб-интерфейса (кнопка «Запустить сейчас»).

Клиент резервного копирования

Клиент резервного копирования использует следующий формат для указания репозитория хранилища данных на сервере резервного копирования (где имя пользователя указывается в виде user@realm):

[[username@]server[:port]:]datastore

Значение по умолчанию для имени пользователя — root@pam. Если сервер не указан, используется локальный хост — localhost.

Указать репозиторий можно, передав его в параметре --repository, или установив переменную среды PBS_REPOSITORY, например:

# export PBS_REPOSITORY=pbs.test.alt:store1
Примеры репозиториев
Пример Пользователь Хост:Порт Хранилище
store1 root@pam localhost:8007 store1
pbs.test.alt:store1 root@pam pbs.test.alt:8007 store1
backup_u@pbs@pbs.test.alt:store1 backup_u@pbs pbs.test.alt:8007 store1
backup_u@pbs!client1@pbs.test.alt:store1 backup_u@pbs!client1 pbs.test.alt:8007 store1
192.168.0.123:1234:store1 root@pam 192.168.0.123:1234 store1

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

В этом разделе рассмотрено, как создать резервную копию внутри машины (физического хоста, ВМ или контейнера). Такие резервные копии могут содержать архивы файлов и изображений. Предполагается что сервер резерного копирования уже настроен.

Создать резервную копию домашнего каталога пользователя user (будет создан архив user.pxar):

$ proxmox-backup-client backup user.pxar:/home/user/ --repository store1
Starting backup: host/host-197/2023-09-17T13:12:05Z
Client name: host-01
Starting backup protocol: Sun Sep 17 15:12:05 2023
No previous manifest available.
Upload directory '/home/user/' to 'pbs.test.alt:store1' as user.pxar.didx
user.pxar: had to backup 667.04 MiB of 667.04 MiB (compressed 190.182 MiB) in 26.22s
user.pxar: average backup speed: 25.436 MiB/s
Uploaded backup catalog (109.948 KiB)
Duration: 26.36s
End Time: Sun Sep 17 15:12:12 2023

Распространенными типами архивов являются .pxar для файловых архивов и .img для образов блочных устройств.

Команда создания резервной копии блочного устройства:

$ proxmox-backup-client backup mydata.img:/dev/mylvm/mydata

Шифрование

PBS поддерживает шифрование на стороне клиента с помощью AES-256 в режиме GCM.

Создать ключ шифрования:

$ proxmox-backup-client key create my-backup.key
Encryption Key Password: ******
Verify Password: ******

Создание зашифрованной резервной копии:

$ proxmox-backup-client backup user_s.pxar:/home/user/ --repository pbs.test.alt:store1 --keyfile ./my-backup.key
Password for "root@pam": ***
Starting backup: host/host-197/2023-09-17T12:17:16Z
Client name: host-01
Starting backup protocol: Sun Sep 17 14:17:19 2023
Using encryption key from './my-backup.key'..
Encryption Key Password: ******
Encryption key fingerprint: 0d:aa:4f:9b:ef:63:31:47
fingerprint: cf:24:11:66:bd:84:ca:7b:52:7c:5c:66:72:7b:c1:4e:4a:b7:ca:10:07:d5:c7:ca:fc:6b:f9:e8:49:89:43:e9
Are you sure you want to continue connecting? (y/n): y
Downloading previous manifest (Sun Sep 17 14:14:27 2023)
Upload directory '/home/user/' to '192.168.0.123:store1' as user_s.pxar.didx
user_s.pxar: had to backup 667.04 MiB of 667.04 MiB (compressed 190.028 MiB) in 21.16s
user_s.pxar: average backup speed: 31.518 MiB/s
Uploaded backup catalog (109.971 KiB)
Duration: 31.17s
End Time: Sun Sep 17 14:17:31 2023

Содержимое хранилища store1:

Proxmox Backup Server. Содержимое хранилища store1

Восстановление данных

Список всех снимков на сервере:

$ proxmox-backup-client snapshot list --repository pbs.test.alt:store1
Password for "root@pam": ***
┌───────────────────────────────────┬─────────────┬──────────────────────────────────────┐
│ snapshot                          │        size │ files                                │
╞═══════════════════════════════════╪═════════════╪══════════════════════════════════════╡
│ host/host-01/2023-09-17T14:17:16Z │ 667.147 MiB │ catalog.pcat1 index.json user.pxar   │
├───────────────────────────────────┼─────────────┼──────────────────────────────────────┤
│ host/host-01/2023-09-17T14:14:27Z │ 667.148 MiB │ catalog.pcat1 index.json user_s.pxar │
├───────────────────────────────────┼─────────────┼──────────────────────────────────────┤
│ host/pbs/2023-09-15T15:00:37Z     │  98.494 MiB │ catalog.pcat1 index.json user.pxar   │
├───────────────────────────────────┼─────────────┼──────────────────────────────────────┤
│ host/pbs/2023-09-15T14:25:29Z     │  98.494 MiB │ catalog.pcat1 index.json user_s.pxar │
└───────────────────────────────────┴─────────────┴──────────────────────────────────────┘

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

$ proxmox-backup-client catalog dump host/pbs/2023-09-15T15:00:37Z --repository pbs.test.alt:store1

Команда восстановления позволяет восстановить один архив из резервной копии:

$ proxmox-backup-client restore host/pbs/2023-09-15T15:00:37Z user.pxar /target/path/ --repository pbs.test.alt:store1

Получить содержимое любого архива можно, восстановив файл index.json в репозитории по целевому пути «-». Это выведет содержимое архива на стандартный вывод:

$ proxmox-backup-client restore host/pbs/2023-09-15T15:00:37Z index.json - --repository pbs.test.alt:store1

Если необходимо восстановить несколько отдельных файлов, можно использовать интерактивную оболочку восстановления:

$ proxmox-backup-client catalog shell host/host-01/2023-09-17T14:17:16Z user.pxar --repository pbs.test.alt:store1
Starting interactive shell
pxar:/ > ls
…

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

pxar:/ > find  *.txt --select
/test/connection_trace.txt
/Рабочий стол/1.txt
pxar:/ > list-selected
/test/connection_trace.txt
/Рабочий стол/1.txt
pxar:/ > restore-selected /home/user/restore/
pxar:/ > restore /home/user/conf/ --pattern *.conf
pxar:/ > exit

где:

  • find *.txt --select — найти все файлы с расширением .txt и добавить соответствующие шаблоны в список для последующего восстановления;
  • list-selected — вывести шаблоны на экран;
  • restore-selected /home/user/restore/ — восстановить все файлы в архиве, соответствующие шаблонам в /home/user/restore/ на локальном хосте;
  • restore /home/user/conf/ --pattern *.conf — восстановить все файлы с расширением .conf в /home/user/conf/ на локальном хосте.

Вход и выход

При первой попытке получить доступ к серверу с использованием команды proxmox-backup-client, потребуется ввести пароль пользователя. Сервер проверяет учётные данные и отправляет билет, действительный в течение двух часов. Клиент использует этот билет для последующих запросов к этому серверу.

Можно вручную инициировать вход/выход. Команда входа:

$ proxmox-backup-client login --repository pbs.test.alt:store1
Password for "root@pam": ******

Удалить билет:

$ proxmox-backup-client logout --repository pbs.test.alt:store1

Интеграция с PVE

Proxmox Backup Server можно интегрировать в автономную или кластерную установку PVE, добавив его в качестве хранилища в PVE.

Для создания нового хранилища типа «Proxmox Backup Server» необходимо выбрать «Центр обработки данных» → «Хранилище», нажать кнопку «Добавить» и в выпадающем меню выбрать пункт «Proxmox Backup Server»:

PVE. Добавление хранилища Proxmox Backup Server

Диалог создания хранилища pbs_backup типа «Proxmox Backup Server» для хранения резервных копий:

PVE. Диалог создания хранилища Proxmox Backup Server

Примечание: Отпечаток TLS-сертификата можно получить в веб-интерфейсе сервера резервного копирования:

Proxmox Backup Server. Отпечаток TLS-сертификата

Или, выполнив следующую команду на сервере резервного копирования:

# proxmox-backup-manager cert info | grep Fingerprint
Fingerprint (sha256): c8:26:af:4a:c3:dc:60:72:4a:0b:4d:c1:e6:58:02:62:90:39:cb:fc:75:5d:00:9a:57:ca:3d:28:a0:2c:99:a5


Добавление хранилища в командной строке:

# pvesm add pbs pbs_backup --server pbs.test.alt --datastore store2 --fingerprint  c8:26:af:4a:c3:dc:60:72:...:99:a5 --username root@pam --password

Просмотреть состояние хранилища:

# pvesm status --storage pbs_backup
Name              Type     Status           Total            Used       Available        %
pbs_backup         pbs     active        30786448         3097752        26099504   10.06%

Добавив хранилище данных типа «Proxmox Backup Server» в PVE, можно создавать резервные копии ВМ и контейнеров в это хранилище, так же как и в любые другие хранилища (см. Резервное копирование и восстановление).

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

Proxmox Backup Server. Резервная копия ВМ

Ссылки: