comment renommer une machine virtuelle à l'aide de libvirt + KVM


24

Comment renommer une VM sur KVM + libvirt?

Je voudrais qu'il change le nom dans l'inventaire ainsi que le nom du stockage, etc.


3
après avoir posé cette question, les gens du projet libvirt ont ajouté la commande «virsh edit my-vm-name».
— Arthur Ulfeldt

Réponses:


18

courir

virsh dumpxml name_of_vm > name_of_vm.xml

Annulez la définition de l'ancien VM pour éviter une erreur en raison d'un UUID en double.

virsh undefine name-of-vm

Modifiez le fichier xml puis importez-le.

virsh define name_of_vm.xml

Bien sûr, vous devrez arrêter et démarrer le VM pour que les modifications prennent effet

virsh destroy name_of_vm
virsh start name_of_vm

5
besoin d'ajouter une étape: (avant de définir le vm avec le nouveau nom) "virsh undefine name-of-vm" sinon il se plaint de dupliquer l'UUID.
— Arthur Ulfeldt

1
j'ai également dû renommer le fichier hd.img et modifier la ligne dans le fichier xml
— Arthur Ulfeldt

L'ordre correct est dans l'autre réponse. Vous n'avez pas à renommer img si vous n'utilisez pas l'ancienne machine.
— Nux

1
Cette réponse est désormais obsolète. Voir ma réponse ci-dessous. tldr; virsh a maintenant un nom de domaine.
— reedstrm


13

virshimplémenté domrenamedans la version 1.2.19: 02 septembre 2015. La meilleure pratique actuelle est donc simplement:

 virsh domrename oldname newname

Comme vous pouvez vous y attendre, le domaine doit être arrêté, mais il ne peut pas non plus avoir de clichés.


+1 - vous pouvez virsh edit newnameet changer le chemin du fichier et mv oldname newnamerenommer le répertoire si vous voulez que tout corresponde.
— pause jusqu'à nouvel ordre.

en d'autres termes, vous devez également 1) renommer /var/lib/libvirt/images/oldname.qcow2 dans /var/lib/libvirt/images/newname.qcow2; et 2) éditez /etc/libvirt/qemu/newname.xml pour définir le fichier source correct balise <source file = '/ var / lib / libvirt / images / newname.qcow2'
— MaxiReglisse

mais seulement si vous avez besoin que les noms de fichiers correspondent aux noms de domaine (ce qui, je l'avoue, est pratique) - cela évite un cycle de destruction / création, mais nécessite toujours un arrêt (et pas d'instantanés)
— reedstrm

5

Pour changer de nombreuses machines, vous pouvez utiliser ceci:

virsh shutdown old-name

Attendez ci-dessus pour terminer et exécuter:

virsh dumpxml old-name > old-name.xml
virsh undefine old-name

Attendez ci-dessus pour terminer et exécuter:

sed -i 's/<name>old-name<\/name>/<name>new-name<\/name>/g' old-name.xml
virsh define old-name.xml

Exécutez-le un par un pour chaque machine. Vous pouvez utiliser ce RegExp si vous avez une liste contenant old-name new-name:

([^\r\n]+?)[ \t]+([^\r\n]+)
virsh shutdown $1\n#WAIT!\nvirsh dumpxml $1 > $1.xml\nvirsh undefine $1\n\#WAIT!\nsed -i 's/<name>$1<\\/name>/<name>$2<\\/name>/g' $1.xml\nvirsh define $1.xml\n

0

Je le fais un peu différemment et peut être une méthode non recommandée (pas sûr).

virsh destroy old-vm virsh edit old-vm

Dans le changement XML

  1. nom de domaine ancien-vm à nouveau-vm
  2. changer un caractère / chiffre dans la sauvegarde et la sortie de l'UUID.

virsh list --all

1 arrêt old-vm

2 nouveaux vm d'arrêt

Maintenant, définissez l'ancien vm

virsh undefine old-vm

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.