文章來自」
「。
雲端運算如今已是一個相當熱門的概念,各行各業包括政府,雲建設都如火如荼地進行。華為正借助開源技術,向不同領域的客戶提供多樣化的雲服務,包括提供全面的私有雲、公有雲和混合雲。雲簡而言之就是把IT資源服務化。過去辦公場景中我們每人一台PC,擁有獨立的IT資源,而雲可以將IT資源按需分配給需要的租戶,實作按需、彈性拓展。以前每個人一台PC。現在大家共享一台超級PC,按需存取,不用時資源自動釋放,可供其他使用者使用,這樣資源得以最大化利用,並且可以按需擴充套件,及時滿足使用需求。
深入內容參考「 「、「 」、「 」,主要介紹虛擬化的產生與發展, KVM的CPU、記憶體和IO虛擬化,ARM和X86的比較。
相關閱讀:
雲作業系統功能有些類似,但功能更復雜。雲作業系統它負責管理和調配一個或多個數據中心的硬體資源,這些資源可能由數量巨大的伺服器、儲存裝置組成,並邏輯上把它們整合一台虛擬電腦系統,供上層雲套用使用。為了提升硬體資源使用效率,一台硬體裝置會首先被虛擬成多個具備獨立功能的虛擬裝置,以便同時供多個套用呼叫,這就涉及到虛擬化技術,這也是雲作業系統的關鍵技術之一。而當前具備這種虛擬化功能的技術維基百科列舉的就有超過60種,其中有四種虛擬化技術是當前最為成熟而且運用最廣泛的,分別是:VMware的ESX、微軟Hyper-V、開源的Xen和KVM等,下面將針對這4種虛擬化技術架構進行分析。
一、虛擬化架構分析
1、虛擬化架構
從虛擬化的實作方式來看,虛擬化架構主要有三種形式:寄居虛擬化架構、裸金屬虛擬化架構和作業系統虛擬化架構,其效能及主流產品如下
以虛擬化架構維度,分類如下
寄居虛擬化架構:Hypervisor執行在基礎作業系統上,構建出一整套虛擬硬體平台,支持建立各種作業系統型別虛擬機器。代表性產品:VMware WorkStation、Redhat KVM。優點:簡單、易實作。缺點:上層Guest OS的處理需要逐層轉換,發送到底層進行處理,依賴於Host OS。
裸金屬虛擬化架構:Hypervisor直接執行在硬體上,直接與硬體互動提升效率。代表性產品:VMware ESXServer、Citrix XenServer、Microsoft Hyper-V。優點:互動效率提升,不依賴作業系統。
作業系統虛擬化架構:隔離性差,最後一種不常用,虛擬機器執行在傳統作業系統上,建立一個獨立的虛擬化例項(容器Container),指向底層托管作業系統,缺點是作業系統唯一,如果底層作業系統跑的是Windows,那麽VPS/VE就都得跑Windows,
在宿主架構中的虛擬機器作為主機作業系統的一個行程來排程和管理,裸金屬架構下 則不存在主機作業系統,它是以Hypervisor直接執行在物理硬體之上,即使是有類似主機作業系統的父分區或Domain 0,也是作為裸金屬架構下的虛擬機器存在的。宿主架構通常用於個人PC上的虛擬化,如WindowsVirtual PC,VMware Workstation,Virtual Box,Qemu等,而裸金屬架構通常用於伺服器的虛擬化。
2、虛擬化技術
以虛擬化技術維度,分類如下
全虛擬化:也稱為原始虛擬化技術,執行在虛擬機器上的作業系統透過Hypervisor來最終分享硬體,所以虛擬機器發出的指令需經過Hypervisor捕獲並處理。
半虛擬化:半虛擬化技術是後來才出現的技術,它就是在全虛擬化的基礎上,把客戶作業系統進行了修改,增加了一個專門的API,這個API可以將客戶作業系統發出的指令進行最佳化,即不需要Hypervisor耗費一定的資源進行轉譯操作,因此Hypervisor的工作負擔變得非常的小,因此整體的效能也有很大的提高。
硬碟輔助虛擬化:Hypervisor可以在部份功能上與硬體直接互動,提升效能。比如在CPU效能較差的網路IO方面與硬體直接互動。
二、ESX虛擬化架構
ESX虛擬化架構示意圖
ESX是VMware的企業級虛擬化產品,ESX伺服器啟動時,首先啟動Linux Kernel,透過這個作業系統載入虛擬化元件,最重要的是ESX的Hypervisor元件,稱之為VMkernel,VMkernel會從 LinuxKernel完全接管對硬體的控制權,而該Linux Kernel作為VMkernel的第一個虛擬機器,用於承載ESX的serviceConsole,實作原生的一些管理功能。
VMkernel負責為所承載的虛擬機器排程所有的硬體資源,但不同型別的硬體會有些區別。
虛擬機器對於CPU和記憶體資源是透過VMkernel直接存取,最大程度地減少了開銷,CPU的直接存取得益於CPU硬體輔助虛擬化(Intel VT-x和AMD AMD-V,第一代虛擬化技術),記憶體的直接存取得益於MMU(記憶體管理單元)硬體輔助虛擬化。
虛擬機器對於I/O裝置的存取則有多種方式,以網卡為例,有兩種方式可供選擇:一是利用I/O MMU硬體輔助虛擬化的VMDirectPath I/O,使得虛擬機器可以直接存取硬體裝置,從而減少對CPU的開銷;二是利用半虛擬化的裝置VMXNETx,網卡的物理驅動在VMkernel中,在虛擬機器中裝載網卡的虛擬驅動,透過這二者的配對來存取網卡,與仿真式網卡相比有著較高的效率。半虛擬化裝置的安裝是由虛擬機器中 VMware tool來實作的,可以在Windows虛擬機器的右下角找到它。
三、Hyper-V虛擬化架構
Hyper-V虛擬化架構示意圖
Hyper-V是微軟新一代的伺服器虛擬化技術,第一個版本於2008年7月釋出,Hyper-V有兩種釋出版本:一是獨立版,如Hyper-V Server 2008,以命令列界面實作操作控制,是一個免費的版本;二是內嵌版,如Windows Server 2008,Hyper-V作為一個可選開啟的角色。
其實Hypervisor僅實作了CPU的排程和記憶體的分配,而父分區控制著I/O裝置,它透過物理驅動直接存取網卡、儲存等。子分區要存取I/O裝置需要透過子分區作業系統內的VSC(虛擬化服務客戶端),對VSC的請求由VMBUS(虛擬機器匯流排)傳遞到父分區作業系統內的VSP(虛擬化服務提供者),再由VSP重新導向到父分區內的物理驅動,每種I/O裝置均有各自的VSC和VSP配對,如儲存、網路、視訊和輸入裝置等,整個I/O裝置存取過程對於子分區的作業系統是透明的。其實在子分區作業系統內,VSC和VMBUS就是作為I/O裝置的虛擬驅動,它是子分區作業系統首次啟動時由Hyper-V 提供的整合服務包安裝,這也算是一種半虛擬化的裝置,使得虛擬機器與物理I/O裝置無關。如果子分區的作業系統沒有安裝Hyper-V整合服務包或者不支持 Hyper-V整合服務包(對於這種作業系統,微軟稱之為Unenlightened OS,如未經認證支持的Linux版本和舊的Windows版本),則這個子分區只能執行在仿真狀態。其實微軟所宣稱的啟蒙式 (Enlightenment)作業系統,就是支持半虛擬化驅動的作業系統。
Hyper-V的Hypervisor是一個非常精簡的軟體層,不包含任何物理驅動,物理伺服器的裝置驅動均是駐留在父分區的Windows Server 2008中,驅動程式的安裝和載入方式與傳統Windows系統沒有任何區別。因此,只要是Windows支持的硬體,也都能被Hyper-V所相容。
四、Xen虛擬化架構
XEN的虛擬化架構示意圖
相對於ESX和Hyper-V來說,XEN支持更廣泛的CPU架構,前兩者只支持CISC的X86/X86_64 CPU架構,XEN除此之外還支持RISC CPU架構,如IA64、ARM等。
XEN的Hypervisor是伺服器經過BIOS啟動之後載入的第一個程式,然後啟動一個具有特定許可權的虛擬機器,稱之為Domain 0(簡稱Dom 0)。Dom 0的作業系統可以是Linux或Unix,Domain 0實作對Hypervisor控制和管理功能。在所承載的虛擬機器中,Dom 0是唯一可以直接存取物理硬體(如儲存和網卡)的虛擬機器,它透過本身載入的物理驅動,為其它虛擬機器(Domain U,簡稱DomU)提供存取儲存和網卡的橋梁。
XEN支持兩種型別的虛擬機器,一類是半虛擬化,另一類是全虛擬化(XEN稱其為 HVM)。半虛擬化需要特定內核的作業系統,如基於Linux paravirt_ops(Linux內核的一套編譯選項)框架的Linux內核,而Windows作業系統由於其封閉性則不能被XEN的半虛擬化所支持,XEN的半虛擬化有個特別之處就是不要求CPU具備硬體輔助虛擬化,這非常適用於2007年之前的舊伺服器虛擬化改造。全虛擬化支持原生的作業系統, 特別是針對Windows這類作業系統,XEN的全虛擬化要求CPU具備硬體輔助虛擬化,它修改的Qemu仿真所有硬體,包括:BIOS、IDE控制器、 VGA視訊卡、USB控制器和網卡等。
五、KVM虛擬化架構
KVM虛擬化架構示意圖
KVM 與XEN類似,KVM支持廣泛的CPU架構,除了X86/X86_64 CPU架構之外,還將會支持大型電腦(S/390)、小型機(PowerPC、IA64)及ARM等。
KVM充分利用了CPU的硬體輔助虛擬化能力,並重用了Linux內核的諸多功能,使得KVM本身是非常瘦小的,KVM的創始者Avi Kivity聲稱KVM模組僅有約10000行程式碼,但我們不能認為KVM的Hypervisor就是這個程式碼量,因為從嚴格意義來說,KVM本身並不是 Hypervisor,它僅是Linux內核中的一個可裝載模組,其功能是將Linux內核轉換成一個裸金屬的Hypervisor。
KVM 用來模擬 CPU 的執行,但缺少了對 Network 和 I/O 的支持。QEMU-KVM 是一個完整的模擬器,它基於 KVM 上,提供了完整的 Network 和 I/O 支持。其中 Openstack 為了跨 VM 性,所以不會直接控制 QEMU-KVM,而是透過 libvit 的庫去間接控制 QEMU-KVM 。
KVM利用修改的QEMU提供BIOS、顯卡、網路、磁盤控制器等的仿真,但對於I/O裝置(主要指網卡和磁盤控制器)來說,則必然帶來效能低下的問題。因此,KVM也引入了半虛擬化的裝置驅動,透過虛擬機器作業系統中的虛擬驅動與主機Linux內核中的物理驅動相配合,提供近似原生裝置的效能。從此可 以看出,KVM支持的物理裝置也即是Linux所支持的物理裝置。
六、總結
當前具備虛擬化功能的技術有多種,如微軟Hyper-V、VMware Vsphere、KVM、Xen等,為了方便管理多種虛擬化技術並向上提供統一、標準的介面。
傳統概念下的半虛擬化和全虛擬化的界線越來越模糊了,而且半虛擬化和全虛擬化得到了有機的整合,如半虛擬化的裝置驅動和全虛擬化的虛擬機器在上述四種虛擬化架構中得到了統一,很多虛擬化廠商也不再明確自己的虛擬化產品歸類(如VMware和微軟)。
隨著CPU硬體輔助虛擬化技術發展到了二代,而且新版的作業系統對虛擬化技術的原生支持(如Windows7的Natively Enlightened,Linux的paravirt_ops內核選項),以及Hypervisor對虛擬機器的CPU排程和記憶體管理越來越少的幹預。則軟體做得越少而硬體做得越多,如虛擬機器之間記憶體管理所需用到的地址轉譯由軟體的影式分頁(Shadow Paging)轉變為由CPU硬體加速的巢狀分頁(Nested Paging),各種虛擬化技術既有全虛擬化技術對作業系統的相容性,又有半虛擬化技術所帶來的效能優勢。
從架構上來看,各種虛擬化技術沒有明顯的效能差距,穩定性也在逐漸逼近中,各自有著自身的優勢場景和市場群體。因此,我們在進行虛擬化技術選型時,不應局限於某一種虛擬化技術,而應該有一套綜合管理平台實作對各種虛擬化技術的相容並蓄,實作不同技術架構的統一管理及跨技術架構的資源排程,最終達到雲端運算可營運的目。眾望所歸我司扮演重要角色的OpenStack就是這樣一個平台。
來源:
https://support.huawei.com/enterprise/zh/knowledge/EKB1002005920
GPU技術篇
DPU技術篇
」
更新提醒:「 」和「 」已經更新釋出,還沒有獲取的讀者,請在點選「原文連結」在微店留言獲取 ( PDF閱讀版本 )。
轉載申明:轉載 本號文章請 註明作者 和 來源 ,本號釋出文章若存在版權等問題,請留言聯系處理,謝謝。
推薦閱讀
更多 架構相關技術 知識總結請參考「 架構師全店鋪技術資料打包 (全) 」相關電子書( 41本 技術資料打包匯總詳情 可透過「 閱讀原文 」獲取)。
全店內容持續更新,現下單「 架構師技術全店資料打包匯總(全) 」一起發送「 」 和「 」 pdf及ppt版本 ,後續可享 全店 內容更新「 免費 」贈閱,價格僅收 249 元(原總價 439 元)。
溫馨提示:
掃描 二維碼 關註公眾號,點選 閱讀原文 連結 獲取 「 架構師技術全店資料打包匯總(全) 」 電子書資料詳情 。