KVM 可以在主机关闭时自动暂停或关闭客户机吗?

KVM 可以在主机关闭时自动暂停或关闭客户机吗?

我们有一台 CentOS 5.5 KVM 主机,运行装有各种 CentOS 版本的客户机,以后可能还会运行其他操作系统。

我们希望能够 (a) 在主机关闭时自动向所有客户机发送 ACPI 关闭消息或 (b) 将所有客户机暂停到磁盘。

是否有标准方法可以完成其中任何一个,还是需要自己动手?谢谢!

答案1

是的。

virsh shutdown命令(或使用 libvirt 的其他“关机”实现,如virt-manager)指示客户操作系统彻底关闭。从手册页中:

   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.

使用 KVM,这应该发送 ACPI system_powerdown 事件。

在 Fedora 和 RHEL 6 中,libvirt-guests有一个默认的 init 脚本,配置为在系统关闭时暂停所有客户机。不过,它并不是特别神奇,因此只需稍加修改即可将其复制到 CentOS 5。

答案2

这是最新的 Fedora 和 RHEL 6 中的标准功能。

答案3

据我所知,CentOS 没有这样的标准脚本。可以编写代码,但有点危险,因为您需要处理需要很长时间才能关闭的客户端。超时后直接杀死它们可能会破坏数据,而等待它们可能会让您的关机挂起。

相反,最好在重新启动之前手动关闭客户机。有一段时间,我有一个脚本来代替关机和重新启动。如果有任何正在运行的客户机(虚拟机列表上的简单 lc),该脚本会警告我,如果有正在运行的客户机,则会阻止该命令。

答案4

KVM 客户机只是用户空间进程。您应该有一些进程监控。最常见的似乎是 libvirt(它是由 RedHat 开发的,所以我猜它应该在 CentOS 上可用)。

相关内容