一、嵌套虚拟化
嵌套虚拟化即让虚拟机支持虚拟化,也就是在虚拟机上再跑虚拟机,一般用于测试环境,当我们只有一台服务器,像模拟一个虚拟化集群、云平台的时候经常会使用到嵌套虚拟化。
二、开启嵌套虚拟化
本文以基于intel处理器为例,如果是AMD处理器,则讲本文的KVM_intel替换为kvm_amd即可。
1.首先检查 KVM host(主机)上的kvm_intel/kvm_amd模块是否打开了嵌套虚拟机功能(默认是开启的)
#①先查看kvm_intel/kvm_amd模块是否已经加载
#intel的处理器执行命令如下
root@localhost~#modinfokvm_intel|grepnested
#输出以下内容则表示已经加载
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-rkvm_intel
root@localhost.~#modprobekvm_intelnested=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‘optionskvm_intelnested=1’>/etc/modprobe.d/kvm-nested.conf
modprodekvm_intel
cat/sys/module/kvm_intel/parameters/nested
三、注意事项
如加载模块失败,一般是没有在BIOS中启用vt-x导致
pedprobe:ERROR:gouldnotinsert'kvm_intel':Operationnotsupported