微软在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