前言RAID,独立硬盘冗余阵列(RAID,RedundantArrayofIndependentDisks),简称磁盘阵列。其基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、容量巨大的硬盘。根据选择的版本不同,RAID比单颗硬盘有以下一个或多个方面的好处:增强数据集成度,增强容错功能,增加处理量或容量。另外,磁盘阵列对于电脑来说,看起来就像一个单独的硬盘或逻辑存储单元。RAID基础知识基本原理RAID(RedundantArrayofIndependentDisks)即独立磁盘冗余阵列,通常简称为磁盘阵列。简单地说,RAID是由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能和数据冗余的技术。RAID是一类多磁盘管理技术,其向主机环境提供了成本适中、数据可靠性高的高性能存储。SNIA对RAID的定义是:一种磁盘阵列,部分物理存储空间用来记录保存在剩余空间上的用户数据的冗余信息。当其中某一个磁盘或访问路径发生故障时,冗余信息可用来重建用户数据。磁盘条带化虽然与RAID定义不符,通常还是称为RAID(即RAID0)。RAID的初衷是为大型服务器提供高端的存储功能和冗余的数据安全。在整个系统中,RAID被看作是由两个或更多磁盘组成的存储空间,通过并发地在多个磁盘上读写数据来提高存储系统的I/O性能。大多数RAID等级具有完备的数据校验、纠正措施,从而提高系统的容错性,甚至镜像方式,大大增强系统的可靠性,Redundant也由此而来。RAID的两个关键目标是提高数据可靠性和I/O性能。磁盘阵列中,数据分散在多个磁盘中,然而对于计算机系统来说,就像一个单独的磁盘。通过把相同数据同时写入到多块磁盘(典型地如镜像),或者将计算的校验数据写入阵列中来获得冗余能力,当单块磁盘出现故障时可以保证不会导致数据丢失。有些RAID等级允许更多地磁盘同时发生故障,比如RAID6,可以是两块磁盘同时损坏。在这样的冗余机制下,可以用新磁盘替换故障磁盘,RAID会自动根据剩余磁盘中的数据和校验数据重建丢失的数据,保证数据一致性和完整性。数据分散保存在RAID中的多个不同磁盘上,并发数据读写要大大优于单个磁盘,因此可以获得更高的聚合I/O带宽。当然,磁盘阵列会减少全体磁盘的总可用存储空间,牺牲空间换取更高的可靠性和性能。比如,RAID1存储空间利用率仅有50%,RAID5会损失其中一个磁盘的存储容量,空间利用率为(n-1)/n。磁盘阵列可以在部分磁盘(单块或多块,根据实现而论)损坏的情况下,仍能保证系统不中断地连续运行。在重建故障磁盘数据至新磁盘的过程中,系统可以继续正常运行,但是性能方面会有一定程度上的降低。一些磁盘阵列在添加或删除磁盘时必须停机,而有些则支持热交换(HotSwapping),允许不停机下替换磁盘驱动器。这种高端磁盘阵列主要用于要求高可能性的应用系统,系统不能停机或尽可能少的停机时间。一般来说,RAID不可作为数据备份的替代方案,它对非磁盘故障等造成的数据丢失无能为力,比如病毒、人为破坏、意外删除等情形。此时的数据丢失是相对操作系统、文件系统、卷管理器或者应用系统来说的,对于RAID系统来身,数据都是完好的,没有发生丢失。所以,数据备份、灾备等数据保护措施是非常必要的,与RAID相辅相成,保护数据在不同层次的安全性,防止发生数据丢失。RAID中主要有三个关键概念和技术:镜像(Mirroring)、数据条带(DataStripping)和数据校验(Dataparity)。镜像,将数据复制到多个磁盘,一方面可以提高可靠性,另一方面可并发从两个或多个副本读取数据来提高读性能。显而易见,镜像的写性能要稍低,确保数据正确地写到多个磁盘需要更多的时间消耗。数据条带,将数据分片保存在多个不同的磁盘,多个数据分片共同组成一个完整数据副本,这与镜像的多个副本是不同的,它通常用于性能考虑。数据条带具有更高的并发粒度,当访问数据时,可以同时对位于不同磁盘上数据进行读写操作,从而获得非常可观的I/O性能提升。数据校验,利用冗余数据进行数据错误检测和修复,冗余数据通常采用海明码、异或操作等算法来计算获得。利用校验功能,可以很大程度上提高磁盘阵列的可靠性、鲁棒性和容错能力。不过,数据...