现在这个市场比较浮躁(大家都一样),一般大家在售前的材料里面,都说得比较高大上。很多特性还没有做出来,市场就开始提前忽悠了。
高端存储的阵列双活这个特性比较新,最先HDS VSP G1000在去年宣布支持,今年华为OceanStor 18000 V3和EMC VMAX3先后宣传支持。
华为的HyperMetro双活解决方案,西瓜哥以前写过一篇“忽悠”(有人这么认为)的文章
【剧透】华为HyperMetro阵列双活,怎么看都不像一个产品
这次,我打算从华为刚发布不久的《OceanStor 18500 V3/18800 V3 V300R003产品文档》来看看现在最新发货的版本做到哪一步了。
其实双活是一个解决方案,这里只是从高端存储的一个产品文档,来重点了解阵列部分的实现,特别是大家特别关心的锁的机制。
双活组网方案
双活实现了块存储业务的AA双活,两个数据中心的LUN数据实时同步,且都能提供主机读写访问。
当任何一端存储系统故障的情况下,主机将切换业务到正常的存储系统继续进行业务访问。当存储系统间链路故障,只有一端存储系统能继续提供主机读写访问时,具体由哪端存储系统提供服务,将取决于仲裁服务器仲裁的结果。
双活组网方案组网,如图所示。
-
数据中心同城网络:数据中心A和数据中心B都具备提供主机业务的能力,可以同时承担相同的业务。两个数据中心互为备份,当一个数据中心故障时,业务自动切换到另一个数据中心,数据零丢失,业务零中断。
-
主机到存储网络:两个数据中心的所有主机具备集群能力,可以通过跨数据中心实现主机网络互联。
-
双活复制网络:两端存储系统之间的心跳网络,同时两端存储系统都可以同时为主机提供业务服务,保证两端存储系统的数据同步。
- 仲裁网络:用于部署双活仲裁服务器的数据中心,当数据中心A和数据中心B间通讯故障或设备故障时,由仲裁服务器决定数据中心A和数据中心B的可访问状态。
【西瓜哥解读】我们看到,华为高端存储虽然也支持文件,但目前HyperMetro还不支持文件系统的双活。
数据仲裁机制
当两个数据中心之间的链路故障时,两个数据中心之间无法实时同步,此时只能由其中一个数据中心继续提供服务。为了保证数据一致性,双活通过仲裁机制决定数据中心的服务优先级。
双活提供了两种仲裁模式:
-
静态优先级模式:应用在无第三站点仲裁服务器的场景。
- 仲裁服务器模式:应用在有第三站点仲裁服务器的场景。
静态优先级模式下各仲裁模式说明
静态优先级模式主要应用在无第三方仲裁服务器的场景。用户可以按双活Pair为单位,设置其中一端阵列为优先站点,另一端为非优先站点。
-
当发生存储系统间链路故障,或者非优先站点故障时,优先站点上的LUN继续为主机提供服务,非优先站点的LUN停止为主机提供服务。
- 当优先站点故障时,非优先站点不能自动接管双活业务,双活业务停止。此时需要人工强制启动非优先站点为主机提供服务。
以数据中心A作为优先站点为例进行说明,静态优先级模式下各仲裁模式如表1所示。
仲裁服务器模式下各仲裁模式说明
当出现任一数据中心整体故障或中间链路故障时,两个数据中心的存储系统分别向仲裁服务器发起仲裁请求,仲裁获胜的一方继续提供服务,仲裁失败方停止服务,优先站点具有仲裁优先权。
根据不同的故障场景,仲裁服务器提供不同的仲裁模式,如表2所示。
【西瓜哥解读】从目前实行的版本看,已经实现静态优先级和第三站点仲裁两种方式,各种故障处理机制也比较完善。目前的实现中,华为的HyperMetro第三站点仲裁采用服务器的方式(可以用物理服务器或者VM)来实现,不同于网关VIS采用阵列做仲裁的方式,成本更低。
双活I/O处理机制
术语:
DCL(Data Change Log)记录二个数据中心的存储系统的数据变更日志。
HyperMetro通过数据双写和DCL机制实现存储层数据的双活,两个数据中心同时对主机提供数据读写的能力。
写I/O流程
实现两台存储设备双活的核心就是高效的锁分配机制和高效的数据双写机制。在业务运行中,数据变更可通过双写和DCL来完成同步,进而保证两个数据中心的数据一致性。
说明:
具备双活特性的两台存储系统,能够同时处理主机的I/O请求。为了防止不同的主机同时访问同一存储地址,而发生访问冲突,需要设计锁分配机制来避免访问冲突,只有获取锁分配机制允许的存储系统才能写入数据。没有获取锁分配机制允许的存储系统需要等待上一个写I/O完成,待锁分配机制释放之后才能重新获取锁分配机制允许。
-
双写可以使得应用服务器的I/O请求同时下发到本端Cache和远端Cache,从而保证本端Cache与远端Cache的变更数据一致性。
- 在一个数据中心故障时,DCL可以记录业务运行中数据中心的数据变更。待故障恢复后,同时跟踪变更数据同步到该数据中心的存储设备中,以防止变更的数据在同步过程中出现遗漏。
在业务运行中,当应用服务器下发I/O请求并引起数据变更时,双活I/O的写处理流程如图所示:
1.主机下发写I/O到HyperMetro。
2.系统记录LOG。
3.执行双写:HyperMetro同时将该写I/O写入本端Cache和远端Cache。
4.本端Cache和远端Cache向HyperMetro返回写I/O结果。
5.双写结果处理:等待两端Cache的写处理结果都返回,才向主机返回写I/O结果。
6.判断双写是否成功。
-
如果都写成功:清除LOG。
- 如果有一端失败:LOG转换成DCL,记录本端LUN和远端LUN的差异数据。
说明:
如果有一端失败,双活暂停,两个数据中心的存储系统分别向仲裁服务器发起仲裁请求,仲裁获胜的一方继续提供服务,仲裁失败方停止服务。根据存储系统记录的DCL,进行后台数据同步,待本端LUN和远端LUN的数据一致时,双活业务恢复。
读I/O流程
两端的LUN数据实时同步,且都能提供主机读写访问。当任何一端存储系统故障的情况下主机将切换访问路径到正常的一端继续业务访问。
说明:
双活只能使用华为多路径软件,华为多路径具有地域优化识别访问的能力,可以减少站点间交互次数。同时,华为多路径软件针对双活场景做了优化,能够识别地域位置信息,减少跨站点访问,从而减少时延并提高存储系统的性能。主机多路径虽然能够从本地或异地存储系统读取数据,但在本地存储系统正常运行的情况下,多路径软件优先读本地存储系统,避免主机跨数据中心读取数据。
双活读I/O流程如图所示:
1.应用服务器向双活申请读权限。
说明:
当两个数据中心的存储系统间链路故障时仅只有一端能提供应用服务器的读写访问时,具体由那端提供服务将取决于仲裁服务器的仲裁结果。
2.双活先从本端存储系统响应应用服务器的请求。
3.双活读取存储系统的数据。
-
如果本端存储系统正常,则本端存储系统将数据返回给双活。
- 如果本端存储系统处于非正常状态,则通过双活去读远端存储系统的数据,并将数据返回给双活。
4.应用服务器读I/O成功。
说明:
当任何一端存储系统的数据不正常时,双活可以通过另一端存储系统的数据,对坏数据进行修复,保证两个数据中心的数据一致。
【西瓜哥解读】华为HyperMetro采用锁分配机制(可惜不知道锁的粒度是否是每个LBA地址?),实现了双写,也就是两个阵列都可以直接写,不需要进行写I/O的转发,做到了真正的双活。对于读,采取优先本地读的方式,也大大提高了响应速度。当然,这需要华为自己的多路径软件配合实现。
组网规划
下面介绍双活两端数据中心、仲裁中心以及数据中心内的各种网元设备的连接。
双活组网方案是一个端到端系统化的存储解决方案,如图所示。
为了保证存储系统的可靠性,建议主机到存储网络、双活复制网络、数据中心间同城网络以及仲裁网络都冗余连接。
配置流程
下图是双活数据中心解决方案配置流程, 基本都是图形化的界面,配置并不复杂,这里就不展开了。
约束与限制
最后介绍双活特性与其他特性的互动性以及该特性应用的限制。
与其他特性的交互
双活特性是基于LUN的数据保护特性,因此,在与其他特性叠加使用时,应考虑不同特性的LUN是否存在互斥关系。了解各个特性所用LUN之间的互斥关系,可以帮助您在多特性叠加使用的场景下,进行LUN的规划。在存储系统中,双活与其他增值特性使用LUN的互斥关系如下表所示。
说明:
以下互斥关系是指存储系统先配置了双活特性(已经存在双活的本端LUN和远端LUN),再配置其他特性时的互斥关系。
应用限制
-
与其它异构厂商的存储设备创建双活时,可通过SmartVirtualization特性接管异构LUN后再创建双活。
- 建立双活的远端存储系统和本端存储系统之间,最好具有相同的硬件条件,不建议在不同条件,不同控制器数量的存储设备间建立双活关系。
【西瓜哥解读】我们看到,目前华为的HyperMetro可以和快照、精简配置、QoS、分区、自动分层,SSD Cache等特性叠加使用,也支持把第三方的存储虚拟化后做双活。但我们也看到,这个版本暂时还不支持和远程复制叠加使用,也就是还不支持双活方式的3DC方案。
【西瓜哥学习心得】阵列双活作为一个新特性,目前每个厂商都是不同程度支持,特性处于不断完善过程中,比如我了解到EMC VMAX3 SRDF/Metro现在交付的版本甚至仲裁还没有支持。好在高端存储都支持不停机升级,因此用户可以先部署基本的功能,以后再升级。华为HyperMetro目前已经实现了必要的功能,包括第三方仲裁,第三方阵列接管等,已经满足大部分场景的需求。也就是说,华为HyperMetro免网关,组网简单,支持真正的AA,仲裁完善,可以利旧第三方阵列,还有针对FC链路远程I/O优化的Fast_Write特性,加上直观的图形化管理,使得高端存储的双活方案已经不再停留在忽悠阶段,而是走向实用,可以开始规模部署。虽然文件系统双活,双活3DC组网这些高级特性上,从文档看现在大量发货的版本应该还不支持,但据说代码已经开发完成,正在紧张测试中,年底前双活3DC就可以合入版本规模发货,但文件系统双活可能需要到16年上半年了。如果用户如果有需要,未来完全可以不停机升级来支持。
另外给大家一个建议,如果做存储的方案,涉及到一些新特性,建议最好依据产品文档来判断哪些功能实现了,具体的配置和规划注意事项在售后的文档里面一般都有详细的描述。当然,文档里没有写的不一定不支持,但是需要和厂商确认,还有支持的时间点。因此,西瓜哥认为,不看售后文档的售前不是好售前。