MVMC : Convertir VMDK en VHDX
I. Présentation
On peut tout à faire transformer la phrase "Convertir un VMDK en VHDX" en "Passer de VMware à Hyper-V", c'est en tout cas ce que j'ai voulu faire sur mon poste de travail en laissant de côté VMware Workstation pour passer à Hyper-V. La problématique principale réside au niveau des disques durs virtuels puisque VMware utilise des fichiers VMDK alors qu'Hyper-V utilise des fichiers VHDX ou VHD.
Alors, comment faire ?
Pour faciliter cette migration d'un outil à l'autre, Microsoft a publié un outil dédié à cela : Microsoft Virtual Machine Converter. Aujourd'hui en version 3.1, ce logiciel permet en résumé de prendre vos VMs sur votre hyperviseur ESXi ou votre vCenter et de les envoyer sur un hyperviseur Hyper-V (voir même sur le Cloud Azure).
MVMC embarque également un module PowerShell qui contient des commandlets intéressants, dont un qui permet de convertir un VMDK en VHDX (ou VHD). Dans l'état actuel, l'interface graphique de l'outil ne permet de convertir un fichier VMDK source (et orphelin) vers un VHDX.
Avant de commencer, téléchargez l'outil et éventuellement le guide au format Word contenant une aide complète sur chaque commandlets PowerShell disponible : Microsoft Virtual Machine Converter
II. VMDK to VHDX/VHD
L'installation est très simple, je ne vais pas m'attarder dessus, vous devriez vous en sortir 🙂
Pour cadrer un peu les choses, je me trouve sous Windows 8.1 et je vais convertir le VMDK d'une VM Windows Server 2012 R2.
- Source : E:\VM_SrvFlo\Windows Server 2012 R2 Core (CORE01)\Windows Server 2012 R2 Core (CORE01).vmdk
- Cible : E:\WS2012R2_CORE01.vhdx
N'exécutez pas l'application, ce n'est pas la peine on va utiliser l'interface graphique. Ouvrez plutôt une console PowerShell et chargez le module MVMC (fichier psd1) :
Import-Module "C:\Program Files\Microsoft Virtual Machine Converter\MvmcCmdlet.psd1"
Au sein de ce module, on va utiliser le commandlet "ConvertTo-MvmcVirtualHardDisk" qui peut fonctionner avec deux simples options :
-SourceLiteralPath : Chemin vers le VMDK à convertir
-DestinationLiteralPath : Chemin vers le VHDX à créer
Ce qui donnera :
ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath "E:\VM_SrvFlo\Windows Server 2012 R2 Core (CORE01)\Windows Server 2012 R2 Core (CORE01).vmdk" -DestinationLIteralPath "E:\WS2012R2_CORE01.vhdx"
Vous pouvez ajouter deux options en plus :
-VhdFormat : Prends la valeur "vhd" ou "vhdx" selon le format que vous souhaitez.
-VhdType : Prends la valeur "FixedHardDisk" pour créer un disque virtuel de taille fixe et "DynamicHardDisk" pour un disque de taille dynamique (valeur par défaut).
Note : Dans certains cas, le disque dur virtuel d'une VM sous VMware est divisé en plusieurs fichiers. Ceci ne pose pas de problème, il suffit d'indiquer le fichier d'origine (celui qui n'est pas numéroté) et tous les autres seront pris en compte.
Exécutez la commande et patientez pendant la conversion.
Quand ce sera terminé, vous obtiendrez un résultat semblable à celui-ci :
Il ne reste plus qu'à créer un nouvel ordinateur virtuel au sein du Gestionnaire Hyper-V et à lui attacher ce disque VHDX (disque dur existant), et le tour est joué ! Pour ceux qui sont motivés, vous pouvez créer l'ordinateur virtuel en PowerShell par cette commande :
New-VM -Name CORE01 -VHDPath "E:\Machines Virtuelles\WS2012_R2_CORE01\WS2012R2_CORE01.vhdx" -Path "E:\Machines Virtuelles\WS2012_R2_CORE01" -SwitchName "WIFI-LAN"
Il y a diverses options disponibles pour cette commande (aide : New-VM), voici celles utilisées dans la commande ci-dessus :
-Name : Nom de l'ordinateur virtuel dans le Gestionnaire Hyper-V
-VHDPath : Chemin vers un disque virtuel VHD/VHDX existant à attacher à la VM
-Path : Chemin vers l'emplacement de stockage des fichiers de configuration de la VM
-SwitchName : Nom du commutateur virtuel sur lequel vous souhaitez connecter la VM
Pour les autres options, consultez l'aide indiquée précédemment. Sachez que vous pourrez toujours par la suite éditer la configuration de la machine, notamment pour modifier la RAM, le processeur, etc.
Dans le Gestionnaire Hyper-V, on retrouve notre nouvel ordinateur virtuel :
Par curiosité, on peut aller voir dans les paramètres de l'ordinateur virtuel au niveau du disque dur, et notre disque converti est bien attaché :
La dernière étape pour valider le fonctionnement est de démarrer l'ordinateur virtuel, là encore PowerShell est possible :
Start-VM CORE01
Il suffit de se connecter ensuite pour suivre l'évolution du démarrage :
Voilà, le tour est joué ! Microsoft Virtual Machine Converter est vraiment un outil qu'il faut connaître pour la manipulation de disques durs virtuels et de VMs.
Bonjour, merci pour cette astuce 🙂
J’ai un soucis avec certain vmdk (fait sous vmware Workstation) qui ne veulent pas se convertir.
J’ai l’impression qu’il y a une limite en taille, des vmdk qui font 3 Go la conversion fonctionne, mais les autres au délà de 7 Go à peu près cela ne fonctionne pas.
j’ai ce message :
ConvertTo-MvmcVirtualHardDisk : The entry 1 is not a supported disk database entry for the descriptor.
Au caractère Ligne:1 : 1
+ ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath « D:\virtual_machine\ …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (Microsoft.Accel…nversionService:DriveConversionService) [ConvertTo-MvmcVi
rtualHardDisk], VmdkDescriptorParseException
+ FullyQualifiedErrorId : DiskConversion,Microsoft.Accelerators.Mvmc.Cmdlet.Commands.ConvertToMvmcVirtualHardDiskC
ommand
ConvertTo-MvmcVirtualHardDisk : Une ou plusieurs erreurs se sont produites.
Au caractère Ligne:1 : 1
+ ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath « D:\virtual_machine\ …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (Microsoft.Accel…nversionService:DriveConversionService) [ConvertTo-MvmcVi
rtualHardDisk], AggregateException
+ FullyQualifiedErrorId : DiskConversion,Microsoft.Accelerators.Mvmc.Cmdlet.Commands.ConvertToMvmcVirtualHardDiskC
ommand
Bonjour,
Personnellement, suite à des erreurs de conversion avec cet utilitaire, j’utilise VirtualBox et plus particulièrement la commande vboxmanage clonehd [source vmdk] [destination vhd] pour réaliser une première conversion puis, la conversion de VHD vers VHDX accessible dans l’environnement hyperV.
Bonjour,
j’ai rencontré le même problème que tupiware,
la méthode de David fonctionne nickel
Encore merci
J ai testé la premiere méthode qui m indique l erreur de tupiware, j ai donc essayé la seconde méthode pour la conversion de disque (en passant par virtualbox), mais j ai l erreur suivante :
VBoxManage.exe: error: Could not get the storage format of the medium ‘E:\hyperV\TFTP_SYSLOG_files\TFTP_SYSLOG-ctk.vmdk’ (VERR_NOT_SUPPORTED)
VBoxManage.exe: error: Details: code VBOX_E_IPRT_ERROR (0x80bb0005), component MediumWrap, interface IMedium, callee IUnknown
VBoxManage.exe: error: Context: « OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, enmAccessMode, fForceNewUuidOnOpen, pMedium.asOutParam()) » at line 179 of file VBoxManageDisk.cpp
E:\hyperV\TFTP_SYSLOG_files> »c:\program files\oracle\virtualbox\vboxmanage » clonehd TFTP_SYSLOG-flat.vmdk tft.vhd
VBoxManage.exe: error: Could not get the storage format of the medium ‘E:\hyperV\TFTP_SYSLOG_files\TFTP_SYSLOG-flat.vmdk’ (VERR_NOT_SUPPORTED)
VBoxManage.exe: error: Details: code VBOX_E_IPRT_ERROR (0x80bb0005), component MediumWrap, interface IMedium, callee IUnknown
VBoxManage.exe: error: Context: « OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, enmAccessMode, fForceNewUuidOnOpen, pMedium.asOutParam()) » at line 179 of file VBoxManageDisk.cpp
Bonjour,
Je dispose d’une VM initialement crée sur VMWare, qui comporte plusieurs type de fichiers (2 vmdk, 2 vmsd, vmx/vmxf et un sous dossier « cache »).
J’aimerai effectuer un convertion de VMWare vers Hyper-V.
La VM est sur mon PC, de même pour le gestionnaire Hyper-V.
J’ai tenté avec l’utilitaire MVMC, en passant par l’interface, mais ça échoue à l’étape de connexion à la source (Mon PC donc).
J’aimerai tenter en PowerShell comme indiqué dans le tuto, mais les différents fichiers et la présence de 2 disque virtuels me font douter des scripts.
Une idée pour aider svp ?
Bonjour,
A tout hasard vous n’auriez pas l’exécutable qui traine quelque part ? J’ai une conversion à faire et je ne retrouve plus mon programme.
Merci