¿Puede KVM suspender o apagar invitados automáticamente al apagar el host?
16
Tenemos un host KVM CentOS 5.5, que ejecuta huéspedes con varias versiones de CentOS y posiblemente otros sistemas operativos más adelante.
Nos gustaría poder (a) enviar automáticamente un apagado ACPI a todos los invitados o (b) suspender a todos los invitados al disco, en el apagado del host.
¿Existe un método estándar para lograr cualquiera de estos, o es una situación de rodar tu propia cuenta? ¡Gracias!
El virsh shutdowncomando (u otras implementaciones de "apagado" usando libvirt, como en virt-manager) ordena al sistema operativo invitado que se apague limpiamente. Desde la página del 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.
Con KVM, esto debería enviar un evento ACPI system_powerdown.
En Fedora y RHEL 6, un libvirt-guestsscript de inicio sale de la caja configurado para suspender a todos los invitados en el apagado del sistema. Sin embargo, no es particularmente mágico, por lo que uno podría copiar esto a CentOS 5 con poca modificación.
Hmmmm Sí, también es sospechosamente faltante en el código . Lo que el libvirt-guestsscript realmente hace es ejecutar virsh managedsave. (Parece que tal vez solo el controlador UML admite system_powerdown). ¡Gracias por la captura! Actualizaré mi respuesta y presentaré un error contra la documentación.
mattdm
4
Esta es ahora una característica estándar en Fedora y RHEL 6 recientes.
Hasta donde yo sé, no existe un script estándar para CentOS. Es posible codificar, pero es un poco peligroso, ya que necesita manejar invitados que tardan mucho en apagarse. Simplemente matarlos después de un tiempo de espera puede destruir datos, mientras que esperarlos puede dejar su cierre suspendido.
En cambio, es mejor cerrar los invitados a mano antes de reiniciar. Durante un tiempo tuve un script que reemplazó el apagado y el reinicio. Ese script me advirtió si había invitados en ejecución (lc simple en la lista de máquinas virtuales) y bloqueó el comando si había invitados en ejecución.
Los invitados KVM son solo procesos de espacio de usuario. debe tener algún proceso de monitoreo en su lugar. el más común parece ser libvirt (está desarrollado por RedHat, así que supongo que debería estar disponible en CentOS).
libvirt-guests
script realmente hace es ejecutarvirsh managedsave
. (Parece que tal vez solo el controlador UML admite system_powerdown). ¡Gracias por la captura! Actualizaré mi respuesta y presentaré un error contra la documentación.Esta es ahora una característica estándar en Fedora y RHEL 6 recientes.
fuente
Hasta donde yo sé, no existe un script estándar para CentOS. Es posible codificar, pero es un poco peligroso, ya que necesita manejar invitados que tardan mucho en apagarse. Simplemente matarlos después de un tiempo de espera puede destruir datos, mientras que esperarlos puede dejar su cierre suspendido.
En cambio, es mejor cerrar los invitados a mano antes de reiniciar. Durante un tiempo tuve un script que reemplazó el apagado y el reinicio. Ese script me advirtió si había invitados en ejecución (lc simple en la lista de máquinas virtuales) y bloqueó el comando si había invitados en ejecución.
fuente
Los invitados KVM son solo procesos de espacio de usuario. debe tener algún proceso de monitoreo en su lugar. el más común parece ser libvirt (está desarrollado por RedHat, así que supongo que debería estar disponible en CentOS).
fuente