Importer et exporter des machines virtuelles Hyper-V : des méthodes infaillibles

Avez-vous besoin d’exporter des machines virtuelles Hyper-V et de les transférer d’un hôte à un autre ? Et que diriez-vous d’exporter une machine virtuelle depuis votre poste de travail de développement vers un hôte Hyper-V en production ? Si c’est le cas, vous êtes au bon endroit !

Dans cet article, vous apprendrez comment exporter et importer une machine virtuelle en utilisant le Gestionnaire Hyper-V et PowerShell. Prêt ? C’est parti !

Prérequis

Cet article sera un tutoriel. Si vous prévoyez de suivre étape par étape, vous aurez besoin des éléments suivants :

  • PowerShell 7 ou Windows PowerShell 5.1 – Ce tutoriel se concentrera sur PowerShell 7, mais les commandes fonctionneront avec Windows PowerShell 5.1.
  • A Windows Server with Hyper-V enabled – This tutorial is based on the insider preview released March 2021, but any Windows Server from 2012R2 onward will suffice.
  • A virtual machine guest – This tutorial is using an Alpine Linux guest because it’s light on resources. You can use any guest Operating System you like.
  • A local Windows user account in the local administrators group on the Hyper-V host.

Étapes pour exporter des VM Hyper-V

Si vous n’êtes pas fan de la ligne de commande ou si vous avez simplement une seule VM à sauvegarder sur disque, le Gestionnaire Hyper-V est un bon choix. En supposant que vous êtes sur votre hôte Hyper-V et que vous avez une machine virtuelle en cours d’exécution :

1. Dans le menu de recherche de Windows, tapez « hyper ». La console Gestionnaire Hyper-V devrait apparaître. Si c’est le cas, cliquez dessus pour l’ouvrir.

2. Trouvez la VM à exporter, cliquez dessus avec le bouton droit de la souris et sélectionnez Exporter.

Exporting VM using Hyper-V Manager The VM can be offline or running prior to exporting.

3. Ensuite, choisissez un dossier pour enregistrer la VM et sa configuration, puis cliquez sur Exporter.

Export Virtual Machine Dialog.

L’emplacement que vous choisissez pour enregistrer doit avoir suffisamment d’espace de stockage pour la machine virtuelle exportée. Cela variera. Rappelez-vous, vous pouvez avoir 60 Go alloués pour le disque, mais cela ne signifie pas que le disque de la machine virtuelle ait atteint 60 Go.

Une fois que Hyper-V commence le processus d’exportation, vous verrez l’état de l’exportation dans la fenêtre du Gestionnaire Hyper-V.

Export Status in Hyper-V Manager

4. Maintenant, confirmez que tous les fichiers requis sont présents. Vous devriez voir trois sous-dossiers. Ces sous-dossiers contiennent tous les fichiers nécessaires pour démarrer la machine virtuelle exportée; Instantanés, Disques durs virtuels et Machines virtuelles.

Exported VM example
  • Le dossier Instantanés contient les informations sur les instantanés pour la machine virtuelle. Le dossier peut être vide s’il n’y a pas d’instantanés pour la machine virtuelle. Dans ce dossier, vous verrez les extensions de fichier VMCX, VMRS, et VMGS. Le fichier binaire VMCX contient des informations de configuration spécifiques à votre machine virtuelle exportée. Le fichier binaire VMRS contient des informations sur l’état d’exécution de la machine virtuelle. Sans ce fichier, la machine virtuelle ne peut pas démarrer. Enfin, il y a le fichier VMGS. Je ne suis pas sûr de l’utilité de ce fichier. Si vous le savez, laissez un commentaire.

Si vous avez déjà de l’expérience avec Hyper-V, vous avez peut-être remarqué quelque chose de différent concernant les extensions de fichier. À partir de Windows Server 2016, Hyper-V n’utilise plus de fichiers XML pour les informations de configuration et a plutôt basculé vers des fichiers binaires. En savoir plus sur ces nouvelles extensions.

Si votre machine virtuelle a plus d’un point de contrôle, vous verrez plusieurs fichiers VMCX, VMRS et VMGS pour chaque point de contrôle de la machine virtuelle.

Snapshots folder example
  • Le dossier Disques durs virtuels contient tous les fichiers d’image de disque dur ou *.vhdx pour la machine virtuelle. Le fichier AVHDX ou Disque dur virtuel automatique est un disque de différenciation utilisé pour les points de contrôle de la machine virtuelle. Si votre machine virtuelle a plus d’un point de contrôle, vous verrez plusieurs fichiers AVHDX.
Virtual Hard Disks example
  • Le dossier Machines virtuelles contient les fichiers de configuration de la machine virtuelle utilisés pour démarrer la machine virtuelle. Tout comme le dossier Instantanés, vous verrez également ici des fichiers binaires VMCX, VMRS et VMGS.
Virtual Machines configuration files example

Si les trois dossiers sont présents et contiennent des fichiers, votre exportation a réussi.

Utiliser PowerShell pour exporter une machine virtuelle

Si vous êtes un adepte de la ligne de commande ou si vous avez beaucoup de machines virtuelles à exporter, utiliser PowerShell pour exporter une machine virtuelle est également une excellente option. Pour exporter une machine virtuelle Hyper-V avec PowerShell, utilisez la Export-VM cmdlet. Pour ce faire, en supposant que vous êtes sur votre hôte Hyper-V et que votre machine virtuelle est hors ligne:

1. Ouvrez une console PowerShell.

2. Interrogez l’hôte Hyper-V pour obtenir un inventaire de vos machines virtuelles et le nom de la machine virtuelle à exporter. Ce tutoriel exportera une machine virtuelle appelée Alpine Linux 01.

Get-VM
Virtual machine name to be used in Export-VM command

3. Créez un dossier pour exporter la machine virtuelle. Ce tutoriel exportera la machine virtuelle vers C:\Export_VM.

New-Item -ItemType Directory -Name 'Exported_VM\' -Path 'C:\'

4. Exportez maintenant la machine virtuelle en utilisant la cmdlet Export-VM, en fournissant le nom de la machine virtuelle pour le paramètre Name, le chemin vers le dossier où la sauvegarder pour le paramètre Path, et le paramètre PassThru.

Le paramètre PassThru est facultatif pour renvoyer l’objet VM en cours d’exportation. Sinon, Export-VM ne renvoie aucune sortie.

Export-VM -Name 'Alpine Linux 01' -Path 'C:\Exported_VM\' -Passthru
Successful export of an offline virtual machine.

Lorsqu’une VM est en cours d’exécution, Export-VM ne sauvegarde pas automatiquement la mémoire. Si vous souhaitez sauvegarder le contenu de la mémoire en cours d’exécution dans la VM, utilisez le paramètre -CaptureLiveState CaptureSavedState avec Export-VM. En savoir plus sur la technologie utilisée pour capturer la mémoire.

5. Maintenant, retirez la VM de Hyper-V. Ne vous inquiétez pas ! Vous l’avez sauvegardée !

Remove-VM -Name 'Alpine Linux 01'

Utilisation de Hyper-V Manager pour importer une VM

Une fois que vous avez exporté la VM, un désastre s’est produit et la VM a disparu. Pas de soucis ! Vous l’avez déjà exportée sur le disque. Récupérons-la. Pour ce faire, en supposant que vous êtes à nouveau sur votre hôte Hyper-V :

1. Ouvrez Hyper-V Manager.

2. Cliquez sur l’élément de menu Importer une machine virtuelle situé sur le côté droit de la fenêtre de Hyper-V Manager. Vous êtes présenté avec l’assistant Importer une machine virtuelle. Cliquez sur Suivant.

Import Virtual Machine Wizard

3. Ensuite, entrez le chemin vers la machine virtuelle exportée que vous souhaitez importer et cliquez sur Suivant. Pour ce tutoriel, la VM est enregistrée sous C:\Export_VM\Alpine Linux 01.

Contrairement à l’importation avec PowerShell, l’assistant localisera le fichier VMCX de la VM pour vous.

Import Virtual Machine Wizard

4. Une fois que Hyper-V découvre les fichiers de configuration de la VM à l’intérieur du dossier (dans cet exemple, C:\Exported_VM\Alpine Linux 01\Virtual Machines\), Hyper-V vous demandera de sélectionner une machine virtuelle à importer. Choisissez la VM que vous souhaitez importer et cliquez sur Suivant.

Import Virtual Machine Wizard

5. Ensuite, choisissez le type d’importation que vous souhaitez effectuer. Tout d’abord, explorons les options plus en détail.

Lorsque vous choisissez l’option « Enregistrer la machine virtuelle sur place (utiliser l’ID unique existant) », vous supposez que les fichiers de la VM exportée sont à leur emplacement final, ce qui signifie que vous ne déplacez pas la VM vers un nouveau dossier. Les fichiers de la VM exportée deviennent l’état en cours d’exécution de la machine virtuelle. L’ID unique ne change pas.

L’ID unique est ce que Hyper-V utilise pour identifier une machine virtuelle. Si Hyper-V détecte que le même ID unique est actuellement enregistré, vous recevrez une erreur.

Lorsque vous restaurez la machine virtuelle, vous pouvez choisir un emplacement ou utiliser l’emplacement par défaut de Hyper-V pour que les fichiers de la machine virtuelle exportée soient copiés.

Lorsque vous copiez la machine virtuelle, c’est similaire à la restauration d’une VM exportée, mais avec un nouvel ID unique (UID). Un nouvel UID permet de déployer plusieurs fois la même machine virtuelle sur les mêmes hôtes Hyper-V ou sur différents hôtes Hyper-V.

Pour la démonstration, sélectionnons le Type d’importation Copier la machine virtuelle. Copier la machine virtuelle générera un nouvel identifiant unique (UID). Chaque machine virtuelle Hyper-V est identifiée par un UID. Cette option convient pour le moment, alors cliquez sur Suivant.

Import Virtual Machine Wizard

6. Étant donné que vous avez choisi l’option Copier, vous pouvez changer l’emplacement où les fichiers de la machine virtuelle seront stockés. Cliquez sur Suivant pour accepter les paramètres par défaut de ce tutoriel.

Import Virtual Machine Wizard

7. Enfin, choisissez un emplacement pour la machine virtuelle appelé Dossier de stockage. Le dossier de stockage est l’endroit où résideront les fichiers VHDX et AVHDX. Pour ce tutoriel, acceptez l’emplacement par défaut et cliquez sur Suivant.

Import Virtual Machine Wizard

8. Revoyez la page de résumé et lorsque vous êtes prêt, cliquez sur Terminer pour commencer l’importation.

Completing Import Virtual Machine Wizard

Une fois que Hyper-V a terminé l’importation, il revient à la fenêtre du Gestionnaire Hyper-V, et vous verrez maintenant la machine virtuelle importée, comme indiqué ci-dessous.

Imported VM

Utilisation de PowerShell pour importer une machine virtuelle

Si l’importation d’une machine virtuelle via le Gestionnaire Hyper-V n’est pas votre préférence, pas de problème. Utilisez PowerShell ! Pour importer une machine virtuelle avec PowerShell, vous utiliserez la cmdlet Import-VM. Considérez le scénario suivant :

Vous avez exporté une machine virtuelle, et elle se trouve dans C:\Exported_VM\, et disons qu’elle est supprimée accidentellement, ou peut-être qu’elle est nécessaire sur un autre hôte Hyper-V? Puisqu’elle est déjà exportée, elle est essentiellement sauvegardée et peut facilement être importée, permettant ainsi de restaurer la machine virtuelle.

Si la commande Export-VM enregistre une machine virtuelle sur le disque, la commande Import-VM fait l’inverse; elle lit une machine virtuelle à partir du disque et l’importe dans Hyper-V.

1. En supposant que vous avez déjà ouvert une console PowerShell et que vous vous trouvez dans le répertoire où vous avez exporté une machine virtuelle (C:\Exported_VM). Tout d’abord, exécutez la commande Get-ChildItem avec l’option Recurse pour lister tous les fichiers et notez le nom de fichier avec l’extension *.vmcx à l’aide du code ci-dessous:

Get-ChildItem -Recurse | Where-Object -Property Name -CLike *.vmcx

Vous pouvez voir plusieurs fichiers .vmcx dépendant de si la machine virtuelle exportée avait des instantanés. Le seul dont vous avez besoin pour démarrer la machine virtuelle est le fichier VMCX situé dans le dossier des machines virtuelles.

Vous pouvez voir une sortie similaire à l’exemple ci-dessous:

Exported VM UID example – VM configuration file (vmcx)

2. Ensuite, utilisez la commande Import-VM avec le paramètre Path pour spécifier le fichier de configuration des machines virtuelles (obtenu à l’étape précédente).

Import-VM -Path '.\Alpine Linux 01\Virtual Machines\.vmcx'

C’est tout ! Vous avez enregistré la machine virtuelle à sa place, en utilisant le même UID que la machine virtuelle avait lors de son exportation.

Importing a VM in place

3. Maintenant, vérifiez que l’UID est le même que le nom de fichier .vmcx lorsque la machine virtuelle a été exportée. Vous pouvez utiliser le code ci-dessous pour le faire en interrogeant WMI:

(Get-CimInstance -Namespace Root\Virtualization\V2 -ClassName Msvm_VirtualSystemSettingData -Filter "ElementName = 'Alpine Linux 01'").InstanceID

Vous devriez voir une sortie similaire à l’exemple ci-dessous :

UID Retained

L’exemple ci-dessus était une importation directe à partir du fichier de configuration de la VM, et la VM a conservé l’UID original. Dans un environnement de production, vous voudrez peut-être générer un nouvel UID pour éviter qu’une ancienne VM ne soit confondue avec une nouvelle VM. C’est là que le paramètre Copy entre en jeu.

L’importation d’une machine virtuelle en utilisant le paramètre Copy copiera les fichiers de l’emplacement d’origine (C:\Exported_VM\) dans les chemins configurés du serveur Hyper-V. Lorsqu’il est utilisé avec GenerateNewId, la VM peut être importée plusieurs fois sur le même serveur Hyper-V avec un nouvel identifiant unique (UID).

Import-VM -Path '.\Alpine Linux 01\Virtual Machines\.vmcx' -Copy -GenerateNewId

Cette fois, la VM importée ne contient pas le même UID que lors de l’exportation. Vous voyez les anciens et nouveaux UIDs dans la capture d’écran ci-dessous :

Showing previous UID prior to import vs. new UID created with Copy and GenerateNewID parameters.

Hyper-V copie maintenant la VM vers les chemins par défaut que vous avez vus précédemment en important une VM à l’aide de Hyper-V Manager, mais donne à la VM un nouvel UID.

Étapes suivantes

Dans ce guide, vous avez appris comment exporter et importer une VM Hyper-V en utilisant PowerShell et le gestionnaire Hyper-V intégré.

Maintenant que vous savez comment exporter et importer des machines virtuelles Hyper-V, essayez de configurer l’activation automatique des machines virtuelles (AVMA) pour activer les machines virtuelles Windows Server hébergées sur Hyper-V.

Source:
https://adamtheautomator.com/export-hyper-v-vm/