虛擬主機更新太麻煩?不妨讓它試試
對虛擬主機進行維護是為確保能夠對正在運行的IT環境進行很好的審計并符合IT標準以及流程的要求。更為重要的是,對虛擬主機進行維護能夠確保及時應用特定的Windows安全更新。
盡管有幾種方式都能夠將虛擬主機置于維護模式,但我經歷過的最簡單的方式是使用附帶了SCVMM安裝程序的系統中心虛擬機管理器(SCVMM)PowerShell cmdlets。你可以使用虛擬機管理器控制臺將虛擬主機置于維護模式,但每次只允許對單個節點或集群執行維護操作。SCVMM提供了Disable-SCVMHost PowerShell cmdlet,你可以對一臺或多臺虛擬主機執行維護操作。
開啟SCVMM維護模式之前的流程
在調用SCVMM維護模式流程之前有一些事情你需要了解。首先,如果一臺虛擬主機屬于一個集群或者是一個Hyper-V集群的一部分,那么運行在該主機上的所有虛擬機將會被在線遷移到故障切換集群的另一個節點上。如果你在使用SCVMM執行維護操作,那么你將會被問到是否打算將所有正在運行的虛擬機在線遷移到集群中的另一個節點。如果你打算使用Disable-SCVMHost PowerShell cmdlet,那么還必須使用MoveWithinCluster參數。
如果虛擬機沒有在故障切換集群中被配置為高可用,那么當開啟維護模式時,與被在線遷移到故障切換集群內其他節點的虛擬機不同,這些虛擬機將會被保留下來。如果虛擬主機沒有加入集群,那么維護模式過程將保留所有正在虛擬主機上運行的虛擬機。
如何將虛擬主機置于維護狀態
以下是幾個使用Disable-SCVMHost PowerShell cmdlet的例子:
為將單臺虛擬主機置于維護狀態,可以在SCVMM服務器上執行如下PowerShell命令:
- $VMHost = Get-SCVMHost –ComputerName “VHostServer”
- Disable-SCVMHost –VMHost $VMHost -MoveWithinCluste
請注意Disable-SCVMHost命令如果使用-MoveWithinCluster參數,會將虛擬機在線遷移到故障切換集群中的另一個節點上。
如果你打算將特定SCVMM主機組中的所有虛擬主機置于維護模式,那么可以使用如下PowerShell命令:
- $VMMGroup = Get-SCVMHostGroup –Name “Dallas” –VMServer “VHostServer.TechTarget.com”
- $HostsInVMMGroup = Get-SCVMHost –VMHostGroup
- ForEach ($EachHost in $HostsInVMMGroup
- {
- Disable-SCVMHost –VMHost $VMHost -$EachHost
- }
SCVMM支持將Hyper-V主機、VMware ESX主機以及XenServer主機置于維護模式。連接ESX主機以及XenServer時維護過程可能使用不同的方法,但都是使用同一個命令行工具—Disable-SCVMHost cmdlet執行維護模式操作。
當虛擬主機被置于維護模式,SCVMM將自動禁用新虛擬機創建、在線遷移功能并阻止單個主機以及主機集群加入SCVMM主機評級系統。
如下命令所示,從維護模式恢復需要使用SCVMM管理器或者運行Enable-SCVMHost PowerShell cmdlet:
- $MyHost = Get-SCVMHost –ComputerName “VHostServer”
- Disable-SCVMHost –VMHost $MyHost
Enable-SCVMHost 以及 Disable-SCVMHost PowerShell cmdlets 所支持的最為重要的功能之一是不用等待命令執行完成就能夠將控制權立刻交回PowerShell窗口。你可以使用-RunAsynchronously參數,創建一個工作線程執行維護模式,然后立即退回到PowShell窗口。
SCVMM自動維護模式過程的不足之處
有必要指出當你將虛擬主機或者主機集群從維護模式恢復到正常模式時,SCVMM將會恢復虛擬主機所提供的服務。盡管SCVMM允許虛擬主機或者集群從維護模式恢復,參與由SCVMM智能定位功能所支持的SCVMM主機排名,但SCVMM維護恢復過程并不會將之前遷移走的虛擬機遷移回來。SCVMM不會啟動之前被保留下來的虛擬機。你必須手動啟動單臺虛擬主機上的所有虛擬機或者將虛擬機在線遷移回原虛擬主機以平均分配工作負載。這是SCVMM維護過程的眾多不足之一,也就是在虛擬主機能夠提供用戶服務前可能要增加一些人工操作。
盡管SCVMM能夠通過調用動態優化平衡集群內的虛擬工作負載,但執行動態優化,平均分配工作負載可能要花一些時間。