一、嵌套虚拟化

嵌套虚拟化即让虚拟机支持虚拟化,也就是在虚拟机上再跑虚拟机,一般用于测试环境,当我们只有一台服务器,像模拟一个虚拟化集群、云平台的时候经常会使用到嵌套虚拟化。

二、开启嵌套虚拟化

本文以基于intel处理器为例,如果是AMD处理器,则讲本文的kvm_intel替换为kvm_amd即可。

1.首先检查 KVM host(主机)上的kvm_intel/kvm_amd模块是否打开了嵌套虚拟机功能(默认是开启的)

# ①先查看kvm_intel/kvm_amd模块是否已经加载
# intel的处理器执行命令如下
root@localhost~# modinfo kvm_intel | grep nested
# 输出以下内容则表示已经加载
parm: nested:bool

# ②基于Intel的处理器运行以下命令查看是否开启嵌套虚拟化功能

root@localhost~#cat /sys/module/kvm_intel/parameters/nested

N # 输出N为未开启,Y则代表已开启

2.如果上面的显示结果不是Y的话需要开启nested

注意:确保虚拟机已关机,否则我们会得到像"modprobe: FATAL:Module kvm_intel is in use”这样的错误信息。

# 卸载kvm
root@localhost.~# modprobe -r kvm_intel
root@localhost.~# modprobe kvm_intel nested=1
root@localhost:~# cat /sys/module/kvm_intel/parameters/nested
Y

3.然后创建虚拟机即可

4.如需永久生效,可以通过以下方式设置

1、ubuntu系统
通过修改内核参数的方式:
vi /etc/default/grub
在kernel 那一行的末端加上 “kvm-intel.nested=1”(设置GRUB_CMDLINE_LINUX=“kvm-intel.nested=1”)
grub-mkconfig -o /boot/grub/grub.cfg
reboot

2、centos系统
卸载kvm内核模块之后
echo ‘options kvm_intel nested=1’ >/etc/modprobe.d/kvm-nested.conf
modprode kvm_intel
cat /sys/module/kvm_intel/parameters/nested

三、注意事项

如加载模块失败,一般是没有在BIOS中启用vt-x导致

pedprobe: ERROR: gould not insert 'kvm_intel': Operation not supported