服务器到服务器存储复制
可以使用存储副本配置两个同步数据的服务器,以便每个服务器都具有相同卷的相同副本。 本主题提供了此服务器到服务器复制配置的一些背景知识,以及如何对其进行设置和管理环境。
要管理存储复制副本,你可以使用 Windows Admin Center 或 PowerShell。
下面是在 Windows Admin Center 中使用存储副本的概述视频。
先决条件
- Active Directory 域服务林(无需运行 Windows Server 2016)。
- 两台运行 Windows Server 2019 或 Windows Server 2016 数据中心版的服务器。 如果你运行的是 Windows Server 2019,则可以使用标准版,前提是你可以仅复制大小不超过 2 TB 的单个卷。
- 两个使用 SAS JBOD、光纤通道 SAN、iSCSI 目标或本地 SCSI/SATA 存储的存储集。 存储需包含 HDD 和 SSD 媒体的组合。 将每个存储设置为仅对每个服务器可用(没有共享的访问)。
- 每组存储必须允许至少创建两个虚拟磁盘,一个用于复制的数据,而另一个用于日志。 物理存储在所有数据磁盘上的扇区大小必须相同。 物理存储在所有日志磁盘上的扇区大小必须相同。
- 每个服务器上必须具有至少一个用于同步复制的以太网/TCP 连接,但最好是 RDMA。
- 合适的防火墙和路由器规则,以允许所有节点之间的 ICMP、SMB(端口 445 以及用于 SMB 直通的 5445)和 WS-MAN(端口 5985)双向通信。
- 服务器间的网络具有足够的带宽,以包含 IO 写入工作负载和平均值为 5 毫秒的往返行程延迟(对于同步复制)。 异步复制没有延迟建议。
如果要在本地服务器和 Azure 虚拟机之间进行复制,则必须在本地服务器和 Azure 虚拟机之间创建网络链接。 为此,请使用 Express Route、站点到站点 VPN 网关连接,或在 Azure 虚拟机中安装 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 Admin Center |
注意
目前,你无法在服务器上使用 Windows Admin Center 来管理存储副本。
术语
此演练使用以下环境作为示例:
两个服务器,名为 SR-SRV05 和 SR-SRV06。
表示两个不同数据中心的一对逻辑“站点”,一个名为 Redmond,另一个名为 Bellevue。
图 1:服务器到服务器复制
步骤 1:在 PC 上安装和配置 Windows Admin Center
如果你使用 Windows Admin Center 管理存储复制副本,请使用以下步骤准备你的 PC 以管理存储复制副本。
下载并安装 Windows Admin Center。
下载并安装远程服务器管理工具。
- 如果你使用的是 Windows 10 版本 1809 或更高版本,请从“按需功能”中安装“RSAT:用于 Windows PowerShell 的存储副本模块”。
以管理员身份打开 PowerShell 会话,方法是选择“开始”按钮,键入 PowerShell,右键单击 Windows PowerShell,然后选择“以管理员身份运行”。
输入以下命令,在本地计算机上启用 WS-Management 协议,并在客户端上设置远程管理的默认配置。
winrm quickconfig
键入 Y 以启用 WinRM 服务并启用 WinRM 防火墙例外。
步骤 2:配置操作系统、功能、角色、存储和网络
在安装类型为 Windows Server(桌面体验)的两个服务器节点上安装 Windows Server。
要使用通过 ExpressRoute 连接到网络的 Azure VM,请参阅添加通过 ExpressRoute 连接到网络的 Azure VM。
注意
从 Windows Admin Center 版本 1910 开始,你可以在 Azure 中自动配置目标服务器。 如果选择该选项,请在源服务器上安装 Windows Server,然后跳到步骤 3:设置服务器到服务器复制。
添加网络信息,将服务器加入与你的 Windows 10 管理 PC 相同的域(如果你正在使用),然后重新启动服务器。
注意
从现在开始,始终以域用户(所有服务器上的内置管理员组的成员)身份登录。 在图形服务器安装或在 Windows 10 计算机上运行时,请始终提升你的 PowerShell 和 CMD 命令提示符。
将第一组 JBOD 存储机柜、iSCSI 目标、FC SAN 或本地固定磁盘 (DAS) 存储连接到站点 Redmond 中的服务器。
将第二组存储连接到 Bellevue 站点中的服务器。
根据需要,在两个节点上均安装最新的供应商存储和机箱固件及驱动程序、最新的供应商 HBA 驱动程序、最新的供应商 BIOS/UEFI 固件、最新的供应商网络驱动程序和最新的母板芯片组驱动程序。 根据需要重启节点。
注意
请查看配置共享存储和网络硬件的硬件供应商文档。
确保服务器的 BIOS/UEFI 设置启用高性能,例如禁用 C-State、设置 QPI 速度、启用 NUMA 和设置最高内存频率。 确保 Windows Server 中的电源管理设置为高性能。 根据需要重启。
配置角色,如下所示:
Windows Admin Center 方法
- 在 Windows Admin Center 中,导航到“服务器管理器”,然后选择其中一个服务器。
- 导航到“角色和功能”。
- 选择“功能”>“存储副本”,然后单击“安装”。
- 在另一台服务器上重复上述步骤。
服务器管理器方法
运行 ServerManager.exe 并创建服务器组,添加所有服务器节点。
在每个节点上安装文件服务器和存储副本角色和功能,并对其重启。
Windows PowerShell 方法
在 SR-SRV06 或远程管理计算机上,在 Windows PowerShell 控制台中运行以下命令以安装所需功能和角色,并对其重启:
$Servers = 'SR-SRV05','SR-SRV06' $Servers | ForEach { Install-WindowsFeature -ComputerName $_ -Name Storage-Replica,FS-FileServer -IncludeManagementTools -restart }
有关这些步骤的详细信息,请参阅安装或卸载角色、角色服务或功能
配置存储,如下所示:
重要
- 必须在每个机箱上创建两个卷:一个用于数据,另一个用于日志。
- 必须将日志和数据磁盘初始化为 GPT,而非 MBR。
- 两个数据卷的大小必须相同。
- 两个日志卷的大小应相同。
- 所有复制的数据磁盘的扇区大小必须相同。
- 所有日志磁盘的扇区大小必须相同。
- 日志卷应使用基于闪存的存储,如 SSD。 Microsoft 建议日志存储应比数据存储速度快。 日志卷不得用于其他工作负荷。
- 数据磁盘可使用 HDD、SSD 或分层组合,并可使用镜像或奇偶校验空间或 RAID 1 或 10,或者使用 RAID 5 或 RAID 50。
- 默认情况下,日志卷必须至少为 9 GB,但可以根据日志需求设置为更大或更小。
- 文件服务器角色仅对运行 Test-SRTopology 是必要的,因为它将打开必要的防火墙端口。
对于 JBOD 存储设备:
确保每个服务器只能看到该站点的存储机箱,且 SAS 连接已正确配置。
使用 Windows PowerShell 或服务器管理器,按照在独立服务器上部署存储空间中提供的步骤 1 至 3 使用存储空间来配置存储。
对于 iSCSI 存储:
确保每个群集都只能看到该站点的存储机箱。 如果使用 iSCSI,则应使用多个网络适配器。
使用供应商文档配置存储。 如果使用基于 Windows 的 iSCSI 目标,请查阅 iSCSI 目标块存储方法。
对于 FC SAN 存储:
确保每个群集只能看到该站点的存储机箱,且对主机进行了正确的分区。
使用供应商文档配置存储。
对于本地固定磁盘存储:
确保存储不包含系统卷、页面文件或转储文件。
使用供应商文档配置存储。
启动 Windows PowerShell,并使用 Test-SRTopology cmdlet 确定是否满足所有存储副本要求。 可以在仅要求模式下使用 cmdlet 以用于快速测试,也可以在长时间运行的性能评估模式下使用。
例如,对具有 F: 和 G: 卷的每个计划节点进行验证并运行 30 分钟测试:
MD c:\temp Test-SRTopology -SourceComputerName SR-SRV05 -SourceVolumeName f: -SourceLogVolumeName g: -DestinationComputerName SR-SRV06 -DestinationVolumeName f: -DestinationLogVolumeName g: -DurationInMinutes 30 -ResultPath c:\temp
重要
在评估期间,当在指定源卷上使用无写入 IO 负载的测试服务器时,请考虑添加工作负载,否则它将不会生成有用的报表。 你应该使用与生产类似的工作负载进行测试,以便看到真实的数值和建议的日志大小。 或者,只需在测试期间将一些文件复制到源卷或下载并运行 DISKSPD 以生成写入 IO。 例如,D: 卷的十分钟的较低写入 IO 工作负荷:
Diskspd.exe -c1g -d600 -W5 -C5 -b8k -t2 -o2 -r -w5 -i100 -j100 d:\test
检查图 2 中所示的 TestSrTopologyReport.html 报表以确保符合存储副本要求。
图 2:存储复制拓扑报告
步骤 3:设置服务器到服务器复制
使用 Windows Admin Center
添加源服务器。
- 选择“添加”按钮。
- 选择“添加服务器连接”。
- 键入服务器的名称,然后选择“提交”。
在“所有连接”页上,选择源服务器。
从“工具”面板中选择“存储副本”。
选择“新建”以创建新的合作关系。 创建新的 Azure VM 以用作伙伴关系的目标:
- 在“使用其他服务器复制”下,选择“使用新的 Azure VM ”,然后选择“下一步”。 如果未看到此选项,请确保你使用的是 Windows Admin Center 版本 1910 或更高版本。
- 指定源服务器信息和复制组名称,然后选择“下一步”。
这将开始自动选择 Windows Server 2019 或 Windows Server 2016 Azure 虚拟机作为迁移源的目标的过程。 存储迁移服务建议的虚拟机大小与你的源相匹配,但你可以通过选择“查看所有大小”来覆盖此建议。 清单数据用于自动配置托管磁盘及其文件系统,以及将新的 Azure VM 加入 Active Directory 域。 - 在 Windows Admin Center 创建 Azure VM 后,提供复制组名称,然后选择“创建”。 然后,Windows Admin Center 开始正常的存储复制副本初始同步过程,以开始保护你的数据。
这里有一段视频,展示了如何使用存储副本迁移到 Azure 虚拟机。
提供合作关系的详细信息,然后选择“创建”(如图 3 所示)。
图 3:创建新的合作关系
注意
从 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。 根据
Test-SRTopology
cmdlet 的结果,可以决定使用具有更高或更低值的 -LogSizeInBytes。若要获取复制源和目标状态,请使用
Get-SRGroup
和Get-SRPartnership
,如下所示: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 :
确定复制进度,如下所示:
在源服务器上,运行以下命令并检查事件 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. ReplicationGroupName: rg02 ReplicationGroupId: {616F1E00-5A68-4447-830F-B0B0EFBD359C} ReplicaName: f:\ ReplicaId: {00000000-0000-0000-0000-000000000000} End LSN in bitmap: LogGeneration: {00000000-0000-0000-0000-000000000000} LogFileId: 0 CLSFLsn: 0xFFFFFFFF Number of Bytes Recovered: 68583161856 Elapsed Time (ms): 117
注意
存储复制卸除目标卷及其驱动器字母或装入点。 这是设计的结果。
或者,副本的目标服务器组始终规定要复制的剩余字节数,且可通过 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 }
在目标服务器上,运行以下命令并检查事件 5009、1237、5001、5015、5005 和 2200 以了解处理进度。 在该序列中不应有错误的警告。 将有许多 1237 事件;这些表示进度。
Get-WinEvent -ProviderName Microsoft-Windows-StorageReplica | FL
步骤 4:管理复制
现在,可以管理并运行从服务器复制到服务器的基础结构。 可以直接在节点上或从包含 Windows Server 远程服务器管理工具的远程管理计算机上执行以下所有步骤。
使用
Get-SRPartnership
和Get-SRGroup
确定复制的当前源和目标及其状态。若要测量复制性能,请在源和目标节点上均使用
Get-Counter
。 计数器名称为:\Storage Replica Partition I/O Statistics(*)\Number of times flush paused
\Storage Replica Partition I/O Statistics(*)\Number of pending flush I/O
\Storage Replica Partition I/O Statistics(*)\Number of requests for last log write
\Storage Replica Partition I/O Statistics(*)\Avg. Flush Queue Length
\Storage Replica Partition I/O Statistics(*)\Current Flush Queue Length
\Storage Replica Partition I/O Statistics(*)\Number of Application Write Requests
\Storage Replica Partition I/O Statistics(*)\Avg. Number of requests per log write
\Storage Replica Partition I/O Statistics(*)\Avg. App Write Latency
\Storage Replica Partition I/O Statistics(*)\Avg. App Read Latency
\Storage Replica Statistics(*)\Target RPO
\Storage Replica Statistics(*)\Current RPO
\Storage Replica Statistics(*)\Avg. Log Queue Length
\Storage Replica Statistics(*)\Current Log Queue Length
\Storage Replica Statistics(*)\Total Bytes Received
\Storage Replica Statistics(*)\Total Bytes Sent
\Storage Replica Statistics(*)\Avg. Network Send Latency
\Storage Replica Statistics(*)\Replication State
\Storage Replica Statistics(*)\Avg. Message Round Trip Latency
\Storage Replica Statistics(*)\Last Recovery Elapsed Time
\Storage Replica Statistics(*)\Number of Flushed Recovery Transactions
\Storage Replica Statistics(*)\Number of Recovery Transactions
\Storage Replica Statistics(*)\Number of Flushed Replication Transactions
\Storage Replica Statistics(*)\Number of Replication Transactions
\Storage Replica Statistics(*)\Max Log Sequence Number
\Storage Replica Statistics(*)\Number of Messages Received
\Storage Replica Statistics(*)\Number of Messages Sent
有关 Windows PowerShell 中的性能计数器的详细信息,请参阅 Get-Counter。
要从一个站点移动复制方向,请使用
Set-SRPartnership
cmdlet。Set-SRPartnership -NewSourceComputerName sr-srv06 -SourceRGName rg02 -DestinationComputerName sr-srv05 -DestinationRGName rg01
警告
Windows Server 会在初始同步进行时阻止角色切换,如果在允许初始复制完成前尝试进行切换,则会导致数据丢失。 在初始同步完成前不要强制切换方向。
检查事件日志以查看复制方向的更改和恢复恢复模式发生,然后进行协调。 写入 IO 然后可以写入到新的源服务器所拥有的存储。 更改复制方向将阻止在以前的源计算机上写入 IO。
若要删除复制,请在每个节点上使用
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 客户将 DFS 复制部署为非结构化用户数据的灾难恢复解决方案,如主文件夹和部门共享。 DFS 复制已在 Windows Server 2003 R2 中以及所有更高版本的操作系统中提供,可在低带宽网络上运行,非常适用于具有多个节点的高延迟和低更改环境。 但是,DFS 复制作为数据复制解决方案具有明显的局限性:
- 它不能复制使用中的或打开的文件。
- 它不能同步复制。
- 它的异步复制延迟时间可能是数分钟、数小时或者甚至数天。
- 它依赖数据库(该数据库在电源中断后可能需要进行较长时间的一致性检查)。
- 它通常被配置为多主机,这将允许更改为在两个方向流动,因此可能会覆盖较新的数据。
存储副本没有以上任何这些限制。 但是,它的确有某些限制,使其在一些环境中没有那么大的吸引力:
- 它只允许卷之间的一对一复制。 很可能在多个服务器间复制不同卷。
- 尽管它支持异步复制,但它并非为低带宽、高延迟网络而设计。
- 它不允许用户在复制正在进行时对目标上的受保护数据进行访问。
如果没有这些阻止因素,存储复制可以将 DFS 复制服务器替换为较新的技术。 在较高级别上,此过程:
在两台服务器上安装 Windows Server 并配置存储。 这可能意味着升级现有的服务器组或干净安装。
确保想要复制的任何数据在一个或多个数据卷上,而不是在 C: 驱动器上。 a. 也可以在其他服务器上生成种子数据以节省时间(使用备份或文件副本,以及使用精简设置的存储。 无需完全匹配类似元数据的安全性(这与 DFS 复制不同)。
在源服务器上共享数据并使其可通过 DFS 命名空间访问。 如果服务器名称更改为灾难站点中的名称,请确保用户仍可对其访问,这一点很重要。 a. 可以在目标服务器上创建匹配共享(在正常操作中将不可用),b. 不要将目标服务器添加到 DFS 命名空间,或者如果要执行此操作,请确保禁用其全部文件夹目标。
启用存储副本复制并完成初始同步。复制可以为同步或异步。 a. 但是,为了保证目标服务器上的 IO 数据一致性,建议同步。 b. 我们强烈建议启用卷影副本并使用 VSSADMIN 或其他所选工具定期拍摄快照。 这将保证应用程序将其数据文件一致地转储到磁盘。 如果出现灾难,可以从目标服务器(可能以异步的方式被部分复制)上的快照恢复文件。 快照随文件复制。
灾难发生前正常运行。
将目标服务器切换到新的源,这会向用户显示其复制的卷。
如果使用同步复制,则无需进行数据恢复,除非在源服务器丢失期间,用户使用的是在没有事务保护的情况下写入数据的应用程序(这未考虑复制)。 如果使用异步复制,则更有必要使用 VSS 快照装载,但请考虑在所有应用程序一致的快照中使用 VSS。
将服务器及其共享添加为 DFS 命名空间文件夹目标。
然后,用户可以访问其数据。
注意
灾难恢复计划是一个复杂的主题,需要极其注意细节。 强烈建议创建 Runbook 并进行年度实时故障转移钻取。 当实际灾难发生时,混乱将占据主导,而有经验的人员可能都很忙碌。
通过 ExpressRoute 添加连接到网络的 Azure 虚拟机
在 Azure 门户中创建 ExpressRoute。
ExpressRoute 获得批准后,资源组将添加到订阅,导航到“资源组”以查看此新组。 记下虚拟网络名称。图 4:与 ExpressRoute 关联的资源-记下虚拟网络名称
添加网络安全组。 创建时,选择与你创建的 ExpressRoute 关联的订阅 ID,并选择你刚创建的资源组。
将所需的任何入站和出站安全规则添加到网络安全组。 例如,你可能希望允许远程桌面访问虚拟机。使用以下设置创建 Azure 虚拟机(如图 5 所示):
- 公共 IP 地址:无
- 虚拟网络:从使用 ExpressRoute 添加的资源组中选择你记下的虚拟网络。
- 网络安全组(防火墙):选择你之前创建的网络安全组。 图 5:选择 ExpressRoute 网络设置时创建虚拟机
创建虚拟机后,请参阅步骤 2:配置操作系统、功能、角色、存储和网络。