可以使用存储副本配置两个同步数据的服务器,以便每个服务器都具有相同卷的相同副本。 本文介绍服务器到服务器的复制配置以及如何设置和管理环境。
若要管理存储副本,可以使用 Windows Admin Center 或 PowerShell。
有关如何在 Windows Admin Center 中使用存储副本的概述,请参阅以下视频:
先决条件
Active Directory 域服务林。 (无需运行 Windows Server 2016。
运行 Windows Server 2019 或 Windows Server 2016 Datacenter 的两台服务器。
如果运行的是 Windows Server 2019,则可以改用标准版,前提是仅复制大小不超过 2 TB 的单个卷适合你的方案。
两组存储,可以包括串行连接 SCSI (SAS)“只是一堆磁盘”机箱 (JBOD)、光纤通道存储区域网络 (FC SAN)、互联网小型计算机系统接口 (iSCSI) 目标,或本地 SCSI 或串行高级技术附件 (SATA) 存储。 存储应包含硬盘驱动器(HDD)和固态硬盘(SSD)介质的组合。 使每个存储集仅对每个服务器可用,且没有共享访问权限。
每个存储集必须支持创建至少两个虚拟磁盘,一个用于复制的数据,一个用于日志。 物理存储在所有数据磁盘上的扇区大小必须相同。 物理存储的所有日志盘上的扇区大小必须相同。
每个服务器上至少有一个以太网/TCP 连接用于同步复制,但首选远程直接内存访问(RDMA)。
适当的防火墙和路由器规则,以允许 Internet 控制消息协议(ICMP)、服务器消息块(端口 445 和端口 5445 for SMB Direct),以及 Web 服务管理(WS-Man)(端口 5985)所有节点之间的双向流量。
服务器之间的网络,其带宽足以包含输入/输出(I/O)写入工作负荷,同步复制的平均往返延迟为 5 毫秒。 异步复制没有延迟建议。
如果在本地服务器与 Azure 虚拟机(VM)之间复制,则必须在本地服务器和 Azure VM 之间创建网络链接。 若要创建链接,请使用 Azure ExpressRoute、使用 站点到站点 VPN 网关连接,或在 Azure VM 中安装 VPN 软件,以将其连接到本地网络。
复制的存储不能位于包含 Windows作系统文件夹的驱动器上。
重要
在此方案中,每个服务器必须位于不同的物理站点或不同的逻辑站点中。 每个服务器必须能够通过网络与其他服务器通信。
可以使用 Test-SRTopology
cmdlet 验证其中的许多要求。 如果在至少一台服务器上安装存储副本或安装存储副本管理工具功能,则可以访问此工具。 若要使用该工具,只需安装和运行 cmdlet。 本文稍后将包含详细信息。
Windows Admin Center 要求
若要将存储副本和 Windows Admin Center 一起使用,需要以下项:
系统 | 操作系统 | 要求 |
---|---|---|
两个服务器 (本地硬件、虚拟机和云虚拟机(包括 Azure 虚拟机)的任意组合) |
Windows Server 2019、Windows Server 2016 或 Windows Server(半年频道) | 存储副本 |
一台 PC | Windows 10 | Windows 管理中心 |
注意
目前,无法在 Azure 门户中使用 Windows Admin Center 来管理存储副本。 Windows Admin Center 版本 2410 及更高版本可用于管理存储副本。
术语
此演练使用以下环境作为示例:
两个服务器: SR-SRV05 和 SR-SRV06
表示两个不同的数据中心的逻辑“站点”:Redmond 和 Bellevue
步骤 1:在 PC 上安装和配置 Windows Admin Center
如果使用 Windows Admin Center 管理存储副本,请使用以下步骤设置电脑来管理存储副本。
下载并安装 Windows Admin Center。
下载并安装远程服务器管理工具。
如果使用 Windows 10 版本 1809 或更高版本,请从按需功能安装功能 RSAT:适用于 Windows PowerShell 的存储副本模块。
以管理员身份打开 PowerShell 会话:
- 选择开始。
- 输入 PowerShell。
- 右键单击 Windows PowerShell。
- 选择“ 以管理员身份运行”。
输入以下命令,在本地计算机上启用 WS-Man 协议,并为客户端上的远程管理设置默认配置:
winrm quickconfig
输入 Y 以启用 WinRM 服务并启用 WinRM 防火墙例外。
步骤 2:预配作系统、功能、角色、存储和网络
使用安装类型 Windows Server (桌面体验)在两个服务器节点上安装 Windows Server。
可以使用 通过 ExpressRoute 连接到网络的 Azure VM。
注意
从 Windows Admin Center 版本 1910 开始,你可以在 Azure 中自动配置目标服务器。 如果选择该选项,请在源服务器上安装 Windows Server,然后跳到步骤 3:设置服务器到服务器复制。
添加网络信息,将服务器加入与你的 Windows 10 管理 PC 相同的域(如果你正在使用),然后重新启动服务器。
注意
对于剩余的步骤,请以域用户身份登录,该用户是所有服务器上的内置管理员组的成员。 如果在运行图形服务器安装或在 Windows 10 计算机上,请务必在剩余的步骤中提升 PowerShell 和命令提示符。
将第一组 JBOD 存储机箱、iSCSI 目标、FC SAN 或本地固定磁盘直接连接存储(DAS)连接到站点 Redmond 中的服务器。
将第二组存储连接到 Bellevue 站点中的服务器。
相关方面,在两个节点上安装最新的供应商存储和机箱固件和驱动程序、最新的供应商主机总线适配器(HBA)驱动程序、最新的供应商 BIOS/UEFI 固件、最新的供应商网络驱动程序和最新的主板芯片集驱动程序。 根据需要重启节点。
注意
请参阅硬件供应商文档以配置共享存储和网络硬件。
确保服务器的 BIOS/UEFI 设置启用高性能,例如禁用 C 状态、设置 QPI 速度、启用非单一内存访问(NUMA)和设置最高内存频率。 确保 Windows Server 中的电源管理设置为高性能。 根据需要重启。
按以下部分所述配置角色:
Windows Admin Center 方法
- 在 Windows Admin Center 中,转到服务器管理器,然后选择其中一个服务器。
- 转到 角色和功能。
- 选择 “功能>存储副本”,然后选择“ 安装”。
- 在其他服务器上重复这些步骤。
服务器管理器方法
运行 ServerManager.exe 并创建服务器组。 添加所有服务器节点。
在每个节点上安装文件服务器和存储副本角色和功能。 然后重启节点。
Windows PowerShell 方法
在 SR-SRV06 或远程管理计算机上,在 Windows PowerShell 控制台中运行以下命令以安装所需的功能和角色。 然后重启节点。
在 服务器管理器中,选择“ 创建服务器组”,然后添加所有服务器节点。
在每个节点上安装 文件服务器 角色和 存储副本 功能并重启它们。 若要了解详细信息,请参阅 安装或卸载角色、角色服务或功能
有关这些步骤的详细信息,请参阅 安装或卸载角色、角色服务或功能
按照以下步骤中所述配置存储。
重要
- 必须在每个卷上创建两个分区:一个用于数据,另一个用于日志。
- 日志和数据磁盘必须初始化为 GUID 分区表(GPT),而不是主启动记录(MBR)。
- 这两个数据卷的大小必须相同。
- 这两个日志卷的大小应相同。
- 所有复制的数据磁盘的扇区大小必须相同。
- 所有日志磁盘的扇区大小必须相同。
- 日志卷应使用基于闪存的存储,如 SSD。 建议使用更快的数据存储的日志存储。 日志卷不得用于其他工作负荷。
- 数据磁盘可使用 HDD、SSD 或分层组合,并可使用镜像或奇偶校验空间或 RAID 1、RAID 10、RAID 5 或 RAID 50。
- 如果未指定日志大小,则日志大小默认为 8 GB。 日志卷必须至少为 10 GB 或更大,具体取决于日志要求和组织需求。
- 文件服务器角色仅对 Test-SRTopology 的运作是必要的。 它将打开所需的防火墙端口进行测试。
对于 JBOD 存储设备:
确保每个服务器只能看到该站点的存储机箱,且 SAS 连接已正确配置。
使用存储空间预配存储:使用 Windows PowerShell 或服务器管理器在 Stand-Alone 服务器上部署存储空间 中完成步骤 1 到 3。
对于 iSCSI 存储:
确保每个群集只能看到该站点的存储机箱。 如果使用 iSCSI,则应使用多个网络适配器。
使用供应商文档配置存储。 如果使用基于 Windows 的 iSCSI 目标,请参阅 iSCSI 目标块存储指南。
对于 FC SAN 存储:
确保每个群集只能看到该站点的存储机箱,并且已正确对主机进行分区。
使用供应商文档配置存储。
对于本地固定磁盘存储:
确保存储不包含系统卷、页面文件或转储文件。
使用供应商文档配置存储。
启动 Windows PowerShell 并使用
Test-SRTopology
cmdlet 来确定是否满足所有存储副本要求。 可以在仅限要求模式下使用 cmdlet 进行快速测试,也可以在长时间运行的性能评估模式下使用。例如,若要验证建议的节点是否每个节点都有 F: 卷和 G: 卷,并运行测试 30 分钟,请使用以下命令:
MD c:\temp
重要
在评估期间,如果在指定源卷上使用无写入 IO 负载的测试服务器时,请考虑添加工作负载,以生成有用的报表。 应使用类似生产工作负荷进行测试,以查看实际数字和建议的日志大小。 或者,在测试期间将某些文件复制到源卷中,并下载和运行 DISKSPD 以生成写入 I/O 操作。 例如,将运行 10 分钟的低写入 I/O 工作负荷的示例复制到 D: 卷:
Diskspd.exe -c1g -d600 -W5 -C5 -b8k -t2 -o2 -r -w5 -i100 -j100 d:\test
检查 TestSrTopologyReport.html 报表以确保符合存储副本要求。
步骤 3:设置服务器到服务器复制
使用 Windows Admin Center
添加源服务器:
- 选择 并添加。
- 选择“添加服务器连接”。
- 输入服务器的名称,然后选择“ 提交”。
在“ 所有连接 ”窗格中,选择源服务器。
在 “工具 ”窗格中,选择“ 存储副本”。
选择“新建”以创建新的合作关系。
创建新的 Azure VM 以用作伙伴关系的目标:
在 “与其他服务器复制”下,选择“ 使用新的 Azure VM”,然后选择“ 下一步”。 如果未看到此选项,请确保你使用的是 Windows Admin Center 版本 1910 或更高版本。
指定源服务器信息和复制组名称,然后选择“下一步”。
此步骤开始一个过程,该进程会自动选择 Windows Server 2019 或 Windows Server 2016 Azure VM 作为迁移源的目标。 存储迁移服务建议与源匹配的 VM 大小,但可以通过选择“ 查看所有大小”来替代此限制。 清单数据用于自动配置托管磁盘及其文件系统,并将新的 Azure VM 加入 Active Directory 域。
Windows Admin Center 创建 Azure VM 后,提供复制组名称,然后选择“ 创建”。 然后,Windows Admin Center 开始正常的存储复制副本初始同步过程,以开始保护你的数据。
以下视频演示如何使用存储副本迁移到 Azure VM:
提供合作关系的详细信息,然后选择“ 创建”。
注意
从 Windows Admin Center 的存储复制副本中删除伙伴关系不会删除复制组名称。
使用 Windows PowerShell
接下来,使用 Windows PowerShell 配置服务器到服务器复制。 你必须直接在节点上或从包含 Windows Server 远程服务器管理工具的远程管理计算机上执行以下步骤。
检查以确保以管理员身份使用提升的 Powershell 控制台。
配置服务器间复制。 指定源磁盘和目标磁盘、源日志和目标日志、源节点和目标节点以及日志大小。
New-SRPartnership -SourceComputerName sr-srv05 -SourceRGName rg01 -SourceVolumeName f: -SourceLogVolumeName g: -DestinationComputerName sr-srv06 -DestinationRGName rg02 -DestinationVolumeName f: -DestinationLogVolumeName g: -LogType Raw
下面是示例输出:
DestinationComputerName : SR-SRV06 DestinationRGName : RG02 SourceComputerName : SR-SRV05 PSComputerName :
重要
默认日志大小为 8 GB。 根据 cmdlet 的结果
Test-SRTopology
,可以选择使用-LogSizeInBytes
参数设置更高或更低的值。若要获取复制源和目标状态,请使用
Get-SRGroup
和Get-SRPartnership
cmdlet:Get-SRGroup Get-SRPartnership (Get-SRGroup).replicas
下面是示例输出:
CurrentLsn : 0 DataVolume : F:\ LastInSyncTime : LastKnownPrimaryLsn : 1 LastOutOfSyncTime : NumOfBytesRecovered : 37731958784 NumOfBytesRemaining : 30851203072 PartitionId : c3999f10-dbc9-4a8e-8f9c-dd2ee6ef3e9f PartitionSize : 68583161856 ReplicationMode : synchronous ReplicationStatus : InitialBlockCopy PSComputerName :
根据以下步骤中所述确定复制进度。
在源服务器上运行以下命令并检查事件 ID 5015、5002、5004、1237、5001 和 2200:
Get-WinEvent -ProviderName Microsoft-Windows-StorageReplica -Max 20
在目标服务器上运行以下命令,查看显示创建合作关系的存储副本事件。 此事件指出复制的字节数以及创建合作关系所花费的时间。
例如:
Get-WinEvent -ProviderName Microsoft-Windows-StorageReplica | Where-Object {$_.ID -eq "1215"} | fl
下面是示例输出:
TimeCreated : 4/8/2016 4:12:37 PM ProviderName : Microsoft-Windows-StorageReplica Id : 1215 Message : Block copy completed for replica. > [!NOTE] > By design, Storage Replica dismounts the destination volumes and their drive letters or mount points.
或者,副本的目标服务器组始终声明要复制的剩余字节数。 可以使用 PowerShell 查询信息。
例如:
(Get-SRGroup).Replicas | Select-Object numofbytesremaining
下面是进度示例(不会终止):
while($true) { $v = (Get-SRGroup -Name "RG02").replicas | Select-Object numofbytesremaining [System.Console]::Write("Number of bytes remaining: {0}`r", $v.numofbytesremaining) Start-Sleep -s 5 }
在目标服务器上运行以下命令并检查事件 ID 5009、1237、5001、5015、5005 和 2200 以了解处理进度。 在该序列中不应有关于错误的警告。 将有许多 1237 个事件 ID,这些 ID 表示处理进度。
Get-WinEvent -ProviderName Microsoft-Windows-StorageReplica | FL
步骤 4:管理复制
最后,管理和运行您的服务器到服务器复制基础设施。 可以直接在节点上或通过包含 Windows Server 远程服务器管理工具的远程管理计算机执行以下步骤。
使用
Get-SRPartnership
和Get-SRGroup
cmdlet 确定复制的当前源、目标及其状态。若要测量复制性能,请在源和目标节点上均使用
Get-Counter
。 计数器名称为:\Storage Replica Partition I/O Statistics(*)\刷写暂停次数
\Storage Replica Partition I/O Statistics(*)\挂起刷新I/O的数量
\存储副本分区 I/O 统计(*)\上次日志写入请求次数
\Storage Replica Partition I/O Statistics(*)\Avg.Flush Queue Length
\存储复制分区 I/O 统计信息(*)\当前刷新队列长度
\存储副本分区 I/O 统计信息\应用程序写入请求数
\存储副本分区 I/O 统计(*)\每次日志写入的平均请求数量
\Storage Replica Partition I/O Statistics(*)\Avg.App Write Latency
\Storage Replica Partition I/O Statistics(*)\Avg.App Read Latency
\存储副本统计信息(*)\目标 RPO
\存储副本统计信息(*)\当前RPO
\Storage Replica Statistics(*)\Avg.Log Queue Length
\存储副本统计\当前日志队列长度
\存储副本统计(*)\接收的总字节数
\存储副本统计(*)\发送的总字节数
\存储副本统计(*)\平均网络发送延迟
\存储副本统计信息(*)\复制状态
\Storage Replica Statistics(*)\Avg.Message Round Trip Latency
\存储副本统计信息(*)\上次恢复耗时
\存储副本统计(*)\刷新恢复事务的数量
\存储副本统计(*)\恢复事务数量
\Storage Replica Statistics(*)\刷新复制事务次数
\存储副本统计信息(*)\复制事务数
\存储副本统计信息\最大日志序列号
\Storage Replica Statistics(*)\接收的消息数量
\存储副本统计(*)\发送的消息数量
有关 Windows PowerShell 中的性能计数器的详细信息,请参阅 Get-Counter。
若要从一个站点移动复制方向,请使用
Set-SRPartnership
cmdlet:$params = @{ NewSourceComputerName = 'SR-SRV06' SourceRGName = 'RG02' DestinationComputerName = 'SR-SRV05' DestinationRGName = 'RG01' } Set-SRPartnership @params
警告
当初始同步正在进行时,Windows Server 会阻止角色切换。 如果在允许初始复制完成之前尝试切换,则可能会发生数据丢失。 在初始同步完成之前不要强制切换方向。
检查事件日志以查看复制更改和恢复模式的方向,然后协调。 然后,写入 I/O 可以写入新源服务器的存储。 更改复制方向会阻止在源计算机上写入 I/O。
若要删除复制,请在每个节点上使用
Get-SRGroup
、Get-SRPartnership
、Remove-SRGroup
和Remove-SRPartnership
。 确保仅在当前复制源上运行Remove-SRPartnership
cmdlet,而不是在目标服务器上。 在两个服务器上均运行Remove-SRGroup
。例如,若要从两个服务器中删除所有复制,请运行以下命令:
Get-SRPartnership Get-SRPartnership | Remove-SRPartnership Get-SRGroup | Remove-SRGroup
将 DFS 复制替换为存储副本
许多 Microsoft 客户将 Windows 服务 DFS 复制部署为非结构化用户数据(如个人文件夹和部门共享)的灾难恢复解决方案。 自 Windows Server 2003 R2 起的所有版本中都提供 DFS 复制,并在低带宽网络上运行。 对于具有许多节点的高延迟和低更改环境,这是一种有吸引力的替代方法。
但是,DFS 复制作为数据复制解决方案具有明显的局限性:
- 它不能复制使用中的或打开的文件。
- 它不能同步复制。
- 它的异步复制延迟时间可能是数分钟、数小时或者甚至数天。
- 它依赖数据库(该数据库在电源中断后可能需要进行较长时间的一致性检查)。
- 它通常被配置为多主机,这将允许更改为在两个方向流动,因此可能会覆盖较新的数据。
存储副本没有以上任何这些限制。
但是,存储副本确实存在一些限制,在某些环境中可能会降低其吸引力:
- 它只允许卷之间的一对一复制。 很可能在多个服务器间复制不同卷。
- 尽管它支持异步复制,但它不是针对低带宽、高延迟网络设计的。
- 它不允许用户在进行复制时访问目标服务器上的受保护数据。
如果方案中没有阻止这些因素,可以使用存储副本将 DFS 复制服务器替换为最新的存储副本技术。
此过程在高级别具有以下步骤:
在两台服务器上安装 Windows Server 并配置存储。 可能需要进行一组现有服务器的升级或执行操作系统的干净安装。
确保想要复制的任何数据在一个或多个数据卷上,而不是在 C: 驱动器上。
- 还可以在其他服务器上设定数据种子,以节省时间、使用备份或文件副本,或使用精简预配的存储。 无需完全匹配类似元数据的安全性(这与 DFS 复制不同)。
共享源服务器上的数据,并通过 DFS 命名空间命名空间对其进行访问。 此步骤对于确保如果服务器名称更改为灾难站点中的 DFS 命名空间,用户仍可以访问它。
- 可以在目标服务器上创建匹配的共享,这些共享在正常运行期间是不可用的。
- 不要将目标服务器添加到 DFS 命名空间。 如果这样做,请确保禁用其所有文件夹目标。
启用存储副本复制并完成初始同步。复制可以为同步或异步。
- 建议进行同步复制,以确保目标服务器上的 I/O 数据一致性。
- 强烈建议启用卷影副本并使用 vssadmin 或其他所选工具定期拍摄快照。 此操作可保证应用程序一致地将其数据文件写入磁盘。 如果发生灾难,则可以从可能以部分方式异步复制的目标服务器上的快照恢复文件。 快照随文件复制。
灾难发生前正常运行。
将目标服务器切换到新的源,这会向用户显示其复制的卷。
如果选择使用同步复制,则只有在源服务器丢失且用户正在使用没有事务保护的应用进行数据写入时,才需要进行数据还原(复制在这种情况下不起作用)。 如果选择使用异步复制,卷影复制服务(VSS)快照装载的需求增加,但请考虑在所有情况下使用 VSS 以确保应用程序快照的一致性。
将服务器及其共享添加为 DFS 命名空间文件夹目标。
然后,用户可以访问其数据。
注意
灾难恢复规划是一个复杂的主题,需要高度重视规划。 强烈建议创建 Runbook 并执行年度实时故障转移演练。 当实际灾难发生时,混乱主宰,经验丰富的人员可能不可用。
添加通过 ExpressRoute 连接到网络的 Azure VM
在 Azure 门户中,创建 ExpressRoute 实例。
批准 ExpressRoute 后,会将资源组添加到订阅。 若要查看此新组,请转到 资源组。 记下虚拟网络名称。
添加 网络安全组。 创建网络安全组时,选择与创建的 ExpressRoute 实例关联的订阅 ID,然后选择与 ExpressRoute 关联的资源组。
将所需的任何入站和出站安全规则添加到网络安全组。 例如,你可能希望允许远程桌面访问虚拟机。
创建具有以下设置的 Azure VM :
- 公共 IP 地址:无
- 虚拟网络:选择使用 ExpressRoute 实例添加的资源组中记录的虚拟网络名称。
- 网络安全组(防火墙):选择创建的网络安全组。
创建 VM 后,请参阅 步骤 2:预配作系统、功能、角色、存储和网络。