嵌 套式虚拟nested是一个可通过内核参数来启用的功能。它能够使一台虚拟机具有物理机CPU特性,支持vmx或者svm(AMD)硬件虚拟化。关于 nested的具体介绍,可以看这里 。该特性需要内核升级到Linux 3.X版本 ,所以在centos6下是需要先升级内核的,而在centos7下已默认支持该特性,不过默认是不开启的,需要通过修改参数支持。
1、确认主机是否支持nested
通找到如下文件或在模块特性中能grep到该特性值 ,证明当前内核支持nested,如下是查到支持但未开启:
#查看当前系统是否支持nested
systool -m kvm_intel -v | grep -i nested nested = "N"
#或者这样查看
cat /sys/module/kvm_intel/parameters/nested
N
2、开机启动该nested
有两种方法可以开机自启动该特性:
在 kernel 那一行的末端加上 "kvm-intel.nested=1"
或
# echo "options kvm-intel nested=1" >> /etc/modprobe.d/kvm-intel.conf
不重启主机也可以通过重新加载模块支持:
# rmmod kvm_intel # modprobe kvm-intel nested=1 # cat /sys/module/kvm_intel/parameters/nested
3、建议VMX支持虚拟机
通过virsh 指定xml 文件启动虚拟机时,可以在xml 中通过如下三种方法支持
<cpu mode='custom' match='exact'> <model fallback='allow'>core2duo</model> <feature policy='require' name='vmx'/> </cpu>
#这种方式为虚拟机定义需要模拟的CPU类型"core2duo",并且为虚拟机添加"vmx"特性
#也可以使用这种
<cpu mode='host-model'> <model fallback='allow'/> </cpu>
#或者这样
<cpu mode='host-passthrough'> <topology sockets='2' cores='2' threads='2'/> </cpu>
#CPU穿透,在虚拟机中看到的vcpu将会与物理机的CPU同样配置,这种方式缺点在于如果要对虚拟机迁移,迁移的目的服务器硬件配置必须与当前物理机一样
通过qemu-kvm 命令启动时,可以通过如下参数支持:
-enable-kvm -cpu qemu64,+vmx
4、成功运行rhce虚拟机
以下才是本篇嵌套虚拟机的重点
通过如下方法启动虚拟机:
/usr/libexec/qemu-kvm -m 8096 -cpu qemu64,+vmx -smp 4,sockets=4,cores=1,threads=1 -drive file=jiaoshiji.qcow2 -vnc 0.0.0.0:20 VNC连接后,
通过cat /proc/cpuinfo查看支持VMX特性:
egrep '(vmx|svm)' /proc/cpuinfo
5、如果用virtmanager管理,cpu属性选择Copy host CPU configure