19.4. 在 AMD 上创建嵌套虚拟机
按照以下步骤在 AMD 主机中启用和配置嵌套虚拟化。
红帽目前 仅作为技术预览提供 嵌套虚拟化,因此不受支持。
此外,嵌套虚拟化仅测试在一组有限的架构和操作系统版本中。在您的环境中使用此功能前,请参阅 嵌套虚拟化 的 Restrictions 和 limitations。
先决条件
- 一个 L0 RHEL 8 主机运行一个 L1 虚拟机(VM)。
-
管理程序 CPU 必须支持嵌套虚拟化。若要验证,可在 L0 hypervisor 上使用
cat /proc/cpuinfo
命令。如果命令的输出中包含svm
和npt
标志,则可以创建 L2 虚拟机。这通常是 AMD EPYC 内核及更新版本上的情况。 确定在 L0 主机上启用了嵌套虚拟化:
# cat /sys/module/kvm_amd/parameters/nested
- 如果命令返回 1 或 Y,则表示启用了该特性。跳过剩余的先决条件步骤,并继续执行流程部分。
如果命令返回 0 或 N,请使用以下步骤启用该功能。
- 在 L0 主机上停止所有运行的虚拟机。
卸载
kvm_amd
模块:# modprobe -r kvm_amd
激活嵌套功能:
# modprobe kvm_amd nested=1
现在启用嵌套功能,但只有在下次重启 L0 主机时才启用。要永久启用它,请在
/etc/modprobe.d/kvm.conf
文件中添加以下内容:options kvm_amd nested=1
流程
为嵌套虚拟化配置 L1 虚拟机。
打开虚拟机的 XML 配置。以下示例将打开 AMD-L1 虚拟机的配置:
# virsh edit AMD-L1
通过编辑
<cpu>
元素将 VM 配置为使用host-passthrough
CPU 模式:<cpu mode='host-passthrough'/>
如果您需要虚拟机使用特定的 CPU 模型,请将虚拟机配置为
使用自定义
CPU 模式。在 <cpu&
gt; 元素中,添加一个<feature policy='require' name='svm'/>
元素,以及一个 <model&
gt; 元素,使用内部指定的 CPU 模型。例如:<cpu mode="custom" match="exact" check="none"> <model fallback="allow">EPYC-IBPB</model> <feature policy="require" name="svm"/> ... </cpu>
- 在 L1 虚拟机中创建 L2 虚拟机。要做到这一点,请遵循创建 L1 虚拟机的相同步骤。