Frage wie man eine VM mit libvirt + KVM umbenennt


Wie kann ich eine VM auf KVM + libvirt umbenennen?

Ich möchte, dass der Name im 'Inventar' geändert wird und der Name des Speichers usw. geändert wird.


24
2017-11-18 08:08


Ursprung


Nachdem ich diese Frage gestellt habe, haben die netten Leute im libvirt-Projekt den Befehl 'virsh edit my-vm-name' hinzugefügt. - Arthur Ulfeldt


Antworten:


Lauf

virsh dumpxml name_of_vm > name_of_vm.xml

Definieren Sie die alte VM neu, um einen Fehler aufgrund einer doppelten UUID zu verhindern.

virsh undefine name-of-vm

Bearbeiten Sie die XML-Datei und importieren Sie sie anschließend.

virsh define name_of_vm.xml

Natürlich müssen Sie die vm stoppen und starten, damit die Änderungen wirksam werden

virsh destroy name_of_vm
virsh start name_of_vm

17
2017-11-18 08:24



Es muss ein Schritt hinzugefügt werden: (bevor der vm mit dem neuen Namen definiert wird) "virsh undefined name-of-vm", sonst klagt er über doppelte UUID. - Arthur Ulfeldt
Ich musste auch die Datei hd.img umbenennen und die Zeile in der XML-Datei bearbeiten - Arthur Ulfeldt
Die richtige Reihenfolge ist in der anderen Antwort. Sie müssen img nicht umbenennen, wenn Sie den alten Rechner nicht benutzen. - Nux
Diese Antwort ist jetzt veraltet. Siehe meine Antwort unten. tldr; virsh hat jetzt Domrennen. - reedstrm


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


14
2017-11-28 15:08





virsh implementiert domrename in der Version 1.2.19: Sep 02 2015. Die aktuelle Best Practice lautet also:

 virsh domrename oldname newname

Wie Sie vielleicht erwarten, muss die Domäne gestoppt werden, aber auch keine Snapshots.


10
2017-09-02 14:42



+1 - Sie können virsh edit newname und ändere den Dateipfad und mv oldname newname Um das Verzeichnis umzubenennen, wenn alles übereinstimmen soll. - Dennis Williamson


Um viele Maschinen zu ändern, können Sie dies verwenden:

virsh shutdown old-name

Warten Sie auf oben, um zu beenden und auszuführen:

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

Warten Sie auf oben, um zu beenden und auszuführen:

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

Führen Sie diese nacheinander für jede Maschine aus. Sie können diese RegExp verwenden, wenn Sie eine Liste mit enthalten 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

5
2017-10-08 10:58





Ich mache es etwas anders und kann eine unempfohlene Methode sein (nicht sicher).

virsh destroy old-vm virsh edit old-vm

In der XML-Änderung

  1. Domänenname old-vm in new-vm
  2. Ändern Sie ein Zeichen / eine Ziffer in UUID speichern und schließen.

virsh list --all

1 Alt-VM-Abschaltung

2 neue-vm-Abschaltung

Entscheide jetzt den alten-vm

virsh undefine old-vm


0
2017-09-03 06:42