服務器虛擬化技術簡介
服務器虛擬化的方式
服務器虛擬化的有多種劃分方式,可以根據虛擬化架構劃分為裸金屬/寄居,根據虛擬化層次硬件輔助虛擬化/軟件輔助虛擬化,根據虛擬化平臺劃分為全虛擬化/半虛擬化。
裸金屬/寄居
未虛擬化
未虛擬化的普通x86服務器架構,自下而上是物理硬件(Hardware)、操作系統(OS),應用程序(APP)。
未虛擬化的x86服務器
寄居
Windows中使用VMware workstation實現服務器虛擬化
應該大多數人都使用過VMware workstation和VirtualBox這兩個軟件,它們就屬於是寄居架構。一般我們會把這兩個軟件裝在Windows系統中(它們也有Linux版),再在軟件中創建虛擬機。
以Windows中安裝VMware workstation為例,自下而上是物理硬件、宿主機(Host OS,這裏是Windows)、hypervisor(這裏是VMware workstation)、虛擬硬件(vHardware,由hypervisor提供),虛擬機(VM,也叫Gust OS),APP(工作在虛擬機中的應用程序)。
Tips:hypervisor也叫虛擬機監視器(Virtual Machine Monitor,VMM),是實現物理機虛擬為虛擬機的系統或者軟件,包括提供虛擬化硬件,管理虛擬機等功能。
裸金屬
VMware ESXi
VMware workstation一般是用作個人學習、測試,ESXi則是VMware的企業級服務器虛擬化技術,本身就是一個操作系統,直接安裝的物理服務器上,是典型的裸金屬架構。與寄居架構的workstation很明顯的區別在於,ESXi以系統的形式安裝在硬件之上,而workstation則以軟件的形式安裝在操作系統中。
Tips:早期VMware的企業級服務器虛擬化版本稱為ESX,後來升級版本稱為ESXi。
真正判斷虛擬化類型是裸金屬還是寄居架構,還要看虛擬化層控制的硬件是由誰來提供的。寄居架構將虛擬化層(hypervisor)以一個應用程序的方式安裝運行於操作系統之上,支持最為廣泛的各種硬件配置。裸金屬架構將虛擬化層(hypervisor)直接安裝到幹凈的x86系統上,裸金屬架構相對於寄居架構效率更高,且具有更好的可擴展性、健壯性和性能。
企業級服務器虛擬化都是裸金屬架構(效率更高),像主流的企業級服務器虛擬化ESXi、KVM、Xen、Hyper-v都是裸金屬架構。
*有點特殊的裸金屬KVM
KVM
通常所說的KVM實際上是KVM和qemu兩種技術的結合,qemu本身是一種完整的寄居架構,采用二進制翻譯的方式虛擬化CPU,KVM則采用效率更高的硬件輔助虛擬化CPU。由於KVM只能虛擬化CPU、內存,其它硬件(網卡、硬盤)的虛擬化則是由qemu來負責。qemu是寄居架構,自然工作在用戶空間,通俗來講就是qemu以軟件的形式工作在Linux上。
KVM就相當於“給內核的一個補丁”,將Linux內核轉換為hypervisor,這樣看來KVM-QEMU的hypervisor既有寄居(qemu)又有裸金屬(kvm),算是比較特殊的裸金屬。
Tips:以CentOS系統部署KVM為例,僅簡單體驗KVM可以通過yum安裝。因為我們習慣了yum安裝各種軟件,這樣看起來KVM是yum安裝的“軟件”,應該屬於寄居架構,實際上KVM應該屬於裸金屬。舉個例子,升級操作系統也可以是通過yum(yum install kernel),很明顯升級操作系統不能認為是通過yum安裝kernel這個軟件。
參考文章:https://www.cnblogs.com/echo1937/p/7138294.html
yum部署KVM:
*有點特殊的裸金屬的Hyper-v和Xen
把他們放在一起是因為他們都有一個非常相似的概念,Hyper-v叫做父分區、Xen叫做Domain 0 。Hyper-v是Windows Server的一個功能,沒有開啟的時候Windows Server就是普通的x86服務器結構。Xen需要部署在Linux系統上,沒有部署的時候也是普通的x86服務器結構,未部署的時候兩者都可以用如下結構圖。
部署虛擬化之後,兩者非常相似。同樣是硬件位於最底層,hypervisor則分別是Xen和Hyper-v。對於Xen來說原來的Linux將使用Xen內核運行在Domain 0,對於Hyper-v來說,Windows Server運行在父分區,他們都相當各自的於第一臺虛擬機,並且擁有部分物理硬件直接權限,之後的Domain 1、子分區1等上的虛擬機的虛擬硬件功能則是由Hypervisor和Domai 0、父分區共同提供的。
部署Hyper-v:
部署Xen:
硬件輔助虛擬化/軟件輔助虛擬化
通常根據CPU虛擬化的方式劃分為硬件輔助虛擬化、軟件輔助虛擬化,軟件輔助虛擬化(或者說叫仿真虛擬化)是通過優先級壓縮或者二進制代碼翻譯,硬件輔助虛擬化則是使用intel vt-x或者AMD-v等硬件技術。
軟件輔助虛擬化參考文章:https://www.cnblogs.com/echo1937/p/7222606.html
硬件服務虛擬化參考文章:
現在主流的企業級服務器虛擬化都是采用硬件輔助虛擬化技術(intel vt-x或AMD-v),KVM和Hyper-v僅支持硬件輔助虛擬化(不支持軟件輔助虛擬化),ESXi、Xen和VMware workstation都是兩者都支持,不過現在沒理由不使用硬件輔助虛擬化。
Tips:現在不單是CPU有硬件輔助虛擬化,網卡和芯片組也有硬件輔助虛擬化。比如以Intel VT虛擬化技術就包括分別針對處理器、芯片組、網絡的IntelVT-x、IntelVT-d和IntelVT-c技術。不過劃分標準還是根據CPU虛擬化的方式決定的。
全虛擬化/半(準)虛擬化
至少從現在(2018)來看,主流企業級服務器虛擬化都是全虛擬化技術,Xen本就日薄西山,若要使用其半虛擬化模式(Xen也支持全虛擬化),其創建的虛擬機要使用定制內核的Linux,Windows由於未開源,不支持半虛擬化,這樣用戶量肯定是較少的。
本節的參考文章從CPU虛擬化的角度,介紹了全虛擬化和半虛擬化的區別。
參考文章: https://baijiahao.baidu.com/s?id=1588195141957451187&wfr=spider&for=pc
兩種虛擬化的實質區別就是操作系統能否意識到自己是虛擬機,對於全虛擬化虛擬來說:
全虛擬化操作系統:“CPU你去幫我算一下這個!”
vCPU:“好的”
對於半虛擬化操作系統來說:
半虛擬化操作系統:“vCPU你去幫我算一下這個!”
vCPU:“好的”
Tips:半虛擬化涉及定制操作系統,安裝驅動等等,全虛擬化則是支持普通安裝在x86服務器上的操作系統。
小結
當前(2018)服務器虛擬化類型的概念已經很淡了,主流的企業級服務器虛擬化技術(ESXi、KVM、Hyper-v、Xen)都是裸金屬架構,雖然Xen和ESXi支持軟件輔助虛擬化,但一般情況下都會使用硬件虛擬化,至於KVM和Hyper-v更是只支持硬件虛擬化。僅有Xen還支持半虛擬化,但是Xen是使用率現在已經很低了。
各廠商服務器虛擬化類型已經趨於一致(裸金屬、硬件輔助、全虛擬化),所以在類型方面也不必過多糾結,所以在選擇服務器虛擬化技術的時候應該更多關註各種服務器虛擬化技術的性能、穩定性、成熟性等等。
附一張2017年5月企業級服務器虛擬化市場占有率的圖片,VMware使用的肯定是ESXi,微軟則是Hyper-v,華為、新華三都是基於開源的KVM二次開發的產品。
參考文章:http://virtual.51cto.com/art/201803/569228.htm
參考文章:https://blog.csdn.net/flyforfreedom2008/article/details/45113635
參考文章:http://www.ctiforum.com/forum/2012/02/forum12_0228.htm?2
服務器虛擬化技術簡介