Posts tagged: esxtop

Matando maquinas virtuais travadas no VMWare ESXi

VMwareLogoNão existe nada mais irritante do que buscar alguma informação no google e não achar ou pior, achar mais com informações que não implicam com o que você realmente quer. Isso aconteceu recentemente comigo para resolução de um pequeno mais desastroso problema: o travamento de uma máquina virtual no ESXi. Tudo bem, é simples a máquina virtual travou é só ir lá e dar um shutdown nela através do client do infrastructure, pois bem e quando você via lá dá um shutdown via client e o mesmo não desliga? Cortar os pulsos?! Pular do 20º andar, apelar para ignorancia e dar um shutdown no EXSi?! Não tem um procedimento simples e eficaz para essas horas, matar a maquina virtual. OK, porém o ESXi parece um Linux mas todo customizado para rodar maquinas virtuais e alguns comandos e processos existentes no VMWare Server, ESX 3.5 (Sem o “i”) e VMPlayer simplesmente não estão lá, o que pode facilmente um administrador ao desespero.

Verifiquei que o ESXi não possui o vmware-cmd, ou seja, não posso utilizar um stop hard. com isso me basta matar o processo responsavel pela máquina virtual, mas isso também não vai funcionar uma vez que o comando é o vmware-cmd. Dar um shutdown no ESXi vai para todas as máquinas e o processo pode continuar demorando para ser morto e com isso perder mais tempo ainda e agora com todas as máquinas virtuais desligadas, fora que se eu realizar um shutdown estilo Wolverine (puxar o cabo de força) pode gerar problemas no sistema de arquivos, sair matando processos arbitrariamente também não é legal, afinal qual é o processo que pode ser detonado?!

Diante desse cenário realizei as seguintes ações:

Conectei no ESXi via SSH e lá rodei um esxtop, com o qual verifiquei que o processo da máquina virtual que mandei desligar estava usando 98% de um dos processadores do ESXi.

ID    GID NAME             NWLD   %USED    %RUN    %SYS   %WAIT    %RDY
25949  25949 Magneto           7    98.82    5.86    0.05  687.24    2.05
147567 147567 Storm         7    2.49    2.50    0.03  691.49    1.17
9369   9369 Cyclops                 7    1.62    1.63    0.01  692.69    0.83

Sai do esxtop e dei um ps auwx | grep <nome da minha Máquina virtual> para localizar os processos ligados a minha máquina virtual.

~ # ps ax auxxxx | grep Magneto
21383448      vmm0:Magneto
21383449      vmm1:Magneto
21383451 21383447 mks:Magneto      /bin/vmx
21154076 21383447 vcpu-0:Magneto   /bin/vmx
21383454 21383447 vcpu-1:Magneto   /bin/vmx

Não podemos matar todos os processo simplesmente pois podem gerar problemas a máquina virtual, pelo que pude entender todas as máquinas virtuais estão ligadas a um processo vmx pai, que é responsavel por agrupar todos os demais processos ligados aquela máquina. Visto isso realizei outro ps auxwww mas agora fazendo uma grep para  vmx.

~ # ps ax auxxxx | grep vmx
61545 61545 vmx                  /bin/vmx
61547 61545 vmx                  /bin/vmx
61548 61545 mks:Storm    /bin/vmx
61549 61545 vcpu-0:Storm /bin/vmx
68727 68727 vmx                  /bin/vmx
68729 68727 vmx                  /bin/vmx
68730 68727 mks:Cyclops    /bin/vmx
68731 68727 vcpu-0:Cyclops /bin/vmx
21383447 21383447 vmx                  /bin/vmx
21383450 21383447 vmx                  /bin/vmx
21383451 21383447 mks:Magneto      /bin/vmx
21154076 21383447 vcpu-0:Magneto   /bin/vmx
21383454 21383447 vcpu-1:Magneto   /bin/vmx

Reparei que o GID do processo vmx está vinculado ao GID dos processos vinculados a minha máquina virtual, sendo assim executei o comando kill com o GID do processo VMX vinculado a minha máquina virtual.

~ # kill -9 21383447

Um novo ps auxw revelou que os processo haviam sido mortos.

~ # ps ax auxxxx | grep vmx
61545 61545 vmx                  /bin/vmx
61547 61545 vmx                  /bin/vmx
61548 61545 mks:Storm    /bin/vmx
61549 61545 vcpu-0:Storm /bin/vmx
68727 68727 vmx                  /bin/vmx
68729 68727 vmx                  /bin/vmx
68730 68727 mks:Cyclops    /bin/vmx
68731 68727 vcpu-0:Cyclops /bin/vmx

No cliente a máquina Virtual apareceu como desligada na mesma hora. Ao religar a máquina virtual a mesma voltou a responder sem alertas de anormalidade.

WordPress Themes