sexta-feira, 5 de fevereiro de 2010

Forçando o desligamento de uma VM travada

                 

De vez em quando acontece de uma VM travar e não aceitar mais nenhum tipo de comando, nem mesmo o PowerOff do vSphere Client. Dar um boot no host esx com certeza resolveria este problema, mas essa não é uma opção muito inteligente. Felizmente, existem alguns métodos para forçar o desligamento de uma máquina virtual sem que seja necessário reiniciar o host esx. Vou mostrar 3 métodos que podem ser utilizados, começando do mais suave e terminando com o mais radical! Hehe

Método 1 – Utilizando o vmware-cmd pela Service Console

• Logue no ESX pela Service Console

• O comando vmware-cmd usa o arquivo de configuração .vmx da VM para especificar em qual máquina virtual será executada a operação. Você pode executar ‘vmware-cmd –l ‘para listar todas as VMs no host, juntamente com o caminho e o nome do arquivo de configuração. Se você não quiser digitar todo o caminho quando for executar o ‘vmware-cmd’, você pode mudar para o diretório da VM e executar o comando a partir de lá, sem a necessidade de colocar o caminho.

• Você pode checar o estado da VM executando:
vmware-cmd (virtual_machine).vmx getstate

• Para forçar o desligamento da maquina virtual, execute:
vmware-cmd (virtual_machine).vmx stop hard

• Cheque novamente o estado da VM para verificar se funcionou, se tiver funcionado o estado será ‘off’.



Método 2 – Usando o comando vm-support para desligar a VM

• Logue no ESX pela Service Console

• O comando vm-support é um comando com vários propósitos, usado principalmente para resolver problemas com hosts e VMs. Você pode usar o paramêtro -X para forçar o desligamento da VM e também produzir um arquivo com informações para debug. Este comando irá gerar um arquivo .tgz no diretório de onde você executou o comando. Este comando não pode ser executado a partir de um diretório de um volume VMFS, o recomendado é executá-lo a partir do diretório /tmp. Primeiramente execute vm-support –x para listar o virtual machine ID (VMID) de todas as VMs que estão rodando.

• Para forçar o shutdown e gerar os core dumps e os arquivos de log, execute:
vm-support -X (vmid). Será perguntado se você deseja tirar um screenshot da VM. Um screenshot pode ser útil para ver se existe alguma mensagem de erro. Também será perguntado se você deseja envia um NMI e um ABORT para a VM, o qual pode ajudar no debug. Você deve dizer YES para a pergunta do ABORT para que a VM seja forçada a parar. Depois que o processo completar, que pode levar de 10-15 minutos, um arquivo .tgz será criado no diretório de onde o comando foi executado, que pode ser usado na solução de problemas.



Método 3 – Utilizando o comando KILL

• Logue no ESX pela Service Console

• O comando 'ps' no linux exibe os processos rodando atualmente num servidor e o comando 'grep' encontra um texto específico na saída do comando 'ps'.
Execute: ps auxfww | grep (virtualmachinename) para conseguir o ID do processo (PID) da VM. Você terá dois resultados, um será do próprio comando 'ps'. O resultado mais longo é o processo da VM que está rodando. Este resultado termina com o nome do arquivo de configuração da VM e o número na segunda coluna do resultado é o PID da maquina virtual.

• O comando 'kill' no linux envia um sinal para terminar um processo usando o seu número de ID. O paramêtro -9 termina imediatamente com o processo e não pode ser ignorado.
Execute kill -9 (pid) que irá forçar o término do processo para a VM específicada.



fonte: http://itknowledgeexchange.techtarget.com/virtualization-pro/killing-a-frozen-vm-on-a-vsphere-esx-host/