取消
搜索历史
热搜词
原创
活动
创新2.0
I T
产业
当前位置:首页 >互联网•IT > 存储 > 存储系统 > 正文
七夕节,存储脱单指南
来源:高端存储知识  :西瓜哥 2015-08-21 09:31:11
今天是七夕节,虽然有传闻由于两地分居,织女和牛好上了,七夕取消。但神仙哪里懂单身狗的痛,不少含蓄的单身狗还是去购买了六神磊磊今天推荐的浪漫一生,琴瑟和谐的白色浪琴表送给女神,可惜不是所有女神都懂这个是“表白”的意思,结果很多“白表”了,哎。。。。。。

今天是七夕节,虽然有传闻由于两地分居,织女和牛好上了,七夕取消。但神仙哪里懂单身狗的痛,不少含蓄的单身狗还是去购买了六神磊磊今天推荐的浪漫一生,琴瑟和谐的白色浪琴表送给女神,可惜不是所有女神都懂这个是“表白”的意思,结果很多“白表”了,哎。。。。。。

人类都在为脱单忙碌,而存储也不例外。

存储脱单的高级形式,就是双活。虽然有人说双活它是个坑,但多数人还是选择了往下跳,就像婚姻是爱情的坟墓一样,我们多数人还是选择了婚姻,因为婚姻经营得好,其实也是爱情的保鲜剂。六神磊磊今天说金庸小说里面最和谐的爱情——郭靖和黄蓉,就是婚姻的典范。

存储脱单(双活)有很多形式,古代比较常见的是媒婆(网关)形式,如EMC VPLEX,IBM SVC,华为VIS等等。也就是脱单的主动权都在媒婆手里,所有的沟通都通过媒婆,这种脱单形式的好处是选择比较多(支持存储异构),不好的地方是媒婆的能力决定了婚姻的质量,这个对高富帅(高端存储)来说是不能接受的。因为高富帅的能力、眼界和视野绝非媒婆能比,因此,高富帅现在的潮流是主动寻找自己的爱情(双活),不再需要媒婆。

西瓜哥研究的传统的高端存储厂商里面,HDS(GAD)是第一家实现存储双活的,后来华为(HyperMetro)也实现了,EMC(SRDFMetro)也宣传这个季度支持。

HDS的阵列双活技术叫Global-active device (GAD),首先在高端存储VSP G1000上支持,但HDS后来采用SVOS统一了高中端平台,因此,GAD在G200,G400,G600和G800上都得到了支持。

今天,利用这个机会,我们来简单了解一下HDS的GAD脱单大法。虽然西瓜哥前面介绍过很多GAD一些内容,但GAD的功能在不断完善,特别是延伸到了中端。因此,今天西瓜哥还是重新学习整理了一下,把学习心得分享给大家。

【GAD原理】

其实,所有的阵列双活原理都类似。

HDS引入了一个概念,虚拟存储机VSM(virtual storage machine)。简单点说就是第二台存储使用第一台存储的一样的信息来欺骗服务器,让服务器以为是一台设备。假设你有两个双胞胎儿子,你总是先给哥哥打扮好后,然后给弟弟穿一样的衣服,让外面的人根本区别不出他们谁是哥哥,随是弟弟。在HDS GAD里,这个一样的衣服就是LDEV ID,主卷(P-VOL)和从卷(S-VOL)的LDEV number是一样的。

\

当然,对内的话,HDS GAD通过复制、同步技术保持两边设备是完全一致的。真正的双活阵列,两边都可以同时对同一个卷进行读写,无需转发写I/O。业界有一些假双活阵列的实现方式,包括HDS早期的方案HAM,都不是真正的双活,但一般也包装成双活去卖。这种假双活方案一般有两种方式:

1、主从方式:

主阵列可以读写,从阵列不能写,只能读。主机通过多路径软件把所有的写I/O全部送给主阵列。

2、代理方式:

主从阵列都可以接收主机的读写请求,但从阵列实际不能写,而只是作为一个写的proxy,把主机的写I/O转发给主阵列。

这种实现方式比较简单,因为实际上只有主阵列真正去写存储,无需解决锁的问题。但这种假双活的方式,使得从站点写I/O不能就近落盘,而需要多一次远程转发,效率就差多了(阵列间的复制同步真双活和假双活都是一样的)。一般用户如果不了解这些细节,可能以为这些双活方式都一样的。其实不然。特别是代理方式更具欺骗性,因为主机看到两边阵列都是可写的。

【应用场景】

存储容错

平时,服务器对两边的存储都可以读写,当任何存储出现问题,另外一个存储会接管所有的I/O。

\

数据中心容错

这样场景应用最普遍,服务器也是集群方式,一般服务器处于不同的数据中心。当服务器集群软件切换的时候,存储无需挂起和重新同步。

\

数据中心负载均衡

这种场景在现在虚拟化的数据中心越来越多。比如主站点的服务器和存储负载都很大,怎么办?

\

有了阵列双活的支持,可以非常方便把一部分VM迁移到从站点,而底层存储无需做任何数据迁移操作,可以快速实现负载均衡。

\

【组网拓扑】

单机双阵列组网

这种情况需要在服务器上安装厂商的多路径软件,通过多路径软件的自动切换来完成存储的容错。目前所有阵列双活的厂商都需要用自己的多路径软件,而不用第三方或者操作系统自带的,主要是双活有非常复杂的切换逻辑,只有自己的多路径软件才能和自己的陈列完成高效复杂的沟通,做出最适合的切换判断。这是更多从可靠性的角度来考虑。

外部存储作为仲裁盘,防止脑裂,后面我们再讲。

\

双机双阵列组网

这种组网需要服务器安装集群软件,来实现业务的切换。一般业界最常用的集群软件是ORACLE RAC,VMWARE metro cluster和微软的Multi-site Cluster / Stretch Cluster for Application Servers。

\

交叉组网

这种方式是推荐的组网方式,也就是服务器都可以看到所有的存储,服务器同时采用集群软件和多路径软件来完成故障的切换,切换的方式更加合理,比如存储故障,服务器集群可以不切换,只需要多路径软件切换存储就可以了。

\

GAD的状态有很多种,比如Mirroring,Mirrored,Suspended,Blocked等等。一种状态满足条件就转换为另外一种状态,如果你做售后,你要非常清楚这些转换关系,如果你只是做售前方案,大概了解一下也就可以了。下面列出GAD的状态转换图,感兴趣自己下去研究研究。

\

【仲裁盘】

双活方案,都需要仲裁机制。仲裁主要用于两个存储的通讯链路故障时,防止脑裂的方法。仲裁的方式有很多种:

1、采用优先级方式。

这种方式最简单,但如果低优先级的站点出现故障就麻烦了,因此一般低端方案才这么做;

2、采用软件仲裁方式。

这种方式应用比较普遍,采用专门的仲裁软件来实现,仲裁软件放在第三站点,可以跑在物理服务器上,也可以跑在VM上,甚至可以部署到公有云上去。

3、采用阵列仲裁盘方式。

这种方式传统的厂商喜欢用,即在第三站点采用另外一台阵列来做锁盘。这种方式成本高,灵活性不如第二种,但稳定性应该高一些,因为仲裁软件还是容易受病毒和黑客攻击,而仲裁盘是专用设备,安全性相对高点。

HDS GAD采用的就是仲裁盘的方式。

\

GAD的仲裁机制原理是这样的:

1、主存储发现数据链路故障,然后把这个状态写到仲裁盘里;

2、当从存储检测到仲裁盘里有路径故障信息,它停止读写;

3、从存储把自己的状态写到仲裁盘,说它不能接受读写请求了;

4、当主存储检测到从存储不再接受读写请求后,挂起GAD pair,主存储继续保持读写。这个超时时间是5秒,如果时间到主存储也没有收到从存储的相关信息,也会直接挂起GAD pair,然后读写继续。

那么问题来了,如果通讯故障,两个存储都同时写仲裁盘怎么办?HDS的工程师按照日常生活的例子,让小的赢。即看那个阵列的序列号小,序列号小的来宣称通讯中断,也就是他最终来接收脑裂后的业务。就如日常生活里双胞胎都抢一个西瓜,一般父母就要求哥哥让给弟弟,O(∩_∩)O哈!所以说存储就是生活。

我们看到,其实仲裁盘是当通讯链路故障是主从阵列用来沟通用的。但是可笑的是HDS网站上面有一个ESG写的GAD的评估白皮书报告,里面说仲裁盘是作为链路故障时数据Cache使用,西瓜哥认为是不正确的,因为仲裁盘的距离可能在上千公里外,肯定不如缓存在本地效率高啊。

【一致性组】

我们知道,阵列的远程复制有一个特性叫一致性组,这个在数据库的场景下一般是必须的特性。因为多个卷如果没有这个特性,可能复制过去的数据不同的卷时间点是不同的,对于数据库要求强一致性的应用来说就是一个灾难。昨天有一个用户还向西瓜哥抱怨,说测试某国产高端存储的时候,居然发现没有这个特性。

对于双活阵列来说,这个一致性组的支持更加重要。举个例子,两个应用是紧密关联的,他们要求跑在同一个数据中心,甚至在同一台主机上。如果没有一致性组,某个应用的存储出了问题,这两个应用都分别跑在不同的数据中心了,这种场景不是用户希望看到的。

\

但有了一致性组,逻辑上把他们的卷放在一起,任何一个卷出现问题,所有的应用都一起进行切换,如下图所示。

\

【双活两地三中心】

能否把传统的两地三中心方案和双活结合起来?答案是肯定的。HDS VSP G1000采用GAD来实现双活,采用UR(Universal Replicator)实现第三站点远程异步复制。

\

不过,从HDS的文档,西瓜哥看到HDS还是建议三个数据中心都在一个城市。我们看上图,两个双活的站点建议是园区范围,而第三站点建议是同城范围。按理来说,UR对距离没有要求,可能是双活对资源要求比较高吧。

【GAD的一些关键规格】

GAD的组件有下面这些:

\

GAD的一些关键规格,西瓜哥挑几个重要的讲一下:

1、GAD支持型号从VSP G200到G1000,也就是HDS G系列都支持,这个全面说过了。但GAD需要单独购买License,而且价格不菲。西瓜哥就了解到去年某金融客户购买了两套G1000,本来以后想上双活,后来发现GAD许可价格太贵,因此现在一直没有做双活。

2、内存需求:除了G200,其他型号都需要额外的内存。也就是GAD很耗Cache资源的。

3、双活的两地三中心(GAD+UR)方案,只有高端存储G1000支持。

4、仲裁盘的最大距离是1500KM,最多支持32个仲裁盘,每个仲裁盘根据型号支持不同数量的GAD pair。仲裁盘最少需要12,292MB容量。阵列每隔500ms就检查一次仲裁盘,超时时间是1s。

5、数据链路G1000只能用FC,而中端存储可以用FC,也可以用iSCSI。最大的物理链路是8条,距离是100KM。

6、每个阵列支持最大的VSM个数是8个;

7、目前只有高端存储G1000才支持双活一致性组,支持的数量是256个。

8、所有型号都支持Universal Volume Manager管理的外部卷做仲裁盘,但只有高端存储G1000支持采用外部卷做P-VOL和S-VOL。也就是只有G1000支持(异构)虚拟化做双活,这样可以利旧老的第三方存储,但上面的数据不能保留,要重新格式化,作为pool volume来使用才可以。

【西瓜哥观点】

1、双活虽然是坑,但好处太多了。因此双活的实施案例会越来越多,主流厂商纷纷采用无网关方式的阵列双活方式,组网复杂度大大减低;

2、阵列双活还是比较复杂,各家实现的差距很大。用户不能简单了解是否支持双活,还应该了解实现的是真双活还是假双活、支持哪些仲裁方式,是否支持一致性组、两地三中心这些高级特性;

3、阵列双活还是比较新的事物,厂商的规格更新也很快,尽量找最新的的主流厂商资料来了解业界实现的程度。讨论一下老的资料可能一样不大,因为随着方案的成熟,很多限制都慢慢取消了。

昨天没有写文章,主要是GAD的资料没有研究完,没法动笔。其实看了很多文档,但有些内容太细节了,西瓜哥觉得适合在微信分享的就是这些了。不说了,我要过七夕节去了,什么,你问我七夕节怎么过?还能怎么过,只能,一笑而过,O(∩_∩)O哈!

编辑:闫春春
关键字:     存储 
活动 直播间  | CIO智行社

分享到微信 ×

打开微信,点击底部的“发现”,
使用“扫一扫”即可将网页分享至朋友圈。