A.10. 在 Red Hat Enterprise Linux 7 主机上关闭 Red Hat Enterprise Linux 6 虚拟机
使用
Minimal
安装选项安装 Red Hat Enterprise Linux 6 虚拟机不会安装 acpid (acpi 守护进程)。Red Hat Enterprise Linux 7 不再需要这个软件包,因为它被 systemd
接管。但是,在 Red Hat Enterprise Linux 7 主机上运行的 Red Hat Enterprise Linux 6 客户机虚拟机仍需要它。
如果没有 acpid 软件包,在执行 virsh shutdown 命令时,Red Hat Enterprise Linux 6 客户机虚拟机不会关闭。virsh shutdown 命令旨在正常关闭 guest 虚拟机。
使用 virsh shutdown 命令更容易且更安全地进行系统管理。如果没有通过 virsh shutdown 命令正常关闭,系统管理员必须手动登录到客户机虚拟机,或者向每个 guest 虚拟机发送 Ctrl-Alt-Del 组合键。
注意
其他虚拟化操作系统可能会受到此问题的影响。virsh shutdown 命令要求将客户机虚拟机操作系统配置为处理 ACPI 关闭请求。许多操作系统需要在客户端虚拟机操作系统中附加配置,以便接受 ACPI 关闭请求。
过程 A.4. Red Hat Enterprise Linux 6 客户端临时解决方案
安装 acpid 软件包
acpid 服务侦听和处理 ACPI 请求。登录到客户机虚拟机并在客户机虚拟机上安装 acpid 软件包:# yum install acpid
在客户端中启用 acpid 服务
将acpid
服务设置为在客户机虚拟机启动序列中启动,并启动该服务:# chkconfig acpid on # service acpid start
准备客户机域 XML
编辑域 XML 文件以包含下列元素:将 virtio serial 端口替换为org.qemu.guest_agent.0
,并使用您的客户机的名称而不是显示的端口。在本例中,guest 是 guest1。记得保存文件。图 A.1. 虚拟机 XML 替换
<channel type='unix'> <source mode='bind' path='/var/lib/libvirt/qemu/guest1.agent'/> <target type='virtio' name='org.qemu.guest_agent.0'/> </channel>
安装 QEMU 客户机代理
安装 QEMU 客户机代理(QEMU-GA),并以 Red Hat Enterprise Linux 6 虚拟化管理指南 中的指示启动该服务。关闭客户端
- 列出已知客户机虚拟机,以便可以检索您要关闭的名称。
# virsh list --all Id Name State ---------------------------------- 14 guest1 running
- 关闭客户机虚拟机。
# virsh shutdown guest1 guest virtual machine guest1 is being shutdown
- 等待几秒钟,让 guest 虚拟机关闭。验证它是否已关闭。
# virsh list --all Id Name State ---------------------------------- 14 guest1 shut off
- 使用您编辑的 XML 文件,启动名为 guest1 的客户机虚拟机。
# virsh start guest1
- 关闭 guest1 客户机虚拟机中的 acpi。
# virsh shutdown --mode acpi guest1
- 再次列出所有 guest 虚拟机,guest1 仍应在列表中,并且应指明它已关闭。
# virsh list --all Id Name State ---------------------------------- 14 guest1 shut off
- 使用您编辑的 XML 文件,启动名为 guest1 的客户机虚拟机。
# virsh start guest1
- 关闭 guest1 客户机虚拟机客户机代理。
# virsh shutdown --mode agent guest1
- 列出客户机虚拟机。guest1 应该仍位于列表中,并且应指明它已关闭。
# virsh list --all Id Name State ---------------------------------- guest1 shut off
客户机虚拟机将使用 virsh shutdown 命令进行连续关闭,而无需使用上述临时解决方案。
除了上述方法外,还可以通过停止
libvirt-guests
服务来自动关闭 guest。有关这个方法的更多信息,请参阅 第 A.11 节 “允许 Graceful Shutdown 的可选临时解决方案”。