Mencadangkan tamu qcow2 kvm

13

Saya tidak dapat menemukan info bagus tentang mencadangkan tamu qcow2 kvm. Saya tidak begitu tertarik dengan tamu yang menjalankan status, hanya sistem file. Pertanyaan ini menyarankan menggunakan savevmtetapi itu membuat snapshot di tempat. Saya ingin membuat cadangan sistem file dari jarak jauh.

Apakah ada cara yang lebih baik daripada:

  1. menangguhkan virt_machine # pause mesin virtual
  2. rsync --sparse /home/vm/image.qcow2 /tmp/image.dec_14_2010.qcow2 # salin gambar pada drive yang sama
  3. lanjutkan virt_machine
  4. rsync --sparse /tmp/image.dec_14_2010.qcow2 ssh: // backup @ backupmachine: / vmbackups

Ada beberapa kerugian untuk ini. Pertama, menyalin file gambar besar membutuhkan waktu (relatif) lama. Kedua, saya harus selalu memastikan bahwa saya memiliki cukup ruang untuk membuat cadangan mesin saya. Ini tidak ideal. Apakah ada cara lain yang lebih baik untuk mengelola cadangan KVM?

Terima kasih.

Delapan puluh delapan
sumber

Jawaban:

7

Saya menyarankan fitur snapshot qemu-nbd:

qemu-nbd --snapshot --connect=/dev/nbd0 image.qcow2

kemudian mount / dev / nbd0p1 (partisi 1), rsync, unmount dan akhirnya putuskan sambungan:

qemu-nbd --disconnect / dev / nbd0

phhe
sumber
5

Gambar kotor dengan ini (jeda Anda mungkin dapat membantu, tetapi masih mungkin tidak sepenuhnya konsisten):

Lakukan snapshot pada sistem file LVM yang menyimpan file jarang qcow2 (sekali lagi dengan anggapan Anda memiliki ruang untuk snapshot LVM)

Pasang snapshot LVM.

Pasang remote menggunakan sshfs.

Salin ke mountpoint sshfs menggunakan salinan sparse (cp --sparse = always src dest)

Lebih sedikit waktu untuk menyalin, tetapi masih akan memakan waktu hingga penuh jika gambar sebagian besar penuh.

Cadangan data dari dalam VM mungkin merupakan ide yang lebih baik (lebih sedikit ruang / waktu). Perlakukan individu vm sebagai host biasa untuk didukung / dipulihkan - yaitu hanya mendapatkan apa yang Anda butuhkan dan menyimpan satu set stub vm ​​tanpa data untuk bangkit kembali dan berjalan cepat.

kapak25
sumber
Menarik, terima kasih. Saya tidak memiliki LVM di atas filesystem saya, untuk kesederhanaan. Saya lebih suka menyalin seluruh gambar karena itu akan memungkinkan saya untuk memiliki failover stand-by yang siap digunakan seandainya mesin gagal pada titik mana pun.
EightyEight
1
Tidak masalah. LVM hanya akan menyelamatkan Anda dari keharusan untuk menjeda VM dan memungkinkan Anda untuk snapshot apakah itu terus berjalan.
ax25
3

Secara pribadi, saya sudah memiliki waktu yang SANGAT sulit dengan masalah ini dan telah menemukan bahwa, bahkan ketika diam, cadangan tamu sering tidak jelas. Ingat - jika Anda tidak secara teratur mencoba mengembalikan cadangan ini, Anda benar-benar tidak tahu apakah itu berfungsi.

Setelah banyak bereksperimen, saya menyadap cadangan gambar sepenuhnya dan pergi dengan solusi cadangan jaringan tradisional yang mungkin digunakan untuk server bare metal. Dalam kasus saya, kami menggunakan BackupPC, yang sudah tua, tetapi sangat andal. Di setiap server, saya mengonfigurasi solusi cadangan untuk aplikasi tertentu yang digunakan. Misalnya sqldump untuk MySQL, plugin untuk Joomla, dll.

Ini PIA, tetapi jauh lebih cepat, dan sangat andal.

hdave
sumber
Terima kasih @ sudah. Saya merasa dengan pendekatan ini saya kehilangan salah satu manfaat utama dari VM, penahanan. Untuk memulihkan, saya harus menginstal ulang semuanya secara manual dan mengonfigurasi. Bukan pendekatan yang ingin saya ambil. Namun, terima kasih, ini adalah teknik yang valid.
EightyEight
100% setuju bahwa itu adalah rasa sakit kerajaan. Jika Anda pernah memecahkan kacang ini, beri tahu kami bagaimana Anda melakukannya!
hdave
@EightyEight: Saya sangat merekomendasikan perangkat lunak manajemen konfigurasi seperti Chef atau Puppet. Ini jauh lebih fleksibel dan juga tidak terlalu menyakitkan jika Anda ingin membuat server kedua yang identik (fisik atau virtual, tidak masalah). Chef memiliki plugin untuk hampir semua hypervisor dan dapat membantu Anda untuk menyediakan & mengkonfigurasi host. Dengan cara ini Anda mendapat manfaat dari menggunakan lebih sedikit ruang untuk pencadangan (keseluruhan VM lebih besar dibandingkan dengan set data tertentu) dan waktu penyebaran yang lebih cepat di lingkungan baru. Lebih lanjut CM seperti dokumentasi infrastruktur dalam kode.
Rafael Bugajewski
2

Tidak peduli di mana Anda melakukan snapshot - LVM atau qcow2, VM masih perlu quiesced sebelum Anda mengambilnya. Kalau tidak, Anda akan kehilangan data dan gambar yang rusak.

dyasny
sumber
tidak lebih dari yang Anda lakukan jika Anda menarik kabel listriknya?
1
tidak lebih, dan tidak kurang tentu saja :)
dyasny
memikirkan hal ini lebih jauh lagi, quiescing domain tidak menambahkan apa pun - baik snapshot itu 'konsisten-crash', tidak lebih, tidak kurang, benarkan?
errr, tentukan "konsisten-crash". OS tamu mungkin memiliki beberapa data dalam penerbangan yang ditujukan untuk v-disk, yang akan hilang jika Anda menarik steker. Secara teoritis, data ini dapat ditulis ke snapshot setelah diambil langsung, tetapi ada alasan kuat snapshot hidup di semua platform virt termasuk quiescing / pencairan di agen tamu. Terlebih lagi, jika data tidak hilang, itu masih akan berakhir di snapshot bukan gambar dasar, yang mengalahkan tujuan PIT
dyasny
"crash-konsisten" hanya berarti "sama konsisten seperti yang Anda harapkan dalam crash" iiuc - yaitu mengandalkan jurnal dll dan menerima beberapa kehilangan data karena kurangnya fsync tepat waktu. "ada alasan kuat snapshot langsung di semua platform virt termasuk quiescing / pencairan di agen tamu" seperti yang saya mengerti, alasan yang tepat persis sama dengan mengambil snapshot LVM - apakah Anda tahu bedanya? KVM tampaknya tidak fsync sebelum diam lebih dari snapshot LVM kan? Tentu saja, jika Anda tidak menggunakan LVM untuk snapshotting, Anda akan bodoh untuk tidak diam - tetapi itu berbeda dan bukan apa yang Anda katakan.