Proxmox Backup Server: интеграция с Proxmox VE и базовые операции

В день холостяков, 11.11.2020 в 11:11, Proxmox Server Solutions GmbH опубликовали релиз версии 1.0.1. Взглянем детально, как использовать Proxmox Backup Server (PBS) и для чего он подходит.

Основной упор при создании PBS был сделан на совместимость и удобство работы с Proxmox VE (PVE). Разработчики постарались максимально упростить процесс интеграции и сделать так, чтобы все элементы интерфейса и подход к управлению резервным копированием были интуитивно понятны пользователям PVE.

Короткое, но емкое вводное видео о возможностях Proxmox Backup Server:

Прежде всего установим Proxmox Backup Server. С момента выхода beta-версии инсталлятор остался точно таким же.

Доступные варианты файловых систем в инсталляторе

Примечательно то, что система может сама собрать ZFS-массив и установиться сразу на него. Также для выбора доступна традиционная для Linux файловая система EXT4.


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

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

Внешний вид веб-интерфейса управления

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

Главное не забыть обновления

Чтобы потом не было мучительно больно получать ошибки вида HTTP Error 404 Not Found: Path '/fixed_index' not found при создании заданий бэкапа, следует озаботиться обновлением серверов PVE и PBS до актуальных версий. Если у вас есть платная подписка на Enterprise-репозиторий, то просто обновляете дистрибутивы командой:

apt update && apt full-upgrade

Если подписки нет — ничего страшного. Пропишем в систему no-subscription репозиторий и обновимся с него.

nano /etc/apt/sources.list.d/pve-enterprise.list

Закомментируем строку платного репозитория символом # и добавим следующую строку.

Для Proxmox Backup Server:

deb http://download.proxmox.com/debian/pbs buster pbs-no-subscription

Для Proxmox Virtual Environment:

deb http://download.proxmox.com/debian/pve buster pve-no-subscription

Выходим Ctrl + X и отвечаем y. Теперь можно обновить пакеты вышеуказанной командой и приступить к интеграции PBS.

Добавляем PBS-сервер в Proxmox VE

Перед тем как добавлять сервер резервного копирования в среду виртуализации Proxmox VE, потребуется выполнить ряд предварительных действий непосредственно на сервере Proxmox Backup Server.

Создание пользователей

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

Перед тем как переходить к бэкапам, нужно первым делом сконфигурировать доступы. Советуем сразу зайти в Configuration — Access Control и создать пользователей для хранилища. Для демонстрации мы изначально создали пользователя test@pbs, которого станем использовать для подключения. Обратите внимание, что при вводе имени пользователя часть @pbs обязательна, в противном случае будет выдаваться ошибка о неверно введенных данных.

Теперь переходим к созданию нужных репозиториев (Datastore в терминологии PBS). Это дает возможность четко распределить бэкапы по необходимым системному администратору критериям, а также распределить права доступа. Для создания нам потребуется директория, расположенная на одном из примонтированных дисков.

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


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

Заходим в раздел Administration — Storage / Disks. Выбираем нужный диск и инициализируем его нажатием кнопки Initialize Disk with GPT. Теперь переходим в раздел Directory — Create:Directory и создаем директорию для хранения данных. Здесь указываем имя репозитория и абсолютный путь к созданной директории. Если поставить галочку Add as Datastore, то новый репозиторий сразу будет подключен как сущность для хранения данных.

Осталось лишь указать пользователей, которые имеют право использовать этот репозиторий, и их уровень доступа. Для этого кликаем на имя созданного репозитория, переходим в раздел Permissions и нажимаем кнопку Add — User Permission. Выбираем нужного пользователя и его роль, затем подтверждаем нажатием Add. На этом предварительная подготовка закончена.

Сохранение «‎отпечатка пальца»‎ сервера

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

Заходим в Administration — Shell и ‎снимаем «отпечаток пальца»‎ сервера:

proxmox-backup-manager cert info | grep Fingerprint

Ответом на команду будет строка вида:

Fingerprint (sha256): bb:fb:13:0f:f7:59:df:32:f0:bf:70:38:22:f8:22:93:05:2f:22:80:bc:71:07:cc:8d:1f:6e:f8:0f:da:bf:73

В дальнейшем мы будем использовать этот отпечаток для установки соединения.

Добавление сервера в роли хранилища

Добавление хранилища можно выполнить или непосредственно из веб-интерфейса Proxmox VE (DatacenterStorageAdd) или вручную. Мы воспользуемся консолью и проделаем следующие шаги. Добавляем наш Datastore командой:

pvesm add pbs PVE_STORAGE_NAME --server PBS_SERVER_ADDRESS --datastore STORAGE_NAME

Немного разберем, что делает эта команда:

  • pvesm add pbs — добавление хранилища (Storage в терминологии PVE);
  • PVE_STORAGE_NAME — это имя будет отображаться в веб-интерфейсе PVE и может отличаться от имени хранилища;
  • --server PBS_SERVER_ADDRESS — указываем хостнейм или IP-адрес сервера PBS (при необходимости можно указать и другой порт подключения через --port);
  • --datastore STORAGE_NAME — тут указываем имя существующего datastore на сервере PBS.
pvesm set PVE_STORAGE_NAME --username test@pbs --password PASSWORD

Тут все также логично. Нам нужно указать реквизиты для подключения к хранилищу. Именно для этого мы предварительно создавали пользователя и распределяли права доступа. Осталось лишь прописать «‎отпечаток пальца»‎ сервера для установки доверенного соединения.

pvesm set PVE_STORAGE_NAME --fingerprint 
bb:fb:13:0f:f7:59:df:32:f0:bf:70:38:22:f8:22:93:05:2f:22:80:bc:71:07:cc:8d:1f:6e:f8:0f:da:bf:73
Так выглядит правильно подключенное хранилище сервера PBS

После выполненных действий мы увидим наше хранилище в списке доступных для хранения данных бэкапов виртуальных машин и контейнеров, а также статистику заполненности. Пора сделать первый бэкап.

Бэкап LXC-контейнера

Тестовый контейнер с Ubuntu

Для теста мы из стандартного шаблона создали и запустили контейнер СТ100 с запущенной внутри операционной системой Ubuntu 16.04. Теперь переходим в раздел Backup, выбираем нужный Storage и нажимаем кнопку Backup Now. Выбираем тип резервного копирования (об этом можно детально прочитать в одной из предыдущих статей) и выполняем резервное копирование.

Успешно выполненный бэкап из web-интерфейса PVE

Зайдя на сервер PBS, мы также увидим, что у нас теперь есть информация о выполненном задании резервного копирования.

Успешно выполненный бэкап из web-интерфейса PBS

Восстановление контейнера

Сделать бэкап — это лишь половина успеха. Гораздо важнее из него восстановиться. Удаляем наш LXC-контейнер с Ubuntu и попробуем выполнить процедуру восстановления. Для этого в веб-интерфейсе PVE переходим на наш Storage в раздел Content и выбираем файл бэкапа.

Выбор опций восстановления

Для восстанавливаемого контейнера выбираем место размещения, новый ID (по умолчанию будет стоять тот, который был на момент резервного копирования), а также скоростной лимит чтения данных. Это позволит не перегрузить входящий канал сервера виртуализации. Нажимаем Restore и запускаем наш контейнер.

Контейнер восстановлен и запущен

Контейнер успешно восстановлен. На нашем тестовом стенде процедура бэкапа заняла чуть более 9 секунд и восстановилась за 14. Скорость будет зависеть как от выбранных опций, так и от характеристик обоих серверов.

Бэкап виртуальной машины

Процедура бэкапа полноценной виртуальной машины ничем не отличается от процедуры бэкапа контейнера, разве что времени занимает больше. Мы для теста создали машину с ID 100 и развернули на ней Ubuntu 16.04, после чего выполнили резервное копирование.

Успешно выполненный бэкап виртуальной машины из веб-интерфейса PVE

Со стороны Proxmox Backup Server это выглядело следующим образом:

Успешно выполненный бэкап виртуальной машины из веб-интерфейса PBS

Как и в случае с контейнером, процедура восстановления проста и тривиальна. Указываем, какой бэкап, куда разворачиваем и будем ли включать машину после завершения процедуры.

Бэкап данных с любого Linux-хоста

Помимо виртуальных машин и контейнеров, заявлено, что Proxmox Backup Server позволяет бэкапить любые Linux-хосты целиком. Проверим это на практике. Будет использован тот же PBS-сервер. Для корректного выполнения нам потребуется на бэкапируемом хосте выполнить ряд дополнительных действий по установке агента под названием proxmox-backup-client. В роли тестовой машины у нас будет компьютер с той же самой Ubuntu 16.04.

Утилиты proxmox-backup-client в репозиториях Ubuntu нет, поэтому для начала добавим 3 репозитория. Два из них нужны для разрешения зависимостей утилиты, а еще один содержит нужный нам клиент:

sudo nano /etc/apt/sources.list

В конец добавляем строки:

deb http://ftp.debian.org/debian buster main contrib
deb http://ftp.debian.org/debian buster-updates main contrib
deb http://download.proxmox.com/debian/pbs buster pbs-no-subscription

Выходим из редактора Ctrl + X и отвечаем y на вопрос о сохранении данных. Вытягиваем и устанавливаем ключики репозиториев:

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 7BF2812E8A6E88E0
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 04EE7237B7D453EC
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com DCC9EFBF77E11517

Обновляем список источников приложений:

sudo apt update

Устанавливаем бэкап-клиент:

sudo apt install proxmox-backup-client

Осталось лишь выполнить бэкап. Для примера мы забэкапим корневую директорию нашей тестовой машины:

sudo proxmox-backup-client backup root.pxar:/ --repository PBS_IP_ADDRESS:DATASTORE_NAME
Успешно выполненный бэкап хоста

Восстановление отдельных файлов из бэкапа

Часто бывает так, что восстанавливать данные целиком не требуется, нужно лишь вытащить определенный файл или директорию. Сделать это в два щелчка можно прямо из веб-интерфейса PBS:

Пример скачивания отдельного файла из бэкапа

Заключение

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

Добавим к этому, что разработчики активно расширяют возможности своего ПО и не бросают пользователей на произвол судьбы, составляя грамотную документацию и помогая в рамках коммьюнити-форума.