Kann KVM Gäste beim Herunterfahren des Hosts automatisch aussetzen oder herunterfahren?

16

Wir haben einen CentOS 5.5 KVM-Host, auf dem Gäste mit verschiedenen CentOS-Versionen und möglicherweise späteren Betriebssystemen ausgeführt werden.

Wir möchten in der Lage sein, entweder (a) automatisch einen ACPI-Shutdown an alle Gäste zu senden oder (b) alle Gäste beim Herunterfahren des Hosts auf Festplatte zu sperren.

Gibt es eine Standardmethode, um dies zu erreichen, oder handelt es sich um eine Eigensituation? Vielen Dank!

Andrew Clegg
quelle

Antworten:

5

Ja.

Der virsh shutdownBefehl (oder andere Implementierungen von "shutdown" mit libvirt, wie in virt-manager) weist das Gastbetriebssystem an, ordnungsgemäß herunterzufahren. Von der Manpage:

   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.

Bei KVM sollte dies ein ACPI-Ereignis system_powerdown senden.

In Fedora und RHEL 6 ist ein libvirt-guestsInit-Skript standardmäßig so konfiguriert, dass alle Gäste beim Herunterfahren des Systems angehalten werden. Es ist jedoch nicht besonders magisch, so dass man dies mit wenig Modifikation auf CentOS 5 kopieren kann.

mattdm
quelle
Das ist eine gute Idee. Ich besitze eine Fedora-Maschine. Ich werde versuchen, sie auf CentOS5 zurück zu portieren. Vielen Dank.
Andrew Clegg
Ich kann on_shutdown im Dokument nicht sehen: libvirt.org/formatdomain.html#elementsLifecycle
Thiago Figueiro
Hmmmm. Ja, es fehlt auch verdächtig im Code . Was das libvirt-guestsSkript tatsächlich tut, wird ausgeführt virsh managedsave. (Es sieht so aus, als ob nur der UML-Treiber system_powerdown unterstützt.) Danke für den Haken! Ich werde meine Antwort aktualisieren und einen Bug gegen die Dokumentation einreichen.
Mattdm
4

Dies ist jetzt eine Standardfunktion in Fedora und RHEL 6.


quelle
Ich denke, es wurde auch in Ubuntu behoben
hdave
0

Soweit ich weiß, gibt es für CentOS kein solches Standard-Skript. Es ist möglich, Code zu erstellen, aber ein wenig gefährlich, da Sie mit Gästen umgehen müssen, deren Herunterfahren lange dauert. Nur wenn Sie sie nach einer Auszeit töten, können Daten zerstört werden, und wenn Sie auf sie warten, kann Ihr Herunterfahren hängen bleiben.

Stattdessen ist es besser, Gäste vor einem Neustart manuell herunterzufahren. Für eine Weile hatte ich ein Skript, das das Herunterfahren und den Neustart ersetzte. Dieses Skript warnte mich, wenn Gäste ausgeführt wurden (einfaches lc in der Liste der virtuellen Maschinen) und blockierte den Befehl, wenn Gäste ausgeführt wurden.

pehrs
quelle
-2

KVM-Gäste sind nur Userspace-Prozesse. Sie sollten über eine Prozessüberwachung verfügen. Am verbreitetsten scheint libvirt zu sein (es wurde von RedHat entwickelt, sollte also auf CentOS verfügbar sein).

Javier
quelle