В поисках оптимального решения виртуализации в условиях ограниченного бюджета были перепробованы различные системы от VirtualBox до Hyper-V. Соответственно, не всегда конвертация машин из одной системы виртуализации в другую происходит просто. Основная сложность при такой миграции состоит в переконвертации жестких дисков, т.е. по сути конвертация VMDK в VHDX. Ниже описан собственный опыт по переезду виртуальной машинки с установленной ОС Windows 2008R2, которая жила на ферме с гипервизором ESXi на другую ферму под управлением Hyper-V.
Процедура миграции ВМ с ESXi на Hyper-V
Конвертация с использованием Microsoft Virtual Machine Converter (MVMC).
Попытка прямой конвертации с использованием Microsoft Virtual Machine Converter (MVMC) не прошла, после начала конвертации вылетела ошибка, связанная с ограничением на используемую редакцию ESXi.
Конвертация с использованием StarWind V2V Image Converter (только сами диски)
Не прошла, ругательство не помню. Требует много места и шустрых дисков.
Конвертация с использованием 5nine EasyConverter не отражена в документации — то ли руки не дошли, то ли не сработала и не записано. А может просто был найден рабочий вариант, см. ниже.
Конвертация с использованием PowerShell (только диск, затем создание новой машины на Hyper-V) — рабочий вариант
В качестве инструкции использовал информацию с сайта rmlinar.net (http://rmlinar.net/blog/2014/07/29/convert-single-vmdk-to-vhdx-with-microsoft-virtual-machine-converter-2-0-mvmc/)
Проводится на машине с установленным Microsoft Virtual Machine Converter (MVMC).
Запуск PowerShell от администратора
Проверка на присутствие необходимых для конвертации командлетов:
PS C:\WINDOWS\system32> get-command -Module mvmccmdlet
Вывод должен показать нечто вроде:
PS C:\WINDOWS\system32> get-command -Module mvmccmdlet
CommandType Name Version Source
———— —- ——- ——
Cmdlet ConvertTo-MvmcAzureVirtualHardDisk 2.0 MvmcCmdlet
Cmdlet ConvertTo-MvmcP2V 2.0 MvmcCmdlet
Cmdlet ConvertTo-MvmcP2VVirtualHardDisk 2.0 MvmcCmdlet
Cmdlet ConvertTo-MvmcVirtualHardDisk 2.0 MvmcCmdlet
Cmdlet ConvertTo-MvmcVirtualHardDiskOvf 2.0 MvmcCmdlet
Cmdlet Disable-MvmcSourceVMTools 2.0 MvmcCmdlet
Cmdlet Get-MvmcHyperVHostInfo 2.0 MvmcCmdlet
Cmdlet Get-MvmcP2VSourceSystemInformation 2.0 MvmcCmdlet
Cmdlet Get-MvmcSourceVirtualMachine 2.0 MvmcCmdlet
Cmdlet New-MvmcHyperVHostConnection 2.0 MvmcCmdlet
Cmdlet New-MvmcP2VRequestParam 2.0 MvmcCmdlet
Cmdlet New-MvmcP2VSourceConnection 2.0 MvmcCmdlet
Cmdlet New-MvmcSourceConnection 2.0 MvmcCmdlet
Cmdlet New-MvmcSourceVirtualMachineSnapshot 2.0 MvmcCmdlet
Cmdlet New-MvmcVirtualMachineFromOvf 2.0 MvmcCmdlet
Cmdlet Restore-MvmcSourceVirtualMachineSnapshot 2.0 MvmcCmdlet
Cmdlet Stop-MvmcSourceVirtualMachine 2.0 MvmcCmdlet
Cmdlet Uninstall-MvmcSourceVMTools 2.0 MvmcCmdlet
Если вывод пустой, выполняем импорт модулей:
PS C:\WINDOWS\system32> Import-Module «C:\Program Files\Microsoft Virtual Machine Converter\MvmcCmdlet.psd1»
И проверяем, что необходимые командлеты появились
PS C:\WINDOWS\system32> get-command -Module mvmccmdlet
Собственно конвертация дисков проводится командой, где srv-dc1-1.vmdk – файл с описанием диска, реальный контент во втором файле — srv-dc1-1-flat.vmdk :
ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath «e:\VM\VMware\srv-dc1-1.vmdk” -DestinationLiteralPath “E:\VM\Hyper-V\Disks” -VhdType DynamicHardDisk -VhdFormat Vhdx
Еще один пример – конвертация тестовой машины с 1С (ws-test-1c):
Windows PowerShell
(C) Корпорация Майкрософт (Microsoft Corporation), 2015. Все права защищены.
PS C:\WINDOWS\system32> get-command -Module mvmccmdlet
PS C:\WINDOWS\system32> Import-Module «C:\Program Files\Microsoft Virtual Machine Converter\MvmcCmdlet.psd1»
PS C:\WINDOWS\system32> get-command -Module mvmccmdlet
CommandType Name Version Source
———— —- ——- ——
Cmdlet ConvertTo-MvmcAzureVirtualHardDisk 2.0 MvmcCmdlet
Cmdlet ConvertTo-MvmcP2V 2.0 MvmcCmdlet
Cmdlet ConvertTo-MvmcP2VVirtualHardDisk 2.0 MvmcCmdlet
Cmdlet ConvertTo-MvmcVirtualHardDisk 2.0 MvmcCmdlet
Cmdlet ConvertTo-MvmcVirtualHardDiskOvf 2.0 MvmcCmdlet
Cmdlet Disable-MvmcSourceVMTools 2.0 MvmcCmdlet
Cmdlet Get-MvmcHyperVHostInfo 2.0 MvmcCmdlet
Cmdlet Get-MvmcP2VSourceSystemInformation 2.0 MvmcCmdlet
Cmdlet Get-MvmcSourceVirtualMachine 2.0 MvmcCmdlet
Cmdlet New-MvmcHyperVHostConnection 2.0 MvmcCmdlet
Cmdlet New-MvmcP2VRequestParam 2.0 MvmcCmdlet
Cmdlet New-MvmcP2VSourceConnection 2.0 MvmcCmdlet
Cmdlet New-MvmcSourceConnection 2.0 MvmcCmdlet
Cmdlet New-MvmcSourceVirtualMachineSnapshot 2.0 MvmcCmdlet
Cmdlet New-MvmcVirtualMachineFromOvf 2.0 MvmcCmdlet
Cmdlet Restore-MvmcSourceVirtualMachineSnapshot 2.0 MvmcCmdlet
Cmdlet Stop-MvmcSourceVirtualMachine 2.0 MvmcCmdlet
Cmdlet Uninstall-MvmcSourceVMTools 2.0 MvmcCmdlet
PS C:\WINDOWS\system32> ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath «E:\VM\VMware\ws-test-1c-2016-04-04_10-14-15\ws-test-1c.vmdk» -DestinationLiteralPath “E:\VM\Hyper-V\Disks” -VhdType DynamicHardDisk -VhdFormat Vhdx
Destination Source
———— ——
E:\VM\Hyper-V\Disks\ws-test-1c.vhdx E:\VM\VMware\ws-test-1c-2016-04-04_10-14-15\ws-test-1c.vmdk
После конвертации, которая заняла около 40 мин, (исходный диск – 60 ГБ, формат VMDK) получаем новый диск для новой машины в Hyper-V (формат VHDX, объем 20ГБ – по реально занятому месту). Далее на Hyper-V ферме создаем новую машину, подключаем полученный диск, выставляем правильный MAC-адрес для сетевухи (у нас доступ в Интернет по MAC-адресам) и продолжаем работать уже на другой системе виртуализации.
После запуска MS Windows Server 2008 в виртуальной среде Hyper-V в диспетчере устройств появляются неизвестные устройства VMBUS. Как утверждает Microsoft, их можно игнорировать. Если же есть желание избавиться от них, то необходимо подключить integration Service setup disk (можно сделать через 5nine manager) , вытащить оттуда Windows6.2-HyperVIntegrationServices-x64 (cabinet file), распаковать его и указать системе найти драйвера на неизвестные устройства среди распакованных файлов (там ставятся виртуальные устройства и Automatic Virtual Machine Activation — AVMA). После установки требуется перезагрузка ВМ.
Решение с неизвестными устройствами взято отсюда: http://www.aidanfinn.com/2014/01/kb2925727-unknown-device-vmbus-in-device-manager-in-virtual-machine-for-avma/
Временные затраты:
2 часа — копирование 60ГБ диска на машину с конвертером
40 минут на преобразование диска
30 минут – копирование нового VHDX диска на Hyper-V ферму.
10 минут на создание новой машины.
20 минут (это много) на установку новых устройств и перезагрузку на Hyper-V ферме.
Итого примерно 4 часа, из которых основное время занимает пересылка образов дисков по сети.