Eu tenho o host do Ubuntu 14.04 com alguns convidados ganhados pelo Virtualbox 5.1. Alguns deles são realmente grandes e precisam de 1-2-3 minutos para chegar ao savestate.
Até onde eu sei, há pelo menos dois scripts init.d que controlam o estado vm no desligamento. Pode haver outro mais?
1. init.d / vboxdrv
Tem prioridade 80 na pasta /etc/rc0.d
Este requer variáveis SHUTDOWN e SHUTDOWN_USERS em / etc / default / virtualbox e executa VBoxManage controlvm savestate para cada VM runnning.
Esse script é encerrado após a interrupção de todas as vms , e funciona como uma tarefa de "thread único".
2. init.d / vboxautostart-service
tem prioridade 65 na pasta /etc/rc0.d
Este requer serviço de auto-inicialização totalmente configurado, como /etc/vobx/.start e /etc/vobx/.stop e outra equipe ...
Este script sai imideately , porque ele só executa o deamon de serviço de início automático com parâmetros específicos:
stop() {
[ -z "$VBOXAUTOSTART_DB" ] && exit 0
[ -z "$VBOXAUTOSTART_CONFIG" ] && exit 0
PARAMS="--stop --config $VBOXAUTOSTART_CONFIG"
# prevent inheriting this setting to VBoxSVC
unset VBOX_RELEASE_LOG_DEST
for user in 'ls $VBOXAUTOSTART_DB/*.stop'
do
start_daemon 'basename $user | sed -ne "s/\(.*\).stop//p"' $binary $PARAMS > /dev/null 2>&1
done
return $RETVAL
}
Então ... Quando usamos esses scripts no modo autônomo, quero dizer como
sudo service vboxautostart-service stop
ou
sudo service vboxdrv stop
tudo funciona perfeitamente. Primeiro mostra 10% .. 20% .. 30% .. barra de progresso para cada vm. O segundo sai imideately, mas runned binário fazer o seu trabalho e parar vms ...
Mas! Enquanto o host shutdown (shutdown -h now) eu acho que o upstart mata os scripts (no timeout?), porque nenhuma configuração de job é fornecida para scripts mencionados em / etc / init /. E o atraso padrão de morte por inatividade é de 5 segundos, AFAIK.
Eu pesquisei muito posts e receitas para criar scripts que parecem menos com scripts mencionados já presentes no pacote vbox, então não faz sentido usar esses avisos. Nenhum deles dá a receita para obter o desligamento garantido do guset (ou savestate) na reinicialização / desligamento do host.
De cource, eu sei que posso manualmente cuidar de desligar todos os vms e só depois disso - desligar o host ... Mas não é conforto para mim ... Além disso o desligamento pode ser iniciado pelo apcupsd ou então ... IMHO, controle vms deve ser feito por quem pretendeu fazer isso)))
Eu seria informado se alguém me esclarecesse nas próximas perguntas: