কभी কখনো আমি দেখি যে VMWare ESXi হোস্টে একটি নির্দিষ্ট ভার্চুয়াল মেশিন ফ্রিজ হয়ে যায় এবং vSphere কনসোল থেকে যেকোনো উপায়ে এটি বন্ধ বা রিস্টার্ট করা অসম্ভব। একটি একক ভার্চুয়াল মেশিনের জন্য পুরো ESXi হোস্ট রিবুট করা সম্পূর্ণভাবে উপযুক্ত নয় (বিশেষ করে যদি আপনার শুধু একটি ESXi হোস্ট থাকে, বা DRS ক্লাস্টারের বাকি সার্ভারগুলো রিস্টার্ট হওয়া সার্ভার থেকে ভার্চুয়াল মেশিনের অতিরিক্ত লোড वहন করতে সক্ষম না হয়)। VMWare ESXi হোস্টে অনুরূপ (hung) ভার্চুয়াল মেশিন জোর করে বন্ধ করার মূল উপায়গুলো বিবেচনা করি।
যদি ESXi সার্ভারে ভার্চুয়াল মেশিন প্রসেস ফ্রিজ হয়ে যায়, তবে এটি vCenter Reset/Power Off কমান্ডগুলোর প্রতি প্রতিক্রিয়া জানায় না, এবং যেকোনো কর্মের জন্য নিচের ত্রুতিগুলো ফেরত দেয়:
- Another task is already in progress;
- The virtual machine might be performing concurrent operations. Actions: Complete the concurrent operation and retry the power-off operation; The virtual machine is in an invalid state;
- The attempted operation cannot be performed in the current state।
এই কেসগুলোতে, আপনি ESXi Shell বা PowerCLI কমান্ড প্রম্পট থেকে ESXi হোস্টে ভার্চুয়াল মেশিন প্রসেস ম্যানুয়ালি কিল করতে পারেন।
প্রথমে আপনাকে নির্ধারণ করতে হবে যে কোন ESXi হোস্টে hung ভার্চুয়াল মেশিনটি চলছে। এর জন্য, vSphere Client ইন্টারফেসে VM-টি খুঁজুন। যে ESXi হোস্টে VM চলছে তার নাম Summary ট্যাবে Related Object → Host সেকশনে নির্দিষ্ট থাকে।

পরবর্তী, আপনার ESXi হোсте SSH অ্যাক্সেস প্রোটোকল সক্রিয় করতে হবে। আপনি vSphere ইন্টারফেস থেকে এটি করতে পারেন। ESXi হোস্টের নামে ক্লিক করুন, Configure → Services → SSH → Start-এ যান।

এখন আপনি putty ক্লায়েন্ট ব্যবহার করে এই হোস্টের সাথে SSH-এ সংযোগ করতে পারেন। ESXi হোস্টে চলমান VM-গুলো তালিকাভুক্ত করুন:
esxcli vm process list

সমস্যা যুক্ত ভার্চুয়াল মেশিনের "World ID" কপি করুন।
ESXi হোস্টে hung ভার্চুয়াল মেশিনের প্রসেস বন্ধ করতে, নিচের কমান্ডটি ব্যবহার করুন:
esxcli vm process kill --type=[soft,hard,force] --world-id=WorldNumber
VM প্রসেস কিল করার তিনটি প্রকার রয়েছে:
- Soft – VMX প্রসেস কিল করার সবচেয়ে নিরাপদ উপায় (kill -SIGTERM-এর মতো);
- Hard – VM প্রসেসের তাৎক্ষণিক বন্ধকরণ (kill -9);
- Force – সবচেয়ে কঠোর VM প্রসেস বন্ধ করার মোড। অন্য কিছু কাজ না করলে শেষ উপায় হিসেবে ব্যবহার করুন।
নিশ্চিত করুন যে VM-এর জন্য কোনো সক্রিয় স্ন্যাপশট, ব্যাকআপ এবং অনুরূপ টাস্ক নেই, এবং VM "Virtual Machine disks consolidation is needed" স্টেটে নেই। অন্যথায়, আপনি আপনার 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- Leader World Id দেখাতে) এবং তারপর ENTER চাপুন।

Name কলামে বন্ধ করার জন্য ভার্চুয়াল মেশিনটি খুঁজুন এবং সংশ্লিষ্ট কলামে এর LWID নম্বর নোট করুন।
এখন আপনাকে "k" (kill) চাপুন এবং আপনি যে ভার্চুয়াল মেশিনটি জোর করে শাট ডাউন করতে চান তার LWID নম্বর লিখুন।
VM "hard" পাওয়ার অফের শেষ উপায় হল kill টুল ব্যবহার করা। এই পদ্ধতিটি শুধু VM নয়, বরং সকল চাইল্ড প্রসেসও বন্ধ করবে।
VM-এর পেরেন্ট প্রসেস ID পান:
ps | grep "web2"
VM প্রসেস কিল করুন:
kill -9 24288474

এমন এক "hard reset"-এর পর, ইনস্টল করা OS রিকভারি মোডে বুট হবে। গেস্ট উইন্ডোজের ক্ষেত্রে, স্ক্রিনটি এভাবে দেখাবে।
