Bagaimana cara kerja snapshotting Virtual Machine?

16

Setelah menggunakan perangkat lunak pencitraan drive selama lebih dari satu dekade, saya merasa heran bahwa Mesin Virtual dapat dipotret dan dipulihkan dalam hitungan detik, sementara pencitraan drive sering memakan waktu berjam-jam.

Saya dapat snapshot VM, instal ulang ke OS yang berbeda, kemudian lakukan restore dan entah bagaimana secara ajaib dalam beberapa detik VM lama saya kembali dengan sempurna dalam keadaan sebelumnya.

Bagaimana ini bisa terjadi? Apa yang sebenarnya dilakukan oleh host VM pada VM yang memungkinkan ini terjadi?

Matias Nino
sumber

Jawaban:

16

Saat Anda membuat snapshot, semua perubahan yang dilakukan pada gambar disk virtual awal sebenarnya tidak dibuat pada gambar itu sendiri, tetapi mereka ditulis ke file disk baru (snapshot). Tindakan ini sangat cepat karena tidak perlu menyalin seluruh gambar disk virtual, karena bekerja pada prinsip copy on write (hanya diubah, yaitu blok tertulis ditulis ke gambar snapshot). Perhatikan bahwa gambar foto tumbuh saat Anda mengubah lebih banyak data pada gambar disk virtual asli Anda (yang tetap seperti saat Anda mengambil foto). Kemungkinan besar akan jauh lebih kecil dari gambar asli, tetapi dalam kasus terburuk ukurannya akan persis sama (jika semua blok diubah).

Ada dua tindakan yang dapat Anda lakukan dengan gambar snapshot baru ini:

  1. Buang snapshot : tindakan sangat cepat. Manajer mesin virtual cukup menghapus file gambar foto dan mengembalikan kontrol ke gambar disk asli atau beberapa foto sebelumnya
  2. Gabungkan snapshot : manajer mesin virtual menggabungkan blok yang diubah (yaitu gambar snapshot) dengan gambar asli. Tindakan ini akan memakan waktu tergantung pada seberapa banyak blok dari gambar asli telah berubah. Sekali lagi, skenario terburuk adalah bahwa seluruh gambar asli akan ditimpa jika semua blok dari gambar asli telah ditulis setelah pembuatan snapshot.

Semua prosedur yang dijelaskan di atas juga berfungsi untuk beberapa foto. Dalam hal itu, gambar asli mungkin merupakan satu foto, dan foto berikutnya dapat merujuk blok pada foto (pertama) itu. Dengan cara ini Anda dapat memiliki banyak foto yang dapat Anda buang atau gabungkan dengan mudah.

ipozgaj
sumber
1
Buang snapshot, seperti proses penghapusan gambar, sebenarnya bisa sangat lambat, jika Anda memiliki wipe-after-delete dihidupkan. Ini adalah fitur keamanan untuk menghapus ruang yang digunakan oleh gambar atau snapshot bersih sebelum dibebaskan untuk digunakan oleh VM lain, jika tidak, dengan membaca blok tingkat rendah, dapat dimungkinkan untuk membaca data yang digunakan VM sebelumnya. Dan solusi virtualisasi apa pun yang tidak memiliki fitur ini memiliki kelemahan keamanan besar di dalamnya
dyasny
Saya sudah mencoba menjelaskan skenario membuat banyak foto dan bagaimana perubahan pada setiap foto dipertahankan. Lihat penjelasan singkat ini tentang cara kerja snapshot VMware: cubicrace.com/2012/02/…
Piyush Chordia
5

Dengan snapshot, perangkat lunak virtualisasi Anda harus melacak empat hal: keadaan CPU, RAM, konfigurasi (berapa banyak kartu jaringan dalam VM?), Dan disk. Saya mengabaikan tiga hal pertama karena mereka bukan data dalam jumlah besar, perangkat lunak hanya dapat membuat salinan dari struktur data yang relatif kecil dan menyimpannya dalam file. Jadi, hanya menyisakan snapshotting disk untuk dijelaskan.

Pertama, apa yang dilihat VM sebagai hard disk sebenarnya hanyalah sekumpulan file pada sistem file host. Untuk melakukan snapshot, perangkat lunak mesin virtual mengambil disk VM pada titik waktu tertentu, melestarikannya, membuka file disk kosong baru, dan melakukan skema copy-on-write dengan setiap akses disk berikutnya.

Katakanlah file disk Anda adalah BigVM.disk. Anda snapshot dan sekarang perangkat lunak VM Anda mengubah nama disk Anda menjadi BigVM-s1.disk, kemudian membuat BigVM.disk kosong baru. Ketika VM Anda berjalan, semua permintaan baca melalui BigVM.disk. Jika file itu tidak memiliki entri untuk bagian disk yang diinginkan VM Anda, maka data dari BigVM-s1.disk dikembalikan. Pada saat menulis, data ditulis ke BigVM.disk bukan BigVM-s1.disk. Pembacaan mendatang untuk sektor yang sama akan mengembalikan data dari BigVM.disk alih-alih snapshot asli yang terkandung dalam BigVM-s1.disk. BigVM-s1.disk berisi kondisi hard disk VM Anda sebagai snapshot Anda, sementara BigVM.disk berisi semua diffs ke disk Anda sejak snapshot itu.

Apa yang terjadi ketika Anda kembali ke snapshot yang lebih lama? Perangkat lunak VM membuang konten BigVM.disk dan memulai kembali, dengan BigVM.disk kosong baru yang masih menunjuk pada BigVM-s1.disk.

kbyrd
sumber
2

Hanya menulis perbedaan dalam file yang diubah dari saat snapshot, bukan disk mesin virtual lengkap. Seperti unix diff dan patch, kecuali versi yang lebih canggih yang berbeda pada tingkat biner dan tahu tentang detail lain dari mesin virtual Anda.

Ian Kelling
sumber
1

Setidaknya dalam snapshot VMware, yang terjadi adalah snapshot itu pada dasarnya adalah sinyal ke VMX untuk memulai pos pemeriksaan baru untuk penulisan disk dan status mesin. Bergantung pada apakah VM Anda dimatikan atau diaktifkan, mengembalikan snapshot hanya dapat melibatkan hanya nuking semua yang terjadi melewati pos pemeriksaan itu. Jika tidak, semua sektor disk VM Anda menjadi copy on write, yang berarti ketika Anda melakukan restorasi snapshot panas, hanya perlu menulis ulang sektor yang telah berubah sejak Anda mengambil snapshot. Jadi itu sebabnya lebih cepat.

Astaga0
sumber
-1

Bekerja pada snapshot VMware dan internalnya paling baik dijelaskan @ http://www.pcclm.com/2012/02/virtual-machine-snapshots-in-vmware.html

Piyush Chordia
sumber
3
Selamat datang di ServerFault! Meskipun menautkan ke materi referensi eksternal dianjurkan, kami juga berharap setiap jawaban lengkap bahkan jika tautan Anda rusak di masa mendatang. Anda mungkin ingin mengedit jawaban ini dan menambahkan detail tambahan.
Skyhawk