使用PowerShell克服Hyper-V熱遷移限制
微軟在Windows Server 2008R2系統里改進了Hyper-V的熱遷移,這也拉近了和對手(Vmware)產品的差距,但是它仍然有許多的限制。不過你可以使用PowerShell命令行工具來熱遷移,從而突破這些限制。
管理員利用Hyper-V的熱遷移,可以幾乎不間斷地把一個虛擬機從Hyper-V群集節點轉移到另一個節點。當然,還會有少許的中斷系統時間,各種各樣的虛擬機熱遷移都不能避免,這是熱遷移的通病,而且各種虛擬化產品都是以虛擬機的遷移中斷時間來作標準。新的Hyper-V 3.0改進了Hyper-V熱遷移的一些限制,現在通過PowerShell命令行工具的確可以看到這些改進。
使用PowerShell故障轉移命令行工具
大多數的Hyper-V群集都用System Center Virtual Machine Manager (簡稱SCVMM)來管理,不過在只有一個或者極少量的Hyper-V服務器的群集的時候,PowerShell命令行工具可以避免使用SCVMM熱遷移時帶來的額外中斷時間,讓熱遷移的過程自動化和策略化。多數Windows群集管理員都熟練使用cluster。exe去管理群集資源,不過PowerShell群集故障轉移命令行工具還可以用來進行系統的熱遷移。
在同一群集中單獨遷移虛擬機到另一個節點
下面的PowerShell腳本可以讓你靈活地遷移虛擬機而不受群集的約束。你所要做的,是確認好群集的命名,群集虛擬機資源,還有你即將要遷移虛擬機到哪一個目標節點。你也可以修改這個腳本用于遷移多個虛擬機,這可以讓你自動完成熱遷移時節點的準備。
有一個要點,如果你要遷移一個Windows 7系統的虛擬機,你需要安裝遠程服務管理工具(Remote Server Administration Tools-RSAT)和確認啟動了群集的故障轉移。一般情況下,啟用群集的時候服務器就會自動啟懂RSAT。
下面的PowerShell腳本可以對群集里的虛擬機熱遷移:
# ------------------------------------------------------------------------------
# Migrate Single Virtual Machine With Failover Cluster CMDLet
# ------------------------------------------------------------------------------
# Necessary to enable failover cluster functions
Import-Module FailoverClusters
$CL = Read-Host "Enter Cluster Alias Name"
$VM = Read-Host "Enter Full Cluster Name Resource Name of VM to Migrate"
$DH = Read-Host "Enter Destination Host Name"
get-cluster "$CL"| Move-ClusterVirtualMachineRole -name "SCVMM $VM Resources" -node "$DH"
確認你要遷移的虛擬機是啟動狀態(否則你將會收到一個錯誤信息),下面是使用腳本的步驟:
1.復制上面的腳本,保存為。ps1的腳本文件(如:VM。ps1)
2.打開PowerShell。(開始菜單-程序)
3.運行之前保存的腳本。(如VM。ps1)
4.填入處于同一群集中的各項應答必填項,群集名稱提示,虛擬機群集資源名稱和目標節點。
5.圖1填好群集屬性等提示。
圖2從群集故障轉移管理或者命令狀態查看熱遷移進程。
在同一個群集里從同一個節點遷移所有的虛擬機到另一個節點
為了把維護工作放在單獨一個服務器上,你可能要做一個熱遷移,把所有的虛擬機從一個服務器移動到同個群集里的另一個服務器。你可以使用PowerShell命令行代替Hyper-V管理器快速地執行虛擬機遷移,或者做一個小小的修改以適應維護事件或者對節點的失敗遷移作出快速的處理。相對于Hyper-V一次只能遷移一個服務器,PowerShell命令行簡直神了。
這里是同時熱遷移多個虛擬機的腳本:
# ------------------------------------------------------------------------------
# Migrate All Virtual Machines on One Node to Another with Failover Cluster CMDLet
# ------------------------------------------------------------------------------
# Necessary to enable failover cluster functions
Import-Module FailoverClusters
$CL = Read-Host "Enter Cluster Alias Name"
$SH = Read-Host "Enter Source Host Name"
$DH = Read-Host "Enter Destination Host Name"
這腳本的執行步驟和遷移單個虛擬機一樣(見上面單個虛擬機腳本運用的說明)。把腳本保存起來,運行之,根據提示填入相應的屬性。
現在你應該會覺得PowerShell命令行工具非常有用了吧,稍作修改就能完成你用Hyper-V熱遷移做不到的事情。到VirtuallyAware.com分享你的熱遷移心得吧。
原文鏈接:http://www.searchvirtual.com.cn/showcontent_55447.htm