DPDK技術奠定了NFV領域數據包轉發(fā)性能提升的基礎,那么軟硬件解耦后,在通用服務器上實現(xiàn)各功能網元,資源層面的隔離和共生問題就是需要虛擬化技術來解決。虛擬化使用軟件的方法重新定義劃分IT資源,可以實現(xiàn)IT資源的動態(tài)分配、靈活調度、跨域共享,提高IT資源利用率,使IT資源能夠真正成為社會基礎設施,服務于各行各業(yè)中靈活多變的應用需求。
1、什么是虛擬化
坦白地說,虛擬化就是欺騙。隨著個人計算機的普及,“虛擬化”這個廣泛使用的術語已經脫離了其技術本身,成為一種共同語言、流行文化和理念。自20世紀90年代互聯(lián)網熱潮的早期,任何與Web相關的活動均被稱為“虛擬”,通過菲利浦•狄克的科幻小說、讓•鮑德里亞的后現(xiàn)代主義研究,以及電影(如《黑客帝國》和《盜夢空間》)的影響,模擬現(xiàn)實的概念已經深入人心。
在技術領域,虛擬化是指利用“欺騙”技術將一臺計算機虛擬為多臺邏輯計算機。在一臺計算機上同時運行多個邏輯計算機,每個邏輯計算機可運行不同的操作系統(tǒng),并且應用程序都可以在相互獨立的空間內運行而互不影響,從而顯著提高計算機的工作效率。
傳統(tǒng)構架是在每臺物理機器上僅能擁有一個操作系統(tǒng),而且多數情況下僅有一個負載。很難在服務器上運行多個主應用程序,因為如果這樣做,則可能會產生沖突和性能問題。實際上,當前計算的最佳做法是每個服務器僅運行一個應用程序以避免這些問題。但是,這么做的結果是大多數時間利用率很低。如前面所討論,我們浪費了所購買的大部分計算能力。您必須在浪費硬件和降低風險間尋找平衡。隨著業(yè)務的增長,隨之而來的成本壓力也變化,相關管理效率也會變低,需消耗的資源也會變大。
企業(yè)實施虛擬化戰(zhàn)略的核心目的就是提高IT部門作為業(yè)務支撐部門的工作效率,達到節(jié)約成本與提高效率并重的目的。虛擬化的重要使命之一就是提高管理效率,從而降低成本、提高硬件使用率,把管理變得更加輕松。虛擬化的主攻方向集中在減少實體服務器的部署數量,并將實體機器上的操作系統(tǒng)及應用程序,無縫轉移至虛擬機器上,以便集中管理這些不同平臺的虛擬環(huán)境。
傳統(tǒng)構架下,APP:OS:Phy = 1:1:1。這樣子就造成資源利用率低,為不造成資源浪費,會增加APP部署。進而產生的影響就是不同應用之間的資源搶占,隔離性差。而OS主要提供應用運行的環(huán)境,在資源調度方面相對薄弱,不能完全有效解決以上問題。
為在不造成沖突的前提下提高資源利用率,最好是在一個OS上部署一個APP,于是就出現(xiàn)了虛擬化的技術。在一臺主機上部署多個虛擬客戶機并安裝OS,每個OS安裝一個APP,這樣就解決了問題。APP:OS:Phy = n:n:1。
虛擬化之后實現(xiàn)了上層操作系統(tǒng)與下層硬件的解耦,就是說操作系統(tǒng)不再依賴物理的硬件,而是在VMM層上建立OS,由VMM層來實現(xiàn)OS對硬件的需求。
1.1 虛擬化的幾個重要概念
宿主機(Host Machine):指物理機資源,被Hypervisor用來執(zhí)行一個或多個虛擬機器的電腦稱為主機。
客戶機(Guest Machine):指虛擬機資源,在Hypervisor之上運行多個虛擬機器則稱為客戶機。
Guest OS和Host OS:如果將一個物理機虛擬成多個虛擬機,則稱物理機為Host Machine,運行在其上的OS為Host OS;多個虛擬機稱為Guest Machine,運行在其上的OS為Guest OS。
Hypervisor:通過虛擬化層的模擬,虛擬機在上層軟件看來就是一個真實的機器,這個虛擬化層一般稱為虛擬機監(jiān)控機(Virtual Machine Monitor,VMM)。需要注意一點:在VMware的ESX虛擬化架構中VMM只是Hypervisor中一個進程,因此在這種場景下VMM不等于Hypervisor。
2、什么是Hypervisor(VMM)
維基百科的定義如下:Hypervisor,又稱虛擬機器監(jiān)視器(英語:virtual machine monitor,縮寫為 VMM),是用來建立與執(zhí)行虛擬機器的軟件、固件或硬件。
通俗的講:hypervisor是一種運行在物理服務器和操作系統(tǒng)之間的中間層軟件,可以允許多個操作系統(tǒng)和應用共享一套基礎物理硬件。可以將hypervisor看做是虛擬環(huán)境中的“元”操作系統(tǒng),可以協(xié)調訪問服務器上的所有物理設備和虛擬機,所以又稱為虛擬機監(jiān)視器(virtual machine monitor)。
hypervisor是所有虛擬化技術的核心,非中斷的支持多工作負載遷移是hypervisor的基本功能。當服務器啟動并執(zhí)行hypervisor時,會給每一臺虛擬機分配適量的內存,cpu,網絡和磁盤資源,并且加載所有虛擬機的客戶操作系統(tǒng)。當前主流的Hypervisor有微軟的Hyper-V,VMware、Xen和KVM,但在電信云NFV領域主要用到的就是KVM,在后續(xù)虛擬化技術分類中,會專門講解KVM的相關部署和優(yōu)化,同時為加深大家對KVM的理解,也會講 一點Xen的知識,畢竟在KVM廣泛應用之前,云架構底層的虛擬化技術都是Xen。
2.1 虛擬化和hypervisor到底什么關系?
虛擬化就是通過某種方式隱藏底層物理硬件的過程,從而讓多個操作系統(tǒng)可以透明地使用和共享它。這種架構的另一個更常見的名稱是平臺虛擬化。在典型的分層架構中,提供平臺虛擬化的層稱為 hypervisor (有時稱為虛擬機管理程序 或 VMM)。來賓操作系統(tǒng)稱為虛擬機(VM),因為對這些 VM 而言,硬件是專門針對它們虛擬化的。如下圖示:
在上圖中可以看到,hypervisor 是提供底層機器虛擬化的軟件層(在某些情況下需要處理器支持)。并不是所有虛擬化解決方案都是一樣的(詳見Hypervisor分類部分)??蛻魴C操作系統(tǒng)(GuestOS)對機器的底層資源的訪問通過VMM來實現(xiàn)。hypervisor 面對的對象不是客戶機中的進程,而是整個客戶操作系統(tǒng)(GuestOS)。
hypervisor主要可以劃分為兩大類:類型1和類型2,以及在此基礎上的混合類型和操作系統(tǒng)類型。
類型1:這種hypervisor是可以直接運行在物理硬件之上的。也就是說它不需要宿主機操作系統(tǒng)(HostOS)的支持,本身就可以管理底層硬件的資源,其本質是在Hypervisor中嵌入了一個精簡的Linux操作系統(tǒng)內核。Xen 和 VMWare 的 ESXi 都屬于這個類型,這種虛擬化類型的模型如下圖所示,其特點就是需要硬件的支持,轉發(fā)性能強(因為少了HostOS這一層轉發(fā)),VMM就是HostOS。
類型2:這種hypervisor運行在另一個操作系統(tǒng)(運行在物理硬件之上)中。也就是說這種類型的Hypervisor是部署在HostOS之上的,從HostOS角度來看,其上層的所有VM都對應Hypervisor這一個進程。從VM的角度來看,其訪問底層硬件資源需要Hypervisor和HostOS共同配合完成。KVM、VirtualBox 和 VMWare Workstation 都屬于這個類型。這種虛擬化類型的模型如下圖所示,其特點就是比較靈活,比如支持虛擬機嵌套(嵌套意味著可以在虛擬機中再運行hypervisor),但是轉發(fā)性能明顯不如類型1。
目前,隨著轉發(fā)性能提升需求和應用的微服務化架構需求,在類型2的基礎上又演進出混合類型虛擬化和基于HostOS的操作系統(tǒng)虛擬化。
混合虛擬化:通過在主機的操作系統(tǒng)中增加虛擬硬件管理模塊,通過虛擬硬件管理模塊來生成各個虛擬機。屬于類型2虛擬化的一種增強模型。特點是相對于類型2虛擬化,沒有冗余,性能高,可支持多種操作系統(tǒng)。但是,需要底層硬件支持虛擬化擴展功能?,F(xiàn)階段的KVM和Hyper-V都屬于這種增強型類型2虛擬化技術。
操作系統(tǒng)虛擬化:沒有獨立的hypervisor層。相反,主機操作系統(tǒng)本身就負責在多個虛擬服務器之間分配硬件資源,并且讓這些服務器彼此獨立。最重要的前提是:如果使用操作系統(tǒng)層虛擬化,所有虛擬服務器必須運行同一操作系統(tǒng)(不過每個實例有各自的應用程序和用戶賬戶),其本質就是操作系統(tǒng)上面應用程序的一個進程,主要在應用的微服務化架構場景中使用。特點是:簡單、易于實現(xiàn),管理成本非常低。但是,隔離性差,多個虛擬化實例共享同一個操作系統(tǒng)。最典型就是目前炙手可熱的容器技術Docker和Virtuozzo。
3、虛擬化的特征和優(yōu)勢
從前面描述可知,虛擬化技術就是一個“大塊的資源”邏輯分割成“具有獨立功能的小塊資源”,這個功能通過Hypervisor來實現(xiàn)。對于服務器領域而言,通過Hypervisor將一個物理服務器虛擬化成若干個小的邏輯服務器,每個邏輯服務器具有與物理服務器相同的功能,所有邏輯服務器的資源總和等于物理服務器的全部資源。
因此,運行在Hypervisor上的邏輯服務器,其本質就是由物理服務器上一個個文件組成。相對物理服務器,天生具備分區(qū)、隔離、封裝和相對硬件獨立四大特征。
1)分區(qū):在單一物理服務器同時運行多個虛擬機。分區(qū)意味著虛擬化層為多個虛擬機劃分服務器資源的能力;每個虛擬機可以同時運行一個單獨的操作系統(tǒng)(相同或不同的操作系統(tǒng)),使您能夠在一臺服務器上運行多個應用程序。每個操作系統(tǒng)只能看到虛擬化層為其提供的“虛擬硬件”(虛擬網卡、CPU、內存等),以使它認為運行在自己的專用服務器上。
2)隔離:在同一服務器虛擬機之間相互隔離。虛擬機是互相隔離的。例如:一個虛擬機的崩潰或故障(例如,操作系統(tǒng)故障、應用程序崩潰、驅動程序故障,等等)不會影響同一服務器上的其它虛擬機;一個虛擬機中的病毒、蠕蟲等與其它虛擬機相隔離,就像每個虛擬機都位于單獨的物理機器上一樣??梢酝ㄟ^資源控制以提供性能隔離,比如:可以為每個虛擬機指定最小和最大資源使用量,以確保某個虛擬機不會占用所有的資源而使得同一系統(tǒng)中的其它虛擬機無資源可用;可以在單一機器上同時運行多個負載/應用程序/操作系統(tǒng),而不會出現(xiàn)因為傳統(tǒng) x86 服務器體系結構的局限性發(fā)生DLL沖突等問題。
3)封裝:整個虛擬機都保存在文件中,可以通過移動文件的方式來遷移虛擬機。封裝意味著將整個虛擬機(硬件配置、BIOS 配置、內存狀態(tài)、磁盤狀態(tài)、CPU 狀態(tài))儲存在獨立于物理硬件的一小組文件中。這樣,只需復制幾個文件就可以隨時隨地根據需要復制、保存和移動虛擬機。
4)相對硬件獨立:無需修改即可在任意服務器上運行(主要基于全虛技術的虛擬機,半虛技術的虛擬機只支持開源操作系統(tǒng),如Linux)。因為虛擬機運行于虛擬化層之上,所以只能看到虛擬化層提供的虛擬硬件,無需關注物理服務器的情況。這樣,虛擬機就可以在任何 x86 服務器(IBM、Dell、HP等)上運行而無需進行任何修改。這打破了操作系統(tǒng)和硬件以及應用程序和操作系統(tǒng)/硬件之間的約束。
同時,由于Hypervisor的存在,使得虛擬機又具備同質、高效和資源受控的3個特點。
1)同質 (Equivalence),即VM的運行環(huán)境和物理機的環(huán)境在本質上是相同的,表現(xiàn)上可以有一些差異。如CPU的ISA必須一致(實際可以不一致),CPU core的個數可以不同。
2)高效 (Efficiency),即VM的性能必須接近物理機。因此,常見的模擬器 (boches, simics ...) 就不能稱為VM。為達此目的,軟件在 VM 上運行時,大多數指令要直接在硬件上執(zhí)行,只有少量指令需要 VMM 的模擬或處理。
3)資源受控 (Resource control),即Hypervisor對物理機的所有資源有絕對的控制力。
物理資源在經過Hypervisor虛擬化后,在資源利用率、獨立性、運行效率和安全性等方面與傳統(tǒng)物理服務器相比均有不同的優(yōu)勢。
1)資源利用率:虛擬化前每臺主機一個操作系統(tǒng),系統(tǒng)的資源利用率低。虛擬化后,主機與操作系統(tǒng)不一一對應,按需分配使用,系統(tǒng)的資源利用率高。
2)獨立性:虛擬化前軟硬件緊密結合,硬件成本高昂且不夠靈活。虛擬化后,操作系統(tǒng)和硬件不相互依賴,虛擬機獨立于硬件,能在任何硬件上運行。
3)程序運行效率:虛擬化前同一臺主機上同時運行多個程序容易產生沖突,運行效率較低。虛擬化后,操作系統(tǒng)和應用程序被封裝成單一個體,不同個體間不沖突。同一臺機器上運行多個程序,效率高。
4)安全性:虛擬化前,故障影響范圍大,安全性較差。虛擬化后,通過資源的池化,有強大的安全和故障隔離機制。
4、虛擬化技術的發(fā)展
最近幾年,隨著云計算技術廣泛應用,虛擬化技術也被大家所關注。其實,虛擬化技術的出現(xiàn)要早于云計算技術約半個世紀。在上世紀60年代,虛擬化技術就已經在大型機上有所應用,在1999年小型機上出現(xiàn)邏輯分區(qū)的概念,這就是存儲虛擬化的雛形。而到了2000年,在x86平臺上VMware首先提出了平臺虛擬化技術的概念,以及后續(xù)隨著CPU速度越來越快,Intel和AMD分別在CPU指令架構中引入虛擬化指令,在服務器領域和數據中心范圍內虛擬化技術得到的極大發(fā)展,從而催生了云計算技術的出現(xiàn)??梢哉f,虛擬化技術是云計算技術得以實現(xiàn)并推廣落地的重要基石,同時,隨著云計算技術的演進,虛擬化技術也同樣在不斷演進,從最早的計算虛擬化發(fā)展到目前的應用虛擬化,兩者是一種相輔相成,螺旋式推進的關系。
云計算技術從誕生到當前,共經歷了3個階段,分別稱為云計算1.0、云計算2.0和云計算3.0,在不同的階段,虛擬化技術的表現(xiàn)形式和關注點也不相同,兩者關系如下圖所示:
在云計算1.0時代,主要是將傳統(tǒng)IT硬件基礎設施轉換為虛擬化基礎設施,來提升資源利用率。該階段的關鍵特征體現(xiàn)為:通過計算虛擬化技術的引入,將企業(yè)IT應用與底層的基礎設施徹底分離解耦,將多個企業(yè)IT應用實例及運行環(huán)境(客戶機操作系統(tǒng),GuestOS)復用在相同的物理服務器上,并通過虛擬化集群調度軟件,將更多的IT應用復用在更少的服務器節(jié)點上,從而實現(xiàn)資源利用效率的提升。
在云計算2.0時代,主要是向云租戶提供池化資源服務和精細化自動管理,推動企業(yè)業(yè)務的云化演進。該階段的關鍵特征體現(xiàn)為:不僅通過計算虛擬化完成CPU、內存、裸金屬服務器等池化資源的集中管理和自動調度,同時引入存儲虛擬化和網絡虛擬化技術,實現(xiàn)數據中心內部存儲資源和網絡資源的池化集中管理和統(tǒng)一調度。面向內部和外部的租戶,將原本需要通過數據中心管理員人工干預的基礎設施資源復雜低效的申請、釋放與配置過程,轉變?yōu)橐绘I式全自動化資源發(fā)放服務過程。這個階段大幅提升了企業(yè)基礎設施資源的快速敏捷發(fā)放能力,縮短了基礎設施資源準備周期,實現(xiàn)資源的按需彈性供給。為企業(yè)核心業(yè)務走向敏捷,更好地應對瞬息萬變的競爭與發(fā)展奠定了基礎。云計算2.0階段面向云租戶的基礎設施資源服務供給,可以是虛擬機形式,可以是容器(輕量化虛擬機),也可以是物理機形式。該階段的企業(yè)云化演進,暫時還不涉及基礎設施層之上的IT應用與中間件、數據庫軟件架構的變化。
在云計算3.0時代,面向應用開發(fā)者及管理維護者提供分布式微服務化應用架構和大數據智能化服務。
該階段的關鍵特征體現(xiàn)為:企業(yè)IT應用架構逐步開始去IOE化,依托開源增強、跨不同業(yè)務應用領域高度共享的數據庫、中間件平臺服務層以及功能更加輕量化解耦、數據與應用邏輯徹底分離的分布式無狀態(tài)化架構,從而實現(xiàn)支撐企業(yè)業(yè)務敏捷化、智能化以及資源利用效率提升。
5、數據中心內部虛擬化技術分類
目前,在數據中心內虛擬服務器、虛擬網絡、虛擬存儲、虛擬設備和其他“虛擬技術”等已對傳統(tǒng)基礎設施產生了逆襲。在上述云計算的三個階段,使得虛擬化技術和云計算技術得到極大發(fā)展的關鍵就是2.0時代,主要的特征就是從計算虛擬化走向存儲虛擬化和網絡虛擬化。
從支撐云計算按需、彈性分配資源,與硬件解耦的虛擬化技術的角度來看,云計算早期階段主要聚焦在計算虛擬化領域。事實上,計算虛擬化技術早在IBM 370時代就已經在其大型機操作系統(tǒng)上誕生。技術原理是通過在OS與裸機硬件之間插入虛擬化層,來在裸機硬件指令系統(tǒng)之上仿真模擬出多個370大型機的“運行環(huán)境”,使得上層“誤認為”自己運行在一個獨占系統(tǒng)之上,實際上是由計算虛擬化引擎在多個虛擬機之間進行CPU分時調度,同時對內存、I/O、網絡等訪問也進行訪問屏蔽。
后來,當x86平臺演進成為在IT領域硬件平臺的主流之后,VMware ESX、XEN、KVM等依托于單機OS的計算虛擬化技術才將IBM 370的虛擬化機制在x86服務器的硬件體系架構下實現(xiàn),并且在單機/單服務器虛擬化的基礎上引入了具備虛擬機動態(tài)遷移和HA調度能力的中小集群管理軟件,比如:VMware的vCenter/vSphere、Citrix的XEN Center和華為的FusionSphere等,從而形成當前的計算虛擬化主體。
與此同時,作為數據信息持久化載體的存儲已經逐步從服務器計算中剝離出來,與必不可少的CPU計算能力一樣,在數據中心發(fā)揮著至關重要的作用?,F(xiàn)在數據中心內部不再封閉,內部服務器互訪和對外部互聯(lián)網訪問需求,使得存儲和網絡也同計算一樣,成為數據中心IT基礎設施不可或缺的“三大要素”。就數據中心端到端基礎設施解決方案而言,不僅需要計算資源的按需分配、彈性伸縮、與硬件解耦的需求,對存儲資源和網絡資源需求同樣如此,因此,存儲虛擬化和網絡虛擬化技術應運而生。
對于普通x86服務器來說,CPU和內存資源虛擬化后再將其以vCPU/vMemory的方式,按需供給用戶/租戶使用。計算計算虛擬化中僅存在資源池的“大分小”的問題。然而對于存儲來說,由于硬盤的容量有限,而客戶/租戶對數據容量的需求越來越大,因此必須對數據中心內多個分布式服務器存儲資源,比如:服務器內的存儲資源、外置SAN/NAS等進行“小聚大”的整合,組成存儲資源池。這個存儲資源池,可能是單一廠家提供的同構資源池,也可以是被存儲虛擬化層整合成為跨多廠家異構的統(tǒng)一資源池。各種存儲資源池均能以統(tǒng)一的塊存儲、對象存儲或者文件存儲格式進行訪問。數據存儲虛擬化示意圖如下所示:
對于數據中心網絡來說,網絡對于業(yè)務應用,作為連接服務器節(jié)點的計算和存儲資源是一種實實在在的資源需求。傳統(tǒng)數據中心內部,網絡交換功能都是在物理交換機和路由器設備上完成的,網絡功能對上層業(yè)務應用而言僅僅體現(xiàn)為一個一個被通信鏈路連接起來的孤立的“盒子”,無法動態(tài)感知來自上層業(yè)務的網絡功能需求,完全需要人工配置的方式來實現(xiàn)對業(yè)務層網絡組網與安全隔離策略的需要。
在云時代多租戶虛擬化的環(huán)境下,不同租戶對于邊緣的路由及網關設備的配置管理需求也存在極大的差異化,即使物理路由器和防火墻自身的多實例能力也無法滿足云環(huán)境下租戶數量的要求,如果采用與租戶數量等量的路由器與防火墻設備,成本上無法接受。于是,伯克利大學的Nick Mckeown教授提出將網絡自身的功能從專用封閉平臺遷移到服務器通用x86平臺上來,SDN概念從此誕生。
網絡資源虛擬化后,服務器節(jié)點的應用VM連接差異化,就可由云操作系統(tǒng)來自動化地創(chuàng)建和銷毀,并通過一次性建立起來的物理網絡連接矩陣,進行任意兩個網絡端節(jié)點之間的虛擬通訊鏈路建立,以及必要的安全隔離保障,從而實現(xiàn)業(yè)務驅動的網絡自動化管理配置,大幅度降低數據中心網絡管理的復雜度。從資源利用率來看,任意兩個虛擬網絡節(jié)點之間的流量帶寬,都需要通過物理網絡來交換和承載,只要不超過物理網絡的資源配額上限(一般建議物理網絡按照無阻塞的CLOS模式來設計實施),一旦虛擬節(jié)點被釋放,其所對應的網絡帶寬占用也將被同步釋放,因此也就相當于實現(xiàn)對物理網絡資源的最大限度的“網絡資源動態(tài)共享”。通俗點講,網絡虛擬化讓多個盒子式的網絡實體第一次以一個統(tǒng)一整合的“網絡資源池”的形態(tài),出現(xiàn)在業(yè)務應用層面前,同時與計算和存儲資源之間,也有了統(tǒng)一協(xié)同機制。網絡虛擬化示意圖如下圖所示:
上面基礎設施虛擬化技術的“三要素”是電信云領域需要重點關注的三個分類,屬于云計算中IaaS服務部分的內容。
除此之外,還有基于PaaS和SaaS的桌面虛擬化技術,這部分內容因電信云領域目前不涉及,因此在本站的云計算分類中會有相關介紹,這里不再贅述。后續(xù),會在NFV關鍵技術分類中按照計算虛擬化、存儲虛擬化和網絡虛擬化三大部分逐一介紹,并會重點KVM的部署和性能調優(yōu)。