Восстановление Citrix‑Xen ВМ бесплатно с Xen‑Phoenix
Быстрое содержание
- Обзор идеи и сценариев использования
- Получение скрипта и место экспорта
- Настройка файла settings
- Запуск и аргументы (Chevrons и регулярные выражения)
- Планирование через Cron
- Опциональная отправка почты через SendEmail
- Исключение ВМ через тэг Phoenix_keeper
- Отладка и логирование
- Руководство действий, контрольные списки и тесты

Photo Credit: Ryan McCurdy via Compfight cc
Обзор
Ситуация: нужно массово восстановить несколько ВМ для DR‑теста или регулярной «освежающей» проверки бэкапов. В Xen Center можно импортировать файлы через GUI, но это ручной и трудоёмкий процесс. Xen‑Phoenix — это автомат, использующий CLI XE для выполнения тех же действий, что и «правый клик» в Xen Center. Скрипт запускают по Cron для расписания.
Типичный рабочий поток:
- Опционально удалить все (или почти все) ВМ на DR‑сервере.
- Импортировать ВМ из файлов экспорта в указанном месте.
- Активировать ВМ по очереди и ждать heartbeat гостевых инструментов.
- После обнаружения heartbeat выключить ВМ или остановить проверку по таймауту.
Важно: поведение «удалить все» можно отключить или настроить исключения.
Кому подойдёт этот подход
- Администраторы, которым нужно регулярно проверять восстановимость ВМ.
- Небольшие команды с ограниченным бюджетом, до принятия решения о платном решении для резервного копирования.
- Сценарии тестирования DR и валидации экспортных образов.
Преимущества:
- Бесплатно и автономно (работает прямо на Xen‑хосте).
- Позволяет автоматизировать и регулярно проверять бэкапы.
- Гибкие фильтры по именам экспортов (регулярные выражения).
Ограничения:
- Это инструмент уровня инфраструктуры, не заменяет полноценное решение для резервного копирования с инкрементами, дедупликацией и репликацией.
- Требует доступа к SR и понимания XE CLI и Cron.
Получение скрипта
Скачать Xen‑Phoenix можно с GitHub. Если вы не пользуетесь git, скачайте zip и распакуйте на самом Xen‑сервере, чтобы сохранить права на исполнение.
wget https://github.com/aviadra/Xen-phoenix/archive/master.zip
unzip masterСовет: лучше клонировать репозиторий через git, чтобы легко получать обновления.
Место экспорта (exports location)
Нам нужно указать, откуда брать файлы экспортов ВМ. В Xen Storage Repositories (SR) монтируются внутри хоста по пути /var/run/sr-mount/%UUID%, где %UUID% — уникальный идентификатор SR. UUID можно узнать в Xen Center.
Поэтому практичный подход: создать SR в Xen Center, смонтировать его (через мастер «Next→Next→Finish»), и затем использовать этот путь в файле настроек скрипта. Это избавляет от ручного монтирования по командной строке.
Для создания нового SR: правый клик по имени сервера → New SR.

Если цель — Windows‑шар, выберите Windows File Sharing (CIFS):

После создания SR откройте его General и скопируйте UUID.

Теперь можно отредактировать settings.
Настройка файла Settings
В репозитории есть шаблон settings. Этот файл передаётся скрипту как первый аргумент и содержит все параметры выполнения.
Ключевые опции в settings:
- source_export_location — путь к директории с экспортами (обычно /var/run/sr-mount/%UUID%). Замените %UUID% на скопированный идентификатор.
- sendemail_path — путь к исполняемому SendEmail, если вы хотите уведомления по почте.
- verifier — включает пост‑рестор‑верификацию (поиск heartbeat). Рекомендуется включать.
- server_prep — флаг удаления всех ВМ перед импортом. По умолчанию включён (предполагается выделенный DR‑сервер). Можно отключить или настроить исключения.
- email settings — адрес получателя, отправителя, SMTP‑сервер и т. п.
- debugging — 0 по умолчанию; при включении скрипт выводит больше отладочной информации и может отключить реальные изменения (см. комментарии в шаблоне).
Советы по безопасности: храните файл settings с ограниченными правами доступа, если в нём есть чувствительные данные (SMTP, пароли).
Пример фрагмента настроек (иллюстрация)
# settings.cfg — пример полей
SOURCE_DIR=/var/run/sr-mount/12345678-90ab-cdef-1234-567890abcdef
SENDMAIL_PATH=/opt/sendemail/sendEmail
VERIFIER=1
SERVER_PREP=1
EMAIL_TO=dr-team@example.com
EMAIL_FROM=xen-phoenix@example.com
DEBUG=0Не вносите реальные секреты в примеры, а используйте безопасные хранилища для паролей.
Запуск и аргументы
Скрипт принимает первым аргументом файл settings, а остальные аргументы используются как «chevrons» — строки или регулярные выражения для поиска в имени файла экспорта. Пример простого запуска:
./Xen-phoenix.sh settings.cfg DevToolsЭто импортирует все файлы в папке экспорта, которые содержат строку DevTools.
Пример с регулярными выражениями и нечувствительностью к регистру:
./Xen-phoenix.sh settings.cfg [Aa][Dd] [Bb][iI] [Dd]ev[Tt]oolsВ этом примере будут найдены файлы, где встречаются комбинации, соответствующие AD, BI, DevTools в любом регистре.
Совет: протестируйте выражения локально перед плановым выполнением, например, с помощью grep.
Планирование через Cron
Для регулярных проверок используйте cron. Откройте crontab:
crontab -eПример задания на воскресенье в 01:31:
31 01 * * sun /root/Xen-phoenix-master/Xen-phoenix.sh /root/Xen-phoenix-master/settings.cfg [Aa][Dd] DB [Bb][iI] [Dd]ev[Tt]oolsУбедитесь, что пути к скрипту и settings корректны. Рекомендуется в скрипте логировать время старта и завершения, а также результат каждого шага.
Важно: cron запускает задачи в минимальной среде — укажите абсолютные пути и проверьте переменные окружения.
Получение SendEmail (опционально)
SendEmail — лёгкая Perl‑утилита для отправки писем из командной строки. Если вы хотите уведомления о старте, успешном завершении и ошибках, установите её на Xen‑хост.
wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
tar xvzhf sendEmail-v1.56.tar.gzЗапомните путь, куда вы распаковали sendEmail, и пропишите его в settings.
Определение тега Delete Exception (исключение удаления)
Xen‑Phoenix поддерживает исключение ВМ из системного удаления через пользовательское поле Phoenix_keeper. Чтобы его создать:
- Откройте свойства сервера или ВМ.
- На навигационной панели выберите Custom Fields.
- Нажмите Edit Custom Fields → Add…
- Создайте тип Text с именем Phoenix_keeper (именно такое имя; в коде оно зашито жестко).
- В поле Phoenix_keeper можно ввести любую пометку — это пометит ВМ как исключённую из массового удаления.




Примечание: если вы переименуете поле в настройках, не забудьте синхронизировать изменения с кодом скрипта.
Логирование и отладка
Все сообщения скрипта логируются в системный syslog и доступны в /var/log/messages. Ищите строку с ключевым словом Xen‑Phoenix.
less +F /var/log/messagesЗаметка: в стандартной поставке Citrix retention syslog равен двум дням — учитывайте это при расследовании инцидентов.
Режим отладки
В settings есть флаг DEBUG. При включении скрипт выдаёт подробный вывод. Часто включены дополнительные флаги, которые блокируют фактический импорт для безопасного тестирования. Внимательно читайте комментарии в шаблоне settings.
Сценарии ошибок и рекомендации по устранению
Ниже — сборник распространённых проблем и шаги проверки.
Не видны файлы экспорта
- Проверьте, правильно ли указан путь /var/run/sr-mount/%UUID%.
- Убедитесь, что SR монтирован и доступен на момент выполнения.
- Проверьте права на файлы и директории.
XE возвращает ошибки при импорте
- Проверьте совместимость формата экспорта с версией Xen.
- Убедитесь, что в SR достаточно места.
- Проверьте логи syslog и вывод debug.
Heartbeat не появляется
- Убедитесь, что в гостевой ОС установлены и активированы Xen guest tools.
- Проверьте сетевую конфигурацию и VLAN, если heartbeat зависит от сети.
- Увеличьте таймаут проверки для «тяжёлых» ОС.
Email не приходит
- Проверьте конфигурацию SendEmail и доступ к SMTP.
- Запустите sendEmail вручную, чтобы проверить работу.
Практические рекомендации
- Тестируйте скрипт в изолированной среде перед использованием в production.
- Используйте отдельный DR‑хост, чтобы server_prep можно было оставить включённым.
- Автоматизируйте уведомления — это первый сигнал о скрытых проблемах.
- Храните настройки с минимальными правами доступа.
Дополнительная документация и контрольные списки
Ниже приведены подготовленные материалы, которые помогут упростить внедрение и эксплуатацию Xen‑Phoenix в вашей инфраструктуре.
Короткая методология в 6 шагов
- Подготовка: создайте SR и убедитесь, что экспорты доступны.
- Настройка: отредактируйте settings и укажите пути, email, флаги.
- Тестовый запуск: выполните скрипт вручную с режимом debug.
- Валидация: проверьте логи и heartbeat каждой ВМ.
- Планирование: добавьте задачу в crontab с уведомлениями.
- Мониторинг: проверяйте отчёты и исправляйте ошибки.
Ролевые контрольные списки
Администратор инфраструктуры:
- Создал SR и скопировал UUID
- Разместил скрипт и settings на хосте
- Настроил права доступа на settings
- Протестировал запуск в debug
- Добавил cron‑задачу
DR‑ответственный:
- Утвердил список ВМ для тестирования
- Согласовал политику удаления ВМ (server_prep)
- Определил адреса для уведомлений
- Проверил процедуру отката в случае ошибок
Оператор поддержки:
- Знает, где смотреть логи (/var/log/messages)
- Понимает, как включить debug и интерпретировать вывод
- Имеет доступ к SendEmail для проверки SMTP
SOP для запуска проверки DR (шаблон)
- Предварительная подготовка: уведомить команду, проверить SR и место на диске.
- Ручной запуск в debug: ./Xen-phoenix.sh settings.cfg
- Подтверждение корректности heartbeat для каждой ВМ.
- Просмотр логов и устранение найденных проблем.
- Запланировать регулярные запуски и обновлять расписание в crontab.
Критерии приёмки
- Все целевые ВМ успешно импортированы.
- Для каждой ВМ обнаружен heartbeat в течение допустимого таймаута или явное объяснение его отсутствия.
- Все ВМ выключены после валидации (если это требуется политикой).
- Отчёт о выполнении отправлен по почте или сохранён в логах.
Тест‑кейсы и критерии успеха
- Тест: импорт одной ВМ без server_prep
- Ожидаемый результат: ВМ импортирована, heartbeat найден, ВМ выключена.
- Тест: массовый импорт 10 ВМ с server_prep
- Критерии: все существующие ВМ удалены, 10 ВМ импортированы, heartbeat получен для каждой.
- Тест: исключение через Phoenix_keeper
- Критерии: ВМ с полем Phoenix_keeper не удаляется при server_prep.
Шаблон уведомления по почте
Тема: Xen‑Phoenix — отчёт восстановления за <дата>
Тело:
- Время старта: <время>
- Время завершения: <время>
- Всего импортов:
- Успешно проверено:
- Ошибки/предупреждения: <описание>
Альтернативы и когда этот метод не подходит
Альтернативы:
- Коммерческие решения для резервного копирования и восстановления с поддержкой инкрементов, дедупликации, репликации и централизованного управления.
- Ручной импорт через Xen Center для единичных срочных восстановлений.
Когда не подходит:
- Если ваша бизнес‑нужда требует RTO/RPO уровня коммерческих продуктов.
- Если инфраструктура распределена и хранение экспортов должно быть централизованно реплицировано.
Ментальные модели и эвристики
- «Импорт → валидация → выключить» — базовый цикл безопасной проверки восстановления.
- Разделяйте окружения: production, test, DR — и не смешивайте их при автоматическом удалении.
- Всегда начните с debug‑прогона на одном образце перед масштабным запуском.
Диаграмма принятия решения
flowchart TD
A[Есть экспортные образы] --> B{SR смонтирован и доступен?}
B -- да --> C[Отредактировать settings]
B -- нет --> D[Создать SR и смонтировать]
C --> E{Нужен массовый wipe?}
E -- да --> F[Проверить Phoenix_keeper исключения]
E -- нет --> G[Отключить server_prep]
F --> H[Запустить тест в debug]
G --> H
H --> I{Heartbeat найден?}
I -- да --> J[Выключить ВМ, отправить отчет]
I -- нет --> K[Увеличить таймаут/проверить guest tools]
K --> L[Ручная проверка и логирование]Глоссарий в одну строку
- XE: Командная строка Xen для управления гипервизором и ВМ.
- SR: Storage Repository — хранилище дисков Xen.
- Heartbeat: сигнал от гостевых инструментов, подтверждающий, что ОС запущена.
- Phoenix_keeper: пользовательское поле для исключения ВМ из массового удаления.
Пожелания по безопасности и соответствию
- Ограничьте доступ к скрипту и settings через права файловой системы.
- Не храните пароли в открытом виде; используйте защищённые хранилища или прокси SMTP.
- Включите аудит действий при массовых удалениях.
Заключение
Xen‑Phoenix — полезный инструмент для автоматизации тестов восстановления виртуальных машин в средах Citrix‑Xen, где нет коммерческой подсистемы защиты ВМ. Он особенно пригодится для регулярных DR‑проверок и быстрых валидаций экспортов. Планируйте, тестируйте на изолированных системах и настраивайте уведомления — это снизит риск неожиданных сбоев.
Просто подумай обо всех нищете, ненависти и лжи, И представь разрушение всего, что тебе дорого. Медленно из пепла феникс восстанет…
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента