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 客户端的临时解决方案

  1. 安装 acpid 软件包

    acpid 服务侦听和处理 ACPI 请求。
    登录到客户端虚拟机并在客户端虚拟机上安装 acpid 软件包:
    # yum install acpid
  2. 启用 acpid 服务

    acpid 服务设置为在客户机虚拟机启动序列中启动,并启动该服务:
    # chkconfig acpid on
    # service acpid start
  3. 准备客户机域 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>
        
    
    
  4. 安装 QEMU 客户机代理

    安装 QEMU 客户机代理(QEMU-GA),并按照 第 10 章 qemu-img 和 QEMU 客户机代理 中指示启动该服务。如果您正在运行 Windows 客户机,请在本章中也有一些说明。
  5. 关闭客户机

    1. 运行以下命令
      # virsh list --all  - this command lists all of the known domains
         Id Name              State
      ----------------------------------
         rhel6                running
      
    2. 关闭客户机虚拟机
      # virsh shutdown rhel6
      
      Domain rhel6 is being shutdown
      
    3. 等待几秒钟,让 guest 虚拟机关闭。
      # virsh list --all
       Id Name                 State
      ----------------------------------
        . rhel6                shut off
      
    4. 使用您编辑的 XML 文件,启动名为 rhel6 的域。
      # virsh start rhel6
    5. 关闭 rhel6 客户机虚拟机中的 acpi。
      # virsh shutdown --mode acpi rhel6 
    6. 再次列出所有域,rhel6 仍应位于列表中,并且应指示其关闭。
      # virsh list --all
         Id Name                 State
      ----------------------------------
         rhel6                shut off
      
    7. 使用您编辑的 XML 文件,启动名为 rhel6 的域。
      # virsh start rhel6
    8. 关闭 rhel6 客户机虚拟机客户机代理。
      # virsh shutdown --mode agent rhel6
    9. 列出域。rhel6 应仍位于列表中,并应该指示它已关闭
      # virsh list --all
         Id Name                 State
      ----------------------------------
         rhel6                shut off
      
对于连续的关闭,客户机虚拟机将使用 virsh shutdown 命令来关闭,而无需使用上述临时解决方案。
除了上述方法外,可以通过停止 libvirt-guest 服务来自动关闭客户机。有关这个方法的详情请参考 第 14.9.3 节 “操控 libvirt-guests 配置设置”
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.