KVM概述
1、KVM簡介:
一、在開源的虛擬化技術中 KVM是全虛擬化,而Xen同時支持半虛擬化和全虛擬化。
二、KVM是Kernel-based Virtual Machine的簡稱(基於內核的虛擬機)是一種Ⅱ型全虛擬化
三、kVM 其就是Linux的一個內核模塊該內核模塊使得 Linux 變成了一個 Hypervisor(虛擬機監視器)
四、KVM自從 Linux 2.6.20 起就做爲一模塊被包含在yu Linux 內核中前端
當Linux系統安裝了KVM模塊後會增長三種運行模式後端
2、KVM工做原理:
在KVM 中,虛擬機被實現爲常規的 Linux 進程,由標準 Linux 調度程序進行調度;虛機的每一個虛擬 CPU 被實現爲一個常規的 Linux 進程。這使得 KMV 可以使用 Linux 內核的已有功能。可是,KVM 自己不執行任何硬件模擬,須要客戶空間程序經過 /dev/kvm 接口設置一個客戶機虛擬服務器的地址空間,向它提供模擬的 I/O,並將它的視頻顯示映射回宿主的顯示屏。目前這個應用程序是 QEMU安全
KVM虛擬化 = KVM內核模塊 + /dev/kvm + QEMU
服務器
kvm.ko內核模塊
KVM 內核模塊是 KVM 虛擬機的核心部分,其主要功能是初始化 CPU 硬件,打開虛擬化模 式,而後將 Geust Machine 運行在虛擬機模式下,並對虛擬客戶機的運行提供必定的支持。 KVM 內核模塊中,實現虛擬化功能的是 kvm.ko,還包括一個和處理器強相關的模塊如 kvmintel.ko 或 kvm-amd.ko kvm.ko模塊在用戶空間可經過系統調用ioctl()與內核中的kvm模塊交互,從而完成虛擬機的建立、啓動、中止、刪除等各類管理功能網絡
/dev/kvm
KVM 自己不能實現任何模擬功能,它僅僅是提供了一個/dev/kvm 接口,這個接口可被宿主機用來主要負責 vCPU 的建立、虛擬內存的地址空間分配、vCPU 寄存 器的讀寫以及 vCPU 的運行 做用:將不一樣的GuestOS之間的地址隔離,或將GuestOS和HostOS(VMM)之間的地址隔離架構
QEMU 是一個軟件實現 I/O 虛擬化的模擬工具,性能較差,有時候一些應用對網卡速率有要求時,就不能再使用 QEMU 了,咱們須要引入一個新的技術,它 就是 Virtio,是用了 Virtio
一、 虛擬機中的磁盤設備發起一次 IO 操做請求;
二、 KVM 模塊中的 I/O Trap Code(I/O 捕獲程序)將這個 IO 操做請求捕獲到,進行 相應的處理,而後將處理後的請求放到 I/O 共享頁中;
3 、KVM 模塊會通知 QEMU,告訴它有新的 I/O 操做請求放到了共享頁中;
4 、QEMU 收到通知後,到共享頁中獲取該 I/O 操做請求的具體信息;
5 、QEMU 對該請求進行模擬,同時根據 I/O 操做請求的信息調用運行在內核態的設備 驅動,去進行真正的 IO 操做;
6 、經過設備驅動去對物理硬件執行真正的 IO 操做;
7 、QEMU 將執行後的結果返回到共享頁中,同時通知 KVM 模塊已完成了這次的 I/O 操做;
8 、I/O 捕獲程序從共享頁中將返回的結果讀取出來;
9 、I/O 捕獲程序將操做結果返回給虛擬機;
十、 虛擬機的將結果返回給發起操做的應用程序。ide
使用 Virtio 的時候,具體的操做流程以下
1 、第一步也是由虛擬機發起 I/O 操做請求;
2 、第二步的時候和使用默認模型不同,這個 I/O 操做請求不會通過 I/O 捕獲程序, 而是直接之前後端的形式放到環形緩衝區,同時 KVM 模塊通知後端驅動; 3 QEMU 到環形緩衝區獲取到操做請求的具體信息;
4 、後端驅動直接調用真實的物理設備驅動進行具體的 I/O 操做;
5 、由真實的設備驅動完成這次操做;
6 、QEMU 將完成結果返回到環形緩衝區,而且由 KVM 模塊通知前端驅動;
7 、前端驅動從環形緩衝區獲取到這次 I/O 操做的結果;
8 、前端驅動將結果返回給具體發起該操做的應用程序。工具
3、FusionCompute 簡介性能
1)華爲FusionSphere虛擬化套件是業界領先的虛擬化解決方案,可以幫助客戶帶來以下的價值,從而大幅提高數據中心基礎設施的效率。操作系統
CNA英文全稱: Compute Node Agent, CNA部署在須要虛擬化的服務器上。
FusionCompute 的架構和 KVM 很是類似,其中 VRM 至關於 KVM 中的管理工具,管理 員和用戶能夠經過圖形化的 Portal 對 FusionCompute 進行管理和使用。它是基於 Linux 操做 系統的,因此咱們登陸 VRM 後,不少 Linux 的命令可使用。CNA 至關於 KVM 中 QEMU+KVM 模塊,主要提供了虛擬化功能,一般是以集羣的方式部 署,將集羣內的計算、存儲和網絡資源虛擬化成資源池供用戶使用。一樣,CNA 也是基於 Linux 操做系統的