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!
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.
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.
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.
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).
libvirt-guests
Skript tatsächlich tut, wird ausgeführtvirsh 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.Dies ist jetzt eine Standardfunktion in Fedora und RHEL 6.
quelle
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.
quelle
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).
quelle