同步复写机制:当采用「同步」复写机制时,系统将会保证每次的数据 IO 作业完成之前,都会将数据写入至少两个不同的位置之后,才会回复给上层的应用程序已完成 IO 作业。 所以,当来源端节点主机发生故障损坏事件时,便可以进行容错备援的切换动作,接着让应用程序使用目的端节点主机的数据快速恢复运作。因此,它适合应用于需要高可用性及灾难复原,也就是「零数据损失(Zero Data Loss)」的营运服务。
存储副本是Windows Server 2016中的一个新的功能,它是一种与传统存储设备种类(NAS/DAS/SAN)无关,基于Block级别的存储副本机制。存储副本支持采用同步复制和异步复制两种不同的数据复写方式,存储副本以SMB通讯协议来进行数据的复写和传送。它可以使用任何固定的磁盘存储,以及任何的存储结构。存储副本不需要群集技术,并且它可以使用故障转移群集管理器、PowerShell、WMI进行管理。
同步复制和异步复制两种不同的复写方式的区别如下:
下列为采用同步复写机制时,两端主机之间数据复写的动作如下:
1.应用程序发出写入数据需求。
2.来源端节点主机将数据写入至本地端储存资源「日志」当中,同时透过 SMB 3 协议将数据传输至目的端节点主机。
3.目的端节点主机,将所收到的数据写入至本地端储存资源「日志」当中。
4.目的端节点主机写入完成后,回复给来源端主机已完成 IO 动作。
5.来源端节点主机回复应用程序确认已完成 IO 动作。
异步复写机制:当采用「异步」复写机制时,系统会在本地端完成 IO 作业后便立即回复给上层的应用程序,之后才将数据复写到另一个位置。因此,这样的数据复写机制仍然有数据遗失的风险存在,只能达成「近乎零数据损失(Near Zero Data Loss)」的运作环境,因此并不适合用于需要高可用性的运作环境中(例如,故障转移丛集)。
下列为采用异步复写机制时,两端主机之间数据复写的动作如下:
1.应用程序发出写入数据需求。
2.来源端节点主机将数据写入至本地端储存资源「日志」当中。
3.来源端节点主机回复应用程序确认已完成 IO 动作。
4.目的端节点主机,将所收到的数据写入至本地端储存资源「日志」当中
5.透过 SMB 3 协议将数据传输至目的端节点主机。
6.目的端节点主机写入完成后,回复给来源端主机已完成 IO 动作。
在本次实验中,我将使用两台Windows Server 2016 Datacenter进行测试,两台服务器位于同一域(VCloud.Lab)内。我们假设两台服务器在不同楼层,以能够应对故障损坏。在Windows Server 2016中,并没有GUI界面可以进行配置,所以本次实验环境我们统一采用PowerShell进行配置。
1、创建复制伙伴关系
在本次实验中我分别为两台服务器增加了两块磁盘,分别是数据盘(Data),大小50GB;日志盘(Log),大小15GB。如下图所示:
SRNode1:
SRNode2:
为两台服务器安装存储副本角色,使用如下PS命令:
Command {Install-WindowsFeature -Name Storage-Replica,FS-FileServer -Restart }
使用Test-SRTopology命令来进行存储副本测试,运行如下PS命令:
Test-SRTopology -d: -SourceLogVolumeName e: -DestinationComputerName SRNode2 -DestinationVolumeName
测试完成以后如下图所示:
测试完成以后会生产测试报告,如下图所示:
使用New-SRPartnership命令来进行创建存储副本,具体命令如下所示:
New-SRPartnership D: -SourceLogVolumeName E: -DestinationComputerName SRNode2 -DestinationRGName SR-SRNode2 -DestinationVolumeName D: -DestinationLogVolumeName E: -LogSizeInBytes 5GB -Verbose
创建完成,如下图所示:
创建完成以后切换到节点SRNode2会发现其Data(D)盘已经不可用:
2、监控复制性能:
打开性能监视器,点击绿色的+:
点击 Storage Replica Statistics,然后点击添加,点击确定:
运行如下PS命令进行测试Copy-Item C:\Windows\System32\Drivers
数据开始复制以后观察性能监视器,如下图所示:
3、配置反向复制
在这个步骤中我会将SRNode2配置为源服务器,,SRNode1配置为目标服务器。
以管理员身份打开Windows PowerShell,键入如下PS命令:
Set-SRPartnership -DestinationComputerName SRNode1 -DestinationRGName SR-SRNode1 -Confirm:$False
命令执行完成,如下图所示:
登陆到SRNode1可以看到D盘以标记为不可用:
4、删除复制副本
在此步骤中我将删除Windows卷复制。
以管理员身份打开 PowerShell:
在开始删除之前,我将通过以下两个PS命令查询存储副本组和存储的伙伴关系:Get-SRGroup、Get-SRPartnership.如下图所示:
使用如下命令删除复制:
Get-SRPartnership | Remove-SRPartnership -Confirm:False
Remove-SRGroup -Name SR-SRNode2:
成功删除,如下图所示:
切换到SRNode1删除SRGroup:
Remove-SRGroup SR-SRNode1
查看SRNode1和SRNode2的磁盘驱动器都已正常:
确认每个服务器的D盘都存在之前复制的Drivers文件夹:
Windows2016副本服务技术探讨