1、在kvm主机上修改配置文件
<code>[root@node160 ~]</code><code># virsh edit CentOS-7.3-X86_64 </code>
<code>将xml配置文件中的:</code>
<code> </code><code><cpu mode=</code><code>'custom'</code> <code>match=</code><code>'exact'</code><code>></code>
<code> </code><code><model fallback=</code><code>'allow'</code><code>>IvyBridge<</code><code>/model</code><code>></code>
<code> </code><code><</code><code>/cpu</code><code>></code>
<code>修改为:</code>
<code> </code><code><cpu mode=</code><code>'host-passthrough'</code><code>/></code>
2、kvm关于cpu型号的定义(也就说默认支持模拟这些cpu型号)
<code>[root@node160 ~]</code><code># cat /usr/share/libvirt/cpu_map.xml | tail -11</code>
<code> </code><code><model name=</code><code>'POWERPC_e5500'</code><code>></code>
<code> </code><code><vendor name=</code><code>'Freescale'</code><code>/></code>
<code> </code><code><pvr value=</code><code>'0x80240000'</code> <code>mask=</code><code>'0xffff0000'</code><code>/></code>
<code> </code><code><</code><code>/model</code><code>></code>
<code> </code><code><model name=</code><code>'POWERPC_e6500'</code><code>></code>
<code> </code><code><pvr value=</code><code>'0x80400000'</code> <code>mask=</code><code>'0xffff0000'</code><code>/></code>
<code> </code><code><</code><code>/arch</code><code>></code>
<code><</code><code>/cpus</code><code>></code>
<code>如上所示:我这里仅截取部分内容</code>
<code>'486'</code> <code>'pentium'</code> <code>'pentium2'</code> <code>'pentium3'</code> <code>'pentiumpro'</code> <code>'coreduo'</code> <code>'pentiumpro'</code> <code>'n270'</code> <code>'coreduo'</code> <code>'core2duo'</code> <code>'qemu32'</code> <code>'kvm32'</code> <code>'cpu64-rhel5'</code> <code>'cpu64-rhel6'</code> <code>'kvm64'</code> <code>'qemu64'</code> <code>'Conroe'</code> <code>'Penryn'</code> <code>'Nehalem'</code><code>'Westmere'</code> <code>'SandyBridge'</code> <code>'Haswell'</code> <code>'athlon'</code> <code>'phenom'</code> <code>'Opteron_G1'</code> <code>'Opteron_G2'</code> <code>'Opteron_G3'</code> <code>'Opteron_G4'</code> <code>'Opteron_G5'</code> <code>'POWER7'</code> <code>'POWER7_v2.1'</code> <code>'POWER7_v2.3'</code>
<code>使用这种方案主要是为了在虚拟机迁移的时候,在不同的宿主机间保证兼容性。</code>
3、cpu配置模式主要有以下几种
<code>a、custom 自己定义(默认)</code>
<code><cpu mode=</code><code>'custom'</code> <code>match=</code><code>'exact'</code><code>></code>
<code> </code><code><model fallback=</code><code>'allow'</code><code>>kvm64<</code><code>/model</code><code>></code>
<code> </code><code>...</code>
<code> </code><code><feature policy=</code><code>'require'</code> <code>name=</code><code>'monitor'</code><code>/></code>
<code><</code><code>/cpu</code><code>></code>
<code>b、host-model(根据物理CPU的特性,选择一个最靠近的标准CPU型号,如果没有指定CPU模式,默认这种模式)</code>
<code> </code><code><cpu mode=</code><code>'host-model'</code> <code>/></code>
<code>c、host-passthrough(直接将物理CPU 暴露给虚拟机使用,在虚拟机上完全可以看到的就是物理CPU的型号)</code>
<code> </code><code><cpu mode=</code><code>'host-passthrough'</code><code>/></code>
4、在虚拟机内,查看cpu的信息:
<code>[root@localhost ~]</code><code># cat /proc/cpuinfo </code>
<code>processor: 0</code>
<code>vendor_id: GenuineIntel</code>
<code>cpu family: 6</code>
<code>model: 58</code>
<code>model name: Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz</code>
<code>stepping: 9</code>
<code>microcode: 0x1</code>
<code>cpu MHz: 2494.342</code>
<code>cache size: 4096 KB</code>
<code>physical </code><code>id</code><code>: 0</code>
<code>siblings: 1</code>
<code>core </code><code>id</code><code>: 0</code>
<code>cpu cores: 1</code>
<code>apicid: 0</code>
<code>initial apicid: 0</code>
<code>fpu: </code><code>yes</code>
<code>fpu_exception: </code><code>yes</code>
<code>cpuid level: 13</code>
<code>wp: </code><code>yes</code>
<code>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</code>
<code>bogomips: 4988.68</code>
<code>clflush size: 64</code>
<code>cache_alignment: 64</code>
<code>address sizes: 42 bits physical, 48 bits virtual</code>
<code>power management:</code>
5、关于host-passthrough的注意事项
需要将物理CPU的一些特性传给虚拟机使用,比如虚拟机嵌套的nested技术的时候
需要在虚拟机里面看到和物理CPU一模一样的CPU品牌型号,这个在一些公有云很有意义,用户体验比较好
注意,不同型号的CPU的宿主机之间虚拟机不能迁移
本文转自 冰冻vs西瓜 51CTO博客,原文链接:http://blog.51cto.com/molewan/1926131,如需转载请自行联系原作者