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