PVE/Backup Server

Материал из ALT Linux Wiki
< PVE
Версия от 18:09, 1 апреля 2022; Elena Mishina (обсуждение | вклад) (Новая страница: «{{Stub}} Proxmox Backup Server (PBS) — клиент-серверное решение для резервного копирования и восстановления виртуальных машин, контейнеров и физических узлов. Решение оптимизировано для проекта PVE и позволяет безопасно создавать резервные копии. Поддерживается и...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

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

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

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

Установка

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

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

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

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


Установить сервер резервного копирования PVE можно следующей командой:

# apt-get install proxmox-backup-server

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

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

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

# modprobe zfs

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

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


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

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

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

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

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

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

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

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

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

Также можно воспользоваться командой:

# proxmox-backup-manager disk list
┌─────────┬────────────┬─────┬───────────┬─────────────┬──────────────────────┬─────────┬─────────┐
│ name    │ used       │ gpt │ disk-type │        size │ model                │ wearout │ status  │
╞═════════╪════════════╪═════╪═══════════╪═════════════╪══════════════════════╪═════════╪═════════╡
│ nvme0n1 │ zfs        │   1 │ ssd       │ 21474836480 │ ORCL-VBOX-NVME-VER12 │  0.00 % │ passed  │
├─────────┼────────────┼─────┼───────────┼─────────────┼──────────────────────┼─────────┼─────────┤
│ nvme0n2 │ zfs        │   1 │ ssd       │ 21474836480 │ ORCL-VBOX-NVME-VER12 │  0.00 % │ passed  │
├─────────┼────────────┼─────┼───────────┼─────────────┼──────────────────────┼─────────┼─────────┤
│ sda     │ mounted    │   0 │ ssd       │120034123776 │ GOODRAM              │  0.00 % │ passed  │
├─────────┼────────────┼─────┼───────────┼─────────────┼──────────────────────┼─────────┼─────────┤
│ sdb     │ partitions │   0 │ hdd       │ 62914560000 │ USB_DISK_2.0         │       - │ unknown │
└─────────┴────────────┴─────┴───────────┴─────────────┴──────────────────────┴─────────┴─────────┘

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

# proxmox-backup-manager datastore create store1 /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 store1 --gc-schedule 'Tue 04:27'
# proxmox-backup-manager datastore show store1

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

# proxmox-backup-manager datastore remove store1

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

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

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

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

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

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

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

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

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
    

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

Добавление разрешения в веб-интерфейсе:

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

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

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

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

# proxmox-backup-manager acl list

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

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

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

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

Клиент резервного копирования использует следующий формат для указания репозитория хранилища данных на сервере резервного копирования (где имя пользователя указывается в виде 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
Password for "root@pam": ******
Starting backup: host/pbs/2022-04-01T14:11:27Z
Client name: pbs
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.
Upload directory '/home/user/' to '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: average backup speed: 26.951 MiB/s
Uploaded backup catalog (151.103 KiB)
Duration: 6.95s
End Time: Fri Apr  1 16:11:36 2022

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

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

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

Шифрование

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

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

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

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

# proxmox-backup-client backup user_s.pxar:/home/user/ --repository store1 --keyfile ./my-backup.key
Password for "root@pam": ***
Starting backup: host/pbs/2022-04-01T14:25:29Z
Client name: pbs
Starting backup protocol: Fri Apr  1 16:25:31 2022
Using encryption key from './my-backup.key'..
Encryption Key Password: ******
Encryption key fingerprint: b9:7d:0d:6d:51:e6:12:d6
Downloading previous manifest (Fri Apr  1 16:11:27 2022)
Upload directory '/home/user/' to 'store1' as user_s.pxar.didx
user_s.pxar: had to backup 98.346 MiB of 98.346 MiB (compressed 21.292 MiB) in 1.66s
user_s.pxar: average backup speed: 59.289 MiB/s
Uploaded backup catalog (151.104 KiB)
Duration: 7.44s
End Time: Fri Apr  1 16:25:38 2022

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

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

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

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

# proxmox-backup-client snapshot list --repository store1
Password for "root@pam": ***
┌───────────────────────────────┬────────────┬──────────────────────────────────────┐
│ snapshot                      │       size │ files                                │
╞═══════════════════════════════╪════════════╪══════════════════════════════════════╡
│ host/pbs/2022-04-01T14:11:27Z │ 98.494 MiB │ catalog.pcat1 index.json user.pxar   │
├───────────────────────────────┼────────────┼──────────────────────────────────────┤
│ host/pbs/2022-04-01T14:25:29Z │ 98.494 MiB │ catalog.pcat1 index.json user_s.pxar │
└───────────────────────────────┴────────────┴──────────────────────────────────────┘

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

# proxmox-backup-client catalog dump host/pbs/2022-04-01T14:11:27Z --repository store1

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

# proxmox-backup-client restore host/pbs/2022-04-01T14:11:27Z user.pxar /target/path/ --repository 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

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

# pvesm add pbs pbs_backup --server pbs.test.alt --datastore store2/source>
<source lang="text" highlight="1"># pvesm set pbs_backup --username root@pam --password

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

# 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 set pbs_backup --fingerprint  c8:26:af:4a:c3:dc:60:72:...:99:a5

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

# 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. Резервная копия ВМ

Ссылки: