kvm libvirt cpu 热添加

guest os 为centos7
1)配置虚拟机的xml文件:
      <!-- 配置CPU数目 -->   
           < vcpu   placement = 'auto'   current = "1" > 4 </ vcpu >
设置虚拟机默认使用的cpu个数是1个 , 但是最大可以添加到4个
2)启动虚拟机,在guest中查看虚拟机个数:
     ls /sys/devices/system/cpu 
     会看到cpuX 的目录,x是(1,2,3.......),有几个这样的目录代表有几个cpu.因为在xml里面current=1,所以之可以看到cpu0目录
3)在host上使用virsh命令添加cpu:
    virsh setvcpus test 2 --live
    执行后,在guest再执行 ls /sys/devices/system/cpu  ,此时会看到有两个目录cpu0, cpu1 说明已经添加成功了,但是执行
    cat /proc/interrupys 会看到还是只有以cpu0在工作,这是因为通过virsh热添加的cpu默认的状态是关闭的,需要执行以下命令打开
    cpu:   echo   '1'  > /sys/devices/system/cpu/cpuX/online (x 代表 1,2,3.....)
4)此时再去查看 cat /proc/interrupts 会看到两个cpu都已经开始工作
5)virsh setvcpus --config test 2
    这条命令设置的是下一次引导时虚拟机的cpu个数,并且会自动启动  
6)virsh setvcpus --maximum test 8
    这条命令设置的下一次引导时虚拟机可以使用的最大cpu个数
7) virsh setvcpus --guest test 6
     在虚拟机中修改 cpu 状态 (个人理解:好像需要qga的支持)

--config 写到配置文件里面,下次重启虚拟机有效
--live  影响正在运行的虚拟机,虚拟机进程消失后效果消失,默认是这种模式
--current 影响停止和正在运行的虚拟机,如果虚拟机运行,虚拟机进程停止后,效果消失



只支持cpu的热添加,不支持cpu的热删除,并且个数不能超过之前在xml文件里面设置的最大个数
guest os 为win7
同样修改虚拟机的xml文件,测试的结果是virsh setvcpus test 2 --live 执行结果成功,在设备管理其里里面也可以看到增加的cpu,但是计算机->属性看到的处理器个数还是原来的,并且在任务管理器里面看到的也是只有原来个数的cpu在运行
结论: 在win7上cpu热添加行不通,原因是win7没有对热添加的cpu直接运行的方法,有人测试过过win8 server he 2012 好像是可以

猜你喜欢

转载自blog.csdn.net/hobertony_7/article/details/50131945