Резервное копирование Citrix Xen VM бесплатно с Xen-pocalypse
О чём эта статья
В этой инструкции описан практический, бюджетный подход к резервному копированию виртуальных машин Citrix Xen без платных расширений. Решение подходит, если вы готовы допустить короткие простои VM во время экспорта. Пошаговые разделы включают установку, конфигурацию меток, выбор места хранения, планирование и отладку. Включены дополнительные материалы: методология, чек-листы по ролям, шаблоны, критерии приёмки и пошаговый план восстановления.
Important: перед началом убедитесь, что у вас есть администраторский доступ к Xen-серверу и доступ к хранилищу, где будут храниться бэкапы. Создавайте тестовые VMs и тестовые задания перед внедрением в продуктив.
Основная идея и простая последовательность действий
Кратко: скрипт использует интерфейс XE (Xen CLI) для автоматического выключения целевой VM, её экспорта в файл и повторного включения при необходимости. Планировщик cron запускает скрипт по расписанию.
Типовой поток резервного копирования:
- Остановить целевую виртуальную машину при необходимости.
- Экспортировать VM в файл в целевое хранилище.
- Если VM была включена до начала процесса, включить её после экспорта.
Кому подходит этот подход
- Малому или среднему бизнесу с ограниченным бюджетом.
- Сценариям, где короткие простои допустимы.
- Средам, где нет лицензий Enterprise/Platinum для снапшотов памяти.
Противопоказания: если требуется минимальное время простоя, консистентность памяти в момент снапшота или интеграция с корпоративной политикой резервного копирования, рассмотрите платные решения.
Получение скрипта
Xen-pocalypse доступен на GitHub. Разверните репозиторий на одном из Xen-серверов, чтобы сохранить права на исполнение.
wget https://github.com/aviadra/Xen-pocalypse/archive/master.zip
unzip master.zipРекомендуется использовать git clone для удобной синхронизации обновлений:
git clone https://github.com/aviadra/Xen-pocalypse.gitПоместите скрипт и файл настроек на тот Xen-хост, где будут выполняться команды xe.
Дополнительный модуль отправки почты (SendEmail) — опционально
SendEmail помогает получать уведомления о запуске, завершении, ошибках и ситуациях нехватки места. Это не обязательно, но сильно полезно для поддержки и оповещений.
wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
tar xvzhf sendEmail-v1.56.tar.gzЗапомните путь, куда распаковали sendEmail, он потребуется в файле настроек.
Определение меток Custom Fields в Xen Center
Xen-pocalypse использует Custom Fields для фильтрации виртуальных машин, подлежащих бэкапу. Необходимо создать три текстовых поля: BackupTAG, Parent и Children. Имена полей зашиты в скрипте, поэтому не изменяйте их без правки кода.
- Откройте свойства сервера или любой VM, перейдите в Custom Fields.

- Нажмите Edit Custom Fields -> Add… и создайте поля BackupTAG, Parent, Children (тип текст).

После создания полей они появятся в свойствах VM:

Далее назначьте BackupTAG соответствующим VM в зависимости от расписания.

Пример: BackupTAG = weekly-fri для VM, которые нужно бэкапить по пятницам.
Родитель и потомки
Скрипт поддерживает родительско-потомковые отношения: дочерние VM будут выключены и сохранены перед родителем и запущены только после успешного запуска родителя. Это предотвращает двукратный простой связанных сервисов.
Ограничения:
- Имена VM для такого механизма не должны содержать пробелов.
- Только один родитель на группу.
Заполните поля Parent и Children в свойствах VM:

Важно: если не указать Parent для дочерней VM, порядок запуска может нарушиться.
Метод FILE (альтернатива)
Исторически поддерживается загрузка списка VM из текстового файла. Этот метод менее гибкий и имеет ограничения:
- Имена VM без пробелов и специальных символов.
- Одна VM на строку.
- Нет пустых строк.
Список можно сгенерировать командой на Xen-хосте:
xe vm-list | grep name-label | awk '{ print $4 }' | sortСкопируйте вывод в текстовый файл и используйте его как вход для скрипта, если вы сознательно выбрали этот способ.
Место хранения резервных копий
SR (Storage Repository) доступен под путём /var/run/sr-mount/%UUID% на Xen-хосте. UUID SR можно получить из Xen Center на вкладке General и скопировать.

Примеры действий:
- Создайте SR в Xen Center (New SR), укажите тип CIFS для Windows-шары или нужный вам тип.
- Скопируйте UUID SR.
- В файле настроек замените %UUID% на реальный UUID.

Совет: смонтируйте SR через интерфейс, чтобы не вмешиваться вручную в таблицу монтирования на хосте.
Настройка файла settings
Проект включает шаблон settings. Отредактируйте его и передайте файл как первый аргумент при запуске скрипта.
Основные параметры настроек:
- method: TAGS или FILE
- backup_destination: путь вида /var/run/sr-mount/%UUID%/backups
- sendemail_path: путь к sendEmail, если включено
- email_to/email_from/email_server и т. п.
- compression: yes/no
- check_free_space: threshold в гигабайтах, по умолчанию 10
- debug: 0/1
Пример минимального содержимого settings.cfg (шаблон):
# Метод получения VM: TAGS или FILE
METHOD=TAGS
# Место хранения, замените %UUID%
BACKUP_DEST=/var/run/sr-mount/%UUID%/xen_backups
# SendEmail (опционально)
SENDEMAIL_PATH=/root/sendEmail/sendEmail
EMAIL_TO=ops@example.local
EMAIL_FROM=xen-backup@example.local
EMAIL_SERVER=127.0.0.1
# Компрессия: yes или no
COMPRESSION=no
# Минимум свободного места на диске в ГБ
MIN_FREE_GB=10
# Отладка: 0 выкл, >0 вкл
DEBUG=0Important: не храните конфиденциальные пароли в открытом виде в файле настроек без контроля доступа.
Запуск и планирование
Простой пример запуска:
./Xen-backup.sh settings.cfg weekly-friГде weekly-fri — значение BackupTAG.
Пример cron-задания для запуска в пятницу в 18:01:
01 18 * * fri /root/Xen-pocalypse-master/Xen_Backup.sh /root/Xen-pocalypse-master/settings.cfg weekly-friРекомендуется настроить ssmtp или другой локальный MTA для получения системных сообщений и возможных уведомлений от скрипта.
Логирование и наблюдение
- Скрипт пишет записи в syslog на хосте. Просмотр:
less +F /var/log/messagesИщите ключевую метку Xen-pocalypse.
- Citrix по умолчанию хранит syslog 2 дня на своих серверах. Планируйте внешнюю централизованную запись логов при необходимости аудита.
Быстрый просмотр текущих задач экспорта
Для наблюдения прогресса задач XE используйте:
while [ -e /dev/null ]; do for VM in "$( xe task-list | grep uuid | awk '{print $5}' )" ; do xe task-param-get param-name=progress uuid=$VM; sleep 1; done; doneОстановите мониторинг Ctrl+C.
Отладка
Включение DEBUG в файле настроек включает подробную печать в консоль и обычно отключает реальные экспорты, чтобы не влиять на продакшн. Используйте для тестирования и анализа последовательности шагов.
Методология внедрения (мини-методика)
- Подготовка тестовой среды: создайте тестовый Xen-сервер или используйте тестовую группу VM.
- Установите скрипт и sendEmail в тестовом окружении.
- Создайте Custom Fields и пометьте тестовые VM тегом test-backup.
- Отредактируйте settings.cfg, укажите тестовый SR.
- Запустите скрипт в режиме DEBUG. Проверьте логи и последовательность выключения/экспорта/включения.
- Выполните тестовое восстановление из созданного файла экспорта на изолированном хосте.
- Проведите нагрузочные тесты и замеры длительности резервного копирования для различных VM.
- Переведите в рабочий режим, настройте cron, дублируйте мониторинг в системы наблюдения.
Преимущество методики — постепенное продвижение от теста к продакшну с измерениями и откатами.
SOP / Playbook: шаги для планового резервного копирования
Чек-лист перед запуском бэкапа:
- Проверить доступность SR (смонтирован ли UUID)
- Убедиться, что на целевом SR достаточно места (с учётом MIN_FREE_GB)
- Проверить состояние VM (не в процессе обновления)
- Убедиться, что оповещения настроены (sendEmail/ssmtp)
- Выполнить dry-run при первом запуске
План действий при запуске:
- Запуск скрипта cron.
- Скрипт выбирает VM по BackupTAG или файлу.
- Скрипт проверяет зависимости Parent/Children.
- Скрипт аккуратно выключает дочерние VM (если требуется).
- Скрипт выключает и экспортирует VM по порядку.
- После успешного экспорта запускает VM в порядке Parent сначала.
- Отправляет итоговое уведомление.
Критерии приёмки
- Все VM с указанным BackupTAG были обработаны.
- Для каждой VM создан файл экспорта в целевой директории.
- Проверка целостности файла экспорта прошла успешно (размер, отсутствие ошибок логов).
- Все VM, работавшие до старта, вернулись в рабочее состояние.
Runbook: восстановление и откат
- Восстановление VM из файла: используйте Xen Center или xe команду import: xe vm-import filename=<путькфайлу>
- Если импорт не удался: проверьте логи xe и syslog, проверьте совместимость формата экспорта.
- В случае проблем с SR: смонтируйте SR вручную или подключите другой доступный SR.
- Откат изменений: если автоматический импорт повредил оригинальную VM, запустите восстановление на отдельном хосте и переключите сервисы.
Notes: всегда проверяйте восстановление на изолированном хосте перед удалением старых резервных копий.
Тесты и критерии приёмки
Тест-кейсы:
- TC1: Бэкап одиночной Linux VM размером 20 ГБ. Ожидаем: файл экспорта появляется, VM запущена после завершения.
- TC2: Бэкап группы Parent+Children. Ожидаем: дети выключены, затем parent, затем дети снова запущены после успешного запуска parent.
- TC3: Недостаточно места на SR. Ожидаем: скрипт помечает диск как недостаточный и пропускает VM, отправляет уведомление.
- TC4: Падение сети во время экспорта. Ожидаем: экспорт прерывается, лог содержит ошибку, несостоявшиеся VM не запускаются автоматически.
Критерии приёмки:
- Прохождение TC1-TC3 обязательно.
- TC4 требует проверенного плана восстановления; для принятия — лог ошибок должен быть понятен и воспроизводим.
Роль-ориентированные чек-листы
Администратор Xen:
- Создать Custom Fields BackupTAG, Parent, Children
- Предоставить права на запуск xe скрипта оператору
- Настроить SR и предоставить путь для бекупов
Оператор бэкапов:
- Проверить settings.cfg и права доступа
- Запустить dry-run с DEBUG=1
- Подтвердить успешный экспорт тестовой VM
- Настроить cron и оповещения
SRE / инженер поддержки:
- Настроить сбор и ретеншн логов
- Интегрировать уведомления в систему инцидентов
- Подготовить процедуру восстановления
Решение: когда использовать этот подход и когда нет
Когда подходит:
- Небольшие среды, ограниченный бюджет.
- Где допустимы короткие простои VM для экспорта.
Когда не подходит:
- Требуются снимки памяти или мгновенное восстановление stateful приложений.
- Критические сервисы, где простой недопустим.
Альтернативы:
- Использование платных модулей Citrix с поддержкой live memory snapshots.
- Интеграция с корпоративной системой резервного копирования на уровне гипервизора с агентами внутри VM.
Decision flowchart
flowchart TD
A[Начало: есть список VM?] --> B{Метод выбора}
B -- TAGS --> C[Получить VM по BackupTAG]
B -- FILE --> D[Считать файл со списком VM]
C --> E{Проверка SR и свободного места}
D --> E
E -- хватает места --> F[Проверка Parent/Children]
E -- недостаточно --> G[Отправить уведомление, пропустить VM]
F --> H[Выключить Children]
H --> I[Выключить Parent]
I --> J[Экспортировать VM]
J --> K[Запустить Parent]
K --> L[Запустить Children]
L --> M[Отправить итоговое уведомление]
G --> MСоветы по совместимости и миграции
- При миграции с одной версии Xen на другую тестируйте экспорт/импорт отдельной VM.
- Убедитесь, что целевой хост поддерживает формат XVA/XOX используемый при экспорте.
- Для больших VM или систем баз данных рассмотрите отключение службы внутри гостя перед экспортом для согласованности.
Безопасность и приватность
- Ограничьте доступ к директорий бэкапов и файлу настроек правами Unix (chmod 600/640).
- Шифрование резервных копий можно реализовать отдельным шагом после экспорта, используя gpg или другие инструменты, если политика безопасности требует шифрования данных в покое.
- При использовании общих CIFS-шар контролируйте права на уровне сети и учётных данных.
Частые ошибки и способы их решения
- Ошибка: нет доступа к SR. Решение: проверьте права, смонтирован ли SR, доступен ли UUID.
- Ошибка: экспорт прерывается по таймауту. Решение: проверьте сетевые разрывы, целевой диск и логи xe.
- Ошибка: VM не запускается после экспорта. Решение: проверьте целостность импортируемого файла и логи Xen при импорте.
- Ошибка: дети запускаются раньше родителя. Решение: проверьте корректность поля Parent и отсутствие пробелов в именах VM.
Примеры команд и шаблонов
Cron-шаблон:
# Пример: запуск по пятницам в 18:01
01 18 * * fri /root/Xen-pocalypse-master/Xen_Backup.sh /root/Xen-pocalypse-master/settings.cfg weekly-friКоманда для наблюдения задач (повтор):
while [ -e /dev/null ]; do for VM in "$( xe task-list | grep uuid | awk '{print $5}' )" ; do xe task-param-get param-name=progress uuid=$VM; sleep 1; done; doneМинимальные права на файл настроек:
chown root:root /root/Xen-pocalypse-master/settings.cfg
chmod 600 /root/Xen-pocalypse-master/settings.cfg1-строчный глоссарий
- XE: командная утилита Xen для управления гипервизором.
- SR: Storage Repository, место хранения виртуальных дисков и экспорта.
- BackupTAG: пользовательское поле для пометки VM, подлежащих резервному копированию.
- Parent/Children: связь между VM для упорядоченного выключения и запуска.
Заключение
Xen-pocalypse — практичный и экономичный инструмент для автоматизации резервного копирования VM в средах Citrix Xen, где допустим кратковременный простой. Он использует стандартные возможности XE и Custom Fields, требует минимальной настройки и хорошо подходит небольшим командам, которые хотят решить задачу без покупки дорогостоящих лицензий.
Summary:
- Подготовьте тестовую среду и отработайте процедуру на ней.
- Используйте Custom Fields для гибкого управления графиками бэкапа.
- Настройте оповещения и мониторинг логов.
- Регулярно тестируйте восстановление.
Спасибо за внимание. Желаю удачи при внедрении — после настройки вы получите простую и предсказуемую систему резервного копирования для ваших VM.

Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента