Saya bertanya-tanya apa cara yang benar untuk memindahkan VM antara dua host KVM tanpa menggunakan segala jenis penyimpanan bersama
Apakah menyalin file disk dan dump XML dari mesin sumber KVM ke tujuan cukup? Jika demikian, perintah apa yang perlu dijalankan untuk mengimpor vm di tujuan?
OS adalah Ubuntu pada Dom0 dan DomU.
Terima kasih sebelumnya
kvm-virtualization
ubuntu-12.04
Onitlikesonic
sumber
sumber
/dev/mapper/vgname-lvname
sanaKarena saya belum bisa berkomentar, saya harus memposting adendum ini untuk jawaban dyasny dengan cara ini.
Jika VM memiliki snapshot yang ingin Anda pertahankan, Anda harus membuang file xml snapshot pada sumber dengan
virsh snapshot-dumpxml $dom $name > file.xml
untuk setiap snapshot dalam daftar snapshot dari VMvirsh snapshot-list --name $dom
.Kemudian pada tujuan digunakan
virsh snapshot-create --redefine $dom file.xml
untuk menyelesaikan migrasi snapshot.Jika Anda juga peduli tentang snapshot mana yang saat ini, maka lakukan juga pada sumber:
virsh snapshot-current --name $dom
dan pada tujuan:
virsh snapshot-current $dom $name
Kemudian Anda dapat menggunakan
virsh snapshot-delete --metadata $dom $name
setiap snapshot untuk menghapus file xml pada sumbernya, atau Anda bisa menghapusnya/var/lib/libvirt/qemu/snapshots/$guestname
Sumber:
milis libvirt-pengguna
http://kashyapc.com/2012/09/14/externaland-live-snapshots-with-libvirt/
sumber
Ya, hanya menyalin file XML dan gambar disk virtual sudah cukup, tetapi ini jelas menghalangi migrasi "langsung". VM harus dimatikan selama prosedur ini.
Setelah disalin ke tujuan,
libvirtd
harus dimuat ulang atau dihidupkan ulang untuk mengenali file XML baru.sumber
virsh
. Saya hanya menyalin file secara langsung dan memuat ulanglibvirtd
.Instruksi terperinci tentang Menyalin VM menggunakan blocksync.py
Instruksi ini berlaku untuk VM menggunakan disk yang disediakan LVM dan mengasumsikan bahwa Python ada di masing-masing host
Unduh skrip blocksync.py dari https://gist.github.com/rcoup/1338263 dan masukkan host sumber dan tujuan di folder / home / pengguna Anda.
Pendahulu
Anda juga perlu memiliki 'sudo' akses ke 'root' di kedua mesin.
Atau, Anda bisa melakukan semuanya sebagai root, tetapi hanya jika kunci ssh Anda memberi Anda akses root ke setidaknya mesin target. ** Dalam hal ini, hapus nama pengguna dari baris perintah.
Pengaturan Contoh
Prosedur
Langkah awal pada host sumber
Salin definisi yang dibuang ke mesin baru (host "target"), misalnya:
Anda dapat mengubah ip internal ke nama server dom0 tujuan Anda ** Catatan: yang terbaik adalah menggunakan alamat ip untuk target, misalnya:Jika Anda tidak dapat menyalin karena kunci, larry.xml kucing dan menyalinnya Kemudian Anda dapat ssh ke mesin lain dan membuat file dan menempelkannya.
Temukan ukuran dan nama disk VM menggunakan
.** Perintah di atas harus menunjukkan ukuran tepat dalam byte. ** Nama disk mesin ada di kolom pertama daftar, grup volumenya di kolom kedua, dan ukuran di yang terakhir. ** Tentukan nama perangkat sebagai / dev // ** Periksa dengan perintah 'll' Misalnya, dalam output ini: vm_larry vg1 -wi-ao ---- 69793218560B
Langkah awal pada host target
Buat file definisi volume, misalnya:
atau dengan baris berikut: CATATAN - Anda harus mengambil ukuran dalam byte dari VM asli dan dimasukkan ke dalam skrip di bawah ini. Perintah pada mesin sumber untuk ukuran adalah sudo lvs - unit BCatatan: definisi ini untuk disk 69793218560 Bytes untuk VM larry, ubah seperlunya untuk VM aktual.
Catatan: nama dan bagian terakhir dari jalur harus cocok dan akan digunakan sebagai nama disk baru.
Buat disk baru dari definisi, menggunakan
ia akan mengatakan Vol larry.domainname.com.au dibuat dari larry.domainname.com.au-vol.xml
Buat file perangkat disk dapat diakses:
Edit definisi xml yang disalin, misalnya:
Temukan definisi disk dalam file (cari "source dev =") dan ganti perangkat dengan yang baru saja dibuat (Anda dapat ls / dev / centos / untuk melihat vm), misalnya: / dev / drbd4 -> / dev / centos / larry.domainname.com.au
Perubahan jembatan ini unik untuk situasi kami.
** Temukan referensi ke "br1" di antarmuka antarmuka dan ubah menjadi "br0" misalnya Anda mengubah sumber jembatan sehingga baris seperti ini
Langkah terakhir pada host sumber
Login ke host sumber, mis
Praktik terbaik adalah mematikan VM pada host sumber sebelum melakukan sinkronisasi terakhir tetapi tidak perlu dilakukan. (NamaOutMachine mematikan)
Jika belum ada pada host sumber, unduh skrip blocksync.py dari https://gist.github.com/rcoup/1338263
Jika nama pengguna Anda adalah pengguna (misalnya), maka salin skrip blockync.py ke kedua mesin ke / home / pengguna dan pengguna chown: pengguna dan chmod 755 skrip.
Perintah yang melakukan penyalinan
Catatan: nama perangkat pertama adalah untuk host sumber, sebagaimana ditentukan dari perintah 'lvs'; yang ini dari host sumber [[chewie]].
Catatan: ini akan menghancurkan isi disk target, pastikan bahwa /dev/mapper/centos-larry.domainname.com.au benar!
Catatan: sinkronisasi akan memakan waktu lama - sekitar 100 detik per gigabyte, yaitu: 90 menit untuk disk 60 gigabyte.
Namun, Anda dapat melakukan sinkronisasi saat VM sedang digunakan; sinkronisasi berikutnya dapat mencapai 25 persen lebih cepat
Script akan mencetak parameter yang digunakannya (mungkin ada pesan tentang modul yang sudah usang, ini tidak masalah). Selanjutnya, ini menampilkan perintah ssh yang digunakan dan menjalankannya (Anda akan melihat pesan hanya staf yang berwenang ketika melakukan ini). Selama sinkronisasi, ini akan menampilkan total blok yang sedang berjalan dan kecepatan rata-rata. Akhirnya, ia mencetak pesan penyelesaian dengan jumlah detik yang dibutuhkan.
Yang Harus Diketahui
Anda dapat membatalkan sinkronisasi dengan CTRL C dan memulai kembali nanti dengan menjalankan perintah lagi
Langkah terakhir pada host target
Catatan: mungkin perlu mengubah detail VM agar sesuai dengan lingkungan baru.
sumber
Saya telah mengalami masalah ini dengan beberapa server KVM lama saya, tetapi ini benar-benar menjengkelkan ketika itu terjadi, dan dapat menyebabkan masalah dengan VM yang diinstal. Dalam kasus saya itu secara teratur mendorong salah satu VM saya ke keadaan reset, karena ruang disk lambat habis. Petunjuk di bawah ini agak sensitif terhadap versi KVM / Distro. Dalam kasus saya, saya memiliki CentOS 7.5
Secara default gambar KVM berada di lokasi / var / lib / libvirt / images /
Anda perlu menemukan Nama VM, untuk ini gunakan daftar virsh
Hentikan VM virsh stop VM-Name
Bagi saya, saya menyalin file terlebih dahulu, daripada memindahkan. Salin file qcow ke lokasi baru
Edit file VM xml, untuk referensi lokasi "file sumber" baru dan edit Nama-VM
Anda ingin mengubah "file sumber" file ini
Mulai ulang layanan libvirtd
Kemudian restart VM dan Anda harus baik-baik saja.
sumber