KVM / libvirt / virt-manager VM'nin bir kopyasını nasıl oluşturabilirim?


13

Virt-manager / libvirt / KVM ile biraz kayboldum.

Güzel çalışan bir KVM VM (Windows XP) var.

Sanal Makine 4GB'lık bir dosya ile desteklenmektedir ( .img ).

Şimdi çok basit bir şey yapmak istiyorum: VM'mi çoğaltmak istiyorum.

"Tamam, sorun değil, 4GB dosyasını ve XML'yi kopyalayalım" dosyasını düşündüm .

Ama sonra libvirt SSS tüm büyük harflerle belirtilir: "XML KAYDEDİLDİĞİ YERİ BAKMAMALISINIZ "

libvirt SSS

Tamam, umrumda değil. Ama sonra VM'mi nasıl çoğaltırım?

O VM'nin bir kopyası olan yeni bir VM oluşturmak istiyorum.

Yanıtlar:


4

virshsunucularınız için XML tanımını düzenlemenize, dışa aktarmanıza ve içe aktarmanıza olanak tanır. Ben kullanacağı virt-clonebir klonlanmış görüntü dosyası oluşturmak için, ve XML ihracat. Güvende olmak için klon yapılandırmasını orijinal sunucudan kaldıracağım.


42

En uygun olanı basitçe:

# virt-clone --connect=qemu://example.com/system -o this-vm -n that-vm --auto-clone

Hangi bir kopyasını yapacak this-vm, adlandırılmış that-vmve çoğaltma depolama aygıtları ilgilenir. Burada detay dışında yeni bir şey yok.

Daha da önemlisi, ne SSS söylediğini XML alanı tanımları doğrudan düzenlenemez olmasıdır, gitmek gerekir yoluyla uyarlanması, libvirt. virt-cloneKomut tarafından atılan adımları tamamlamak için şunları yapabilirsiniz:

source_vm=vm_name
new_vm=new_vm_name

# You cannot "clone" a running vm, stop it.  suspend and destroy
# are also valid options for less graceful cloning
virsh shutdown "$source_vm"

# copy the storage.
cp /var/lib/libvirt/images/{"$source_vm","$new_vm"}.img

# dump the xml for the original
virsh dumpxml "$source_vm" > "/tmp/$new_vm.xml"

# hardware addresses need to be removed, libvirt will assign
# new addresses automatically
sed -i /uuid/d "/tmp/$new_vm.xml"
sed -i '/mac address/d' "/tmp/$new_vm.xml"

# and actually rename the vm: (this also updates the storage path)
sed -i "s/$source_vm/$new_vm" "/tmp/$new_vm.xml"

# finally, create the new vm
virsh define "/tmp/$new_vm.xml"
virsh start "$source_vm"
virsh start "$new_vm"

Bu aynı zamanda bir VM üzerinden başka bir ana bilgisayara kopyalamak için de çalışır: cp yerine sftp kullanın, (olası) yeni vm 'sini' tanımlamadan önce görüntü yolunu değiştirin ve ayrıca o-vm.xml dosyasını diğer ana bilgisayara da tanımlayın.
— Andreas Florath

Bunun için teşekkürler, bana zaman kazandırdı. Sahip olduğum sorun, yeni bir düğüm oluşturursam, paket sürümlerinin yerel bir ayna kullanan diğer düğümlerle senkronize olmaması nedeniyle klonlama ve yeni oluşturma.
— Mike Purcell

Does virt-clonedoğru tam disk şifrelemesi ele? Anlamı, bir şey yapmadan önce şifresini çözmek için benden isteyecek mi?
— bir kodlayıcı

Bence ya da en azından benim debian türev sed şikayetleri eksik bir firar sed -i "s/$source_vm/$new_vm" "/tmp/$new_vm.xml"okur gerekir sed -i "s/$source_vm/$new_vm/" "/tmp/$new_vm.xml". Bilgi için teşekkürler, virsh-klonum hiç çalışmıyor.
— sayı9

3

"Virt-clone" dışında VM'yi şu şekilde çoğaltabilirsiniz:

  1. Mevcut VM'nin (çoğaltılacak) kapalı olduğundan emin olun.
  2. varolan VM'nin bir "sudo virsh dumpxml <domid>" yapın ve çıktı xml dosyasını kaydedin.
  3. <Domain> etiketinin altındaki <name> etiketini değiştirin.
  4. Yeni bir benzersiz kimlik oluşturmak için "uuidgen" kullanın ve bunu mevcut <uuid> etiketini değiştirmek için kullanın.
  5. VM'nin kullandığı mevcut qcow sanal görüntülerinin bir kopyasını oluşturun (genellikle / var / lib / libvirt / images'de saklanır, ancak kesin konum için XML dosyanızı okuduğunuzdan emin olun). Komut "sudo cp /var/lib/libvirt/images/xxx.qcow2 yyyy.qcow2" dir ve XML dosyasına yyyy.qcow2 adlı yeni dosyayı girin.
  6. Yeni vm'yi başlatın: sudo virsh define new.xml
  7. Yeni domid'i başlatın: sudo virsh start <new_domid>



0

Görünüşe göre virt-clone gitmek için bir yoldur.

XML'i çoğaltmayı denedim ancak virt-manager altında görünmez.

Hala bir XML + .img nasıl yeni bir sisteme aktarabilirsiniz merak ediyorum ...


0

Aşağıdaki komut benim için çalıştı (Komutu çalıştırmadan önce VSA / Vm'yi kapatmanız gerekiyor)

# virt-clone --connect=qemu:///system -o present_vsa/vm_name -n vsa/vm_to_be_cloned_name --auto-clone

1
Yalancı VM isimlerinin yanı sıra, bu üç yaşındaki cevabın komutuyla aynıdır - ancak bu cevaptan ek bilgi eksiktir.
— G-Man, 'Monica'yı Yeniden Başlat' diyor

0

virt-clone --auto-clone LVM ile iyi oynamıyor gibi görünüyor. Bir anlık görüntü oluşturmak ve kullanmak için bekliyordum, ancak bunun yerine tüm verileri kopyalar.

Dumpxml / define route yapmak daha iyi; ve orijinalin ve klonun başlatılmasından önce klonun kök dosya sistemini bağlamayı ve IP adreslerini ve ana bilgisayar adını uygun şekilde değiştirmeyi unutmayın.

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.