IaaS關(guān)鍵實(shí)現(xiàn)技術(shù)之服務(wù)器虛擬化
服務(wù)器虛擬化概述
在服務(wù)器虛擬化技術(shù)中,被虛擬出來的服務(wù)器稱為虛擬機(jī)(Virtual Machine,VM)。運(yùn)行在虛擬機(jī)里的操作系統(tǒng)稱為客戶操作系統(tǒng),即Guest OS。負(fù)責(zé)管理虛擬機(jī)的軟件稱為虛擬機(jī)管理器,縮寫為VMM,也稱為Hypervisor。
服務(wù)器虛擬化通常有兩種架構(gòu),分別是寄生架構(gòu)(Hosted)與裸金屬架構(gòu)(Bare-metal)。
(1)寄生架構(gòu)。
一般而言,在使用計(jì)算機(jī)之前,首先要安裝操作系統(tǒng),該操作系統(tǒng)稱為宿主操作系統(tǒng),即Host OS。如果采用虛擬機(jī)技術(shù),則需要在操作系統(tǒng)之上再安裝一個(gè)VMM,然后利用這個(gè)VMM創(chuàng)建并管理虛擬機(jī)。這種后裝模式稱為寄生架構(gòu),因?yàn)閂MM看起來像是“寄生”在操作系統(tǒng)上的。例如,Oracle公司的VirtualBox就是一種寄生架構(gòu)。
(2)裸金屬架構(gòu)。
顧名思義,裸金屬架構(gòu)是指將VMM直接安裝在物理服務(wù)器之上而無須先安裝操作系統(tǒng)的預(yù)裝模式。在安裝了VMM之后,再在VMM上安裝其他操作系統(tǒng)(如Windows、Linux等)。由于VMM“看起來”是直接安裝在物理計(jì)算機(jī)上的,所以稱為裸金屬架構(gòu),例如KVM、Xen、VMware ESX。
目前,普遍認(rèn)為裸金屬架構(gòu)的性能要比寄生架構(gòu)高。很多資料都宣傳說,裸金屬架構(gòu)是直接運(yùn)行在物理硬件之上的,無須通過Host OS,所以性能更高。
圖3-1為Xen的工作流程,其中有3個(gè)Domain。一開始,很多人會(huì)將Domain誤認(rèn)為是CPU的一種特殊狀態(tài),這是因?yàn)樵诤芏辔臋n里會(huì)用一些比較模糊的措辭,例如“此時(shí),系統(tǒng)會(huì)進(jìn)入Domain 0狀態(tài)”,從而讓人產(chǎn)生誤解。其實(shí),Domain在虛擬化技術(shù)里表示的不是CPU的狀態(tài),而是“域”,更通俗地說,就是一臺(tái)虛擬機(jī)。
雖然從圖3-1上看,Xen是運(yùn)行在硬件之上的,但實(shí)際上,Xen嚴(yán)重依賴于一個(gè)特殊的Domain,那就是Domain 0。其實(shí),Xen在發(fā)布其裸金屬版本的時(shí)候,里面就包含了一個(gè)裁剪過的Linux內(nèi)核,它為Xen提供了除CPU調(diào)度和內(nèi)存管理之外的所有功能,包括硬件驅(qū)動(dòng)、I/O、網(wǎng)絡(luò)協(xié)議、文件系統(tǒng)、進(jìn)程通信等所有其他操作系統(tǒng)所做的事情。這個(gè)Linux內(nèi)核就運(yùn)行在Domain 0 里面。這就是為什么當(dāng)啟動(dòng)裸金屬架構(gòu)版的Xen時(shí)會(huì)自動(dòng)啟動(dòng)Domain 0。因?yàn)闆]有這個(gè)Linux內(nèi)核,Xen將無法工作。事實(shí)上,基于裸金屬架構(gòu)的VMM中往往包含了一個(gè)經(jīng)過修改的Host OS。
圖3-1 Xen的工作流程
因此,裸金屬架構(gòu)其實(shí)并不說明VMM能夠拋開Host OS在硬件之上運(yùn)行。如果我們把圖3-1中的Domain 0放到與Xen Hypervisor平級(jí)的位置,或者放到Xen Hypervisor下面,Domain 0就與寄生架構(gòu)沒有區(qū)別了,如圖3-2所示。而事實(shí)上,即使是寄生架構(gòu)的產(chǎn)品,例如VirtualBox,在Host OS里面也會(huì)有一個(gè)運(yùn)行于核心的驅(qū)動(dòng)程序,它可以直接與物理設(shè)備打交道。
如果仔細(xì)看圖3-2,會(huì)發(fā)現(xiàn)Domain 1和Domain 2與Domain 0之間還有一些通信。這與傳統(tǒng)的寄生架構(gòu)一樣,Guest OS有時(shí)也是需要訪問Host OS的。所以,裸金屬架構(gòu)本身不會(huì)給Guest OS的性能帶來任何提升。
從目前的趨勢(shì)來看,虛擬化將成為操作系統(tǒng)本身功能的一部分。例如,KVM就是Linux標(biāo)準(zhǔn)內(nèi)核的一個(gè)模塊,微軟的Windows 2008也自帶Hyper-V。
圖3-2 寄生架構(gòu)