14.9.2. 在 Red Hat Enterprise Linux 7 Host 上关闭 Red Hat Enterprise Linux 6 客户机
使用
Minimal installation
选项安装 Red Hat Enterprise Linux 6 客户机虚拟机不会安装 acpid 软件包。Red Hat Enterprise Linux 7 不再需要这个软件包,因为它已被 systemd
接管。但是,在 Red Hat Enterprise Linux 7 主机上运行的 Red Hat Enterprise Linux 6 客户机虚拟机仍需要它。
如果没有 acpid 软件包,Red Hat Enterprise Linux 6 客户机虚拟机在执行 virsh shutdown 命令时不会关闭。virsh shutdown 命令旨在安全关闭 guest 虚拟机。
使用 virsh shutdown 更容易且更安全.如果不使用 virsh shutdown 命令正常关闭,系统管理员必须手动登录到 guest 虚拟机,或者向每个 guest 虚拟机发送 Ctrl-Alt-Del 键组合。
注意
其他虚拟化操作系统可能受到此问题的影响。virsh shutdown 命令要求将 guest 虚拟机操作系统配置为处理 ACPI 关闭请求。许多操作系统需要在客户端虚拟机操作系统中进行额外的配置,以接受 ACPI 关闭请求。
过程 14.4. Red Hat Enterprise Linux 6 客户端的临时解决方案
安装 acpid 软件包
acpid 服务侦听和处理 ACPI 请求。登录到客户端虚拟机并在客户端虚拟机上安装 acpid 软件包:# yum install acpid
启用 acpid 服务
将acpid
服务设置为在客户机虚拟机启动序列中启动,并启动该服务:# chkconfig acpid on # service acpid start
准备客户机域 xml
编辑域 XML 文件,使其包含以下元素:将 virtio 串行端口替换为org.qemu.guest_agent.0
,并使用您的客户机名称而不是 $guestname图 14.2. 客户机 XML 替换
<channel type='unix'> <source mode='bind' path='/var/lib/libvirt/qemu/{$guestname}.agent'/> <target type='virtio' name='org.qemu.guest_agent.0'/> </channel>
安装 QEMU 客户机代理
安装 QEMU 客户机代理(QEMU-GA),并按照 第 10 章 qemu-img 和 QEMU 客户机代理 中指示启动该服务。如果您正在运行 Windows 客户机,请在本章中也有一些说明。关闭客户机
- 运行以下命令
# virsh list --all - this command lists all of the known domains Id Name State ---------------------------------- rhel6 running
- 关闭客户机虚拟机
# virsh shutdown rhel6 Domain rhel6 is being shutdown
- 等待几秒钟,让 guest 虚拟机关闭。
# virsh list --all Id Name State ---------------------------------- . rhel6 shut off
- 使用您编辑的 XML 文件,启动名为 rhel6 的域。
# virsh start rhel6
- 关闭 rhel6 客户机虚拟机中的 acpi。
# virsh shutdown --mode acpi rhel6
- 再次列出所有域,rhel6 仍应位于列表中,并且应指示其关闭。
# virsh list --all Id Name State ---------------------------------- rhel6 shut off
- 使用您编辑的 XML 文件,启动名为 rhel6 的域。
# virsh start rhel6
- 关闭 rhel6 客户机虚拟机客户机代理。
# virsh shutdown --mode agent rhel6
- 列出域。rhel6 应仍位于列表中,并应该指示它已关闭
# virsh list --all Id Name State ---------------------------------- rhel6 shut off
对于连续的关闭,客户机虚拟机将使用 virsh shutdown 命令来关闭,而无需使用上述临时解决方案。
除了上述方法外,可以通过停止
libvirt-guest
服务来自动关闭客户机。有关这个方法的详情请参考 第 14.9.3 节 “操控 libvirt-guests 配置设置”。