RAID(独立磁盘冗余阵列)是一种数据存储虚拟化技术,将多个物理磁盘驱动器组件组合到一个
或多个逻辑单元中,以实现数据冗余和/或提高性能的目的。根据 RAID 的冗余信息程度,切分数
据的方式等不同,可以把 RAID 分成不同的级别分别是:RAID 0 ,RAID 1 ,RAID 2 ,RAID 3 ,
RAID 04,RAID 5 ,RAID 06.
RAID 0 设计的目标是为了提升读写性能,但并不带冗余信息。通过将连续的数据拆分成
block(块),将数据块的读写请求分散给各个磁盘,达到“同时”读/写的目的。
N 块磁盘的 RAID 0 的特性:
读性能最好情况下是单块盘的 N 倍,
写性能最好情况下是单块盘的 N 倍,
数据上的并行操作可以充分利用总线的带宽,显著提高磁盘整体读写性能。因为读取和写入是在设
备上并行完成的,读取和写入性能将会提高空间利用率为 100%,不具有冗余信息,任何一块磁盘
损坏,整个 RAID 不可用。
RAID 1 的设计目标是为每份数据都提供一份或多分数据冗余。也称为镜像(Mirroring)。RAID 1 中
一个磁盘都有一个或多个冗余的镜像盘,所有磁盘的数据都是一模一样的。RAID 1 读数据时,可
以利用所有数据盘的带宽;写数据时,要同时写入数据盘和镜像盘,因此,需要等待最慢的磁盘写
完成,写操作才能完成。因此,写性能跟最慢的磁盘相当。
N 块磁盘的 RAID 1 的特性如下:
读性能最好情况下是原来的 N 倍
写性能跟最慢的磁盘相当
空间利用率为 1/N
N 块盘,坏掉 N-1 块,RAID 还能正常使用
具有极高的可靠性和安全性。支持“热替换”,即不断电的情况下对故障磁盘进行更换。
RAID 2 的设计目标就是在 RAID 0 级别的基础上,加入了海明纠错码。使用校验磁盘作为错误检
查和纠正 ECC 盘。根据原理,海明码只能纠正一个 bit 的错误,并且因为校验的原因,校验位和
数据位需要一同并行写入或读取(例如,A0-A3,Ax-Az 的磁盘需要进行联动)。RAID 2 技术过于极
端,目前已经基本被淘汰了。根据原理,RAID 2 需要在 I/O 数据到来之后,控制器将数据按 bit 分
开,顺序并同时在每个数据盘和相应校验盘中存放 1bit,而磁盘上的 I/O 最小单位是扇区 512B,那
么如何确保写入 1bit 并且不至于浪费过多空间的算法就很复杂,此外,需要占用相对较多的校验
盘也是原因之一,虽然随着数据的增加,校验盘的数量会呈指数下降。
N 块盘的 RAID 2 的特性:
读性能不到原来的 N 倍,因为还有一部分是校验盘
写性能会有下降,因为每次都要写校验盘,受限于校验盘的数量
空间利用率小于 100%,因为海明纠错码需要的冗余盘一般比数据盘的数量少根据海明纠错码位数
的不同,能容忍的坏盘数不同。
RAID 3 就是把数据按照字节分别存在不同的磁盘中,并且最后一个磁盘提冗余纠错。
RAID 2 的主要缺点是将数据以 bit 作为单位来分隔,将原本物理连续的扇区转变成了物理不连续、
逻辑连续的,这样导致效率低下。RAID 3 就准备从根本上解决这个问题。RAID 3 保留了 RAID 2
的一些优点,比如多磁盘联动,性能高(利用将一个 I/O 尽量做到能够分割成小块,让每个磁盘能
够参与工作)。不过 RAID 3 放弃了将数据分割成 bit 这么极端的做法,因为这样就将磁盘扇区的物
理连续性打破了。RAID 3 将数据以一个扇区(512B)或者几个扇区(例如 4KB)作为单位来分割数
据。此外,RAID 3 也放弃了使用海明码来校验,取而代之的是 XOR 校验。XOR 校验算法只能判
断数据是否有误,不能判断出哪一位有误,更不能更正错误,但是 XOR 算法可以只需要一块校验
盘即可。在一个磁盘阵列中,一般情况下多于一个磁盘出现故障的几率是很小的,所以一般情况
下,RAID 3 的安全性还是有保障的。同 RAID 2 一样,由于需要多磁盘同时联动,同时还需要校
验。显然,RAID 3 不适用于有大量写操作的情况,因为这样会使校验盘的复负荷较大,降低RAID
的系统性能。RAID 3 常用于写操作较少,读操作较多的应用环境,比如数据库和 WEB 服务器。
N 块盘的 RAID 3 的特性:
读性能是 N-1 倍,其中一块是校验盘
写性能受限于校验盘的写性能
空间利用率为(N-1)/N
坏掉一块盘,RAID 还能正常工作。
RAID 4 是把数据按照分块分别存在不同的磁盘中,并且最后一个磁盘提供纠错冗余。从 RAID 2
和 RAID 3 的设计来看,都是为了尽量达到全盘联动,也就是说主要都是为了提高数据传输效率而
设计的,但是却无法做到并发 I/O。然而,现实中的例如数据库等应用的特点就是高频率的随机
I/O 读写,例如每秒产生的 I/O 数目很大,但是每个 I/O 请求的数据长度都很小。这种情况下,如
果所有的磁盘同一时刻都被一个 I/0 占用并且不能并发 I/O,只能一个 I/O 一个 I/O 的做,必然产生
极大的浪费。那么,要实现并发 I/O,就需要保证有空闲的磁盘没有被 I/O 占用,这样才能让其他
I/O 去占有这个磁盘的访问。要达到有空闲磁盘的目的,那么就需要增加每次读写的容量,例如按
块(block)读写。RAID 4 对于写 I/O 有个很难克服的问题,那就是校验盘的争用。例如上图 A0-A3
四个数据盘和一个校验盘构成的 RAID 4 系统中,某一时刻一个写 I/O 只占用了 A0 和 A1 两个磁
盘和校验盘,此时虽然后面两块磁盘是空闲的,可以同时接受新的 I/O 请求,但是接受了新的 I/O
请求,则新的 I/O 请求也要使用校验盘。这样就导致了校验盘的争用成为了并发的瓶颈。基于这个
原因,需要特别优化请求的 I/O 数据,才能高效使用 RAID 4,然而,要优化到并发几率很高是很
不容易的,目前只有 NetApp 的 WAFL 文件系统还在使用 RAID 4,其他产品均未使用了。RAID 4
面临淘汰,取而代之的是拥有高盲并发几率的 RAID 5 系统。所谓的高盲并发几率,就是上层文件
系统不用感知下层磁盘的结构,即可增加并发的几率。读数据时,当数据分布在多块盘时,能够利
用多块数据盘的带宽;写数据时,如果数据分布在多块盘时,能利用所有磁盘带宽,但写校验数据
只能在一块盘上,因此,写性能主要受限于校验盘。
N 块盘的 RAID 4 的特性:
读性能是 N-1 倍,其中一块是校验盘
写性能受限于校验盘的写性能
空间利用率为(N-1)/N
坏掉一块盘,RAID 还能正常工作。
RAID 5 是把数据块按照分块分别存在不同的磁盘中,并且冗余信息也会分块分布在多块磁盘中。
RAID 5 把数据和相对应的奇偶校验信息存储到组成 RAID 的各个磁盘,并且奇偶校验信息和相对
应的数据分别存储于不同的磁盘上,其中任意 N-1 块磁盘上都存储完整的数据,也就是说相当于
有一块磁盘容量的空间用于存储奇偶校验信息。因此当 RAID 5 的一个磁盘发生损坏后,不会影响
数据的完整性,从而保证了数据安全。当损坏的磁盘被替换后,RAID 还会自动利用剩下的奇偶校
验信息去重建此磁盘上的数据,来保持 RAID 5 的高可靠性。RAID 5 可以理解为是 RAID 0 和
RAID 1 的折中方案。RAID 5 可以为系统提供数据安全保障,但保障程度要比镜像低而磁盘空间利
用率比镜像高。RAID 5 具有和 RAID 0 近似的数据读取速度,只是因为多了一个奇偶校验信息,
写入数据的速度相对单独写入一块硬盘的速度略慢。
N 块盘的 RAID 5 的特性:
读性能是 N 倍
写性能略微弱于 RAID 0
空间利用率为(N-1)/N
坏掉一块盘,RAID 还能正常工作。
RAID 6 是把数据块按照分块分别存在不同的磁盘中,并且冗余信息为两份奇偶校验码,分布在多
块磁盘中。类似 RAID 5,但是增加了第二个独立的奇偶校验信息块,两个独立的奇偶系统使用不
同的算法,数据的可靠性非常高,即使两块磁盘同时失效也不会影响数据的使用。但 RAID 6 需要
分配给奇偶校验信息更大的磁盘空间,相对于 RAID 5 有更大的“写损失”,因此“写性能”非常差。每
个硬盘上除了都有同级数据 XOR 校验区外,还有一个针对每个数据块的 XOR 校验区。当然,当
前盘数据块的校验数据不可能存在当前盘而是交错存储的。从数学角度来说,RAID 5 使用一个方
程式解出一个未知变量,而 RAID 6 则能通过两个独立的线性方程构成方程组,从而恢复两个未知
数据。伴随着硬盘容量的增长,RAID 6 已经变得越来越重要。TB 级别的硬盘上更容易造成数据丢
失,数据重建过程(比如 RAID 5,只允许一块硬盘损坏)也越来越长,甚至到数周,这是完全不可
接受的。而 RAID 6 允许两块硬盘同时发生故障,所以渐渐受到人们的青睐。伴随 CD,DVD 和蓝
光光盘的问世,存储介质出现了擦除码技术,即使媒介表面出现划痕,仍然可以播放,大多数常见
的擦除码算法已经演变为上世纪 60 年代麻省理工学院林肯实验室开发的 Reed-Solomon 码。实际
情况中,多数 RAID 6 实现都采用了标准的 RAID 5 校验比特和 Reed Solomon 码。而纯擦除码算
法的使用使得 RAID 6 阵列可以失效两块以上的硬盘,保护力度更强,有些实现方法提供了多种级
别的保护,甚至允许用户(或存储管理员)指定保护级别。
N 块盘的 RAID 6 的特性:
读性能是 N 倍
写性能略微弱于 RAID 0
空间利用率为(N-2)/N
坏掉两块盘,RAID 还能正常工作。