| 在研究和學(xué)習(xí)虛擬化技術(shù)的過(guò)程中看了很多文檔,很多是翻譯成中文的,對(duì)那些無(wú)私的為大家服務(wù)的貢獻(xiàn)者很是敬佩,同時(shí)也觸發(fā)了我為大家做些貢獻(xiàn)的愿望。事實(shí)上翻譯和整理的過(guò)程也是自己進(jìn)一步學(xué)習(xí)的過(guò)程。由于自己的水平有限,翻譯過(guò)程中的錯(cuò)誤歡迎大家批評(píng)指正。  開(kāi)源,很好! 概要 本文檔描述的是Xen hypervisor的宏觀體系結(jié)構(gòu)、輔助工具以及構(gòu)建一個(gè)完整虛擬化環(huán)境所需的應(yīng)用程序。本文的綜合介紹了基于Xen3.2(2008年1月)的Xen體系結(jié)構(gòu),更詳盡的描述請(qǐng)參考Xen books。 Xen組成要素 一個(gè)Xen虛擬化環(huán)境由以下相互配合的元素構(gòu)成: Xen Hypervisor Domain 0 Domain管理和控制工具 Domain U PV客戶系統(tǒng) Domain U HVM客戶系統(tǒng) 下面的圖形是對(duì)這些要素基本組織的描述   Xen Hypervisor Xen Hypervisor是一個(gè)介于硬件和操作系統(tǒng)之間的軟件層,它負(fù)責(zé)在各虛擬機(jī)之間進(jìn)行CPU調(diào)度和內(nèi)存分配(partitioning)。Xen Hypervisor不僅抽象出硬件層,同時(shí)控制虛擬機(jī)的執(zhí)行,因?yàn)檫@些虛擬機(jī)共享同一個(gè)處理環(huán)境。Xen Hypervisor不會(huì)處理網(wǎng)絡(luò)、存儲(chǔ)設(shè)備、視頻以及其他I/O。 Domain 0 Domain 0是一個(gè)修改過(guò)的Linux kernel,是唯一運(yùn)行在Xen Hypervisor之上的虛擬機(jī),它擁有訪問(wèn)物理I/O資源的權(quán)限,同時(shí)和系統(tǒng)上運(yùn)行的其他虛擬機(jī)進(jìn)行交互。Domain 0需要在其它Domain啟動(dòng)之前啟動(dòng)。 Domain 0中包含兩個(gè)驅(qū)動(dòng):Network Backend Driver和Block Backend Driver,分別負(fù)責(zé)處理來(lái)自Domain U的網(wǎng)絡(luò)和本地磁盤(pán)請(qǐng)求。Network Backend Driver直接和本地網(wǎng)絡(luò)硬件進(jìn)行通信以處理所有來(lái)自Domain U上客戶操作系統(tǒng)的網(wǎng)絡(luò)請(qǐng)求。Block Backend Driver和本地存儲(chǔ)設(shè)備進(jìn)行通信以處理來(lái)自Domain U的讀寫(xiě)請(qǐng)求。   Domain U 運(yùn)行在Xen Hypervisor上的所有半虛擬化(paravirtualized)虛擬機(jī)被稱為“Domain U PV Guests”,其上運(yùn)行著被修改過(guò)內(nèi)核的操作系統(tǒng),如Linux、Solaris、FreeBSD等其它UNIX操作系統(tǒng)。所有的全虛擬化虛擬機(jī)被稱為“Domain U HVM Guests”,其上運(yùn)行著不用修改內(nèi)核的操作系統(tǒng),如Windows等。 Domain U PV Guests的內(nèi)核知道它自己不能直接訪問(wèn)物理硬件,因?yàn)樗烙衅渌奶摂M機(jī)也運(yùn)行在同一個(gè)環(huán)境中。而Domain U HVM Guests的內(nèi)核不知道他正在和其他虛擬機(jī)共享一個(gè)處理環(huán)境,它認(rèn)為它運(yùn)轉(zhuǎn)在物理硬件上。 Domain U PV Guests包含兩個(gè)驅(qū)動(dòng):“PV Network Driver”和“PV Block Driver”。   Domain U HVM Guests虛擬機(jī)內(nèi)沒(méi)有PV Driver,而是在Domain 0里為每一個(gè)HVM Guest啟動(dòng)一個(gè)特殊守護(hù)進(jìn)程:Qemu-dm,由Qemu-dm負(fù)責(zé)客戶操作系統(tǒng)的網(wǎng)絡(luò)和磁盤(pán)請(qǐng)求。 Domain U HVM Guests必須進(jìn)行初始化為某類機(jī)器,所以要在Domain U上附加一個(gè)軟件:Xen虛擬固件,來(lái)模擬BIOS。關(guān)于Xen虛擬化固件的更多信息請(qǐng)參考后面的內(nèi)容。   域(Domain)管理和控制 開(kāi)源社區(qū)提供了一系列的域管理和控制工具(Linux守護(hù)程序)。這些服務(wù)運(yùn)行在Domain 0,他們支持所有對(duì)虛擬化環(huán)境的管理和控制,下面的幾個(gè)圖中為了更清楚的說(shuō)明將這些守護(hù)進(jìn)程畫(huà)在了Domain 0的外部。 Xend Xend是一個(gè)python應(yīng)用程序,它是Xen虛擬化環(huán)境的系統(tǒng)管理工具。它通過(guò)對(duì)libxenctrl庫(kù)的調(diào)用實(shí)現(xiàn)對(duì)Xen Hypervisor的請(qǐng)求。Xend處理的所有請(qǐng)求都是通過(guò)Xm工具提供的XML RPC接口提交的,見(jiàn)下圖。   Xm Xm是一個(gè)命令行工具,它接受用戶的輸入并把指令通過(guò)XML RPC傳輸給Xend。 Xenstored Xenstored維護(hù)一個(gè)信息檔案,包括內(nèi)存和建立在Domain 0與Domain U之間的事件通道。Domain 0通過(guò)改變這個(gè)檔案來(lái)設(shè)置和其他虛擬機(jī)的設(shè)備通道。(具體信息請(qǐng)參考Domain 0和Domain U的通信) Libxenctrl Libxenctrl是一個(gè)C語(yǔ)言的庫(kù),它為Xend提供與Xen Hypervisor通信的能力。privcmd是Domain 0中的一個(gè)特殊驅(qū)動(dòng),它負(fù)責(zé)提交請(qǐng)求到hypervisor。   Qemu-dm 每一個(gè)運(yùn)行在Xen虛擬化環(huán)境下的HVM客戶系統(tǒng)都有他自己的Qemu守護(hù)進(jìn)程。該進(jìn)程處理來(lái)自HVM客戶系統(tǒng)的所有網(wǎng)絡(luò)和磁盤(pán)請(qǐng)求,以支持Xen虛擬化環(huán)境下的全虛擬化。Qemu必須存在于Xen hypervisor之外,因?yàn)樗枰L問(wèn)網(wǎng)絡(luò)和I/O設(shè)備,所以他運(yùn)行在Domain 0 。 現(xiàn)在已經(jīng)有一個(gè)新的工具來(lái)代替Qemu對(duì)HVM客戶系統(tǒng)的支持,這就是Stub-dm。它是為Xen的將來(lái)版本開(kāi)發(fā)的,Xen3.2還不具備該特性,可能發(fā)布在Xen3.3中。 Xen虛擬化固件 Xen虛擬化固件是一個(gè)虛擬的BIOS,它被加載到每一個(gè)Domain U HVM Guest以提供標(biāo)準(zhǔn)的啟動(dòng)指令,保證客戶操作系統(tǒng)在正常啟動(dòng)過(guò)程中能得到標(biāo)準(zhǔn)的PC兼容的軟件環(huán)境。 Xen操作 這部分描述一個(gè)半虛擬化的Domain U如何通過(guò)Xen hypervisor、Domain 0 與外部的網(wǎng)絡(luò)以及存儲(chǔ)進(jìn)行通信的。 Domain 0與Domain U的通信 前面講到過(guò),Xen Hypervisor不會(huì)支持網(wǎng)絡(luò)和磁盤(pán)請(qǐng)求的,因此一個(gè)PV客戶系統(tǒng)必須通過(guò)和Xen Hypervisor、Domain 0通信,來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)和磁盤(pán)請(qǐng)求。下面這個(gè)例子描述了PV客戶系統(tǒng)如何將一個(gè)數(shù)據(jù)寫(xiě)到本地硬盤(pán)。 PV客戶系統(tǒng)的開(kāi)設(shè)備驅(qū)動(dòng)程序接收到一個(gè)寫(xiě)請(qǐng)求,并且通過(guò)Xen Hypervisor寫(xiě)數(shù)據(jù)到適當(dāng)?shù)谋镜貎?nèi)存中,該內(nèi)存是和Domain 0共享的。在Domain 0 和Domain U之間存在一個(gè)事件通道(event channel),通過(guò)該通道二者進(jìn)行異步的域間中斷通信。Domain 0會(huì)接收到一個(gè)來(lái)自Xen Hypervisor的中斷,觸發(fā)PV Block Backend Driver訪問(wèn)上述的內(nèi)存,讀取來(lái)自PV客戶系統(tǒng)的數(shù)據(jù),然后將這些數(shù)據(jù)寫(xiě)入硬件磁盤(pán)。 下圖中事件通道表示為連接Domain 0與Domain U的一個(gè)區(qū)域,這是系統(tǒng)工作流的一個(gè)簡(jiǎn)化。事實(shí)上事件通道運(yùn)行在Xen Hypervisor,通過(guò)Xenstored中的特定中斷實(shí)現(xiàn),提供Domain 0與Domain U之間的快速共享內(nèi)存。 見(jiàn)下圖。   術(shù)語(yǔ)表 C:  http://www./; a computer programming language Daemons:  http://en./wiki/Daemon_(computer_software); a program running in the background rather than under direct control of a user Driver:  http://en./wiki/Device_driver; program allowing software to interact with hardware Full Virtualization:  http://en./wiki/Full_virtualization; a virtual machine not aware of its virtualization Interrupt:  http://en./wiki/Interrupt; signal from hardware to software requesting a specific action in software Kernel:  http://en./wiki/Linux_kernel; the central component of a computer operating system Paravirtualized:  http://en./wiki/Paravirtualization; virtual machine running on a hypervisor that is aware of it being virtualized] Python:  http://www./; a dynamic object oriented programming language ROM BIOS:  http://en./wiki/BIOS; software instructions run on a machine when turned on XML PRC:  http://www./; method for an application to leverage another application using HTTP for the remote procedure call and XML as the encoding 譯者:BiaBear 博客:  http://www./386879 原文地址:  http:///news/2009/12/01/%E7%BF%BB%E8%AF%91%EF%BC%9Axen%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/ | 
|  |