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 unXML
fichier.$ virsh dumpxml nom-vm> /path/to/xm_file.xml$ virsh dumpxml ubuntu20.04-clone> ~/Documents/ubuntu.xmlMaintenant, 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 laroot
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.xmlVous 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.gitLe 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.shVous 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.shConclusion
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.