Convertir un volume vhdx Hyper-V pour l’utiliser avec KVM ou Proxmox VE

Ou comment migrer une machine virtuelle d’une plateforme Hyper-V à une plateforme Proxmox VE.

Hyper-V et Proxmox VE sont deux outils fantastiques pour faire fonctionner des machines virtuelles.
Ici pas de débat sur lequel est le mieux, ni sur les fonctionnalités de chacun (vous savez utiliser Google ?).
Ici nous allons nous contenter d’une bonne grosse procédure qui va nous permettre de réussir la migration d’une machine virtuelle d’une plateforme Hyper-V à Proxmox VE.

S’il est simple de convertir un fichier vhd/vhdx vers un fichier qcow2, comme montré ci-dessous, la migration est toute autre.

qemu-img convert -O qcow2 my.vhdx /path/my.qcow2

Quelles sont les étapes pour y parvenir ?

Export de la machine virtuelle depuis Hyper-V

Sur Hyper-V, sélectionnez la machine virtuelle que vous souhaitez migrer.
Clique droit dessus (ou sinon utiliser le menu de droite), sélectionnez « Exporter… ».
Une invite vous invite à sélectionner le répertoire de destination de votre export.

Une fois l’export terminé, rendez-vous dans le répertoire « Virtual Hard Disks ». Dans ce répertoire vous trouverez le fichier qui est à transférer sur le serveur KVM/Promox Ve.

Si par hasard, vous y trouvez un fichier vhd/vhdx et un ou plusieurs fichiers avhd/avhdx c’est que vous avez fait des snapshots de cette machine virtuelle. Il va donc falloir fusionner ces fichiers en un seul.

Pour cela dirigez-vous sur Hyper-V, sectionnez le nom de la machine hôte, puis dans le menu actions sélectionnez « Modifier le disque…». Dans le champ « Emplacement : » sélectionnez le fichier avhd/avhdx qui à la date de modification la plus récente. Dans le choix des actions sélectionnez « Fusionner » puis au choix soit « Vers le disque du virtuel parent » ou « Vers un nouveau disque dur virtuel ».

Lors de l’export de la machine virtuelle, pensez à noter ses caractéristiques (nombre de processeur, taille de la mémoire, …), cela vous sera utile par la suite.

Envoi du fichier d’export sur le serveur KVM ou Proxmox VE

Récupérez le fichier vhd ou vhdx et envoyez le sur se serveur de votre choix.

Vérification de la conformité de l’image

Comme nous transférons de gros volume de données d’un système d’exploitation à un autre, il faut dans un premier temps vérifier que le fichier n’a rien perdu en route. Pour cela exécuter la ligne de commande suivante :

qemu-img check -r all my.vhdx

Si le fichier est bon et non corrompu, la commande vous répond avec ce message : No errors were found on the image.

Création d’une machine virtuelle avec KVM ou Proxmox VE

Maintenant il faut sur KVM ou Proxmox VE créer une nouvelle machine virtuelle KVM en la paramétrant comme bon vous semble (en réappliquant les paramètres dont elle jouissait sur Hyper-V). Pour ce qui est du choix du disque, je vous invite à choisir l’option « VirtIO Block ».

Transférer le fichier d’export sur la nouvelle machine virtuelle

Nous avons un export de machine en vhd/vhdx et une belle machine virtuelle toute neuve. Dans un premier temps il vous faut trouver l’emplacement du stockage du volume de données créer par Proxmox VE et associé à votre machine virtuelle. Le nom du volume créé se trouve dans l’interface d’administration de votre machine virtuelle, dans la section « Hardware » puis dans le tableau « Hard Disk ». Quelque chose de semblable à « vm-100-disk-1 ». Grâce à la commande find, vous allez pouvoir trouver l’emplacement de ce fichier :

find / -name vm-100-disk-1*

Maintenant que vous avez l’emplacement de votre volume, exécutez la commande suivante pour convertir votre vhd/vhdx en un volume exploitable par KVM.

qemu-img convert -O raw -p -n vhdx/my.vhdx /path/vm-100-disk-1

Démarrer la machine virtuelle

Il ne vous reste plus qu’à démarrer la machine virtuelle et vérifier que tout fonctionne comme avant. Souvent il est nécessaire de modifier la configuration du réseau de la machine virtuelle afin quelle prenne en compte les spécificités de Proxmox VE. Sur une machine virtuelle linux cela consiste à définir le bon périphérique réseaux (habituellement eht0) pour la primary network interface. Avec les commandes ifconfig ou ip addr trouvez le nom de l’interface réseau. Puis dans le fichier /etc/network/interfaces ajoutez/modifiez les lignes suivantes pour intégrer le bon nom d’interface. Dans notre cas ici le nom de l’interface est ens25

# The primary network interface
allow-hotplug ens25
iface ens25 inet dhcp

Il ne reste qu’à redémarrer le service réseau

/etc/init.d/networking restart

Sources :

Tagués avec : , , ,

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*