进入虚拟化管理程序,验证您的 KVM 宿主机是否启用了嵌套虚拟化。
基于 Intel 的处理器运行以下命令:
[root@kvm-hypervisor ~]# cat /sys/module/kvm_intel/parameters/nested
N
基于 AMD 的处理器运行以下命令:
[root@kvm-hypervisor ~]# cat /sys/module/kvm_amd/parameters/nested
N
上述命令输出N /0表示嵌套虚拟化是禁用的。如果我们得到的输出是Y/1 则表示在您的宿主机已启用嵌套虚拟化。
现在启用嵌套虚拟化,使用以下内容创建一个文件名为/etc/modprobe.d/kvm-nested.conf 的文件:
[root@kvm-hypervisor ~]# vi /etc/modprobe.d/kvm-nested.conf
options kvm-intel nested=1
options kvm-intel enable_shadow_vmcs=1
options kvm-intel enable_apicv=1
options kvm-intel ept=1
保存并退出文件。
现在移除kvm_intel 模块然后通过 modprobe 命令添加同样的模块。在移除模块之前,确保虚拟机已关机,否则我们会得到像 “modprobe: FATAL: Module kvm_intel is in use” 这样的错误信息。
[root@kvm-hypervisor ~]# modprobe -r kvm_intel
[root@kvm-hypervisor ~]# modprobe -a kvm_intel
现在验证嵌套虚拟化功能是否启用。
[root@kvm-hypervisor ~]# cat /sys/module/kvm_intel/parameters/nested
Y
?
测试嵌套虚拟化
假设我们在 KVM 管理程序上有一台已经启用了嵌套虚拟化的名为 “debian10-01” 的虚拟机。在测试之前,确保 CPU 模式为 “host-modle” 或 “host-passthrough” ,使用 Virt-Manager 或 virtsh 编辑命令检查虚拟机的 CPU 模式。
现在登录 这台虚拟机并运行 lscpu 和 lsmod 命令。
测试安装运行虚拟机