Bagaimana cara membuat dupe VM KVM / libvirt / virt-manager?


12

Saya agak bingung dengan virt-manager / libvirt / KVM.

Saya memiliki KVM VM (Windows XP) yang berfungsi dengan baik.

VM didukung oleh file 4GB atau lebih (a .img ).

Sekarang saya ingin melakukan sesuatu yang sangat sederhana: Saya ingin menduplikasi VM saya.

Saya pikir "OK, tidak masalah, mari kita salin file 4GB dan salin file XML" .

Tetapi kemudian FAQ libvirt menyatakan dalam huruf besar semua: "Anda TIDAK PEDULI DI MANA XML TERSIMPAN"

FAQ libvirt

OK baik, aku seharusnya tidak peduli. Tapi bagaimana cara saya menduplikasi VM saya?

Saya ingin membuat VM baru yang merupakan salinan dari VM itu.

Jawaban:


3

virshakan memungkinkan Anda untuk mengedit, mengekspor, dan mengimpor definisi XML untuk server Anda. Saya akan menggunakan virt-cloneuntuk menghasilkan file gambar kloning, dan mengekspor XML. Agar aman saya akan menghapus konfigurasi klon dari server asli.


41

Yang paling mudah adalah:

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

Yang akan membuat salinan this-vm, bernama that-vm, dan menangani duplikasi perangkat penyimpanan. Tidak ada yang baru di sini kecuali detail.

Lebih penting lagi, Apa yang dikatakan FAQ adalah bahwa deskripsi domain XML tidak dapat langsung diedit, Anda harus melalui libvirt. Untuk menyelesaikan langkah-langkah yang diambil oleh virt-cloneperintah, Anda dapat:

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"

Ini juga berfungsi untuk menyalin melalui VM ke host lain: gunakan sftp alih-alih cp, (mungkin) ubah jalur gambar sebelum 'mendefinisikan' vm baru dan sftp juga the-vm.xml ke host lain.
Andreas Florath

Terima kasih untuk ini, menyelamatkan saya banyak waktu. Masalah yang saya miliki adalah mengkloning vs membuat yang baru, karena jika saya membuat node baru, versi paket akan tidak sinkron dengan node lain yang menggunakan mirror lokal.
Mike Purcell

Apakah virt-clonemenangani enkripsi disk lengkap dengan benar? Artinya, akankah ia meminta saya mendekripsi sebelum melakukan hal itu?
seorang pembuat kode

Saya pikir itu sed -i "s/$source_vm/$new_vm" "/tmp/$new_vm.xml"harus membaca sed -i "s/$source_vm/$new_vm/" "/tmp/$new_vm.xml"atau setidaknya pada sed turunan debian saya tentang trailing yang hilang /. Terima kasih atas informasinya juga, klon virsh saya tidak berfungsi sama sekali.
nomor

2

Selain "virt-clone" Anda dapat menduplikasi VM dengan cara ini:

  1. Pastikan bahwa VM yang ada (akan diduplikasi) dimatikan.
  2. lakukan "sudo virsh dumpxml <domid>" dari VM yang ada, dan simpan file output xml.
  3. Ubah tag <name> di bawah tag <domain>.
  4. Gunakan "uuidgen" untuk menghasilkan ID unik baru, dan menggunakannya untuk memodifikasi tag <uuid> yang ada.
  5. Buat salinan dari gambar virtual qcow yang ada yang digunakan VM, (biasanya disimpan di / var / lib / libvirt / images, tetapi untuk memastikan hanya membaca file XML Anda untuk lokasi yang tepat). Perintahnya adalah "sudo cp /var/lib/libvirt/images/xxx.qcow2 yyyy.qcow2", dan isi file baru yyyy.qcow2 dalam file XML.
  6. Mulai vm baru: sudo virsh define new.xml
  7. Mulai domid baru: sudo virsh start <new_domid>



0

Tampaknya kloning adalah jalan yang harus ditempuh.

Saya mencoba menduplikasi XML tetapi tidak akan muncul di bawah virt-manager.

Saya masih bertanya-tanya bagaimana saya bisa mentransfer XML + .img ke sistem baru yang mengatakan ...


0

Perintah berikut ini berfungsi untuk saya (Harus mematikan VSA / Vm sebelum menjalankan perintah)

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

1
Selain dari nama VM pseudo, ini identik dengan perintah dari jawaban tiga tahun - tetapi tidak memiliki informasi tambahan dari jawaban itu.
G-Man Mengatakan 'Reinstate Monica'

0

virt-clone --auto-clone tampaknya tidak bermain bagus dengan LVM. Saya mengharapkannya untuk membuat snapshot dan menggunakannya, tetapi malah menyalin semua data.

Lebih baik melakukan rute dumpxml / define; dan ingat untuk memasang sistem file root klon dan mengubah alamat IP dan nama host dengan benar sebelum memulai yang asli dan klon.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.