Proxmox Transférer une machine virtuelle d’Hyper-V vers Proxmox et vice versa.

Neo974

Modérateur
Membre du personnel
16 Janvier 2022
2 641
704
213
Paris
Professionnel
Non
Transférer une machine virtuelle d’Hyper-V vers Proxmox et vice versa.

Le but de ce tutoriel est de vous expliquer de façon détaillés comment convertir un disque dur virtuel d'un format a l'autre afin de permettre de l'utiliser avec différentes plateforme de virtualisation.

Avant de commencer, quelques informations sur les différences entre Hyper-V et Proxmox.

Hyper-V est une plateforme de virtualisation développée et intégrée par Microsoft.
Proxmox est une solution open source basée sur la virtualisation KVM (Kernel-based Virtual Machine) et les conteneurs LXC (Linux Containers) Il utilise un noyau linux.

Sous Proxmox un disque est obligatoirement lié à une machine virtuelle, supprimer la VM revient à supprimer aussi tous ses disques, retirer un disque revient à le supprimer définitivement.
Au contraire sous Hyper V les disques n’étaient pas automatiquement supprimer à la suppression d’une machine virtuelle, de même que le retirer de la VM ne supprime pas le disque.

Ensuite Proxmox a beaucoup plus d’option notamment au niveau de l’émulation de différents types de processeurs avec des options avancées, de puce graphique, la limitation de vitesse du disque dur … il est important de bien choisir les paramètres de sa VM afin d’obtenir une compatibilité maximale.

Vous l’aurez compris, l’un est intégré aux ordinateurs Windows et assez simple d’utilisation, l’autre est sur Linux et possède beaucoup plus d’option.
Malheureusement les VM ne sont pas directement compatible entre les deux systèmes.
Pas de panique, nous allons vous expliquer comment faire pour transférer une VM de l’un a l’autre.


Sommaire
 
Dernière édition:
1ere étape : Faire une copie du disque dur de la machine virtuelle

La première étape est de faire une copie du disque dur de votre VM, car en réalité ce sera lui uniquement qui nous intéresse.
Pensez à noter les informations concernant votre VM comme le nombre de processeurs, la quantité de ram, les connexion réseau (et si besoin les adresses mac des cartes réseau).
Nous allons utiliser un disque externe pour cela.

Sur Hyper-V

Connecter votre disque externe sur le serveur Hyper-V
Lancer le gestionnaire Hyper-V
Faite un clic droit sur votre VM puis paramètre.
Sélectionner votre disque dur virtuel et repérer son emplacement.
Copier le disque dur virtuel par exemple à la racine de votre disque externe.

1716729218603.png

Sur Proxmox

Monter le disque dur USB

Cela n’est pas tout à fait plug and play, nous allons vous expliquer comment procéder.
Commencer par brancher votre disque externe sur votre serveur.
Ensuite connecter vous a l’interface web de votre serveur Proxmox
Sélectionner le serveur puis cliquer sur « Shell »
Taper la commande
Code:
fdisk -l
afin d’avoir la liste de vos disques dur.
Comme vous le voyez, il vous affiche la liste de vos disques dur et partitions.

1716729236215.png1716729246985.png
1716729261969.png1716729271385.png

Il faut identifier son disque USB et la partition correspondant (ici le disque qui nous intéresse est le /dev/sdb est la partition /dev/sdb1)
Maintenant que l’on a identifié le disque et la partition, nous devons la monter dans linux, mais avant nous devons créer le répertoire dans lequel la partition sera monter.
Pour cela taper la commande
Code:
cd /media/
afin de nous placer dans le dossier media.
Nous allons créer un répertoire transfert qui nous servira de point de montage pour le disque avec la commande
Code:
mkdir transfert
Nous allons maintenant monter le disque externe dans linux grâce à la commande
Code:
mount -o rw /dev/sdb1 /media/transfert/
.

1716729292743.png

Dans l’interface web, cliquer sur « Datacenter », « Storage » et « Add » puis « Directory »
Indiquez l’ID que vous souhaitez puis dans « directory » le chemin ou est monté votre disque (ici /media/transfert ») et dans le menu déroulant « Content » sélectionner « Disk image et VZDump backup file » puis cliquer sur « Add ».
Vous voyez maintenant votre disque apparaitre dans la liste.

1716729307076.png1716729313690.png1716729322526.png

Copier le disque dur de la VM sur le disque USB
Ce qu’il nous faut c’est une copie du ou des disques de la machine virtuelle (VM).
Pour cela il faut localiser où se trouve le disque dur.
Sélectionnez votre VM puis hardware et regardons les informations que nous avons pour le disque dur.
« local-lvm » cela correspond à notre stockage
« vm-100-disk-0 » correspond à notre disque dur

1716729370860.png

Maintenant il faut voir ou se trouve local-lvm dans notre cas c’est le répertoire par default créer par proxmox, sinon il faut aller dans « datacenter », « storage » afin de voir où se situe les répertoires. (Dans notre cas local-lvm se situe dans « /dev/pve »)
Pour copier le disque, maintenant que nous avons le nom du disque et où il se trouve il faut utiliser la commande
Code:
 cp
Pour cela retourner dans « shell »
Taper la commande
Code:
cp /dev/pve/vm-100-disk-0 /media/transfert
Le seul problème ici c’est que si votre disque fait 100 Go il va copier un fichier de 100Go indépendamment de la place réellement utilisée.
1716729389278.png
 
Dernière édition:
2 ème étape : Convertir le disque dur

Comme expliquer nous allons nous intéresser uniquement au disque dur à partir de maintenant.
Sur Hyper-V le format de disque est VHDX alors que sur Proxmox il est en Qcow2 ou raw.
Malheureusement le format VHDX n’est pas compatible avec Proxmox et les formats Qcow2 et raw ne sont pas compatible avec Hyper-V. C’est pour cela qu’il nous faut convertir le disque dur pour passer d’une plateforme a une autre.

Pour se faire nous allons utiliser l’outil QEMU
QEMU est un émulateur et un virtualiseur de machine générique et open source.
Lorsqu'il est utilisé comme virtualiseur, QEMU atteint des performances quasi natives en exécutant le code invité directement sur le processeur hôte. QEMU prend en charge la virtualisation lors de l'exécution sous l'hyperviseur Xen ou en utilisant le module du noyau KVM sous Linux.
Sources : https://wiki.qemu.org/Main_Page
Qemu va vous permettre de convertir n’importe lequel de vos fichier disque de presque toutes les solutions de virtualisation en fichier disque d’une autre solution de virtualisation.
La commande a utilisée est la suivante :
Code:
qemu-img convert -f [formatorigine] -O [formatdestination] source.formatorigine destination.formatdestination

Avec les informations ci-dessous :
  • Format variable à mettre après le « -f » ou « -O »Vmdk vmdk
  • Qcow2 qcow2
  • Vhd vpv
  • Vhdx vhdx
  • Raw raw
  • Vdi vdi
Assez compliquer me direz-vous ?
Vous allez le voir en pratique c’est plus simple qu’il n’y parait.

Sur windows

Vous pouvez télécharger Qemu pour Windows directement sur le site officiel https://www.qemu.org/download/#windows

Une fois télécharger installer le logiciel en laissant l’ensemble des paramètres par default.
Ensuite lancer PowerShell en administrateur sur votre poste.
Placer vous dans le répertoire ou qemu est installer à l’aide de la commande :
Code:
cd ‘c:\program files\qemu‘
Comme vous le voyez, à la racine de mon disque externe ayant la lettre E, j’ai deux fichiers.
Un fichier vm-100-disk-0 et Un fichier W10.vhdx
Le premier fichier vient de mon serveur proxmox et le second de mon serveur Hyper-V.
Nous allons donc voir comment convertir un disque virtuel proxmox au format Hyper-V et vice versa.

1716730002670.png

Pour convertir mon disque vm-100-disk-0 au format vhdx pour Hyper-V
La commande sera la suivante :
Code:
.\qemu-img.exe convert -f raw -O vhdx E:\vm-100-disk-0 E:\vm-100-disk-0.vhdx
Car le disque d’origine est au format raw (Proxmox utilise soit du raw soit du qcow2).
L’opération prend quelques minutes.
Maintenant nous allons convertir le disque W10.vhdx pour proxmox en qcow2.
La commande sera la suivante :
Code:
.\qemu-img.exe convert -f vhdx -O qcow2 E:\W10.vhdx E:\W10.qcow2
L’opération prend quelques minutes.
Voilà maintenant j’ai mes fichiers disques convertis.

1716730020359.png

Sur Proxmox

Lorsque vous installer Proxmox, les outils Qemu sont installés en même temps.
Vous n’avez donc rien à installer de plus.
Si nécessaire, nous allons monter le disque comme vu précédemment.
Pour cela nous utilisons la commande
Code:
mount -o rw /dev/sdb1 /media/transfert/
.
Nous allons nous déplacer dans le répertoire /media/transfert/ a l’aide de la commande
Code:
cd /media/transfert
Nous allons voir ce qu’il contient grâce à la commande
Code:
ls -l

Nous avons un fichier vm-100-disk-0 qui correspond à une copie d’un disque sous Proxmox et un fichier W10.vhdx qui correspond au disque de notre VM sous Hyper-V.

1716730046821.png

Pour convertir le disque de la VM sous Proxmox au format hyper-V, la commande est la suivante :
Code:
qemu-img convert -f raw -O vhdx /media/transfert/vm-100-disk-0 /media/transfert/vm-100-disk-0.vhdx
Car le disque d’origine est au format raw (Proxmox utilise soit du raw soit du qcow2).
Maintenant nous allons convertir le disque W10.vhdx pour proxmox en qcow2.
La commande sera la suivante :
Code:
qemu-img convert -f vhdx -O qcow2 /media/transfert/W10.vhdx /media/transfert/W10.qcow2
L’opération prend quelques minutes.

1716730062576.png

Voilà maintenant j’ai mes fichiers disques convertis.
 
Dernière édition:
3ème étapes: Création de la nouvelle machine virtuelle

Sur Hyper-V
Brancher votre disque dur externe a votre serveur Hyper V
Lancer Hyper-V et créer une nouvelle machine.
(Attention à la génération de la machine Génération 1 : bios « legacy » Génération 2 : Bios « UEFI »).
Lors de la sélection du disque dur, vous pouvez choisir de sélectionner un disque dur existant.
Indiquer alors le disque que vous avez converti de votre serveur Proxmox.
Vérifier le résumer et cliquer sur « terminer »

1716730145775.png1716730153236.png1716730159856.png1716730167952.png1716730174673.png

Une fois la machine virtuelle créer, vous pouvez modifier ses propriétés en faisant un clic droit sur celle-ci puis paramètres.
Là vous pouvez choisir l’ordre de démarrage, le nombre de processeurs, la quantité de ram …
Une fois votre VM configurée, vous pouvez valider.
Faites un clic droit sur votre VM puis se connecter.

1716730244529.png1716730253592.png

Vous pouvez maintenant la démarrer.
Au bout de quelques instants vous retrouvez sur votre bureau Windows.

1716730275690.png1716730282749.png1716730291224.png

A ce stade votre VM fonctionne mais son disque dur est encore sur votre disque USB.
Pour le copier, rien de plus simple.
Arrêter votre machine virtuelle
Copier le fichier ou vous le souhaitez, par exemple dans le dossier « C:\Users\Public\Documents ».
(tous les utilisateurs utilisant Hyper V doit avoir accès au dossier où se trouve le disque dur).
Ouvrez les propriétés de votre VM puis sur disque dur cliquer sur modifier et indiquer le chemin de votre fichier.
Valider et fermer la fenêtre.

1716730329257.png1716730334229.png1716730340613.png

Voilà votre VM Proxmox fonctionne maintenant sous Hyper-V.

Sur Proxmox

Si vous avez converti votre fichier disque sous Windows, il vous faudra monter le disque externe sur votre serveur Proxmox.
Pour cela lisez la partie « Faire une copie du disque dur de la machine virtuelle => Sur Proxmox => Monter le disque dur USB ».

A création de la machine virtuelle sous Proxmox
Comme nous avons indiquez dans l’étape précédente que le disque transfert contient des images disques, il y a un dossier « images » qui a été créer sur le disque.
Si ce n’est pas le cas, revenez sur « Datacenter », « storage », sélectionner « transfert » puis « edit ».
Là vous pouvez ajouter le contenu de type image disque.

1716730457367.png1716730449903.png

Nous allons maintenant créer une machine virtuelle avec par exemple l’ID 300.
Attention pour une machine Windows le type de bios est UEFI, il faut faire attention à créer une machine virtuelle avec les caractéristiques semblables à celle d’origine.
Parfois plusieurs test est nécessaire pour arriver à la configuration correcte.

B attacher le disque dur converti à la machine virtuelle
Sur votre machine virtuelle, allez dans hardware, sélectionner votre disque dur puis cliquer sur « detach ».
valider et constater qu’il passe en « unused disk 0 ».

1716730526369.png1716730534930.png

Maintenant, il faut copier le disque dur converti afin que Proxmox l’attache à la machine virtuelle.
Cela n’est pas aussi simple que sur windows.

Nous allons commencer par créer un répertoire portant le nom de l’id de notre VM dans le dossier transfert/images.
Avec la commande
Code:
mkdir /media/transfert/images/300
Ensuite nous allons copier le fichier disque « w10.qcow2 » dans ce répertoire avec la commande :
Code:
cp /media/transfert/w10.qcow2 /media/transfert/images/300/w10.qcow2

1716730570323.png

Une fois la copie terminée, vous remarquerez que le disque n’est pas vu dans la partie hardware de notre VM.
Il faut demander au serveur de rescanner l’ensemble de ses répertoires à la recherche « d’erreurs », cela se fait grâce à la commande
Code:
qm rescan
Vous aurez un message qui ressemble à :
« rescan volumes…
VM 300 add unreferenced volume ‘transfert:300/w10.qcow2’ as ‘unused1’ to config ».
Cela signifie qu’il a bien trouver notre disque, qu’il a compris que ce disque est attaché à la VM ayant l’ID 300 et l’a ajouté dans la partie hardware de la VM comme disque non utilisé.

1716730597252.png1716730605802.png

Nous pouvons maintenant attacher le disque à la VM et indiquer à la vm qu’il faut démarrer sur celui-ci.
Pour cela il suffit de double cliquer dessus, choisir les paramètres du disque (par exemple dire qu’il est en sata) puis dans la partie option, « boot order » indiquer que l’on veut qu’il boot sur le disque en le plaçant en premier et en vérifiant que la petite case devant est bien sélectionner.
Maintenant dans la partie console, on peut démarrer notre VM.
Comme vous le voyer au bout de quelques instants cela fonctionne, Windows démarre et nous arrivons sur le bureau.

1716730631314.png1716730636769.png1716730650428.png1716730658431.png1716730666848.png

A ce stade votre VM qui était sur Hyper-V fonctionne maintenant sur Proxmox, mais (car il y a un mais) le disque dur de la VM est stocké sur votre disque dur externe.
Pour le déplacer sur votre disque interne que vous utilisez habituellement sur votre serveur Proxmox rien de plus simple.
Commencer par éteindre votre VM.
Puis dans l’onglet « hardware » de votre VM sélectionner le disque dur puis « disk action » et « move storage »
Dans « target storage » indiquer l’endroit où vous souhaitez déplacer votre disque puis cliquer sur « move disk ».

1716730764958.png1716730774366.png

Vous allez avoir un pop-up avec un indicateur d’avancement, à la fin vous verrez le message « TASK OK » vous pouvez donc fermer la pop-up.

1716730801806.png1716730809523.png

Comme nous n’avons pas cocher la case « delete source » nous nous retrouvons maintenant avec 3 disques dur attacher à la VM. (Celui d’origine lors de la création, celui que nous avons rajouter qui est dans le disque dur externe, et la copie que nous avons faites sur le disque local).
Vous pouvez sélectionner un disque inutile puis cliquer sur « remove ».
Le message d’avertissement vous prévient que cela va supprimer le disque virtuel.
( on a bien dit supprimer pas juste retirer de la VM le disque).
Faites pareil pour le second disque virtuel.

1716730930902.png

Ça y est votre VM qui était jadis sous hyper v est maintenant opérationnelle sous Proxmox.
Retirer le disque USB proprement

Pour retirer le disque, il suffit de taper la commande
Code:
umount /dev/sdb1
Vous pouvez déconnecter votre disque dur du serveur proxmox.

Conclusion :

Le transfert d'une machine virtuelle d’une plateforme a l’autre peut sembler complexe, mais grâce à ce tutoriel vous y arriverez à presque tous les coups (oui parfois ça ne marche malheureusement pas, dans mon cas je n’ai pas réussi pour une de mes machines sous Debian).
Assurez-vous de comprendre les différences entre les deux plates-formes et de prendre les précautions nécessaires pour minimiser les risques, (comme toujours faire une sauvegarde et ne pas travailler sur les disques originaux). J’espère que ce tutoriel vous sera utile et vous permettra de changer de solution de virtualisation facilement.
 
Dernière édition:
  • J'adore
Réactions: FX Cachem
Salut
Merci pour le tuto
J'ai encore des VM qui tournent sous Virtua PC, si je dis pas de bétise chronologiquement c'est l'ancetre de Hyper-V ? Ca devrait être le même principe je supose.
Je vais essayer prochainement de faire une migration.

A une époque j'avais réussi a convertir ces VM sous VMWare Workstation en passant pour un outil VMWare.
 
Pour virtual pc le format est vhd si je ne me trompe pas. ( donc vpc comme argument)
 
Hello,
@sensei42 strawind n'est pas gratuit.

C'est un outil complet ( que je n'ai pas essayer) mais il est payant et propriétaire.

Qemu est gratuit et open source.
 
  • J'aime
Réactions: sensei42
A ok lors de mon utilisation j'ai pas eu de problème de demande d'achat de ce que je me souvient :unsure:. Après cela date un peu mais faut que je regarde des que j'aurai reçu mon nouveau mini serveur j'essayerai de faire des transfert de VM avec ;). Je ferai un retour d’expérience :)