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