Wie kann ich eine VM unter KVM + libvirt umbenennen?
Ich möchte, dass es den Namen im "Inventar" sowie den Namen des Lagers usw. ändert.
Wie kann ich eine VM unter KVM + libvirt umbenennen?
Ich möchte, dass es den Namen im "Inventar" sowie den Namen des Lagers usw. ändert.
Antworten:
Lauf
virsh dumpxml name_of_vm > name_of_vm.xml
Heben Sie die Definition der alten VM auf, um einen Fehler aufgrund einer doppelten UUID zu vermeiden.
virsh undefine name-of-vm
Bearbeiten Sie die XML-Datei und importieren Sie sie.
virsh define name_of_vm.xml
Natürlich müssen Sie den VM anhalten und starten, damit die Änderungen wirksam werden
virsh destroy name_of_vm
virsh start name_of_vm
virsh dumpxml myvm > foo.xml
<edit foo.xml, change the name, move storage>
virsh undefine myvm
virsh define foo.xml
Quelle: https://www.redhat.com/archives/libvirt-users/2010-October/msg00072.html
virsh
implementiert domrename
in Release 1.2.19: 02.09.2015. Die aktuelle Best Practice ist also nur:
virsh domrename oldname newname
Wie zu erwarten, muss die Domain gestoppt werden, sie kann jedoch auch keine Snapshots enthalten.
virsh edit newname
den Dateipfad ändern und mv oldname newname
das Verzeichnis umbenennen, wenn alles übereinstimmen soll.
Um viele Maschinen zu wechseln, können Sie dies verwenden:
virsh shutdown old-name
Warten Sie, bis der Vorgang abgeschlossen ist und führen Sie Folgendes aus:
virsh dumpxml old-name > old-name.xml
virsh undefine old-name
Warten Sie, bis der Vorgang abgeschlossen ist und führen Sie Folgendes aus:
sed -i 's/<name>old-name<\/name>/<name>new-name<\/name>/g' old-name.xml
virsh define old-name.xml
Führen Sie dies für jeden Computer einzeln aus. Sie können diesen RegExp verwenden, wenn Sie eine Liste haben, die Folgendes enthält 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
Ich mache es etwas anders und kann nicht empfohlene Methode sein (nicht sicher).
virsh destroy old-vm
virsh edit old-vm
In der XML-Änderung
virsh list --all
1 Old-VM-Abschaltung
2 neu-vm abschalten
Undefine jetzt das alte-vm
virsh undefine old-vm