इस लेख में हम दिखाएंगे कि VMware ESXi पर चल रही वर्चुअल मशीन की वर्चुअल डिस्क (vmdk) फाइल का आकार कैसे कम करें। VMware वर्चुअल मशीन की डिस्क को बढ़ाने के विपरीत, जिसे आप वर्चुअल मशीन को बंद किए बिना ऑन-द-फ्लाई कर सकते हैं, VMware ESXi हाइपरवाइज़र पर vmdk फाइल का आकार कम करना अधिक जटिल है, और आप इसे vSphere वेब क्लाइंट ग्राफिकल इंटरफ़ेस के माध्यम से नहीं कर सकते। vSphere क्लाइंट आपको छोटा वर्चुअल डिस्क आकार निर्दिष्ट करने की अनुमति नहीं देता।
महत्वपूर्ण. यह गाइड VMware में vmdk डिस्क का आकार कम करने का आधिकारिक तौर पर समर्थित समाधान नहीं है। हालांकि, मैंने इस विधि का दर्जनों बार उपयोग किया है। इस लेख में VMware ESXi 6.7 का उपयोग किया गया है।

वर्चुअल डिस्क का आकार कम करने से पहले, अपने VMware ESXi होस्ट पर निम्न कार्य करें:
- वर्चुअल मशीन के सभी स्नैपशॉट हटाएं (अन्यथा, आप वर्चुअल डिस्क को नुकसान पहुंचा सकते हैं);
- वर्चुअल मशीन का पूर्ण बैकअप बनाएं, या उन vmdk और flat फाइलों की कॉपी बनाएं जिन्हें आप श्रिंक करना चाहते हैं। इन कमांड्स का उपयोग करें:
cp vmname.vmdk backup_vmname.vmdk
cp vmname-flat.vmdk backup_vmname-flat.vmdk
वर्चुअल डिस्क आकार कम करने की प्रक्रिया में दो चरण होते हैं:
- गेस्ट OS के अंदर पार्टीशन को श्रिंक करें;
- VMFS (NFS) डेटास्टोर पर VMware वर्चुअल मशीन की VMDK फाइल का आकार कम करें।
गेस्ट OS में पार्टीशन आकार कैसे श्रिंक करें?
सबसे पहले, गेस्ट ऑपरेटिंग सिस्टम में डिस्क पार्टीशन का आकार कम करें। यदि आपकी वर्चुअल मशीन Windows OS चला रही है, तो डिस्क मैनेजर diskmgmt.msc का उपयोग करें (Shrink Volume ऑपरेशन सभी समर्थित Windows संस्करणों में उपलब्ध है; पुराने Windows संस्करणों में पार्टीशन आकार कम करने के लिए sdelete टूल का उपयोग किया जाता है) या थर्ड-पार्टी टूल्स (जैसे Acronis Disk Director)। यदि आप ऐसा नहीं करते हैं, तो वर्चुअल डिस्क आकार श्रिंक करने के बाद आपकी फाइल सिस्टम क्रैश हो सकती है।

मान लीजिए, आप डिस्क आकार को 40 GB कम करना चाहते हैं। तो वॉल्यूम आकार को 40960 MB (40 GB x 1024) कम करना होगा। Shrink Volume विज़ार्ड के संबंधित फ़ील्ड में यह मान दर्ज करें। पार्टीशन आकार कम करने के बाद, आपके पार्टीशन के दाईं ओर कुछ अनअलोकेटेड स्पेस (हमारे उदाहरण में 40 GB) होगा।

ध्यान दें कि OEM या Windows रिकवरी पार्टीशन कभी-कभी डिस्क को बढ़ाने या कम करने से रोक सकते हैं।

लिनक्स में, आप parted का उपयोग करके पार्टीशन आकार कम कर सकते हैं। यदि LVM लॉजिकल वॉल्यूम उपयोग किए जाते हैं, तो परिदृश्य अलग होता है।
VMware वर्चुअल मशीन की VMDK फाइल आकार कम करें
फिर VMware VMFS फाइल सिस्टम पर VMDK फाइल का आकार कम करें।
- उस वर्चुअल मशीन को बंद करें जिसका डिस्क आकार कम करना चाहते हैं;
- SSH का उपयोग करके, उस ESXi होस्ट के कंसोल से कनेक्ट करें जिस पर VM रजिस्टर्ड है (आप पुट्टी या बिल्ट-इन Windows SSH क्लाइंट का उपयोग कर सकते हैं);
- उस डायरेक्टरी में जाएं जहां आपके VM की VMDK फाइल स्थित है (आप vSphere क्लाइंट में वर्चुअल डिस्क प्रॉपर्टीज में इसका पथ प्राप्त कर सकते हैं):
cd /vmfs/volumes/datastore/test-VM

- cat कमांड का उपयोग करके वर्चुअल डिस्क कॉन्फ़िगरेशन फाइल (*.vmdk) की सामग्री प्रदर्शित करें:
# cat test_vm_3.vmdk
VMDK डिस्क का आकार #Extent description सेक्शन में दिखाया गया है (RW वर्णों के बाद)। इस मामले में, यह 167772160 है (80 GB *1024*1024*1024 / 512);

- मैं अपना VMDK डिस्क 80 से 40 GB तक कम करना चाहता हूं। इसका मतलब है कि मुझे Extent description सेक्शन में 83886080 (
40 GB*1024*1024*1024 / 512) निर्दिष्ट करना होगा। टेक्स्ट एडिटर (vi या nano) का उपयोग करके अपने वर्चुअल डिस्क का नया आकार सेट करें; - मैं vi का उपयोग कर रहा हूं:
# vi test_vm_3.vmdk - डाउन एरो की का उपयोग करके डिस्क आकार वाली लाइन पर जाएं और इसे संपादित करने के लिए
iदबाएं। वर्चुअल डिस्क का नया आकार निर्दिष्ट करें। संपादन मोड से बाहर निकलने के लिए ESC दबाएं और फिर परिवर्तनों को सेव करने के लिए:wq→ Enter टाइप करें;

- फिर वर्चुअल मशीन को किसी अन्य डेटास्टोर पर क्लोन या माइग्रेट करें (Storage vMotion का उपयोग करके)। वर्चुअल मशीन फाइलों को स्थानांतरित करने के बाद, इसके वर्चुअल डिस्क का नया आकार इसके गुणों में प्रदर्शित होगा। टिप. यदि आपके पास केवल एक ESXi होस्ट, एक VMFS डेटास्टोर है, तो आप Storage vMotion का उपयोग नहीं कर पाएंगे। तब आप इस कमांड का उपयोग करके vmdk क्लोन कर सकते हैं:
vmkfstools -i test_vm_3.vmdk test_vm_3_newsize.vmdk

सोर्स VMDK डिस्क हटाएं, शेष VMDK डिस्क को फिर से क्लोन करें और इसका मूल नाम निर्दिष्ट करके इसका नाम बदलें:
rm test_vm_3.vmdk
rm test_vm_3-flat.vmdk
vmkfstools -i test_vm_3_newsize.vmdk test_vm_3.vmdk - सुनिश्चित करें कि VM गुणों में अब वर्चुअल डिस्क का नया आकार प्रदर्शित हो रहा है।

- फिर VM शुरू करें, गेस्ट OS में लॉगिन करें और सुनिश्चित करें कि अनअलोकेटेड क्षेत्र गायब हो गया है, और डिस्क आकार कम हो गया है।

टिप. यदि आपने पिछले चरण में vmkfstools का उपयोग किया है, तो VM सेटिंग्स में वर्चुअल डिस्क को पुनः कनेक्ट करें, क्योंकि इसका नया आकार सही ढंग से प्रदर्शित नहीं हो सकता है।
नोट. VMDK डिस्क का आकार कम करने के लिए निम्न विधियों का अक्सर उपयोग किया जाता है:
- VMware vCenter Converter का उपयोग करके वर्चुअल मशीन को परिवर्तित करके वर्चुअल डिस्क आकार कम करना। इसे परिवर्तित करने के लिए सोर्स से छोटा डिस्क आकार निर्दिष्ट करें (हम अगले अनुभाग में दिखाएंगे);
- आप थर्ड-पार्टी सॉफ्टवेयर (जैसे Acronis True Image या Symantec Ghost32) का उपयोग करके वर्चुअल डिस्क सामग्री को क्लोन कर सकते हैं। यह कार्य वर्चुअल मशीन में एक नई छोटी डिस्क जोड़कर और बड़ी डिस्क की सामग्री को इसमें क्लोन करके किया जाता है। फिर आप बड़ी डिस्क को हटा सकते हैं।
VMware vCenter Converter स्टैंडअलोन का उपयोग करके VMDK श्रिंक करना
VMware वर्चुअल मशीन के वर्चुअल डिस्क आकार को कम करने का एक और तरीका मुफ़्त GUI टूल VMware vCenter Converter स्टैंडअलोन का उपयोग करना है।
नुकसान:
- V2V रूपांतरण धीमा है;
- नई VM को सेव करने के लिए डेटास्टोर पर पर्याप्त स्थान होना चाहिए;
- नई वर्चुअल मशीन का नया MAC पता होगा।
लाभ:
- आपको vCenter या ESXi होस्ट कंसोल खोलने की आवश्यकता नहीं है;
- VM की सटीक प्रति बनाई जाती है;
- रूपांतरण कार्य सेटिंग्स में किसी भी त्रुटि के मामले में सोर्स डिस्क क्षतिग्रस्त नहीं हो सकती।
नोट. जिस वर्चुअल मशीन को आप परिवर्तित करना चाहते हैं (डिस्क आकार बदलें, आदि) वह बंद होनी चाहिए (Shut down या Power Off का उपयोग करके,Suspendके बजाय)।
ESXi होस्ट पता निर्दिष्ट करें।

सोर्स VM चुनें।

अपनी नई VM के पैरामीटर सेट करें।

डिस्क संपादन मोड पर जाएं (Data to copy → Edit)।

कॉपी मोड चुनें: Select volumes to copy।

अपनी नई VM के लिए नया डिस्क आकार निर्दिष्ट करें। जैसा कि आप देख सकते हैं, गेस्ट OS में 48 GB उपयोग किया गया है, और डिस्क आकार 150 GB है। हम वर्चुअल डिस्क का आकार 60 GB तक कम करेंगे।

VM रूपांतरण प्रक्रिया चलाएं। फिर आप सोर्स VM को पावर ऑफ कर सकते हैं और नई को पावर ऑन कर सकते हैं। सुनिश्चित करें कि डिस्क आकार कम हो गया है। उसके बाद मूल VM को हटाया जा सकता है।
नोट. Microsoft हाइपर-V के नवीनतम संस्करणों में, आप हाइपर-V ऑनलाइन VHDX रिसाइज़ टूल का उपयोग करके वर्चुअल डिस्क को डायनामिक रूप से रिसाइज़ (विस्तार और श्रिंक दोनों) कर सकते हैं।