kvm虛擬化的巢狀

2021-07-24 20:55:11 字數 2774 閱讀 1275

巢狀虛擬化是指在虛擬化的客戶機中執行乙個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這是因為 ...