一、hypervisor架構分類
1.定義:計算虛擬化的軟體層,通常叫
hypervisor
,即虛擬化層,也叫虛擬機器監控器(
virtual machine monitor
,vmm
),負責
guest os
所有硬體資源呼叫
hypervisor 是一 種執行在物理伺服器和作業系統之間的中間軟體層,可允許多個作業系統和 應用共享一套基礎物理硬體,因此也可以看作是虛擬環境中的「元」操作系 統,它可以協調訪問伺服器上的所有物理裝置和虛擬機器,也叫虛擬機器監視器
(virtual machine monitor vmm)。hypervisor 是所有虛擬化技術的核心。 非中斷地支援多工作負載遷移的能力是 hypervisor 的基本功能。當伺服器 啟動並執行 hypervisor 時,它會給每一台虛擬機器分配適量的記憶體、cpu、網 絡和磁碟,並載入所有虛擬機器的客戶操
作系統。
2.架構分類
(宿主型、主機型):
vmm之下還有一層宿主作業系統,
guest os
對硬體資源訪問必須經過宿主作業系統,帶來額外開銷,所有硬體驅動、記憶體管理、程序排程等由宿主作業系統執行。
3.cpu虛擬化
cpu 虛擬化的目標是使虛擬機器上的指令能被正常地執行,而且效率接近物理機。
cpu指令系統
cpu指令系統
核心態:作業系統訪問硬體(物理記憶體,
io裝置等),關鍵資料結構,執行中斷等;ring 0
使用者態:使用者執行應用程序;ring 3;
3.1 cpu全虛擬化
全虛擬化也成為原始虛擬化技術,該模型使用虛擬機器協調 guest 作業系統和 原始硬體,vmm 在 guest 作業系統和裸硬體之間用於工作協調,一些受保護 指令必須由 hypervisor(虛擬機器管理程式)來捕獲處理。
全虛擬化主要是在客戶作業系統和硬體之間捕捉和處理那些對虛擬化敏感的 特權指令,使客戶作業系統無需修改就能執行,速度會根據不同的實現而不 同,但大致能滿足使用者的需求。這種方式是業界現今最成熟和最常見的,而 且屬於 hosted 模式和 hypervisor 模式的都有,知名的產品有
ibm cp/cms、virtualbox、kvm、vmware workstation 和 vmware esx (它在其 4.0 版,被改名為 vmware vsphere)。
binary translation
原理:將虛擬機器核心指令在執行時替換為一系列指令模擬虛擬機器核心態指令的執行:如下圖所示;
ring 3
使用者態()
ring3
虛擬機器使用者態
ring0
虛擬機器核心態
ring 2
ring 1
ring 0
核心態(
os kernel)
採用的技術型別:
主要採用優先順序壓縮(ring compression)和二進位制**翻譯技術(binary translation)這兩個技術。優先順序壓縮能讓 vmm 和 guest 執行在不同的特 權級下,對 x86 架構而言,就是 vmm 執行在特權級最高 ring 0 下,guest 的核心**執行在 ring 1 下,guest 的應用**執行在 ring 3 下。通過這 種方式能讓 vmm 截獲一部分在 guest 上執行的特權指令,並對其進行虛擬化。 但是有一些對虛擬化不友好的指令則需要二進位制**翻譯來處理,它通過掃 描並修改 guest 的二進位制**來將那些難以虛擬化的指令轉化為支援虛擬化 的指令。
3.2 cpu半虛擬化
半虛擬化是另一種類似於全虛擬化技術,它使用 hypervisor 分享訪問底層 硬體,但是它的 guest 作業系統整合了虛擬化方面**。該方法無需重新編 譯或引起陷阱,因為作業系統自身能夠與虛擬程序進行很好的協作。
它與完全虛擬化有一些類似,它也利用 hypervisor 來實現對底層硬體的共 享訪問,但是由於在 hypervisor 上面執行的 guest os 已經整合與半虛 擬化有關的**,使得 guest os 能夠非常好地配合 hyperivosr 來實現虛 擬化。通過這種方法將無需重新編譯或捕獲特權指令,使其效能非常接近物 理機,其最經典的產品就是 xen,而且因為微軟的 hyper-v 所採用技術和 xen 類似,所以也可以把 hyper-v 歸屬於半虛擬化。
採用的技術型別
其通過修改 guest os 的**,使其將那些和特權指令相關的操作都轉換會 發給 vmm 的 hypercall(超級呼叫),而且 hypercall 支援 batch(批處理) 和非同步這兩種優化方式,使得通過 hypercall 能得到近似於物理機的速度,
3.3 cpu硬體輔助虛擬化
intel/amd 等硬體廠 商通過對部分全虛擬化和半 虛擬化使用到的軟體技術進 行硬體化(具體將在下文詳 述)來提高效能。硬體輔助
虛擬化技術常用於優化全虛擬化和半虛擬化產品,而不是獨創一派,最出名 的例子莫過於 vmware workstation,它雖然屬於全虛擬化,但是在它的 6.0 版本中引入了硬體輔助虛擬化技術,比如 intel 的 vt-x 和 amd 的 amd-v。 現在市面上的主流全虛擬化和半虛擬化產品都支援硬體輔助虛擬化,包括 virtualbox,kvm,vmware esx 和 xen。
採用的技術型別
主要有 intel 的 vt-x 和 amd 的 amd-v 這兩種技術,而且這兩種技術在核心 思想上非常相似,都是通過引入新的指令和執行模式,來讓 vmm 和 guest os 能分別執行在其合適的模式下。在實現方面,vt-x 支援兩種處理器工作 方式:第一種稱為 root 模式(operation),vmm 執行於此模式,用於處理 特殊指令,另一種稱為 non-root 模式(operation),guest os 執行於此模 式,當在 non-root 模式 guest 執行到特殊指令的時候,系統會切換到執行 於 root 模式 vmm,讓 vmm 來處理這個特殊指令。
4.記憶體虛擬化
記憶體虛擬化的目標是能做好虛擬機器記憶體空間之間的隔離,使每個虛擬機器都認為自己擁有了整個記憶體位址,並且效率也能接近物理機。
4.1全虛擬化
影子頁表 (shadow page table),就是為每個 guest 都維護乙個「影子頁 表」,在這個表中寫入虛擬化之後的記憶體位址對映關係,而 guest os 的頁表 則無需變動,最後,vmm 將影子頁表交給 mmu(memory management unit 記憶體管理單元) 進行位址轉換。
4.2 半虛擬化
頁表寫入法,當 guest os 建立乙個新的頁表時,其會向 vmm 註冊該頁表, 之後在 guest 執行的時候,vmm 將不斷地管理和維護這個表,使 guest 上面 的程式能直接訪問到合適的位址。
4.3 硬體輔助虛擬化
ept(extended page table,擴充套件頁表),ept 通過使用硬體技術,使其能 在原有的頁表的基礎上,增加了乙個 ept 頁表,通過這個頁表能夠將 guest 的實體地址直接翻譯為主機的實體地址,從而減低整個記憶體虛擬化所需的 cost。
5.io虛擬化
i/o 虛擬化的目標是不僅讓虛擬機器訪問到它們所需要的 i/o 資源,而且要做 好它們之間的隔離工作,更重要的是,減輕由於虛擬化所帶來的開銷。
5.1 全虛擬化
通過模擬 i/o 裝置(磁碟和網絡卡等)來實現虛擬化。對 guest os 而言,它 所能看到就是一組統一的 i/o 裝置,同時 guest os 每次 i/o 操作都會陷入
到 vmm,讓 vmm 來執行。這種方式,對 guest 而言,非常透明,無需顧忌底 層硬體,比如 guest 操作的是 scsi 的裝置,但實際物理機只有 sata 的硬碟。
5.2 半虛擬化
通過前端(front-end)/後端(back-end)架構,將 guest 的 i/o 請求通過 乙個環狀佇列傳遞到特權域(privileged domain,也被稱為 domain-0)。 因為這種方式的相關細節較多,所以會在後文進行深入分析。
5.3 硬體輔助虛擬化
伺服器虛擬化技術
伺服器虛擬化技術是指通過運用虛擬化的技術充分發揮伺服器的硬體效能,能夠在確保企業投入成本的同時,提高運營效率,節約經濟成本和空間浪費,對於發展迅速,成長規模大的使用者來說,可以通過伺服器虛擬化技術帶來更多的經濟效益。如果你曾經將硬碟劃分為不同分割槽,那麼可能會對虛擬化的概念有所理解。分割槽是硬碟驅動...
雲計算 虛擬化技術
雲計算很重要的乙個特性就是共享,而實現共享的乙個技術是虛擬化,今天就八一八虛擬化,什麼是虛擬化。虛擬化並不是乙個新的技術,早在ibm大型機時代就已經誕生,目前講的虛擬化主要指以下兩種 1 伺服器級虛擬化 vmware esxi kvm xen等等,使用者看到的是硬體伺服器 2 os級虛擬化 lxc容...
雲計算 虛擬化技術
雲計算的的定義 雲計算是基於網際網路的服務的增加 使用 和交付模式,通常涉及通過網際網路提供動態易擴充套件且經常是虛擬化的資源。是傳統計算機和網路技術發展融合的產物,它意味著計算能力也可作為一種商品通過網際網路進行流通。雲計算的六大關鍵特性技術 按需自助服務 可測量的服務 廣泛的網路接入 多租戶 資...