Qual é a melhor maneira para o savestate guest gracioso automático do virtualbox na reinicialização / desligamento do host

2

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:

  1. Devemos ajustar a configuração do upstart para dar tempo suficiente para os scripts init do vbox serem desligados (savestate, etc)? Ou alguma outra solução?
  2. Qual script deve ser preferido para desligar o vms? autostart-service ou vboxdrv? Estou certo de que isso depende do gosto apenas enquanto estiver no ambiente host de usuário único?
por Yuri 06.10.2016 / 12:28

0 respostas