[KVM]雲計算概述 - 虛擬化
什麽是虛擬化
虛擬化,是指通過虛擬化技術將一臺計算機虛擬為多臺邏輯計算機。在一臺計算機上同時運行多個邏輯計算機,每個邏輯計算機可運行不同的操作系統,並且應用程序都可以在相互獨立的空間內運行而互不影響,從而顯著提高計算機的工作效率。
虛擬化使用軟件的方法重新定義劃分IT資源,可以實現IT資源的動態分配、靈活調度、跨域共享,提高IT資源利用率,使IT資源能夠真正成為社會基礎設施,服務於各行各業中靈活多變的應用需求。
以上內容來自360百科。
虛擬化分類
1 基於VM對資源訪問的模式進行分類
1.1 CPU運行級別
CPU一共有4個運行級別,但是一般來說只是涉及到兩個級別,分別是Ring0和Ring3
Ring 3:權限最低,用戶級別,沒有權限操作硬件,如果需要調用硬件資源,那麽需要切換到Ring0,這就叫上下文切換,可通過vmstat 查看cs列
[root@arppinging ~]# vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 260 528572 0 2440100 0 0 94 69 226 128 11 4 85 0 0 [root@arppinging ~]#
Ring 0是最高指令級別,也稱為核心態,如果操作系統需要直接訪問硬件和內存的時候,就需要使用特權指令去控制中斷、修改頁表、訪問設備,因此特權指令需要運行在最高運行級別Ring 0 。Ring 3也稱為用戶態,不能直接執行特權指令,如果需要訪問磁盤、寫文件時,需要調用系統函數,這樣的操作稱為用戶態到核心態。
我們的電腦操作系統運行的級別是Ring 0,虛擬機軟件,比如VMware Workstation 作為一個軟件,只能運行在Ring 3,那麽VMware Workstation 上面安裝的操作系統也屬Ring 3,那麽虛擬機是怎麽運行Ring 0的指令的呢?
首先,虛擬機自己本身並不知道自己是虛擬機,虛擬機在調用資源的時候會把執行特權指令,但是這時候他所處的指令級別為Ring 3,這時候指令不符合將會報錯。但是使用過虛擬機的同學都應該清楚,我們運行虛擬機的時候似乎完全沒有錯,跟物理機差不多,對吧?那因為我們系統中的虛擬機管理程序(VMM)在幫我我們避免這樣的問題發生。
1.2 全虛擬化
全虛擬化:虛擬機(Ring3)如果執行特權指令(Ring0),那麽將會觸發異常,因為虛擬機沒有權限執行特權指令,VMM(Ring 0)會捕捉該異常,並對該異常做翻譯,翻譯為可執行的特權指令,然後將正確的結果返回給虛擬機。這時虛擬機會認為自己的特權指令工作正常,可以使用。
全虛擬化的問題:上下文切換過多,性能損耗非常大。(不過現在已經解決了這個問題,後面再講)
1.3 半虛擬化
半虛擬化:讓虛擬機知道自己在虛擬機上跑,工作在非Ring 0 狀態,那麽它原先在物理機上執行的一些特權指令,就會修改為其他方式,這種方式是可以和VMM約定好的,就像暗號一樣,運行在半虛擬化上的虛擬機需要對內核進行定制化,XEN這種就是半虛擬化技術,這樣就不會有異常捕捉和翻譯的過程了,性能損耗低。
半虛擬化問題:只支持虛擬Linux主機,無法虛擬化Windows,因為Windows不開源,無法修改代碼。
1.4 主流的虛擬化模式?
現在主流的虛擬化模式應該是全虛擬化,為什麽呢?看了前面的同學可能會有疑惑,為什麽不是半虛擬化?全虛擬化不是對CPU性能消耗很大嘛?
是這樣的,現在CPU廠商都開始支持虛擬化了,而且是默認支持的,如果不支持的話我們可以在BIOS裏面開啟,比如英特爾的Intel-VT還有ADM-v。
Intel-VT 技術,支持Intel-VT 的CPU,有VMX root operation 和 VMX non-root operation兩種模式,兩種模式都支持Ring 0 ~ Ring 3 這 4 個運行級別。這下好了,VMM可以運行在VMX root operation模式下,客戶OS運行在VMX non-root operation模式下。
也就說,硬件這層做了些區分,這樣全虛擬化下,有些靠“捕獲異常-翻譯-模擬”的實現就不需要了。而且CPU廠商,支持虛擬化的力度越來越大,靠硬件輔助的全虛擬化技術的性能逐漸逼近半虛擬化,再加上全虛擬化不需要修改客戶操作系統這一優勢,全虛擬化技術應該是未來的發展趨勢。
其實就是使用硬件輔助加速。
Xen是典型的半虛擬化,不過現在也支持硬件輔助的全虛擬化了,而KVM和Vmware一直都是全虛擬化。
其他分類
- 服務器虛擬化
- 桌面虛擬化
- 硬件虛擬化
- 應用虛擬化
個人筆記觀點,部分內容參考互聯網,如有建議或指教,請留言。
arppinging技術社區
歡迎關註的我的個人微信公眾號
[KVM]雲計算概述 - 虛擬化