वर्चुअल मशीन स्नैपशॉट कैसे काम करता है?


16

एक दशक से अधिक समय तक ड्राइव इमेजिंग सॉफ्टवेयर का उपयोग करने के बाद, मुझे यह पता चलता है कि वर्चुअल मशीन को स्नैपचैट किया जा सकता है और इसे कुछ ही सेकंड में बहाल किया जा सकता है, जबकि ड्राइव इमेजिंग में अक्सर घंटों लगते हैं।

मैं एक वीएम को स्नैपशॉट कर सकता हूं, एक अलग ओएस पर फिर से इंस्टॉल कर सकता हूं, फिर एक रिस्टोर कर सकता हूं और कुछ सेकंड्स के भीतर जादुई रूप से मेरा पुराना वीएम पूरी तरह से उस स्थिति में वापस आ जाता है जिस स्थिति में वह पहले था।

यह कैसे हो पा रहा है? VM होस्ट वास्तव में VM के लिए क्या करता है जो इसे संभव बनाता है?

जवाबों:


16

जब आप एक स्नैपशॉट बनाते हैं, तो प्रारंभिक वर्चुअल डिस्क छवि पर किए गए सभी परिवर्तन वास्तव में छवि पर ही नहीं होते हैं, लेकिन वे एक नई (स्नैपशॉट) डिस्क फ़ाइल में लिखे जाते हैं। यह क्रिया इतनी तेज़ है क्योंकि संपूर्ण वर्चुअल डिस्क छवि की प्रतिलिपि बनाने की कोई आवश्यकता नहीं है, क्योंकि यह लेखन सिद्धांत पर प्रतिलिपि पर काम करती है (केवल परिवर्तित, यानी लिखित ब्लॉक स्नैपशॉट छवि के लिए लिखे गए हैं)। ध्यान दें कि जब आप अपनी मूल वर्चुअल डिस्क छवि पर अधिक से अधिक डेटा बदलते हैं, तो स्नैपशॉट छवि बढ़ती है (जो स्नैपशॉट लेने के क्षण में रहती है)। यह संभवतः मूल छवि की तुलना में बहुत छोटा होगा, लेकिन सबसे खराब स्थिति में यह बिल्कुल उसी आकार का होगा (यदि सभी ब्लॉकों को बदल दिया गया था)।

इस नई स्नैपशॉट छवि के साथ आप दो कार्य कर सकते हैं:

  1. स्नैपशॉट त्यागें : बहुत तेज़ कार्रवाई। वर्चुअल मशीन प्रबंधक केवल स्नैपशॉट छवि फ़ाइल को हटाता है और मूल डिस्क छवि या पिछले स्नैपशॉट में से कुछ पर नियंत्रण लौटाता है
  2. मर्ज स्नैपशॉट : वर्चुअल मशीन प्रबंधक मूल छवि के साथ ब्लॉक (यानी स्नैपशॉट छवि) को मर्ज करता है । यह कार्रवाई इस बात पर निर्भर करेगी कि मूल छवि से कितने ब्लॉक बदले गए हैं। फिर से, सबसे खराब स्थिति यह है कि पूरी मूल छवि को अधिलेखित कर दिया जाएगा कि मूल छवि से सभी ब्लॉक एक स्नैपशॉट के निर्माण के बाद लिखे गए हैं।

ऊपर वर्णित सभी प्रक्रियाएं कई स्नैपशॉट के लिए भी काम करती हैं। उस स्थिति में मूल छवि एक स्नैपशॉट हो सकती है, और अगला स्नैपशॉट उस (पहले) स्नैपशॉट पर संदर्भ ब्लॉक कर सकता है। इस तरह आपके पास कई स्नैपशॉट हो सकते हैं जिन्हें आप आसानी से त्याग या मर्ज कर सकते हैं।


1
किसी भी छवि को हटाने की प्रक्रिया की तरह स्नैपशॉट को त्यागें, वास्तव में काफी धीमा हो सकता है, अगर आपके पास पोंछ-बाद-हटा दिया गया है। अन्य वीएम द्वारा उपयोग किए जाने से मुक्त होने से पहले यह एक छवि या स्नैपशॉट क्लीन द्वारा उपयोग किए जाने वाले स्थान को पोंछने के लिए एक सुरक्षा सुविधा है, अन्यथा, निम्न स्तर के ब्लॉक रीडिंग का उपयोग करके, पिछले वीएम द्वारा उपयोग किए गए डेटा को पढ़ना संभव हो सकता है। और किसी भी वर्चुअलाइजेशन समाधान, जिसमें यह सुविधा नहीं है, इसमें एक बड़ी सुरक्षा खामी है
dyasny

मैंने कई स्नैपशॉट बनाने के परिदृश्य को समझाने की कोशिश की है और प्रत्येक स्नैपशॉट के साथ परिवर्तन कैसे बनाए रखा जाता है। VMware स्नैपशॉट के कार्य पर यह संक्षिप्त विवरण देखें: cubicrace.com/2012/02/…
पीयूष

5

स्नैपशॉट के साथ, आपके वर्चुअलाइज़ेशन सॉफ़्टवेयर को चार चीज़ों पर नज़र रखनी होती है: 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 पर इंगित करता है।


2

यह केवल स्नैपशॉट के समय से परिवर्तित फ़ाइलों में अंतर लिख रहा है, न कि पूर्ण वर्चुअल मशीन डिस्क। यूनिक्स की तरह और पैच, एक अधिक परिष्कृत संस्करण को छोड़कर जो एक द्विआधारी स्तर पर भिन्न होता है और आपके वर्चुअल मशीन के अन्य विवरणों के बारे में जानता है।


1

कम से कम वीएमवेयर स्नैपशॉट में, क्या होता है कि स्नैपशॉट मूल रूप से डिस्क लिखने और मशीन की स्थिति के लिए नया चेकपॉइंट शुरू करने के लिए वीएमएक्स का संकेत है। इस पर निर्भर करते हुए कि आपका वीएम बंद है या चालू है, स्नैपशॉट को पुनर्स्थापित करने से बस उस चेकपॉइंट के अतीत में हुई हर चीज को शामिल किया जा सकता है। अन्यथा, आपके वीएम के सभी डिस्क सेक्टर लिखने पर कॉपी हो जाते हैं, जिसका मतलब है कि जब आप एक हॉट स्नैपशॉट बहाली करते हैं, तो यह केवल उन सेक्टरों को फिर से लिखना होता है जो आपने स्नैपशॉट लेने के बाद बदल दिए हैं। तो इसीलिए यह तेज है।


-1

VMware स्नैपशॉट और इसके आंतरिक पर काम करना सबसे अच्छा समझा जाता है @ http://www.pcclm.com/2012/02/virtual-machine-snapshots-in-vmware.html


3
ServerFault में आपका स्वागत है! यद्यपि बाहरी संदर्भ सामग्री से लिंक करने को प्रोत्साहित किया जाता है, हम यह भी उम्मीद करते हैं कि भविष्य में आपके लिंक टूट जाने पर भी प्रत्येक उत्तर पूर्ण होने की उम्मीद है। आप इस उत्तर को संपादित करना और अतिरिक्त विवरण जोड़ना चाह सकते हैं।
स्काईवॉक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.