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.