Windows Server 2016 Storage Replica


存储副本是Windows Server 2016中的一个新的功能,它是一种与传统存储设备种类(NAS/DAS/SAN)无关,基于Block级别的存储副本机制。存储副本支持采用同步复制和异步复制两种不同的数据复写方式,存储副本以SMB通讯协议来进行数据的复写和传送。它可以使用任何固定的磁盘存储,以及任何的存储结构。存储副本不需要群集技术,并且它可以使用故障转移群集管理器、PowerShell、WMI进行管理。

同步复制和异步复制两种不同的复写方式的区别如下:

同步复写机制:当采用「同步(Synchronous)」复写机制时,系统将会保证每次的数据 IO 作业完成之前,都会将数据写入至少两个不同的位置之后,才会回复给上层的应用程序已完成 IO 作业。 所以,当来源端节点主机发生故障损坏事件时,便可以进行容错备援的切换动作,接着让应用程序使用目的端节点主机的数据快速恢复运作。因此,它适合应用于需要高可用性及灾难复原,也就是「零数据损失(Zero Data Loss)」的营运服务。

下列为采用同步复写机制时,两端主机之间数据复写的动作如下:

1.应用程序发出写入数据需求。

2.来源端节点主机将数据写入至本地端储存资源「日志(Log)」当中,同时透过 SMB 3 协议将数据传输至目的端节点主机。

3.目的端节点主机,将所收到的数据写入至本地端储存资源「日志(Log)」当中。

4.目的端节点主机写入完成后,回复给来源端主机已完成 IO 动作。

5.来源端节点主机回复应用程序确认已完成 IO 动作。

Windows Server 2016 Storage Replica_Windows

异步复写机制:当采用「异步(Asynchronous)」复写机制时,系统会在本地端完成 IO 作业后便立即回复给上层的应用程序,之后才将数据复写到另一个位置。因此,这样的数据复写机制仍然有数据遗失的风险存在,只能达成「近乎零数据损失(Near Zero Data Loss)」的运作环境,因此并不适合用于需要高可用性的运作环境中(例如,故障转移丛集)。

下列为采用异步复写机制时,两端主机之间数据复写的动作如下:

1.应用程序发出写入数据需求。

2.来源端节点主机将数据写入至本地端储存资源「日志(Log)」当中。

3.来源端节点主机回复应用程序确认已完成 IO 动作。

4.透过 SMB 3 协议将数据传输至目的端节点主机。

5.目的端节点主机,将所收到的数据写入至本地端储存资源「日志(Log)」当中。

6.目的端节点主机写入完成后,回复给来源端主机已完成 IO 动作。

Windows Server 2016 Storage Replica_Windows_02

在本次实验中,我将使用两台Windows Server 2016 Datacenter进行测试,两台服务器位于同一域(VCloud.Lab)内。我们假设两台服务器在不同楼层,以能够应对故障损坏。在Windows Server 2016中,并没有GUI界面可以进行配置,所以本次实验环境我们统一采用PowerShell进行配置。

Windows Server 2016 Storage Replica_Windows_03

1、创建复制伙伴关系

在本次实验中我分别为两台服务器增加了两块磁盘,分别是数据盘(Data),大小50GB;日志盘(Log),大小15GB。如下图所示:

SRNode1:

Windows Server 2016 Storage Replica_Windows_04

Windows Server 2016 Storage Replica_Windows_05

SRNode2:

Windows Server 2016 Storage Replica_Server_06

Windows Server 2016 Storage Replica_Windows_07

为两台服务器安装存储副本角色,使用如下PS命令:

Invoke-Command -ComputerName SRNode1,SRNode2 -Command {Install-WindowsFeature -Name Storage-Replica,FS-FileServer -Restart }

Windows Server 2016 Storage Replica_Server_08

使用Test-SRTopology命令来进行存储副本测试,运行如下PS命令:

Test-SRTopology -SourceComputerName SRNode1 -SourceVolumeName d: -SourceLogVolumeName e: -DestinationComputerName SRNode2 -DestinationVolumeName d: -DestinationLogVolumeName e: -DurationInMinutes 5 -ResultPath c:\Log\

Windows Server 2016 Storage Replica_Storage_09

测试完成以后如下图所示:

Windows Server 2016 Storage Replica_Server_10

测试完成以后会生产测试报告,如下图所示:

Windows Server 2016 Storage Replica_Server_11

使用New-SRPartnership命令来进行创建存储副本,具体命令如下所示:

New-SRPartnership -SourceComputerName SRNode1 -SourceRGName SR-SRNode1 -SourceVolumeName D: -SourceLogVolumeName E: -DestinationComputerName SRNode2 -DestinationRGName SR-SRNode2 -DestinationVolumeName D: -DestinationLogVolumeName E: -LogSizeInBytes 5GB -Verbose

Windows Server 2016 Storage Replica_Storage_12

创建完成,如下图所示:

Windows Server 2016 Storage Replica_Server_13

创建完成以后切换到节点SRNode2会发现其Data(D)盘已经不可用:

Windows Server 2016 Storage Replica_Windows_14

2、监控复制性能:

打开性能监视器,点击绿色的+:

Windows Server 2016 Storage Replica_Windows_15

点击 Storage Replica Statistics,然后点击添加,点击确定:

Windows Server 2016 Storage Replica_Windows_16

运行如下PS命令进行测试Copy-Item C:\Windows\System32\Drivers d: -Recurse

Windows Server 2016 Storage Replica_Server_17

数据开始复制以后观察性能监视器,如下图所示:

Windows Server 2016 Storage Replica_Windows_18

3、配置反向复制

在这个步骤中我会将SRNode2配置为源服务器,SRNode1配置为目标服务器。

以管理员身份打开Windows PowerShell,键入如下PS命令:

Set-SRPartnership -NewSourceComputerName SRNode2 -SourceRGName SR-SRNode2 -DestinationComputerName SRNode1 -DestinationRGName SR-SRNode1 -Confirm:$False

Windows Server 2016 Storage Replica_Server_19

命令执行完成,如下图所示:

Windows Server 2016 Storage Replica_Storage_20

登陆到SRNode1可以看到D盘以标记为不可用:

Windows Server 2016 Storage Replica_Storage_21

4、删除复制副本

在此步骤中我将删除Windows卷复制。

以管理员身份打开Windows PowerShell:

在开始删除之前,我将通过以下两个PS命令查询存储副本组和存储的伙伴关系:Get-SRGroup、Get-SRPartnership.如下图所示:

Windows Server 2016 Storage Replica_Server_22

Windows Server 2016 Storage Replica_Windows_23

使用如下命令删除复制:

Get-SRPartnership | Remove-SRPartnership -Confirm:$False

Windows Server 2016 Storage Replica_Server_24

Remove-SRGroup -Name SR-SRNode2:

Windows Server 2016 Storage Replica_Server_25

成功删除,如下图所示:

Windows Server 2016 Storage Replica_Server_26

切换到SRNode1删除SRGroup:

Remove-SRGroup -Name SR-SRNode1

Windows Server 2016 Storage Replica_Storage_27

查看SRNode1和SRNode2的磁盘驱动器都已正常:

Windows Server 2016 Storage Replica_Windows_28Windows Server 2016 Storage Replica_Windows_29

确认每个服务器的D盘都存在之前复制的Drivers文件夹:

Windows Server 2016 Storage Replica_Storage_30

 Windows Server 2016 Storage Replica_Server_31