KVM peut-il suspendre ou arrêter les invités automatiquement lors de l'arrêt de l'hôte?

16

Nous avons un hôte KVM CentOS 5.5, exécutant des invités avec différentes versions de CentOS et éventuellement d'autres systèmes d'exploitation plus tard.

Nous aimerions pouvoir (a) envoyer automatiquement un arrêt ACPI à tous les invités ou (b) suspendre tous les invités sur le disque, lors de l'arrêt de l'hôte.

Existe-t-il une méthode standard pour accomplir l'une ou l'autre de ces tâches, ou s'agit-il d'une situation qui vous appartient? Merci!

Andrew Clegg
la source

Réponses:

5

Oui.

La virsh shutdowncommande (ou d'autres implémentations de "shutdown" utilisant libvirt, comme dans virt-manager) demande au système d'exploitation invité de s'arrêter proprement. Depuis la page de manuel:

   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.

Avec KVM, cela devrait envoyer un événement system_powerdown ACPI.

Dans Fedora et RHEL 6, un libvirt-guestsscript init sort de la boîte configuré pour suspendre tous les invités à l'arrêt du système. Ce n'est pas particulièrement magique, cependant, on pourrait donc copier ceci sur CentOS 5 avec peu de modifications.

mattdm
la source
C'est une bonne idée, j'ai une machine Fedora, je vais essayer de la rétroporter vers CentOS5. Merci.
Andrew Clegg
Je ne vois pas on_shutdown dans le doco: libvirt.org/formatdomain.html#elementsLifecycle
Thiago Figueiro
Hmmmm. Ouais, il manque aussi étrangement dans le code . Ce que fait réellement le libvirt-guestsscript est exécuté . (Il semble que seul le pilote UML supporte system_powerdown.) Merci pour la capture! Je vais mettre à jour ma réponse et déposer un bogue contre la documentation. virsh managedsave
mattdm
0

Pour autant que je sache, il n'y a pas de script standard pour CentOS. Il est possible de coder, mais un peu dangereux, car vous devez gérer les invités qui mettent longtemps à s'arrêter. Le simple fait de les tuer après un délai d'attente peut détruire les données, tandis que les attendre peut laisser votre arrêt suspendu.

Au lieu de cela, il est préférable d'arrêter les invités à la main avant de redémarrer. Pendant un certain temps, j'ai eu un script qui a remplacé l'arrêt et le redémarrage. Ce script m'a averti s'il y avait des invités en cours d'exécution (simple lc sur la liste des machines virtuelles) et a bloqué la commande s'il y avait des invités en cours d'exécution.

pehrs
la source
-2

Les invités KVM ne sont que des processus de l'espace utilisateur. vous devriez avoir une surveillance des processus en place. le plus courant semble être libvirt (il est développé par RedHat, donc je suppose qu'il devrait être disponible sur CentOS).

Javier
la source