VMware कार्य केंद्र: अधिकतम आकार को कम करने के लिए कैसे


27

मेरे पास एक 150 GB डिस्क फ़ाइल (.vmdk, गैर-पूर्व-आबंटित) है जहाँ मेरी वर्चुअल मशीन संग्रहीत है।

फ़ाइल वर्तमान में 20 GB है, लेकिन यह रोज़ बढ़ती जा रही है, भले ही मैं अतिथि फ़ाइल सिस्टम में कुछ नया संग्रहीत नहीं कर रहा हूँ।

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

मैंने क्या कोशिश की है:

  • VMware कनवर्टर के साथ डिस्क छवि परिवर्तित करना → यह काम नहीं करता है, उपकरण केवल एक पूर्ण प्रतिलिपि या 'लिंक किए गए क्लोन' बनाने की अनुमति देता है।
  • नए .vmdk पर 20GB डेटा कॉपी करने के लिए वांछित आकार की एक नई खाली वर्चुअल मशीन बनाना। मुझे कॉपी परफॉर्म करने का तरीका नहीं मिल रहा है या नई डिस्क को मेरे मौजूदा वीएम से कनेक्ट करने के लिए (ताकि मैं कॉपी का उपयोग करके कर सकूं अतिथि ओएस)।
  • यह देखने के लिए .vmx फ़ाइल की जाँच करें कि क्या अधिकतम आकार सादे पाठ में सेट नहीं है (यह नहीं है)।

हालांकि यह कार्य तकनीकी रूप से काफी सरल लगता है (इसमें कोई मुश्किल सिकुड़न शामिल नहीं है, बस आकार की सीमा का एक सरल बदलाव है), मैं वास्तव में यहां विचारों से बाहर हूं ...

क्या इसका कोई हल है?


1
चूंकि आभासी डिस्क पर विभाजन विज्ञापित स्थान को भरने के लिए सबसे अधिक संभावना है, "मुश्किल सिकुड़न" वास्तव में शामिल है।
डैनियल बी

जवाबों:


25

.Vmdk डिस्क के आकार को कम करने की सामान्य प्रक्रिया निम्नलिखित है:

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

  2. शून्य डिस्क पर सभी अप्रयुक्त स्थान।
    विंडोज उपयोग के लिए sdelete : sdelete -c
    लिनक्स के लिए dd if=/dev/zero of=/mytempfile && rm -f /mytempfile:।

  3. डिस्क को सिकोड़ें (जिसे पूरा होने में काफी लंबा समय लग सकता है)।
    VMware कार्य केंद्र: मेनू VM / प्रबंधित करें / डिस्क साफ़ करें।
    या का उपयोग करें: vmware-vdiskmanager.exe -k [VMDK PATH]
    ESX के लिए vmkfstools --punchzero [VMDK PATH]:।

डिस्क को बढ़ने योग्य से उपदेश में परिवर्तित करने से इसके बढ़ने को रोका जा सकता है। यह vmware-vdiskmanager का उपयोग उस -tपैरामीटर के साथ किया जा सकता है जिसके मान हैं:

0 : single growable virtual disk
1 : growable virtual disk split in 2Gb files
2 : single preallocated virtual disk
3 : preallocated virtual disk split in 2Gb files

निम्न आदेश परिवर्तित होगा।

vmware-vdiskmanager -r current_disk_name.vmdk -t 3 new_disk_name.vmdk

यदि आप डिस्क का आकार बदलना चाहते हैं, तो यह तब किया जाना चाहिए जब डिस्क अभी भी बढ़ने योग्य प्रारूप में है (उदाहरण यहां )।

अधिक जानकारी के लिए वर्चुअल डिस्क प्रबंधक उपयोगकर्ता की मार्गदर्शिका देखें


2
यह आंतरिक रूप से विज्ञापित ड्राइव आकार को कम नहीं करता है, हालांकि।
डैनियल बी

@ डैनियलबी: नहीं, यह अधिकतम आकार को कम नहीं करता है, सिर्फ भौतिक आकार को। अधिकतम आकार को कम करना खतरनाक हो सकता है, क्योंकि कुछ ओएस सिस्टम डिस्क पर कुछ खाली जगह के बिना बूट नहीं कर सकते हैं।
harrymc

3
यह एक उपयोगी तकनीक है जिसका उपयोग मैंने VMDK के कब्जे वाले स्थान को कम करने के लिए किया था। हालाँकि, यह मेरी समस्या को पूरी तरह से हल नहीं करता है, जैसे कि मैं VMDK को हमेशा चालू रखना चाहता हूं, मान लें कि 30GB है, मुझे समय-समय पर ऑपरेशन (जो वास्तव में एक लंबा समय लगता है) दोहराना होगा।
सेबेस्टियन

यदि डिस्क को हमेशा वांछित आकार तक पतला किया जा सकता है, जिसका अर्थ है कि ऊपर की प्रक्रिया हमेशा आकार को कम करने के लिए काम करती है, तो आप डिस्क को निश्चित-आकार में परिवर्तित करके भविष्य में आकार को सीमित कर सकते हैं।
harrymc

1
@harrymc डिस्क को निश्चित आकार में परिवर्तित करना मेरी आवश्यकताओं के अनुरूप होगा। मुझे अभी VMWare वर्कस्टेशन या कन्वर्टर के साथ ऐसा करने का कोई तरीका नहीं मिला।
सेबेस्टियन

6

फ़ाइल वर्तमान में 20GB है, लेकिन यह हर रोज़ बढ़ रहा है, भले ही मैं अतिथि फ़ाइल सिस्टम में कुछ नया संग्रहीत नहीं कर रहा हूं।

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

आपके प्रश्न का शीर्षक कम होने की संभावना है क्योंकि छवि के निरीक्षण के बिना ऐसे उपकरण का उपयोग करने से कुल आपदा हो सकती है। लेकिन आप छवि को 30GB से आगे बढ़ने से रोक सकते हैं। लक्ष्य प्राप्त करने के कई तरीके हैं।

A. केवल 30GB विभाजन का उपयोग करें और शेष खाली स्थान के रूप में छोड़ दें। यदि आपने पहले से अधिक स्थान का विभाजन कर लिया है, तो आपको इसे सिकोड़ने / हटाने की आवश्यकता है, एक नया विभाजन बनाएं फिर इसे शून्य से डंप करें और इसे @harrymc द्वारा वर्णित के रूप में पंच करें। जैसे कि बिना विभाजन वाले क्षेत्र में अंतरिक्ष का उपयोग कभी नहीं किया जाता है वर्चुअल डिस्क कभी भी 30GB से आगे नहीं बढ़ेगी।

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

C. अधिकतम 30GB की एक नई वर्चुअल डिस्क बनाएं, इसे अपनी वर्तमान वर्चुअल मशीन में एक नई डिस्क के रूप में जोड़ें, बैकअप टूल का उपयोग करके सभी डेटा को नए वर्चुअल डिस्क पर ले जाएं। आप क्लोनिंग के लिए लाइव लिनक्स का उपयोग कर सकते हैं।

अनुशंसित विकल्प ए है


2

क्यों नहीं बस 150GB से 30GB शामिल डिस्क का आकार निर्धारित करें।

आपको सभी विभाजनों का योग 30GB से कम होना होगा। जैसे ही आप जाते हैं आपको विभाजन के आकार को छोटा करना होगा। इस साइट पर दस्तावेज़ों का एक बहुत कुछ है कि कैसे नीचे विभाजन को सिकोड़ना है इसलिए मैं इसे यहाँ नहीं दोहराऊंगा।

यदि आपने अधिकतम आकार में इसका समर्थन करने के लिए स्थान नहीं बनाया तो आपने 150GB (पतला विभाजन) क्यों बनाया? ऐसा लगता है कि बस मुसीबत के लिए पूछ रहा है।


5
मैंने व्यक्तिगत रूप से VM नहीं बनाया, यही कारण है कि।
सेबास्टियन

मैं डिस्क को कैसे सिकोड़ता हूं? मेरे पास डिस्क के भीतर विभाजन कम होते हैं, लेकिन vdiskmanager.exe -k [VMDK PATH]जैसा कि एक अन्य उत्तर में सुझाया गया है, ड्राइव को छोटा नहीं करता है।
एरॉन फ्रेंके

जो समस्या स्पष्ट रूप से प्रलेखित नहीं है, वह है vmdk डिवाइस का आकार बदलना (कोर्स के विभाजन को आकार देने के बाद)। इसके अलावा @ mdpc मुझे लगता है कि आपका उत्तर रचनात्मक नहीं है। कई बार आपको मौजूदा vm पर डेटा का आकार बदलने की आवश्यकता होती है , इसलिए उंगली को इंगित करने का कोई मतलब नहीं है कि VM को सही तरीके से बनाया जाना चाहिए।
बेसोज

2

एक नया VM और छोटा VMDK आकार बनाने के लिए VMWare कनवर्टर का उपयोग करने का एक राउंडअबाउट तरीका है , फिर मूल VMDK को नए बनाए गए, छोटे VMDK में कनवर्ट करें।

VMDK को सिकोड़ें

यहाँ विस्तृत कदम ।

ध्यान दें कि VMDK के आकार में किसी भी बदलाव के लिए भी विभाजन तालिका में इसी अद्यतन की आवश्यकता होगी ।


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

2

केवल वीएमडीके (गैर-पूर्व-आवंटित) के लिए ही यह काम होता है, यह सुनिश्चित करने के लिए सिकुड़ने से पहले एक डीफ़्रैग्मेंटेशन की आवश्यकता होती है ताकि यह सुनिश्चित किया जा सके कि उपयोग किया गया स्थान सन्निहित है

विंडोज के भीतर डीफ़्रैग्मेन्ट करना

विंडोज वर्चुअल मशीन में, आपको सबसे पहले विंडोज के भीतर से डिस्क डिफ्रैगमेंट चलाना होगा। विंडोज के भीतर डीफ़्रैग्मेंटिंग यह सुनिश्चित करता है कि सभी उपयोग किए गए रिक्त स्थान सन्निहित हैं। तब आप वर्चुअल डिस्क के आकार को कम कर सकते हैं।

वर्चुअल डिस्क को सिकोड़ना

वर्चुअल डिस्क को सिकोड़ने के लिए:

VMware टूल कंट्रोल पैनल / टूलबॉक्स खोलें:

विंडोज में:

सिस्टम ट्रे में VMware टूल आइकन पर डबल-क्लिक करें, या स्टार्ट> कंट्रोल पैनल> VMware टूल पर क्लिक करें।

लिनक्स में:

टर्मिनल खोलें और इस कमांड को चलाएं:

VMware-टूलबॉक्स

नोट: वर्कस्टेशन 9.x (विंडोज़) और इसके बाद के संस्करण में डिस्क को साफ करते समय सिकुड़न अपने आप हो जाती है। इसलिए, इस विकल्प को VMware टूल पैनल से हटा दिया जाता है। VM> मैनेज> क्लीन अप डिस्क पर जाएं। यह VMware वर्कस्टेशन 9.x और बाद के लिनक्स संस्करण में उपलब्ध नहीं है।

श्रिंक टैब पर क्लिक करें। उस ड्राइव का चयन करें जिसे आप सिकोड़ना चाहते हैं। शिंक को तैयार पर क्लिक करें, फिर ऑनस्क्रीन निर्देशों का पालन करें। सावधानी: डिस्क के सिकुड़ने के दौरान अपनी वर्चुअल मशीन या होस्ट मशीन को बंद न करें। इसके अलावा, प्रक्रिया को रद्द करने का प्रयास न करें। इस प्रक्रिया को बाधित करने से आपकी वर्चुअल डिस्क को अपूरणीय क्षति हो सकती है और आप अपनी वर्चुअल मशीन को फिर से शुरू करने में सक्षम नहीं हो सकते हैं।

से VMWare ज्ञानकोष


मौजूदा उत्तरों को पढ़ना पहले नकली उत्तरों से बचा जाता है।
harrymc

1
क्षमा करें, वैसे भी मैंने इसे पूरी प्रक्रिया और स्रोत के साथ फिर से तैयार किया। इससे उसे और मदद मिल सकती है
जलाल मुस्तफा

सेशन का जवाब नहीं है या तो। ओपी अधिकतम सीमा को सिकोड़ना चाहता है, वर्तमान आकार को नहीं।
रियू

2

@Harrym का उत्तर बहुत अच्छा है, लेकिन यह वास्तव में सवाल का जवाब नहीं देता है। ओपी अधिकतम आकार कम करना चाहता है । समस्या यह है कि हाइपरविजर को पता नहीं है कि प्रस्तुत आकार (उर्फ अधिकतम आकार) का वास्तव में ओएस द्वारा कितना उपयोग किया जाता है। संघनन (vmware-vdiskmakager -k) एक बढ़ते vmdk पर लागू होता है। यह किसी के उपदेश पर कुछ नहीं करता है।

तो डिस्क को सिकोड़ने के चरण हैं:

  1. ओएस के माध्यम से, या एक उपयुक्त लाइव सीडी के माध्यम से डिस्क पर विभाजन का आकार बदलें
  2. Vmdk डिवाइस का आकार बदलें, ध्यान से किसी भी प्रयोग करने योग्य विभाजन स्थान को नहीं काटने के लिए सीमा का चयन करें। आप हमेशा imnage में कुछ और स्थान छोड़ सकते हैं, जितना वास्तव में इसकी आवश्यकता है।

पहले चरण में वीएम के भीतर से एक प्रक्रिया शामिल है और अतिथि ओएस के साथ बदलती है। दूसरे चरण को vmware कमांड द्वारा समर्थित किया जा सकता है लेकिन मुझे ऐसा करने का गहरा तरीका नहीं मिला है। इस प्रकार हैकी दृष्टिकोण।

यहां एक गैर-त्वरित (बड़े डेटा के शामिल होने के कारण) और गंदा समाधान है जिसने चाल चली। हमें अधिकतम डिवाइस आकार के बराबर जगह उपलब्ध करानी होगी

चेतावनी: किसी भी ऑपरेशन से पहले महत्वपूर्ण डेटा बैकअप के लिए याद रखें !!

  1. अतिथि विभाजन का आकार बदलने और डिवाइस के अंत में बिना खाली स्थान छोड़ने का तरीका खोजें। दो उदाहरण:

    अतिथि ओएस से: विंडोज 7

    1. आप ऑनलाइन आकार बदलने की क्षमता का उपयोग कर सकते हैं। खोज ओएस के भीतर से डिस्क को पहले डीफ़्रैग्मेंट करना एक अच्छा विचार है।
    2. Diskmgmt.msc चलाएं, जिस डिस्क को आप आकार बदलना चाहते हैं, उस विभाजन (वॉल्यूम) का चयन करें, राइट क्लिक करें-> वॉल्यूम को सिकोड़ें। दिखाई देने वाले संवाद में आपकी आवश्यकताओं के अनुसार आकार कम हो जाता है। ध्यान दें कि चूंकि विभाजन उपयोग में है (यदि यह सिस्टम डिस्क, या भारी खंडित है) तो आप अपने अधिकांश खाली स्थान को पुनर्प्राप्त करने में सक्षम नहीं हो सकते हैं। अतिरिक्त खाली स्थान छोड़ने का प्रावधान।
    3. अब हम डिस्क सेक्टर (या बाइट) को समाप्त करने वाले विभाजन को जानना चाहते हैं। यह मानते हुए कि यह डिवाइस पर एकमात्र विभाजन है, हम वॉल्यूम का आकार मेरे कंप्यूटर पर प्रदर्शित के रूप में लेते हैं-> डिस्क का चयन करें-> राइट क्लिक-> गुण-> क्षमता: बाइट्स में संख्या पर ध्यान दें। (उदाहरण के लिए मेरे उदाहरण 107371032576 में 99,9GB के लिए)। सुरक्षा के लिए कुछ सौ megs जोड़ें (+204800) (जैसे 107371237376)। यह सुनिश्चित करने के लिए कि हमें कुछ भी जोड़ने की आवश्यकता नहीं है, हम डिवाइस की शुरुआत से विभाजन की ऑफसेट खोजने के लिए डिस्कपार्ट cmd लाइन उपयोगिता का उपयोग कर सकते हैं। डिस्कपार्ट चलाएं: सूची डिस्क, डिस्क आईडी का चयन करें , सूची भाग, भाग आईडी का चयन करें , विस्तार। उदाहरण:

    DISKPART> विस्तार भाग

    विभाजन १

    बाइट्स में ऑफसेट: 1048576

    सुनिश्चित करें कि आप डिस्क आकार में कम से कम इस संख्या को जोड़ते हैं। अब हमें बाइट्स को 512 से विभाजित करने वाले सेक्टरों में बदलना होगा और ऊपर की ओर (छत) को गोल करना होगा। उदाहरण 209709448. चरण 3 के लिए इस संख्या पर ध्यान दें।

    एक लाइव सीडी: SystemResqueCD

    1. वैकल्पिक रूप से आप एक resque cd का उपयोग कर सकते हैं, ( SystemResqueCD मेरा प्रस्ताव है), बूट करने योग्य ISO डाउनलोड करें, इसे आप पर VM के रूप में वर्चुअल cd रोम डिवाइस के रूप में माउंट करें, CD से बूट करें (VMWare बूट स्क्रीन पर Esc कुंजी दबाकर, आपको प्रयास करने की आवश्यकता होगी। कुछ समय के रूप में यह बहुत जल्द प्रकट होता है)। कमांड प्रॉम्प्ट प्रकार: startx पर पहुंचने पर, यह उम्मीद है कि आपको ग्राफिकल इंटरफ़ेस में लाएगा।
    2. एक बार systemresque के डेस्कटॉप पर, gparted (जैसे टर्मिनल से) शुरू करें। विभाजन का पता लगाइए (यह साफ तौर पर अनमाउंट होना चाहिए, यदि संदेह में अतिथि ऑपरेटिंग सिस्टम से एक स्कैंडिस्क है)। आकार बदलने, ध्यान से अपने अंतरिक्ष की जरूरत की योजना बना।
    3. फिर से हमें विभाजन के क्षेत्रों (या बाइट्स) में समाप्त होने वाले ऑफसेट को खोजने की आवश्यकता है। टर्मिनल खोलें और विभाजित [ डिवाइस ] लिखें , फिर यूनिट एस, प्रिंट। उदाहरण के लिए

नंबर स्टार्ट एंड साइज टाइप फाइल सिस्टम फ्लैग्स

1 2048s 113455103s 113453056s प्राथमिक ntfs बूट

समाप्त होने वाले क्षेत्र को नोट करें और 1. एग 113455104 जोड़ें। चरण 3 के लिए इस संख्या पर ध्यान दें।

  1. चूंकि हैक एकल फ़ाइल पर काम करता है (टाइप 2) vmdks (कई फ़ाइल प्रकारों पर प्रयास नहीं किया गया है) हम पहले प्रचार करने के लिए बढ़ने योग्य परिवर्तित करते हैं। हमें अस्थायी रूप से डिवाइस के अधिकतम आकार के रूप में भौतिक स्थान के साथ एक विभाजन की आवश्यकता होगी। (उदा 150GB)।

    vmware-vdiskmanager.exe -r sourcevmdk -t 2 destvmdk

  2. अब मुश्किल हिस्सा, प्रचारित डिस्क के लिए 2 vmdks होना चाहिए

    disk.vmdk डिस्क- flat.vmdk

    पूर्व केवल KB लंबा है, और उत्तरार्द्ध डेटा को विस्तारित करता है। VMWare वर्कस्टेशन बंद होने के दौरान पहले (disk.vmdk) को खोलें , एक टेक्स्ट एडिटर (Notepad ++ मेरे सुझाव के अनुसार) के साथ। लाइन का पता लगाएं

    आरडब्ल्यू 113455104 FLAT "विंडोज 7_x64-fl-flat.vmdk" 0

    हां, आपको बिंदु मिलता है, दूसरा क्षेत्र डिवाइस के लिए आवंटित क्षेत्रों की संख्या है। सत्यापन के रूप में 512 से गुणा करें और बाइट्स में आकार ढूंढें, फिर जीबी में आकार खोजने के लिए 1073741824 (1024 ** 3) से विभाजित करें। यह पिछले डिवाइस का आकार होना चाहिए।

    अब उस नंबर को स्टेप वन से नोट किए गए नंबर से बदलें और फाइल को सेव करें। चेतावनी : यहाँ एक गलती है और आप फ़ाइल सिस्टम पर उपयोग किए जाने वाले वास्तविक डेटा को ट्रिम कर सकते हैं। (लेकिन हमने डिवाइस की शुरुआत में fs का आकार बदला और सही और सुरक्षित गणना सही की?)

  3. अब तक कोई डेटा अभी तक छुआ नहीं गया है। वास्तव में फैली ट्रिम को अंतिम चरण में करें। Vmdk को फिर से आकार देने के लिए हम vmware-vdiskmanager के नाम की कार्यक्षमता का उपयोग करेंगे, जिसका आकार अब छंटनी हो जाएगा।

    vmware-vdiskmanager.exe -n destvmdk sourcevmdk


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