VMware ESXi 호스트에서 운영하다 보면 특정 가상 머신(VM)이 갑자기 멈춰서 vSphere 콘솔에서 어떤 방법으로도 전원을 끄거나 재시작할 수 없는 상황이 발생합니다. 단 한 대의 가상 머신 때문에 ESXi 호스트 전체를 재부팅하는 것은 바람직하지 않습니다. 특히 ESXi 호스트가 한 대뿐이거나, DRS 클러스터의 나머지 서버들이 재부팅 대상 서버의 VM 부하를 감당하기 어려운 경우라면 더욱 그렇습니다.
멈춘 가상 머신에서 나타나는 오류 메시지
ESXi 서버에서 가상 머신 프로세스가 정지되면 vCenter의 Reset/Power Off 명령에 응답하지 않으며, 어떤 작업을 시도해도 다음과 같은 오류 중 하나가 반환됩니다.
- Another task is already in progress (다른 작업이 이미 진행 중입니다)
- The virtual machine might be performing concurrent operations... The virtual machine is in an invalid state (가상 머신이 동시 작업을 수행 중이거나 잘못된 상태입니다)
- The attempted operation cannot be performed in the current state (현재 상태에서는 해당 작업을 수행할 수 없습니다)
이런 경우에는 ESXi Shell 또는 PowerCLI 명령 프롬프트에서 가상 머신 프로세스를 직접 종료하는 방법을 사용할 수 있습니다.
1단계: VM이 실행 중인 ESXi 호스트 확인 및 SSH 활성화
먼저 멈춘 가상 머신이 어느 ESXi 호스트에서 실행 중인지 확인해야 합니다. vSphere Client에서 해당 VM을 찾은 후 요약(Summary) 탭의 관련 개체(Related Object) → 호스트(Host) 섹션에서 실행 중인 ESXi 호스트 이름을 확인할 수 있습니다.
다음으로 해당 ESXi 호스트에서 SSH 접근을 활성화해야 합니다. vSphere 인터페이스에서 ESXi 호스트 이름을 클릭하고 구성(Configure) → 서비스(Services) → SSH → 시작(Start) 순서로 진행하면 됩니다.
SSH가 활성화되면 PuTTY 같은 SSH 클라이언트로 해당 호스트에 접속합니다. 아래 명령어로 ESXi 호스트에서 실행 중인 VM 목록을 조회합니다.
esxcli vm process list
목록에서 문제가 되는 가상 머신의 World ID 값을 복사해 둡니다.
방법 1: esxcli 명령어로 VM 프로세스 종료
ESXi 호스트에서 멈춘 가상 머신의 프로세스를 종료하려면 다음 명령어를 사용합니다.
esxcli vm process kill --type=[soft,hard,force] --world-id=WorldNumber
VM 프로세스 종료 유형은 세 가지입니다.
- soft – 가장 안전한 종료 방식으로, VMX 프로세스에 정상 종료 신호(kill -SIGTERM과 유사)를 보냅니다.
- hard – VM 프로세스를 즉시 강제 종료합니다(kill -9와 유사).
- force – 가장 강력한 종료 모드입니다. 다른 방법이 모두 실패했을 때 최후의 수단으로만 사용해야 합니다.
주의: 종료를 시도하기 전에 해당 VM에 진행 중인 스냅샷, 백업 등의 작업이 없는지, 그리고 '가상 머신 디스크 통합 필요(Virtual Machine disks consolidation is needed)' 상태가 아닌지 반드시 확인하세요. 그렇지 않으면 VM이 손상될 수 있으며, 백업본으로 복구해야 하는 상황이 발생할 수 있습니다.
확인된 World ID로 soft 방식 종료를 시도하는 예시는 다음과 같습니다.
esxcli vm process kill --type=soft -w=20598249
명령이 성공하면 해당 가상 머신의 전원이 꺼집니다.
방법 2: PowerCLI로 VM 강제 종료
PowerCLI를 사용하면 vCenter에 연결만 하면 되므로, VM이 실행 중인 호스트 이름을 찾아 일일이 SSH를 활성화할 필요가 없다는 장점이 있습니다. 먼저 VM이 실행 중인지 확인합니다.
get-vm "web1" | select name,PowerStates
다음 명령으로 VM 프로세스를 강제 종료합니다.
stop-vm -kill "web1" -confirm:$false
방법 3: ESXTOP 유틸리티 사용
ESXTOP 유틸리티로도 응답 없는 VMware 가상 머신을 종료할 수 있습니다.
- SSH 세션을 열고 esxtop을 입력합니다.
- c 키를 눌러 CPU 리소스 화면으로 전환합니다.
- SHIFT+V를 눌러 가상 머신 프로세스만 표시합니다.
- f 키를 눌러 표시할 필드를 선택하고, c 키로 LWID(Leader World ID) 항목을 추가한 뒤 ENTER를 누릅니다.
Name 열에서 종료할 가상 머신을 찾아 해당 LWID 번호를 확인합니다. 그다음 k(kill) 키를 누르고, 강제 종료하려는 가상 머신의 LWID 번호를 입력하면 됩니다.
방법 4: kill 명령어로 하드 리셋 (최후의 수단)
마지막 방법은 kill 도구를 사용하는 '하드' 전원 차단 방식입니다. 이 방법은 VM뿐 아니라 모든 자식 프로세스까지 함께 종료합니다.
먼저 VM의 부모 프로세스 ID(PID)를 확인합니다.
ps | grep "web2"
그다음 확인한 PID로 프로세스를 강제 종료합니다.
kill -9 24288474
참고: 이런 방식의 '하드 리셋' 후에는 게스트 OS가 복구(Recovery) 모드로 부팅됩니다. Windows 게스트의 경우 자동 복구 화면이 나타나며, 여기서 정상 부팅을 선택하면 됩니다.
마무리
응답 없는 가상 머신을 처리할 때는 soft → hard → force 순서로 점진적으로 강도를 높여 시도하는 것이 안전합니다. 가능하면 데이터 손실 위험이 적은 esxcli soft 종료나 PowerCLI부터 시도하고, kill -9 같은 강제 종료는 반드시 마지막 수단으로 사용하세요. 작업 전 스냅샷과 백업 상태를 점검하는 습관이 VM 손상을 예방하는 가장 확실한 방법입니다.