Walau bagaimanapun, sangat melelahkan untuk memasang semula sistem operasi di dalam VM anda berulang kali. Ini menghalang aliran kerja anda dan, oleh itu, anda memerlukan cara yang boleh dipercayai untuk:
- Ambil gambar VM anda pada satu-satu masa tertentu.
- Mempunyai mekanisme untuk menggunakan snapshot untuk mengembalikan VM anda ke keadaan yang sebelumnya berfungsi.
Sebelum ini saya telah membincangkan bagaimana snapshot berfungsi di VirtualBox dan kali ini saya ingin membincangkan snapshot dalam Libvirt. Saya akan menggunakan QEMU-KVM sebagai penyelia backend untuk pemasangan Libvirt saya. Kes anda mungkin berbeza, tetapi fungsi dan antara muka keseluruhan tidak boleh sangat berbeza, kerana libvirt berusaha sebaik mungkin untuk menyeragamkan antara muka frontend.
Sekiranya anda tidak biasa dengan libvirt dan qemu-kvm, berikut adalah panduan bagaimana anda boleh menyiapkan KVM di Debian.
Membuat Ringkasan
Terdapat beberapa cara untuk mengambil dan mengurus tangkapan gambar VM anda. Aplikasi GUI seperti virt-manager dan oVirt menawarkan fungsi dan anda bahkan boleh menulis skrip tersuai untuk berinteraksi dengan libvirt API yang menguruskan keseluruhan rangkuman gambar untuk anda.
Walau bagaimanapun, saya akan menggunakan antara muka baris perintah virsh untuk menunjukkan bagaimana anda boleh menguruskan VM dan snapshot mereka. Utiliti ini dilengkapi dengan hampir semua pemasangan libvirt lalai dan harus tersedia di pelbagai pengedaran.
Untuk arahan di bawah, pastikan untuk mengganti nama VM saya, VM1, dengan nama sebenar VM anda. Libvirt sering merujuk kepada mesin maya dan bekas sebagai Domain. Oleh itu, jika anda melihat mesej ralat yang menunjukkan, katakan, "tentukan nama domain", anda perlu memberikan nama VM anda sebagai salah satu argumen kepada perintah. Gunakan arahan berikut untuk menyenaraikan semua VM di bawah pengurusan Libvirt.
$ $ senarai - semuaUntuk mengambil gambaran ringkas VM jalankan:
$ virsh snapshot-buat VM1Dan untuk menyenaraikan semua snapshot VM yang diberikan gunakan arahan:
$ virsh snapshot-list VM1Negeri Masa Penciptaan Nama
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 berjalan
Anda dapat melihat bahawa gambar dibuat. Secara lalai, nama gambar adalah cap waktu penciptaannya (bilangan saat sejak zaman UNIX). Lajur Waktu Penciptaan menunjukkan waktu penciptaan secara mudah dibaca oleh manusia dan lajur Negeri menunjukkan keadaan VM ketika gambar diambil. Ketika VM ini berjalan, keadaan snapshot juga 'berjalan', tetapi itu tidak bermaksud snapshot itu sendiri sedang berjalan. Ia tidak akan berubah seiring dengan masa. Fungsi ini juga dikenali sebagai snapshot langsung dan sangat berharga kerana ia membolehkan anda mengambil gambar VM anda tanpa waktu henti. Tetamu KVM, sekurang-kurangnya, berfungsi dengan baik dengan gambar langsung.
Beban kerja tertentu, bagaimanapun, memerlukan anda menghentikan VM sebelum diambil gambar. Ini memastikan bahawa data dalam snapshot itu konsisten dan tidak ada fail separuh tertulis atau data yang hilang. Sekiranya beban kerja yang dijalankan di VM anda mempunyai IO yang tinggi, anda mungkin perlu mematikan VM sebelum membuat snapshot. Mari buat satu dengan cara ini.
$ virsh penutupan VM1Domain VM1 sedang ditutup
$ virsh snapshot-buat VM1Snapshot domain 1556533868 dibuat
[dilindungi e-mel]: ~ # senarai snapshot virsh VM1Negeri Masa Penciptaan Nama
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 berjalan
1556533868 2019-04-29 16:01:08 +0530 tutup
$ virsh memulakan VM1
Domain VM1 dimulakan
Sekiranya anda ingin memberi nama gambar selain daripada cap waktu, gunakan arahan:
$ virsh snapshot-create-as VM1 --name snap1Negeri Masa Penciptaan Nama
------------------------------------------------------------
1556533387 2019-04-29 15:53:07 +0530 berjalan
1556533868 2019-04-29 16:01:08 +0530 tutup
snap1 2019-05-02 22:27:48 +0530 berjalan
Jelas sekali, anda tidak perlu menamakannya snap1, anda boleh memilih nama yang sesuai.
Berbalik dari Snapshot
Untuk mengambil gambar tidak ada gunanya jika anda tidak dapat kembali ke sana. Sekiranya anda perlu kembali ke snapshot cukup gunakan arahan:
$ virsh snapshot-revert $ VMName $ snapshot-nameNama itu boleh menjadi cap waktu atau nama pengguna yang diberikan kepada snapshot.
Pastikan bahawa tidak ada data penting dalam VM semasa anda, atau jika ada yang penting, kemudian ambil gambar VM semasa anda dan kemudian kembali ke snapshot lama.
Kelebihan QCOW2
Mekanisme copy-on-write fail qcow2 membolehkan setiap snapshot mengambil ruang yang sangat kecil. Ruang yang diambil oleh snapshot meningkat dari masa ke masa ketika gambar berjalan menyimpang dari snapshot. Oleh kerana selagi anda tidak menulis semula banyak data, tangkapan gambar anda hanya memerlukan beberapa MB simpanan.
Ini juga bermaksud bahawa tangkapan gambar juga sangat cepat. Sejak itu, mekanisme copy-on-write hanya perlu menandakan cap waktu ketika gambar diambil. Blok data yang ditulis ke fail qcow2 setelah snapshot tidak menjadi miliknya, tetapi yang lebih lama. Ia semudah itu. Bangku ujian saya menggunakan cakera keras 5400RPM yang tidak semestinya berada di puncak prestasinya, masih memerlukan masa kurang dari beberapa saat untuk mengambil gambar langsung VM pada cakera ini.
Kesimpulannya
Seperti kebanyakan utiliti yang berkaitan dengan libvirt dan virsh, fungsi snapshot menyediakan antara muka yang sangat fleksibel dengan ciri kelas perusahaan seperti snapshot langsung bersama faedah mekanisme copy-on-write.
Konvensyen penamaan lalai juga mempermudah skrip shell untuk membuang snapshot lama secara berkala dan menggantinya dengan yang baru. Salah satu artikel lama saya mengenai polisi snapshot dan snapshot OpenZFS juga boleh digunakan untuk tetamu KVM anda. Untuk maklumat lebih lanjut mengenai utiliti snapshot virsh, anda boleh menggunakan arahan snapshot bantuan virsh. Halaman bantuan sangat kecil, tepat dan senang difahami.