Nested KVM
在 Intel 處理器上, KVM 使用 Intel 的 vmx(virtual machine eXtensions) 來(lái)提高虛擬機(jī)性能茫孔,即硬件輔助虛擬化技術(shù)吸申。如果一臺(tái)虛擬機(jī)能夠和物理機(jī)一樣支持 "vmx"梨水,那么就可以在這臺(tái)虛擬機(jī)上再次安裝虛擬機(jī)赋铝。Nested KVM是一個(gè)可通過(guò)內(nèi)核參數(shù)來(lái)啟用的功能泼菌。它能夠使一臺(tái)虛擬機(jī)具有物理 CPU 特性迄薄,支持 vmx 或者 svm(AMD) 硬件虛擬化琅关。
物理服務(wù)器開(kāi)啟 Nested KVM 支持
ubuntu14.04
- 打開(kāi) /etc/default/grub,把 "kvm-intel.nested=1" 追加到 GRUB_CMDLINE_LINUX
# cat /etc/default/grub | grep GRUB_CMDLINE_LINUX
GRUB_CMDLINE_LINUX="apparmor=0 nomodeset noautogroup kvm-intel.nested=1"
update-grub
- 重啟Host
$ reboot
- 檢查是否使能 Nested KVM
$ cat /sys/module/kvm_intel/parameters/nested
Y
Y代表使能Nested KVM
創(chuàng)建一臺(tái)支持 'vmx' 的虛擬機(jī)
如果你使用 libvirt 管理虛擬機(jī)讥蔽,需要修改虛擬機(jī) xml 中的 CPU 定義涣易。
- CPU定義 1
<cpu mode='custom' match='exact'>
<model fallback='allow'>Nehalem</model>
<feature policy='require' name='vmx'/>
</cpu>
這種方式為虛擬機(jī)定義需要模擬的CPU類型 "Nehalem",并且為 CPU 添加 "vmx" 特性冶伞。
- CPU定義 2
<cpu mode='host-model'>
<model fallback='allow'/>
</cpu>
- CPU定義 3
<cpu mode='host-passthrough'>
<topology sockets='1' cores='2' threads='2'/>
</cpu>
后兩種 CPU 定義新症,CPU 穿透,在虛擬機(jī)中看到的 vcpu 與物理機(jī)的 CPU 是同樣的配置响禽,這種方式的缺點(diǎn)在于如果要對(duì)虛擬機(jī)進(jìn)行遷移徒爹,遷移的目的服務(wù)器硬件配置必須與當(dāng)前物理機(jī)一樣。
如果使用 qemu 命令行啟動(dòng)虛擬機(jī)芋类,那么可以簡(jiǎn)單的添加 -enable-kvm -cpu qemu64,+vmx
然后隆嗅,啟動(dòng)虛擬機(jī),查看cpuinfo的配置
$ cat /proc/cpuinfo
--- snip ---
Model name: Intel Core i7 9xx (Nehalem Class Core i7)
Stepping: 3
CPU MHz: 2394.456
BogoMIPS: 4788.91
Virtualization: VT-x
Hypervisor vendor: KVM
Virtualization type: full
--- snip ---
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 pdpe1gb rdtscp lm constant_tsc rep_good nopl eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch tpr_shadow vnmi flexpriority ept vpid fsgsbase bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap
參考資料
http://www.rdoxenham.com/?p=275
http://www.linuxidc.com/Linux/2015-05/117026.htm
https://www.kernel.org/doc/Documentation/virtual/kvm/nested-vmx.txt