代码改变世界

OpenStack KVM嵌套虚拟化的配置

2014-07-17 22:04 by 陈尚华, ... 阅读, ... 评论, 收藏, 编辑

这两天为研发部门搭建一套OpenStack测试环境,需要在KVM虚拟机中跑KVM虚拟机,所以用到嵌套虚拟化技术。

虽然compute节点使用较新的centos6.5标准内核,发现不支持nested技术。

[root@controller ~]# cat /sys/module/kvm_intel/parameters/nested

cat: /sys/module/kvm_intel/parameters/nested: 没有那个文件或目录

# modinfo kvm_intel

filename:       /lib/modules/2.6.32-431.11.2.el6.x86_64/kernel/arch/x86/kvm/kvm-intel.ko

license:        GPL

author:         Qumranet

srcversion:     34373A27E1A78784FD945C4

depends:        kvm

vermagic:       2.6.32-431.11.2.el6.x86_64 SMP mod_unload modversions 

parm:           bypass_guest_pf:bool

parm:           vpid:bool

parm:           flexpriority:bool

parm:           ept:bool

parm:           unrestricted_guest:bool

parm:           eptad:bool

parm:           emulate_invalid_guest_state:bool

parm:           yield_on_hlt:bool

parm:           vmm_exclusive:bool

parm:           ple_gap:int

parm:           ple_window:int

后来在centos的wiki上找到了方法:

http://wiki.centos.org/zh/HowTos/NestedVirt

compute节点配置:

1.添加kernel源:

[root@controller ~]# wget -P /etc/yum.repos.d http://dev.centos.org/centos/6/xen-c6/xen-c6.repo

[root@controller ~]# yum repolist

2.安装新内核:

[root@controller ~]# yum --enablerepo xen-c6 install kernel kernel-firmware

[root@controller ~]# vi /boot/grub/grub.conf

在kernel行末端添加:kvm-intel.nested=1

[root@controller ~]# reboot

3.检查nested加载情况:

[root@controller ~]# cat /sys/module/kvm_intel/parameters/nested

Y

4.修改nova.conf:

添加:libvirt_cpu_mode = host-passthrough

该设置使创建的实例可最大程度的使用物理CPU的指令集,因此可以实现二次虚拟化。