V2V миграция в RHEV

В версии 2.2 в RHEV появилась возможность миграции виртуальных машин из гипервизоров Xen, KVM и VMware. Здесь я разберу ключевые моменты этого вопроса подробней. 

Наивно может показаться, что в этом нет ничего сложного: возникает только задача конвертации образа виртуальных машин (и то не во всех случаях). Если рассматривать вопрос немного подробнее, то появляется много важных "мелочей" которые играют принципиальную роль.

Во-первых, управление хранением образов виртуальных машин осуществляется только из управляющей консоли RHEV-M, и возможности добавить файл образа напрямую из веб интерфейса нет. Кроме того, при миграции виртуальных машин может потребоваться изменение конфигурационных файлов и драйверов для используемых устройств.

Разумеется, в случае миграции множества машин требуется решение, которое позволяет автоматически решать вышеуказанные проблемы. Для миграции гостевых систем с установленным RHEL в RHEV рекомендуется использовать утилиту virt-v2v. Данная утилита прозводит автоматическую настройку гостевых систем для корректной работы под управлением нового гипервизора.

Согласно документации virt-v2v выполняет несколько модификаций образа мигрируемой системы:

  1. Модификация ядра. Может потребоваться для миграции паравиртуализованных систем
  2. Модификация initrd. Требуется для загрузки c virtio устройств
  3. Установка драйверов virtio устройств.
  4. Модификация fstab.
  5. Установка меток SELinux для измннённых файлов.
  6. Настройка X сервера (при его наличии)

Итак, пора переходить к делу.

Что имеется: RHEL c установленым гипервизором Xen. На нём работают две гостевые системы: RHEL и WindowsXP.  Кроме того имеется работающая система виртуализации RHEV.

Что хочется получить: Перенести виртуальный машины на RHEV.

Сначала необходимо настроить в RHEV NFS export domain. Для v2v миграции в настоящий момент можно использовать только NFS, но это ограничение выглядит не принципиальным. Настройка export domain стандартна и подробно описана в руководстве. Необходимо лишь создать NFS, и задать владельца и группу:

chown 36:36 /nfs/v2v

После этого export domain можно добавить на вкладке Storage в RHEV-M. Для миграции мы использовали отдельную машину с RHEL 5.5 на борту и установленной утилитой virt-v2v. Машина должна иметь доступ на запись в NFS, который подключен как export domain. Кроме того для успешной миграции необходимо разрешить подключаться удаленно к libvirt, который запущен на Xen хосте.

Перед миграцией полезно немного отредактировать файл /etc/virt-v2v.conf. Настройки в этом файле отвечают за модификацию сетевых интерфейсов и образов операционных систем при миграции. Например по умолчанию в RHEV на хостах есть сетевой мост rhevm к которому подсоединены интерфейсы, связанные с виртуальными машинами. Соответвенно при миграции имена мостов должны быть изменены на rhevm. В файле конфигурации  прописаны несколько вариантов для замены сетевых интерфейсов, которые рекомендуется раскомментировать. Также в конфигурационном файле описываются и другие модификации, которые производятся с машиной при миграции, но в нашем случае тонкая настройка не потребовалась.

Миграция выполняется одной командой:

virt-v2v -o rhev -osd nfs.example.com:/export RHEL_small

 Немного о параметрах:

-ic URI Имя (URI) libvirt домена. Мы использовали подключение по ssh: ssh:///root@xen_host
-osd <hostname>:<path> Имя NFS хоста и путь к папке.
-o <method> Возможны два варианта rhev и libvirt

У virt-v2v есть еще несколько параметров, которые описаны в руководстве по RHEV, но полностью повторять мануал бессмысленно.

Если миграция прошла успешно, то в export domain появляется новая виртуальная машина.

 

Теперь машину можно экспортировать в RHEV.

В результате новая машина появляется в общем списке.

Миграция Windows машин проходит аналогично. virt-v2v автоматически настраивает машину перед миграцией (установка драйверов для корректного запуска). Но в отличии от Linux систем при первом запуске требуется подключить к машине ISO образ с гостевыми дополнениями. Необходимые драйвера должны установиться автоматически при запуске системы. В результате получаем полностью работающую  вируальную машину.

В случае необходимости миграции множества машин процесс можно автоматизировать использую RHEVapi, но это тема для отдельной статьи. (Интересующиеся могут обратиться к руководству по RHEV: там описан один из вариантов подобной автоматизации.)

2286