无论是最终用户还是存储系统研发人员,都想知道影响RAID数据可靠性的因素具体有哪些?这些影响因素对数据可靠性具体会导致什么样的影响?对于研发和用户我们可以采用什么样的配置、什么样的技术保证数据可靠性。在此存储老吴和大家一起分享一下影响RAID数据可靠性的几大因素,通过这些分析,我们可以体会到为什么存储虚拟化技术、Erasure Code、多副本会成为技术发展的主流。

 

概括起来,对磁盘存储系统而言,影响RAID数据可靠性的三大因素如下:

1,磁盘容量。随着磁盘容量的增加,数据丢失的概率会大为增加,数据可靠性降低

2,数据重构性能。提升数据重构性能,增加数据可靠性

3,数据保护级别。增加数据冗余度,降低数据丢失概率,提升数据可靠性

 

根据具体的评测结果,数据丢失的概率和三个影响因素之间的关系如下表所示:


wKioL1XZcuHTlqT-AAFTJloFH_0291.jpg


从上表可以看出,随着磁盘容量的增加,在相同数据重构性能和数据保护级别下,数据丢失的概率也随之增加。磁盘容量的增加是影响数据可靠性的一个重要因素。


wKiom1XZcPmjf6MzAACMTTgVkjE722.jpg


如上图所示,在RAID5数据保护级别下,在相同数据重构(10MB/s)的性能下,随着磁盘容量的增加,数据丢失概率急剧增加,并且理论值和实际值差别很大。理论上,RAID5的数据丢失概率基本线性增长,在2TB容量下,数据丢失概率达到3.15%。但是在实际测试过程中发现,在2TB的磁盘容量下,5年内数据丢失的概率竟然达到了52.2%。这已经说明在10MB/s数据重构性能下,RAID5数据保护级别已经不能在大容量存储系统中应用了,存在极高的数据丢失风险。在EMC的磁盘备份、归档系统中,考虑了这方面的因素。应用大容量磁盘作为数据备份应用时,都会直接采用RAID6数据保护级别。但是即使在这种情况下,在全球每年仍然会出现很多数据丢失的案例。

 

从技术的角度分析,磁盘容量的增加导致数据丢失的概率提升,这是很容易理解的。在相同的数据重构性能前提下,一旦RAID5系统进入降级模式对数据进行恢复时,此时系统已经不具备数据保护的能力了。在降级模式下如果再次发生磁盘故障,那么就会导致数据丢失。磁盘容量的增加势必会延长降级模式的时间,所以数据丢失的概率也会急剧增加。从分析可以看出,影响数据丢失概率的是降级模式时间。因此可以通过提升数据重构的性能来缩短降级模式的时间,从而降低数据丢失的概率,达到增强数据可靠性的目的。

 

如下图所示,通过提升数据重构的性能,的确可以增强数据可靠性,降低数据丢失的概率。


wKiom1XZcSTDQlraAACxlb10WFU814.jpg


无论是从理论上还是从实际的测试结果都可以看出,提升数据重构的性能可以降低数据丢失的概率。从上面的数据可以看出,数据重构性能从10MB/s提升到60MB/s之后,数据丢失概率减小到以前的1/5以下。根据这个原理,在RAID的设计方面想尽了一切办法去提升数据重构性能。可以想到的方法有局部数据重构、基于优先级调度的数据重构、基于拷贝方式的数据重构以及抛弃传统RAID架构,采用de-clustered RAID的数据分布方式。这些不同的方法,其一个很重要的目的就是为了提升数据重构性能,从而增强数据可靠性。

 

由于受限于传统RAID的数据分布限制,传统RAID无论采用何种方式进行优化,其数据重构性能都无法进行扩展,峰值性能局限为单盘写性能。正因为这个原因,RAID研发人员开始抛弃传统RAID架构,提出de-clustered RAIDDynamic Disk PoolDynamic RAID以及RAID2.0等概念。这些概念背后的唯一思想是将存储虚拟化(底层虚拟化技术)技术引入到RAID设计中。通过虚拟化技术的应用,使得数据重构性能可以随着磁盘数量的增加而线性增加。这是一个非常重要的突破,闪存系统、分布式存储系统中的数据保护,很多都将采用这一思想。

 

影响数据可靠性的另一个因素是数据保护级别。如果说提升数据重构性能仅仅是对数据可靠性的一种优化,那么改变数据保护级别将会对数据可靠性带来巨大提升。下图对比了在不同数据保护级别下的数据丢失概率。


wKioL1XZc1_ByM0AAAClpln1xNk281.jpg


从对比结果可以看出,采用RAID6之后,数据丢失概率大为降低。在1TB磁盘容量情况下,数据保护级别从RAID5提升到RAID6之后,数据丢失概率从52.2%降到0.15%,这是非常惊人的数据可靠性提升。基于此,RAID数据保护技术的一个很重要方向是Erasure code,通过Erasure Code可以进一步增加数据冗余度,避免多盘同时损坏所引入的数据丢失问题。RAID5可以容忍单盘损坏;RAID6可以容忍两块同时损坏;采用Erasure Code之后,可以容忍超过两块盘同时发生故障。从技术的角度来看,增加冗余度,本身也是为了降低发生无数据保护降级模式的概率。从这一点上来看,提高数据重构性能和增加冗余度都是为了减少无数据保护降级模式的时间窗口。

 

单个RAID6数据保护系统看似数据丢失的概率很低,但是,在实际的一个大容量存储系统(PB级)中,RAID6发生数据丢失概率将会急剧增加。并且随着大容量磁盘的应用,RAID6数据保护系统的数据丢失概率将会使得系统不可用。下图给出了不同容量磁盘构建RAID6时,在海量存储系统中的数据丢失概率。


wKiom1XZcXGSFn1VAAD-zkHO0l8235.jpg


从图中可以看出,当单盘容量达到10TB时,一个超过30PB的海量存储系统,如果采用RAID6的数据保护级别,那么在5年内数据丢失概率将会超过10%。所以,在设计海量存储系统时,我们需要考虑更高冗余的数据保护级别,例如多副本,Erasure Code。在更高数据冗余级别的基础上,我们需要考虑更快的数据重构速度,例如将底层虚拟化技术引入RAID。在综合这些技术的基础之上,我们可以降低数据丢失的概率,提升存储系统数据可靠性。


(来自存储老吴的博客——存储之道)