Como se certificar de que uma VM é encerrada corretamente?

0

Meu homeserver executa vários outros servidores via VirtualBox nas VMs.

Em particular, eu tenho um servidor web que, por alguma razão, se ele não é desligado corretamente, não faz a seleção automática no menu do grub, o que significa que ele é interrompido até que eu o redefina manualmente no servidor.

Como posso ter certeza de que o desligamento da minha VM está correto sempre que o servidor for desligado?

Informação adicional: O "servidor" é na verdade um laptop antigo, e ele está executando o Ubuntu Desktop 11.04 e não é sem cabeça (também executa o media center).

    
por Malfist 29.07.2011 / 21:43

2 respostas

1

Você pode usar o comando VBoxManage para controlar suas máquinas virtuais a partir da linha de comando. Isso permite que você crie um script que possa desligar sua VM antes de desligar.

Você pode executar um script muito básico para encerrar o vm & host ...

#!/bin/bash
# poff.sh - poweroff the vm, then the host...

VBoxManage controlvm VMNAME acpipowerbutton && sudo shutdown -P 1

Ou você pode usar os mesmos comandos que um alias adicionado ao seu arquivo .bashrc ...

alias poff='VBoxManage controlvm VMNAME acpipowerbutton && sudo shutdown -P 1' # poweroff the vm, then the host...

Estes são exemplos muito básicos que podem ser desenvolvidos para atender às suas necessidades exatas. Eles também podem precisar ser modificados para funcionar corretamente com a configuração do sistema operacional.

    
por 29.07.2011 / 23:22
0

Eu fiz isso usando o qemu rodando no Debian hospedando uma VM do Windows Server 2003. Eu habilitei "Serviços de Gerenciamento de Emergência" na VM Win2k3. Isso lhe dá o "Console de Administração Especial" na porta serial. qemu permite conectar uma porta serial virtual a uma porta "telnet", então eu dei a ela um endereço de host local. O SAC permite que você desligue o sistema de forma limpa através da emissão de um comando através da porta serial e, como é algo como uma "porta traseira de emergência", ele tende a ser muito confiável, independentemente do que mais possa estar acontecendo na VM.

Em seguida, criei um breve script expect para "efetuar login" no SAC com base em série e emitir o comando shutdown. Isso foi empacotado em outro script que chamaria esse script expect e esperaria 2 minutos para o processo do qemu morrer. Se o processo não morresse, matá-lo-ia com força. Configurar o Linux para chamar esse script no desligamento garantiu que a VM sempre fosse desligada de maneira limpa, se possível.

Então você pode adaptar este método à sua situação.

Se você tem uma VM Linux, então você pode simplesmente criar um pequeno script no seu sistema Ubuntu que efetue login na VM via ssh e chame um script que desligue o sistema corretamente.

    
por 29.07.2011 / 22:05