Xen虛擬機(jī)的詳細(xì)遷移步驟詳解
對于安裝使用xen虛擬機(jī)大家已是很熟悉的操作了,但有些對于xen migrate的操作有的還不太熟悉。想要了解的朋友可以參考一下。
一、遷移的準(zhǔn)備工作
在進(jìn)行遷移之前,有一些準(zhǔn)備工作要做,主要是目的主機(jī)和源主機(jī)及其網(wǎng)絡(luò)方面。下面分別加以介紹。
首先,在源主機(jī)和目的主機(jī)方面,兩者必須都運(yùn)行有Xen和xend守護(hù)進(jìn)程。必須確保目的主機(jī)具有足夠的磁盤空間、內(nèi)存容量和資源,以供遷移后的domain運(yùn)行之用。此外,源主機(jī)和目的主機(jī)還必須具有相同的體系結(jié)構(gòu)和虛擬化擴(kuò)展,例如,如果源主機(jī)使用的是具有虛擬化擴(kuò)展的x86-64體系結(jié)構(gòu)的話,目的主機(jī)也必須如此。之所以這樣做,是為了防止由于內(nèi)核和用戶庫使用的指令集不匹配而導(dǎo)致domain遷移之后無法正常工作的情況。
其次,在網(wǎng)絡(luò)方面,要求源主機(jī)和目的主機(jī)還必須位于同一子網(wǎng)上。遷移domain時,如果目的地結(jié)點(diǎn)位于不同的子網(wǎng)上,那么遷移將會失敗,因為該domain的MAC和IP地址也隨之遷移。如您運(yùn)行了防火墻,你可能需要創(chuàng)建相應(yīng)的iptables規(guī)則來準(zhǔn)許遷入連接。
再者,遷移時,xend守護(hù)進(jìn)程會中止domain在源主機(jī)上的運(yùn)行,接著將其復(fù)制到目的主機(jī),然后重新啟動該domain 。默認(rèn)時,xend守護(hù)進(jìn)程從本機(jī)接受遷移請求。為了使遷移目標(biāo)接受來自遠(yuǎn)程主機(jī)的遷入請求,您必須修改目的主機(jī)在/etc/xend-config.sxp文件中的xen-relocation-hosts-allow 參數(shù)。因為沒有提供認(rèn)證,所以為安全起見您必須限定允許遷移的主機(jī)。
下面,我們開始介紹用于遷移domain的第一種方法:存儲還原法。
二、存儲還原遷移法
存儲還原法的過程是這樣的:首先,將一個domain的當(dāng)前運(yùn)行狀態(tài)保存到硬盤上的一個文件中,然后,Xend 再利用該文件實(shí)現(xiàn)對該domain原狀態(tài)的還原。其實(shí)這與便攜式計算機(jī)的休眠功能非常相像:休眠時,便攜式計算機(jī)會保存硬盤狀態(tài)的映像,然后自動關(guān)機(jī)。退出休眠時,它會使用保存的磁盤映象將系統(tǒng)還原到之前的運(yùn)行狀態(tài)。
本節(jié)中,我們?yōu)樽x者介紹如何將一個運(yùn)行中的domain 保存為一個文件,之后再用它將domain還原到之前的工作狀態(tài),至于在哪里還原,既可以在同一個服務(wù)器上,也可以在之外的Xen 服務(wù)器上。但在將domain 保存成映像文件之前,一定要騰出足以存放該文件的磁盤空間來。
操作過程
好了,下面開始介紹在Xen 服務(wù)器上遷移Domain的具體操作步驟。具體要做的是:創(chuàng)建一個Debian domain ,然后將它的狀態(tài)保存到一個文件,該文件將用于還原這個Debian domain。
1、創(chuàng)建Debian guest domain :
# xm create debian_etch_domU.cfg –c
2、檢查該domain的運(yùn)行是否正常。因為我們給上述的xm 命令提供了-c參數(shù),這將在當(dāng)前控制臺中啟動客戶機(jī)Domain。但是要想檢查該Domain是否已經(jīng)啟動,就必須使用另外一個控制臺會話。
3、我們將要把這個Domain的當(dāng)前狀態(tài)保存到/xen-saved-images 目錄,當(dāng)然也可以保存到您選擇的其他目錄:
# xm save 1 /xen-saved-images/etch.save 源虛機(jī)被關(guān)閉
4、保存的Domain會從當(dāng)前運(yùn)行的Domain列表中刪除,我們可以用xm 命令列出眼下運(yùn)行的Domain,看看它有沒有被刪掉。
5、從文件還原保存的Domain:
# xm restore /xen-saved-images/etch.save
6、再次執(zhí)行xm 命令,我們將看到,還原后的Domain又回到當(dāng)前Domain列表中了。
相關(guān)說明
把工作中的Domain的運(yùn)行狀態(tài)保存到一個磁盤文件的時候,文件沒有經(jīng)過任何形式的加密,所以惡意用戶只要能夠訪問保存映像文件目錄,就能對這些映像做手腳。因此,確保對存放這些映像的文件夾的訪問的安全就顯得格外重要。
一個Domain的運(yùn)行狀態(tài)就是該Domain在被保存時刻的快照或者映像。所有運(yùn)行中的進(jìn)程的信息和狀態(tài)都被存放到這個文件中。 查看該文件時,您會發(fā)現(xiàn)這是一個龐大的二進(jìn)制文件,其大小等于該Domain被保存時所使用的內(nèi)存量。 因為Xen Domain通常會運(yùn)行一些企業(yè)應(yīng)用程序,所以這個文件一般小不了,通常都在幾GB左右。因此,你必須保證有足夠的存儲空間來存放這個文件。雖然本例將狀態(tài)保持到了一個硬盤文件之上,但是您還可以將這個文件存放到一個足夠大的網(wǎng)絡(luò)文件夾上,甚至一個U盤上。將Domain保存到U盤的確不錯,這樣就可以隨身攜帶,需要時還可以在不同的服務(wù)器上將其還原。
我們能夠使用xm 命令加restore 選項來還原存儲的Domain,這會再次啟動該Domain,并將其還原至被保存時的狀態(tài)。當(dāng)使用存儲還原法時,有一些事項需要時刻注意:因為Domain還原后的ID不同于其保存時刻的Domain ID,所以使用xm 查看還原后的Domain時,一定要注意ID 的變化。雖然Domain被恢復(fù)到了原先的狀態(tài)(被存儲時刻的狀態(tài)),卻不能自動連接到該domain的控制臺,相反,我們必須顯式的運(yùn)行xm 命令才能連接到控制臺。
雖然這種遷移Domain的方式簡單易行,但是一定要注意,由于Domain在保存時就已經(jīng)從活動Domain中刪除,所以運(yùn)行于該Domain上的各種服務(wù)也就無法使用或訪問了。如果您對于這種業(yè)務(wù)中斷情況無法接受,那么就應(yīng)該考慮采用在下一節(jié)中介紹的Xen 的動態(tài)遷移特性
三、動態(tài)遷移法
上面,我們介紹了在Xen 服務(wù)器上遷移Domain時的存儲還原法。雖然這種方法很簡單,但是如果您的服務(wù)器上有不許中斷的關(guān)鍵業(yè)務(wù),或者您想最小化業(yè)務(wù)中斷時間,那么您還是不能采用這種遷移方法。
這時,Xen還為我們提供了一種強(qiáng)大的功能就派上用場了,它就是動態(tài)遷移法。它能讓Domain在運(yùn)行期間,以最小的服務(wù)中斷為代價,將Domain遷移到另外的Xen 服務(wù)器上。
使用Xen動態(tài)遷移可謂好處多多,先將其主要優(yōu)點(diǎn)列舉如下:
·Xen的動態(tài)遷移隨同諸如heartbeat之類的高可用性解決方案一起使用,能給我們帶來一個“永不拋錨”的系統(tǒng)。最新版本的Enterprise SuSe Linux Server 和Red Hat Enterprise Linux 也是利用Xen來提供各種高可用性解決方案的。您可以輕而易舉的滿足各種服務(wù)的苛刻要求,同時還能保證所有關(guān)鍵商業(yè)服務(wù)不會出現(xiàn)中斷。
·它使我們能夠以“治未病”方式來維護(hù)寄放虛擬機(jī)的物理服務(wù)器。您可以監(jiān)視服務(wù)器,然后通過轉(zhuǎn)移系統(tǒng)來即時解決潛在的和可疑的問題。
·它使得在多個服務(wù)器之間實(shí)現(xiàn)負(fù)載均衡成為可能,使我們能夠更好地利用企業(yè)中的所有計算資源,使其利用情況達(dá)到最佳狀態(tài)。需要注意的是,Xen的開源版本目前還不支持在dom0上感應(yīng)到故障時自動進(jìn)行動態(tài)遷移的功能。
·它使得在需要時向系統(tǒng)配置添加計算能力變得更加輕松。
·您可以根據(jù)需要更換硬件,而無需中斷運(yùn)行在該硬件上的服務(wù)。
只知道動態(tài)遷移的好處還不夠,現(xiàn)在介紹一下具體的使用方法。
要求:
- 兩者必須都運(yùn)行有Xen和xend守護(hù)進(jìn)程
- 必須確保目的主機(jī)具有足夠的磁盤空間、內(nèi)存容量和資源
- 源主機(jī)和目的主機(jī)還必須位于同一子網(wǎng)上
- 源主機(jī)和目的主機(jī)還必須具有相同的體系結(jié)構(gòu)和虛擬化擴(kuò)展
配置文件:
[root@host1 ~]# vi /etc/xen/xend-config.sxp
(xend-relocation-server yes)
(xend-relocation-port 8002)
(xend-relocation-address '')
(xend-relocation-hosts- allow '')
再執(zhí)行: /etc/init.d/xend restart
具體操作
首先對動態(tài)遷移時涉及到的服務(wù)器做一下介紹,它們是:
·hostA :一個linux NFS 服務(wù)器,通過網(wǎng)絡(luò)為XenDomain提供存儲空間。
·hostB :一個Xen主機(jī)服務(wù)器,它使用NFS導(dǎo)出的目錄運(yùn)行一個客戶機(jī)Domain:Ubuntu Fuwa 。
·hostC :一個Xen主機(jī)服務(wù)器,它是來自hostB 服務(wù)器的客戶機(jī)Domain 即Ubuntu Fuwa 的遷移目的地。
下圖向我們展示了具體配置情況
⒈ 動態(tài)遷移要求共享存儲器?,F(xiàn)實(shí)中,除了第一節(jié)所提要求外,對網(wǎng)速的最低要求是100MB。為了共享存儲器,我們將在我們在上圖頂部的Xen主機(jī)上建立一個NFS服務(wù)器,欲遷移的Domain使用的就是NFS 服務(wù)器上的共享存儲器空間。
⒉ 編輯/etc /exports 文件,加入下面一行來導(dǎo)出存儲器目錄:
# /xen-storage *(r,sync,no_root_squash)
⒊ 保存文件,并重啟NFS 服務(wù)器。將NFS 服務(wù)器添加到該服務(wù)器的服務(wù)中,并設(shè)為系統(tǒng)重啟時運(yùn)行:
# service nfs startchkconfig nfs on
⒋ 我們將建立兩個Xen 服務(wù)器,并讓他們使用NFS 服務(wù)器提供的存儲器。為了掛載導(dǎo)出目錄,需要為兩個Xen 服務(wù)器都添加安裝點(diǎn):
# mount hostB:/xen-storage
#- mount hostC:/xen-storage
⒌ 修改Xend配置文件,以允許動態(tài)遷移。編輯/etc/xen/xend-config.sxp 文件,并確保以下兩行沒有被注釋掉:
(xend-relocation-port 8002)
(xend-relocation-address '')
其作用是啟動Xen 守護(hù)進(jìn)程,以偵聽和響應(yīng)動態(tài)遷移的各種請求。
⒍ 建立一個運(yùn)行在NFS 服務(wù)器存儲器上的Xen Domain,并在hostB上啟動該客戶機(jī)Domain。并讓該客戶機(jī)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
⒎ 現(xiàn)在,我們有了一個運(yùn)行于hostB的客戶機(jī)Domain,它使用NFS 導(dǎo)出的目錄進(jìn)行存儲。我們可以在hostB上運(yùn)行下列命令來檢查該Domain的運(yùn)行是否正常:
⒏ 接下來,我們將這個客戶機(jī)Domain動態(tài)遷移至hostC 服務(wù)器,為此可能需要幾分鐘的時間。如果遷移失敗,會在控制臺顯示一個指示失敗的消息。
# xm migrate --live ubuntu_fuwa_nfs_domU hostC
⒐ 以上就是將正在運(yùn)行的Domain動態(tài)遷移至另一個Xen 服務(wù)器的全部工作!現(xiàn)在使用xm命令來顯示當(dāng)前運(yùn)行于hostB 和hostC 這兩個服務(wù)器上的Domain,您將發(fā)現(xiàn),所遷移的Domain目前只能在hostC 服務(wù)器上找到,列出的正在hostB服務(wù)器上運(yùn)行的Domain中已經(jīng)找不到被遷移的Domain的影子了。
相關(guān)說明
動態(tài)遷移就是在“帶電”情況下,將一個虛擬機(jī)從一個物理主機(jī)移動到另一個物理主機(jī)的過程。該過程不會對最終用戶造成明顯的影響,從而使得管理員能夠在不影響用戶正常使用的情況下,對物理服務(wù)器進(jìn)行離線維修或者升級。
需要注意的是,要想改變Domain的運(yùn)行地點(diǎn),必須修改默認(rèn)的Xend配置文件。此外,要使所做的修改在主機(jī)上生效,必須重新啟動Xen 服務(wù)器所在的主機(jī)。 我們需要修改以下配置:
·Xend-relocation-server :該標(biāo)志用于啟用/取消服務(wù)器遷移功能。默認(rèn)時,該標(biāo)志設(shè)為no ,即不允許改變服務(wù)器的位置。在遷移過程中,Domain虛擬內(nèi)存將變成未經(jīng)任何加密的原始形式。所以,在不可信的網(wǎng)絡(luò)上啟用該選項時一定要倍加小心。
·Xend-relocation-port :xend守護(hù)進(jìn)程通過該端口進(jìn)行遷移。這個端口的缺省值是8002。
另外,還有兩個無需修改的參數(shù),當(dāng)在企業(yè)部署環(huán)境進(jìn)行遷移時也要注意一下:
·Xend-relocation-address :該標(biāo)志將Domain的遷移限制到特定的接口上。指定的地址是偵聽用于Domain遷移的入局連接的接口地址。只有啟用xend-relocation-server參數(shù)后,才會用到這個標(biāo)志。
·Xend-relocation-hosts-allow:這個標(biāo)志定義了允許跟遷移端口進(jìn)行通信的主機(jī)。其值為一個由空格分隔的正則表達(dá)式序列。如果該值為空,那么將允許全部輸入連接,否則,該值要么與一個IP地址相匹配,要么與一個完整域名相匹配
事實(shí)上,從hostB到hostC的遷移過程,是分為多個階段進(jìn)行的,如下所示:
第一階段:遷移之前。
這時,F(xiàn)uwa Domain運(yùn)行于hostB,并且是一個活動的Domain。
第二階段:預(yù)定。
在hostB上發(fā)出一個遷移請求,然后檢查和確認(rèn)在hostC上可用的資源。然后,Xend在hostC上按照所需的尺寸準(zhǔn)備一個VM容器。如果Xend無法在hostC上獲得所需的資源,那么一切就此結(jié)束。該Domain依舊運(yùn)行在hostB上,就像什么事情也沒發(fā)生一樣,此次遷移嘗試就此放棄。
第三階段:重復(fù)預(yù)拷貝。
先將所有內(nèi)存頁面從hostB傳送到hostC,然后繼續(xù)傳輸在先前傳送過程中發(fā)生變化的頁面。最終,所以頁面都被拷貝到hostC。
到第三階段為止,F(xiàn)uwa Domain仍然正常運(yùn)行于hostC之上。
第四階段:中止并拷貝。
在hostB上運(yùn)行著的Domain被掛起,其所有網(wǎng)絡(luò)流量也被重定向至hostC。這個階段結(jié)束后,除了在hostB上有一個掛起的Domain外,hostB上還有了這個被掛起的Domain的副本。這時,hostB上被掛起的Domain還可以作為原始副本,萬一這一步失敗,它還能在hostB上恢復(fù)運(yùn)行。
第五階段:交付。
如果這一步?jīng)]有錯誤或失敗的話,hostC會向hostB發(fā)送一個指示信息,指出它已經(jīng)擁有了一個跟hostB完全一致的Domain映像。現(xiàn)在,hostB將從它的Xen 服務(wù)器中刪除該Domain。從這時起,hostC將成為這個Domain的第一宿主機(jī)。
在第四階段至第五階段期間,F(xiàn)uwa Domain處于停機(jī)狀態(tài)。
第六階段:激活。
在hostC上激活被遷移的Domain。該Domain內(nèi)部的全部設(shè)備驅(qū)動程序現(xiàn)在關(guān)聯(lián)至新的機(jī)器上。至此,F(xiàn)uwa Domain又在hostC上復(fù)活了。
這些步驟都是在幕后進(jìn)行的,正是這一系列默默無聞的操作,才使得遷移能夠如此平穩(wěn)的和無縫的過渡!
四、結(jié)束語
本章我們研究了遷移Xen客戶機(jī)Domain的兩種方式:存儲還原法和動態(tài)遷移法。前一種方法類似便攜式計算機(jī)的深度休眠,它先將捕獲的domain運(yùn)行狀態(tài)作為映像存放在磁盤上,之后再用該映像對這個domain 進(jìn)行還原。后一種方式以最少的中斷和停機(jī)時間來動態(tài)改變處于運(yùn)行狀態(tài)中的domain的運(yùn)行位置。綜合使用這兩種遷移方法,定能使虛擬化技術(shù)的功效更上一層樓。
相關(guān)文章
在Xen虛擬機(jī)全虛擬化環(huán)境中安裝Windows2003系統(tǒng)
本文主要介紹了Xen虛擬機(jī)全虛擬化環(huán)境中安裝Windows2003系統(tǒng),Xen虛擬機(jī)支持兩種客戶機(jī)的安裝方式。一種是半虛擬化,一種是全虛擬化。Win2003系統(tǒng)要求在全虛擬化的環(huán)境下安裝和運(yùn)行。2016-10-10
Linode Xen 下 grsecurity >= 4.3 崩潰問題
本文給大家分享的是在Linode Xen 下 grsecurity >= 4.3 崩潰問題的個人解決辦法,雖然官方已修復(fù)此問題,但還是分享給大家,就當(dāng)給大家學(xué)習(xí)個思路吧2017-01-01
Xen虛擬機(jī)在CentOS系統(tǒng)中的安裝和使用方法
相信大家都知道XEN是目前Linux上的最佳的虛擬化解決方案,特別適合于服務(wù)器應(yīng)用,所以這篇文章給大家分享了在CentOS系統(tǒng)中Xen虛擬機(jī)的安裝和使用方法,文中通過圖文介紹的很詳細(xì),相信對大家學(xué)習(xí)使用Xen虛擬機(jī)具有一定參考借鑒價值,有需要的朋友們下面來一起看看吧。2016-10-10
CentOS 5.X xen虛擬機(jī)的安裝配置及基本使用
這篇文章主要介紹了CentOS 5.X xen虛擬機(jī)的安裝配置及基本使用的相關(guān)資料,需要的朋友可以參考下2016-10-10
深入理解Xen虛擬機(jī)克隆復(fù)制實(shí)戰(zhàn)
本篇文章主要介紹了Xen虛擬機(jī)克隆實(shí)戰(zhàn),每次安裝創(chuàng)建步驟比較繁瑣,本文介紹通過virt-clone命令克隆xen虛擬機(jī)實(shí)戰(zhàn)。2017-03-03
Xen虛擬化進(jìn)階篇 Xen平臺下虛擬機(jī)的實(shí)時遷移
Xen為我們提供了一種強(qiáng)大的功能,它就是動態(tài)遷移法。它能讓Domain在運(yùn)行期間,以最小的服務(wù)中斷為代價,將Domain遷移到另外的Xen 服務(wù)器上2016-10-10

