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.