取消
搜索历史
热搜词
原创
活动
创新2.0
I T
产业
当前位置:首页 >互联网•IT > 存储 > 存储网络 > 正文
1分钟看懂EMC DSSD的Cubic RAID原理
来源:高端存储知识  :西瓜哥 2016-03-02 09:48:00
EMC DSSD D5在2月最后一天如期发布了。发布前,大部分内容我都比较清楚了,就是那个Cubic RAID,好像一直没有弄太明白。DSSD D5发布后...

EMC DSSD D5在2月最后一天如期发布了。发布前,大部分内容我都比较清楚了,就是那个Cubic RAID,好像一直没有弄太明白。DSSD D5发布后,看到了更多的内容,特别是Cubic RAID,发现原理其实很简单。

今天,我简单分享一下我对Cubic RAID的理解。我们花1分钟,就可以了解其基本原理了。

我们知道,传统的RAID 6只有两个校验位,因此,只能同时坏两个盘。这里的盘可能是逻辑盘,或者说就是一个数据块,类似RAID 2.0里面的chunk。后面我们都用块这个术语来代表盘吧。

\

后来,有人发明了一种多维RAID,可以修复更多的故障。比如下图是一个二维的RAID,每行和每列都独立做RIAD 6,校验位还是放在最后两个位置。这样,系统可以修复更多的故障,甚至超过3块盘失效也没有问题的。但有一点,如果某行和某列超过3块盘故障的时候,如果交叉那块盘也是坏的(如下图),那么这种情况简单的多维RAID就修复不了了。

\

EMC DSSD D5的Cubic RAID针对多维RAID做了改良,主要是坏块恢复算法上做了迭代,因此可以恢复更多盘的故障,比如下图,我们看到,坏块非常多,这种情况怎么恢复呢?

\

首先第一步,Cubic RAID先修复所有能修复的列的坏块。因为做的是RAID 6,因此,所有少于或等于2个坏块的列都修复了。

\

然后再修复所有少于等于两个坏块的行。有些行虽然刚开始不能修复,但由于第一步已经恢复了某些坏块,因此也变得可以修复了。

\

然后继续迭代,看看是否有更多的列又可以修复了。

\

然后再继续迭代,看是否有更多的行可以修复了。

\

这样迭代下去,直到所有的数据全部修复。

\

最后我们看到,如此复杂的一个故障居然全部修复完成了。我们看到,甚至某些行或者列同时有6个坏块也可以修复。

\

EMC DSSD Cubic对多维RAID改良的地方只要有两点:

1、充分利用交叉的校验位块,就是上面蓝色的4块,也保持校验数据的校验数据,这样使得系统又多了一层保护。当然,由于只有4块,要分给4个行/列,也就是校验数据只是多了一个RAID 5的保护,不是RAID 6。

2、采用行列迭代方式逐步修复,这样可以处理非常复杂的故障类型,可靠性不仅仅是可以恢复任意三个坏块那么简单,远远超过这个能力。

下面我们再来看看EMC DSSD D5的具体实现。大家知道,D5的每个FM(闪存模块)有512个die,每个die就作为一个Cubic RAID的一个数据块。大家也知道D5最少要配置半框,也就是18块FM。因此,DSSD的Cubic RAID栅格矩阵是18行,32列,也就是18x32。因此,有效的数据块矩阵是(18-2)x(32-2)=16x30。因此,我们可以推算出其利用率是(16x30)/(18x32)=83%。也就是说,DSSD只用了17%的空间,却实现远远大于RIAD 3P(3校验)可靠性。如果18个FM,采用传统的纠删码方式,如Nimble全闪存阵列采用的RAID 3P,可以支持同时故障3块SSD,需要的校验空间也是3/18=1/6,约为17%。

【学习心得】

1、Cubic RAID仅仅以17%的容量消耗,换来远远超过RAID 3P的可靠性。这个Cubic RAID确实为NAND量身定做的。这几天大家看新闻,Google大量闪存的使用实践表明,SSD非常容易发生die的不可恢复的读错误,Cubic RAID应该是比较理想的数据保护方案;

2、Cubic RAID虽然好,但我们也应该认识到其实校验计算量很大,相关于做了两次RAID 6,如果用软件实现,估计还是比较耗CPU资源的。DSSD为什么可以这么做,主要是DSSD D5的控制器只做数据控制,不做数据转发,因此可以使用很多CPU资源来做RAID校验。而且现在的CPU能力也很强大,核数多,而且有支持RAID 6的相关指令,因此计算起来应该也是没有问题的。

3、Cubic RAID虽然好,但已经申请了专利。虽然从原理看其实很简单,其他厂商完全也可以采用类似的实现,但专利原因,要学也不容易。

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

分享到微信 ×

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