web-dev-qa-db-fra.com

Comment créer une DUPE d'un VM KVM / LIBVIRT / VIRT-Manager?

Je suis un peu perdu avec virt-manager/libvirt/kvm.

J'ai un travail de travail KVM VM (Windows XP) qui fonctionne bien.

Le VM est sauvegardé par un fichier 4 Go ou donc (A . IMG ).

Maintenant, je veux faire quelque chose de très simple: je veux dupliquer mon VM.

Je pensais "OK, pas de problème, copiez le fichier 4GB et copier le fichier XML" .

Mais ensuite le libvirt FAQ états dans tous les majuscules: "Vous ne devez pas vous soucier d'où le xml IS stocké"

Libvirt FAQ

Ok bien, je ne devrais pas m'en soucier. Mais alors comment puis-je dupliquer mon VM?

Je veux créer un nouveau VM== une copie de ce VM.

13
SyntaxT3rr0r

virsh permettra de modifier, d'exporter et d'importer la définition XML pour vos serveurs. J'utiliserais virt-clone Pour générer un fichier image cloné et exporter le XML. Pour être en sécurité, je supprimerais la configuration du clone du serveur d'origine.

4
BillThor

Le plus pratique est simplement:

# virt-clone --connect=qemu://example.com/system -o this-vm -n that-vm --auto-clone

Qui fera une copie de this-vm, nommé that-vm, et prend soin de la duplication des périphériques de stockage. Rien de nouveau ici sauf le détail.

Plus au point, ce que le FAQ est-il dit, c'est que les descriptions de domaine XML ne sont pas directement modifiables, vous devez aller -via libvirt. Pour compléter les étapes prises par les virt-clone commande, vous pourriez:

source_vm=vm_name
new_vm=new_vm_name

# You cannot "clone" a running vm, stop it.  suspend and destroy
# are also valid options for less graceful cloning
virsh shutdown "$source_vm"

# copy the storage.
cp /var/lib/libvirt/images/{"$source_vm","$new_vm"}.img

# dump the xml for the original
virsh dumpxml "$source_vm" > "/tmp/$new_vm.xml"

# hardware addresses need to be removed, libvirt will assign
# new addresses automatically
sed -i /uuid/d "/tmp/$new_vm.xml"
sed -i '/mac address/d' "/tmp/$new_vm.xml"

# and actually rename the vm: (this also updates the storage path)
sed -i "s/$source_vm/$new_vm" "/tmp/$new_vm.xml"

# finally, create the new vm
virsh define "/tmp/$new_vm.xml"
virsh start "$source_vm"
virsh start "$new_vm"

Autre que "virt-clone", vous pouvez dupliquer le VM de cette façon:

  1. Assurez-vous que l'existant VM (à dupliquer) est arrêté.
  2. faites une "Sudo Virseh DumdxML <Domid>" de la machine virtuelle existante, puis enregistrez le fichier XML de sortie.
  3. Modifiez la balise <nom> sous la balise <domaine>.
  4. Utilisez "UUIDGEN" pour générer un nouvel identifiant unique et utiliser cela pour modifier la balise <UUID> existante.
  5. Faites une copie des images virtuelles Qcow existantes que les utilisations VM _ (généralement stockées dans/var/libvirt/images/images, mais assurez-vous simplement de lire votre fichier XML pour un emplacement exact). La commande est "sudo cp /var/lib/lib/lib/lib/lib/lib/lib/lib/lib/lib/lib2" et remplissez le nouveau fichier yyyy.qcow2 dans le fichier XML.
  6. Démarrer le nouveau VM: sudo virts définir nouveau.xml
  7. Démarrez le nouveau Domid: Sudo Virsh Début <NEW_DOMID>


3
Peter Teoh

Apparemment virt-clone est la voie à suivre.

J'ai essayé de faire dupliquer le XML mais cela n'apparaîtrait pas sous virtif.

Je me demande toujours comment je peux transférer un XML + .IMG à un nouveau système qui a dit ...

0
SyntaxT3rr0r

La commande suivante a fonctionné pour moi (doit arrêter VSA/VM avant d'exécuter la commande)

# virt-clone --connect=qemu:///system -o present_vsa/vm_name -n vsa/vm_to_be_cloned_name --auto-clone
0
vishu

virt-clone --Auto-clone ne semble pas jouer bien avec LVM. Je m'attendais à ce qu'il crée un instantané et d'utiliser cela, mais il copie à la place toutes les données.

Mieux vaut faire la voie de démarrage/définir; Et n'oubliez pas de monter le système de fichiers racine du clone et de modifier les adresses IP et le nom d'hôte de manière appropriée avant de commencer l'original et le clone.

0
Wombat