upstart script pré-stop

4

Eu tenho libvirt / KVM configurado no meu Ubuntu e antes de desligar a máquina, eu gostaria que ele tentasse desligar as VMs usando um ACPI poweroff (virsh shutdown), então eu quero que ele pare de desligar por pelo menos 60 segundos para dar a VM a chance de sincronizar tudo para o disco, é isso que eu tenho:

pre-stop script
    SHUTDOWN_LOG=/var/log/libvirt/qemu/shutdown_vms.log
    for RUNNING_VM in 'virsh list | grep -E running | awk -F" " '{ print $2 }''
    do
        echo "Shutting down ${RUNNING_VM} on 'date'" >> $SHUTDOWN_LOG
        virsh shutdown ${RUNNING_VM}
    done
    echo -n "Waiting for VM's to shut down: " >> $SHUTDOWN_LOG
    for I in 'seq 1 10'
    do
        RUNNING='virsh list | grep running | wc -l'
        if [[ "$RUNNING" == "0" ]] 
        then 
            echo "done." >> $SHUTDOWN_LOG
            exit 0
        else 
            /bin/sleep 6 && echo -n " ${RUNNING} " >> $SHUTDOWN_LOG
        fi
    done
    echo " Cleaning up..." >> $SHUTDOWN_LOG
end script  

O problema que estou tendo é que, por alguma razão estranha, nunca chega a ecoar "pronto". mesmo que as VMs sejam todas desligadas corretamente, elas continuarão em loop e, portanto, atrasarão por 60 segundos OU parecerão ignorar completamente o modo de suspensão, escreverão o total para $SHUTDOWN_LOG e serão encerradas imediatamente no meio da sincronização da VM para disco.

Shutting down FreeBSD-services on Mon Aug 22 02:07:42 MDT 2011
Shutting down FreeBSD-pgsql on Mon Aug 22 02:07:42 MDT 2011
Waiting for VM's to shut down:  1 [EOF]

A saída do log ... existe alguma maneira melhor de fazer o log-in do upstart?

    
por X-Istence 22.08.2011 / 10:28

2 respostas

1

O

link foi corrigido recentemente, por isso deve haver uma libvirt atualizada em breve .

    
por 09.09.2011 / 13:18
0

Você não pode fazer o eco de um script iniciante, infelizmente, a melhor opção é a que você já está fazendo, criando seu próprio log.

Se você quiser também enviar para o syslog, você pode fazer isso no upstart usando o logger (como você faria no init.d), mas a depuração do Upstart até agora é bastante dura.

Você também pode adicionar set -x no início do seu script de pré-parada para obter mais resultados através do canal de log de inicialização avançada padrão (syslog no Ubuntu)

    
por 22.08.2011 / 10:39