Резервное копирование Proxmox с помощью Bacula Enterprise. Бэкап виртуальных машин Proxmox

Введение в резервное копирование Proxmox

ИТ компании постоянно требуются различного рода решения для резервного копирования, гарантирующие низкую стоимость владения соответствующим ПО. В данном документе приведены стратегии резервного копирования виртуальных машин на гипервизоре Proxmox с помощью Bacula Enterprise Edition 8 и плагина для Proxmox. Плагин Bacula Enterprise Edition для Proxmox позволяет восстанавливать виртуальные машины на «голое железо», включая гостевые ВМ QEMU и LXC.

Данный документ знакомит пользователя с возможностями и процедурами, которым необходимо следовать для выполнения резервного копирования ВМ на базе Proxmox и их восстановления с помощью Bacula Enterprise Edition.

Характеристики

  • Резервное копирование любой гостевой ВМ, включая QEMU и LXC, в режиме реального времени с использованием снапшотов.
  • Полное резервное копирование на уровне образа.
  • Возможность полного восстановления образа ВМ.
  • Возможность восстановления архивов ВМ QEMU (.vma) в альтернативный каталог.
  • Возможность восстановления архивов ВМ LXC (.tar) и конфигурирование машины в альтернативном каталоге.

Термины и выражения

Proxmox — решения на базе открытого исходного кода для виртуализации инфраструктуры предприятия.

VMID — уникальный идентификатор, используемый для определения гостевых ВМ на гипервизоре Proxmox.

VMA — особый архив ВМ, используемый гипервизором Proxmox и плагином Bacula Proxmox для хранения гостевых ВМ QEMU.

Гостевая ВМ — гостевая ВМ, установленная на гипервизоре Proxmox. Данный термин используется также применительно к гостевым ВМ QEMU и LXC.

1. Стратегии резервного копирования гостевых ВМ

1.1 Установка клиента Bacula на каждую гостевую машину

Первая стратегия предполагает резервное копирования ВМ без использования плагина Bacula Enterprise Edition Proxmox. Вместо него на каждую ВМ устанавливается Bacula Enterprise File Daemon как на обычный физический клиент. Чтобы оптимизировать ввод-вывод данных в системе Proxmox, необходимо использовать планировщик Bacula Schedule, приоритеты Priorities, и задать последовательность выполнения задач Job. Это позволит распределить все задачи резервного копирования в окне резервного копирования. Поскольку все гостевые ВМ используют одно и то же хранилище в гипервизоре Proxmox, запуск всех задач одновременно может привести к возникновению эффекта «бутылочного горлышка» в сети/на диске.

Установка Bacula Enterprise File Daemon на каждую ВМ позволяет управлять виртуальными серверами как физическими, а также использовать все следующие функции Bacula Enterprise:

  • Быстро восстанавливать отдельные файлы.
  • Проверять контрольной суммы отдельных файлов на предмет наличия вирусов и шпионских программ.
  • Проверять задачи.
  • Исключать файлы и каталоги (например, временные или swap-файлы).
  • Производить сжатие на уровне файлов.
  • Создавать точные бэкапы.

2 Операции резервного копирования и восстановления

2.1 Резервное копирование

Резервное копирование одной гостевой ВМ построено на выполнении следующих шагов:

  • Сохранение конфигурации гостевой ВМ (для гостевых ВМ LXC).
  • Создание снапшота нового бэкапа (по умолчанию), приостановка или остановка гостевой ВМ.
  • Выполнение команды vzdump и сохранение данных.

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

В ходе создания бэкапа будет создан один (.vma) файл для любой гостевой ВМ QEMU и два файла (.conf and .tar) для любой гостевой ВМ LXC. Внутри Bacula это будет выглядеть следующим образом.

/@proxmox/qm/<name-label>/VM<vmid>.vma для гостевых ВМ QEMU

/@proxmox/lxc/<name-label>/VM<vmid>.conf и

/@proxmox/lxc/<name-label>/VM<vmid>.tar для гостевых ВМ LXC

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

2.2 Восстановление

Плагин для Proxmox позволяет выполнять две задачи при восстановлении:

  • Восстанавливать ВМ на гипервизоре Proxmox в качестве новой или исходной гостевой ВМ
  • Восстанавливать в локальной директории архивные файлы Proxmox (.vma или два файла .tar и .conf).
2.2.1 Восстановление в Proxmox

Чтобы воспользоваться данным методом восстановления, используется команда Bacula where= параметр. Архив гостевой ВМ будет отправлен на гипервизор Proxmox и восстановлен в качестве новой гостевой ВМ, если будет назначен vmid восстанавливаемой ВМ. В противном случае, гостевая ВМ будет восстановлена с использованием исходного vmid.

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

Новые гостевые ВМ получат новые vmid. Идентификаторы можно назначать с помощью плагина Bacula Proxmox в качестве произвольных значений в диапазоне vmid+1 и +11. Эта процедура позволяет избегать возможных проблем с назначением ресурсов, которые могут возникнуть, если две или более гостевых ВМ восстанавливаются или создаются в одно и то же время, поскольку сами по себе решения Proxmox не содержат механизмов решения таких проблем.

Используя опцию восстановления плагина sequentialvmid, можно изменить процедуру назначения идентификатора так, чтобы при восстановлении новая гостевая ВМ получала бы следующий доступный vmid. Эта процедура позволит ограничить диапазон vmid’ов назначенных за определенное время. Однако, при этом, процедура одновременного восстановления станет ненадежной.

Целевое хранилище Storage, которое будет использоваться для диска(ов) восстанавливаемой гостевой ВМ, можно задать с помощью опции плагина. Если опция не задана, все диски гостевой ВМ будут восстановлены в исходное хранилище Storage.

Чтобы перечислить все доступные хранилища, можно воспользоваться режимом перечисления (смотрите раздел 6.1 на странице 12).

При выборе неправильного (несуществующего) хранилища для восстановления в процессе восстановления будет создана гостевая ВМ в хранилище гипервизора Proxmox, используемом по умолчанию.

2.2.2 Восстановление в локальный каталог

В данном режиме используется параметр Bacula where=/some/path, то есть задается полный путь к серверу, на котором установлен плагин для Proxmox. В случае отсутствия пути, он будет создан плагином Bacula Proxmox.

3 Установка

Bacula File Daemon и плагин для Proxmox необходимо устанавливать на хосте гипервизора Proxmox, который запускает гостевые ВМ, резервную копию которых необходимо создать. Proxmox использует кастомизированные дистрибутивы Debian, поэтому для данной платформы необходимо использовать Bacula Enterprise File Daemon.

3.1 Конфигурирование

Директива Plugin Directory ресурса File Daemon в /opt/bacula/etc/bacula-fd.conf должна указывать, где установлен файл proxmox-fd.so. Стандартно используется каталог /opt/bacula/plugins

3.2 Установка плагина

Установку плагина Bacula Enterprise Proxmox проще всего выполнять путем добавления файла хранилища, соответствующего существующей подписке и версии Debian, на которой разработана Proxmox. Например, /etc/apt/sources.list.d/bacula.list со следующим содержимым:

После этого необходимо выполнить обновление apt-get. Затем можно будет установить плагин с помощью:

apt-get install bacula-enterprise-proxmox-plugin

Установка пакетов вручную может быть выполнена после загрузки нужных файлов из указанной области загрузки Bacula Systems. Затем для установки необходимо будет использовать менеджер пакетов.

4 Конфигурирование плагина

Плагин конфигурируется с помощью параметров, описанных в разделе FileSets Include в файле конфигурирования службы Bacula Enterprise Edition Director.

4.1 Универсальные параметры плагина

Следующие параметры плагина для Proxmox оказывают влияние на любой тип задачи Job (резервное копирование, анализ, или восстановление).

abort_on_error[=<0 or 1>] параметр определяет, должен или не должен плагин прекращать выполнение задачи в случае возникновения критических ошибок во время резервного копирования, анализа, или восстановления. Это опциональный параметр. По умолчанию используется значение 0.

4.2 Параметры анализа и резервного копирования

Эти параметры плагина относятся только к задачам анализа и резервного копирования:

vm=<name-label> параметр задает имя гостевой ВМ для резервного копирования. Для резервного копирования будут выбраны все гостевые ВМ с указанным параметром <name-label>. Можно задавать несколько параметров vm=. Если гостевая ВМ с параметром <name-label> не будет найдена, будет сгенерирована единичная ошибка задачи, а процесс резервного копирования переключится на следующую ВМ, если не задана команда abort_on_error, которая приводит к завершению задачи при возникновении ошибки. Это опциональный параметр.

vmid=<vmid> параметр используется для задания VMID ВМ для резервного копирования. Можно указать множество vmid=…параметров. Если гостевая ВМ с <vmid> не будет найдена, будет сгенерирована единичная ошибка задачи, а процесс резервного копирования переключится на следующую ВМ, если не задана команда abort_on_error, которая приводит к завершению задачи при возникновении ошибки. Это опциональный параметр.

include=<name-label-regex> параметр служит для задания списка имен гостевых ВМ с помощью синтаксиса регулярных выражений. Все гостевые ВМ, имена которых совпадают с именами указанных регулярных выражений, будут выбраны для резервного копирования. Можно указывать несколько значений параметра include=….

Если выражениям не соответствует ни одна гостевая ВМ, процедура резервного копирования перейдет к следующему параметру или успешно завершит работу, не создав ни одной резервной копии ВМ. В случае отсутствия совпадений, параметр abort_on_error не приведет к завершению задачи. Это опциональный параметр.

exclude=<name-label-regex> параметр задает список имен гостевых ВМ, которые будут исключены из бэкапа с использованием совпадений с регулярными выражениями. Все гостевые ВМ с именами, совпадающими с указанными регулярными выражениями, и выбранными для резервного копирования с использованием параметра include=… будут исключены.

Этот параметр не влияет на гостевые ВМ, выбранные для резервного копирования с помощью параметров vm=… или vmid=….

Можно задать несколько параметров exclude=…. Это опциональный параметр.

mode=<snapshot|suspend|stop> параметр задает режим резервного копирования по умолчанию. В режиме снапшота будет сгенерирован «живой» бэкап с помощью снапшотов, что позволит сократить время простоя ВМ во время процедуры резервного копирования. Отложенный режим предполагает простой в работе гостевой ВМ на время резервного копирования. Гостевая ВМ будет находиться в режиме простоя во время создания бэкапа. По завершении создания бэкапа гостевой ВМ, она вновь будет запущена. В режиме остановки, до начала резервного копирования работа ВМ будет остановлена, а после завершения резервного копирования необходимо будет перезапустить ВМ.

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

vzdump_storage=<proxmox_storage> параметр указывает на хранилище Proxmox <proxmox_storage>, используемое командой vzdump во время резервного копирования, если «локальное» хранилище Proxmox не содержит доступного бэкапа. Параметр <proxmox_storage> должен указывать на хранилище Proxmox, которое содержит резервную копию с подходящим типом контента (смотрите раздел 6.2.1 на странице 13). Это опциональный параметр. Если он не задан, используется «локальное» хранилище Proxmox по умолчанию.

bwlimit=<N> параметр указывает на то, должен ли бэкап создаваться с ограничением пропускной способности ввода-вывода (в Кб/с) со стороны гипервизора. Это ограничение не зависит от ограничения пропускной способности Bacula и выполняется на другом уровне.

Это опциональный параметр. Если ограничение не задано, она не будет применяться со стороны гипервизора.

Если не задан ни один параметр vm=…, vmid=…, include=… and exclude=…, будут созданы бэкапы всех гостевых ВМ на гипервизоре Proxmox.

4.3 Параметры восстановления

Во время восстановления плагин для Proxmox будет использовать те же параметры, которые были заданы для задачи резервного копирования и сохранены в каталоге. Некоторые параметры можно изменить при восстановлении, если необходимо.

storage: <storage> параметр задает хранилище Proxmox, куда будет восстановлена гостевая ВМ. Если не будет задано хранилище, тогда гостевая ВМ будет восстановлена в хранилище Proxmox Storage, из которого создавалась ее резервная копия. Если параметр указывает на несуществующее хранилище, будет использовано исходное хранилище гостевой ВМ. Это опциональный параметр.

pool: <resourcepool> параметр задает ресурс Proxmox Resource Pool, к которому будет прикреплена восстанавливаемая ВМ. Если параметр не задан, восстанавливаемая гостевая ВМ не будет содержать прикрепленного Resource Pool. Если параметр указывает на несуществующий пул, пул не будет прикреплен. Это опциональный параметр.

sequentialvmid: <yes or no> параметр задает процедуру присвоения нового VMID. Если параметру присвоено значение «yes», новая гостевая ВМ получит первый доступный VMID, исходя из максимального VMID, найденного на гипервизоре Proxmox. В противном случае, восстанавливаемая гостевая ВМ получит случайный VMID, сгенерированный в диапазоне + 10 от максимального используемого VMID, найденного на гипервизоре Proxmox. Это значение по умолчанию.

Если sequentialvmid присвоить значение «yes», то можно избежать конфликтов, которые могут возникнуть во время одновременного восстановления нескольких ВМ.

4.4 Примеры использования директивы FileSet

В примере ниже будут созданы бэкапы всех гостевых ВМ:

В примере ниже будет создан бэкап одной ВМ с именем-меткой «VM1»:

Идентичный пример с использованием vmid:

В примере ниже будут созданы бэкапы ВМ, имена которых содержат выражение «Prod».

В примере ниже будет созданы бэкапы всех гостевых ВМ за исключением тех, которые начинаются с выражения «Test».

5 Восстановление

5.1 Восстановление в гипервизор Proxmox

Чтобы восстановить ВМ или несколько ВМ в гипервизор Proxmox, администратор должен выполнить команду восстановления и задать параметр where, как указано в примере:

Затем необходимо задать любые необходимые параметры плагина для восстановления.

В следующем примере показано использование параметра sequentialvmid, которому присвоено значение «yes»:

Лог задачи восстановления будет указывать на то, какая гостевая ВМ восстанавливается, и какая новая ВМ создается.

Новая гостевая ВМ, создаваемая во время восстановления, получит новый VMID (если исходный VMID более недоступен) однако будут сохранены исходные имя/имя хоста.

5.2 Восстановление в локальный каталог

Можно восстановить данные гостевой ВМ в файл без передачи их в гипервизор. Чтобы выполнить такое восстановление, необходимо с помощью параметра where задать каталог:

Обратите внимание на пример ниже, приведенный для проверки восстановления ВМ в локальный каталог.

Лог задачи восстановления покажет, что восстановление было произведено в локальный каталог.

6 Дополнительная информация

6.1 Перечисление ресурсов

Плагин Bacula Enterprise Proxmox поддерживает новую функцию Plugin Listing Bacula Enterprise Edition 8.x и более поздних версий. Данный режим позволяет плагину отображать некоторую важную информацию о ресурсах Proxmox:

  • Список имен-меток гостевых ВМ,
  • Список VMID гостевых ВМ,
  • Список хранилищ Proxmox,
  • Список пулов ресурсов Proxmox

Новая функция использует специальную команду .ls совместно с новым параметром plugin=<plugin>. Команда требует задать следующие параметры:

client=<client> Имя клиента Bacula, на котором установлен плагин Proxmox.

plugin=<plugin> Имя плагина, в данном случае proxmox: опциональные параметры указаны в разделе 4.1 на странице 6.

path=<path> путь к объекту для отображения.

Параметр path=<path> поддерживает следующие значения:

  • / для отображения типов объектов доступных для вывода списком.
  • vm для отображения списка имен-меток гостевых ВМ.
  • vmid для отображения списка VMID гостевых ВМ и указателей имен-меток.
  • storage для отображения списка доступных хранилищ.
  • pool для отображения списка пулов ресурсов.
  • Для отображения доступных типов объектов следуйте примеру:

Для отображения списка доступных гостевых ВМ, используйте следующую команду:

Чтобы отобразить список VMID гостевых ВМ, используйте следующий пример:

Списки ВМ и VMID отобразят примерный размер гостевой ВМ.

Чтобы отобразить доступные хранилища Proxmox, используйте следующий пример:

И наконец, чтобы отобразить доступные пулы Proxmox, используйте следующий пример:

6.2 Рекомендации

6.2.1 Резервное ЗУ для Proxmox

Если вы обнаружили следующую ошибку во время выполнения задачи резервного копирования:

Необходимо проверить лог задач Proxmox на наличие следующей ошибки:

Значит ваш «локальный» ресурс хранилища Proxmox не содержит требуемый тип контента «бэкапа». Данный тип конфигурации с помощью команды vzdump Proxmox должен сохранять лог задач резервного копирования и конфигурацию гостевой ВМ. В качестве решения вы можете добавить недостающий тип контента «бэкапа» в локальный ресурс хранилища Proxmox или сконфигурировать задачу резервного копирования так, чтобы для ее выполнения можно было использовать различные ресурсы хранилище Proxmox. В таком случае вам необходимо добавить параметр vzdump_storage=… в конфигурацию.

6.3 Ограничения

  • До сих пор не поддерживается выборочное восстановление (восстановление единичного объекта). Для того, чтобы восстановить один файл с гостевой ВМ на Proxmox, вам потребуется выполнить резервное копирование ВМ на уровне файла с включенной в ВМ службой Bacula FD.
  • До сих пор не поддерживается одновременное выполнение нескольких задач резервного копирование одной и той же гостевой ВМ.
  • Можно создавать только полные бэкапы. Это ограничение Proxmox, так как API решений не позволяет выполнять резервное копирование на других уровнях.
  • Нельзя создать бэкап ВМ шаблонов, доступных в системе Proxmox. Это ограничение Proxmox.
  • В режиме списка с использованием параметров vm или vmid, плагин отобразит и гостевые ВМ и шаблоны ВМ. Это ограничение будет в будущем устранено.