Red Hat Training

A Red Hat training course is available for RHEL 8

第 18 章 创建嵌套虚拟机

在 RHEL 8 系统及更新版本上,可以创建嵌套的虚拟机(VM)。这意味着,运行在 RHEL 8 物理主机 (level 0L0) 上的 RHEL 8 虚拟机(也称为 level 1L1),可以充当hypervisor ,并创建自己的虚拟机(level 2L2)。

换句话说,L0 主机可以运行 L1 虚拟机(VM),每个 L1 虚拟机都可以托管自己的 L2 虚拟机。请注意,在这种情况下,L0 和 L1 主机必须是 RHEL 8 系统,而 L2 客户机可以是任何受支持的 RHEL 或 Windows 系统。

警告

红帽目前仅作为 技术预览 提供嵌套虚拟化,因此不受支持。

此外,红帽不建议在用户的生产环境中使用嵌套虚拟化,因为 功能上存在各种限制。相反,嵌套虚拟化主要用于开发和测试场景,例如:

  • 在受限环境中调试虚拟机监控程序
  • 在有限的物理资源中测试较大的虚拟部署

还可以在多个架构上创建嵌套虚拟机,如 IntelAMDIBM POWER9IBM Z。请注意,无论使用什么架构,嵌套都是一个 技术预览,因此不受红帽支持。

18.1. 在 Intel 上创建嵌套虚拟机

按照以下步骤在 Intel 主机中启用和配置嵌套虚拟化。

警告

目前嵌套虚拟化仅作为 Intel 架构上的一个 技术预览 提供,因此不受支持。

先决条件

  • 一个 L0 RHEL 8 主机运行一个 L1 虚拟机(VM)。
  • 管理程序 CPU 必须支持嵌套虚拟化。若要验证,可在 L0 hypervisor 上使用 cat /proc/cpuinfo 命令。如果命令的输出中包含 vmxept 标志,则可以创建 L2 虚拟机。这通常是 Intel Xeon v3 内核及更新版本上的情况。
  • 确定在 L0 主机上启用了嵌套虚拟化:

    # cat /sys/module/kvm_intel/parameters/nested
    • 如果命令返回 1Y,则表示启用了该特性。跳过剩余的先决条件步骤,并继续执行流程部分。
    • 如果该命令返回 0 或者 N,而您的系统支持嵌套虚拟化,则使用以下步骤启用该功能。

      1. 卸载 kvm_intel 模块:

        # modprobe -r kvm_intel
      2. 激活嵌套功能:

        # modprobe kvm_intel nested=1
      3. 现在启用嵌套功能,但只有在下次重启 L0 主机时才启用。要永久启用它,请在 /etc/modprobe.d/kvm.conf 文件中添加以下行:

        options kvm_intel nested=1

流程

  1. 为嵌套虚拟化配置 L1 虚拟机。

    1. 打开虚拟机的 XML 配置。以下示例打开 Intel-L1 虚拟机的配置:

      # virsh edit Intel-L1
    2. 通过编辑 <cpu> 元素将 VM 配置为使用 host-passthrough CPU 模式:

      <cpu mode='host-passthrough'/>

      如果您需要虚拟机使用特定的 CPU 模型,请将虚拟机配置为 使用自定义 CPU 模式。在 &lt ;cpu& gt; 元素内,添加 <feature policy='require' name='vmx'/> 元素,以及一个带有内部指定的 CPU 模型的 <model> 元素。例如:

      <cpu mode ='custom' match ='exact' check='partial'>
        <model fallback='allow'>Haswell-noTSX</model>
        <feature policy='require' name='vmx'/>
        ...
      </cpu>
  2. 在 L1 虚拟机中创建 L2 虚拟机。要做到这一点,请遵循创建 L1 虚拟机的相同步骤。