Thỉnh thoảng thấy máy ảo trên host VMWare ESXi bị freeze và không thể tắt hoặc restart từ vSphere console bằng bất kỳ cách nào. Khởi động lại toàn bộ ESXi host vì một VM không khuyến khích (đặc biệt nếu chỉ có một ESXi host, hoặc các server còn lại trong cụm DRS không chịu được tải thêm từ server cần restart). Xem các cách chính ép kill máy ảo không phản hồi (treo) trên host VMWare ESXi.
Nếu tiến trình máy ảo trên ESXi server bị freeze, nó không phản hồi lệnh Reset/Power Off của vCenter, và trả về một trong các lỗi:
- 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.
Trong trường hợp này, có thể kill thủ công tiến trình máy ảo trên host ESXi từ ESXi Shell hoặc PowerCLI command prompt.
Trước hết xác định ESXi host nào chạy VM treo. Tìm VM trong giao diện vSphere Client. Tên ESXi host chạy VM được chỉ định trên tab Summary phần Related Object → Host.
Tiếp theo, giao thức truy cập SSH phải bật trên ESXi host. Làm từ giao diện vSphere. Nhấp tên ESXi host, vào Configure → Services → SSH → Start.
Giờ có thể kết nối host này qua SSH dùng client putty. Liệt kê VM chạy trên host ESXi:
esxcli vm process list
Copy "World ID" của máy ảo có vấn đề.
Để kill tiến trình máy ảo treo trên host ESXi, dùng lệnh:
esxcli vm process kill --type=[soft,hard,force] --world-id=WorldNumber
Có ba loại kill tiến trình VM:
- Soft – cách an toàn nhất kill tiến trình VMX (tương tự kill -SIGTERM);
- Hard – chấm dứt ngay lập tức tiến trình VM (kill -9);
- Force – chế độ dừng tiến trình VM mạnh nhất. Chỉ dùng cuối cùng nếu không cách nào khác giúp.
Lưu ý. Đảm bảo không có snapshot đang hoạt động, backup, và tác vụ tương tự cho VM, và VM không ở trạng thái "Virtual Machine disks consolidation is needed". Nếu không, có thể làm hỏng VM và phải restore từ backup.
Thử dừng mềm VM với ID chỉ định:
esxcli vm process kill --type=soft -w=20598249
VM nên bị tắt nguồn.
Có thể dừng VMWare VM bị freeze dùng PowerCLI (tiện vì khi kết nối vCenter không cần tìm hostname chạy VM và bật SSH shell). Kiểm tra VM đang chạy:
get-vm "web1" | select name,PowerStates
Buộc dừng tiến trình VM:
stop-vm -kill "web1" -confirm:$false
Cũng có thể dừng VM không phản hồi dùng tiện ích ESXTOP.
Mở phiên SSH, nhập esxtop, nhấn "c" hiển thị tài nguyên CPU rồi SHIFT+V chỉ hiển thị tiến trình máy ảo.
Sau đó nhấn "f" (chọn trường hiển thị), "c" (hiển thị LWID- Leader World Id) rồi nhấn ENTER.
Trong cột Name, tìm VM cần dừng và ghi số LWID tương ứng.
Giờ nhấn "k" (kill) và nhập số LWID của VM muốn forced shutdown.
Cách cuối "hard" power off VM là dùng công cụ kill. Phương pháp này dừng không chỉ VM mà cả tiến trình con.
Lấy parent process ID của VM:
ps | grep "web2"
Kill tiến trình VM:
kill -9 24288474
Sau "hard reset" này, OS cài đặt sẽ boot vào Recovery mode. Trong trường hợp guest Windows, màn hình trông như sau.