Гид по технологиям

Восстановление Citrix‑Xen ВМ бесплатно с Xen‑Phoenix

• 9 min read • DevOps • Обновлено 23 Nov 2025
Восстановление Xen ВМ бесплатно с Xen‑Phoenix
Восстановление Xen ВМ бесплатно с Xen‑Phoenix

Быстрое содержание

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

Как бесплатно восстановить Citrix-Xen ВМ с помощью Xen-Phoenix (Bash)

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.

Создание нового хранилища New SR в Xen Center

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

Выбор Windows File Sharing CIFS при создании SR

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

Просмотр UUID SR на вкладке General в Xen Center

Теперь можно отредактировать 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. Чтобы его создать:

  1. Откройте свойства сервера или ВМ.
  2. На навигационной панели выберите Custom Fields.
  3. Нажмите Edit Custom Fields → Add…
  4. Создайте тип Text с именем Phoenix_keeper (именно такое имя; в коде оно зашито жестко).
  5. В поле Phoenix_keeper можно ввести любую пометку — это пометит ВМ как исключённую из массового удаления.

Custom Fields в свойствах сервера ВМ

Добавление нового пользовательского поля Add

Список пользовательских полей после создания Phoenix_keeper

Поле Phoenix_keeper заполнено для исключения ВМ

Примечание: если вы переименуете поле в настройках, не забудьте синхронизировать изменения с кодом скрипта.

Логирование и отладка

Все сообщения скрипта логируются в системный syslog и доступны в /var/log/messages. Ищите строку с ключевым словом Xen‑Phoenix.

less +F /var/log/messages

Заметка: в стандартной поставке Citrix retention syslog равен двум дням — учитывайте это при расследовании инцидентов.

Режим отладки

В settings есть флаг DEBUG. При включении скрипт выдаёт подробный вывод. Часто включены дополнительные флаги, которые блокируют фактический импорт для безопасного тестирования. Внимательно читайте комментарии в шаблоне settings.

Сценарии ошибок и рекомендации по устранению

Ниже — сборник распространённых проблем и шаги проверки.

  1. Не видны файлы экспорта

    • Проверьте, правильно ли указан путь /var/run/sr-mount/%UUID%.
    • Убедитесь, что SR монтирован и доступен на момент выполнения.
    • Проверьте права на файлы и директории.
  2. XE возвращает ошибки при импорте

    • Проверьте совместимость формата экспорта с версией Xen.
    • Убедитесь, что в SR достаточно места.
    • Проверьте логи syslog и вывод debug.
  3. Heartbeat не появляется

    • Убедитесь, что в гостевой ОС установлены и активированы Xen guest tools.
    • Проверьте сетевую конфигурацию и VLAN, если heartbeat зависит от сети.
    • Увеличьте таймаут проверки для «тяжёлых» ОС.
  4. Email не приходит

    • Проверьте конфигурацию SendEmail и доступ к SMTP.
    • Запустите sendEmail вручную, чтобы проверить работу.

Практические рекомендации

  • Тестируйте скрипт в изолированной среде перед использованием в production.
  • Используйте отдельный DR‑хост, чтобы server_prep можно было оставить включённым.
  • Автоматизируйте уведомления — это первый сигнал о скрытых проблемах.
  • Храните настройки с минимальными правами доступа.

Дополнительная документация и контрольные списки

Ниже приведены подготовленные материалы, которые помогут упростить внедрение и эксплуатацию Xen‑Phoenix в вашей инфраструктуре.

Короткая методология в 6 шагов

  1. Подготовка: создайте SR и убедитесь, что экспорты доступны.
  2. Настройка: отредактируйте settings и укажите пути, email, флаги.
  3. Тестовый запуск: выполните скрипт вручную с режимом debug.
  4. Валидация: проверьте логи и heartbeat каждой ВМ.
  5. Планирование: добавьте задачу в crontab с уведомлениями.
  6. Мониторинг: проверяйте отчёты и исправляйте ошибки.

Ролевые контрольные списки

Администратор инфраструктуры:

  • Создал SR и скопировал UUID
  • Разместил скрипт и settings на хосте
  • Настроил права доступа на settings
  • Протестировал запуск в debug
  • Добавил cron‑задачу

DR‑ответственный:

  • Утвердил список ВМ для тестирования
  • Согласовал политику удаления ВМ (server_prep)
  • Определил адреса для уведомлений
  • Проверил процедуру отката в случае ошибок

Оператор поддержки:

  • Знает, где смотреть логи (/var/log/messages)
  • Понимает, как включить debug и интерпретировать вывод
  • Имеет доступ к SendEmail для проверки SMTP

SOP для запуска проверки DR (шаблон)

  1. Предварительная подготовка: уведомить команду, проверить SR и место на диске.
  2. Ручной запуск в debug: ./Xen-phoenix.sh settings.cfg
  3. Подтверждение корректности heartbeat для каждой ВМ.
  4. Просмотр логов и устранение найденных проблем.
  5. Запланировать регулярные запуски и обновлять расписание в crontab.

Критерии приёмки

  • Все целевые ВМ успешно импортированы.
  • Для каждой ВМ обнаружен heartbeat в течение допустимого таймаута или явное объяснение его отсутствия.
  • Все ВМ выключены после валидации (если это требуется политикой).
  • Отчёт о выполнении отправлен по почте или сохранён в логах.

Тест‑кейсы и критерии успеха

  1. Тест: импорт одной ВМ без server_prep
    • Ожидаемый результат: ВМ импортирована, heartbeat найден, ВМ выключена.
  2. Тест: массовый импорт 10 ВМ с server_prep
    • Критерии: все существующие ВМ удалены, 10 ВМ импортированы, heartbeat получен для каждой.
  3. Тест: исключение через 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‑проверок и быстрых валидаций экспортов. Планируйте, тестируйте на изолированных системах и настраивайте уведомления — это снизит риск неожиданных сбоев.


Просто подумай обо всех нищете, ненависти и лжи, И представь разрушение всего, что тебе дорого. Медленно из пепла феникс восстанет…

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро