使用PowerShell克服Hyper-V热迁移限制

日期: 2011-11-20 作者:Rob McShinsky翻译:吴炫国 来源:TechTarget中国 英文

微软在Windows Server 2008R2系统里改进了Hyper-V的热迁移,这也拉近了和对手(Vmware)产品的差距,但是它仍然有许多的限制。不过你可以使用PowerShell命令行工具来热迁移,从而突破这些限制。   管理员利用Hyper-V的热迁移,可以几乎不间断地把一个虚拟机从Hyper-V群集节点转移到另一个节点。当然,还会有少许的中断系统时间,各种各样的虚拟机热迁移都不能避免,这是热迁移的通病,而且各种虚拟化产品都是以虚拟机的迁移中断时间来作标准。

新的Hyper-V 3.0改进了Hyper-V热迁移的一些限制,现在通过PowerShell命令行工具的确可以看到这些改进。  ……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

微软在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.填入处于同一群集中的各项应答必填项,群集名称提示,虚拟机群集资源名称和目标节点。

使用PowerShell克服Hyper-V热迁移限制

  图1填好群集属性等提示。

使用PowerShell克服Hyper-V热迁移限制

  图2从群集故障转移管理或者命令状态查看热迁移进程。

      5. 从群集故障转移管理或者命令状态查看热迁移进程。

  在同一个群集里从同一个节点迁移所有的虚拟机到另一个节点

  为了把维护工作放在单独一个服务器上,你可能要做一个热迁移,把所有的虚拟机从一个服务器移动到同个群集里的另一个服务器。你可以使用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分享你的热迁移心得吧。

翻译

吴炫国
吴炫国

吴炫国,在网络管理领域有丰富经验,专注硬件、服務器、WiFi等方面。强烈爱好虚拟化,TechTarget中国虚拟化论坛版主。

相关推荐

  • 回顾年度9大虚拟化技术

    虚拟化管理员从未放弃追寻更好虚拟化技术,以使他们的工作更快、更易于管理以及更好地优化。 我们看到,虚拟化工具在 […]

  • 从Azure VM到Hyper-V:想想这些技巧

    多年来,IT行业已经推动IT人员把工作负载转到云中。虽然在公有云中有一些好处,但有些工作负载更适合运行云本地数据中心中。

  • 功能多样的Get-VM PowerShell cmdlet,你知道多少?

    Hyper-V管理员能够使用Get-VM PowerShell cmdlet查看并调整一系列虚拟机配置信息。微软花费大量精力对PowerShell进行优化,以提升其对本地或者远程服务器的管理功能。

  • 支持Linux虚拟机:新版Hyper-V来帮忙

    大家都知道,Linux虚拟机无法利用Hyper-V针对Windows虚拟机提供的众多特性。幸运的是,情况已经发生变化,Hyper-V现在能够为Linux提供更多的支持。