如何在 Linux 中的 KVM 中启用嵌套虚拟化

在本指南中,我们将看到如何在 KVM 在 Linux 中。 嵌套虚拟化 是一项功能,允许您在另一个虚拟机中运行虚拟机,同时仍然使用来自主机系统的硬件加速。 换句话说,嵌套虚拟化是一种运行机制 虚拟机 (VM) 内的管理程序,它本身在管理程序上运行。

内容

  1. 在 Linux 中的 KVM 中启用嵌套虚拟化
    1. 永久启用嵌套虚拟化
    2. 验证是否在 KVM 主机中启用了嵌套虚拟化
    3. 在 KVM 来宾机器上启用嵌套虚拟化
      1. 从命令行在 KVM 来宾中启用嵌套功能
      2. 使用 Virt-manager 在 KVM 来宾中启用嵌套功能
    4. 检查 KVM 来宾是否支持虚拟化
      1. 帮助我们帮助您:

在 Linux 中的 KVM 中启用嵌套虚拟化

在启用嵌套 VT 功能之前,请关闭所有正在运行的虚拟机。

接下来,卸载 KVM 模块。

卸载 KVM 模块 英特尔 系统,运行:

$ sudo modprobe -r kvm_intel

AMD 系统:

$ sudo modprobe -r kvm_amd

使用命令在 INTEL CPU 上启用嵌套功能重新加载 KVM 模块:

$ sudo modprobe kvm_intel nested=1

使用命令在 AMD CPU 上启用嵌套功能重新加载 KVM 模块:

$ sudo modprobe kvm_amd nested=1

永久启用嵌套虚拟化

请注意,嵌套 VT 功能仅在您重新启动 KVM 主机系统之前启用。 要永久启用嵌套功能,请编辑 /etc/modprobe.d/kvm.conf 文件:

$ sudo vi /etc/modprobe.d/kvm.conf

如果文件不存在,只需创建它。

添加以下行 英特尔 主持人:

options kvm_intel nested=1

添加以下行 AMD 主持人:

options kvm_amd nested=1

Save 和 close 文件。

完毕! 我们在 KVM 主机系统上启用了嵌套 VT。

验证是否在 KVM 主机中启用了嵌套虚拟化

如果您的处理器是 INTEL,请检查 “/sys/module/kvm_intel/parameters/nested” 使用“cat”命令的文件:

$ cat /sys/module/kvm_intel/parameters/nested

检查 Linux 中是否支持嵌套虚拟化

如果它返回 “是” 或者 “1”,这意味着您的系统支持嵌套虚拟化。 如果输出是 “N” 或者 “0”,您的系统将不支持嵌套虚拟化。

如果您的处理器是 AMD,请检查以下内容 “/sys/module/kvm_amd/parameters/nested” 文件。

或者,您可以使用以下命令来确保“kvm_intel”内核模块已启用嵌套:

$ modinfo kvm_intel | grep -i nested

示例输出:

parm:           nested_early_check:bool parm:           nested:bool

在 AMD CPU 上:

$ modinfo kvm_amd | grep -i nested

嗯,我的 KVM 主机支持嵌套虚拟化,并且已经启用。

在 KVM 来宾机器上启用嵌套虚拟化

我们可以从命令行或使用图形 KVM 管理应用程序在 KVM VM 上启用嵌套功能,例如 虚拟机管理器.

从命令行在 KVM 来宾中启用嵌套功能

登录到 virsh 控制台:

$ virsh

编辑要在其中启用嵌套功能的 VM:

virsh # edit centos

要查找所有可用的 VM,请在 virsh 控制台中运行以下命令:

virsh # list --all

找到“cpu mode”参数并将其值设置为“host-model”。

<cpu mode="host-model" check='partial'/>