跨中心的双活储存数据一致性如何保障? 一方面,当写入数据时,在复制过程中,数据传递是在缓存中进行的,这样做的好处是提升了性能,问题是当出现控制器节点异常死机事件时,就会导致缓存内的数据不能写入储存中,从而造成数据的不一致,这时有没有保障单个储存数据一致性的措施?另外一方面,两个站点的储存之间的数据一致性,从缓存层、底层数据层又是如何保障的? 第一个问题:前端节点写缓存与后端储存间的数据一致性如何保障? 储存跨中心双活中的单个储存架构分为三种: 1.物理储存的内部双控制器 比如V5000/V7000/V9000 HYPERSWAP,写储存的操作也就是写缓存的过程,写了一个控制器,控制器也会将缓存数据同步至另一控制器的缓存,只有当真正同步完,这次的写操作才算完成,当写缓存达到水位线后,会将写缓存刷入到磁盘组中,当一个控制器异常死机时,IO HANG住一小段时间,另一控制器将接管,缓存数据也不会因此遗失,一致性得到保障;单控制器时,写缓存被禁止,之前的缓存被刷入后端储存,即使这时这个控制器也异常死机,后端磁盘的数据完整性和一致性也得到了保障;如果不幸两个控制器的电源同时断电了,这时写缓存数据还未及时刷入磁盘组,不用怕,几乎所有储存都会考虑到这一点,都有专门的电池模块维持供电几分钟,保证缓存数据能够顺利落到磁盘组当中。 2.物理储存+储存虚拟化网关(有写缓存) 比如SVC ESC/HYPERSWAP,NETAPP MCC(叫写日志),这种架构也就是相当于在物理储存前端又加了一道控制器,也存在写缓存,相当于扩大了后端物理储存的缓存容量,写操作要先写入SVC节点,再同步至另一SVC节点,只有完全同步成功,才算做是一个完整的写周期,后面的操作也是等待写缓存达到水位线刷后端储存。佑了这种机制的保障,储存虚拟化网关的缓存与后端物理储存的数据完整性和一致性得到保障,无论是单SVC节点问题,另一节点缓存数据冗余,写缓存被禁止,所有缓存刷入后端储存,还是SVC的电源断电,SVC有专门的UPS供电模块保障写缓存及时刷入后端储存,都能完整的保障数据的完整性和一致性。这里不再赘述。 3.物理储存+储存虚拟化网关(无写缓存) 比如EMC VPLEX METRO,它只有读缓存,写缓存还是由后端的物理储存提供,所以该问题还是和前面说的相似的保障机制。 第二个问题:两个站点的双活储存间的数据一致性如何保障? 这里分两种方式来阐述这个问题: 1.一种是两个站点的主机识别的是相同的VOLUME 比如:SVC ESC、EMC VPLEX、HDS GAD等,两个站点的主机对这一个VOLUME写操作时,数据被刷入两个镜像的后端储存,这有两个储存都写完成返回,才算一个完整的缓存刷后端储存的写周期,这时两个储存从数据块角度来说,是一致的,一个站点或者储存问题,另一个站点的储存是可以接管,而不会造成数据遗失。 2.另一种是两个站点的主机识别的是不一样的VOLUME 比如:SVC V7000/V5000 HYPERSWAP、NET APP MCC等,由于两个站点的主机识别的不是同一个VOLUME,必然存在储存或者储存虚拟化网关的VOLUME与VOLUME的同步复制技术,HYPERSWAP有METRO MIRROR,MCC有Syncmirror,它们的技术共同点是复制技术的一致性校验机制,更高级的有以多个卷为单位的卷组一致性校验机制,来保障跨站点的两个卷/卷组的一致性,在某站点所有控制器或者站点完全问题时,另一站点有完整的、一致的储存可以接管。 |
发表评论