固态硬盘内RAID5技术

电子说

1.3w人已加入

描述

提到冗余保护,最容易想到的就是RAID(Redundant Arrays of Independent Disks)。它是一种把多块独立的物理硬盘按不同方式组合形成一个硬盘组,以此提供比单个硬盘更高的存储性能和数据冗余的技术。该技术在服务器和存储阵列产品中广泛应用。

近年来,随着固态硬盘的使用率上升,提升固态硬盘的性能和可靠性(包括寿命)一直是行业攻关的重点。RAID技术在固态硬盘内已经得到了广泛应用。关键数据多副本,可以看作是RAID1保护,用户数据更常见的则是使用性价比较高的RAID5。具体使用什么RAID级别,一般是根据实际情况进行选择。DapuStor的HaiShen系列产品就使用RAID5技术为用户数据提供冗余保护,提升可靠性。这里,我们就将盘内RAID5技术做一个简单介绍。

RAID5原理

固态硬盘

数据按条带分布在不同位置,比如图中A1~Ap是一个条带,B1~Bp是另一个条带,每个条带中的一份数据(比如A1)叫做条带单元。每个条带有一份校验数据(比如Ap),所以我们一般也称它为N+1的RAID组。RAID5校验计算通常采用异或(XOR)算法。现在很多主控也提供RAID5计算的硬件加速功能。

盘内RAID5条带布局

为了保证任意时候,一个Block或者DIE损坏,不会导致数据丢失。一个RAID5条带中的每个条带单元最好是来自不同的Block和不同的DIE。这种我们一般称为DIE级别的RAID冗余。跟上图对应,比如A1数据在DIE 1的某个Block,A2数据在DIE2的某个Block。最直观的组条带方式就是每个DIE各选一个Block,然后每个Block的相同Page组成一个条带。各个Block的Page组成RAID5条带有下面几种常见布局:

1) 固定DIE的布局

固态硬盘

在组成一个RAID组的Block中,使用一个固定DIE的Block存储校验(类似传统的RAID3),但是组成不同RAID组的Block可以不同。

2) 旋转布局

固态硬盘

组成一个RAID组的Block中,校验不固定在某个Block上,而是有规律的旋转变化(RAID5的旋转布局有多种方式,此处只列举了一种)。

不同的数据布局,会产生不同的盘内数据布局。最直观的,顺序写后,顺序读,各个DIE或者Block上的压力模型,在前面提到两种布局下是不同的。

RAID5数据恢复

如果Host 读某个Nand Page发生UNC(UNCorrectable)错误,这时RAID5恢复的原理是读这个条带内其他数据和校验数据,进行计算,得到期望的数据。

固态硬盘

盘内RAID的异常处理

RAID5的数据恢复依赖分条的完整性,因为故障可能发生在任何阶段,所以数据恢复前必须判断出校验的有效性,避免恢复出错误数据。

典型场景1:某个Nand Block故障时,这个Block已经在一个写完成的条带上,此时RAID其实处于降级状态,较优的想法是把相关条带的数据重新放到一个健康的条带或者重建出故障Block的数据来替换它。

典型场景2:某个Nand Block 故障时,此时还没有数据写入,尽量把它从RAID组的Block中剔除,选一个健康的Block替换或者让当前RAID组从N+1保护转换成(N-1)+1。

典型场景3:一个条带单元的数据写入Nand 过程中发生了Program fail,同时另一个位置的读又遇到UNC,这些场景在DapuStor的HaiShen系列产品中都有专门处理,保障可以恢复出正确数据。

因为错误可能发生在任何时刻,所以其他场景这里就不一一列举。

RAID带来的影响

1. OP(Over Provisioning)空间降低

引入RAID后,有的Nand空间用于存储校验数据,间接导致用户数据的可用OP空间降低,

2. WA(Write Amplification)变大

因为每个条带额外写入了一份校验数据,所以整个生命周期的WA会增大。

3. 性能影响

前面两点提到的OP变小,写放大变大,其实最终也都会表现成对性能的影响。另外,一个直观感受是顺序写和读的过程,因为每个条带都有一个DIE没有提供给Host IO服务,所以性能也必定会有影响。

盘内冗余技术发展

RAID5为用户数据提供了N+1级别的冗余保护。随着盘内功能增强,业务对盘内可靠性要求的提高,不同成本和可靠性定位的用户可能会需要不同冗余保护的级别。技术上还有一些更高级别的冗余保护:

1. RAID6

相比RAID5的N+1,它提供了N+2的保护。对应在SSD产品中,它当然也会带来更大的OP损耗。

2. EC(Erasure Coding)

现在分布式存储时代,多备份和EC相比传统RAID是更广泛的应用。EC算法提供了N+M的保护级别,可以有更广阔的选择空间。

原文标题:盘内数据冗余保护

文章出处:【微信公众号:大普微】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分