在 VMM 中管理存储副本

存储副本是在 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 上运行。
  • VMM 必须在 Windows Server 2025 或更高版本的 Datacenter Edition 上运行。
  • Hyper-V 必须在 Windows Server 2019 或更高版本的 Datacenter、Server Core 或 Nano 上运行。
  • 仅支持同步复制。 不支持异步。
  • 需要两组存储,即卷或文件存储。 源位置和目标位置必须具有相同类型的存储(文件或卷),但实际存储可以混合。 例如,可以在一端使用光纤通道 SAN,另一端有光纤通道 SAN(在超聚合或非聚合模式下)。
  • 每个存储集必须在每个群集中可用。 群集存储不得共享。
  • 源卷和目标卷(包括日志卷)的大小和块大小需要相同。 这是因为存储副本使用块复制。
  • 每个存储服务器上至少需要一个 1-GbE 连接,最好是 10 GbE、iWARP 或 InfiniBand。
  • 每个文件服务器或群集节点都需要防火墙规则,这些规则允许 ICMP、SMB(端口 445 和 SMB Direct 的端口 5445)和 WS-MAN(端口 5985)所有节点之间的双向流量。
  • 你需要是每个群集节点上的管理员组的成员。
  • 目前只能使用 Windows PowerShell 设置存储副本。
  • 源和目标存储必须由同一 VMM 服务器管理。
  • 不支持将 VMM 与 Azure Site Recovery 集成。
  • 不支持设置写入顺序和一致性组。

部署步骤

  1. 标识存储:标识要使用的源和目标存储。

  2. 发现和分类:如果存储当前不在 VMM 构造中,则需要使用 VMM 发现它。 源存储和目标存储都必须由同一 VMM 服务器管理。 发现后,为其创建存储池和存储分类。 了解详细信息

  3. :配对源和目标存储阵列。

  4. 预配:配对存储后,需要从相应存储阵列上创建的源和目标存储池中预配相同的数据和日志卷。 除了为要复制的数据预配卷外,还需要为复制事务日志预配卷。 在源存储上更新数据时,将追加事务日志,并将增量更改与目标存储同步(使用同步复制)。

  5. 创建复制组:卷到位后,可以创建复制组。 复制组是包含多个卷的逻辑组。 复制组需要相同,分别包含源站点和目标站点的数据和日志卷。

  6. 启用复制:现在可以在源复制组和目标复制组之间启用复制。

  7. 刷新:若要完成复制组的创建并触发初始数据复制,需要刷新主存储提供程序和辅助存储提供程序。 数据复制到目标存储。

  8. 验证状态:现在可以检查主复制组的状态。 它必须处于复制状态。

  9. 添加 VM:当增量复制启动并运行时,可以添加使用复制组中包含的存储的 VM。 添加 VM 时,将检测到这些 VM,并开始自动复制。

  10. 运行故障转移:复制处于同步状态后,可以运行故障转移来检查它是否按预期工作。 没有测试故障转移机制,因此你将运行手动故障转移,以响应计划内或计划外中断。 故障转移后,可以删除源站点上的 VM(如果仍存在),并使用复制的数据在目标站点上创建 VM。

  11. 运行故障回复:故障转移完成后,副本 VM 已启动并运行,可以根据需要进行故障回复。 请确保:

    • 如果运行 un计划的故障转移且源位置不可用,则运行故障转移以从辅助位置故障回复到主要位置,然后在主位置创建 VM。
    • 如果运行计划的故障转移并且源 VM 仍然可用,则需要停止复制、删除源 VM、在辅助位置创建 VM,然后重启复制。 然后在主站点上,可以使用与原始 VM 相同的设置创建 VM。

检索 PowerShell 对象

  1. 在开始之前,检索要使用的 PowerShell 对象的名称。

  2. 获取主存储数组的名称,并将其分配给变量。

        $PriArray = Get-SCStorageArray -Name $PriArrayName
    
  3. 获取辅助存储阵列的名称并将其分配给变量。

        RecArray = Get-SCStorageArray -Name $RecArrayName
    
  4. 获取主存储池的名称并将其分配给变量。

        $ $ PriPoolName $RecPool = Get-SCStoragePool -Name $
    
  5. 获取辅助存储池的名称,并将其分配给变量。

        $ $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。 然后创建复制组。

  1. 在源上预配和创建。

        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
    
  2. 在目标上预配和创建。

        $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

刷新存储提供程序

  1. 打开 VMM 控制台。
  2. 选择 结构资源>提供程序。 右键单击该提供程序>“刷新”

验证复制状态

检索源复制组的复制状态,以确保复制按预期工作。

    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

后续步骤