Hyper-V可以實(shí)現(xiàn)兩種類型的實(shí)時(shí)遷移:使用共享存儲(chǔ)的實(shí)時(shí)遷移和不使用共享存儲(chǔ)的實(shí)時(shí)遷移。不論哪種實(shí)時(shí)遷移方式都可以在不產(chǎn)生任何中斷時(shí)間的情況下將虛擬機(jī)移動(dòng)到另外一個(gè)地方。
但是在沒有共享存儲(chǔ)的環(huán)境中,只能通過手動(dòng)初始化的方式來移動(dòng)虛擬機(jī)(VM),在擁有共享存儲(chǔ)的環(huán)境中進(jìn)行自動(dòng)或者手動(dòng)虛擬機(jī)遷移之前,需要安裝Windows故障轉(zhuǎn)移集群特性。通常我們討論的Hyper-V實(shí)時(shí)遷移是指擁有共享存儲(chǔ)的實(shí)時(shí)遷移。這篇文章介紹了在共享存儲(chǔ)環(huán)境中,實(shí)時(shí)遷移技術(shù)如何將虛擬機(jī)從一臺(tái)Hyper-V服務(wù)器移動(dòng)到另外一臺(tái)上。
微軟Hyper-V實(shí)時(shí)遷移使用TCP/IP網(wǎng)絡(luò)來將虛擬機(jī)內(nèi)存數(shù)據(jù)移動(dòng)到Hyper-V集群中的另外一個(gè)節(jié)點(diǎn)上。
當(dāng)自動(dòng)或者手動(dòng)觸發(fā)實(shí)時(shí)遷移時(shí),源和目的Hyper-V服務(wù)器之間會(huì)建立一個(gè)TCP連接。在目的Hyper-V服務(wù)器上創(chuàng)建虛擬機(jī)框架,按照源虛擬機(jī)的配置進(jìn)行內(nèi)存分配。
之后,源虛擬機(jī)的內(nèi)存開始被移動(dòng)到目的Hyper-V服務(wù)器上。在這個(gè)過程中,有兩種內(nèi)存頁文件被復(fù)制:原始內(nèi)存頁和發(fā)生變化的內(nèi)存頁。
這個(gè)過程當(dāng)中源Hyper-V服務(wù)器執(zhí)行了以下操作: Hyper-V源服務(wù)器在向目的Hyper-V服務(wù)器發(fā)送初始內(nèi)存頁的過程中,會(huì)持續(xù)記錄發(fā)生變化的內(nèi)存頁。
源服務(wù)器重復(fù)內(nèi)存頁復(fù)制操作,每一次,內(nèi)存頁中被更改的部分也會(huì)被復(fù)制。
這之后虛擬機(jī)繼續(xù)運(yùn)行在源服務(wù)器上。在源服務(wù)器復(fù)制完原始內(nèi)存頁文件之后,就開始向目的Hyper-V服務(wù)器復(fù)制發(fā)生變化的內(nèi)存頁文件。復(fù)制過程完成之后,源服務(wù)器在目的Hyper-V服務(wù)器上注冊虛擬機(jī)及其狀態(tài)。
之后,源服務(wù)器將存儲(chǔ)控制權(quán)限移交給目的服務(wù)器,包括VHD文件和直通磁盤。接著,虛擬機(jī)就可以在目的服務(wù)器啟動(dòng)了。
這時(shí),虛擬機(jī)已經(jīng)在目的服務(wù)器開始運(yùn)行了,但是其在目的服務(wù)器獲取了一個(gè)新的MAC地址。為了確保實(shí)時(shí)遷移的虛擬機(jī)可以和其他網(wǎng)絡(luò)設(shè)備成功通信,目的服務(wù)器會(huì)向物理網(wǎng)絡(luò)交換機(jī)發(fā)送消息來學(xué)習(xí)虛擬機(jī)的新MAC地址。
實(shí)時(shí)遷移過程可以在幾秒或者幾分鐘之內(nèi)完成,這依賴于如下幾個(gè)因素:
如果在遷移過程中內(nèi)存頁文件正在被使用,那么遷移過程就將花費(fèi)更長的時(shí)間。
如果虛擬機(jī)正在訪問網(wǎng)絡(luò),或者虛擬機(jī)內(nèi)存頁文件正在發(fā)生快速變化,遷移的時(shí)間將會(huì)增長。
用于實(shí)時(shí)遷移的網(wǎng)絡(luò)速度同樣會(huì)影響遷移時(shí)間。推薦使用1GB或者快速以太網(wǎng)來加速實(shí)時(shí)遷移過程。