RAID是由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能和数据冗余的技术。RAID是一类多磁盘管理技术,其向主机环境提供了成本适中、数据可靠性高的高性能存储。RAID的两个关键目标是提高数据可靠性和I/O性能。磁盘阵列中,数据分散在多个磁盘中,然而对于计算机系统来说,就像一个单独的磁盘。通过把相同数据同时写入到多块磁盘(典型地如镜像),或者将计算的校验数据写入阵列中来获得冗余能力,当单块磁盘出现故障时可以保证不会导致数据丢失。
RAID中主要有三个关键概念和技术:镜像(Mirroring)、数据条带(DataStripping)和数据校验(Dataparity):
镜像,将数据复制到多个磁盘,一方面可以提高可靠性,另一方面可并发从两个或多个副本读取数据来提高读性能。显而易见,镜像的写性能要稍低,确保数据正确地写到多个磁盘需要更多的时间消耗。
数据条带,将数据分片保存在多个不同的磁盘,多个数据分片共同组成一个完整数据副本,这与镜像的多个副本是不同的,它通常用于性能考虑。数据条带具有更高的并发粒度,当访问数据时,可以同时对位于不同磁盘上数据进行读写操作,从而获得非常可观的I/O性能提升。
数据校验,利用冗余数据进行数据错误检测和修复,冗余数据通常采用海明码、异或操作等算法来计算获得。利用校验功能,可以很大程度上提高磁盘阵列的可靠性、鲁棒性和容错能力。不过,数据校验需要从多处读取数据并进行计算和对比,会影响系统性能。
不同等级的RAID采用一个或多个以上的三种技术,来获得不同的数据可靠性、可用性和I/O性能。至于设计何种RAID(甚至新的等级或类型)或采用何种模式的RAID,需要在深入理解系统需求的前提下进行合理选择,综合评估可靠性、性能和成本来进行折中的选择。
总体说来,RAID主要优势有:大容量、高性能、可靠性、可管理性。
RAID等级
JBOD(JustaBunchOfDisks)不是标准的RAID等级,它通常用来表示一个没有控制软件提供协调控制的磁盘集合。JBOD将多个物理磁盘串联起来,提供一个巨大的逻辑磁盘。存储性能完全等同于单块磁盘,而且也不提供数据安全保护。可用存储容量等于所有成员磁盘的存储空间之和。
RAID0称为条带,是一种简单的、无数据校验的数据条带化技术。性能在所有RAID等级中是最高的。不提供任何形式的冗余策略。100%利用存储空间。
RAID1称为镜像,它将数据完全一致地分别写到工作磁盘和镜像磁盘,它的磁盘空间利用率为50%。数据写入时性能有所影响,但是读数据没有影响。提供了最佳的数据保护,一旦工作磁盘发生故障,系统自动从镜像磁盘读取数据,不会影响用户工作。
RAID2称为海明码磁盘阵列,其设计思想是利用海明码实现数据校验冗余。数据宽度越大,存储空间利用率越高,但同时需要的磁盘数量也越多。自身具备纠错能力,但是,海明码的数据冗余开销太大,数据重建非常耗时,因此RAID2在实际中很少应用。
RAID3称为专用奇偶校验条带,它采用一个专用的磁盘作为校验盘,其余磁盘作为数据盘,数据按位可字节的方式交叉存储到各个数据盘中。RAID3至少需要三块磁盘。
RAID4与RAID3的原理大致相同。提供了非常好的读性能,但写性能比较差。而且随着成员磁盘数量的增加,校验盘的系统瓶颈将更加突出。在实际应用中很少见,主流存储产品也很少使用RAID4保护。
RAID5称为分布奇偶校验条带,应该是目前最常见的RAID等级,原理与RAID4相似,但不存在RAID4中的并发写操作时的校验盘性能瓶颈问题。
RAID6称为双重奇偶校验条带,引入双重校验的概念解决其他RAID等级无法解决的两个磁盘同时发生故障数据完整性问题。但是,它的成本要高于RAID5许多,写性能也较差,且设计和实施非常复杂。因此RAID6很少得到实际应用,一般是替代RAID10方案的经济性选择。
标准RAID等级各有优势和不足。把多个RAID等级组合起来,实现优势互补,弥补相互的不足,从而达到在性能、数据安全性等指标上更高的RAID系统。当然,组合等级的实现成本一般都非常昂贵,只是在少数特定场合应用。实际得到较为广泛应用的只有RAID01和RAID10两个等级。
RAID01是先做条带化再作镜像,本质是对物理磁盘实现镜像;而RAID10是先做镜像再作条带化,是对虚拟磁盘实现镜像。相同的配置下,通常RAID01比RAID10具有更好的容错能力。RAID01兼备了RAID0和RAID1的优点,整体磁盘利用率均仅为50%。