Citrix虛擬化動態(tài)遷移技術(shù)XenMotion介紹
實(shí)時遷移是服務(wù)器虛擬化的一大亮點(diǎn),以前管理員必須犧牲周末時間重新回機(jī)房進(jìn)行的服務(wù)器維護(hù)共工作,現(xiàn)在能夠在辦公時間輕松維護(hù)完成,服務(wù)器應(yīng)用實(shí)現(xiàn)不停機(jī)的實(shí)時遷移是虛擬化技術(shù)最為吸引用戶的一點(diǎn)。比如VMware公司的VMotion,而它的競爭對手——Citrix(思杰)則有XenMotion與之相抗衡。
XenMotion概述
XenMotion是XenServer的一項功能,能夠?qū)⒄谶\(yùn)行的虛擬機(jī)從一臺XenServer主機(jī)上遷移到另外一臺,而不帶有任何停機(jī)的危險。這就意味著在整個遷移過程中,被移動的虛擬機(jī)在任意時刻都處于正常的工作狀態(tài)。XenMotion的主要目的是在某臺服務(wù)器需要進(jìn)行計劃維修的情況下,終端用戶無法覺察到應(yīng)用程序出現(xiàn)過極短暫的中斷,令整個服務(wù)過程正常順暢。
XenMotion工作原理圖
XenMotion與Resource Pools(資源池)
XenMotion與Resource Pools協(xié)同工作。Resource Pools的功能是收集在一組資源中相互連接的多個相似XenServer Enterprise服務(wù)器。這種統(tǒng)一的管理單元(Resource Pools)能夠使與之相連接的虛擬機(jī)共享遠(yuǎn)程存儲和網(wǎng)絡(luò)資源。對于同一個Resource Pool來說,它允許其中的虛擬機(jī)進(jìn)行實(shí)時遷移。當(dāng)Resource Pools與共享存儲器共同工作時,只要XenServer主機(jī)的容量足夠大,那么就虛擬機(jī)就可以在這些主機(jī)中任意啟動。
這就為XenMotion創(chuàng)造了一定的條件。如果有某一臺正在運(yùn)行的服務(wù)器超負(fù)荷或者發(fā)生了故障,那么管理員就可以立刻在Resource Pool中選擇另一臺服務(wù)器進(jìn)行虛擬機(jī)的遷移。雖然沒有進(jìn)行明確的規(guī)定,但是每一個Resource Pool一般最多可以支持16臺XenServer主機(jī)。
值得注意的是,XenMotion并不僅僅在服務(wù)器出現(xiàn)故障,無法正常工作的情況下才進(jìn)行遷移。當(dāng)服務(wù)器超負(fù)荷的時候,XenMotion就會將一部分的操作系統(tǒng),包括上面正在運(yùn)行的應(yīng)用程序原封不動地遷移到候補(bǔ)服務(wù)器上。因此,XenMotion能夠合理地分配Resource Pool中XenServer的工作量,大大提高了資源利用率和工作效率。
超負(fù)荷情況下的遷移
事實(shí)上,XenMotion遷移并無法做到***的零停機(jī),其確切的停機(jī)時間一般為100~150毫秒。但是,由于這個時間間隔很短,所以在服務(wù)器上運(yùn)行的虛擬機(jī)無法覺察,就不會出現(xiàn)中斷。而這極其短暫的停機(jī)時間大部分是花費(fèi)在將網(wǎng)絡(luò)交換設(shè)備轉(zhuǎn)移到一個新的端口上。
XenMotion的系統(tǒng)要求
1. XenServer中的處理器必須具有相同的類型。
盡管XenMotion允許每個系統(tǒng)的內(nèi)存,存儲控制器和網(wǎng)絡(luò)控制器可以不相同,但是其處理器卻必須具有相同的類型。除了類型有硬性的規(guī)定之外,它還允許其存在一些細(xì)微的差異(比如CPU的運(yùn)轉(zhuǎn)速度)。舉個例子,對同一個Resource Pool中的服務(wù)器來說,必須使用同一系列處理器。
2. Resource Pools中至少要有兩臺XenServer Enterprise服務(wù)器處于運(yùn)轉(zhuǎn)狀態(tài)。
3. 虛擬機(jī)的存儲器類型
虛擬機(jī)必須存儲在遠(yuǎn)程共享的存儲器中。比如與基于網(wǎng)絡(luò)文件系統(tǒng)NFS(Network File System)或者iSCSI(通過iSCSI啟動軟件)的存儲器相連接。
此外,假如Resource Pools中有某臺XenServer主機(jī)被移除,那么原本在上面運(yùn)行的虛擬機(jī)并沒有隨之被刪除,而是依然存在于數(shù)據(jù)庫中,不會導(dǎo)致數(shù)據(jù)丟失,并且對于其他的XenServer主機(jī)成員是可見的。但是這些虛擬機(jī)是處于停用狀態(tài),只有它們的虛擬磁盤被連接到共享服務(wù)器時,才可以被Resource Pools中的其他XenServer共享。因此,為了提高資源的利用率,***在共享存儲器創(chuàng)建完成的時候,就把本地磁盤添加到共享存儲器中。
4. 網(wǎng)絡(luò)的帶寬要求:推薦使用千兆位的以太網(wǎng)。
XenMotion的運(yùn)行原理
XenMotion使用的是預(yù)復(fù)制遷移(Pre-Copy Migration)。其具體步驟如下:
1. 系統(tǒng)驗(yàn)證目標(biāo)服務(wù)器的存儲器和網(wǎng)絡(luò)設(shè)置是否正確,并保留目標(biāo)服務(wù)器虛擬機(jī)的資源。
源服務(wù)器和目標(biāo)服務(wù)器簡圖
2. 當(dāng)虛擬機(jī)還在源服務(wù)器上運(yùn)轉(zhuǎn)時,將內(nèi)存鏡像復(fù)制到目標(biāo)服務(wù)器上。在這個過程中,XenServer依然會監(jiān)視內(nèi)存的任何變化。
內(nèi)存鏡像復(fù)制示意圖
3. 在這一步完成后,大部分的內(nèi)存鏡像已經(jīng)被復(fù)制到目標(biāo)服務(wù)器上了。檢查在這個階段中,內(nèi)存較復(fù)制前是否發(fā)生了變化。
內(nèi)存鏡像復(fù)制完成示意圖
4. 假如發(fā)生了變化,那么XenServer會將發(fā)生變化的內(nèi)存重新復(fù)制到目標(biāo)服務(wù)器中,并覆蓋掉先前的內(nèi)存。在這個階段,Xen依然會繼續(xù)監(jiān)視內(nèi)存的變化情況。
進(jìn)行有變化的內(nèi)存復(fù)制
Xen依然監(jiān)視內(nèi)存的變化情況
5. Xen會持續(xù)這樣的內(nèi)存復(fù)制操作。隨著復(fù)制次數(shù)的增加,所需要復(fù)制的數(shù)據(jù)就會明顯減少,而復(fù)制所耗費(fèi)的時間就會逐漸變短,那么內(nèi)存就有可能沒有足夠的時間發(fā)生變化。***,當(dāng)源服務(wù)器與目標(biāo)服務(wù)器之間的差異可以忽略不計時,內(nèi)存復(fù)制操作才會結(jié)束。
所需復(fù)制的數(shù)據(jù)越來越少
6. 內(nèi)存復(fù)制完畢之后,將機(jī)器的工作狀態(tài)復(fù)制到目標(biāo)服務(wù)器之后,源服務(wù)器就停止工作。然后,將存儲從源系統(tǒng)上解鎖,并鎖定在目標(biāo)系統(tǒng)上。啟動目標(biāo)服務(wù)器,并與存儲資源和網(wǎng)絡(luò)資源相連接,同時清除源服務(wù)器的上的資源。
狀態(tài)信息的復(fù)制
停止源服務(wù)器,啟動目標(biāo)服務(wù)器
XenMotion vs VMotion
XenMotion和VMotion都是致力于在服務(wù)器無法正常工作時,將其上正在運(yùn)行的虛擬機(jī)遷移到其他候補(bǔ)服務(wù)器上,實(shí)現(xiàn)零停機(jī)。盡管如此,兩者在操作,配置上還是有些許的不同的:
1. XenMotion只需要支持軟件iSCSI或者NFS;VMotion則可以選擇光纖(Fibre),軟件或者硬件的iSCSI以及NFS。
2. 當(dāng)虛擬機(jī)與內(nèi)部網(wǎng)絡(luò)相連接時,XenMotion是不可用的;對于VMotion來說,只要相互遷移的兩臺主機(jī)連接的是相同的網(wǎng)絡(luò)即可,無論該網(wǎng)絡(luò)是內(nèi)部的還是外部的。
3. XenMotion需要手動操作;VMotion可以手動,也可以通過分布式資源調(diào)度程序(DRS)自動進(jìn)行。
【編輯推薦】