Конвертер виртуальных машин: виртуальные жесткие диски VMware в Hyper-V

Опубликовано: 16 Апреля, 2023
Конвертер виртуальных машин: виртуальные жесткие диски VMware в Hyper-V

Несколько удивительно, что меня относительно часто спрашивают, есть ли способ преобразовать виртуальную машину из VMware в Hyper-V или наоборот. Есть несколько способов выполнить эту работу, но я хочу показать вам, как выполнить эту задачу с помощью PowerShell.

Прежде чем я начну

Прежде чем я начну, я должен упомянуть пару вещей. Во-первых, я собираюсь подойти к этой теме с точки зрения преобразования собственного файла VMDK VMware в файл VHD или VHDX, поддерживаемый Microsoft Hyper-V. Ради обсуждения я собираюсь предположить, что вы уже знаете, как извлечь файл VMDK с вашего сервера VMware.

Еще одна вещь, о которой я должен упомянуть — и это важно, — это обязательно создать резервную копию вашей виртуальной машины VMware перед выполнением любого преобразования. Несмотря на то, что процессы, о которых я собираюсь рассказать, относительно безопасны, преобразование виртуальной машины из одного формата в другой никогда не бывает абсолютно безопасным. В этом случае чрезвычайно важно иметь резервную копию, которую вы можете использовать, чтобы вернуть все в нормальное состояние в случае, если что-то пойдет не так.

Преобразование виртуальных жестких дисков

Мой предпочтительный инструмент для преобразования виртуальных жестких дисков VMware в формат, который может использовать Hyper-V, — это Microsoft Virtual Machine Converter, который вы можете скачать здесь.

Загрузка состоит из одного файла MSI и дополнительного файла документации. Когда вы откроете файл MSI, Windows запустит стандартный мастер установки, который потребует от вас принять лицензионное соглашение и проверить путь установки, который вы хотите использовать.

Microsoft Virtual Machine Converter включает в себя инструмент с графическим интерфейсом, который вы можете увидеть на изображении ниже. Однако вместо того, чтобы обсуждать графический интерфейс, я хочу показать вам, как выполнить преобразование с помощью PowerShell.

Изображение 14351
Следует признать, что идея отказаться от графического интерфейса в пользу выполнения преобразования виртуальной машины с помощью PowerShell звучит безумно. В конце концов, графический интерфейс существует для того, чтобы облегчить нашу жизнь, так почему бы мне им не воспользоваться?

Правда в том, что если бы я преобразовывал один виртуальный жесткий диск, я бы, вероятно, использовал графический интерфейс. Однако PowerShell — гораздо лучший вариант для ситуаций, когда необходимо выполнить массовое преобразование.

Прежде чем вы сможете использовать PowerShell для преобразования файла виртуального жесткого диска, вам необходимо импортировать модуль конвертера виртуальных машин. Этот модуль устанавливается автоматически при установке конвертера виртуальных машин, но его все равно необходимо импортировать в PowerShell. Чтобы импортировать необходимый модуль, откройте окно PowerShell с повышенными привилегиями и введите следующую команду:

Import-Module ‘C:Program FilesMicrosoft Virtual Machine ConverterMvmcCmdlet.psd1’

Вы можете увидеть, как выглядит этот процесс на рисунке ниже.

Изображение 14352
Вам нужно будет импортировать модуль конвертера виртуальных машин в PowerShell, прежде чем вы сможете выполнить преобразование виртуальной машины.

При импорте модуля отсутствие сообщения об ошибке обычно означает, что модуль был успешно импортирован. Если вы хотите знать наверняка, вы можете указать PowerShell отображать командлеты, включенные в модуль. Для этого введите эту команду:

Get-Command -Module MvmcCmdlet

Как вы можете видеть на изображении ниже, в модуль Virtual Machine Converter включено несколько командлетов. Хорошая новость заключается в том, что для выполнения преобразования виртуального жесткого диска требуется только один из этих командлетов. Этот командлет называется ConvertTo-MvmcVirtualHardDisk.

Изображение 14353
Вот синтаксис, который вам нужно будет использовать для преобразования виртуальной машины:

ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath “<source VM path>” -DestinationLiteralPath “<destination VM path>” -VhdType FixedHardDisk -VhdFormat Vhdx

Чтобы показать вам, как это работает, я создал файл VMDK с именем Sample VM.vmdk и поместил его в папку с именем C:Temp. Для демонстрации я преобразую этот файл VMDK в файл VHDX с именем Hyper-V VM.vhdx. Вот команда, которую я использую для преобразования:

ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath “C:TempSample VM.vmdk” -DestinationLiteralPath “C:TempHyper-V VM.vhdx” -VHDType FixedHardDisk -VhdFormat Vhdx

Вы можете увидеть, как выглядит процесс преобразования на скриншоте ниже. В зависимости от того, насколько велик ваш файл VMDK, как настроен VMDK и насколько хорошо работает ваше оборудование, преобразование может занять много времени. VMDK, который вы видели на снимках экрана, имел размер чуть более 6 ГБ, что довольно мало для виртуальной машины, и тем не менее процесс преобразования занял несколько часов.

Изображение 14354
Последнее, что мне нужно упомянуть о процессе преобразования, это то, что полученный файл VHDX может быть значительно больше, чем файл VMDK, с которого вы начали. Как упоминалось ранее, мой исходный файл VMDK имел размер около 6 ГБ, но полученный файл VHDX имел размер чуть более 100 ГБ.
Изображение 14355

Последняя часть головоломки

Надеюсь, вы смогли использовать технику, описанную в этой статье, для преобразования файла VMDK в файл VHD или VHDX. К сожалению, процесс конвертации не всегда проходит так гладко, как хотелось бы. Довольно часто процесс преобразования завершается сбоем из-за несовместимого дескриптора в файле VMDK. К счастью, есть способ изменить этот дескриптор, чтобы вы могли заставить процесс преобразования работать. В отдельной статье, которую я написал здесь, на TechGenix, подробно описано, как исправить проблемы с дескриптором файла, чтобы вы могли выполнить необходимое преобразование.

Если изменение дескриптора вам не подходит, лучше всего выполнить резервное копирование виртуальной машины VMware на уровне гостя, а затем восстановить резервную копию на виртуальной машине Hyper-V.