82911234 2016-06-27
关键点是
modprobekvm_intelnested=1
使用qemu的时候cpu透传设置-cpuhost
或者libvert的virsh命令的xml设置
<cpumode='host-passthrough'></cpu>
###############################
kvm嵌套是只相同cpu的嵌套,64位编程32位的不行
在kvm启动的vm上启动kvm建立vm的vm
在没有vm启动的情况下操作
lsmod|grepkvm
如果什么都没有说明没有加载kvm模块
cat/sys/module/kvm_intel/parameters/nested
Nosuchfileordirectory
不加nest启动内核模块
modprobe kvm modprobe kvm_intel
cat/sys/module/kvm_intel/parameters/nested
N
nested并没有打开
设置内核模块的nest
rmmod kvm_intel modprobe kvm_intel nested=1 cat /sys/module/kvm_intel/parameters/nested Y
当显示Y的时候才确实设置成功
测试:
libvirt建立vm的时候
配置文件加
<cpu mode='host-passthrough'> </cpu>
透传cpu
建立的vm里面测试使用
/usr/libexec/qemu-kvm已经可以建vm成功
普通的qemu建立vm
/usr/libexec/qemu-kvm -kernel bzImage -drive file=hda.qcow2,if=ide,cache=none -append "console=ttyS0 root=/dev/sda rw rdinit=/sbin/init notsc=1" -boot order=dc,menu=on -net nic,vlan=0,macaddr=52:54:00:12:34:22,model=e1000,addr=08 -net tap,name=haha,ifname=tap1,script=no,downscript=no -vnc 0.0.0.0:1 -monitor stdio
[root@jslinux test_migration]# lsmod|grep kvm kvm_intel 162153 0 kvm 525409 1 kvm_intel [root@jslinux test_migration]#
##############################
附录:
完整的jslinux.xml文件为
<domain type='kvm'> <name>jslinux</name> <uuid>d16d7501-9b0d-f26e-f52a-77a81225242e</uuid> <memory unit='KiB'>33554432</memory> <currentMemory unit='KiB'>33554432</currentMemory> <vcpu placement='static'>16</vcpu> <cpu mode='host-passthrough'> </cpu> <os> <type arch='x86_64' machine='pc'>hvm</type> <boot dev='hd'/> <bootmenu enable='yes'/> </os> <features> <acpi/> <apic/> <pae/> </features> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/libexec/qemu-kvm</emulator> <disk type='file' device='disk'> <driver name='qemu' type='qcow2' cache='none'/> <source file='/home/hao/jslinux.img'/> <target dev='vda' bus='virtio'/> </disk> <disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <source file='/home/CentOS-7-x86_64-DVD-1503-01.iso'/> <target dev='hdc' bus='ide'/> <readonly/> <address type='drive' controller='0' bus='1' target='0' unit='0'/> </disk> <controller type='usb' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> </controller> <controller type='ide' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> </controller> <interface type='bridge'> <mac address='50:52:11:aa:12:35'/> <source bridge='br0'/> <model type='virtio'/> </interface> <serial type='pty'> <target port='0'/> </serial> <console type='pty'> <target type='serial' port='0'/> </console> <input type='mouse' bus='ps2'/> <graphics type='vnc' port='5918' autoport='no' listen='0.0.0.0'> <listen type='address' address='0.0.0.0'/> </graphics> <sound model='ich6'> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </sound> <video> <model type='cirrus' vram='9216' heads='1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </video> <memballoon model='virtio'> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </memballoon> </devices> </domain>
virshstartjslinux
启动的mv里面也可以使用kvm