स्नैपशॉट के साथ, आपके वर्चुअलाइज़ेशन सॉफ़्टवेयर को चार चीज़ों पर नज़र रखनी होती है: CPU स्थिति, RAM, कॉन्फ़िगरेशन (VM में कितने नेटवर्क?), और डिस्क। मैं पहले तीन चीजों को नजरअंदाज कर रहा हूं क्योंकि वे बड़ी मात्रा में डेटा नहीं हैं, सॉफ्टवेयर सिर्फ अपेक्षाकृत छोटे डेटा संरचनाओं की प्रतियां बना सकता है और उन्हें एक फ़ाइल में संग्रहीत कर सकता है। तो, यह केवल डिस्क स्नैपशॉट को समझाने के लिए छोड़ देता है।
सबसे पहले, VM जिसे हार्ड डिस्क के रूप में देखता है, वह वास्तव में होस्ट फ़ाइल सिस्टम पर फ़ाइलों का एक सेट है। स्नैपशॉट करने के लिए, वर्चुअल मशीन सॉफ़्टवेयर एक निश्चित समय पर VM की डिस्क को लेता है, उसे संरक्षित करता है, एक नई खाली डिस्क फ़ाइल खोलता है, और प्रत्येक बाद की डिस्क एक्सेस के साथ एक कॉपी-ऑन-राइट स्कीम करता है।
मान लीजिए कि आपकी डिस्क फ़ाइल BigVM.disk है। आप स्नैपशॉट लेते हैं और अब आपका VM सॉफ़्टवेयर आपकी डिस्क को BigVM-s1.disk में बदल देता है, फिर एक नया खाली BigVM.disk बनाता है। जब आपका VM चल रहा होता है, तो सभी रीड रिक्वेस्ट BigVM.disk से गुज़रती हैं। यदि उस फ़ाइल में आपके VM द्वारा इच्छित डिस्क के भाग के लिए प्रविष्टि नहीं है, तो BigVM-s1.disk का डेटा वापस आ जाता है। एक लिखने पर, डेटा BigVM-s1.disk के बजाय BigVM.disk को लिखा जाता है। उसी सेक्टर में पढ़ा जाने वाला भविष्य BigVM.disk के डेटा को BigVM-s3.disk में निहित मूल स्नैपशॉट के बजाय वापस कर देगा। BigVM-s1.disk में आपके स्नैपशॉट के रूप में आपके VM की हार्ड डिस्क स्थिति होती है, जबकि BigVM.disk में स्नैपशॉट के बाद से आपकी डिस्क में सभी भिन्नताएँ होती हैं।
जब आप पुराने स्नैपशॉट पर वापस लौटते हैं तो क्या होता है? VM सॉफ़्टवेयर BigVM.disk की सामग्री को फेंक देता है और एक नए खाली BigVM.disk के साथ शुरू होता है, जो अभी भी BigVM-s1.disk पर इंगित करता है।