V2V миграция в RHEV
В версии 2.2 в RHEV появилась возможность миграции виртуальных машин из гипервизоров Xen, KVM и VMware. Здесь я разберу ключевые моменты этого вопроса подробней.
Наивно может показаться, что в этом нет ничего сложного: возникает только задача конвертации образа виртуальных машин (и то не во всех случаях). Если рассматривать вопрос немного подробнее, то появляется много важных "мелочей" которые играют принципиальную роль.
Во-первых, управление хранением образов виртуальных машин осуществляется только из управляющей консоли RHEV-M, и возможности добавить файл образа напрямую из веб интерфейса нет. Кроме того, при миграции виртуальных машин может потребоваться изменение конфигурационных файлов и драйверов для используемых устройств.
Разумеется, в случае миграции множества машин требуется решение, которое позволяет автоматически решать вышеуказанные проблемы. Для миграции гостевых систем с установленным RHEL в RHEV рекомендуется использовать утилиту virt-v2v. Данная утилита прозводит автоматическую настройку гостевых систем для корректной работы под управлением нового гипервизора.
Согласно документации virt-v2v выполняет несколько модификаций образа мигрируемой системы:
- Модификация ядра. Может потребоваться для миграции паравиртуализованных систем
- Модификация initrd. Требуется для загрузки c virtio устройств
- Установка драйверов virtio устройств.
- Модификация fstab.
- Установка меток SELinux для измннённых файлов.
- Настройка 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: там описан один из вариантов подобной автоматизации.)