参考:https://www.linuxprobe.com/centos7-kvm-nested-virtualization.html
需求:搭建实验环境,我在服务器物理机上搭建虚拟机,现在又需要在虚拟机里测试虚拟机(虚拟化)
配置:
让我们进入虚拟化管理程序,验证您的 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 表示嵌套虚拟化是禁用的。如果我们得到的输出是 Y 则表示在您的宿主机已启用嵌套虚拟化。
现在启用嵌套虚拟化,使用以下内容创建一个文件名为 /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
virt-install --name=qiaoying-72 --ram 8192 --vcpus=4 --cpu host-passthrough --disk path=/var/lib/libvirt/images/qiaoying-72.img,size=10,bus=virtio,cache=none,format=qcow2 --disk path=/var/lib/libvirt/images/qiaoying-72-2.img,bus=virtio,cache=none,format=qcow2 --accelerate --cdrom /var/lib/libvirt/images/ovirt-node-ng-installer-4.3.10-2020060117.el7.iso --graphics vnc,listen=0.0.0.0,password=123456,port=5922 --network bridge=br0,model=virtio --force --autostart
#注意的参数--cpu host-passthrough,必须启用,其他的参数就看自己需要了