VMware ESXi: làm thế nào để Kill một không phản hồi (Stuck) Virtual Machine
Đôi khi tôi thấy rằng một máy ảo nhất định trên máy chủ VMWare ESXi đóng băng và nó không thể tắt hoặc khởi động lại nó từ bàn điều khiển vSphere bằng bất kỳ phương tiện nào. Khởi động lại toàn bộ máy chủ ESXi do máy ảo duy nhất không hoàn toàn nên (đặc biệt là nếu bạn chỉ có một máy chủ ESXi hoặc các máy chủ còn lại trong cụm DRS không thể đối phó với tải thêm máy ảo từ máy chủ được khởi động lại). Hãy xem xét các cách chính để buộc giết một máy ảo không phản hồi (Hung) trên máy chủ VMWare ESXi.
Nếu quá trình máy ảo trên máy chủ ESXi đóng băng, nó dừng đáp ứng vCenter Reset
/Power Off
và trả về một trong các lỗi sau đây để bất kỳ hành động:
- Một nhiệm vụ khác đã được tiến bộ;
- Máy ảo có thể thực hiện thao tác đồng thời. Hành động: hoàn tất thao tác đồng thời và thử lại thao tác tắt nguồn; Máy ảo đang ở trạng thái không hợp lệ;
- Hoạt động cố gắng không thể thực hiện trong trạng thái hiện tại.
Trong trường hợp này, bạn có thể tự giết quá trình máy ảo trên máy chủ ESXi từ dấu nhắc lệnh ESXi Shell hoặc PowerCLI.
Trước tiên, bạn cần phải xác định mà ESXi lưu trữ máy ảo treo đang chạy. Để thực hiện việc này, tìm VM trong giao diện vSphere client. Tên máy chủ ESXi trên VM đang chạy được chỉ định trên tab tóm tắt trong phần liên quan đến đối tượng-> máy chủ.
Tiếp theo, giao thức truy cập SSH phải được kích hoạt trên máy chủ ESXi của bạn. Bạn có thể làm điều đó từ giao diện vSphere. Bấm vào tên máy chủ ESXi, đi đến cấu hình-> Services-> SSH-> bắt đầu.
Bây giờ bạn có thể kết nối với máy chủ này qua SSH sử dụng máy khách PuTTY. Danh sách các VM chạy trên máy chủ ESXi:
danh sách quá trình esxcli VM
Sao chép “thế giới ID” của vấn đề máy ảo.
Để kết thúc quá trình máy ảo treo trên một máy chủ ESXi, sử dụng các lệnh sau:
esxcli vm process kill --type=[soft,hard,force] --world-id=WorldNumber
Có ba loại giết của quá trình VM:
- Soft-cách an toàn nhất để giết quá trình VMX (tương tự như giết-SIGTERM);
- Cứng – ngay lập tức chấm dứt quá trình VM (Kill-9);
- Force-chế độ dừng quá trình VM cứng nhất. Nên được sử dụng cuối cùng nếu không có gì khác giúp.
Đảm bảo rằng không có ảnh chụp nhanh hoạt động, sao lưu và các tác vụ tương tự cho máy ảo và VM không ở trạng thái “đĩa ảo hợp nhất cần”. Nếu không, bạn có thể phá vỡ máy ảo của bạn và nó sẽ phải được khôi phục từ bản sao lưu.
Hãy cố gắng làm dừng máy ảo với ID đã chỉ định:
esxcli vm process kill --type=soft -w=20598249
VM nên tắt nguồn.
Bạn có thể dừng máy ảo đông lạnh bằng cách sử dụng PowerCLI (điều này thuận tiện, bởi vì khi kết nối với vCenter, bạn không cần phải tìm tên máy chủ mà VM đang chạy và bật SSH Shell trên đó). Kiểm tra xem VM có đang chạy không:
get-vm “web1" | select name,PowerStates
Buộc dừng quá trình VM với lệnh:
stop-vm -kill "web1" -confirm:$false
Ngoài ra, bạn có thể dừng một máy ảo VMWare không phản hồi bằng cách sử dụng tiện ích ESXTOP.
Mở phiên SSH, nhập esxtop, nhấn “c” để hiển thị tài nguyên CPU và sau đó SHIFT + V để chỉ hiển thị các quá trình máy ảo.
Sau đó nhấn “f” (để chọn các trường sẽ được hiển thị), “c” (để hiển thị LWID-Leader thế giới ID) và sau đó nhấn ENTER.
Trong cột tên, tìm máy ảo sẽ được dừng lại và lưu ý số LWID trong cột tương ứng.
Bây giờ bạn phải bấm “k” (giết) và nhập số LWID của máy ảo mà bạn muốn buộc tắt.
Và cách cuối cùng của VM “cứng” tắt nguồn là sử dụng công cụ Kill. Phương pháp này sẽ ngừng không chỉ các máy ảo, mà còn tất cả các quá trình con.
Nhận ID quá trình cha của máy ảo:
PS | grep "web2"
Giết quá trình VM:
kill -9 24288474