वर्चुअलबॉक्स, स्नैपशॉट और बेस डिस्क को मर्ज करना


9

मेरे पास शाखाओं में लगभग 30 स्नैपशॉट के साथ एक वर्चुअल मशीन है। वर्तमान विकास पथ 22 स्नैपशॉट प्लस आधार डिस्क है। फ़ाइलों की मात्रा IO और देव लैपटॉप पर अब प्रभाव डाल रही है, पता नहीं है (अगर यह मेजबान डिस्क प्रदर्शन मुद्दों 140GB कुल आकार के साथ बहुत सारे टुकड़े, या बस तथ्य यह है कि यह है पता नहीं है) बहुत सारी फाइलों में वितरित क्षेत्रों को मारना)।

मैं आधार डिस्क के साथ स्नैपशॉट की वर्तमान विकास शाखा को एक साथ मिलाना चाहूंगा, लेकिन मैं अनिश्चित हूं कि निम्न आदेश सही परिणाम देगा। प्रक्रिया पूरी होने (5-6 घंटे) के बाद मैं इस डिस्क को बूट करने में सक्षम नहीं हूं।

vboxmanage clonehd "C:\VPC-Storage\.VirtualBox\Machines\CRM\Snapshots\{245b27ac-e658-470a-b978-8e62137c33b1}.vhd" "E:\crm-20100624.vhd" --format VHD --type normal

क्या कोई पुष्टि कर सकता है कि यह सही तरीका है या नहीं?


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

जैसा कि आपने अपने प्रश्न में सुझाव दिया है, मैंने VBoxManage (विंडोज होस्ट, उबंटू अतिथि पर) का उपयोग किया है और इसने स्नैपशॉट को सिंगल आउटपुट डिस्क इमेज में मिला दिया है
Chaulky

1
हाँ यह एक सही तरीका है। अपने फ़ाइल नाम के बजाय केवल स्रोत UUID निर्दिष्ट करना बेहतर है, फिर आप सुनिश्चित करें कि VBox अनुलग्नकों को हल करने में सक्षम होगा।
Rustyx

जवाबों:


7

आप जो करना चाहते हैं वह स्नैपशॉट संवाद से है, अपने मूल स्नैपशॉट का चयन करें जिसे आप बाद में सभी स्नैपशॉट को एक VDI में मर्ज करना चाहते हैं।

आपके वर्णन से ऐसा लगता है कि यह पेड़ की जड़ है।

राइट क्लिक करें और 'स्नैपशॉट हटाएं' चुनें।

यह वही करेगा जो आप चाहते हैं --- यह सभी चाइल्ड स्नैपशॉट से सभी परिवर्तनों को एक VDI में मर्ज कर देगा।

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

मुझे संदेह है कि 'स्नैपशॉट हटाने' से क्लोन कमांड चलती है।

अपनी VM सेटिंग्स (विशेष रूप से IO APIC सक्षम / अक्षम) की जाँच करें और सुनिश्चित करें कि वे मेल खाते हैं।


मुझे लगता है कि यह वर्तमान में ऐसा करने का एकमात्र तरीका है, हालांकि यह एक मैनुअल, समय लेने वाला, इसे करने के लिए GUI तरीके से बहु क्लिक है।
हेनरिक

3

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

या आप अपने लिए विलय को संभालने के लिए इस vboxmerge.py स्क्रिप्ट का उपयोग कर सकते हैं । आपके पास मौजूद स्नैपशॉट की संख्या को देखते हुए, मैं उम्मीद करूंगा कि निर्यात / आयात चक्र तेज होगा।


2

यहां एक तकनीक (वर्चुअलबॉक्स 4.3.4 पर परीक्षण किया गया है) जो 'स्नैप' कमांड का उपयोग करके सभी स्नैपशॉट को एक नए वीएम के साथ एक एकल वीडीआई फ़ाइल को मर्ज करने और कॉम्पैक्ट करने के लिए उपयोग करती है:

  1. VM का नाम बदलें ताकि आप क्लोन किए गए VM के लिए इसके वर्तमान नाम का पुन: उपयोग कर सकें (आप 'नाम' सेटिंग के 'मूल' टैब से VM नाम बदल सकते हैं)।

  2. VM पर राइट-क्लिक करें और 'क्लोन ...' कमांड चलाएँ:

    • VM के मूल नाम पर नाम सेट करें।
    • शेष चूक को स्वीकार करें अर्थात क्लोन प्रकार: 'पूर्ण क्लोन'; स्नैपशॉट: 'करंट मशीन स्टेट'।
  3. पुराने VM को हटाएं (VM पर राइट-क्लिक करें और 'Remove ...' कमांड चलाएँ)।


0

यदि आपका होस्ट एक विंडोज़ है या आप वीएचडी फ़ाइलों को एक विंडोज़ से एक्सेस कर सकते हैं, तो माता-पिता, ग्रैंड-पैरेंट, आदि में सभी परिवर्तनों को MERGE करने की एक चाल है।

यह DiskPart टूल और दो कमांड्स का उपयोग कर रहा है:

select vdisk file="whatever your file is, with full path"

merge vdisk depth=#

जहाँ # पदानुक्रम स्तरों की संख्या है जिसे आप स्थानांतरित करना चाहते हैं, 1 अभिभावक माता-पिता के लिए, 2 भव्य माता-पिता के लिए, आदि।

यह इसे जगह में करता है, क्लोनिंग आदि की तुलना में बहुत कम समय लगता है।

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

उदाहरण:

Disk3.vhd Disk2.vhd का बच्चा है, Disk2.vhd Disk1.vhd का बच्चा है

यदि आप Disk1.vhd पर चाहते हैं तो Disk3.vhd के सभी परिवर्तन बस का उपयोग करें depth=2और Disk3.vhd का चयन करें। यदि आप Disk1.vhd पर चाहते हैं तो Disk2.vhd के सभी परिवर्तन केवल Disk3.vhd का उपयोग depth=1करें।

यह भी याद रखें कि बदसूरत वर्चुअलबॉक्स स्नैपशॉट की कोई आवश्यकता नहीं है, आप किसी मौजूदा डिस्क से भिन्न डिस्क बनाने के लिए DiskPart create vdisk कमांड का उपयोग कर सकते हैं (जो कि एक डिफरेंसिंग डिस्क भी हो सकती है, आदि), एक विशाल ट्री भी बना सकते हैं।

शेष सभी के लिए: पोस्टर VHD (VDI का उपयोग नहीं कर रहा है) इसलिए DiskPart और Disk Managment जैसे देशी टूल का उपयोग कर सकते हैं जो कि अतिथि से (डिस्क पर, यदि होस्ट विंडोज है) एक्सेस करने के लिए।

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

आशा है कि VHD / VHDX के बाद से एक और अलग aproach का उपयोग कर सकते हैं (VMDK, VDI, आदि के लिए मान्य नहीं है, केवल Windows होस्ट के लिए)।

नोट: Windows 7 और Up, XP और Vista बाहरी M $ टूल के साथ VHD को माउंट कर सकते हैं लेकिन DiskPart का XP और Vista पर कोई VHD समर्थन नहीं है ... यह सब भी विंडोज होम एडिशन (7 और अप) पर काम करता है, किसी के लिए कोई ज़रूरत नहीं है सर्वर संस्करण।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.