Jak mogę zmienić nazwę maszyny wirtualnej na KVM + libvirt?
Chciałbym, aby zmieniła nazwę w „ekwipunku”, a także zmieniła nazwę magazynu itp.
Jak mogę zmienić nazwę maszyny wirtualnej na KVM + libvirt?
Chciałbym, aby zmieniła nazwę w „ekwipunku”, a także zmieniła nazwę magazynu itp.
Odpowiedzi:
biegać
virsh dumpxml name_of_vm > name_of_vm.xml
Zdefiniuj stary vm, aby zapobiec błędowi z powodu zduplikowanego UUID.
virsh undefine name-of-vm
Edytuj plik xml, a następnie zaimportuj go.
virsh define name_of_vm.xml
Oczywiście będziesz musiał zatrzymać i uruchomić vm, aby zmiany odniosły skutek
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
Źródło: https://www.redhat.com/archives/libvirt-users/2010-October/msg00072.html
virsh
zaimplementowane domrename
w wersji 1.2.19: 02 września 2015. Tak więc obecna najlepsza praktyka to:
virsh domrename oldname newname
Jak można się spodziewać, domena musi zostać zatrzymana, ale także nie może zawierać żadnych migawek.
virsh edit newname
zmienić ścieżkę mv oldname newname
do pliku i zmienić nazwę katalogu, jeśli chcesz, aby wszystko pasowało.
Aby zmienić wiele maszyn, możesz użyć tego:
virsh shutdown old-name
Poczekaj, aż powyżej zakończy się i uruchom:
virsh dumpxml old-name > old-name.xml
virsh undefine old-name
Poczekaj, aż powyżej zakończy się i uruchom:
sed -i 's/<name>old-name<\/name>/<name>new-name<\/name>/g' old-name.xml
virsh define old-name.xml
Uruchom to jeden po drugim dla każdej maszyny. Możesz użyć tego RegExp, jeśli masz listę zawierającą 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
Robię to trochę inaczej i może to być niezalecana metoda (nie jestem pewien).
virsh destroy old-vm
virsh edit old-vm
W zmianie XML
virsh list --all
1 odcięcie old-vm
2 odcięcie new-vm
Teraz niezdefiniuj stary vm
virsh undefine old-vm