O KVM pode suspender ou encerrar convidados automaticamente no encerramento do host?

16

Temos um host KVM do CentOS 5.5, executando convidados com várias versões do CentOS e possivelmente outros sistemas operacionais posteriormente.

Gostaríamos de poder (a) enviar automaticamente um desligamento da ACPI para todos os convidados ou (b) suspender todos os convidados para o disco, no desligamento do host.

Existe um método padrão para realizar um desses, ou é uma situação do tipo faça você mesmo? Obrigado!

Andrew Clegg
fonte

Respostas:

5

Sim.

O virsh shutdowncomando (ou outras implementações de "shutdown" usando libvirt, como em virt-manager) instrui o SO convidado a desligar corretamente. Na página do manual:

   shutdown domain-id

   Gracefully shuts down a domain.  This coordinates with the domain
   OS to perform graceful shutdown, so there is no guarantee that it
   will succeed, and may take a variable length of time depending on
   what services must be shutdown in the domain.

   The exact behavior of a domain when it shuts down is set by the
   on_shutdown parameter in the domain’s XML definition.

Com o KVM, isso deve enviar um evento system_powerdown da ACPI.

No Fedora e RHEL 6, um libvirt-guestsscript init sai da caixa configurado para suspender todos os convidados no desligamento do sistema. Porém, não é particularmente mágico, portanto, pode-se copiar isso para o CentOS 5 com poucas modificações.

mattdm
fonte
É uma boa ideia, eu tenho uma máquina Fedora, vou dar suporte ao CentOS5. Obrigado.
Andrew Clegg
Não consigo ver on_shutdown no documento: libvirt.org/formatdomain.html#elementsLifecycle
Thiago Figueiro
Hmmmm. Sim, também está ausente no código . O que o libvirt-guestsscript realmente faz é executar virsh managedsave. (Parece que talvez apenas o driver UML suporte system_powerdown.) Obrigado pela captura! Vou atualizar minha resposta e arquivar um bug na documentação.
mattdm
0

Até onde eu sei, não existe esse script padrão para o CentOS. É possível codificar, mas um pouco perigoso, pois você precisa lidar com convidados que demoram muito tempo para desligar. Apenas matá-los após um tempo limite pode destruir os dados, enquanto esperar por eles pode deixar seu desligamento suspenso.

Em vez disso, é melhor desligar os convidados manualmente antes de fazer uma reinicialização. Por um tempo, tive um script que substituiu o desligamento e a reinicialização. Esse script me avisou se havia algum convidado em execução (lc simples na lista de máquinas virtuais) e bloqueou o comando se houvesse convidados em execução.

pehrs
fonte
-2

Os convidados KVM são apenas processos do espaço do usuário. você deve ter algum monitoramento de processo em vigor. o mais comum lá fora parece ser libvirt (desenvolvido pela RedHat, então acho que deve estar disponível no CentOS).

Javier
fonte