Xen的起源與工作原理概述
如今,虛擬化市場上滿是各種不同的虛擬化解決方案。多年以來,VMware一直控制著基于i386的虛擬化市場。然而,現(xiàn)在的開源解決方案Xen也在迅速地擴張自己的市場。在本文中,TechTarget中國的特約虛擬化專家Sander van Vugt將介紹什么是Xen、它如何工作以及Xen如何與其它虛擬化解決方案一爭高下。
要理解Xen的虛擬化方法,首先你必須了解什么是虛擬化。在計算時代早期,虛擬化并不存在。那時,使用的是模擬(Emulation)。在模擬技術(shù)中,軟件程序模擬了計算機(硬件和軟件)的行為。模擬層與操作系統(tǒng)對話,而操作系統(tǒng)與計算機硬件對話。在模擬層中安裝的操作系統(tǒng)并不知道自己是被安裝在模擬環(huán)境下的,你可以按照常規(guī)的方法安裝操作系統(tǒng)。市場上有兩大開源的模擬器:QEMU和Bochs。
模擬技術(shù)最重要的特點之一是所有硬件都是模擬的,包括CPU。此外,還能在自己的架構(gòu)中運行為其它架構(gòu)開發(fā)的操作系統(tǒng)。不過,它也有一個缺點:虛擬完整的CPU要付出很大的性能代價。
在下一代中,虛擬化被帶到了一個更高的級別。在模擬層(負(fù)責(zé)被虛擬機器的指令翻譯)和硬件之間,不需要任何主機操作系統(tǒng)運行硬件上的虛擬機。虛擬機監(jiān)控器(也稱hypervisor或管理程序)被直接放在硬件之上運行。有了這種新型架構(gòu)之后,虛擬化變得更加高效。例如,VMware在VMware ESX中應(yīng)用了該架構(gòu),取得了巨大的成功。
在基于hypervisor的虛擬化中,有兩種實現(xiàn)方法。第一種,虛擬機器產(chǎn)生的所有指令都需要被翻譯成CPU能識別的指令格式,這會給hypervisor帶來大量的工作負(fù)荷。另一種方法(VMware ESX Server采用的就是這種方法)直接執(zhí)行大部分子機CPU指令,直接在主機物理CPU中運行指令,性能負(fù)擔(dān)很小。
在Xen使用的方法中,沒有指令翻譯。這是通過兩種方法之一實現(xiàn)的。第一,使用一個能理解和翻譯虛擬操作系統(tǒng)發(fā)出的未修改指令的CPU(此方法稱作完全虛擬化或full virtualization)。另一種,修改操作系統(tǒng),從而使它發(fā)出的指令最優(yōu)化,便于在虛擬化環(huán)境中執(zhí)行(此方法稱作準(zhǔn)虛擬化或paravirtualization)。
完全虛擬化與準(zhǔn)虛擬化
完全虛擬化(full virtualization)是虛擬一臺機器的一種方法。在此方法中,虛擬機與一個叫做虛擬機監(jiān)控器(VMM)的部件進行通信,而VMM則與硬件平臺進行通信。要在Xen中利用完全虛擬化方法,需要一個特殊的CPU,此CPU能理解虛擬操作系統(tǒng)發(fā)出的未修改指令。如果沒有這樣的特殊CPU功能,是不可能在Xen中使用完全虛擬化的。這是因為,在Xen方法中不是每條虛擬操作系統(tǒng)發(fā)出的指令都可以被翻譯為每個CPU都能識別的格式,因為這非常耗費資源。完全虛擬化的主要優(yōu)勢在于,它安裝了一個未修改的操作系統(tǒng),這意味著運行于同樣架構(gòu)的所有操作系統(tǒng)都可以被虛擬化。
效率最高的虛擬化方法是準(zhǔn)虛擬化(paravirtualization)。在準(zhǔn)虛擬化中,子操作系統(tǒng)使用一個專門的API與VMM通信,VMM則負(fù)責(zé)處理虛擬化請求,并將這些請求遞交到硬件上。由于有了這個特殊的API,VMM不需去做耗費資源的指令翻譯工作。而且,使用準(zhǔn)虛擬化API時,虛擬操作系統(tǒng)能夠發(fā)出更有效的指令。然而,準(zhǔn)虛擬化也有一個缺點,就是需要修改包含這個特殊API的操作系統(tǒng)。而且,這個缺點對于某些操作系統(tǒng)(主要是Windows)來說更要命,因為它們沒有這種API。
現(xiàn)在,準(zhǔn)虛擬化是獲得最佳性能的方法,因為虛擬操作系統(tǒng)發(fā)出的指令不需要翻譯。遺憾的是,在某些操作系統(tǒng)中不能完全使用準(zhǔn)虛擬化,因為它需要一個特殊版本的操作系統(tǒng)。在這樣環(huán)境下,為了確保高性能,可以準(zhǔn)虛擬化個別的設(shè)備。這意味著,可以通過硬件虛擬化來處理某些指令(如,CPU發(fā)出的指令)。不過,有些特殊設(shè)備發(fā)出的指令(如,network board或graphical interface card)在離開虛擬機之前可以通過準(zhǔn)虛擬化驅(qū)動被修改。有些廠商提供專門操作系統(tǒng)的準(zhǔn)虛擬化驅(qū)動包,這些驅(qū)動包經(jīng)常可以單獨購買。通常,這些專門的驅(qū)動包都物有所值,能夠大大地提高設(shè)備性能,如網(wǎng)板(network board)和硬盤。
Xen虛擬化方法
在Xen環(huán)境中,主要有兩個組成部分。一個是虛擬機監(jiān)控器(VMM),也叫hypervisor。Hypervisor層在硬件與虛擬機之間,是必須最先載入到硬件的第一層。Hypervisor載入后,就可以部署虛擬機了。在Xen中,虛擬機叫做“domain”。在這些虛擬機中,其中一個扮演著很重要的角色,就是domain0,具有很高的特權(quán)。通常,在任何虛擬機之前安裝的操作系統(tǒng)才有這種特權(quán)。
Domain0要負(fù)責(zé)一些專門的工作。由于hypervisor中不包含任何與硬件對話的驅(qū)動,也沒有與管理員對話的接口,這些驅(qū)動就由domain0來提供了。通過domain0,管理員可以利用一些Xen工具來創(chuàng)建其它虛擬機(Xen術(shù)語叫domainU)。這些domainU也叫無特權(quán)domain。這是因為在基于i386的CPU架構(gòu)中,它們絕不會享有最高優(yōu)先級,只有domain0才可以。
在domain0中,還會載入一個xend進程。這個進程會管理所有其它虛擬機,并提供這些虛擬機控制臺的訪問。在創(chuàng)建虛擬機時,管理員使用配置程序與domain0直接對話。(在本系列的第二部分,我們將探討如何使用配置程序。)
Xen與其它開源項目
使用Xen時,開源項目與其它項目的一些差異有時會讓人感到迷惑。Xen起源于英國的劍橋大學(xué)計算機實驗室,該實驗室開發(fā)了Xen開源項目。這個項目包括虛擬機監(jiān)控器,即Xen環(huán)境的核心組成部分。除了劍橋大學(xué)的科學(xué)家以外,很多其它IT領(lǐng)域集團也都參與了Xen開源項目,其中包括IBM、AMD、HP、Red Hat和Novell。
由于Xen方法使虛擬化領(lǐng)域邁出了一大步,因此Xen的創(chuàng)始人成立了他們自己的公司XenSource(最近被Citrix收購)。他們成立XenSource的目的是為了基于Xen hypervisor而提供一個完善的虛擬化解決方案,與其它虛擬化產(chǎn)品(如VMware ESX)競爭。其它企業(yè)也在它們自己的產(chǎn)品中綜合應(yīng)用了Xen hypervisor。例如,Linux廠商Red Hat和Novell公司都在自己的操作系統(tǒng)中包含了各自版本的Xen。由于Xen的大多數(shù)部分都是開源的,所以這些解決方案都非常相似。
原文:http://www.searchsv.com.cn/showcontent_13689.htm?lg=t
【編輯推薦】