將虛擬機從一臺微軟Hyper-V主機移動到另一臺并不是驚天動地的消息,但是你做到了嗎?微軟Server 2012和2012 R2通過圖形Hyper-V管理器就能輕易實現這個遷移過程。如果你像我一樣想加速遷移過程--甚至自動化該過程--PowerShell可以幫助你。你還可以通過使用SMB 3.0文件共享來加速遷移過程。
將虛擬機從一臺主機遷移到另一臺主機的動機很多,從負載平衡到老主機退役。過去的一個挑戰就是在漫長的遷移過程中遭遇停機,但以后再也不會出現了。動態遷移保障了整個虛擬機及其存儲的遷移過程順利進行。
微軟動態遷移有三種方式:
無共享實時遷移--在這種遷移過程中,你將虛擬機及其存儲從一臺服務器遷移到另一臺服務器。
動態存儲遷移--虛擬機設置留在當前主機上,但是虛擬機的存儲(虛擬硬盤)遷移到其他位置。
動態遷移--允許將虛擬機從一個集群節點在線遷移到另一個集群結點。
本文中,我將重點介紹無共享實時遷移,也是三種類型中最耗費時間的一種。雖然你可以使用System Center虛擬機管理器執行此類遷移,但我將通過Server 2012中的Hyper-V cmdlet實現。
Hyper-V cmdlet實現動態遷移 實驗室準備
我喜歡在實驗室環境中嘗試新的想法和技術,在生產之前你也應該嘗試一下。我的實驗室環境由一個域控制器和兩個Hyper-V主機(名為S1和S2)構成。S1上已經運行了一臺虛擬機(名為Server1)。我的目標是在不影響客戶正常活動下遷移虛擬機。
簡單地說,無共享實時遷移是指將虛擬機及其存儲順利從一個Hyper-V主機遷移到另一個Hyper-V主機,不會產生停機時間。這是一個復雜的后臺過程,但微軟已經改進了方法使之變得相當簡單。
我在客戶端計算機使用PowerShell remoting或RSAT完成所有的管理。如果你的實驗室環境中沒有執行這些任務的客戶端,可以使用運行虛擬機的Hyper-V主機。
檢查VM狀態
快速檢查虛擬機狀態以確保一切正常。檢查當前Hyper-V主機的狀態和存儲位置:
Get-VM -Name server1 | Format-Table -Property Name, Path, State
PS C:> Get-VMHardDiskDrive -VMName Server1 | Format-Table -Property VMName, Path
啟用和執行動態遷移
設置遷移的基本設置很簡單。你需要啟用遷移功能并選擇一個移動網絡。在生產環境中,最好有多個網絡接口卡并且在獨立網絡中推動遷移進程。對于實驗室測試來說,是可以使用現有的網絡的,因為沒有最終用戶會受到影響。
為了啟動虛擬機遷移,在兩個Hyper-V服務器中輸入下面的命令或在客戶端使用PowerShell remoting.
PS C:> Enable-VMMigration
在兩個Hyper-V主機上添加虛擬機遷移網絡:
PS C:> Add-VMMigrationNetwork 192.168.3.0/24
將虛擬機及其存儲遷移到另一個Hyper-V主機現在只是一個命令。我現在要將虛擬機移動到S2主機上并將存儲放到"C:HyperV"這里。為了測試,我在遷移過程中ping到虛擬機看看通信情況。命令如下:
PS C:> Move-VM –Name Server1 -DestinationHost s2 -DestinationStoragePath c:HyperV
使用SMB 3.0共享執行遷移
如果你真的想加速移動過程,不管虛擬機是在單獨的還是在集群中,你都可以使用新的SMB 3.0文件共享。我們之前有介紹過SMB 3.0包括很多功能,但最重要的是,它提升了性能。
首先在虛擬機存儲的目標位置設置SMB 3.0共享和權限。你需要為管理員和兩臺主機創建共享權限,并將這些權限分配給NTFS.我在兩臺Hyper-V主機上都創建了,因此我可以來回移動虛擬機。
PS C:> New-SmbShare -Name Share1 -Path C:hyperv -FullAccess Companyadministrator, CompanyS1, CompanyS2
PS C:> Set-SmbPathAcl -ShareName Share1
使用SMB共享執行遷移的過程和之前相似:
PS C:> Move-VM –Name Server1 -DestinationHost s2 -DestinationStoragePath S2Share1
可能會遇到一些權限問題,尤其是從客戶端執行時。你可以通過啟用主機和客戶端之間的委托約束解決。
使用動態遷移來移動虛擬機設置非常簡單,而且如果了解PowerShell cmdlet的話會很容易自動化。另外可以考慮使用新的SMB 3.0共享提升你的遷移速度。
新聞熱點
疑難解答