查看其它 6 个回答jxnxsdengyu的回答

jxnxsdengyujxnxsdengyu课题专家组系统工程师江西农信

SVC Stretch Cluster也就是SVC拉伸式集群架构,就是把同一SVC集群中的SVC节点分散在不同的两个数据中心,它们之间通过光纤链路连接,并且需要第三地的仲裁设备。为了帮助大家深入理解SVC Stretch Cluster,先来理解下SVC Local Cluster:

一套SVC集群最少包含2个节点,最大8个节点,两两节点组成一个I/O group,因此一套SVC集群最大可以包含4个I/O group,如下图所示:

SVC Stretch Cluster_1.JPEG

每一个存储LUN都分配给一个I/O group,你也可以手动转换存储LUN的I/O group,比如说LUN1属于I/O group0,当I/O group完全不可用时,需要手动转换至I/O group1,因为每一个I/O group均由两个SVC节点组成,所以每个存储LUN均分配给一个优先的节点和一个非优先节点,如下图所示:

SVC Stretch Cluster2.JPEG

不同的存储LUN的优先节点可以不一样,这是SVC集群系统自动负载和分配的,同一SVC I/O group节点均衡负载着存储LUN,对于读I/O请求来说,来自于优先的SVC节点,而写I/O请求在同一I/O group的两个节点间同步,一次SVC I/O写请求,分解为以下5个步骤:

1.主机发送写I/O请求至SVC I/O group

2.优先的SVC节点A写入I/O至缓存,并发送I/O至同一I/O group的另一SVC节点B

3.节点B将写入I/O至缓存后,并回响应至节点A

4.节点A收到节点B的回响应后,向主机回响应

5.节点A将缓存写I/O写入LUN当中

写I/O流转图如图所示:

SVC Stretch Cluster3.JPEG

有人会说了,第5步最后才将缓存数据写入LUN当中,那么当还没有写LUN时,SVC节点突然断电了怎么办?这种情况SVC也是考虑了,每个SVC节点均配备了UPS电源,可以维持供电,可以保证缓存数据正常写入LUN当中。

基于以上这种机制,同一I/O group的两个SVC节点是实时同步的,当I/O group中的主节点故障时,另一SVC节点将接管,并进入写直通模式,并禁止写缓存,也就是说只有1、5、4三个步骤。

以上是SVC的I/O group在一个数据中心的情况,而SVC Stretch Cluster则是将一套SVC集群下的同一I/O group的两个节点拉开,分别放在两个数据中心,之前连接SVC的一套存储,拉开后各放置一套存储,通过SVC做vdisk镜像同步。说白了还是同一套SVC集群,同一个I/O group,SVC Local VDM(vdisk mirror)拉开成SVC Stretch VDM,映射给主机的volume还是同一个,这样一来就不难理解了。SVC、存储、主机及第三站点光纤连线下图所示:

SVC Stretch Cluster4.JPEG

对于SVC Stretch Cluster来说,为了防范脑裂,仲裁站点是必需的。首先是configuration node,配置节点,是配置SVC集群后,系统自动产生的保存着所有系统配置行为的节点,不能人工更改配置节点,当配置节点失效后,系统会自动选择新的配置节点,配置节点十分重要,它对SVC节点仲裁胜利起着决定性作用,仲裁胜利的排序规则如下:

1.配置节点

2.距离仲裁站点近的节点

3.距离仲裁站点远的节点

下图为SVC Stretch Cluster两个站点的仲裁配置示意图:

SVC Stretch Cluster5.JPEG

当两站点间光纤链路中断,第三站点仲裁节点活动时,脑裂发生,将通过投票仲裁选举获胜的站点,按照上述的仲裁胜利规则,configuration node位于节点2,选举站点2优先赢得仲裁,通过站点2恢复业务的正常存储访问。

SVC Stretch Cluster6.JPEG

当第三站点仲裁节点不活动时,不影响主机的正常存储访问,但是此时,两站点间光纤链路也中断了,发生脑裂,这时因为节点2为configuration node,它所拥有候选的Quorum将变为active Quorum,该Quorum选举站点2为仲裁胜利站点,通过站点2恢复业务的正常存储访问。

SVC Stretch Cluster7.JPEG

另外,SVC版本到了7.2时,又出了一个新功能, 叫做Enhanced Stretched Cluster,这又是什么呢?增强版拉伸集群增强点在哪?之前的Stretched Cluster看似实现了双活,实则只为数据级双活(SVC VDM),主机访问SVC实则只访问了一个I/O group优先节点,另一非优先节点则只是完成了写缓存同步的任务而已,无论是local cluster还是Stretched cluster,实际的读写卷操作并未通过非优先节点进行,通俗的说就是主备模式(ACTIVE-PASSIVE),由于优先节点是 SVC系统自动分配的,可能会出现一种情况是,主机在站点A,但是存储卷的优先节点却在站点B,主拷贝的存储却在站点A,主机一直访问了站点B的SVC节点,再访问站点A的存储,这样的存储路径完全不是最优的,对主机I/O性能造成影响,但是这些在Enhanced Stretched Cluster中均得到改善,实现了SVC双节点双站点读写双活,在该版本,元素均赋予site属性,如SVC节点、主机、存储等,不同站点的主机对各自站点的SVC节点和存储进行读写操作,对同一volume来说,站点A的主机访问站点A的SVC节点,站点A的存储,站点B的主机访问站点B的SVC节点,站点B的存储,存储访问路径最优,两个站点的SVC节点、主机、存储都同时活动,实现应用级双活(ACTIVE-ACTIVE),在site模式中,SVC优先节点概念不起作用了,配置了site模式的主机,优先访问活动的同site的SVC节点和同site的存储。如下图所示为读写模式下的Enhanced Stretched Cluster 流转图:

绿色的箭头为优先的读I/O流转,红色箭头为站点2的存储失效后的读I/O流转。

SVC Stretch Cluster_8.JPEG

绿色的箭头为优先的写I/O流转,红色箭头为站点1/2的存储失效后的写I/O流转。

SVC Stretch Cluster9.JPEG

需要注意是,在写操作时,两个站点的SVC节点的缓存是保持同步的,但是不同于SVC LOCAL CLUSTER,整个写操作的过程中,SVC节点的写操作响应在写入缓存后就发生了,而不需要等待另一SVC节点写缓存完成并回复响应,这样一来,优化了整个写性能,具体过程如下:

1.主机向SVC写I/O请求。

2.同站点的SVC节点将写I/O写入缓存,并向主机回复响应,同时将写I/O同步至另一站点的SVC节点。

3.另一站点的SVC节点将写I/O写入缓存,并回复响应。

两个站点的SVC节点陆续将缓存写入各自站点的存储当中。

银行 · 2017-02-15
浏览3803

回答者

jxnxsdengyu
系统工程师江西农信
擅长领域: 存储灾备双活

jxnxsdengyu 最近回答过的问题

回答状态

  • 发布时间:2017-02-15
  • 关注会员:5 人
  • 回答浏览:3803
  • X社区推广