एक टेस्ट टास्क में VMWare ESXi होस्ट पर चल रहे Windows 10 वर्चुअल मशीन (Windows Server 2016 पर भी लागू) पर Hyper-V वर्चुअलाइज़ेशन रोल इंस्टॉल करना आवश्यक था। इसका मतलब था कि मुझे VMWare ESXi पर Hyper-V का नेस्टेड वर्चुअलाइज़ेशन प्रदान करना है।
नेस्टेड वर्चुअलाइज़ेशन क्या है?
नेस्टेड वर्चुअलाइज़ेशन एक हाइपरवाइज़र के अंदर दूसरे हाइपरवाइज़र पर चल रहे वर्चुअल मशीन में हाइपरवाइज़र चलाने की अनुमति देता है। Hyper-V में, नेस्टेड वर्चुअलाइज़ेशन के लिए पूर्ण समर्थन Windows Server 2016 / Windows 10 एनिवर्सरी अपडेट में आया। VMWare में यह तकनीक लंबे समय से काम कर रही है (ESXi 5.0 में दिखाई दी)।
मेरे पास VMWare ESXi 6.0 वर्चुअलाइज़ेशन होस्ट है जिस पर Windows 10 1709 वर्चुअल मशीन चल रही है।
समस्या: Hyper-V इंस्टॉलेशन विकल्प निष्क्रिय है
जब Control Panel → Programs & Features → Turn Windows features on or off से Hyper-V हाइपरवाइज़र रोल (कंपोनेंट को Hyper-V Hypervisor कहा जाता है) इंस्टॉल करने का प्रयास किया, तो यह विकल्प निष्क्रिय निकला। कारण इस प्रकार है:
Hyper-V cannot be installed: The processor does not have the required virtualization capabilities
समाधान: नेस्टेड वर्चुअलाइज़ेशन सक्षम करें
Windows 10 गेस्ट OS वाले इस VM के लिए नेस्टेड वर्चुअलाइज़ेशन सक्षम करने के लिए, vSphere वेब क्लाइंट का उपयोग करके वर्चुअल मशीन सेटिंग्स खोलें (VM बंद होना चाहिए)। CPU सेक्शन में "Expose hardware assisted virtualization to the guest OS" विकल्प को चेक करें (यह विकल्प vCenter C# थिन क्लाइंट में उपलब्ध नहीं है)।
नोट. पुराने ESXi वर्जन में जिनमें यह विकल्प नहीं है और डेस्कटॉप VMWare Workstation में, आप वर्चुअल मशीन की कॉन्फ़िगरेशन फ़ाइल (*.vmx) में निम्न विकल्प जोड़कर नेस्टेड वर्चुअलाइज़ेशन सक्षम कर सकते हैं:hypervisor.cpuid.v0 = "FALSE"
mce.enable = "TRUE"
vhv.enable = "TRUE"
VMware vSphere क्लाइंट में, ये विकल्प VM सेटिंग्स में जोड़े जा सकते हैं: Options → General → Configuration Parameters. Add Row का उपयोग करके समान पैरामीटर्स के साथ दो नई पंक्तियाँ जोड़ें।
दूसरी समस्या: SLAT सपोर्ट की कमी
अपनी Windows 10 वर्चुअल मशीन शुरू करें और Hyper-V रोल को फिर से इंस्टॉल करने का प्रयास करें। अब Windows यह डिटेक्ट नहीं करता कि यह किसी अन्य हाइपरवाइज़र के अंदर चल रहा है, लेकिन एक नई त्रुटि दिखाई देती है:
Hyper-V cannot be installed: the processor does not support second level address translation (SLAT).
इसका मतलब है कि वर्चुअलाइज़ेशन सपोर्ट के अलावा, VM प्रोसेसर को SLAT तकनीक सपोर्ट करनी चाहिए, यानी मेमोरी पेजों की वर्चुअलाइज़ेशन और गेस्ट OS द्वारा उनका सीधा नियंत्रण। इंटेल की भाषा में इस फीचर को एक्सटेंडेड पेज टेबल्स (EPT) कहा जाता है, और AMD इसे रैपिड वर्चुअलाइज़ेशन इंडेक्सिंग (RVI) कहता है।
SLAT सपोर्ट जांचें
निम्न कमांड का उपयोग करके सुनिश्चित करें कि प्रोसेसर (vCPU) SLAT सपोर्ट करता है:
systeminfo
Hyper-V Requirements सेक्शन में कमांड को यह रिटर्न करना चाहिए कि SLAT सपोर्ट नहीं है:
Second Level Address Translation: No
CPU/MMU वर्चुअलाइज़ेशन सेटिंग बदलें
इस मामले में, आपको वर्चुअल मशीन प्रोसेसर के पैरामीटर्स बदलने होंगे। vSphere वेब क्लाइंट के CPU/MMU Virtualization सेक्शन में, Hardware CPU and MMU चुनें।
थिन vSphere क्लाइंट में, वही विकल्प Options टैब के CPU/MMU Virtualization सेक्शन में स्थित है और इसे 'Use Intel VT-x/AMD-V for instruction set virtualization and Intel EPT/AMD RVI for MMU virtualization' कहा जाता है।
Windows 10 वर्चुअल मशीन शुरू करें और सुनिश्चित करें कि अब इसका प्रोसेसर SLAT सपोर्ट करता है। फिर आप Hyper-V रोल के सभी कंपोनेंट्स इंस्टॉल कर सकते हैं और इस Windows 10 VM के अंदर अन्य वर्चुअल मशीन चला सकते हैं।