在闪存上如何建RAID是存储行业一直关心的一个问题。大家知道传统RAID是不能直接部署到SSD盘上去的,除非采用RAID0或者RAID1的配置方式。如果强行把RAID5或者RAID6部署到SSD上,那么SSD的写放大问题将会变得尤为突出,SSD盘的使用寿命将大打折扣。因此,如何在SSD的基础上构建RAID成为闪存阵列需要考虑的一个问题。
EMC的XtremIO系统是一款非常典型的全闪存阵列,其采用了很多有别于传统阵列的设计技术,其中,面向数据保护的RAID就是采用了比较新颖的思路。XtremIO的RAID是一种面向RAID2.0技术的新型RAID。其最大的特点在于数据重构时间短、面向内容的数据恢复方式。由于SSD技术本身不存在随机读写问题,因此非常适合RAID2.0技术的应用。可以说,RAID2.0和SSD技术是天生一对。除了采用RAID2.0这项技术以外,XtremIO的RAID在数据布局上也有所不同,宣称没有采用RAID5、RAID6这种传统的数据校验算法,并且在空间使用率方面要比传统RAID高很多。由于EMC没有对外发布详细的技术细节,因此,很难准确的知道EMC的XDP到底是一个什么样的神秘系统。
但是,通过EMC发布的新闻材料,可以推测出来XDP的真实面目。首先,XtremIO的XDP宣称Capacity overhead只有8%,但是可以达到的保护效果和RAID6一样,然后给出了下面一个表格数据:
这样的数据的确有点不可思议,给XDP徒增了很多神秘感。其实,通过分析发现,XtreamIO的RAID配置是23+2,也就是说23块数据盘配置两个冗余盘,这样达到的Capacity Overhead是8%。这显然是可以达到的,所以,XDP的Capacity Overhead不应该是XtremIO的特色,其最大的特色还是在于数据校验算法方面。
XtremIO的XDP数据校验算法如下图所示:
整个RAID中的盘被分成数据盘和校验盘两大类,其中两个校验盘也可以像传统RAID一样称之为P、Q盘。所不同的是,P、Q盘上的数据不像传统RAID那样通过一个条带中的数据计算出来。而是将校验信息的生成分为水平校验码和对角线校验码两种,这两个校验码组成了P、Q码。
例如,上图中,P码的生成和传统RAID5的方法完全一致,但是Q码是通过对角线上的数据生成的。因此,上图中可以生成5份对角线Q码。和传统RAID相比,这种编解码的算法复杂度要小于传统RAID6,和RAID5的算法复杂度是相同的。只存在XOR操作,没有乘法操作。从这点上来看,XDP的编解码效率要高于传统的RAID6算法。
追根溯源,这种对角线编解码的算法其实很早就有,只是在磁盘存储领域很难应用。而在XtremIO系统中,为了降低写放大,数据会在有电池保护的内存中进行聚合,然后再写入SSD,因此,就可以采用上述XDP方式对数据进行保护。
从外界的测试结果来看,XtremIO的RAID性能表现不错,其一方面得益于RAID2.0;另一方面也和XDP的编解码算法有一定关系。
Flash闪存技术在不断的往前发展,一些以前在磁盘存储中无法应用的技术也可以在闪存存储中找到自己的一席之地,真可谓***!闪存存储系统的设计要面向闪存自身的特性,只有这样的系统才是一个真正的好系统。
剖析XtremIO的XDP技术,布布扣,bubuko.com