Как бесплатно создать резервную копию виртуальных машин Citrix Xen с помощью Xen-pocalypse (Bash)
Вам когда-нибудь нужно было создавать резервные копии ваших виртуальных машин Citrix Xen (ВМ), но вы не хотели обанкротить банк? В HTG есть только сценарий bash для вас с Xen-pocalypse.
Изображение h.koppdelaney, Застрял в Custom и Hotfortech.
Одна из приятных сторон Citrix Xen состоит в том, что многие свободно заряда. С учетом вышесказанного, если вам нужна функция «Автоматическая защита и восстановление виртуальной машины», вам придется начать платить за «Предварительную» лицензию. Даже в этом случае вы платите только за резервные копии на уровне диска, которых недостаточно для многих типов рабочих нагрузок, таких как Active Directory, Базы данных и т. Д. Чтобы преодолеть это, вам может потребоваться «Снимок оперативной памяти и восстановление», который может сохранить все состояние машины, включая содержимое оперативной памяти. Однако эта функция является частью выпусков «Enterprise» и «Platinum», которые стоят еще дороже. Дело не в том, что мы в HTG отвергаем ценность истинного программного обеспечения для резервного копирования, но если у вас ограниченный бюджет и вы не возражаете против простоя операции резервного копирования, вы можете найти Xen-pocalypse как вполне разумное решение. прежде чем сделать бюджетное обязательство.
обзор
«Вариант использования»: у вас есть пара виртуальных машин, для которых требуется резервное копирование. «Выключение виртуальной машины и ее экспорт в виде файла» из «Xen Center» с помощью щелчка правой кнопкой мыши работает нормально, но вы хотите, чтобы этот процесс происходил автоматически и по расписанию. Этот скрипт Bash использует команду «XE» для выполнения своих обязанностей. XE - это интерфейс командной строки Xen (CLI), автоматический эквивалент для «правых щелчков» в «Центре Xen». Мы будем вызывать скрипт из Cron, который предоставит часть «планирования». В простейшем виде поток резервного копирования:
- Отключить целевую ВМ.
- Экспортируйте виртуальную машину как файл в папку резервной копии.
- Если виртуальная машина была включена, перед началом резервного копирования она будет включена снова.
Давайте взломать :)
Получить сценарий
Xen-pocalypse можно свободно получить из github, используя обычные методы git. С учетом сказанного, если вы еще не разбираетесь в git, вы можете получить zip-файл по этой ссылке. Поскольку скрипт должен запускаться на одном из ваших серверов Xen, вы должны извлечь его там, чтобы сохранить права на выполнение..
Wget https://github.com/aviadra/Xen-pocalypse/archive/master.zip
распаковать мастер
Несмотря на то, что вышесказанное будет работать, вам рекомендуется использовать метод GIT, чтобы вы могли извлечь выгоду из будущих обновлений.
Получить SendEmail (необязательно)
Мы писали о Perl-программе SendEmail в прошлом, поэтому нет необходимости повторять здесь. Достаточно сказать, что в Linux он работает так же, как в Windows.
Хотя включение электронной почты не является обязательным, настоятельно рекомендуется, потому что тогда сценарий сможет:
- Сообщите, когда это началось и закончилось.
- Оповещать вас о любых ошибках, которые он смог обнаружить и обработать.
- Сообщить о дисквалификации резервного копирования из-за нехватки места. (Это поведение может быть отключено, если не желательно)
Загрузите его на сервер Xen и распакуйте.
Wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
tar xvzhf sendEmail-v1.56.tar.gz
Обратите внимание на место, где вы извлекли его. Он понадобится вам для файла настроек.
Определение тегов
Citrix Xen дает вам возможность настроить «Пользовательские поля» для возможностей фильтрации. Мы создадим поля и затем заполним их информацией, используемой Xen-pocalypse. Xen-pocalypse распознает 3 контрольных тега, которые обозначают имя тега для резервного копирования и отношения родитель-потомок. Если вы не собираетесь использовать метод ввода файла, вы ДОЛЖНЫ создать хотя бы поле имени тега резервного копирования..
Для этого откройте свойства сервера или даже виртуальной машины. На панели навигации выберите «Пользовательские поля»..
Если вы впервые определяете отношение (как в примере выше), у вас не будет полей для ввода данных, поэтому вам нужно их создать. Для этого нажмите «Изменить пользовательские поля» в появившемся диалоговом окне, нажмите «Добавить…»
Создайте три (3) поля типа «Текст». Один будет называться «BackupTAG», а другие - «Родитель» и «Дети»..
Замечания: Имена пользовательских полей были «жестко запрограммированы» в сценарии, поэтому вы НЕ ДОЛЖНЫ отклоняться от написанного выше, если только вы не измените соответствующий код..
Как только все поля будут созданы, вы должны увидеть:
Закройте окно. Теперь вы должны заполнить поля «BackupTAG», «Parent» и «Children», как показано на рисунке ниже..
Теперь все, что вам нужно сделать, это указать, какие виртуальные машины принадлежат тому или иному «BackupTAG»..
Например, в компании, где был создан сценарий, у нас были виртуальные машины, резервное копирование которых осуществлялось еженедельно в четверг и пятницу, расписание для наших виртуальных машин Atlassian, а некоторые - резервные копии только ежемесячно. Итак, наш обзор выглядел так:
Например, где «Weekly-Fri» - это текст, который мы ввели в «BackupTAG» «Custom Field». Аккуратно, а? :)
Родители и дети (по желанию)
Настоящая красота этого скрипта в том, что он поддерживает отношения «родитель» к «ребенку». Таким образом, можно установить список «дочерних» виртуальных машин, которые будут отключены и сохранены перед родительским, и что эти дочерние элементы будут включены только после того, как родитель закончит резервное копирование и будет возвращен обратно. на. Это полезно в тех случаях, когда отключение родительской виртуальной машины приведет к недоступности дочерней службы. Это означает, что служба на дочерней виртуальной машине будет недоступна дважды: один раз для процесса резервного копирования дочернего объекта и один раз для родительского. Создание этих отношений преодолевает эту проблему.
Например, все наши виртуальные машины Atlassian использовали одну виртуальную машину базы данных (DB), которая также была настроена для резервного копирования. Таким образом, отмечая, что виртуальная машина БД является «родительской» для других виртуальных машин, можно обеспечить правильный порядок выключения -> резервное копирование -> запуск..
На момент написания этой статьи у этой функции было несколько предостережений:
- Имена виртуальных машин, которые должны иметь такую связь, не могут содержать пробелы. Вам придется удалить пробелы из имен виртуальных машин, так как они будут разделены пробелами, как в примере ниже.
- Там может быть только один родитель. Назначение более одного даже не планируется, не говоря уже о проверенных.
Чтобы создать это отношение, перейдите в свойства виртуальной машины. Если это «родитель», напишите, кто его дети, а если это «ребенок», напишите, кто его родитель. Например:
Примечание. Если не назначить родителя для ребенка, это может привести к тому, что ребенок будет запущен до того, как его родитель будет готов, и может вызвать двойное резервное копирование..
Метод FILE (Необязательно)
По историческим причинам Xen-pocalypse также поддерживает получение списка виртуальных машин для резервного копирования в виде текстового файла. Хотя «код» все еще присутствует, функциональность сильно уступает методу TAG, и поэтому он не рекомендуется. С учетом вышесказанного, если вы по какой-либо причине предпочитаете использовать метод списка, применяются следующие ограничения:
- Имена виртуальных машин не могут содержать пробелов или специальных символов.
- В каждой строке может быть только одно имя виртуальной машины..
- Пустые строки не допускаются.
Чтобы создать список, скопируйте имя виртуальной машины из центра Xen или выполните на хосте Xen:
xe vm-list | grep name-label | AWK
'print $ 4' | Сортировать
Скопируйте приведенный выше список в обычный текстовый файл..
Местоположение резервной копии
Во время случайного поиска в Citrix Xen я обнаружил, что репозитории хранилищ (SR) доступны для использования в «/ var / run / sr-mount /% UUID%», где UUID - это уникальный идентификатор SR, который может быть полученный из GUI.
Это означает, что мы можем использовать обычный мастер «Далее -> Далее -> Готово», чтобы создать монтирование в нужное место резервной копии, а затем заставить скрипт использовать этот путь (в отличие от манипуляций с монтированием из командной строки), но делать так что выходит за рамки этого руководства.
Чтобы создать новое «монтирование», щелкните правой кнопкой мыши имя сервера и выберите «Новый SR»..
В этом примере мы укажем Xen на общий ресурс Windows, поэтому выберите «Общий доступ к файлам Windows (CIFS)»:
Завершить следующее -> Далее -> Готово.
Получить UUID SR
Чтобы получить UUID SR, просто нажмите на его имя в Центре Xen и перейдите на вкладку «Общие».
Чтобы скопировать UUID, просто щелкните по нему правой кнопкой мыши и выберите «Копировать»..
Имея эту информацию под рукой, вы готовы редактировать файл настроек.
Настройте файл настроек.
Проект Xen-pocalypse поставляется в комплекте с шаблоном файла «settings». Этот шаблон должен быть отредактирован в соответствии с вашими настройками и передан в качестве первого аргумента скрипту. Файл настроек обозначает следующее:
Метод для получения виртуальных машин для резервного копирования - метод по умолчанию - TAG. Вы можете изменить это на ФАЙЛ, но это не рекомендуется.
Местонахождение места назначения резервной копии - если вы следовали инструкциям к этому пункту, вам нужно только заменить% UUID% на SR, как это было получено выше.
Расположение SendEmail - Если вы решили включить электронную почту, вам нужно указать, где вы извлекли исполняемый файл perl здесь.
Детали электронной почты - Опять же, если вы включили электронную почту, вам нужно определить такие детали, как: Кому, От, Имя сервера / IP и т. Д. '.
компрессия - По умолчанию для этого параметра установлено значение «Нет», поскольку при его включении будет создаваться файл резервной копии меньшего размера, что также приведет к выполнению процедуры резервного копирования в течение значительно более длительного периода времени..
Проверить свободное место в месте назначения - при этом скрипт будет проверять, что создание резервной копии виртуальной машины не приведет к уменьшению свободного места в хранилище ниже 10 ГБ. Это сделано для того, чтобы обеспечить резервное копирование большинства виртуальных машин вместо одной очень большой виртуальной машины. Расчет выполняется с использованием общего размера диска всех жестких дисков, связанных с виртуальной машиной..
отладка - По умолчанию отладка отключена со значением «0» (ноль). Вам не нужно включать это, но если вы это сделаете, больше информации отмечено в разделе устранения неполадок.
Выполнение / Планирование
В простейшей форме вызов Xen-pocalypse будет выглядеть так:
./Xen-backup.sh settings.cfg еженедельно пт
Где в приведенном выше случае, мы находимся внутри каталога, в котором находится скрипт и файл настроек. «Тег», который будет искать сценарий, - «Weekly-Fri».
Как отмечалось выше, мы будем использовать Cron для планирования выполнения. Прежде чем мы перейдем к конфигурации, это настоятельно рекомендуется что вы настраиваете уже установленный пакет SSMTP на вашем сервере Xen. Хотя это необязательный шаг, это даст вам коллектор обратной промывки. Наличие такого «коллектора обратной промывки» может предупредить вас о том, что сценарий не может.
Войдите в редактирование cron больше, выполнив:
crontab -e
Если вы следовали приведенным выше инструкциям и хотите добавить резервную копию по расписанию на пятницу в 18:01 (6:01 PM), введите следующее:
01 18 * * пт /root/Xen-pocalypse-master/Xen_Backup.sh /root/Xen-pocalypse-master/settings.cfg еженедельно пт
Вышеприведенное верно, если ваш сценарий и файл настроек находятся в «/ root / Xen-pocalypse-master /».
Поиск проблемы
Хотя я приложил немало усилий, чтобы сделать сценарий максимально простым и надежным, «Мир - это большая лаборатория». Приведенная ниже информация может помочь вам выяснить источник ваших проблем..
Прогресс
Возможно, вы захотите использовать этот вкладыш, чтобы быстро «наблюдать» за всеми выполняемыми задачами, чтобы увидеть, действительно ли они прогрессируют или они действительно застряли.
while [-e / dev / null]; do для VM в "$ (xe task-list | grep uuid | awk 'print $ 5')"; do xe task-param-get param-name = progress uuid = $ VM; сон 1; сделанный; сделанный
Чтобы остановить просмотр, используйте Ctrl + C, чтобы затормозить «время цикла».
логирование
Вся «регистрация» собирается хостом Xen, выполняющим скрипт в механизме системного журнала. Это, конечно, можно посмотреть с помощью:
меньше + F / var / log / messages
Вы ищете ключевое слово «Xen-pocalypse».
Примечание. Citrix установил двухдневную политику хранения для системного журнала своих серверов. Вы можете иметь это в виду для посмертных.
отладка
Как отмечено в сегменте файла настроек, есть директива для включения отладки. Включение отладки приведет к тому, что сценарий будет выводить подробное ведение журнала на консоль и кастрировать его из отправки электронных писем и фактического выполнения экспорта, если только не установлены соответствующие флаги. Возможные флаги отмечены в шаблоне файла настроек, и они позволяют вам детально определить, что вы хотите отлаживать.
Я надеюсь, что вам не понадобилась отладка, и вы пожинаете плоды моего труда :)
Тяга, мой человек, ты собираешься стать первым десептиконом ...