在 VMM 中管理存储副本
重要
此版本的 Virtual Machine Manager (VMM) 已终止支持。 建议 升级到 VMM 2022。
Windows Server 2016 中引入了存储副本。 它支持在群集或服务器之间进行与存储无关的块级同步复制,以实现灾难准备和恢复,并跨站点扩展故障转移群集以实现高可用性。 同步复制支持使用与崩溃时一致的卷镜像物理站点中的数据,以确保在文件系统级别的零数据损失。 异步复制允许超出都市范围、可能存在数据损失的站点扩展。
本文介绍了存储副本如何与 System Center - Virtual Machine Manager (VMM) 集成,并介绍如何使用 PowerShell 设置存储副本以在 VMM 构造中复制存储。
VMM 中的存储副本
可以使用存储副本复制 Hyper-V 群集数据或文件数据。 在 VMM 中使用存储副本提供了许多业务优势:
- 可消除 SAN 等同步复制解决方案所产生的成本和复杂性。
- 同步复制可最大限度地减少停机时间和数据丢失。 它提供 0 (零数据丢失) RPO。 仅在主站点出现故障,继而辅助站点开始运作这一过程中可能发生 RTO(数据不可用)。
- 源存储和目标存储硬件无需完全相同。
开始之前
- VMM 必须在 Windows Server 2016 或更高版本的 Datacenter Edition 上运行。
- Hyper-V 必须在 Windows Server 2016 或更高版本的 Datacenter、Server Core 或 Nano 上运行。
- 仅支持同步复制。 不支持异步复制。
- 将需要两组存储,可以是卷存储或文件存储。 源和目标位置必须具有相同类型的存储(文件或卷),但实际存储可混用。 例如,可以在一端使用光纤通道 SAN,将空间直通 (在超聚合模式或非聚合模式下) 另一端。
- 每组存储应在每个群集中可用。 群集存储不应共享。
- 源卷和目标卷(包括日志卷)的大小和块大小应完全相同。 这是因为存储副本使用块复制。
- 每个存储服务器上至少需要一个 1-GbE 连接,最好是 10 GbE、iWARP 或 InfiniBand。
- 每个文件服务器或群集节点都需要防火墙规则,这些规则允许 ICMP、SMB (端口 445 以及 SMB Direct) 的 5445,以及 WS-MAN (端口 5985) 所有节点之间的双向流量。
- 你需要成为每个群集节点上管理员组的成员。
- 当前仅可使用 Windows PowerShell 设置存储副本。
- 源存储和目标存储必须由同一个 VMM 服务器管理。
- 不支持将 VMM 与 Azure Site Recovery 进行集成。
- 不支持设置写入顺序和一致性组。
部署步骤
标识存储:标识要使用的源存储和目标存储。
发现和分类:如果你的存储当前不在 VMM 构造中,你需要使用 VMM 来发现它。 源存储和目标存储必须由同一 VMM 服务器管理。 发现后,为其创建存储池和存储分类。 了解详细信息。
配对:将源存储阵列和目标存储阵列进行配对。
预配:配对存储后,需要从在相应存储阵列上创建的源和目标存储池中预配相同的数据和日志卷。 除了为将要复制的数据设置卷,还需要为复制事务日志设置卷。 随着源存储上数据的更新,将追加事务日志,并将增量更改与目标存储进行同步(使用同步复制)。
创建复制组:在卷就位后,创建复制组。 复制组是包含多个卷的逻辑组。 复制组需要相同,分别包含源站点和目标站点的数据卷和日志卷。
启用复制:现在你可以启用源复制组和目标复制组之间的复制。
刷新:若要完成复制组的创建并触发初始数据复制,需要刷新主存储提供程序和辅助存储提供程序。 数据将复制到目标存储。
验证状态:现在,你可以检查主复制组的状态。 它应该处于正在复制的状态。
添加 VM:启动并运行增量复制时,可以添加使用复制组中包含的存储的 VM。 添加 VM 时,将检测到它们并开始自动复制。
运行故障转移:复制处于“正在同步”状态后,可以运行故障转移到检查(如果它按预期工作)。 没有测试故障转移机制,因此需要运行手动故障转移,以响应计划内或计划外中断。 故障转移后,可以删除源站点上的 VM ((如果它仍然存在) ),并使用复制的数据在目标站点上创建 VM。
运行故障回复:完成故障转移并且副本 VM 都已启动并运行后,可根据需要运行故障回复。 请确保:
- 如果运行计划外故障转移,并且源位置不可用,则需要运行故障转移以从辅助位置故障回复到主位置,然后在主位置创建 VM。
- 如果运行计划故障转移,并且源 VM 仍可用,则需要停止复制,删除源 VM,在辅助位置创建 VM,然后重新启动复制。 然后,在主站点上,可以使用与原始 VM 相同的设置创建 VM。
检索 PowerShell 对象
在开始之前,检索要使用的 PowerShell 对象的名称。
获取主存储阵列的名称并将其分配给变量。
$PriArray = Get-SCStorageArray - Name $PriArrayName
获取辅助存储阵列的名称并将其分配给变量。
RecArray = Get-SCStorageArray - Name $RecArrayName
获取主存储池的名称并将其分配给变量。
$ $ PriPoolName $RecPool = Get-SCStoragePool -Name $
获取辅助存储池的名称并将其分配给变量。
$ $PriPoolName $RecPool = Get-SCStoragePool -Name $
将存储阵列进行配对
使用存储阵列名称的变量对主存储阵列和辅助存储阵列进行配对。
注意
数组名称应与群集名称相同。
Set-SCStorageArray -StorageArray $PriArray -PeerStorageArrayName $RecArray.name
如果在 VMM 外部创建了群集,并且确实需要重命名数组名称以匹配群集名称,请使用:
Get-SCStorageArray -Name "existing-name" | Set-SCStorageArray -Name "new-name"
设置 LUN,并创建存储组
从数据和日志的存储池中设置 LUN。 然后创建复制组。
在源上进行设置和创建。
Set-SCStorageArray -StorageArray $PriArray -PeerStorageArrayName $RecArray.name $PrimaryVol = New-SCStorageVolume -StorageArray $PriArray -StoragePool $PriPool -Name PrimaryVol -SizeInBytes $VolSize -RunAsynchronously -PhysicalDiskRedundancy "1" -FileSystem "CSVFS_NTFS" -DedupMode "Disabled" $PrimaryLogVol = New-SCStorageVolume -StorageArray $PriArray -StoragePool $PriPool -Name PrimaryLogVol -SizeInBytes $LogVolSize -GuidPartitionTable -RunAsynchronously -FileSystem "NTFS" $PriRG = New-SCReplicationGroup -Name PriRG -StorageVolume $PrimaryVol -LogStorageVolume $PrimaryLogVol
在目标上进行设置和创建。
$RecoveryVol = New-SCStorageVolume -StorageArray $RecArray -StoragePool $RecPool -Name RecoveryVol -SizeInBytes $VolSize -RunAsynchronously -PhysicalDiskRedundancy "1" -FileSystem "CSVFS_NTFS" -DedupMode "Disabled" $RecoveryLogVol = New-SCStorageVolume -StorageArray $RecArray -StoragePool $RecPool -Name RecoveryLogVol -SizeInBytes $LogVolSize -GuidPartitionTable -RunAsynchronously -FileSystem "NTFS" $RecRG = New-SCReplicationGroup -Name RecRG -CreateOnArray -ProtectionMode Synchronous -StorageVolume $RecoveryVol -LogStorageVolume $RecoveryLogVol
启用复制
现在启用源复制组和目标复制组之间的同步复制。
Set-SCReplicationGroup -ReplicationGroup $PriRG -Operation EnableProtection -TargetReplicationGroup $RecRG -EnableProtectionMode Synchronous
刷新存储提供程序
- 打开 VMM 控制台。
- 选择“ 构造资源>提供程序”。 右键单击该提供程序>“刷新”。
验证复制状态
检索源复制组的复制状态,以确保复制按预期工作。
Get replication status Get-SCReplicationGroup | where {($_.Name.EndsWith("PriRG")) -or ($_.Name.EndsWith("RecRG"))} | fl Name, IsPrimary, ReplicationState, ReplicationHealth
创建 VM
在源复制组中使用 LUN 创建一个 VM。 或者,可以在 VMM 控制台中创建 VM。
New-SCVirtualMachine -Name "DemoVM" -VMHost <HostName> -Path $PrimaryVol -VMTemplate <VMTemplate>
运行故障转移
运行故障转移。
Set-SCReplicationGroup -ReplicationGroup $PriRG -Operation PrepareForFailover
Set-SCReplicationGroup -ReplicationGroup SRecRG -Operation Failover
运行故障回复
在故障回复之前,请在 VMM 控制台中删除源 VM(如果它们仍然可用)。 不能故障回复到同一个 VM。
现在运行故障回复:
Set-SCReplicationGroup -ReplicationGroup $PriRG -Operation ReverseRoles -EnableProtectionMode Synchronous -TargetReplicationGroup $RecRG
运行故障回复后,可以使用故障回复的 VHD/配置文件在源站点上创建 VM。
停止复制
如果要停止复制,则需要在源和目标上运行此 cmdlet。
Set-SCReplicationGroup -ReplicationGroup $RecRG -Operation TearDown Tear down need to be done on both RGs
了解更多
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈