使用PowerShell克服Hyper-V熱遷移限制
微軟在Windows Server 2008R2系統(tǒng)里改進(jìn)了Hyper-V的熱遷移,這也拉近了和對手(Vmware)產(chǎn)品的差距,但是它仍然有許多的限制。不過你可以使用PowerShell命令行工具來熱遷移,從而突破這些限制。
管理員利用Hyper-V的熱遷移,可以幾乎不間斷地把一個(gè)虛擬機(jī)從Hyper-V群集節(jié)點(diǎn)轉(zhuǎn)移到另一個(gè)節(jié)點(diǎn)。當(dāng)然,還會有少許的中斷系統(tǒng)時(shí)間,各種各樣的虛擬機(jī)熱遷移都不能避免,這是熱遷移的通病,而且各種虛擬化產(chǎn)品都是以虛擬機(jī)的遷移中斷時(shí)間來作標(biāo)準(zhǔn)。新的Hyper-V 3.0改進(jìn)了Hyper-V熱遷移的一些限制,現(xiàn)在通過PowerShell命令行工具的確可以看到這些改進(jìn)。
使用PowerShell故障轉(zhuǎn)移命令行工具
大多數(shù)的Hyper-V群集都用System Center Virtual Machine Manager (簡稱SCVMM)來管理,不過在只有一個(gè)或者極少量的Hyper-V服務(wù)器的群集的時(shí)候,PowerShell命令行工具可以避免使用SCVMM熱遷移時(shí)帶來的額外中斷時(shí)間,讓熱遷移的過程自動化和策略化。多數(shù)Windows群集管理員都熟練使用cluster。exe去管理群集資源,不過PowerShell群集故障轉(zhuǎn)移命令行工具還可以用來進(jìn)行系統(tǒng)的熱遷移。
在同一群集中單獨(dú)遷移虛擬機(jī)到另一個(gè)節(jié)點(diǎn)
下面的PowerShell腳本可以讓你靈活地遷移虛擬機(jī)而不受群集的約束。你所要做的,是確認(rèn)好群集的命名,群集虛擬機(jī)資源,還有你即將要遷移虛擬機(jī)到哪一個(gè)目標(biāo)節(jié)點(diǎn)。你也可以修改這個(gè)腳本用于遷移多個(gè)虛擬機(jī),這可以讓你自動完成熱遷移時(shí)節(jié)點(diǎn)的準(zhǔn)備。
有一個(gè)要點(diǎn),如果你要遷移一個(gè)Windows 7系統(tǒng)的虛擬機(jī),你需要安裝遠(yuǎn)程服務(wù)管理工具(Remote Server Administration Tools-RSAT)和確認(rèn)啟動了群集的故障轉(zhuǎn)移。一般情況下,啟用群集的時(shí)候服務(wù)器就會自動啟懂RSAT。
下面的PowerShell腳本可以對群集里的虛擬機(jī)熱遷移:
# ------------------------------------------------------------------------------
# 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"
確認(rèn)你要遷移的虛擬機(jī)是啟動狀態(tài)(否則你將會收到一個(gè)錯(cuò)誤信息),下面是使用腳本的步驟:
1.復(fù)制上面的腳本,保存為。ps1的腳本文件(如:VM。ps1)
2.打開PowerShell。(開始菜單-程序)
3.運(yùn)行之前保存的腳本。(如VM。ps1)
4.填入處于同一群集中的各項(xiàng)應(yīng)答必填項(xiàng),群集名稱提示,虛擬機(jī)群集資源名稱和目標(biāo)節(jié)點(diǎn)。
5.圖1填好群集屬性等提示。
圖2從群集故障轉(zhuǎn)移管理或者命令狀態(tài)查看熱遷移進(jìn)程。
在同一個(gè)群集里從同一個(gè)節(jié)點(diǎn)遷移所有的虛擬機(jī)到另一個(gè)節(jié)點(diǎn)
為了把維護(hù)工作放在單獨(dú)一個(gè)服務(wù)器上,你可能要做一個(gè)熱遷移,把所有的虛擬機(jī)從一個(gè)服務(wù)器移動到同個(gè)群集里的另一個(gè)服務(wù)器。你可以使用PowerShell命令行代替Hyper-V管理器快速地執(zhí)行虛擬機(jī)遷移,或者做一個(gè)小小的修改以適應(yīng)維護(hù)事件或者對節(jié)點(diǎn)的失敗遷移作出快速的處理。相對于Hyper-V一次只能遷移一個(gè)服務(wù)器,PowerShell命令行簡直神了。
這里是同時(shí)熱遷移多個(gè)虛擬機(jī)的腳本:
# ------------------------------------------------------------------------------
# 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"
這腳本的執(zhí)行步驟和遷移單個(gè)虛擬機(jī)一樣(見上面單個(gè)虛擬機(jī)腳本運(yùn)用的說明)。把腳本保存起來,運(yùn)行之,根據(jù)提示填入相應(yīng)的屬性。
現(xiàn)在你應(yīng)該會覺得PowerShell命令行工具非常有用了吧,稍作修改就能完成你用Hyper-V熱遷移做不到的事情。到VirtuallyAware.com分享你的熱遷移心得吧。
原文鏈接:http://www.searchvirtual.com.cn/showcontent_55447.htm