Namun, memang melelahkan untuk menginstal ulang sistem operasi di dalam VM Anda berulang kali. Ini menghambat alur kerja Anda dan, oleh karena itu, Anda memerlukan cara yang andal untuk:
- Ambil snapshot VM Anda pada titik waktu tertentu.
- Memiliki mekanisme untuk menggunakan snapshot untuk mengembalikan VM Anda ke status kerja sebelumnya.
Saya sebelumnya telah membahas cara kerja snapshot di VirtualBox dan kali ini saya ingin membahas snapshot di dalam Libvirt. Saya akan menggunakan QEMU-KVM sebagai hypervisor backend untuk instalasi Libvirt saya. Kasing Anda mungkin berbeda, tetapi fungsionalitas dan antarmuka keseluruhan seharusnya tidak terlalu berbeda, karena libvirt mencoba yang terbaik untuk membakukan antarmuka frontend.
Jika Anda tidak terbiasa dengan libvirt dan qemu-kvm, berikut adalah panduan tentang bagaimana Anda dapat mengatur KVM di Debian.
Membuat Cuplikan
Ada beberapa cara yang dapat Anda gunakan untuk mengambil dan mengelola snapshot VM Anda. Aplikasi GUI seperti virt-manager dan oVirt menawarkan fungsionalitas dan Anda bahkan dapat menulis skrip khusus untuk berinteraksi dengan libvirt API yang mengelola seluruh rentang snapshot untuk Anda.
Namun, saya akan menggunakan antarmuka baris perintah virsh untuk menunjukkan bagaimana Anda dapat mengelola VM Anda dan snapshotnya. Utilitas ini hadir dengan hampir semua instalasi libvirt default dan harus tersedia di berbagai distribusi.
Untuk perintah di bawah ini pastikan untuk mengganti nama VM saya, VM1, dengan nama sebenarnya dari VM Anda. Libvirt sering merujuk ke mesin virtual dan wadah sebagai Domain. Jadi jika Anda melihat pesan kesalahan yang menyarankan, katakanlah, "tentukan nama domain", Anda perlu memberikan nama VM Anda sebagai salah satu argumen untuk perintah. Gunakan perintah berikut untuk membuat daftar semua VM di bawah manajemen Libvirt.
$ daftar virsh --semuaUntuk mengambil snapshot dari VM cukup jalankan:
$ virsh snapshot-buat VM1Dan untuk membuat daftar semua snapshot dari VM yang diberikan, gunakan perintah:
$ daftar snapshot virsh VM1Nama Waktu Pembuatan Status
------------------------------------------------------------
1556533387 29-04-2019 15:53:07 +0530 berjalan
Anda dapat melihat bahwa snapshot dibuat. Secara default, nama snapshot adalah cap waktu pembuatannya (jumlah detik sejak zaman UNIX). Kolom Waktu Pembuatan menunjukkan waktu pembuatan dengan cara yang dapat dibaca manusia dan kolom Status menunjukkan status VM saat dijepret. Saat VM ini berjalan, status snapshot juga 'berjalan', tetapi itu tidak berarti bahwa snapshot itu sendiri sedang berjalan. Itu tidak akan berubah seiring waktu. Fitur ini juga dikenal sebagai live snapshot dan cukup berharga karena memungkinkan Anda untuk mengambil snapshot dari VM Anda tanpa downtime. Para tamu KVM, setidaknya, bekerja dengan baik dengan snapshot langsung.
Namun, beban kerja tertentu memang mengharuskan Anda untuk menghentikan VM sebelum di-snapshot. Ini memastikan bahwa data dalam snapshot konsisten dan tidak ada file yang setengah ditulis atau data yang hilang. Jika beban kerja yang berjalan di VM Anda memiliki IO tinggi, Anda mungkin perlu mematikan VM sebelum membuat snapshot. Mari kita buat dengan cara ini.
$ virsh mematikan VM1Domain VM1 sedang dimatikan
$ virsh snapshot-buat VM1Snapshot domain 1556533868 dibuat
[dilindungi email]:~# daftar snapshot virsh VM1Nama Waktu Pembuatan Negara
------------------------------------------------------------
1556533387 29-04-2019 15:53:07 +0530 berjalan
1556533868 29-04-2019 16:01:08 +0530 mati
$ virsh mulai VM1
Domain VM1 dimulai
Jika Anda ingin memberi nama snapshot selain stempel waktu, gunakan perintah:
$ virsh snapshot-buat-sebagai VM1 --name snap1Nama Waktu Pembuatan Status
------------------------------------------------------------
1556533387 29-04-2019 15:53:07 +0530 berjalan
1556533868 29-04-2019 16:01:08 +0530 mati
snap1 02-05-2019 22:27:48 +0530 berjalan
Jelas, Anda tidak perlu menamainya snap1, Anda dapat memilih nama yang nyaman.
Mengembalikan dari Snapshot
Mengambil snapshot tidak ada gunanya jika Anda tidak dapat kembali ke sana. Jika, Anda perlu kembali ke snapshot cukup gunakan perintah:
$ virsh snapshot-kembalikan $VMName $snapshot-nameNama dapat berupa stempel waktu atau nama yang ditetapkan pengguna yang diberikan ke snapshot.
Pastikan tidak ada data penting di VM Anda saat ini, atau jika ada sesuatu yang penting, ambil snapshot dari VM Anda saat ini dan kembali ke snapshot lama.
Manfaat QCOW2
Mekanisme copy-on-write file qcow2 memungkinkan setiap snapshot mengambil ruang yang sangat kecil. Ruang yang diambil oleh snapshot meningkat seiring waktu karena gambar yang berjalan menyimpang dari snapshot. Jadi selama Anda tidak menulis ulang banyak data, snapshot Anda hanya akan mengambil beberapa MB penyimpanan.
Ini juga berarti bahwa snapshotnya juga sangat cepat. Karena, mekanisme copy-on-write hanya perlu menandai stempel waktu saat snapshot diambil. Blok data yang ditulis ke file qcow2 setelah snapshot bukan miliknya, tetapi yang lebih lama melakukannya. Sesederhana itu. Bangku pengujian saya menggunakan hard drive 5400RPM yang sama sekali tidak berada di puncak kinerjanya, masih membutuhkan waktu kurang dari beberapa detik untuk mengambil snapshot langsung dari VM pada disk ini.
Kesimpulan
Seperti kebanyakan utilitas terkait libvirt dan virsh, fungsionalitas snapshot menyediakan antarmuka yang sangat fleksibel dengan fitur tingkat perusahaan seperti snapshotting langsung bersama dengan manfaat mekanisme copy-on-write.
Konvensi penamaan default juga memudahkan skrip shell untuk menghapus snapshot lama secara berkala dan menggantinya dengan yang lebih baru. Salah satu artikel lama saya tentang snapshot OpenZFS dan kebijakan snapshot juga dapat diterapkan untuk tamu KVM Anda. Untuk informasi lebih lanjut tentang utilitas snapshot virsh, Anda dapat menggunakan perintah snapshot bantuan virsh. Halaman bantuan sangat kecil, tepat dan mudah dimengerti.