Comment convertir un (gros) VMDK VMWare en VHD pour Hyper-V

This post is available in english here.

J'ai eu récemment à travailler avec Hyper-V, et je dois dire que c'est assez plaisant.

Les VMs sont très réactives, l'IO n'est plus le goulot d'étranglement que cela a pu être, l'impact des VMs sur la machine hôte est bien moindre qu'avec VPC ou VMWare, il supporte les snapshots et des ACL assez fines popur chaque VM. La vue sur la performance est bien entendu subjective, mais je trouve le tout plus rapide et bien mieux intégré à l'OS que les autres produits. Et à présent d'ailleurs, il existe une version gratuite de Windows Server 2008 appelée Hyper-V Server, qui permet de faire tourner une version minimale de windows en mode texte. Juste Hyper-V et ses VMs.

Au passage, je suis partiellement d'accord avec Paul Thurrott sur "l'expérience utilisateur" de Hyper-V qui n'est pas des plus élégantes dans le détail, imposant l'utilisation de scripting et d'informations trouvées sur des blogs. Mais c'est un produit pour les serveurs, et qui n'est définitivement pas fait pour une personne qui ne comprend pas un minimum ce qu'elle fait.

Récemment donc, j'ai tenté de convertir une VM VMWare vers Hyper-V, et le disque principal de 80Go de la VM avait été créé en mode "fixed flat", soit donc un seul gros fichier VMDK de 80Go.

Donc, j'ai essayé en premier le convertisseur de VMDK en VHD, qui malheureusement ne semble pas supporter les gros fichiers de 80Go. Je sais que cet outil fonctionne avec d'autres disques plus petits, ce doit donc être a cause de la taille du fichier.

J'ai essayé ensuite le VMWare Virtual Disk Manager pour convertir le gros fichier vers un jeu de mutiples fichiers VMDK de 2Go. Après la conversion, l'outil de conversion de VMDK vers VHD a très bien fonctionné, convertissant mes multiples VMDK en un seul VHD dynamique.

La conversion n'est cependant pas terminée, principalement à cause des drivers de stockage installés par windows pour une VM VMWare, qui ne sont pas compatibles avec Hyper-V. Cela veut dire un joli BSOD donnant INACCESSIBLE_BOOT_DEVICE, décrit ici et par le KB 314082.

Il existe deux moyens pour corrigers cela : Créer le fichier reg de l'article de la KB et l'intégrer directement dans la VM VMWare avant d'effectuer la conversion, ou bien de monter le VHD converti dans une autre VM Hyper-V, et de merger le fichier reg dans le SYSTEM hive de l'OS de destination.

La premiere possibilité était hors de question dans mon cas, déplacer à nouveau le disque aurait été une perte de temps.

Cela m'a donc laissé l'option de montage du registry hive. Voici comment s'y prendre :

  • Utiliser une autre VM sous windows pour monter le VHD, afin de pouvoir accéder au fichier hive SYSTEM.
  • Utiliser regedit pour charger le fichier hive SYSTEM situé dans le répertoire System32\config\system et le placer dans HKLM/temp
  • Modifier le ficher reg de la KB en replaçant toutes les références à "SYSTEM\CurrentControlSet" par "temp\ControlSet001", l'importer pour mettre à jour la configuration de démarrage par défaut,
  • Modifier une nouvelle fois le fichier reg pour remplacer toutes les références à "SYSTEM\CurrentControlSet" par "temp\ControlSet002", pour modifier cette fois ci la "Derniere bonne configuration", juste au cas où.
  • Décharger le fichier hive,
  • Arreter la VM courante,
  • Démarrer la nouvelle VM avec le VHD fixé et voilà !
L'opération relativement consommatrice en temps vu la taille des fichiers manipulés, mais qui finalement en vaut la chandelle. La VM fonctionne à présent proprement dans Hyper-V.
Publié vendredi 17 octobre 2008 04:39 par jay
Classé sous
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

# re: Comment convertir un (gros) VMDK VMWare en VHD pour Hyper-V @ mardi 21 octobre 2008 12:19

Bonjour,

Il existe également la solution Microsoft System Center Virtual Machine Manager 2008 qui sortira fin octobre qui permet de réaliser ce type d'opération.

J'ai testé ce type de conversion sur des disques durs d'une 15ène de Go avec la Beta 2 et tout c'est bien passé.

J'attends la version final du produit avec impatience...

Alexandre Marlot


Les 10 derniers blogs postés

- Silverlight 3 : Communication et multicast par Kévin Gosse le il y a 6 heures et 23 minutes

- [Perso] Découvertes estivales : Linux (Part I) par Le blog de FremyCompany le il y a 9 heures et 4 minutes

- [Refactoring] ReSharper pour Visual Studio 2010 (Preview) par Thomas Jaskula le il y a 23 heures et 40 minutes

- [Refactoring] Analyser vos exceptions avec ReSharper Exceptional par Thomas Jaskula le 07-03-2009, 23:36

- SharePoint 2007 : patterns & practices SharePoint Guidance par Philippe Sentenac [MVP SharePoint] le 07-03-2009, 09:56

- [Visual Studio 2010] Les tests cases c’est bien, mais je vais devoir tout réécrire ? par Etienne Margraff le 07-03-2009, 09:00

- MVP[Gribouillon].AddYear par The Grib's Lair [Sébastien PICAMELOT - MVP SharePoint] le 07-03-2009, 08:45

- Clinique INSIA - Projet de fin d’Etudes (Silverlight 3 MVVM et OutOfBrowser, WCF, TFS) - Part 1 par David REI le 07-02-2009, 23:38

- C’est la crise ? Bah pourquoi cramer du budget pub alors ? par Nix's Blog le 07-02-2009, 15:31

- Soyons MVP ! par TheSaib .NET blog le 07-02-2009, 12:15