कभी-कभी मैं देखता हूं कि VMWare ESXi होस्ट पर एक निश्चित वर्चुअल मशीन फ्रीज हो जाती है और vSphere कंसोल द्वारा किसी भी साधन से इसे बंद या पुनः आरंभ करना असंभव है। एक वर्चुअल मशीन के कारण पूरे ESXi होस्ट को रीबूट करना पूरी तरह से उचित नहीं है (विशेषकर यदि आपके पास केवल एक ESXi होस्ट है, या DRS क्लस्टर में शेष सर्वर पुनः आरंभ किए जाने वाले सर्वर से वर्चुअल मशीनों के अतिरिक्त लोड का सामना नहीं कर सकते)। VMWare ESXi होस्ट पर अनुत्तरदायी (हंग) वर्चुअल मशीन को जबरन मारने के मुख्य तरीकों पर विचार करें।
यदि ESXi सर्वर पर वर्चुअल मशीन प्रक्रिया फ्रीज हो जाती है, तो यह vCenter Reset/Power Off कमांड पर प्रतिक्रिया देना बंद कर देती है, और किसी भी कार्रवाई पर निम्न त्रुटियों में से एक लौटाती है:
- एक अन्य कार्य पहले से ही प्रगति पर है;
- वर्चुअल मशीन समवर्ती संचालन कर रही हो सकती है। कार्रवाई: समवर्ती ऑपरेशन पूरा करें और पावर-ऑफ ऑपरेशन को पुनः प्रयास करें; वर्चुअल मशीन अमान्य स्थिति में है;
- प्रयासित ऑपरेशन वर्तमान स्थिति में नहीं किया जा सकता।
ऐसे मामलों में, आप ESXi शेल या PowerCLI कमांड प्रॉम्प्ट से ESXi होस्ट पर वर्चुअल मशीन प्रक्रिया को मैन्युअली मार सकते हैं।
सबसे पहले आपको यह निर्धारित करने की आवश्यकता है कि हंग वर्चुअल मशीन किस ESXi होस्ट पर चल रही है। ऐसा करने के लिए, vSphere Client इंटरफेस में VM ढूंढें। ESXi होस्ट का नाम जिस पर VM चल रही है, सारांश टैब पर संबंधित ऑब्जेक्ट → होस्ट सेक्शन में निर्दिष्ट है।
अगला, आपके ESXi होस्ट पर SSH एक्सेस प्रोटोकॉल सक्षम होना चाहिए। आप इसे vSphere इंटरफेस से कर सकते हैं। ESXi होस्ट नाम पर क्लिक करें, कॉन्फ़िगर → सेवाएं → SSH → शुरू पर जाएं।
अब आप putty क्लाइंट का उपयोग करके इस होस्ट से SSH के माध्यम से कनेक्ट कर सकते हैं। ESXi होस्ट पर चल रही VMs सूचीबद्ध करें:
esxcli vm process list
समस्या वाली वर्चुअल मशीन की "World ID" कॉपी करें।
ESXi होस्ट पर हंग वर्चुअल मशीन की प्रक्रिया को समाप्त करने के लिए, निम्न कमांड का उपयोग करें:
esxcli vm process kill --type=[soft,hard,force] --world-id=WorldNumber
VM प्रक्रिया के तीन किल प्रकार हैं:
- सॉफ्ट — VMX प्रक्रिया को मारने का सबसे सुरक्षित तरीका (kill -SIGTERM के समान);
- हार्ड — VM प्रक्रिया का तत्काल समाप्ति (kill -9);
- फोर्स — सबसे कठिन VM प्रक्रिया रोक मोड। अंतिम उपाय के रूप में उपयोग किया जाना चाहिए यदि कुछ भी मदद नहीं करता।
सुनिश्चित करें कि VM के लिए कोई सक्रिय स्नैपशॉट, बैकअप और इसी तरह के कार्य नहीं हैं, और VM "वर्चुअल मशीन डिस्क समेकन आवश्यक है" स्थिति में नहीं है। अन्यथा, आप अपना VM तोड़ सकते हैं और आपको इसे बैकअप से पुनर्स्थापित करना होगा।
निर्दिष्ट ID के साथ VM को सॉफ्टली रोकने का प्रयास करें:
esxcli vm process kill --type=soft -w=20598249
VM को पावर्ड ऑफ होना चाहिए।
आप PowerCLI का उपयोग करके फ्रोजन VMware वर्चुअल मशीन को रोक सकते हैं (यह सुविधाजनक है, क्योंकि vCenter से कनेक्ट करते समय आपको उस होस्टनाम को ढूंढने की आवश्यकता नहीं है जिस पर VM चल रही है और उस पर SSH शेल सक्षम करें)। जांचें कि VM चल रही है:
get-vm "web1" | select name,PowerStates
कमांड से VM प्रक्रिया को जबरन रोकें:
stop-vm -kill "web1" -confirm:$false
आप ESXTOP यूटिलिटी का उपयोग करके अनुत्तरदायी VMware वर्चुअल मशीन को भी रोक सकते हैं।
SSH सत्र खोलें, esxtop दर्ज करें, CPU संसाधन प्रदर्शित करने के लिए "c" दबाएं और फिर केवल वर्चुअल मशीन प्रक्रियाओं को प्रदर्शित करने के लिए SHIFT+V दबाएं।
फिर "f" दबाएं (प्रदर्शित किए जाने वाले फ़ील्ड चुनने के लिए), "c" (LWID- लीडर वर्ल्ड आईडी प्रदर्शित करने के लिए) और फिर ENTER दबाएं।
नाम कॉलम में, रोकने वाली वर्चुअल मशीन ढूंढें और संबंधित कॉलम में इसकी LWID संख्या नोट करें।
अब आपको "k" (मारें) दबाना होगा और उस वर्चुअल मशीन की LWID संख्या दर्ज करनी होगी जिसे आप जबरन बंद करना चाहते हैं।
VM "हार्ड" पावर ऑफ का अंतिम तरीका kill टूल का उपयोग करना है। यह विधि न केवल VM को रोकेगी, बल्कि सभी चाइल्ड प्रक्रियाओं को भी रोकेगी।
VM की पैरेंट प्रोसेस आईडी प्राप्त करें:
ps | grep "web2"
VM प्रक्रिया को मारें:
kill -9 24288474
इस तरह के "हार्ड रीसेट" के बाद, इंस्टॉल्ड OS रिकवरी मोड में बूट होगा। गेस्ट विंडोज के मामले में, स्क्रीन इस तरह दिखेगी।