為了保證虛擬機在不同宿主機之間遷移的時候的兼容性,Libvirt對CPU提煉出標准的幾種類型,在/usr/share/libvirt/cpu_map.xml中可以查到。cpu_map.xml不僅是CPU型號,還有生產商信息、每種型號的CPU特性定義等信息,如下所示:
<cpus>
<arch name='x86'>
<!-- vendor definitions -->
<vendor name='Intel' string='GenuineIntel'/>
<vendor name='AMD' string='AuthenticAMD'/>
<!-- standard features, EDX -->
<feature name='fpu'> <!-- CPUID_FP87 -->
<cpuid function='0x00000001' edx='0x00000001'/>
</feature>
<feature name='vme'> <!-- CPUID_VME -->
<cpuid function='0x00000001' edx='0x00000002'/>
</feature>
<feature name='de'> <!-- CPUID_DE -->
<cpuid function='0x00000001' edx='0x00000004'/>
</feature>
<feature name='pse'> <!-- CPUID_PSE -->
<cpuid function='0x00000001' edx='0x00000008'/>
</feature>
<feature name='tsc'> <!-- CPUID_TSC -->
<cpuid function='0x00000001' edx='0x00000010'/>
</feature>
<feature name='msr'> <!-- CPUID_MSR -->
<cpuid function='0x00000001' edx='0x00000020'/>
</feature>
...
<!-- models -->
<model name='486'>
<feature name='fpu'/>
<feature name='vme'/>
<feature name='pse'/>
</model>
...
<!-- Intel CPU models -->
<model name='Conroe'>
<model name='pentiumpro'/>
<vendor name='Intel'/>
<feature name='mtrr'/>
<feature name='mca'/>
<feature name='pse36'/>
<feature name='clflush'/>
<feature name='pni'/>
<feature name='ssse3'/>
<feature name='syscall'/>
<feature name='nx'/>
<feature name='lm'/>
<feature name='lahf_lm'/>
</model>
Centos6.6所帶的Libvirt主要規定了以下幾種CPU型號:'486','pentium','pentium2','pentium3','pentiumpro','coreduo'
CPU模式配置
1)custom模式
xml配置文件如下:
<cpu mode='custom' match='exact'>
<model fallback='allow'>kvm64</model>
</cpu>
2)host-model模式
根據物理CPU的特性,選擇一個最靠近的標准CPU型號。如果沒有指定CPU模式,默認也是使用這種模式,xml配置文件如下:
<cpu mode='host-model' />
3)host-passthrough模式
直接將物理CPU暴露給虛擬機使用,在虛擬機上完全可以看到的就是物理CPU的型號,xml配置文件如下:
<cpu mode='host-passthrough' />
注意:使用host-model模式,Libvirt會根據物理CPU的型號,從規定的CPU中選擇一種最接近的CPU型號,而使用host-passthrough模式直接看到的就是物理CPU的型號
CPU host-passthrough技術的應用場景
HOST技術使用於以下場景
1)需要將物理CPU的一些特性傳給虛擬機使用,比如使用虛擬機嵌套的nested技術的時候
2)需要在虛擬機里面看到和物理CPU一模一樣的CPU品牌型號,這個在公有雲很有意義,用戶體驗比較好
注意:使用CPU host-passthrough技術需要注意,不同型號的CPU宿主機之間虛擬機不能遷移
