Hyper-V复制(Hyper-V Replica)是随Windows Server 2012推出的一项灾难恢复技术,而Hyper-V管理器(Hyper-V Manager)是一款使用方便的工具,可以检查目前在运行的所有虚拟机的复制健康状况。
不过,有时候你想使用PowerShell小命令(cmdlet),检查复制健康状况。比如说,在运行许多主服务器和复制服务器的大型环境中,使用Hyper-V管理器收集所有虚拟机的复制健康状况可能要花相当长的时间。
有164多个PowerShell小命令适用于Windows Server 2012上的Hyper-V模块;其中16个小命令是专门为了与Hyper-V复制技术结合使用而设计的。在这16个Hyper-V复制PowerShell小命令中,有两个PowerShell小命令可以用来检查Hyper-V复制状况,并获得复制统计数据:Get-VMReplication和Measure-VMReplication。
PowerShell小命令不仅允许你检查多个虚拟机的复制健康状况,它们还提供了复制健康状况方面的低层信息,然后将输出结果保存在一个CSV文件中。比如说,你可以获得所有虚拟机的上一次成功复制状况,然后将输出结果保存在文本或CSV文件中,供进一步分析。同样,你可以访问拥有特定复制健康状况,目前复制到表格中特定复制服务器的所有虚拟机的名称。
这两个小命令都显示了复制健康状况,但是有着不同的信息,如下面屏幕截图显示:
屏幕截图1
正如你从上面屏幕截图所见,Get-VMReplication小命令显示了当前服务器(当前服务器充当主服务器)上所有虚拟机的复制健康状况,还显示了复制服务器名称――虚拟机复制到该复制服务器。它还显示了与复制服务器进行沟通所用的协议和网络端口。如果你需要获得所有虚拟机的复制健康状况连同复制服务器名称及其参数,那就使用Get-VMReplication小命令。
另一方面,Measure-VMReplication小命令不仅显示了所有虚拟机的复制健康状况,它还显示了上一次复制时间(LReplTime)和平均复制数据大小(AvgReplSize(m)),这两个信息都没有显示在"Get-VMReplication小命令中。
这两个小命令都实现了两种共有的属性,表明了当前复制健康状况和虚拟机的状态。被启用进行Hyper-V复制的虚拟机会返回三种复制健康状况中的一种:“Normal”(正常)、“Warning”(等待)或“Critical”(危急)。
复制健康状况显示在输出表格中的“Health”(健康)这一列。复制状态总是表明了虚拟机的当前状态,这体现在小命令输出结果中的“State”(状态)这一列,如上面屏幕截图所示。虚拟机的复制状态附有简短介绍。
如之前解释的那样,几个属性是这两个小命令都显示的,但是一些属性只出现在其中一个小命令中。比如说,“Name”(名称)、“State”(状态)和“Health”(健康)这三个属性是Get-VMReplication小命令和Measure-VMReplication小命令都显示的,但是“FailedOverReplicationType”、“LastTestFAiloverInitiatedTime”及另外许多属性只作为Measure-VMReplication小命令的一部分而实现的。
下面屏幕截图显示了这两个小命令实现的属性:
屏幕截图2
你从上面这个屏幕截图可以看到,有几个属性是这两个小命令共有的,但是与复制健康统计数据有关的属性却只出现在Measure-VMReplication小命令中。这那是由于Get-VMReplication小命令提供了主服务器与复制服务器复制关系方面的信息,而Measure-VMReplicaiton小命令用来获得某一个虚拟机的复制健康统计数据。
万一复制遇到了任何问题,或者如果你看到任何虚拟机出现“危急”或“等待”的复制健康状况,那么可以使用Measure-VMReplication小命令,获得复制健康统计数据。
Get-VMReplication小命令和Measure-VMReplication小命令都支持-ComputerName参数,这个参数让你可以获得远程Hyper-V服务器方面的复制健康数据,如下面屏幕截图所示:
屏幕截图3
除了-ComputerName参数外,这两个小命令还支持另外许多参数。比如说,如果你只需要查看主虚拟机(即从主服务器复制到复制服务器的虚拟机)列表,可以使用带“Primary”值的-ReplicationMode,如下面屏幕截图所示:
屏幕截图4
主服务器还可以充当复制服务器,从另一台主服务器复制虚拟机,但这不是生产环境下的理想配置。在这样一种配置中,“Mode”(模式)这一列会显示“Primary”,表示主虚拟机,显示“Replica”表示复制虚拟机。
提示:在你开始排查问题之前,有必要了解虚拟机所处的不同模式。由于Hyper-V复制是单向的(从主服务器复制到复制服务器),势必总是可以从主服务器获得复制健康状况,以获得更多的数据,供进一步排查所用。
与-ReplicationMode相似的是,还有一个-ReplicationState参数,让你可以检查特定的复制状态。比如说,想列出获得没有在复制或处于“Error”(出错)复制状态的所有虚拟机,你就可以使用下面这个命令:
屏幕截图5
正如你从上面屏幕截图所见,Get-VMReplication命令只列出了处于“Error”(出错)复制状态的虚拟机。你还可以借助-ReplicationState参数,指定其他的复制状态。虚拟机可能处于下列复制状态中的一种:
·Error:如果虚拟机不再复制,或出现了错误,就显示这个复制状态。
·FailOverWaitingCompletion:这个状态表明故障切换仍在进行中。
·FailedOver:这个状态表明虚拟机故障切换已完成。
·NotApplicable:如果虚拟机未参与Hyper-V复制,就显示“NotApplicable”状态。
·ReadyForInitialReplication:如果虚拟机已启用了Hyper-V复制,但是初始复制还没有完成,就显示这个复制状态。这个复制状态显示在主服务器上,或针对主虚拟机。
·Replicating:虚拟机在正常复制。
·Resynchronizing:重新同步事件已自动触发,或被管理员触发。
·ResynchronizeSuspended:重新同步过程被暂停。
·Suspended:虚拟机被挂起。换句话说,复制被暂停。
·SyncedReplicationComplete:虚拟机的重新同步已成功完成。
·WaitingForInitialReplication:这个状态显示在复制虚拟机上。这表明已针对虚拟机启用复制,并且在复制服务器处为虚拟机创建了指针,但初始复制还没有完成。在主服务器上,“ReadyForInitialReplication”复制状态会显示。
·WaitingForStartResynchronize:如果需要进行重新同步,虚拟机可能进入这个复制状态。
提示:对参与Hyper-V复制的任何虚拟机而言,“State”(状态)这一列应该报告“Replicating”的状态,而“Health”(健康)这一列应该报告“Normal”的状态。
http://www.serverwatch.com/server-tutorials/checking-hyper-v-replication-health-using-powershell-cmdlets.html