一、遷移的準備工作
在進行遷移之前,有一些準備工作要做,主要是目的主機和源主機及其網絡方面。下面分别加以介紹。
首先,在源主機和目的主機方面,兩者必須都運作有Xen和xend守護程序。必須確定目的主機具有足夠的磁盤空間、記憶體容量和資源,以供遷移後的domain運作之用。此外,源主機和目的主機還必須具有相同的體系結構和虛拟化擴充,例如,如果源主機使用的是具有虛拟化擴充的x86-64體系結構的話,目的主機也必須如此。之是以這樣做,是為了防止由于核心和使用者庫使用的指令集不比對而導緻domain遷移之後無法正常工作的情況。
其次,在網絡方面,要求源主機和目的主機還必須位于同一子網上。遷移domain時,如果目的地結點位于不同的子網上,那麼遷移将會失敗,因為該domain的MAC和IP位址也随之遷移。如您運作了防火牆,你可能需要建立相應的iptables規則來準許遷入連接配接。
再者,遷移時,xend守護程序會中止domain在源主機上的運作,接着将其複制到目的主機,然後重新啟動該domain 。預設時,xend守護程序從本機接受遷移請求。為了使遷移目标接受來自遠端主機的遷入請求,您必須修改目的主機在/etc/xend-config.sxp檔案中的xen-relocation-hosts-allow 參數。因為沒有提供認證,是以為安全起見您必須限定允許遷移的主機。
下面,我們開始介紹用于遷移domain的第一種方法:存儲還原法。
二、存儲還原遷移法
存儲還原法的過程是這樣的:首先,将一個domain的目前運作狀态儲存到硬碟上的一個檔案中,然後,Xend 再利用該檔案實作對該domain原狀态的還原。其實這與便攜式計算機的休眠功能非常相像:休眠時,便攜式計算機會儲存硬碟狀态的映像,然後自動關機。退出休眠時,它會使用儲存的磁盤映象将系統還原到之前的運作狀态。
本節中,我們為讀者介紹如何将一個運作中的domain 儲存為一個檔案,之後再用它将domain還原到之前的工作狀态,至于在哪裡還原,既可以在同一個伺服器上,也可以在之外的Xen 伺服器上。但在将domain 儲存成映像檔案之前,一定要騰出足以存放該檔案的磁盤空間來。
操作過程
好了,下面開始介紹在Xen 伺服器上遷移Domain的具體操作步驟。具體要做的是:建立一個Debian domain ,然後将它的狀态儲存到一個檔案,該檔案将用于還原這個Debian domain。
1、建立Debian guest domain :
# xm create debian_etch_domU.cfg –c
2、檢查該domain的運作是否正常。因為我們給上述的xm 指令提供了-c參數,這将在目前控制台中啟動客戶機Domain。但是要想檢查該Domain是否已經啟動,就必須使用另外一個控制台會話。
3、我們将要把這個Domain的目前狀态儲存到/xen-saved-images 目錄,當然也可以儲存到您選擇的其他目錄:
# xm save 1 /xen-saved-images/etch.save 源虛機被關閉
4、儲存的Domain會從目前運作的Domain清單中删除,我們可以用xm 指令列出眼下運作的Domain,看看它有沒有被删掉。
5、從檔案還原儲存的Domain:
# xm restore /xen-saved-images/etch.save
6、再次執行xm 指令,我們将看到,還原後的Domain又回到目前Domain清單中了。
相關說明
把工作中的Domain的運作狀态儲存到一個磁盤檔案的時候,檔案沒有經過任何形式的加密,是以惡意使用者隻要能夠通路儲存映像檔案目錄,就能對這些映像做手腳。是以,確定對存放這些映像的檔案夾的通路的安全就顯得格外重要。
一個Domain的運作狀态就是該Domain在被儲存時刻的快照或者映像。所有運作中的程序的資訊和狀态都被存放到這個檔案中。 檢視該檔案時,您會發現這是一個龐大的二進制檔案,其大小等于該Domain被儲存時所使用的記憶體量。 因為Xen Domain通常會運作一些企業應用程式,是以這個檔案一般小不了,通常都在幾GB左右。是以,你必須保證有足夠的存儲空間來存放這個檔案。雖然本例将狀态保持到了一個硬碟檔案之上,但是您還可以将這個檔案存放到一個足夠大的網絡檔案夾上,甚至一個U盤上。将Domain儲存到U盤的确不錯,這樣就可以随身攜帶,需要時還可以在不同的伺服器上将其還原。
我們能夠使用xm 指令加restore 選項來還原存儲的Domain,這會再次啟動該Domain,并将其還原至被儲存時的狀态。當使用存儲還原法時,有一些事項需要時刻注意:因為Domain還原後的ID不同于其儲存時刻的Domain ID,是以使用xm 檢視還原後的Domain時,一定要注意ID 的變化。雖然Domain被恢複到了原先的狀态(被存儲時刻的狀态),卻不能自動連接配接到該domain的控制台,相反,我們必須顯式的運作xm 指令才能連接配接到控制台。
雖然這種遷移Domain的方式簡單易行,但是一定要注意,由于Domain在儲存時就已經從活動Domain中删除,是以運作于該Domain上的各種服務也就無法使用或通路了。如果您對于這種業務中斷情況無法接受,那麼就應該考慮采用在下一節中介紹的Xen 的動态遷移特性
三、動态遷移法
上面,我們介紹了在Xen 伺服器上遷移Domain時的存儲還原法。雖然這種方法很簡單,但是如果您的伺服器上有不許中斷的關鍵業務,或者您想最小化業務中斷時間,那麼您還是不能采用這種遷移方法。
這時,Xen還為我們提供了一種強大的功能就派上用場了,它就是動态遷移法。它能讓Domain在運作期間,以最小的服務中斷為代價,将Domain遷移到另外的Xen 伺服器上。
使用Xen動态遷移可謂好處多多,先将其主要優點列舉如下:
·Xen的動态遷移随同諸如heartbeat之類的高可用性解決方案一起使用,能給我們帶來一個“永不抛錨”的系統。最新版本的Enterprise SuSe Linux Server 和Red Hat Enterprise Linux 也是利用Xen來提供各種高可用性解決方案的。您可以輕而易舉的滿足各種服務的苛刻要求,同時還能保證所有關鍵商業服務不會出現中斷。
·它使我們能夠以“治未病”方式來維護寄放虛拟機的實體伺服器。您可以監視伺服器,然後通過轉移系統來即時解決潛在的和可疑的問題。
·它使得在多個伺服器之間實作負載均衡成為可能,使我們能夠更好地利用企業中的所有計算資源,使其利用情況達到最佳狀态。需要注意的是,Xen的開源版本目前還不支援在dom0上感應到故障時自動進行動态遷移的功能。
·它使得在需要時向系統配置添加計算能力變得更加輕松。
·您可以根據需要更換硬體,而無需中斷運作在該硬體上的服務。
隻知道動态遷移的好處還不夠,現在介紹一下具體的使用方法。
要求:
1. 兩者必須都運作有Xen和xend守護程序
2. 必須確定目的主機具有足夠的磁盤空間、記憶體容量和資源
3. 源主機和目的主機還必須位于同一子網上
4. 源主機和目的主機還必須具有相同的體系結構和虛拟化擴充
配置檔案:
[root@host1 ~]# vi /etc/xen/xend-config.sxp
(xend-relocation-server yes)
(xend-relocation-port 8002)
(xend-relocation-address '')
(xend-relocation-hosts- allow '')
再執行: /etc/init.d/xend restart
具體操作
首先對動态遷移時涉及到的伺服器做一下介紹,它們是:
·hostA :一個linux NFS 伺服器,通過網絡為XenDomain提供存儲空間。
·hostB :一個Xen主機伺服器,它使用NFS導出的目錄運作一個客戶機Domain:Ubuntu Fuwa 。
·hostC :一個Xen主機伺服器,它是來自hostB 伺服器的客戶機Domain 即Ubuntu Fuwa 的遷移目的地。
下圖向我們展示了具體配置情況
⒈ 動态遷移要求共享存儲器。現實中,除了第一節所提要求外,對網速的最低要求是100MB。為了共享存儲器,我們将在我們在上圖頂部的Xen主機上建立一個NFS伺服器,欲遷移的Domain使用的就是NFS 伺服器上的共享存儲器空間。
⒉ 編輯/etc /exports 檔案,加入下面一行來導出存儲器目錄:
# /xen-storage *(r,sync,no_root_squash)
⒊ 儲存檔案,并重新開機NFS 伺服器。将NFS 伺服器添加到該伺服器的服務中,并設為系統重新開機時運作:
# service nfs startchkconfig nfs on
⒋ 我們将建立兩個Xen 伺服器,并讓他們使用NFS 伺服器提供的存儲器。為了挂載導出目錄,需要為兩個Xen 伺服器都添加安裝點:
# mount hostB:/xen-storage
#- mount hostC:/xen-storage
⒌ 修改Xend配置檔案,以允許動态遷移。編輯/etc/xen/xend-config.sxp 檔案,并確定以下兩行沒有被注釋掉:
(xend-relocation-port 8002)
(xend-relocation-address '')
其作用是啟動Xen 守護程序,以偵聽和響應動态遷移的各種請求。
⒍ 建立一個運作在NFS 伺服器存儲器上的Xen Domain,并在hostB上啟動該客戶機Domain。并讓該客戶機Domain使用以下配置:
cat > /home/pchaganti/xen-images/ubuntu_fuwa_nfs_domU.cfg << "EOF"
kernel = "/boot/vmlinuz-2.6.16.38-xenU"
memory = 256
name = "ubuntu_fuwa_nfs_domU"
vif = [ 'ip=192.168.1.111' ]
nfs_server = '192.168.1.67'
nfs_root = '/xen-storage'
root = '/dev/nfs'
EOF
⒎ 現在,我們有了一個運作于hostB的客戶機Domain,它使用NFS 導出的目錄進行存儲。我們可以在hostB上運作下列指令來檢查該Domain的運作是否正常:
⒏ 接下來,我們将這個客戶機Domain動态遷移至hostC 伺服器,為此可能需要幾分鐘的時間。如果遷移失敗,會在控制台顯示一個訓示失敗的消息。
# xm migrate --live ubuntu_fuwa_nfs_domU hostC
⒐ 以上就是将正在運作的Domain動态遷移至另一個Xen 伺服器的全部工作!現在使用xm指令來顯示目前運作于hostB 和hostC 這兩個伺服器上的Domain,您将發現,所遷移的Domain目前隻能在hostC 伺服器上找到,列出的正在hostB伺服器上運作的Domain中已經找不到被遷移的Domain的影子了。
動态遷移就是在“帶電”情況下,将一個虛拟機從一個實體主機移動到另一個實體主機的過程。該過程不會對最終使用者造成明顯的影響,進而使得管理者能夠在不影響使用者正常使用的情況下,對實體伺服器進行離線維修或者更新。
需要注意的是,要想改變Domain的運作地點,必須修改預設的Xend配置檔案。此外,要使所做的修改在主機上生效,必須重新啟動Xen 伺服器所在的主機。 我們需要修改以下配置:
·Xend-relocation-server :該标志用于啟用/取消伺服器遷移功能。預設時,該标志設為no ,即不允許改變伺服器的位置。在遷移過程中,Domain虛拟記憶體将變成未經任何加密的原始形式。是以,在不可信的網絡上啟用該選項時一定要倍加小心。
·Xend-relocation-port :xend守護程序通過該端口進行遷移。這個端口的預設值是8002。
另外,還有兩個無需修改的參數,當在企業部署環境進行遷移時也要注意一下:
·Xend-relocation-address :該标志将Domain的遷移限制到特定的接口上。指定的位址是偵聽用于Domain遷移的入局連接配接的接口位址。隻有啟用xend-relocation-server參數後,才會用到這個标志。
·Xend-relocation-hosts-allow:這個标志定義了允許跟遷移端口進行通信的主機。其值為一個由空格分隔的正規表達式序列。如果該值為空,那麼将允許全部輸入連接配接,否則,該值要麼與一個IP位址相比對,要麼與一個完整域名相比對
事實上,從hostB到hostC的遷移過程,是分為多個階段進行的,如下所示:
第一階段:遷移之前。
這時,Fuwa Domain運作于hostB,并且是一個活動的Domain。
第二階段:預定。
在hostB上發出一個遷移請求,然後檢查和确認在hostC上可用的資源。然後,Xend在hostC上按照所需的尺寸準備一個VM容器。如果Xend無法在hostC上獲得所需的資源,那麼一切就此結束。該Domain依舊運作在hostB上,就像什麼事情也沒發生一樣,此次遷移嘗試就此放棄。
第三階段:重複預拷貝。
先将所有記憶體頁面從hostB傳送到hostC,然後繼續傳輸在先前傳送過程中發生變化的頁面。最終,是以頁面都被拷貝到hostC。
到第三階段為止,Fuwa Domain仍然正常運作于hostC之上。
第四階段:中止并拷貝。
在hostB上運作着的Domain被挂起,其所有網絡流量也被重定向至hostC。這個階段結束後,除了在hostB上有一個挂起的Domain外,hostB上還有了這個被挂起的Domain的副本。這時,hostB上被挂起的Domain還可以作為原始副本,萬一這一步失敗,它還能在hostB上恢複運作。
第五階段:傳遞。
如果這一步沒有錯誤或失敗的話,hostC會向hostB發送一個訓示資訊,指出它已經擁有了一個跟hostB完全一緻的Domain映像。現在,hostB将從它的Xen 伺服器中删除該Domain。從這時起,hostC将成為這個Domain的第一主控端。
在第四階段至第五階段期間,Fuwa Domain處于停機狀态。
第六階段:激活。
在hostC上激活被遷移的Domain。該Domain内部的全部裝置驅動程式現在關聯至新的機器上。至此,Fuwa Domain又在hostC上複活了。
這些步驟都是在幕後進行的,正是這一系列默默無聞的操作,才使得遷移能夠如此平穩的和無縫的過渡!
四、結束語
本章我們研究了遷移Xen客戶機Domain的兩種方式:存儲還原法和動态遷移法。前一種方法類似便攜式計算機的深度休眠,它先将捕獲的domain運作狀态作為映像存放在磁盤上,之後再用該映像對這個domain 進行還原。後一種方式以最少的中斷和停機時間來動态改變處于運作狀态中的domain的運作位置。綜合使用這兩種遷移方法,定能使虛拟化技術的功效更上一層樓
本文轉自feisky部落格園部落格,原文連結:http://www.cnblogs.com/feisky/archive/2011/11/27/2310350.html,如需轉載請自行聯系原作者