X86虛擬化之三種服務器虛擬化戰略架構
這一部分介紹目前市場上各類x86 管理程序(hypervisor)的架構差別,三個最主要的架構類別包括:html
• I型:虛擬機直接運行在系統硬件上,建立硬件全仿真實例,被稱爲「裸機」。安全
• II型:虛擬機運行在傳統操做系統上,一樣建立的是硬件全仿真實例,被稱爲「託管」hypervisor。服務器
• 容器:虛擬機運行在傳統操做系統上,建立一個獨立的虛擬化實例,指向底層託管操做系統,被稱爲「操做系統虛擬化」。網絡
圖 1 三種主要的虛擬化架構類型架構
上圖顯示了每種架構使用的高層軟件「堆棧」,應當指出,在每種模型中,虛擬層是在不一樣層實現的,所以成本和效益都會不同。框架
除了上面的架構類別外,知道hypervisor的基本元素也一樣重要,它包括:性能
• 虛擬機監視器(Virtual Machine Monitor,VMM):它建立、管理和刪除虛擬化硬件。測試
• 半虛擬化(Paravirtualization):修改軟件,讓它知道它運行在虛擬環境中,對於一個給定的hypervisor,這可能包括下面的一種或兩種:網站
- 內核半虛擬化:修改操做系統內核,要求客戶機操做系統/hypervisor兼容性。spa
- 驅動半虛擬化:修改客戶機操做系統I/O驅動(網絡、存儲等),如Vmware Tools,MS Integration Components。
操做系統虛擬化:容器
在容器模型中,虛擬層是經過建立虛擬操做系統實例實現的,它再指向根操做系統的關鍵系統文件,以下圖所示,這些指針駐留在操做系統容器受保護的內存中,提供低內存開銷,所以虛擬化實例的密度很大,密度是容器架構相對於I型和II型架構的關鍵優點之一,每一個虛擬機都要求一個完整的客戶機操做系統實例。
圖 2 容器型虛擬化架構
經過共享系統文件的優勢,全部容器可能只基於根操做系統提供客戶機,舉一個簡單的例子,一個基本的Windows Server 2003操做系統也可用於建立Windows Server 2003容器,一樣,任何適用於根操做系統系統文件的補丁和更新,其子容器也會繼承,提供了一個方便的維護方法。
但這也可能會形成損害,根操做系統收到破壞,客戶機也會跟着被破壞。
在容器內,用戶可使用特定應用程序,熱修復(但不是服務包)和操做系統服務組件自定義客戶機實例,對那些在多數客戶機容器中會使用到的服務或應用程序,它們所須要的功能應該安裝到根操做系統中,在客戶機實例中使用相似於模板的方法自動得到這些功能。
在大多數狀況下,容器的數量僅受宿主操做系統可用資源的限制,每一個客戶機可能被配置爲根操做系統限制的最大硬件資源,這些可擴展的特性與客戶機管理的易用性,使容器方法成爲須要高虛擬機密度的應用程序頗有實力的候選者,如虛擬桌面。
Parallels Virtuozzo容器是當今業界領先的操做系統虛擬化產品,除了上述功能外,Virtuozzo提供了高可用和跨物理主機遷移客戶機的功能(假設根操做系統和補丁級別相同),架構上,Virtuozzo實現了一個專有的內核服務抽象層(Kernal Service Abstract Layer,KSAL),保護宿主操做系統文件,在可寫入文件系統上保存一份安全的副本,使單獨修改客戶機成爲可能。與混合hypervisor(本文後面會有介紹)中的父分區相似,第一個虛擬實例是一個簡單的管理容器,它提供虛擬機監視功能。
在Parallels Virtuozzo容器的最新版本4.5中,包括在Hyper-V中嵌入Virtuozzo的支持,二者都在父分區中。
圖 3 Hyper-V中嵌入Virtuozzo容器
這種實現方式雖然複雜,但它展現了Virtuozzo架構的靈活性,提供高虛擬機密度,有關Parallels Virtuozzo容器的更多信息,請參考其網站(http://www.parallels.com/products/pvc45/)。
II型 hypervisor
II型或託管型hypervisor經過一個軟件層在現有操做系統上實現硬件虛擬化,與容器架構不同,II型客戶機提供了一個完整的、獨立的、無依賴的客戶機操做系統副本,一般利用半虛擬化驅動網絡和I/O提升客戶機性能。但因爲虛擬化功能必須經過宿主操做系統,客戶機的性能大大低於裸機hypervisor。此外,還有一些高可用和企業管理功能。因爲這些緣由,II型 hypervisor最經常使用於開發/測試或桌面類應用程序。
流行的II型 hypervisor包括Vmware Workstation,Sun VirtualBox和Microsoft Virtual Server R2,它們的功能都差很少,由於它們都不能勝任企業級工做量,由於後面我也不打算繼續介紹它們。
I型hypervisor
I型或裸機hypervisor包括當今主流的企業級虛擬化產品,該類hypervisor直接運行在系統硬件上,提供了更好的客戶機性能。經過處理器虛擬化擴展加強,包括英特爾VT和AMD-V技術,I型hypervisor甚至能夠超越裸機操做系統性能。使用這一類hypervisor,有幾個子類型有必要詳細介紹:
• 獨立型:VMware vSphere
• 混合型:Microsoft Hyper-V,Citrix XenServer和Sun xVM
• KVM:Linux KVM
I型獨立型:VMware vSphere
在一個獨立型hypervisor中,全部硬件虛擬化和虛擬機監視器(VMM)功能由一個單一的,緊密集成的代碼集提供,這種架構與Vmware vSphere和前幾代ESX hypervisor的結構是相同的。下圖是Vmware vSphere 4.0(也稱爲ESX 4)的架構概述圖,與通常見解相反,Vmware不是基於Linux的hypervisor,相反,ESX是由一個高度複雜的操做系統VMKernel組成的,並取得了專利權,提供全部虛擬機監控和硬件虛擬化功能。ESX完整版提供了一個基於Linux的服務控制檯,但ESXi不包含此服務控制檯。
圖 4 VmwarevSphere 4.0架構
一般這種模式被稱爲「胖」或「瘦」hypervisor,但這種說法並不許確,雖然ESX架構通過長期發展變得更加複雜了,但Vmware在hypervisor性能和功能方面一直保持領先的行業地位,最近實現了處理器虛擬化擴展進一步鞏固了領導地位。
Vmware在客戶機內須要網絡和I/O驅動半虛擬化,這些驅動一般包含在Vmware Tools中。
I型混合型:Citrix XenServer,Microsoft Hyper-V和OracleVM
混合I型架構包括一個軟件模型,一個「瘦」hypervisor聯合一個父分區提供硬件虛擬化,它提供了虛擬機監視功能,這類模型主要包括微軟的Hyper-V和基於Xen的hypervisor,如Citrix XenServer和OracleVM。
圖 5 I型混合型hypervisor
父分區也叫作Dom0,它一般是一個運行在本地的完整操做系統虛擬機,並具備根權限,例如,開啓Xen在Novell SUSE Linux Enterprise Server(SLES)上執行的Dom0將做爲一個完整的SLES實例執行,提供虛擬機(VM)建立、修改、刪除和其它相似配置任務的管理層,系統啓動時,開啓Xen的內核載入父分區,以VMM權限運行,做爲VM管理的接口,管理I/O堆棧。
與Vmware相似,全部混合型產品都爲客戶機提供了半虛擬化驅動,從而提升網絡和I/O性能,不實現半虛擬化驅動的客戶機必須遍歷父分區的I/O堆棧,所以客戶機的性能會降低。操做系統半虛擬化技術正變得愈來愈流行,以達到最佳的客戶機性能,並改進跨hypervisor的互操做性。例如,Microsoft Hyper-V/Windows Server 2008 R2爲Windows Server 2008和SUSE Enterprise Linux客戶機提供完整的操做系統半虛擬化支持。
雖然操做系統半虛擬化是操做系統發展的一種趨勢,但應當指出的是操做系統半虛擬化目前還不是混合模型的一個要求,部分供應商,如VirtualIron(Sun/Oracle),的目標是SMB級負載,使用全硬件虛擬化實現可接受的客戶機性能。混合型架構起源於Xen項目,在性價比方面有不少供應商可供選擇,這都得益於開源社區(Xen)的貢獻,它可以很好地適應半虛擬化操做系統的將來發展。
I型組合型:基於Linux的內核虛擬機(KVM)
基於Linux的內核虛擬機(KVM)hypervisor模型提供了一個獨一無二的I型架構,它不是在裸機上執行hypervisor,KVM利用開源Linux(包括RHEL,SUSE,Ubuntu等)做爲基礎操做系統,提供一個集成到內核的模塊(叫作KVM)實現硬件虛擬化,KVM模塊在用戶模式下執行(與獨立型和混合型hypervisor不同,它們都運行在內核/根模式下),但可讓虛擬機在內核級權限使用一個新的指令執行上下文,叫作客戶機模式。
圖 6 I型組合型架構
KVM使用一個通過修改的開源QEMU硬件仿真包提供完整的硬件虛擬化,這意味着客戶機操做系統不須要操做系統半虛擬化,與Vmware相似,Linux KVM充分利用VirtIO做爲實現IO半虛擬化的框架,它利用內置在內核/QEMU中的用戶模式VirtIO驅動加強性能。KVM如今已經成爲不少Linux發行版的標準模塊,包括但不限於Red Hat Enterprise Linux和SUSE Linux Enterprise Server,以及桌面類Linux,如Ubuntu,KVM如今已經成爲一個流行的hypervisor。
文章錄入:姚澤輝 責任編輯:姚澤輝
- 上一篇:Flashpaper嵌入HTML教程
- 下一篇:如何用兩臺計算機互連組成小局域網?