ovirt kvm嵌套虚拟化

 

 

嵌 套式虚拟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

 

posted @ 2017-12-20 20:58  钟桂耀  阅读(1796)  评论(1编辑  收藏  举报