PVE/Backup Server: различия между версиями

Материал из ALT Linux Wiki
< PVE
(Новая страница: «{{Stub}} Proxmox Backup Server (PBS) — клиент-серверное решение для резервного копирования и восстановления виртуальных машин, контейнеров и физических узлов. Решение оптимизировано для проекта PVE и позволяет безопасно создавать резервные копии. Поддерживается и...»)
 
 
(не показаны 24 промежуточные версии этого же участника)
Строка 1: Строка 1:
{{Stub}}
Proxmox Backup Server (PBS) — клиент-серверное решение для резервного копирования и восстановления виртуальных машин, контейнеров и физических узлов. Решение оптимизировано для проекта [[PVE]] и позволяет безопасно создавать резервные копии. Поддерживается инкрементное резервное копирование с полной дедупликацией, что значительно снижает нагрузку на сеть и экономит пространство для хранения.
Proxmox Backup Server (PBS) — клиент-серверное решение для резервного копирования и восстановления виртуальных машин, контейнеров и физических узлов. Решение оптимизировано для проекта [[PVE]] и позволяет безопасно создавать резервные копии. Поддерживается инкрементное резервное копирование с полной дедупликацией, что значительно снижает нагрузку на сеть и экономит пространство для хранения.


Строка 7: Строка 6:


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


Минимальные требования к серверу (предназначены только для тестирования):
Минимальные требования к серверу (предназначены только для тестирования):
Строка 22: Строка 23:
{{Note| Не рекомендуется устанавливать сервер резервного копирования непосредственно на гипервизор. Безопаснее использовать отдельный физический сервер для хранения резервных копий. }}
{{Note| Не рекомендуется устанавливать сервер резервного копирования непосредственно на гипервизор. Безопаснее использовать отдельный физический сервер для хранения резервных копий. }}


Установить сервер резервного копирования PVE можно следующей командой:
Установить сервер PBS (пакет {{pkgL|proxmox-backup-server}}) можно следующей командой:
<source lang="text" highlight="1"># apt-get install proxmox-backup-server</source>
<syntaxhighlight lang="bash"># apt-get install proxmox-backup-server</syntaxhighlight>


Запустить и добавить в автозагрузку Proxmox Backup API Proxy Server:
Запустить и добавить в автозагрузку Proxmox Backup API Proxy Server:
<source lang="text" highlight="1"># systemctl enable --now proxmox-backup-proxy.service</source>
<syntaxhighlight lang="bash"># systemctl enable --now proxmox-backup-proxy.service</syntaxhighlight>
 
Служба proxmox-backup-proxy предоставляет API Proxmox Backup Server через TCP-порт 8007 с использованием HTTPS. Она имеет весьма ограниченные разрешения. Операции, требующие дополнительных разрешений, перенаправляются в локальную службу proxmox-backup.
 
Служба proxmox-backup предоставляет API управления Proxmox Backup Server по адресу 127.0.0.1:82. Она имеет разрешение на выполнение всех привилегированных операций.


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


Включить модуль можно следующей командой:
Включить модуль можно следующей командой:
<source lang="text" highlight="1"># modprobe zfs</source>
<syntaxhighlight lang="bash"># modprobe zfs</syntaxhighlight>


Чтобы не вводить эту команду после перезагрузки, следует раскомментировать строку:
Чтобы не вводить эту команду после перезагрузки, следует раскомментировать строку:
  #zfs
  #zfs
в файле {{path|/etc/modules-load.d/zfs.conf}}. }}
в файле {{path|/etc/modules-load.d/zfs.conf}}. }}
=== Установка клиента ===
Установить клиент PBS (пакет {{pkgL|proxmox-backup-client}}):
<syntaxhighlight lang="bash"># apt-get install proxmox-backup-client</syntaxhighlight>


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


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


[[Изображение:Pbs-auth.png|Аутентификация в веб-интерфейсе PBS]]
[[Изображение:Pbs-auth.png|Аутентификация в веб-интерфейсе PBS]]
Строка 50: Строка 61:
=== Управление дисками ===
=== Управление дисками ===


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


[[Изображение:Pbs-backup-disks.png|Диски, подключенные к системе]]
[[Изображение:Pbs-backup-disks.png|PBS. Диски, подключенные к системе]]


Также можно воспользоваться командой:  
Просмотр списка дисков в командной строке:  
<source lang="text" highlight="1"># proxmox-backup-manager disk list
<syntaxhighlight lang="bash"># proxmox-backup-manager disk list
┌─────────┬────────────┬─────┬───────────┬─────────────┬──────────────────────┬─────────┬─────────┐
┌─────────┬─────────┬─────┬───────────┬──────────────┬──────────────────────┬─────────┬─────────┐
│ name    │ used       │ gpt │ disk-type │       size │ model                │ wearout │ status  │
│ name    │ used   │ gpt │ disk-type │         size │ model                │ wearout │ status  │
╞═════════╪════════════╪═════╪═══════════╪═════════════╪══════════════════════╪═════════╪═════════╡
╞═════════╪═════════╪═════╪═══════════╪══════════════╪══════════════════════╪═════════╪═════════╡
│ nvme0n1 │ zfs       │  1 │ ssd      │ 21474836480 │ ORCL-VBOX-NVME-VER12 │  0.00 % │ passed  │
│ nvme0n1 │ zfs     │  1 │ ssd      │ 161061273600 │ ORCL-VBOX-NVME-VER12 │  0.00 % │ passed  │
├─────────┼────────────┼─────┼───────────┼─────────────┼──────────────────────┼─────────┼─────────┤
├─────────┼─────────┼─────┼───────────┼──────────────┼──────────────────────┼─────────┼─────────┤
│ nvme0n2 │ zfs       │  1 │ ssd      │ 21474836480 │ ORCL-VBOX-NVME-VER12 │  0.00 % │ passed  │
│ nvme0n2 │ zfs     │  1 │ ssd      │ 161061273600 │ ORCL-VBOX-NVME-VER12 │  0.00 % │ passed  │
├─────────┼────────────┼─────┼───────────┼─────────────┼──────────────────────┼─────────┼─────────┤
├─────────┼─────────┼─────┼───────────┼──────────────┼──────────────────────┼─────────┼─────────┤
sda    │ mounted   │  0 │ ssd      │120034123776 GOODRAM              │  0.00 % │ passed  │
nvme0n3 │ mounted │  1 │ ssd      │ 53687091200 │ ORCL-VBOX-NVME-VER12 │  0.00 % │ passed  │
├─────────┼────────────┼─────┼───────────┼─────────────┼──────────────────────┼─────────┼─────────┤
├─────────┼─────────┼─────┼───────────┼──────────────┼──────────────────────┼─────────┼─────────┤
sdb     │ partitions │  0 │ hdd      │ 62914560000 USB_DISK_2.0        │      - │ unknown │
sda     │ mounted │  1 │ hdd      │ 62277025792 VBOX_HARDDISK        │      - │ unknown │
└─────────┴────────────┴─────┴───────────┴─────────────┴──────────────────────┴─────────┴─────────┘
└─────────┴─────────┴─────┴───────────┴──────────────┴──────────────────────┴─────────┴─────────┘
</source>
</syntaxhighlight>


Создание файловой системы ext4 или xfs на диске в веб-интерфейсе:
Создание файловой системы ext4 или xfs на диске в веб-интерфейсе:
Строка 73: Строка 84:
[[Изображение:Pbs-disks-add.png|Proxmox Backup Server. Создать файловую систему на диске]]
[[Изображение:Pbs-disks-add.png|Proxmox Backup Server. Создать файловую систему на диске]]


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


<source lang="text" highlight="1"># proxmox-backup-manager disk fs create store2 --disk nvme0n3 --filesystem ext4 --add-datastore true
<syntaxhighlight lang="bash"># proxmox-backup-manager disk fs create store1 --disk nvme0n3 --filesystem ext4 --add-datastore true
create datastore 'store2' on disk nvme0n3
create datastore 'store1' on disk nvme0n3
Chunkstore create: 1%
Chunkstore create: 1%
Chunkstore create: 2%
Chunkstore create: 2%
Строка 82: Строка 93:
Chunkstore create: 99%
Chunkstore create: 99%
TASK OK
TASK OK
</source>
</syntaxhighlight>


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


[[Изображение:Pbs-disks-zfs.png|Proxmox Backup Server. Создание хранилища ZFS]]
[[Изображение:Pbs-disks-zfs.png|Proxmox Backup Server. Создание хранилища ZFS]]


Команда для создания зеркального zpool с использованием двух дисков и монтированием в {{path|/mnt/datastore/zfs_st}}:
Команда для создания зеркального zpool с использованием двух дисков и монтированием в {{path|/mnt/datastore/zfs_st}}:
 
<syntaxhighlight lang="bash"># proxmox-backup-manager disk zpool create zfs_st --devices nvme0n1,nvme0n2 --raidlevel mirror</syntaxhighlight>
 
Для мониторинга состояния локальных дисков используется пакет {{pkgL|smartmontools}}. Он содержит набор инструментов для мониторинга и управления S.M.A.R.T. системой для локальных жестких дисков. Если диск поддерживает S.M.A.R.T. и поддержка SMART для диска включена, просмотреть данные S.M.A.R.T. можно в веб-интерфейсе или с помощью команды:


<source lang="text" highlight="1"># proxmox-backup-manager disk zpool create zfs_st --devices nvme0n1,nvme0n2 --raidlevel mirror</source>
<syntaxhighlight lang="bash"># proxmox-backup-manager disk smart-attributes sdX</syntaxhighlight>


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


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


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


Для создания хранилища в веб-интерфейсе, необходимо нажать кнопку «Add Datastore» («Добавить хранилище данных») в боковом меню в разделе «Datastore». В открывшемся окне необходимо указать:
Для создания хранилища в веб-интерфейсе, необходимо нажать кнопку «Добавить хранилище данных» в боковом меню в разделе «Хранилище данных». В открывшемся окне необходимо указать:
* «Имя» — название хранилища данных;
* «Имя» — название хранилища данных;
* «Backing Path» — путь к каталогу, в котором будет создано хранилище данных;
* «Путь к каталогу хранилища» — путь к каталогу, в котором будет создано хранилище данных;
* «GC Schedule» — частота, с которой запускается сборка мусора;
* «Расписание сборщика мусора» — частота, с которой запускается сборка мусора;
* «Prune Schedule» — частота, с которой происходит обрезка;
* «Расписание удаления» — частота, с которой происходит удаление ранее созданных резервных копий;
* «Prune Options» — количество резервных копий, которые необходимо хранить.
* «Параметры удаления» — количество резервных копий, которые необходимо хранить.


[[Изображение:Pbs-datastore-add.png|Proxmox Backup Server. Создание хранилища данных]]
[[Изображение:Pbs-datastore-add.png|Proxmox Backup Server. Создание хранилища данных]]


Создание хранилища данных в консоли:
Создание хранилища данных в консоли:
<source lang="text" highlight="1"># proxmox-backup-manager datastore create store1 /mnt/backup/disk1</source>
<syntaxhighlight lang="bash"># proxmox-backup-manager datastore create store2 /mnt/backup/disk1</syntaxhighlight>


После создания хранилища данных по умолчанию появляется следующий макет:
После создания хранилища данных по умолчанию появляется следующий макет:
<source lang="text" highlight="1"># ls -arilh /mnt/backup/disk1/
<syntaxhighlight lang="bash"># ls -arilh /mnt/backup/disk1/
итого 1,1M
итого 1,1M
665243 -rw-r--r-- 1 backup backup    0 мар 31 14:05 .lock
665243 -rw-r--r-- 1 backup backup    0 мар 31 14:05 .lock
665242 drwxr-x--- 1 backup backup 1,1M мар 31 14:05 .chunks
665242 drwxr-x--- 1 backup backup 1,1M мар 31 14:05 .chunks
665240 drwxr-xr-x 3 root  root  4,0K мар 31 13:56 ..
665240 drwxr-xr-x 3 root  root  4,0K мар 31 13:56 ..
665241 drwxr-xr-x 3 backup backup 4,0K мар 31 14:05</source>
665241 drwxr-xr-x 3 backup backup 4,0K мар 31 14:05</syntaxhighlight>


* .lock — это пустой файл, используемый для блокировки процесса;
* .lock — пустой файл, используемый для блокировки процесса;
* каталог .chunks содержит папки, начиная с 0000 и увеличивая шестнадцатеричные значения до ffff. Эти каталоги будут хранить фрагментированные данные, классифицированные по контрольной сумме, после выполнения операции резервного копирования.
* каталог .chunks содержит подкаталоги, с именами от 0000 до ffff. В этих каталогах будут храниться фрагментированные данные, после выполнения операции резервного копирования.  


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


Вывести список существующих хранилищ данных:
Вывести список существующих хранилищ данных:
<source lang="text" highlight="1"># proxmox-backup-manager datastore list</source>
<syntaxhighlight lang="bash"># proxmox-backup-manager datastore list</syntaxhighlight>


Изменить расписание сборки мусора и вывести свойства хранилища данных:
Изменить расписание сборки мусора и вывести свойства хранилища данных:
<source lang="text" highlight="1"># proxmox-backup-manager datastore update store1 --gc-schedule 'Tue 04:27'</source>
<syntaxhighlight lang="bash"># proxmox-backup-manager datastore update store2 --gc-schedule 'Tue 04:27'</syntaxhighlight>
<source lang="text" highlight="1"># proxmox-backup-manager datastore show store1</source>
<syntaxhighlight lang="bash"># proxmox-backup-manager datastore show store2</syntaxhighlight>


Удалить хранилище данных:
Удалить хранилище данных:
<source lang="text" highlight="1"># proxmox-backup-manager datastore remove store1</source>
<syntaxhighlight lang="bash"># proxmox-backup-manager datastore remove store2</syntaxhighlight>


Данная команда удалит только конфигурацию хранилища данных, данные из базового каталога удалены не будут.
Данная команда удалит только конфигурацию хранилища данных, данные из базового каталога удалены не будут.
Строка 140: Строка 154:
== Пользователи ==
== Пользователи ==
=== Управление пользователями ===
=== Управление пользователями ===
PBS хранит данные пользователей в файле {{path|/etc/proxmox-backup/user.cfg}}.
Пользователя часто внутренне идентифицируют по его имени и области аутентификации в форме <user>@<realm>.
После установки PBS существует один пользователь root@pam, который соответствует суперпользователю ОС. Этого пользователя нельзя удалить, все системные письма будут отправляться на адрес электронной почты, назначенный этому пользователю. Суперпользователь имеет неограниченные права, поэтому рекомендуется добавить других пользователей с меньшими правами.
[[Изображение:Pbs-auth2.png|Proxmox Backup Server. Выбор типа аутентификации в веб-интерфейсе]]
=== Области аутентификации ===
PBS поддерживает следующие области (методы) аутентификации:
PBS поддерживает следующие области (методы) аутентификации:
* pam — cтандартная аутентификация Linux PAM (Linux PAM standart authentication).  При использовании этой аутентификации системный пользователь должен существовать (должен быть создан например, с помощью команды adduser). Пользователь аутентифицируется с помощью своего обычного системного пароля;
* Стандартная аутентификация Linux PAM (Linux PAM standart authentication) — пользователь аутентифицируется с помощью своего обычного системного пароля;
* pbs — аутентификации Proxmox Backup Server. Хэшированные пароли хранятся в файле {{path|/etc/proxmox-backup/shadow.json}};  
* Сервер аутентификации Proxmox Backup (Proxmox Backup authentication server) — аутентификация Proxmox Backup Server. Хэшированные пароли хранятся в файле {{path|/etc/proxmox-backup/shadow.json}};
* openid — сервер OpenID Connect. Пользователи могут проходить аутентификацию на внешнем сервере OpenID Connect.
* Сервер LDAP — позволяет использовать внешний LDAP-сервер для аутентификации пользователей (например, OpenLDAP);
* Сервер OpenID Connect — уровень идентификации поверх протокола OATH 2.0. Позволяет аутентифицировать пользователей на основе аутентификации, выполняемой внешним сервером авторизации.
 
==== Стандартная аутентификация Linux PAM ====
 
При использовании аутентификации Linux PAM системный пользователь должен существовать (должен быть создан, например, с помощью команды {{cmd|adduser}}).


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


Для добавления пользователя в веб-интерфейсе, следует в веб-интерфейсе перейти в раздел «Конфигурация» → «Access Control» («Контроль доступа») и на  вкладке «Управление пользователями» нажать кнопку «Добавить»:
==== Сервер аутентификации Proxmox Backup ====
 
Область аутентификации PBS представляет собой хранилище паролей в стиле Unix ({path|/etc/proxmox-backup/shadow.json}}). Пароль шифруется с использованием метода хеширования SHA-256.
 
Область создается по умолчанию.
 
Для добавления пользователя в веб-интерфейсе, следует в веб-интерфейсе перейти в раздел «Конфигурация» → «Управление доступом» и на  вкладке «Управление пользователями» нажать кнопку «Добавить»:


[[Изображение:Pbs-useradd.png|Proxmox Backup Server. Создание нового пользователя]]
[[Изображение:Pbs-useradd.png|Proxmox Backup Server. Создание нового пользователя]]
[[Изображение:Pbs-useradd2.png|Proxmox Backup Server.Список пользователей]]


Управление пользователями в консоли:
Управление пользователями в консоли:
* просмотреть список пользователей:
* просмотреть список пользователей:
*:<source lang="text" highlight="1"># proxmox-backup-manager user list
*:<syntaxhighlight lang="bash"># proxmox-backup-manager user list
┌──────────────┬────────┬────────┬───────────┬──────────┬───────┬───────────┐
┌──────────────┬────────┬────────┬───────────┬──────────┬───────┬───────────┐
│ userid      │ enable │ expire │ firstname │ lastname │ email │ comment  │
│ userid      │ enable │ expire │ firstname │ lastname │ email │ comment  │
Строка 162: Строка 194:
├──────────────┼────────┼────────┼───────────┼──────────┼───────┼───────────┤
├──────────────┼────────┼────────┼───────────┼──────────┼───────┼───────────┤
│ root@pam    │      1 │  never │          │          │      │ Superuser │
│ root@pam    │      1 │  never │          │          │      │ Superuser │
└──────────────┴────────┴────────┴───────────┴──────────┴───────┴───────────┘</source>
└──────────────┴────────┴────────┴───────────┴──────────┴───────┴───────────┘</syntaxhighlight>
*создать пользователя:
*создать пользователя:
*:<source lang="text" highlight="1"># proxmox-backup-manager user create backup_u@pbs --email backup_u@test.alt</source>
*:<syntaxhighlight lang="bash"># proxmox-backup-manager user create backup_u@pbs --email backup_u@test.alt</syntaxhighlight>
*обновить или изменить любые свойства пользователя:
*обновить или изменить любые свойства пользователя:
*:<source lang="text" highlight="1"># proxmox-backup-manager user update backup_u@pbs --firstname Дмитрий --lastname Иванов</source>
*:<syntaxhighlight lang="bash"># proxmox-backup-manager user update backup_u@pbs --firstname Дмитрий --lastname Иванов</syntaxhighlight>
*отключить учетную запись пользователя:
*отключить учетную запись пользователя:
*:<source lang="text" highlight="1"># proxmox-backup-manager user update backup_u@pbs --enable 0</source>
*:<syntaxhighlight lang="bash"># proxmox-backup-manager user update backup_u@pbs --enable 0</syntaxhighlight>
*удалить учетную запись пользователя:
*удалить учетную запись пользователя:
*:<source lang="text" highlight="1"># proxmox-backup-manager user remove backup_u@pbs</source>
*:<syntaxhighlight lang="bash"># proxmox-backup-manager user remove backup_u@pbs</syntaxhighlight>
 
==== LDAP аутентификация (FreeIPA) ====
 
В данном разделе приведён пример настройки аутентификации LDAP для аутентификации на сервере FreeIPA. В примере используются следующие исходные данные:
*ipa.example.test, 192.168.0.113 — сервер FreeIPA;
*admin@example.test — учётная запись с правами чтения LDAP;
*pve — группа, пользователи которой имеют право аутентифицироваться в PBS.
 
Для настройки LDAP аутентификации необходимо выполнить следующие шаги:
# Создать область аутентификации LDAP. Для этого в разделе «Конфигурация» → «Управление доступом» → «Сферы» нажать кнопку «Добавить» → «Сервер LDAP».
# В открывшемся окне на вкладке «Общее» указать следующие данные:
#* «Сфера» — идентификатор области;
#* «Имя основного домена» (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).
#:[[Изображение:Pbs-auth-ldap-freeipa01.png|Proxmox Backup Server. Настройка аутентификации FreeIPA (вкладка «Общее»)]]
# На вкладке «Параметры синхронизации» заполнить следующие поля (в скобках указаны значения, используемые в данном примере):
#* «Атрибут имени пользователя» (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).
#:[[Изображение:Pbs-auth-ldap-freeipa02.png|Proxmox Backup Server. Настройка аутентификации FreeIPA (вкладка «Параметры синхронизации»)]]
#Нажать кнопку «OK».
#Выбрать добавленную область и нажать кнопку «Синхронизировать»:
#:[[Изображение:Pbs-auth-ldap-freeipa03.png|Proxmox Backup Server. Кнопка  «Синхронизировать»]]
# Указать, если необходимо, параметры синхронизации и нажать кнопку «Синхронизировать». В результате синхронизации пользователи PBS будут синхронизированы с сервером FreeIPA LDAP. Сведения о пользователях можно просмотреть на вкладке «Управление пользователями».
# Настроить разрешения для пользователя на вкладке «Разрешения».
 
{{Note|Команда синхронизации пользователей:
<syntaxhighlight lang="bash"># proxmox-backup-manager ldap sync example.test</syntaxhighlight>
Для автоматической синхронизации пользователей и групп можно добавить команду синхронизации в планировщик задач.}}
 
==== LDAP аутентификация (AD) ====
 
В данном разделе приведён пример настройки аутентификации LDAP для аутентификации на сервере AD. В примере используются следующие исходные данные:
*dc1.test.alt, 192.168.0.122 — сервер AD;
*administrator@test.alt — учётная запись администратора (для большей безопасности рекомендуется создать отдельную учетную запись с доступом только для чтения к объектам домена и не использовать учётную запись администратора);
*office — группа, пользователи которой имеют право аутентифицироваться в PBS.
 
Для настройки LDAP аутентификации необходимо выполнить следующие шаги:
# Создать область аутентификации LDAP. Для этого в разделе «Конфигурация» → «Управление доступом» → «Сферы» нажать кнопку «Добавить» → «Сервер LDAP».
# В открывшемся окне на вкладке «Общее» указать следующие данные:
#* «Сфера» — идентификатор области;
#* «Имя основного домена» (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).
#:[[Изображение:Pbs-auth-ldap-ad01.png|Proxmox Backup Server. Настройка аутентификации AD (вкладка «Общее»)]]
# На вкладке «Параметры синхронизации» заполнить следующие поля (в скобках указаны значения, используемые в данном примере):
#* «Атрибут имени пользователя» (First Name attribute) (опционально) — атрибут LDAP, содержащий имя пользователя (givenname);
#* «Атрибут фамилии пользователя» (Last Name attribute) (опционально) — атрибут LDAP, содержащий фамилию пользователя (sn);
#* «Атрибут электронной почты» (опционально) — атрибут LDAP, содержащий электронную почту пользователя (mail);
#* «Классы пользователей» — класс пользователей LDAP (user);
#* «Фильтр пользователей» — фильтр пользователей (''(&(objectclass=user)(samaccountname=*)(MemberOf=CN=office,cn=Users,dc=TEST,dc=ALT))'').
#:[[Изображение:Pbs-auth-ldap-ad02.png|Proxmox Backup Server. Настройка аутентификации AD (вкладка «Параметры синхронизации»)]]
#Нажать кнопку «OK».
#Выбрать добавленную область и нажать кнопку «Синхронизировать».
# Указать, если необходимо, параметры синхронизации и нажать кнопку «Синхронизировать». В результате синхронизации пользователи PBS будут синхронизированы с сервером AD. Сведения о пользователях можно просмотреть на вкладке «Управление пользователями».
# Настроить разрешения для пользователя на вкладке «Разрешения».
 
{{note|Если возникает ошибка:
"BindSimple: Transport encryption required."
Следует отключить обязательный ldaps для [[SambaDC]] в {{path|/etc/samba/smb.conf}} в секции [global]:
<syntaxhighlight lang="ini">ldap server require strong auth = no</syntaxhighlight>}}
 
{{Note|Команда синхронизации пользователей:
<syntaxhighlight lang="bash"># proxmox-backup-manager ldap sync test.alt</syntaxhighlight>
Для автоматической синхронизации пользователей и групп можно добавить команду синхронизации в планировщик задач.}}


=== API-токены ===
=== API-токены ===
Строка 189: Строка 297:


Генерация API-токена в консоли:
Генерация API-токена в консоли:
<source lang="text" highlight="1"># proxmox-backup-manager user generate-token backup_u@pbs client1
<syntaxhighlight lang="bash"># proxmox-backup-manager user generate-token backup_u@pbs client1
Result: {
Result: {
   "tokenid": "backup_u@pbs!client1",
   "tokenid": "backup_u@pbs!client1",
   "value": "ff13e5e0-30df-4a70-99f1-c62b13803769"
   "value": "ff13e5e0-30df-4a70-99f1-c62b13803769"
}</source>
}</syntaxhighlight>


{{Note|Отображаемое секретное значение необходимо сохранить, так как его нельзя отобразить снова после создания токена. }}
{{Note|Отображаемое секретное значение необходимо сохранить, так как после создания токена его нельзя будет отобразить снова. }}


=== Контроль доступа ===
=== Контроль доступа ===
Строка 205: Строка 313:
Информация о правах доступа хранится в файле {{path|/etc/proxmox-backup/acl.cfg}}. Файл содержит 5 полей, разделенных двоеточием (':'):
Информация о правах доступа хранится в файле {{path|/etc/proxmox-backup/acl.cfg}}. Файл содержит 5 полей, разделенных двоеточием (':'):
  acl:1:/datastore:backup_u@pbs!client1:DatastoreAdmin
  acl:1:/datastore:backup_u@pbs!client1:DatastoreAdmin
В каждом поле представлены следующие данные:
* идентификатор acl;
* 1 или 0 – включено или отключено;
* объект, на который установлено разрешение;
* пользователи/токены, для которых установлено разрешение;
* устанавливаемая роль.


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


[[Изображение:Pbs-permissions.png|Proxmox Backup Server. Добавление разрешений]]
[[Изображение:Pbs-permissions.png|Proxmox Backup Server. Добавление разрешений]]


Добавление разрешения в консоли (добавить пользователя backup_u@pbs в качестве администратора хранилища данных для хранилища данных store1, расположенного в {{path|/mnt/backup/disk1/store1}}):
Добавление разрешения в консоли (добавить пользователя backup_u@pbs в качестве администратора хранилища данных для хранилища данных store2, расположенного в {{path|/mnt/backup/disk1/store2}}):
<source lang="text" highlight="1"># proxmox-backup-manager acl update /datastore/store1 DatastoreAdmin --auth-id backup_u@pbs</source>
<syntaxhighlight lang="bash"># proxmox-backup-manager acl update /datastore/store2 DatastoreAdmin --auth-id backup_u@pbs</syntaxhighlight>


Вывести список разрешений:
Вывести список разрешений:
<source lang="text" highlight="1"># proxmox-backup-manager acl list</source>
<syntaxhighlight lang="bash"># proxmox-backup-manager acl list</syntaxhighlight>


Отобразить действующий набор разрешений пользователя или API-токена:
Отобразить действующий набор разрешений пользователя или API-токена:
<source lang="text" highlight="1"># proxmox-backup-manager user permissions backup_u@pbs --path /datastore/store1
<syntaxhighlight lang="bash"># proxmox-backup-manager user permissions backup_u@pbs --path /datastore/store2
Privileges with (*) have the propagate flag set
Privileges with (*) have the propagate flag set


Path: /datastore/store1
Path: /datastore/store2
- Datastore.Audit (*)
- Datastore.Audit (*)
- Datastore.Backup (*)
- Datastore.Backup (*)
Строка 226: Строка 340:
- Datastore.Prune (*)
- Datastore.Prune (*)
- Datastore.Read (*)
- Datastore.Read (*)
- Datastore.Verify (*)</source>
- Datastore.Verify (*)</syntaxhighlight>
 
=== Двухфакторная аутентификация ===
 
Двухфакторная аутентификация реализована только для веб-интерфейса.
 
[[Изображение:Pbs-two-factor-auth.png|Proxmox Backup Server. Двухфакторная аутентификация]]
 
Proxmox Backup Server поддерживает три метода двухфакторной аутентификации:
* TOTP (одноразовый пароль на основе времени) — для создания этого кода используется алгоритм одноразового пароля с учетом времени входа в систему (код меняется каждые 30 секунд). Настройка аутентификации TOTP:
*:[[Изображение:Pbs-auth-totp1.png|Proxmox Backup Server. Настройка аутентификации TOTP]]
*:Использование TOTP при аутентификации пользователя:
*:[[Изображение:Pbs-auth-totp2.png|Proxmox Backup Server. Запрос второго фактора (TOTP) при аутентификации пользователя в веб-интерфейсе]]
* WebAuthn (веб-аутентификация) — реализуется с помощью различных устройств безопасности, таких как аппаратные ключи или доверенные платформенные модули (TPM). Для работы веб-аутентификации необходим сертификат HTTPS;
* Ключи восстановления — список ключей, каждый из которых можно использовать только один раз. В каждый момент времени у пользователя может быть только один набор одноразовых ключей. Создание набора ключей:
*:[[Изображение:Pbs-auth-keys1.png|Proxmox Backup Server. Настройка аутентификации Recovery Keys]]
*:Использование Recovery Key при аутентификации пользователя:
*:[[Изображение:Pbs-auth-keys2.png|Proxmox Backup Server. Запрос второго фактора (Recovery Key) при аутентификации пользователя в веб-интерфейсе]]
 
{{Note|8 неудачных попыток ввода кода TOTP отключат факторы TOTP пользователя. Они разблокируются при входе в систему с ключом восстановления. Если TOTP был единственным доступным фактором, потребуется вмешательство администратора, и настоятельно рекомендуется потребовать от пользователя немедленно изменить свой пароль.
 
Администратор может разблокировать двухфакторную аутентификацию пользователя в веб-интерфейсе:
 
[[Изображение:Pbs-unlock-tfa.png|PBS. Разблокировка двухфакторной аутентификации]]
 
или в командной строке:
<syntaxhighlight lang="bash"># proxmox-backup-manager user tfa unlock backup_u@pbs</syntaxhighlight>}}
 
== Управление удалёнными PBS ==
 
Хранилища данных с удалённого сервера можно синхронизировать с локальным хранилищем с помощью задачи синхронизации.
 
Информация о конфигурации удалённых PBS хранится в файле {{path|/etc/proxmox-backup/remote.cfg}}.
 
Для добавления удалённого PBS в веб-интерфейсе следует перейти в раздел «Конфигурация» → «Удалённые хранилища» и нажать кнопку «Добавить»:
 
[[Изображение:Pbs-remote-add.png|Proxmox Backup Server. Добавление удалённого PBS]]
 
{{Note|Отпечаток TLS-сертификата можно получить на удалённом PBS в веб-интерфейсе:
 
[[Изображение:Pbs-fingerprint.png|Proxmox Backup Server. Отпечаток TLS-сертификата]]
 
Или в командной строке:
<syntaxhighlight lang="bash"># proxmox-backup-manager cert info | grep Fingerprint</syntaxhighlight>}}
 
Управление удалёнными PBS в консоли:
*добавить удалённый PBS:
*:<syntaxhighlight lang="bash"># 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</syntaxhighlight>
*вывести список удалённых PBS:
*:<syntaxhighlight lang="bash"># proxmox-backup-manager remote list</syntaxhighlight>
*удалить удалённый PBS:
*:<syntaxhighlight lang="bash"># proxmox-backup-manager remote remove pbs2</syntaxhighlight>
 
Для настройки задачи синхронизации необходимо в разделе «Хранилище данных» перейти на вкладку «Задания синхронизации» и нажать кнопку «Добавить»:
 
[[Изображение:Pbs-syncjob-add.png|Proxmox Backup Server. Добавление задачи синхронизации]]
 
Управление задачами синхронизации в консоли:
*добавить задачу синхронизации:
*:<syntaxhighlight lang="bash"># proxmox-backup-manager sync-job create test_job --remote pbs2 --remote-store remotestore --store zfs_st --schedule 'Sat 18:15'</syntaxhighlight>
*вывести список задач синхронизации:
*:<syntaxhighlight lang="bash"># proxmox-backup-manager sync-job list</syntaxhighlight>
*изменить задачу синхронизации:
*:<syntaxhighlight lang="bash"># proxmox-backup-manager sync-job  update test_job --comment 'offsite'</syntaxhighlight>
*удалить задачу синхронизации:
*:<syntaxhighlight lang="bash"># proxmox-backup-manager sync-job remove test_job</syntaxhighlight>
 
После создания задания синхронизации оно будет запускаться по заданному расписанию, также его можно запустить вручную из веб-интерфейса (кнопка «Запустить сейчас»).


== Клиент резервного копирования ==
== Клиент резервного копирования ==
Строка 236: Строка 417:


Указать репозиторий можно, передав его в параметре --repository, или установив переменную среды PBS_REPOSITORY, например:
Указать репозиторий можно, передав его в параметре --repository, или установив переменную среды PBS_REPOSITORY, например:
<source lang="text" highlight="1"># export PBS_REPOSITORY=pbs.test.alt:store1</source>
<syntaxhighlight lang="bash"># export PBS_REPOSITORY=pbs.test.alt:store1</syntaxhighlight>


{| class="wikitable"
{| class="wikitable"
Строка 274: Строка 455:
В этом разделе рассмотрено, как создать резервную копию внутри машины (физического хоста, ВМ или контейнера). Такие резервные копии могут содержать архивы файлов и изображений. Предполагается что сервер резерного копирования уже настроен.
В этом разделе рассмотрено, как создать резервную копию внутри машины (физического хоста, ВМ или контейнера). Такие резервные копии могут содержать архивы файлов и изображений. Предполагается что сервер резерного копирования уже настроен.


Создать резевную копию домашнего каталога пользователя user (будет создан архив user.pxar):
Создать резервную копию домашнего каталога пользователя user (будет создан архив user.pxar):
<source lang="text" highlight="1"># proxmox-backup-client backup user.pxar:/home/user/ --repository store1
<syntaxhighlight lang="bash">$ proxmox-backup-client backup user.pxar:/home/user/ --repository store1
Password for "root@pam": ******
Starting backup: host/host-197/2023-09-17T13:12:05Z
Starting backup: host/pbs/2022-04-01T14:11:27Z
Client name: host-01
Client name: pbs
Starting backup protocol: Sun Sep 17 15:12:05 2023
Starting backup protocol: Fri Apr  1 16:11:29 2022
fingerprint: 42:5d:29:20:72:56:18:66:bb:ba:85:fb:7f:0b:11:99:91:a0:ea:5f:a2:55:d1:be:bc:c0:c0:a9:9b:b1:a8:1b
Are you sure you want to continue connecting? (y/n): y
No previous manifest available.
No previous manifest available.
Upload directory '/home/user/' to 'store1' as user.pxar.didx
Upload directory '/home/user/' to 'pbs.test.alt:store1' as user.pxar.didx
user.pxar: had to backup 98.346 MiB of 98.346 MiB (compressed 21.303 MiB) in 3.65s
user.pxar: had to backup 667.04 MiB of 667.04 MiB (compressed 190.182 MiB) in 26.22s
user.pxar: average backup speed: 26.951 MiB/s
user.pxar: average backup speed: 25.436 MiB/s
Uploaded backup catalog (151.103 KiB)
Uploaded backup catalog (109.948 KiB)
Duration: 6.95s
Duration: 26.36s
End Time: Fri Apr  1 16:11:36 2022</source>
End Time: Sun Sep 17 15:12:12 2023</syntaxhighlight>


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


Команда создания резервной копии блочного устройства:  
Команда создания резервной копии блочного устройства:  
<source lang="text" highlight="1"># proxmox-backup-client backup mydata.img:/dev/mylvm/mydata</source>
<syntaxhighlight lang="bash">$ proxmox-backup-client backup mydata.img:/dev/mylvm/mydata</syntaxhighlight>


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


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


<source lang="text" highlight="1"># proxmox-backup-client key create my-backup.key
<syntaxhighlight lang="bash">$ proxmox-backup-client key create my-backup.key
Encryption Key Password: ******
Encryption Key Password: ******
Verify Password: ******
Verify Password: ******
</source>
</syntaxhighlight>


Создание зашифрованной резервной копии:
Создание зашифрованной резервной копии:
<source lang="text" highlight="1"># proxmox-backup-client backup user_s.pxar:/home/user/ --repository store1 --keyfile ./my-backup.key
<syntaxhighlight lang="bash">$ proxmox-backup-client backup user_s.pxar:/home/user/ --repository pbs.test.alt:store1 --keyfile ./my-backup.key
Password for "root@pam": ***
Password for "root@pam": ***
Starting backup: host/pbs/2022-04-01T14:25:29Z
Starting backup: host/host-197/2023-09-17T12:17:16Z
Client name: pbs
Client name: host-01
Starting backup protocol: Fri Apr  1 16:25:31 2022
Starting backup protocol: Sun Sep 17 14:17:19 2023
Using encryption key from './my-backup.key'..
Using encryption key from './my-backup.key'..
Encryption Key Password: ******
Encryption Key Password: ******
Encryption key fingerprint: b9:7d:0d:6d:51:e6:12:d6
Encryption key fingerprint: 0d:aa:4f:9b:ef:63:31:47
Downloading previous manifest (Fri Apr  1 16:11:27 2022)
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
Upload directory '/home/user/' to 'store1' as user_s.pxar.didx
Are you sure you want to continue connecting? (y/n): y
user_s.pxar: had to backup 98.346 MiB of 98.346 MiB (compressed 21.292 MiB) in 1.66s
Downloading previous manifest (Sun Sep 17 14:14:27 2023)
user_s.pxar: average backup speed: 59.289 MiB/s
Upload directory '/home/user/' to '192.168.0.123:store1' as user_s.pxar.didx
Uploaded backup catalog (151.104 KiB)
user_s.pxar: had to backup 667.04 MiB of 667.04 MiB (compressed 190.028 MiB) in 21.16s
Duration: 7.44s
user_s.pxar: average backup speed: 31.518 MiB/s
End Time: Fri Apr  1 16:25:38 2022</source>
Uploaded backup catalog (109.971 KiB)
Duration: 31.17s
End Time: Sun Sep 17 14:17:31 2023</syntaxhighlight>


Содержимое хранилища store1:
Содержимое хранилища store1:
Строка 326: Строка 506:
[[Изображение:Pbs-backup.png|Proxmox Backup Server. Содержимое хранилища store1]]
[[Изображение:Pbs-backup.png|Proxmox Backup Server. Содержимое хранилища store1]]


==== Восстановление данных ====
=== Восстановление данных ===
Список всех снимков на сервере:
Список всех снимков на сервере:


<source lang="text" highlight="1"># proxmox-backup-client snapshot list --repository store1
<syntaxhighlight lang="bash">$ proxmox-backup-client snapshot list --repository pbs.test.alt:store1
Password for "root@pam": ***
Password for "root@pam": ***
┌───────────────────────────────┬────────────┬──────────────────────────────────────┐
┌───────────────────────────────────┬─────────────┬──────────────────────────────────────┐
│ snapshot                           size │ files                                │
│ snapshot                               size │ files                                │
╞═══════════════════════════════╪════════════╪══════════════════════════════════════╡
╞═══════════════════════════════════╪═════════════╪══════════════════════════════════════╡
│ host/pbs/2022-04-01T14:11:27Z │ 98.494 MiB │ catalog.pcat1 index.json user.pxar  │
│ host/host-01/2023-09-17T14:17:16Z │ 667.147 MiB │ catalog.pcat1 index.json user.pxar  │
├───────────────────────────────┼────────────┼──────────────────────────────────────┤
├───────────────────────────────────┼─────────────┼──────────────────────────────────────┤
│ host/pbs/2022-04-01T14:25:29Z │ 98.494 MiB │ catalog.pcat1 index.json user_s.pxar │
│ host/host-01/2023-09-17T14:14:27Z │ 667.148 MiB │ catalog.pcat1 index.json user_s.pxar │
└───────────────────────────────┴────────────┴──────────────────────────────────────┘</source>
├───────────────────────────────────┼─────────────┼──────────────────────────────────────┤
│ 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 │
└───────────────────────────────────┴─────────────┴──────────────────────────────────────┘</syntaxhighlight>


Просмотреть содержимое снимка:
Просмотреть содержимое снимка:
<source lang="text" highlight="1"># proxmox-backup-client catalog dump host/pbs/2022-04-01T14:11:27Z --repository store1</source>
<syntaxhighlight lang="bash">$ proxmox-backup-client catalog dump host/pbs/2023-09-15T15:00:37Z --repository pbs.test.alt:store1</syntaxhighlight>


Команда восстановления позволяет восстановить один архив из резервной копии:
Команда восстановления позволяет восстановить один архив из резервной копии:
<source lang="text" highlight="1"># proxmox-backup-client restore host/pbs/2022-04-01T14:11:27Z user.pxar /target/path/ --repository store1</source>
<syntaxhighlight lang="bash">$ proxmox-backup-client restore host/pbs/2023-09-15T15:00:37Z user.pxar /target/path/ --repository pbs.test.alt:store1</syntaxhighlight>
 
Получить содержимое любого архива можно, восстановив файл index.json в репозитории по целевому пути «-». Это выведет содержимое архива на стандартный вывод:
<syntaxhighlight lang="bash">$ proxmox-backup-client restore host/pbs/2023-09-15T15:00:37Z index.json - --repository pbs.test.alt:store1</syntaxhighlight>
 
Если необходимо восстановить несколько отдельных файлов, можно использовать интерактивную оболочку восстановления:
<syntaxhighlight lang="bash">$ 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
…</syntaxhighlight>
 
Пример поиска в содержимом архива и восстановление данных:
<syntaxhighlight lang="bash">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</syntaxhighlight>


=== Интеграция с PVE ===
где:
*'''find *.txt --select''' — найти все файлы с расширением .txt и добавить соответствующие шаблоны в список для последующего восстановления;
*'''list-selected''' — вывести шаблоны на экран;
*'''restore-selected /home/user/restore/''' — восстановить все файлы в архиве, соответствующие шаблонам в /home/user/restore/ на локальном хосте;
*'''restore /home/user/conf/ --pattern *.conf''' — восстановить все файлы с расширением .conf в /home/user/conf/ на локальном хосте.
 
=== Вход и выход ===
 
При первой попытке получить доступ к серверу с использованием команды <code>proxmox-backup-client</code>, потребуется ввести пароль пользователя.
Сервер проверяет учётные данные и отправляет билет, действительный в течение двух часов. Клиент использует этот билет для последующих запросов к этому серверу.
 
Можно вручную инициировать вход/выход. Команда входа:
<syntaxhighlight lang="bash">$ proxmox-backup-client login --repository pbs.test.alt:store1
Password for "root@pam": ******</syntaxhighlight>
 
Удалить билет:
<syntaxhighlight lang="bash">$ proxmox-backup-client logout --repository pbs.test.alt:store1</syntaxhighlight>
 
== Интеграция с PVE ==


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


Для создания нового хранилища типа «Proxmox Backup Server» необходимо выбрать «Датацентр» → «Хранилище», нажать кнопку «Добавить» и в выпадающем меню выбрать пункт «Proxmox Backup Server»:
Для создания нового хранилища типа «Proxmox Backup Server» необходимо выбрать «Центр обработки данных» → «Хранилище», нажать кнопку «Добавить» и в выпадающем меню выбрать пункт «Proxmox Backup Server»:
   
   
[[Изображение:Pve-backup-storageadd1.png|PVE. Добавление хранилища Proxmox Backup Server]]
[[Изображение:Pve-backup-storageadd1.png|PVE. Добавление хранилища Proxmox Backup Server]]


Диалог создания хранилища pbs_backup типа «Proxmox Backup Server» для хранения резервных копий:  
Диалог создания хранилища pbs_backup типа «Proxmox Backup Server» для хранения резервных копий:  
[[Изображение:Pve-backup-storageadd2.png|PVE. Диалог создания хранилища Proxmox Backup Server]]
[[Изображение:Pve-backup-storageadd2.png|PVE. Диалог создания хранилища Proxmox Backup Server]]


Добавление хранилища в командной строке:
{{Note|Отпечаток TLS-сертификата можно получить в веб-интерфейсе сервера резервного копирования:


<source lang="text" highlight="1"># pvesm add pbs pbs_backup --server pbs.test.alt --datastore store2/source>
[[Изображение:Pbs-fingerprint.png|Proxmox Backup Server. Отпечаток TLS-сертификата]]
<source lang="text" highlight="1"># pvesm set pbs_backup --username root@pam --password</source>


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


<source lang="text" highlight="1"># proxmox-backup-manager cert info | grep Fingerprint
<syntaxhighlight lang="bash"># 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</source>
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</syntaxhighlight>}}


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


<source lang="text" highlight="1"># pvesm set pbs_backup --fingerprint  c8:26:af:4a:c3:dc:60:72:...:99:a5</source>
<syntaxhighlight lang="bash"># 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</syntaxhighlight>


Просмотреть состояние хранилища:
Просмотреть состояние хранилища:
<source lang="text" highlight="1"># pvesm status --storage pbs_backup
<syntaxhighlight lang="bash"># pvesm status --storage pbs_backup
Name              Type    Status          Total            Used      Available        %
Name              Type    Status          Total            Used      Available        %
pbs_backup        pbs    active        30786448        3097752        26099504  10.06%</source>
pbs_backup        pbs    active        30786448        3097752        26099504  10.06%</syntaxhighlight>


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


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

Текущая версия от 09:52, 5 октября 2024

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=office,cn=Users,dc=TEST,dc=ALT))).
    Proxmox Backup Server. Настройка аутентификации AD (вкладка «Параметры синхронизации»)
  4. Нажать кнопку «OK».
  5. Выбрать добавленную область и нажать кнопку «Синхронизировать».
  6. Указать, если необходимо, параметры синхронизации и нажать кнопку «Синхронизировать». В результате синхронизации пользователи PBS будут синхронизированы с сервером AD. Сведения о пользователях можно просмотреть на вкладке «Управление пользователями».
  7. Настроить разрешения для пользователя на вкладке «Разрешения».
Примечание: Если возникает ошибка:
"BindSimple: Transport encryption required."

Следует отключить обязательный ldaps для SambaDC в /etc/samba/smb.conf в секции [global]:

ldap server require strong auth = no


Примечание: Команда синхронизации пользователей:
# 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) при аутентификации пользователя в веб-интерфейсе
Примечание: 8 неудачных попыток ввода кода TOTP отключат факторы TOTP пользователя. Они разблокируются при входе в систему с ключом восстановления. Если TOTP был единственным доступным фактором, потребуется вмешательство администратора, и настоятельно рекомендуется потребовать от пользователя немедленно изменить свой пароль.

Администратор может разблокировать двухфакторную аутентификацию пользователя в веб-интерфейсе:

PBS. Разблокировка двухфакторной аутентификации

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

# proxmox-backup-manager user tfa unlock backup_u@pbs


Управление удалёнными 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. Резервная копия ВМ

Ссылки: