KVM之嵌套虚拟化
一、嵌套虚拟化
嵌套虚拟化即让虚拟机支持虚拟化,也就是在虚拟机上再跑虚拟机,一般用于测试环境,当我们只有一台服务器,像模拟一个虚拟化集群、云平台的时候经常会使用到嵌套虚拟化。
二、开启嵌套虚拟化
本文以基于intel处理器为例,如果是AMD处理器,则讲本文的kvm_intel替换为kvm_amd即可。
1.首先检查 KVM host(主机)上的kvm_intel/kvm_amd模块是否打开了嵌套虚拟机功能(默认是开启的)
1 2 3 4 5 6 7 8 9 10 11 | # ①先查看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”这样的错误信息。
1 2 3 4 5 | # 卸载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 2 3 4 5 6 7 8 9 10 11 12 | 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
导致
1 | pedprobe: ERROR: gould not insert 'kvm_intel': Operation not supported |