libvirt + KVM kullanarak bir VM nasıl yeniden adlandırılır


24

Bir VM'yi KVM + libvirt'te nasıl yeniden adlandırabilirim?

Depodaki ismi değiştirmenin yanı sıra 'envanterdeki' adını değiştirmesini istiyorum.


3
Bu soruyu sorduktan sonra, libvirt projesindeki ince insanlar 'virsh edit my-vm-name' komutunu eklediler.
Arthur Ulfeldt

Yanıtlar:


18

koşmak

virsh dumpxml name_of_vm > name_of_vm.xml

Yinelenen bir UUID nedeniyle bir hatayı önlemek için eski vm'yi tanımlayın.

virsh undefine name-of-vm

Xml dosyasını düzenleyin ve ardından içe aktarın.

virsh define name_of_vm.xml

Elbette değişikliklerin etkili olması için vm'yi durdurmanız ve başlatmanız gerekecek

virsh destroy name_of_vm
virsh start name_of_vm

5
bir adım eklemeniz gerekir: (vm'yi yeni isimle tanımlamadan önce) "virsh undefine-of-vm" aksi halde yinelenen UUID'den şikayetçi olur.
Arthur Ulfeldt

1
Ayrıca hd.img dosyasını yeniden adlandırmak ve xml dosyasındaki satırı düzenlemek zorunda kaldım
Arthur Ulfeldt

Doğru sıra diğer cevapta. Eski makineyi kullanmıyorsanız img'yi yeniden adlandırmanız gerekmez.
Nux

1
Bu cevap şimdi güncel değil. Aşağıdaki cevaba bakınız. TLDR; virsh şimdi bir ad var.
reedstrm


13

virshdomrename1.2.19: 02.02.2015 tarihli sürümde uygulanmıştır .

 virsh domrename oldname newname

Beklediğiniz gibi etki alanı durdurulmalı, ancak aynı zamanda herhangi bir anlık görüntü bulunamıyor.


+1 - virsh edit newnamedosya yolunu değiştirebilir ve mv oldname newnameher şeyi eşleştirmek istiyorsanız dizini yeniden adlandırabilirsiniz.
sonraki duyuruya kadar duraklatıldı.

Başka bir deyişle, 1) /var/lib/libvirt/images/newname.qcow2 içinde /var/lib/libvirt/images/oldname.qcow2 ismini değiştirmek zorundasınız; ve 2) doğru kaynak dosyasını ayarlamak için /etc/libvirt/qemu/newname.xml dosyasını düzenleyin <kaynak dosyası = '/ var / lib / libvirt / images / newname.qcow2'
MaxiReglisse

Eğer DOMAINNAMES maç için dosya adlarını gereken tek ama eğer (itiraf, uygun) - bu / döngüsünü yaratmak olsa hala bir durak (ve hiçbir anlık) gerektirir destroy önler
reedstrm

5

Birçok makineyi değiştirmek için bunu kullanabilirsiniz:

virsh shutdown old-name

Bitirmek ve çalıştırmak için yukarıdaki bekleyin:

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

Bitirmek ve çalıştırmak için yukarıdaki bekleyin:

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

Her makine için bunu birer birer çalıştırın. Aşağıdakileri içeren bir listeniz varsa, bu RegExp'i kullanabilirsiniz 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

Biraz farklı yapıyorum ve önerilmeyen bir yöntem olabilir (emin değilim).

virsh destroy old-vm virsh edit old-vm

XML değişikliğinde

  1. etki alanı adı old-vm ila new-vm
  2. UUID kaydında bir karakter / rakam değiştirin ve çıkın.

virsh list --all

1 old-vm kapanma

2 yeni vm kapatma

Şimdi eski-vm'yi tanımla

virsh undefine old-vm

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.