首页 > 代码库 > KVM虚拟机,如何设置虚拟机的CPU型号与物理机是一样的

KVM虚拟机,如何设置虚拟机的CPU型号与物理机是一样的

1、在kvm主机上修改配置文件

[root@node160 ~]# virsh edit CentOS-7.3-X86_64  
将xml配置文件中的:
  <cpu mode=‘custom‘ match=‘exact‘>
    <model fallback=‘allow‘>IvyBridge</model>
  </cpu>
修改为:
  <cpu mode=‘host-passthrough‘/>

2、kvm关于cpu型号的定义(也就说默认支持模拟这些cpu型号)

[root@node160 ~]# cat /usr/share/libvirt/cpu_map.xml | tail -11
    <model name=‘POWERPC_e5500‘>
      <vendor name=‘Freescale‘/>
      <pvr value=http://www.mamicode.com/‘0x80240000‘ mask=‘0xffff0000‘/>>

3、cpu配置模式主要有以下几种

a、custom 自己定义(默认)
<cpu mode=‘custom‘ match=‘exact‘>
    <model fallback=‘allow‘>kvm64</model>
 ...
    <feature policy=‘require‘ name=‘monitor‘/>
</cpu>
b、host-model(根据物理CPU的特性,选择一个最靠近的标准CPU型号,如果没有指定CPU模式,默认这种模式)
  <cpu mode=‘host-model‘ />
c、host-passthrough(直接将物理CPU 暴露给虚拟机使用,在虚拟机上完全可以看到的就是物理CPU的型号)
 <cpu mode=‘host-passthrough‘/>

4、在虚拟机内,查看cpu的信息:

[root@localhost ~]# cat /proc/cpuinfo 
processor: 0
vendor_id: GenuineIntel
cpu family: 6
model: 58
model name: Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz
stepping: 9
microcode: 0x1
cpu MHz: 2494.342
cache size: 4096 KB
physical id: 0
siblings: 1
core id: 0
cpu cores: 1
apicid: 0
initial apicid: 0
fpu: yes
fpu_exception: yes
cpuid level: 13
wp: yes
flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon rep_good nopl pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm fsgsbase tsc_adjust smep
bogomips: 4988.68
clflush size: 64
cache_alignment: 64
address sizes: 42 bits physical, 48 bits virtual
power management:

5、关于host-passthrough的注意事项

  • 需要将物理CPU的一些特性传给虚拟机使用,比如虚拟机嵌套的nested技术的时候

  • 需要在虚拟机里面看到和物理CPU一模一样的CPU品牌型号,这个在一些公有云很有意义,用户体验比较好

  • 注意,不同型号的CPU的宿主机之间虚拟机不能迁移

本文出自 “冰冻vs西瓜” 博客,请务必保留此出处http://molewan.blog.51cto.com/287340/1926131

KVM虚拟机,如何设置虚拟机的CPU型号与物理机是一样的