嵌套虛擬化的實(shí)現(xiàn)是允許我們?cè)谔摂M機(jī)中暴露更多物理CPU的特性箩朴,進(jìn)而讓我們可以在虛擬機(jī)中運(yùn)行虛擬機(jī)郊丛。
具體的線上使用場景目前也不太清晰....不過在公有云上跑自己的私有云不知是不是一個(gè)好的idea...
不過最近有一個(gè)測(cè)試需求愿卒,需要在虛機(jī)中再開啟虛機(jī)舍肠,于是就研究了一下基于KVM的嵌套虛擬化的使用咖刃。
使用嵌套虛擬化化漆,我們首先要看下當(dāng)前的系統(tǒng)中有沒有配置支持抖誉。
cat /sys/module/kvm_intel/parameters/nested
Y ##結(jié)果為Y表示當(dāng)前的操作系統(tǒng)已經(jīng)支持了嵌套虛擬化殊轴,使用跑虛擬化的程序直接使用就ok了
N ##那當(dāng)然就表示當(dāng)前操作系統(tǒng)未配置嵌套虛擬化嘍
如果你的結(jié)果為N,看下配置過程吧
vi /etc/modprobe.d/kvm-nested.conf
options kvm_intel nested=1 #打開KVM內(nèi)核模塊的Nested特性
options kvm-intel enable_shadow_vmcs=1 #沒找到相關(guān)資料
options kvm-intel enable_apicv=1 #沒找到相關(guān)資料
options kvm-intel ept=1 #沒找到相關(guān)資料
配置好后保存退出
modprobe -r kvm_intel #協(xié)助掉內(nèi)核中的kvm_intel模塊袒炉,注意要在所有虛擬機(jī)都關(guān)閉的情況下執(zhí)行
modprobe -a kvm_intel #重新加載該模塊
之后就可以再查看下狀態(tài)旁理,看看是否支持了
光當(dāng)前操作系統(tǒng)支持嵌套虛擬化還不成,我們?cè)诮⑻摂M機(jī)的時(shí)候也要指定允許當(dāng)前建立的虛擬機(jī)使用嵌套虛擬化的功能我磁,那么給出一段建立時(shí)的命令孽文,這里是用virt-install進(jìn)行創(chuàng)建的虛擬機(jī)。
virt-install --name manager03 --memory=16384 --arch=x86_64 --cpu=host-model --vcpus=16 --check-cpu --os-type=linux --os-variant='rhel7' --cdrom=/home/iso/ZStack-x86_64-DVD-2.3.0.495.iso --disk path=/home/VMDATA/manager03.img --network bridge=br0 --noautoconsole --graphics vnc,password=xxxx,listen=0.0.0.0,port=8000
--cpu=host-model ##這一段就是配置當(dāng)前的虛擬機(jī)支持嵌套虛擬化的夺艰,如果不配置這段芋哭,
虛擬機(jī)啟動(dòng)后是無法再運(yùn)行虛擬化的
創(chuàng)建虛擬機(jī)后可以查看下虛擬機(jī)的配置文件
virsh edit manager03
......
<cpu mode='host-model'>
<model fallback='allow'/>
</cpu>
我們可以在配置文件中過濾到cpu相關(guān)的配置行,如果mode的信息為host-model即當(dāng)前的虛擬機(jī)可以再創(chuàng)建一層虛擬機(jī)
目前翻著資料郁副,kvm的cpu的工作模式有以下三種减牺,下面是我個(gè)人的理解,不對(duì)之處歡迎指正
custom
這種目前看來是默認(rèn)的霞势,就是你的虛擬機(jī)起來后無法再運(yùn)行虛擬化程序烹植,其他的一些特性還沒研究到,如果看到了貼在這里
host-model
使用host-model看到的VCPU:Libvir 會(huì)根據(jù)物理cpu的型號(hào)愕贡,從規(guī)定的CPU中選擇一種最接近的CPU型號(hào)
processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 44
model name : Westmere E56xx/L56xx/X56xx (Nehalem-C)
host-passthrough
使用host-passthrough看到的VCPU:直接看到物理CPU的型號(hào)
processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 44
model name : Intel(R) Xeon(R) CPU X5650 @ 2.67GHz
以上2中host類型的cpu工作模式都可以在虛擬機(jī)中再次運(yùn)行虛擬機(jī)草雕,不過要注意host-passthrough 方式虛擬機(jī)不能遷移到不同型號(hào)的CPU上