巢狀虛擬化是指在虛擬化的客戶機中執行乙個hypervisor,從而再虛擬化執行乙個客戶機。 巢狀虛擬化不僅包括相同hypervisor的巢狀(如kvm巢狀kvm、xen巢狀xen等),也包括不同hypervisor的相互巢狀(如kvm巢狀巢狀xen等)根據巢狀虛擬化的概念可知,其不僅包括兩層巢狀(如kvm巢狀kvm),還包括多層的巢狀(如kvm巢狀kvm再巢狀kvm) 。
巢狀虛擬化的五大應用場景。
1)iaas型別的雲計算提供商 :如果有了巢狀虛擬化功能的支援,就可以為其客戶提供讓客戶可以自己執行所需hypervisor和客戶機的能力。
2)為測試和除錯hypervisor帶來了非常大的便利:了巢狀虛擬化的支援,被除錯hypervisor執行在更底層的hypervisor之上,遇到被除錯hypervisor的系統崩潰,也只需要在底層的hypervisor上重啟被除錯系統即可。
3)在一些為了起到安全作用的帶有hypervisor的韌體上:如果有巢狀虛擬化的支援,則在它上面不僅可以執行一些普通的負載,還可以執行一些hypervisor啟動另外的客戶機。
4)巢狀虛擬化的支援,對虛擬機器系統的動態遷移也提供了新的功能:從而可將乙個hypervisor及其上面執行的客戶機作為單一的節點進行動態遷移,這對伺服器的負載均衡及災難恢復等有積極意義。
5)巢狀虛擬化的支援,對於系統隔離性、安全性方面也提供更多的實施方案。
kvm巢狀kvm,既是在kvm上面執行的第一級客戶機中再載入kvm和kvm_intel(或kvm_amd)模組,然後在第一級的客戶機中用qemu-kvm啟動帶有kvm加速的第二級客戶機。「kvm巢狀kvm」的基本架構示意圖如下:
「kvm巢狀kvm」的基本架構示意圖中低層是具有intel vt或amd-v特性的硬體系統,硬體層之上就是底層的宿主機系統(level 0,即l0); 在l0 宿主機中可以執行載入有kvm模組的客戶及(level 1 第一級,即l1); 在l1客戶機中通過qemu/kvm啟動乙個普通的客戶機(level 2 第二級,即l2); 如果kvm還可以做多級的巢狀虛擬化,各個級別的作業系統被依次稱為:l0、l1、l2、l3、l4........,其中l0向l1提供硬體虛擬化環境(intel vt 或 amd-v),l1向l2提供硬體虛擬化環境,依次類推。
kvm對「kvm巢狀kvm」的支援從2023年就開始了,目前已經比較成熟了。「kvm巢狀kvm」功能的配置和使用,有如下幾個步驟:
1)在進行虛擬機器的巢狀時需要在底層的宿主機中開啟kvm
巢狀kvm
的功能方法為在進行虛擬機器的
kvm模組載入的時候進行一些設定和使用
qemu-system-x86_64
的時候進行一些引數的設定具體如下()這是
kvm的l0:
root@ubuntu:~# rmmod kvm_intel
----此時
kvm_intel
模組已經載入需要將其刪除才能進行引數設定
root@ubuntu:~# lsmod | grep kvm
kvm 451511 0
root@ubuntu:~# modprobe kvm_intel nested=1
root@ubuntu:~# cat /sys/module/kvm_intel/parameters/nested y
是y則表示kvm
巢狀kvm
的功能已經開啟了
root@ubuntu:~# lsmod | grep kvm
kvm_intel 143060 6
kvm 451511 1 kvm_intel
2)使用qemu
開啟乙個虛擬機器在啟動命令上加上
「-cpu host」
或「-cpu qemu64,+vmx」
如下面所示:
root@ubuntu:~/qemu# qemu-system-x86_64 -enable-kvm -m 1024 -smp 4 -hda ubuntu.raw -cpu host -net nic -net tap,ifname=tap1 -monitor stdio
在開啟的虛擬機器中檢視kvm
模組的載入情況,如下圖所示:
因為我的cpu
為奔騰處理器所以在執行
cat /proc/cpuinfo | grep 『vmx|svm』
的時候,依舊什麼都沒有。
此時l1
已經具備作為乙個宿主機的功能,現在安裝
qemu
開始進行虛擬機器的建立。此時的
l 1相當與乙個宿主機了。此處我使用的是
mount
掛載nfs
,在掛載的地方
,放上需要使用的映象檔案
,直接使用以前的映象檔案
,而沒有從新製作
。如下圖所示:
我通過我的windows
端進行vnc
連線如下圖:
此時虛擬化的巢狀就此完成。
KVM虛擬化巢狀
關於虛擬化有這樣一種使用場景,我們有一台物理伺服器a,在此a上,我們使用kvm作為hypervisor虛擬出各類作業系統,比如有虛擬機器a b c,若此時我們將a b和c作為乙個集群部署了openstack,那麼a b c上也需要安裝kvm或者其他的hypervisor,當然,對於openstack...
KVM巢狀虛擬化配置
kvm巢狀虛擬化配置 1 先檢視我們的虛擬機器a支不支援虛擬化,通過命令lscpu 檢視當前系統是否支援nested systool m kvm intel v grep i nested nested n 或者這樣檢視 cat sys module kvm intel parameters nes...
KVM 開啟巢狀虛擬化
在 centos kvm 上啟動虛擬機器來部署 openstack 測試環境,在啟動具有 cpu 繫結 numa 親和的虛擬機器時觸發錯誤 libvirterror requested operation is not valid cpu affinity is not supported這是因為 ...