Процесс миграции рассмотрим на примере виртуальных машин с ОС Windows на базе гипервизора VMware ESXI (для других систем виртуализации процедура практически не отличается ничем).

Описанный метод может быть реализован при следующих условиях:

1. Операционные системы:

  • Windows Server 2003
  • Windows Server 2008
  • Windows Server 2008 R2
  • Windows Server 2012
  • Windows Server 2012 R2
  • Windows 7
  • Windows 8
  • Windows 8.1
  • Windows XP

2. Наличие привилегии администратора ВМ

Пошаговое руководство

Для начала в операционной системе Windows нам необходимо установить virtio драйвера (iso-образ можно скачать по ссылке). Затем необходимо примонтировать загруженный образ к нашей ВМ:

10

Затем переходим в диспетчер устройств ОС Windows и, кликнув правой кнопкой мыши по корневому устройству, выбираем Add legacy hardware:

1

Далее выбираем Install the hardware that I manually select…:

2

Выбираем Have Disk… и указываем источник с драйверами virtio (ранее смонтированный образ):

4

Переходим в каталог Balloon и далее, в зависимости от вашей ОС, в подкаталог, где выбираем INF-файл драйвера. В процессе установки может появиться диалоговое окно с предупреждением, вы должны согласиться (отметить: Always trust software…) и нажать Install:

5

Аналогичным образом установите драйвера из каталогов NetKVM, qemupciserial, viorng, vioscsi, vioserial и viostor. Если в процесе установки драйвера qemupciserial возникнет ошибка, просто проигнорируйте ее.

Последним этапом является установка QEMU guest agent. В каталоге guest-agent  диска с драйверами запустите  установщик в соответствии с архитектурой вашей системы (х64 или х32):

6

 

2.   Добавление информации о Virtio-драйверах в системный реестр и удаление VMware Tools

Скопируйте текст:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_1af4&dev_1001&subsys_00000000]
«Service»=»viostor»
«ClassGUID»=»{4D36E97B-E325-11CE-BFC1-08002BE10318}»

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_1af4&dev_1001&subsys_00020000]
«Service»=»viostor»
«ClassGUID»=»{4D36E97B-E325-11CE-BFC1-08002BE10318}»

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_1af4&dev_1001&subsys_00021af4]
«Service»=»viostor»
«ClassGUID»=»{4D36E97B-E325-11CE-BFC1-08002BE10318}»

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\viostor]
«Type»=dword:00000001
«Start»=dword:00000000
«Group»=»SCSI miniport»
«ErrorControl»=dword:00000001
«ImagePath»=»system32\\drivers\\viostor.sys»
«Tag»=dword:00000021

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\viostor\Parameters]
«BusType»=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\viostor\Parameters\MaxTransferSize]
«ParamDesc»=»Maximum Transfer Size»
«type»=»enum»
«default»=»0»

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\viostor\Parameters\MaxTransferSize\enum]
«0»=»64  KB»
«1»=»128 KB»
«2»=»256 KB»

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\viostor\Parameters\PnpInterface]
«5»=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\viostor\Enum]
«0»=»PCI\\VEN_1AF4&DEV_1001&SUBSYS_00021AF4&REV_00\\3&13c0b0c5&0&20″
«Count»=dword:00000001
«NextInstance»=dword:00000001

И сохраните в файл с именем virtio.reg (важно чтобы расширение файла было .reg).

Далее в меню «Пуск»→ «Выполнить» наберите команду regedit и нажмите Ок, после чего в меню File укажите для импорта сохраненный ранее файл virtio.reg:

7

Следующим этапом необходимо удалить из ОС приложение VMware Tools. Если в вашей системе компонент отсутствует, просто пропустите этот шаг.

Перейдите по пути «Пуск» → «Панель управления» → «Программы и компоненты», выберите из списка VMware Tools и нажмите «Удалить».

9

 

3.    Загрузка диска в облако и создание инстанса

Последним этапом является перенос образа диска виртуальной машины в облако и создание нового инстанса на базе перенесенного диска. Для начала одним из доступных вам способов скопируйте образ виртуального диска из гипервизора во временный каталог сервера cinder, например: /tmp/migrate_instance/. Далее необходимо создать в облаке новый пустой загрузочный диск в разделе «Вычислительные ресурсы» → «Диски»:

 

Добавляем новый инстанс, используя ранее созданный диск new_volume, – для этого из выпадающего списка напротив диска выбираем пункт «Запустить как инстанс»:

Указываем имя, тип и сеть для нового инстанса (остальные параметры можно оставить по умолчанию) и жмем «Запустить как инстанс». По завершении создания виртуальной машины ее нужно выключить.

Последнее, что нам предстоит сделать – подменить образ виртуального диска, созданного инстанса, загруженным ранее образом диска виртуальной машины, которую мы мигрируем в облако.

Вначаленам необходимо узнать ID текущего диска. Для этого нужно кликнуть по названию диска new_volume. В открывшемся окне свойств мы увидим нужную информацию:

В нашем случае ID=c7ada098-4dba-41a5-a0f0-df76905f031a.

Далее по SSH идем на сервер cinder. Командой: rbd -p rbd-ssd list

На данный момент доступно два типа хранилищ rbd-sata и rbd-ssd.

Выводим список виртуальных дисков, находим нужный нам диск (его название в нашем случае – volume-ecd7b123-da29-48fe-93a6-1e02fc0298b8) и удаляем его из хранилища rbd-ssd командой:

rbd -p rbd-ssd rm volume-ecd7b123-da29-48fe-93a6-1e02fc0298b8

Далее конвертируем в формат raw и копируем в хранилище новый диск, и в качестве его ID указываем номер удаленного.