GNU/Linux >> Tutoriels Linux >  >> Linux

Comment exporter et importer des machines virtuelles KVM sous Linux

Dans cet article, je vais vous guider à travers les étapes pour exporter le disque et les configurations de la machine virtuelle KVM et les importer plus tard dans la même machine ou dans une autre machine. Je vais également vous montrer comment exporter et importer des machines virtuelles KVM avec un script Bash.

Présentation

Récemment, j'ai changé d'hyperviseur depuis Oracle VirtualBox vers KVM pour ses fonctionnalités natives et ses performances. D'après mes tests, les machines virtuelles KVM fonctionnent rapidement par rapport aux machines virtuelles Virtualbox.

Il est toujours important de sauvegarder périodiquement vos machines virtuelles. Ainsi, en cas de divergence, vous pouvez utiliser l'image de sauvegarde pour restaurer la machine virtuelle. L'exportation et l'importation de machines virtuelles KVM est un processus en deux étapes.

  • Tout d'abord, vous devez vérifier où les images disque sont stockées et copier l'image disque dans un emplacement de sauvegarde.
  • Deuxièmement, exportez les configurations de la machine, afin qu'elles puissent être utilisées ultérieurement pour créer le domaine.

Définition de machine virtuelle

Il existe deux façons d'obtenir des informations sur le domaine de la machine virtuelle. Soit vous pouvez utiliser le "Virsh" programme ou utilisez "Virt-manager" .

Vous pouvez obtenir le nom de la VM à partir du Virt-manager ou en exécutant le virsh suivant commande.

$ virsh list --all Id Nom État----------------------------------------- - Linux_Mint_20 éteindre - mxlinux éteindre - popos_21_10 éteindre - rocky_linux_8 éteindre - ubuntu20.04 éteindre - ubuntu20.04-clone éteindre

Vous pouvez exécuter la commande suivante pour afficher les informations de domaine entières (configuration de machine virtuelle) sur une machine virtuelle particulière. Cela affichera le résultat au format XML.

$ virsh dumpxml nom_mv | moins
$ virsh dumpxml ubuntu20.04-clone | moins

Vous pouvez également saisir une configuration de machine particulière en la redirigeant vers le grep commande. Supposons que vous souhaitiez afficher l'allocation de mémoire, vous pouvez exécuter la commande suivante.

$ virsh dumpxml ubuntu20.04-clone | grep -i "MEMORY" 5632000 5632000

Si vous préférez Virt-manager, vous pouvez récupérer ces informations au format XML en appuyant sur l'onglet XML sous la section "afficher le matériel virtuel".

Emplacement du disque de la machine virtuelle

Les disques de la machine virtuelle sont créés en qcow2 format. Par défaut, le disque de la machine virtuelle est stocké dans le répertoire /var/lib/libvirt/images/ sauf si vous avez explicitement stocké le disque dans un répertoire séparé.

Exécutez la commande suivante pour obtenir le chemin du répertoire du disque.

$ virsh dumpxml ubuntu20.04-clone | grep -i "source"  

Depuis le Virt-manager, sous la rubrique Aperçu section, recherchez le <disk> rubrique.

Si vous avez utilisé différents chemins pour stocker les images de disque et si vous souhaitez connaître tous les chemins de disque de VM, vous pouvez exécuter l'extrait suivant à partir du terminal ou du script shell.

VM_NAMES=($(virsh list --all| awk '(NR>2)' | awk '{ print $2 }'))pour la VM dans ${VM_NAMES[@]} ; do DISK_PATH=$(virsh dumpxml ${VM} | grep -i "  

Exporter les informations de domaine et copier le disque

Maintenant que vous savez comment obtenir le chemin du disque et les informations de domaine, il est temps d'exporter les informations de domaine pour une machine virtuelle et de copier l'image disque à un autre emplacement.

Pour exporter les informations de domaine, vous pouvez exécuter le suivant "virsh dumpxml " et stocker la sortie dans un XML fichier.

$ virsh dumpxml nom-vm> /path/to/xm_file.xml
$ virsh dumpxml ubuntu20.04-clone> ~/Documents/ubuntu.xml

Maintenant, copiez l'image disque à un endroit différent qui pourra être utilisé plus tard.

$ sudo cp /var/lib/libvirt/images/ubuntu20.04-clone.qcow2 ~/Documents/

Le processus d'exportation est terminé. C'est aussi simple que ça !

Attention : Vous devez utiliser sudo ou copiez le disque avec la root utilisateur car le disque appartient à l'utilisateur root.

Importer une machine virtuelle KVM

Pour importer la machine virtuelle KVM, vous devez définir le domaine à partir du fichier XML exporté en exécutant la commande suivante.

$ virsh define --file 
$ virsh define –file ~/Documents/ubuntu.xml

Vous pouvez maintenant vérifier le Virt-manager ou exécuter le virsh commande, le domaine doit être créé avec succès. Vous devez copier l'image disque dans le chemin du répertoire défini dans le fichier XML. Dans mon cas, c'est l'emplacement par défaut /var/lib/libvirt/images/ .

$ sudo cp ~/Documents/ubuntu20.04-clone.qcow2 /var/lib/libvirt/images/

Le processus d'importation est terminé. Vous pouvez maintenant démarrer la machine virtuelle.

Un script bash pour exporter et importer des machines virtuelles KVM

J'ai créé un script bash qui se chargera d'exporter toutes les images de configuration et de disque. Si vous êtes intéressé, vous pouvez jeter un œil à ce script dans mon dépôt GitHub . Vos suggestions pour améliorer ce script seront très appréciées.

#!/usr/bin/env bash# ------------------------------------- -------------------------------------------------- -------------# AUTEUR :KARTHICK S# BUT :CE SCRIPT EXPORTERA/IMPORTERA LA CONFIG ET LE DISQUE VM. ## utilisation :# la fonction d'exportation se chargera d'exporter le nécessaire pour toutes les VM. Exécuter en tant que " export"# la fonction d'importation se chargera d'importer le nécessaire pour toutes les VM. Exécuter en tant que " import"## REMARQUE :N'ajoutez pas de / à la fin du répertoire lorsque vous indiquez le chemin d'exportation et d'importation.#-------------------- -------------------------------------------------- --------------------------------# Déclenchez le script avec l'utilisateur root ou exit.if [[ ${UID} - ne 0 ]] ; then echo -e "[EXIT] - Exécutez le script en tant qu'utilisateur root ou avec le privilège sudo..." exitfifunction export_vm(){ # Récupère l'emplacement d'exportation. read -p "Fournir le chemin du répertoire où le disque et les fichiers de configuration doivent être exportés :" EXPORT_LOCATION # Créer le répertoire de destination s'il n'existe pas. [[ -d ${EXPORT_LOCATION} ]] || mkdir -p ${EXPORT_LOCATION} # Exportation de la configuration à l'aide de la commande virsh dumpxml. VM_NAMES=($(virsh list --all| awk '(NR>2)' | awk '{ print $2 }')) pour la VM dans ${VM_NAMES[@]} ; do virsh dumpxml ${VM}> ${EXPORT_LOCATION}/${VM}.xml done # À l'aide de rsync, copiez l'intégralité du répertoire à partir de l'emplacement par défaut. echo -e "\n[ Copie d'images disque ]\n" &&sudo rsync -avxp --progress /var/lib/libvirt/images ${EXPORT_LOCATION} echo -e "\n[ Fichiers exportés ] \n" &&ls - lR ${EXPORT_LOCATION}} function import_vm(){ # Récupère l'emplacement source. read -p "Fournit le chemin du répertoire où le disque et les fichiers de configuration sont stockés :" SOURCE_LOCATION # Génère une erreur si le répertoire n'est pas disponible et quitte. [[ -d ${SOURCE_LOCATION} ]] || { echo "Répertoire non disponible" ; sortie 1; } # Copiez tous les fichiers à l'emplacement du disque par défaut. echo -e "[ Copie d'images disque ]\n" &&sudo rsync -avxp --progress ${SOURCE_LOCATION}/images /var/lib/libvirt/ if [[ $? -eq 0 ]] ; then # Define VM echo -e "\n[ Defining VM ]\n" for XML_FILE in ${SOURCE_LOCATION}/*.xml; do virsh define --file ${XML_FILE} done echo -e "\n[ Imported VM List ]\n" &&virsh list --all fi}case $1 in export ) export_vm;; importer ) import_vm;; *) echo -e "UTILISATION :kvm_export_import.sh export - Exporter la configuration et diskkvm_export_import.sh importer - Définir la VM et copier le disque" ; quitter esac

L'utilisation de ce script est la suivante.

Vous pouvez exécuter la commande suivante pour cloner l'essentiel à partir de GitHub.

$ git clone https://gist.github.com/d6c671597592fe5634a39b7974bc8029.git

Le script effectue la sauvegarde (c'est-à-dire l'exportation) ainsi que la restauration (c'est-à-dire la restauration).

Exportons la machine virtuelle KVM en utilisant ce script comme ci-dessous.

Exportation de $ sudo bash kvm_export_import.sh

Vous devez fournir le chemin du répertoire où le fichier XML et l'image disque doivent être copiés/exportés. Ne pas ajouter de / à la fin barre oblique lors de l'attribution du répertoire d'exportation. Il copiera d'abord l'image disque (.qcow2 ) et exécutez le "virsh dumpxml " commande pour exporter toutes les configurations.

L'image ci-dessous montre comment fonctionne l'exportation.

Lorsque vous passez "import " comme argument, il copiera d'abord l'image disque à l'emplacement par défaut /var/lib/libvirt/ et exécutez le "virsh define " commande contre tous les fichiers XML d'exportation.

Importation de $ sudo bash kvm_export_import.sh

Conclusion

Dans cet article, je vous ai montré comment exporter la machine virtuelle KVM et les importer dans la même machine ou dans une machine différente. Construire la machine virtuelle à partir de zéro est une tâche qui prend du temps. Donc, une stratégie appropriée à suivre pour protéger les images contre la perte en raison de toute situation. Si vous avez des astuces ou des conseils pour cet article, nous aimerions les entendre de votre part.

J'espère que cela vous aidera.


Linux
  1. Comment supprimer des machines virtuelles basées sur KVM sur Redhat Linux

  2. Comment cloner des machines virtuelles basées sur KVM sur Redhat Linux

  3. Comment exporter et importer des paramètres DNS dans CloudFlare

  4. Quickemu – Exécutez des machines virtuelles Windows, macOS et Linux

  5. Comment ajouter de la mémoire, vCPU, disque dur à la machine virtuelle Linux KVM

Comment installer KVM et créer des machines virtuelles sur Ubuntu 16.04 LTS

Comment installer et configurer KVM sur Ubuntu Linux

Comment créer et gérer des machines virtuelles dans KVM

Comment importer une exportation de machine virtuelle sur Windows Server 2012

Comment vérifier la taille des fichiers et du répertoire sous Linux

Comment augmenter l'espace disque virtuel de la machine virtuelle sur VirtualBox et VMware