(國防科學(xué)技術(shù)大學(xué) 計(jì)算機(jī)學(xué)院,長沙 410073)
摘 要:
在刀片服務(wù)器、數(shù)據(jù)中心等虛擬環(huán)境下,對服務(wù)的不間斷保障能力有很高的需求,因此,需要在動(dòng)態(tài)遷移中虛擬機(jī)能不間斷訪問I/O等設(shè)備。對此,提出了設(shè)備代理機(jī)制。設(shè)備代理機(jī)制主要包括設(shè)備代理、遠(yuǎn)程設(shè)備訪問和設(shè)備動(dòng)態(tài)交換三個(gè)模塊。設(shè)備代理模塊主要處理在動(dòng)態(tài)遷移期間的I/O事務(wù)和虛擬設(shè)備狀態(tài);遠(yuǎn)程設(shè)備訪問模塊讓虛擬機(jī)像從本地一樣從遠(yuǎn)程訪問I/O等設(shè)備;設(shè)備動(dòng)態(tài)交換模塊允許虛擬機(jī)重新動(dòng)態(tài)地定向到物理設(shè)備。實(shí)驗(yàn)表明,設(shè)備代理機(jī)制確實(shí)在遷移期間保證了I/O服務(wù)不間斷,并提高了其服務(wù)質(zhì)量。
關(guān)鍵詞:設(shè)備代理; 動(dòng)態(tài)遷移; 虛擬機(jī); 輸入/輸出訪問
中圖分類號:TP311文獻(xiàn)標(biāo)志碼:A
文章編號:1001-3695(2009)04-1349-04
Research ondynamic migration of virtual machine based on device-agent mechanism
LI Zhi-wei, WU Qing-bo, TAN Yu-song
(College of Computer,National University of Defence Technology, Changsha 410073, China)
Abstract:In blade servers, data centers, and other virtual environment, the ability to guarantee uninterrupted service, has high demand, so needing virtual machine without interruption to access I/O and other devices during live VM migration. In response, this paper proposed device-agent mechanism. Device-agent mechanism, including three major modules, device-agent module, remote access device module and device dynamic exchange module. Device-agent module was mainly in charge the I/O transactions and the states of virtual device during live VM migration. Remote access device module made virtual machines access remote I/O devices like access local’s. Device dynamic exchange module allowed virtual machine to re-orientation to the physical device dynamically. Experiments show that device-agent mechanism have guaranteed the I/O uninterrupted service during live VM migration, and improve the quality of service.
Key words:device-agent; dynamic migration; virtual machine; I/O access
0 引言
據(jù)IDC稱,虛擬化迅速為人們接受,且已幫助改變了IT的經(jīng)濟(jì),不僅降低了資本成本還降低了運(yùn)營成本。從商業(yè)角度來看,使用虛擬化技術(shù)有很多初衷,其中服務(wù)器整合可算是最重要的原因。簡單來說,如果用戶可以對一個(gè)服務(wù)器中多個(gè)未經(jīng)充分利用的系統(tǒng)進(jìn)行虛擬化,由于服務(wù)器的數(shù)量少了,顯然可以節(jié)省大量電力、空間、制冷和管理成本。
在服務(wù)器中運(yùn)用虛擬化,總體上有以下幾點(diǎn)好處:
a)進(jìn)行服務(wù)器整合,全面提高服務(wù)保障水平,降低了管理工作量。
b)降低單點(diǎn)故障,提高服務(wù)保障水平。
c)提高資源利用率,改善資源分配。
d)提高系統(tǒng)整體的可用性。
虛擬化技術(shù)將虛擬服務(wù)器從硬件中抽象出來,這樣做最大的好處是虛擬服務(wù)器可以在不同物理服務(wù)器間來回遷移。遷移能力允許將虛擬服務(wù)器克隆出來,或從一臺物理服務(wù)器遷移到另外一臺。在許多虛擬化解決方案中,均需要?jiǎng)討B(tài)遷移技術(shù)(live migration),如,負(fù)載均衡、容錯(cuò)。另外,當(dāng)服務(wù)器不能滿足用戶對虛擬機(jī)環(huán)境要求(CPU、內(nèi)存等)時(shí),可將虛擬機(jī)動(dòng)態(tài)遷移到能滿足需求的服務(wù)器上。通過以上分析和研究,可以發(fā)現(xiàn)動(dòng)態(tài)遷移技術(shù)在虛擬化服務(wù)器中占有很重要的意義。
在兩個(gè)物理節(jié)點(diǎn)之間動(dòng)態(tài)遷移虛擬機(jī)時(shí),有些技術(shù)難點(diǎn)還沒解決。例如,如何在動(dòng)態(tài)遷移虛擬機(jī)期間,能持續(xù)、不間斷地存取I/O等設(shè)備,即保證服務(wù)的持續(xù)性和不間斷。本文經(jīng)過對該問題的不斷研究,設(shè)計(jì)和實(shí)現(xiàn)了基于設(shè)備代理機(jī)制動(dòng)態(tài)遷移技術(shù),通過它來解決動(dòng)態(tài)遷移中服務(wù)的持續(xù)性和不間斷問題。
1 相關(guān)研究
1.1 動(dòng)態(tài)遷移的研究現(xiàn)狀
現(xiàn)有若干種典型的虛擬化軟件,這些軟件基本上都運(yùn)用了動(dòng)態(tài)遷移技術(shù)。
基于以前相關(guān)研究工作的成果,NomadBIOS[1]系統(tǒng)第一次引入了動(dòng)態(tài)遷移的概念。運(yùn)用預(yù)拷貝(pre-copy)技術(shù)達(dá)到了最小宕機(jī)時(shí)間,但是怎樣在遷移操作系統(tǒng)時(shí)進(jìn)行可寫操作,仍然沒有解決。預(yù)拷貝技術(shù)就是在原域凍結(jié)之前,預(yù)先拷貝OS的關(guān)鍵狀態(tài),這時(shí)原域處于運(yùn)行狀態(tài),之后凍結(jié)原域,重復(fù)拷貝這段執(zhí)行時(shí)間內(nèi)修改臟頁的過程。
Zap[2]通過修改Liunx內(nèi)核來虛擬化部分操作系統(tǒng),允許遷移pods(process domains),本質(zhì)上是遷移進(jìn)程組。具體是將內(nèi)核進(jìn)程接口封裝成不同的namespace,遷移過程只遷移這些namespace,由于遷移的單位小,在效率和性能上比collective project系統(tǒng)要高。然而該系統(tǒng)在最好情況下遷移消耗的時(shí)間仍然很高,并且不允許動(dòng)態(tài)遷移,更重要的是沒有解決為活動(dòng)服務(wù)保持連接問題。
SWsoft公司的Virtuzzo[3]產(chǎn)品引入了虛擬環(huán)境(virtual environment)的概念。虛擬環(huán)境用于安全隔離單個(gè)應(yīng)用或一組相關(guān)應(yīng)用,為運(yùn)行在其中的應(yīng)用程序提供一個(gè)完整的虛擬操作系統(tǒng)環(huán)境。每個(gè)虛擬環(huán)境均擁有自己的注冊表、用戶名、文件系統(tǒng)、 TCP/IP地址和內(nèi)核等,所有的系統(tǒng)資源和標(biāo)志均被虛擬化,由于全新的VE鏡像僅有30 MB,大大提高了遷移速度。
Xen[4]是一個(gè)開源的虛擬化軟件,Xen中集成的遷移技術(shù),主要包括兩種,即常規(guī)(regular)和動(dòng)態(tài)遷移。常規(guī)遷移需要中斷原域服務(wù),直接拷貝所有的頁到目標(biāo)機(jī),然后重起新的虛擬機(jī),屬于stop-and-copy型的,只適合小內(nèi)存的遷移。在NomadBIOS系統(tǒng)引入了動(dòng)態(tài)遷移的技術(shù)后,Xen的遷移中也集成了動(dòng)態(tài)遷移,用的也是預(yù)拷貝策略。這種策略主要是為了減少OS凍結(jié)時(shí)間,從而避免因凍結(jié)時(shí)間長而導(dǎo)致的開銷和錯(cuò)誤;該策略雖然減少了OS的凍結(jié)時(shí)間,但卻增加了拷貝的次數(shù),延長了總的遷移時(shí)間。
1.2 傳統(tǒng)動(dòng)態(tài)遷移的機(jī)制
傳統(tǒng)動(dòng)態(tài)遷移機(jī)制均需要SAN(storage area network)集中存儲設(shè)備或NFS網(wǎng)絡(luò)文件系統(tǒng)的支持,且在動(dòng)態(tài)遷移虛擬機(jī)的期間,對原域都要進(jìn)行凍結(jié),這就造成了虛擬機(jī)有一個(gè)宕機(jī)時(shí)間。雖然這個(gè)宕機(jī)時(shí)間很短(一般在30~600 ms),但宕機(jī)會造成虛擬機(jī)與I/O等設(shè)備中斷,由此造成I/O服務(wù)質(zhì)量下降或者間斷。
在傳統(tǒng)動(dòng)態(tài)遷移機(jī)制中,原域服務(wù)器和目標(biāo)域服務(wù)器必須共享虛擬機(jī)的設(shè)備,一般用NFS(網(wǎng)絡(luò)文件系統(tǒng))。虛擬機(jī)從原域遷移到目標(biāo)域后,很多虛擬設(shè)備狀態(tài)被滯留在原域的特權(quán)域中,如由設(shè)備驅(qū)動(dòng)發(fā)布,但還沒有完成返回的I/O等事務(wù)。這些事務(wù)狀態(tài)不能按原路返回給虛擬機(jī),因?yàn)檫@時(shí)虛擬機(jī)已經(jīng)遷移到目標(biāo)域上。特別是當(dāng)虛擬機(jī)被凍結(jié),設(shè)備驅(qū)動(dòng)和虛擬設(shè)備之間通信渠道被掛起期間,用戶對I/O等設(shè)備進(jìn)行訪問或其他的事務(wù)請求大部分被滯留在原域的特權(quán)域中。
從以上分析可以得出,傳統(tǒng)動(dòng)態(tài)遷移在動(dòng)態(tài)遷移虛擬機(jī)期間,I/O服務(wù)質(zhì)量會大幅下降或間斷。為了解決這個(gè)問題,保證動(dòng)態(tài)遷移期間I/O服務(wù)的不間斷,筆者在每個(gè)服務(wù)節(jié)點(diǎn)的特權(quán)域中加一個(gè)設(shè)備代理模塊,借助這個(gè)模塊來實(shí)現(xiàn)動(dòng)態(tài)遷移中對I/O等設(shè)備持續(xù)存取。下面一章是對基于設(shè)備代理機(jī)制動(dòng)態(tài)遷移技術(shù)的詳細(xì)描述。
2 基于設(shè)備代理機(jī)制的動(dòng)態(tài)遷移
基于在傳統(tǒng)動(dòng)態(tài)遷移過程中,虛擬機(jī)不能持續(xù)訪問I/O等設(shè)備,筆者提出設(shè)備代理機(jī)制。在特權(quán)虛擬域的虛擬設(shè)備模塊中增加設(shè)備代理模塊,用于監(jiān)視虛擬設(shè)備狀態(tài)和I/O等設(shè)備事務(wù)。在動(dòng)態(tài)遷移虛擬機(jī)時(shí),設(shè)備代理模塊可以協(xié)助虛擬機(jī)持續(xù)、不間斷地存取I/O設(shè)備。而且在虛擬機(jī)動(dòng)態(tài)遷移時(shí),可以不依賴于SAN集中存儲設(shè)備或者NFS的支持,設(shè)備代理機(jī)制可以協(xié)助虛擬機(jī)從遠(yuǎn)程存取原設(shè)備。
2.1 設(shè)備代理機(jī)制軟件體系結(jié)構(gòu)
在闡述設(shè)備代理機(jī)制軟件體系結(jié)構(gòu)之前,首先需要描述當(dāng)前VMM虛擬化設(shè)備機(jī)制。典型虛擬化設(shè)備包括兩個(gè)運(yùn)行的設(shè)備驅(qū)動(dòng)棧,一個(gè)在普通域,稱為設(shè)備驅(qū)動(dòng);另一個(gè)被稱為虛擬化設(shè)備驅(qū)動(dòng),運(yùn)行在特權(quán)域。設(shè)備驅(qū)動(dòng)可以訪問由虛擬化設(shè)備導(dǎo)出的虛擬設(shè)備。當(dāng)設(shè)備驅(qū)動(dòng)訪問設(shè)備時(shí),訪問被轉(zhuǎn)移給虛擬設(shè)備,由虛擬設(shè)備通過Linux驅(qū)動(dòng)訪問設(shè)備。設(shè)備代理機(jī)制軟件體系結(jié)構(gòu)如圖1所示。
設(shè)備代理是虛擬設(shè)備的一部分,在每個(gè)服務(wù)節(jié)點(diǎn)的特權(quán)域中。設(shè)備代理機(jī)制主要包括三大模塊:a)設(shè)備代理模塊。主要任務(wù)是與遠(yuǎn)程服務(wù)節(jié)點(diǎn)的設(shè)備代理建立通信,在動(dòng)態(tài)遷移期間,處理和轉(zhuǎn)發(fā)虛擬設(shè)備狀態(tài)及I/O請求事務(wù)。b)遠(yuǎn)程設(shè)備訪問模塊,在動(dòng)態(tài)遷移后,轉(zhuǎn)發(fā)虛擬設(shè)備狀態(tài)和I/O請求事務(wù),使虛擬機(jī)具有遠(yuǎn)程訪問設(shè)備功能。c)設(shè)備動(dòng)態(tài)交換。允許虛擬機(jī)重新動(dòng)態(tài)定向到物理設(shè)備,動(dòng)態(tài)遷移后,虛擬機(jī)可以從遠(yuǎn)程設(shè)備動(dòng)態(tài)交換到本地設(shè)備上。通過設(shè)備代理機(jī)制來提高持續(xù)、不間斷的I/O服務(wù),增強(qiáng)了整個(gè)系統(tǒng)的可用性。設(shè)備代理機(jī)制也使動(dòng)態(tài)遷移擺脫對SNA集中存儲設(shè)備的依賴性,簡化了動(dòng)態(tài)遷移機(jī)制。
2.2 設(shè)備代理機(jī)制邏輯流程
在動(dòng)態(tài)遷移中,首先被啟動(dòng)的是設(shè)備代理模塊。當(dāng)虛擬機(jī)被凍結(jié)、設(shè)備驅(qū)動(dòng)與虛擬設(shè)備通信要掛起時(shí),通知設(shè)備代理模塊虛擬機(jī)要遷移。此時(shí),設(shè)備代理模塊緩存用戶對I/O等設(shè)備的請求事務(wù),并等待、緩存虛擬設(shè)備已發(fā)送給設(shè)備所有請求事務(wù)的完成后狀態(tài);最后將這些狀態(tài)轉(zhuǎn)發(fā)給目標(biāo)域的設(shè)備代理,目標(biāo)域的設(shè)備代理完成的狀態(tài)發(fā)送給設(shè)備驅(qū)動(dòng),將未發(fā)送的事務(wù)請求發(fā)給設(shè)備。
動(dòng)態(tài)遷移完后,如果遷移機(jī)制沒有依賴SNA或NFS,則遠(yuǎn)程設(shè)備訪問模塊啟動(dòng)。本地設(shè)備代理將所有虛擬設(shè)備狀態(tài)和I/O請求事務(wù)轉(zhuǎn)發(fā)給遠(yuǎn)程的設(shè)備代理,遠(yuǎn)程設(shè)備代理通過虛擬設(shè)備轉(zhuǎn)移給I/O等設(shè)備。等遠(yuǎn)程設(shè)備將請求事務(wù)完成后,遠(yuǎn)程設(shè)備代理將此時(shí)的狀態(tài)按原路返回。
在所有遷移工作完成后,如果虛擬機(jī)需要將設(shè)備交換到本地,則設(shè)備動(dòng)態(tài)交換模塊啟動(dòng)。設(shè)備代理首先將物理設(shè)備帶入一個(gè)靜止?fàn)顟B(tài),然后開始動(dòng)態(tài)交換。設(shè)備代理緩存從設(shè)備驅(qū)動(dòng)發(fā)送到設(shè)備的所有事務(wù)請求,然后等待已發(fā)送給設(shè)備但還沒完成的所有事務(wù)請求完成。當(dāng)所有事務(wù)完成后,設(shè)備處在一個(gè)靜止?fàn)顟B(tài),且將這時(shí)狀態(tài)轉(zhuǎn)移到本地設(shè)備上;一旦本地設(shè)備完成狀態(tài)更新,虛擬機(jī)就動(dòng)態(tài)交換到本地設(shè)備上,設(shè)備代理開始將緩存的事務(wù)發(fā)送到本地設(shè)備上。此時(shí)就完成了設(shè)備代理的動(dòng)態(tài)設(shè)備交換。
2.3 基于設(shè)備共享的設(shè)備代理動(dòng)態(tài)遷移機(jī)制
所謂設(shè)備共享,就是原域和目標(biāo)域必須共享遷移虛擬機(jī)的設(shè)備。設(shè)備共享必須依賴于SAN集中存儲設(shè)備或NFS網(wǎng)絡(luò)文件系統(tǒng)的支持,一般用網(wǎng)絡(luò)文件系統(tǒng)NFS。在動(dòng)態(tài)遷移過程中,虛擬機(jī)在原域上凍結(jié),然后遷移到目標(biāo)節(jié)點(diǎn)上,這樣就有一個(gè)宕機(jī)時(shí)間,此時(shí)用戶是不能持續(xù)訪問I/O等設(shè)備。筆者運(yùn)用設(shè)備代理機(jī)制來解決這個(gè)問題,設(shè)備代理機(jī)制的主要優(yōu)勢體現(xiàn)在當(dāng)進(jìn)行動(dòng)態(tài)遷移時(shí),系統(tǒng)能持續(xù)、不間斷地提供I/O服務(wù)。
基于設(shè)備共享的設(shè)備代理動(dòng)態(tài)遷移機(jī)制的框架如圖2所示。整個(gè)系統(tǒng)的實(shí)現(xiàn)過程如下:
a)預(yù)先拷貝虛擬機(jī)1的關(guān)鍵狀態(tài),然后凍結(jié)虛擬機(jī)1、掛起設(shè)備驅(qū)動(dòng)和虛擬設(shè)備之間的通信。此時(shí),設(shè)備代理收到遷移虛擬機(jī)1的信息,開始緩存設(shè)備驅(qū)動(dòng)發(fā)給虛擬設(shè)備的I/O等事務(wù)請求,等待所有已發(fā)送給設(shè)備的I/O等事務(wù)完成,并緩存設(shè)備返回的完成狀態(tài)。
b)在目的節(jié)點(diǎn)M2上,一個(gè)新的虛擬機(jī)2被創(chuàng)建。將凍結(jié)虛擬機(jī)1的OS頁填入虛擬機(jī)2,此時(shí)M1的設(shè)備代理和M2的設(shè)備代理建立通信,且M1的設(shè)備代理緩存的所有狀態(tài)全部轉(zhuǎn)發(fā)給M2的D-A。
c)M2的設(shè)備代理通過虛擬設(shè)備將I/O等事務(wù)完成后的狀態(tài)返回給虛擬機(jī),同時(shí)將I/O等事務(wù)請求按原路徑發(fā)送給NFS上的設(shè)備。此時(shí)整個(gè)虛擬機(jī)的遷移過程完成。
以上就是基于設(shè)備共享的設(shè)備代理動(dòng)態(tài)遷移機(jī)制的實(shí)現(xiàn)過程。在動(dòng)態(tài)遷移中,也可以不依賴于SAN集中存儲設(shè)備或NFS網(wǎng)絡(luò)文件系統(tǒng)的支持,這就需要設(shè)備代理制中遠(yuǎn)程設(shè)備訪問功能的支持。下面一節(jié)詳細(xì)描述了基于遠(yuǎn)程設(shè)備訪問的動(dòng)態(tài)遷移。
2.4 基于遠(yuǎn)程設(shè)備訪問的動(dòng)態(tài)遷移策略
在動(dòng)態(tài)遷移中,當(dāng)虛擬機(jī)運(yùn)行的應(yīng)用程序比較多時(shí),節(jié)點(diǎn)服務(wù)器不能滿足虛擬機(jī)要求(如CPU、內(nèi)存等),此時(shí)就需要將虛擬機(jī)動(dòng)態(tài)遷移到另一個(gè)節(jié)點(diǎn)服務(wù)器上,但很難將與虛擬機(jī)相關(guān)的設(shè)備遷移到另一個(gè)節(jié)點(diǎn)上。利用設(shè)備代理機(jī)制,用基于遠(yuǎn)程設(shè)備訪問的動(dòng)態(tài)遷移就很容易解決這個(gè)問題。
基于遠(yuǎn)程設(shè)備訪問的動(dòng)態(tài)遷移無須借助于SAN集中存儲設(shè)備或NFS。如圖3所示,虛擬機(jī)G1從服務(wù)器M1遷移到服務(wù)器M2上,但虛擬機(jī)G2通過設(shè)備代理機(jī)制的設(shè)備遠(yuǎn)程訪問功能,還是從服務(wù)器M1上存取設(shè)備。M2的設(shè)備代理扮演客戶端,而M1的設(shè)備代理就相當(dāng)于服務(wù)端。
從遠(yuǎn)程讀取設(shè)備的過程如下:
a)當(dāng)虛擬機(jī)G2的設(shè)備驅(qū)動(dòng)讀取一個(gè)設(shè)備時(shí),控制域會將這個(gè)讀取轉(zhuǎn)移給虛擬設(shè)備;
b)M2的設(shè)備代理緩沖這個(gè)讀取,并將這個(gè)讀取轉(zhuǎn)發(fā)給M1的設(shè)備代理;
c)M1的設(shè)備代理將這個(gè)讀取緩存在自己的隊(duì)列中,并通過虛擬設(shè)備來讀取設(shè)備;
d)當(dāng)設(shè)備將結(jié)果返回給M1的設(shè)備代理時(shí),設(shè)備代理將這個(gè)讀取任務(wù)移出自己的隊(duì)列,并將結(jié)果發(fā)送給M2的設(shè)備代理(客戶端);
e)M2的設(shè)備代理通過虛擬設(shè)備將結(jié)果返回給虛擬機(jī)G2。
3 實(shí)現(xiàn)和測試
3.1 設(shè)備代理機(jī)制的實(shí)現(xiàn)
本文在主流的虛擬機(jī)監(jiān)控器Xen實(shí)現(xiàn)了設(shè)備代理機(jī)制。實(shí)現(xiàn)框架如圖4所示。
在Xen中,domain 0相當(dāng)于設(shè)備代理機(jī)制中的特權(quán)域,可以接觸所有系統(tǒng)中硬件,domain U相當(dāng)于普通域。設(shè)備驅(qū)動(dòng)在Xen中分為前端和后端,分別扮演設(shè)備代理機(jī)制中的設(shè)備驅(qū)動(dòng)和虛擬設(shè)備,通過共享內(nèi)存、生產(chǎn)者消費(fèi)者環(huán)、虛擬中斷、事件通道、授權(quán)表五種機(jī)制進(jìn)行前后端通信。當(dāng)從遠(yuǎn)程存取I/O等設(shè)備時(shí),前端通過一個(gè)共享內(nèi)存通信渠道向后端請求I/O事務(wù),設(shè)備代理機(jī)制將請求I/O事務(wù)通過基于Socket的client-server通信協(xié)議轉(zhuǎn)發(fā)給遠(yuǎn)程設(shè)備代理,遠(yuǎn)程設(shè)備代理機(jī)制將請求事務(wù)加入異步I/O環(huán)中,后端設(shè)備驅(qū)動(dòng)接口由標(biāo)準(zhǔn)的Linux塊設(shè)備驅(qū)動(dòng)來執(zhí)行I/O事務(wù);最后按原路徑返回I/O事務(wù)完成后的狀態(tài)。
在沒有進(jìn)行動(dòng)態(tài)遷移時(shí),虛擬機(jī)(客戶OS1)訪問I/O設(shè)備如下:當(dāng)虛擬機(jī)中的應(yīng)用程序請求一個(gè)塊I/O時(shí),虛擬機(jī)從虛擬地址空間分配內(nèi)存頁。為了分配內(nèi)存頁,虛擬機(jī)使用授權(quán)表機(jī)制來訪問domain 0。一旦授權(quán)表項(xiàng)存在,虛擬機(jī)提示虛擬塊設(shè)備前端設(shè)備驅(qū)動(dòng)將I/O描述符放置在I/O環(huán)中,并通過事件通道發(fā)送請求信息給虛擬塊設(shè)備后端設(shè)備驅(qū)動(dòng)。一旦后端設(shè)備驅(qū)動(dòng)收到來自前端的請求,首先映射分配的內(nèi)存頁到domain 0的虛擬地址空間。后端設(shè)備驅(qū)動(dòng)執(zhí)行一個(gè)hypercall進(jìn)入Xen,Xen檢查請求域的授權(quán)表來驗(yàn)證共享是否有效,一旦有效,在活動(dòng)的授權(quán)表中設(shè)置domain 0映射分配的內(nèi)存頁表,則可以直接訪問I/O塊設(shè)備。
在動(dòng)態(tài)遷移過程中,當(dāng)虛擬機(jī)被凍結(jié)時(shí),設(shè)備代理機(jī)制在虛擬機(jī)異步I/O環(huán)中終止I/O請求發(fā)送給Linux設(shè)備驅(qū)動(dòng),等待所有I/O回復(fù)完畢。設(shè)備代理機(jī)制用基于Socket的client-server通信協(xié)議將虛擬機(jī)的異步I/O環(huán)接口狀態(tài)轉(zhuǎn)發(fā)給目標(biāo)域的設(shè)備代理機(jī)制,目標(biāo)域的設(shè)備代理機(jī)制更新虛擬機(jī)的異步I/O環(huán)接口狀態(tài)。
3.2 實(shí)驗(yàn)結(jié)果
目前本文只測試了基于設(shè)備共享的設(shè)備代理機(jī)制下的動(dòng)態(tài)遷移,測試工具用Iozone。DomainU從原域遷移到目標(biāo)域,在動(dòng)態(tài)遷移期間,通過運(yùn)行Iozone Benchmark來測試請求事務(wù)完成時(shí)間。下面是硬件和軟件環(huán)境。
硬件環(huán)境:三臺基于IntelX 86體系結(jié)構(gòu)的PC機(jī),166 MHz CPU,內(nèi)存為512 MB, CPU與主存間有64 KB的高速緩存。兩臺計(jì)算機(jī)之間由l00 Mbps的以太網(wǎng)LAN相連接。
軟件環(huán)境:原域:Xen3.1+Fedora6.0(domain0);目標(biāo)域:Xen3.1+Fedora6.0(domain0)+domainU(Fedora6.0),且domainU中運(yùn)行Web服務(wù)Apache+MySQL。設(shè)備共享域:Fedora6.0+NFS。
在表1中,第一列表示的是在動(dòng)態(tài)遷移domainU期間,向數(shù)據(jù)庫發(fā)起的讀寫請求任務(wù)數(shù)量。未完成的請求數(shù)量表示在虛擬機(jī)遷移完后,在設(shè)備代理機(jī)制下虛擬機(jī)還沒完成的任務(wù)數(shù)。最后兩列是基于設(shè)備共享的設(shè)備代理機(jī)制下與傳統(tǒng)的動(dòng)態(tài)遷移下返回任務(wù)請求所花費(fèi)的時(shí)間。
表1 在動(dòng)態(tài)遷移期間返回I/O請求事務(wù)的時(shí)間
遷移期間發(fā)出讀寫請求數(shù)量未完成的請求數(shù)量設(shè)備代理機(jī)制下的返回時(shí)間/ms傳統(tǒng)動(dòng)態(tài)遷移的返回時(shí)間/ms
501.8324.01
1102.9341.21
17113.0250.02
24425.2286.16
33630.44100.05
通過表1的數(shù)據(jù)可以看出,基于設(shè)備代理機(jī)制在動(dòng)態(tài)遷移期間完成I/O等請求事務(wù)的時(shí)間遠(yuǎn)小于傳統(tǒng)的動(dòng)態(tài)遷移。這是因?yàn)樵趦鼋Y(jié)、遷移虛擬機(jī)時(shí),一些I/O請求事務(wù)已經(jīng)完成,而在傳統(tǒng)動(dòng)態(tài)遷移下,要重新發(fā)布這些請求事務(wù)。
4 結(jié)束語
近年來,動(dòng)態(tài)遷移在虛擬化技術(shù)中越來越受到重視。正是動(dòng)態(tài)遷移的存在,才使得虛擬化服務(wù)器系統(tǒng)的負(fù)載均衡能力、容錯(cuò)能力大大提高。在虛擬化環(huán)境下,動(dòng)態(tài)遷移虛擬機(jī)的一些技術(shù)難點(diǎn)還沒有解決。例如,如何在動(dòng)態(tài)遷移虛擬機(jī)期間,不間斷、持續(xù)的訪問I/O設(shè)備。通過對動(dòng)態(tài)遷移的研究和分析,筆者設(shè)計(jì)出基于設(shè)備代理機(jī)制動(dòng)態(tài)遷移,用設(shè)備代理機(jī)制來解決動(dòng)態(tài)遷移虛擬機(jī)期間不間斷、持續(xù)的訪問I/O等設(shè)備。但基于設(shè)備代理機(jī)制動(dòng)態(tài)遷移的一些工作還沒有完成,有些地方還不完善。后續(xù)的工作就是完成剩余的工作,并對其進(jìn)行進(jìn)一步完善。
參考文獻(xiàn):
[1]HANSENJ G, HENRIKSEN A K.Nomadic:operating systems[D].[S.l.]: Dept of Computer Science, University of Copenhagen,2002.
[2]OSMAN S, SUBHRAVETI D, SU Gong, et al. The design and implementation of Zap: a system for migrating computing environments[J]. SIGOPS Oper Syst Rev, 2002,36(SI):361-376.
[3]SWsoft Virtuozzo技術(shù)摘要 [EB/OL ].(2005-12-12). http://www.soft6.com/know/detail.asp.
[4]BARHAM P, DRAGOVIC B, FRASER K, et al. Xen and the art of virtualization[C]//Proc of the 19th ACM Symposium on Operating System Principles. New York:ACM Press, 2003:164-177.
[5]CAPEL D P . Image mosaicing and super-resolution[D]. Oxford: Universityof Oxford,2001.
[6]ZAYAS E. Attacking the process migration bottleneck[C]//Proc of the 7th ACM Symposium on Operating Systems Principles. New York: ACM Press, 1987:13-24.
[7]CLARK C, FASER K, HAND S. Live migration of virtual machines[D]. Cambridge: University of Cambridge, 2005.
[8]KUMAR S, SCHWAN K. Netchannel: a VMM-level mechanism for continuous, transparent device access during VM migration[C]//Proc of VEE’08. New York: ACM Press, 2008:31-40.
[9]NANDA S, CHIUEH T-C. A survey on virtualization technologies, ESCL-TR179[R]. [S.l.]:Department of Computer Science SUNY at Stony Brook ,2005.