Como garantir que uma VM seja desligada corretamente?

Como garantir que uma VM seja desligada corretamente?

Meu servidor doméstico executa vários outros servidores via VirtualBox em VMs.

Em particular, tenho um servidor web que, por algum motivo, se não for desligado corretamente, não seleciona automaticamente no menu grub, o que significa que ele trava até que eu o redefina manualmente no servidor.

Como posso ter certeza de que minha VM será desligada corretamente sempre que meu servidor for desligado?

Informações adicionais: O "servidor" é na verdade um laptop antigo e está executando o Ubuntu Desktop 11.04 e não é headless (também executa o media center).

Responder1

Você pode usar o VBoxManagecomando para controlar suas máquinas virtuais na linha de comando. Isso permite que você crie um script que pode desligar sua VM antes de desligá-la.

Você poderia executar um script muito básico para desligar 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 de um alias adicionado ao seu arquivo .bashrc...

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

Esses 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 seu sistema operacional.

Responder2

Fiz isso usando o qemu rodando no Debian hospedando uma VM do Windows Server 2003. Ativei "Serviços de gerenciamento de emergência" na VM Win2k3. Isso fornece o "Console de administração especial" na porta serial. qemu permite conectar uma porta serial virtual a uma porta "telnet", então dei a ela um endereço localhost. O SAC permite desligar o sistema de forma limpa através da emissão de um comando através da porta serial e, como é algo como uma "porta dos fundos de emergência", tende a ser muito confiável, independentemente do que mais possa estar acontecendo na VM.

Criei então um breve expectscript para "fazer login" no SAC serial e emitir o comando shutdown. Isso foi agrupado em outro script que chamaria esse expectscript e esperaria 2 minutos para que o processo qemu morresse. Se o processo não morresse, ele o mataria à força. Configurar o Linux para chamar esse script no desligamento garantiu que a VM sempre desligasse de forma limpa, se possível.

Portanto, você poderá adaptar esse método à sua situação.

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

informação relacionada