Бэкап виртуальной машины xenserver
Резервное копирование виртуальных машин в XenServer
Mar 30, 2017 · 6 min read
Одна из приятных особенностей XenServer заключается в том, что большинство функций являются бесплатн ы ми, но если вы хотите функцию “Автоматическая защита и восстановление виртуальных машин”, то вам следует приобрести лицензию Advanced. Даже, если вы платите за резервные копии на уровне диска, их недостаточно для большинства рабочих нагрузок — потребуется функция “моментальный снимок и возврат к памяти”, которая, в свою очередь, уже является частью лицензий “Enterprise” и “Platinum”. Разумеется, это не отменяет ценность платных продуктов и решений таких, как Xen Orchestra, но если ваш бюджет весьма ограничен и время простоя виртуальных машин при резервном копировании нисколько не является критичным, можно использовать bash-скрипт Xen-pocalypse.
Например, у нас есть единичный, или несколько хостов XenServer, на которых размещены несколько виртуальных машин и какое-либо время простоя системы, в которое перевод виртуальных машин в состояние “Suspend” не будет критичным (например, ночью). Идея заключается в том, что на хост XenServer помещается bash-скрипт, который выполняться от cron, который в свою очередь играет роль планировщика. Для своей работы скрипт использует команду “xe”, интерфейс командной строки Xen (CLI), который эквивалентен управлению из GUI по кликам в Xen Center. Скрипт останавливает (shutdown) виртуальную машину, создает XVA-темплейт на монтированном хранилище (share) для последующего развертывания виртуальной машины, в случае каких-либо сбоев. В данном примере будет рассмотрено резервное копирование на Windows Share (или CIFS), но можно использовать и другой тип Storage Repository (NFS и тд), поскольку все они монтируются по следующему пути:
где: UUID — это ID монтированного Storage Repository.
В первую очередь необходимо скачать Xen-pocalypse c GitHub по прямой ссылке и разместить его на хосте XenServer, например, в папке “ root”:
Опционально можно так же настроить отправку лога резервного копирования на почту с помощью sendEmail:
Citrix Xen дает возможность использовать настраиваемые поля (Custom Fields) в свойствах виртуальной машины для их фильтрации. Xen-pocalypse использует три типа тегов в Custom Fields, которые мы зададим, перейдя в свойства виртуальной машины (рис. 1):
и создадим три настраиваемых поля (рис. 2): “BackupTAG”, “Parent”, “Children”.
Поле “ BackupTAG” используется, как для сортировки, так и для задания расписания резервного копирования. Например, если копирование будет производиться по пятницам, можно указать “ backup-fri” (рис. 3).
Теги “Parent” и “Сhildren” опционально могут задавать “родительскую” и “дочерние” виртуальные машины. Отключение родительской ВМ приведет к тому, что служба запущенная на дочерней ВМ станет недоступной: например, если на родительской ВМ запущена СУБД, а на дочерних — какой-либо сервис, использующий СУБД. Без тегирования parent/children служба на дочерней виртуальной машине будет недоступна дважды: один раз — при резервном копировании “дочерней” виртуальной машины, другой — при резервном копировании “родительской”. Можно тегировать “дочерние” виртуальные машины, которые будут отключены и скопированы перед родителем и будут включены только после того, как родительская ВМ завершит создание резервной копии и будет вновь включена. Допускается указать только одну родительскую ВМ, тогда имена нескольких дочерних ВМ разделяются пробелом:
Следовательно, имена “дочерних” ВМ не должны содержать пробелы.
Xen-pocalypse так же поддерживает резервное копирование по списку ВМ заданных в файле в обход тегированию. Файловый метод указания списка ВМ является атавизмом, наследованным из предыдущих версий скрипта и его использование не рекомендуется. Если по каким-то причинам необходимо осуществлять резервное копирование по списку в файле, то имена ВМ, указываемые в текстовом файле так же не должны содержать пробелов. Имена ВМ разделяются переводом строк, тогда как пустые строки внутри списка использовать не рекомендуется. Для получения списка ВМ в консоли хоста XenServer можно выполнить:
и скопировать полученный вывод в текстовый файл.
Следующим шагом необходимо создать Storage Repository. Для этого в XenCenter перейдем:
выберем SMB/CIFS (рис. 4), укажем IP-адрес/FQDN, путь к сетевой папки и Credentials (рис. 5). По завершению создания Storage Repository перейдем в его свойства:
и скопируем UUID (рис. 6). Фактически, ваш SR на стороне хоста будет иметь путь /var/run/sr-mount/%UUID%, который необходимо будет указать в конфигурационном файле Xen-pocalypse. Открываем этот файл на редактирование:
Самый простой способ проверить настройки и работоспособность Xen-pocalypse — это выполнить консольную команду:
или с указанием полного пути:
В качестве планировщика можно использовать cron. Например, добавим в его конфигурацию выполнение Xen-pocalypse на каждую пятницу в 23:30:
или, если планируется выполнять резервное копирование каждый день, то:
В результате выполнения скрипта на монтированном SR будет создан файл:
Каждый создаваемый XVA-темплейт будет перезаписываться поверх старого. Можно так же просмотреть выполняется ли резервное копирование, или процесс “завис”. Для того, чтобы наблюдать все выполняемые Xen’ом задачи необходимо выполнить из консоли:
Для восстановления созданного XVA-темплейта в XenCenter следует выбрать:
Автоматический бекап виртуальных машин в XenServer
Недавно понадобилось автоматизировать создание и сохранение снепшотов виртуальных машин из XenServer. Ничего не найдя по этой теме в русскоязычном сегменте я пошёл в мировой интернет и нашёл статью на ресурсе tecadmin.net, которая мне очень помогла, поэтому я решил разместить её перевод на Хабре. Далее авторский (с адаптацией под нашу речь) перевод исходной статьи:
Я работаю с Citrix XenServer уже много лет, и управление всеми серверами виртуализации через приложение XenCenter, которое установлено на моём компьютере с ОС Windows. До сегодняшнего дня мы регулярно производили резервное копирование виртуальных машин вручную, так же приходилось останавливать сервера для их копирования. Большинство владельцев серверов не могут позволить себе их отключение на длительное время. Поэтому я нашёл способ, как копировать виртуальные машины без их выключения и, соответсвенно, простоя.
В этой статье мы по шагам научимся делать резервные копии запущенной виртуальной машины, а так же, будет представлен готовый скрипт, который может делать резервные копии всех серверов через cron.
Ручной бекап запущенной машины
Данна команда покажет список виртуальных машин и их UUID, которые нам нужные для следующего шага.
Параметр uuid необходимо заменить на свой, полученный на первом шаге, убедитесь, что он правильный.
А эта команда вернёт uuid снепшота, по которому его можно будет сохранить в файл
Скрипт автоматического бекапа запущенных виртуальных машин
Для резервного копирования всех виртуальных машин, работающих на базе xenserver можно использовать следующий bash-скрипт. Данный скрипт создаёт снепшоты и экспортирует их на NFS-диск. У меня этот скрипт работает отлично, чего может не буть у вас, поэтому используйте его на собственный страх и риск.
Резервное копирование виртуальных машин в Citrix XenServer
1. Дедуплицированный бекап (Deduplicated Backup) — создание сжатой копии виртуальной машины. При дальнейших бекапах этого типа записываются только изменения;
2. Восстановление (Restore) — восстановление виртуальной машины из хранилища (БД) Alike;
3. Репликация виртуальных машин (Replication VM) — создание полной копии виртуальной машины путем экспорта ее снимка (Snapshot).
Дополнительные режимы работы (Режимы обслуживания):
1. Оптимизация хранилища (Alike storage optimisation) — Позволяет уменьшить место занимаемое резервными копиями за счет уплотнения данных;
2. Слияние ветвей (авт.) (Leaf Coalesce) — Позволяет высвободить свободное место на хранилище XenServer после проведения Snapshot.
Интерфейс и работа:
Окно программы, условно, можно разделить на 2 части — навигационное меню по группам задач и рабочую область. Интерфейс интуитивно понятен и информативен.
Jobs (Создание, редактирование и удаление задач)
Explorer (Управление резервными копиями)
Activity (Журналы проведения задач)
Settings (Настройки программы)
За работу программы в системе отвечают 2 службы Shedule и Vaulter. Первые версии программы были довольно нестабильными и служба Shedule постоянно «вываливалась», что вынуждало запускать ее вручную, благо для этого в интерфейсе программы есть соответствующий функционал.
Резервное копирование Xen с помощью Bacula Enterprise. Бэкап XenServer
Надежное и быстрое решение для резервного копирования и восстановления XenServer от Citrix.
Введение в резервное копирование XenServer
ПО Bacula нативно запускается на платформе гипервизора Xen. В данном документе показаны способы конфигурирования Bacula Enterprise Edition для создания бэкапов виртуальных машин XenServer.
Гипервизор Xen позволяет использовать интерфейс командной строки. Различные дополнительные возможности программы позволяют пользователю управлять виртуальными машинами, запущенными в среде Xen. Интерфейс командной строки, среди прочего, позволяет создавать, удалять, клонировать, запускать, останавливать и создавать снапшоты виртуальных машин.
Используя возможности командной строки Xen, пользователи могут создавать задачи Bacula Job с помощью ресурса «RunScript», а также простые скрипты оболочки, которые запускаются до выполнения задачи по созданию бэкапов. Скрипт создает снапшоты ВМ Xen, а затем экспортирует их в файлы *.xva, из которых потом будет создана резервная копия ВМ с помощью Bacula Enterprise Edition.
Установка Bacula File Daemon (FD)
Citrix XenServer 7.0 основан на CentOS 7. Для установки системы с помощью yum вам необходимо будет создать файл репозиториев в /etc/yum.repos.d/
Пользователь также должен присвоить значение 1 параметру CentOS-Base.repo в том же каталоге, чтобы при необходимости извлечь зависимости. Если пользователю необходимо установить пакет bacula-enterprise-client для выбранной версии @@bee-version@@, библиотеки будут установлены как зависимости. Сконфигурируйте файл /opt/bacula/etc/bacula-fd.conf таким образом, чтобы служба Bacula Director смогла получить к нему доступ и инициировать задачи.
Пример ресурса Job
Задача по созданию резервной копии, которая создаст бэкап Xen и экспортирует Xen VM, является стандартной задачей «Type=Backup» в Bacula. Для простоты мы извлекли несколько обязательных директив (таких как Pool, Level, Schedule и т.д.) из ресурса JobDefs под названием «Defaults»:
Обратите внимание на ресурс RunScript в определении задачи. Он подготовит хост XenServer к экспорту снапшотов ВМ во временный каталог (например, /tmp). Скрипт сконфигурирован для запуска до выполнения задачи по созданию бэкапа. Скрипт будет запущен на целевой системе (сервере Xen). Задача будет прервана в случае неуспешного выполнения скрипта, а результатом неудачного выполнения независимо от причины будет являться ненулевой код выхода.
В строке «Command=» будет указано, что пользователь сохранил скрипт в каталоге Bacula /opt/bacula/scripts/. Скрипт будет использовать список ВМ для создания бэкапа в качестве параметров командной строки, либо будет использован параметр «—all» для создания и экспорта снапшотов всех ВМ, найденных на Xenserver. Более подробное описание скрипта приведено в разделе 5.
Пример ресурса Fileset
Пример ресурса FileSet, который использовался в определении задачи, приведен ниже:
Пожалуйста, примите во внимание тот факт, что мы не задавали сжатие в блоке Options<>. В случае файлов образов VM данная опция является бесполезной.
Скрипт для дампа виртуальной машины
Скрипт, приведенный в качестве примера в данном документе, очень простой. Пользователю необходимо лишь отредактировать и сконфигурировать две переменные в верхней его части.
Строки, которые находятся ниже определения переменных, не требуют изменений.
Скрипт «считает» список виртуальных (аргументы командной строки заданные в RunScript Command= line, из которой вызывается скрипт) и создаст снапшоты всех ВМ. Затем он экспортирует созданные снапшоты в файлы *.xva в каталоге exportdir и удалит (временные) снапшоты. После этого ПО Bacula создаст бэкапы экспортированных виртуальных машин.
Примите во внимание тот факт, что *.xva файлы могут занимать большой объем памяти, а вам, возможно, потребуется хранить эти файлы длительное время. Если переменной keepdays присвоить значение, отличное от «0» (используется по умолчанию), скрипт удалит экспортированные образы ВМ старше указанного времени.
Ниже приведен пример скрипта. Если вы хотите использовать данный скрипт, не копируйте его из данного документа. Скачайте его с сайта: http://www.baculasystems.com/ml/xenbackup.sh
Предупреждения и ограничения бэкапа XenServer
Скрипт дампа не применим к виртуальным машинам с пробелами в названиях. Файлы XVA занимают большой объем памяти на жестком диске. Пожалуйста, убедитесь том, что вам доступен необходимый объем памяти.
Установка и настройка Citrix XenServer Часть 3.
В данной статье мы рассмотрим настройку резервного копирования хостов Xen и запущенных виртуальных машин.
Настроим путь к хранилищу бэкапов.
Открываем консоль хоста через XenCenter.
Создадим папку, куда будет примонтировано хранилище резервных копий.
Далее установите Xentools на каждую виртуальную машину.
Теперь подготовим скрипты для бэкапа виртуальных машин использующих vss. (Данный скрипт подходит для бэкапа windows виртуальных машин)
Создаем каталог для файлов скрипта.
Переходим в созданный каталог.
Скачиваем скрипты резервного копирования.
Назначаем права на файлы скриптов.
Теперь перейдем к настройке.
Для удобства можно подключиться к серверу через программу winscp, или использовать консольный редактор vi.
Открываем файл через vi и редактируем.
Теперь рассмотрим параметры конфига.
Секция где указывается путь к логам:
Путь к хранилищу резервных копий.
Формат резервной копии (рекомендуется не изменять!)
Какие виртуальные машины бэкапить.
Список виртуальных машин, которые нужно бэкапить (индивидуальный список)
Формат даты в файле резервной копии.
После настройки конфига, запустим скрипт резервного копирования.
Автоматизируем данный скрипт.
Чтобы каждый раз не подключать хранилище вручную добавим в файл vm_backup.sh следующую строку в начале файла, под #!/bin/bash.
Должно получится так:
Теперь добавим следующую строку в самый конец файла.
Должно получится так:
Теперь отмонтируем наше хранилище.
Теперь составим расписание резервного копирования. Тут нам поможет планировщик заданий Cron.
Открываем консоль хоста xen1 и вводим команду:
Откроется редактор vi, в нем нужно ввести расписание и выполняемую команду.
Рассмотрим примеры расписания Cron:
Задание Cron выглядит как строка
Значения первых пяти полей:
минуты — число от 0 до 59
часы — число от 0 до 23
день месяца — число от 1 до 31
номер месяца в году — число от 1 до 12
день недели — число от 0 до 7 (0-Вс,1-Пн,2-Вт,3-Ср,4-Чт,5-Пт,6-Сб,7-Вс)
# выполнять резервное копирование раз в час в 0 минут
# выполнять резервное копирование каждые три часа в 0 минут
# выполнять резервное копирование по понедельникам в 1 час 15 минут ночи
# выполнять резервное копирование 5 апреля в 0 часов 1 минуту каждый год
# выполнять резервное копирование в пятницу 13 числа в 13 часов 13 минут
# выполнять резервное копирование ежемесячно 1 числа в 6 часов 10 минут
Мы будем выполнять резервное копирование каждый день в 23:00
Для редактирования в VI нажмите A, далее введите строку задания Cron и нажмите Enter, чтобы следующая строка была пустая.
Чтобы Cron корректно сохранил задание последняя строка всегда должна быть пустая.
Для сохранения изменений в Cron нажмите Esc а затем 2 раза z. Теперь Cron задание сохранено.
Мы рассмотрели резервное копирование для Windows подобных VM. Теперь рассмотрим скрипт резервного копирования, который подходит для все типов гостевых ОС.