(1)RAID-2 等级 Hamming Code ECC (汉明码错误检测与修正)
现在我们要接触到 RAID 系统中最为复杂的等级之一。 RAID 2 之所以复杂就是因为它采用了早期的错误检测与修正技术 —— 汉明码( Hamming Code )校验技术。因此在介绍 RAID 2 之前有必要讲讲汉明码的原理。
汉明码的原理:

针对 4 位数据的汉明码编码示意图
汉明码是一个在原有数据中插入若干校验码来进行错误检查和纠正的编码技术。以典型的 4 位数据编码为例,汉明码将加入 3 个校验码,从而使实际传输的数据位达到 7 个(位),它们的位置如果把上图中的位置横过来就是:
数据位 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
代码 |
P1 |
P2 |
D8 |
P3 |
D4 |
D2 |
D1 |
说明 |
第 1 个汉明码 |
第 2 个汉明码 |
第 1 个数据码 |
第 3 个汉明码 |
第 2 个数据码 |
第 3 个数据码 |
第 4 个数据码 |
注: Dx 中的 x 是 2 的整数幂(下面的幂都是指整数幂)结果,多少幂取决于码位, D1 是 0 次幂, D8 是 3 次幂,想想二进制编码就知道了
现以数据码 1101 为例讲讲汉明码的编码原理,此时 D8=1 、 D4=1 、 D2=0 、 D1=1 ,在 P1 编码时,先将 D8 、 D4 、 D1 的二进制码相加,结果为奇数 3 ,汉明码对奇数结果编码为 1 ,偶数结果为 0 ,因此 P1 值为 1 , D8+D2+D1=2 ,为偶数,那么 P2 值为 0 , D4+D2+D1=2 ,为偶数, P3 值为 0 。这样,参照上文的位置表,汉明码处理的结果就是 1010101 。在这个 4 位数据码的例子中,我们可以发现每个汉明码都是以三个数据码为基准进行编码的。下面就是它们的对应表:
汉明码 |
编码用的数据码 |
P1 |
D8 、 D4 、 D1 |
P2 |
D8 、 D2 、 D1 |
P3 |
D4 、 D2 、 D1 |
从编码形式上,我们可以发现汉明码是一个校验很严谨的编码方式。在这个例子中,通过对 4 个数据位的 3 个位的 3 次组合检测来达到具体码位的校验与修正目的(不过只允许一个位出错,两个出错就无法检查出来了,这从下面的纠错例子中就能体现出来)。在校验时则把每个汉明码与各自对应的数据位值相加,如果结果为偶数(纠错代码为 0 )就是正确,如果为奇数(纠错代码为 1 )则说明当前汉明码所对应的三个数据位中有错误,此时再通过其他两个汉明码各自的运算来确定具体是哪个位出了问题。
还是刚才的 1101 的例子,正确的编码应该是 1010101 ,如果第三个数据位在传输途中因干扰而变成了 1 ,就成了 1010111 。检测时, P1+D8+D4+D1 的结果是偶数 4 ,第一位纠错代码为 0 ,正确。 P1+D8+D2+D1 的结果是奇数 3 ,第二位纠错代码为 1 ,有错误。 P3+D4+D2+D1 的结果是奇数 3 ,第三但纠错代码代码为 1 ,有错误。那么具体是哪个位有错误呢?三个纠错代码从高到低排列为二进制编码 110 ,换算成十进制就是 6 ,也就是说第 6 位数据错了,而数据第三位在汉明码编码后的位置正好是第 6 位。
那么汉明码的数量与数据位的数量之间有何比例呢?上面的例子中数据位是 4 位,加上 3 位汉明码是 7 位,而 2 的 3 次幂是 8 。这其中就存在一个规律,即 2 P ≥P+D+1 ,其中 P 代表汉明码的个数, D 代表数据位的个数,比如 4 位数据,加上 1 就是 5 ,而能大于 5 的 2 的幂数就是 3 ( 2 3 =8 , 2 2 =4 )。这样,我们就能算出任何数据位时所需要的汉明码位数: 7 位数据时需要 4 位汉明码( 2 4 > 4+7+1 ), 64 位数据时就需要 7 位汉明码( 2 7 > 64+7+1 ),大家可以依此推算。此时,它们的编码规也与 4 位时不一样了。
另外,汉明码加插的位置也是有规律的。以四位数据为例,第一个是汉明码是第一位,第二个是第二位,第三个是第四位, 1 、 2 、 4 都是 2 的整数幂结果,而这个幂次数是从 0 开始的整数。这样我们可以推断出来,汉明码的插入位置为 1 ( 2 0 )、 2 ( 2 1 )、 4 ( 2 2 )、 8 ( 2 3 )、 16 ( 2 4 )、 32 ( 2 5 ) ……
说完汉明码,下面就开始介绍 RAID 2 等级。
RAID 2 等级介绍:

RAID-2 结构图解
由于汉明码是位为基础进行校验的,那么在 RAID2 中,一个硬盘在一个时间只存取一位的信息。没错,就是这么恐怖。如图中所示,左边的为数据阵列,阵列中的每个硬盘一次只存储一个位的数据。同理,右边的阵列(我们称之为校验阵列)则是存储相应的汉明码,也是一位一个硬盘。所以 RAID 2 中的硬盘数量取决于所设定的数据存储宽度。如果是 4 位的数据宽度(这由用户决定),那么就需要 4 个数据硬盘和 3 个汉明码校验硬盘,如果是 64 位的位宽呢?从上文介绍的计算方法中,就可以算出来,数据阵列需要 64 块硬盘,校验阵列需要 7 块硬盘。
在写入时, RAID 2 在写入数据位同时还要计算出它们的汉明码并写入校验阵列,读取时也要对数据即时地进行校验,最后再发向系统。通过上文的介绍,我们知道汉明码只能纠正一个位的错误,所以 RAID 2 也只能允许一个硬盘出问题,如果两个或以上的硬盘出问题, RAID 2 的数据就将受到破坏。但由于数据是以位为单位并行传输,所以传输率也相当快。
RAID 2 是早期为了能进行即时的数据校验而研制的一种技术(这在当时的 RAID 0 、 1 等级中是无法做到的),从它的设计上看也是主要为了即时校验以保证数据安全,针对了当时对数据即时安全性非常敏感的领域,如服务器、金融服务等。但由于花费太大(其实,从上面的分析中可以看出如果数据位宽越大,用于校验阵列的相对投资就会越小,就如上面的 4:3 与 64:7 ),成本昂贵,目前已基本不再使用,转而以更高级的即时检验 RAID 所代替,如 RAID 3 、 5 等。
现在让我们总结一下 RAID 2 的特点 :
优点/特点 |
缺点 |
即时的数据校验,冗错性能较好 |
ECC占用较大的有效数据流,效率不高 |
极高的数据传输率 |
系统成本极高,对冗余的数据传输率要求较高 |
与RAID 3.4.5相比设计相对简单 |
阵列内部的处理交易率在最佳状态时与单块硬盘相当,对处理能力要求高 |
(2) RAID-3 等级 Parallel transfer with parity (并行传输及校验)
RAID 2 等级的缺点相信大家已经很明白了,虽然能进行即时的 ECC ,但成本极为昂贵。为此,一种更为先进的即时 ECC 的 RAID 等级诞生,这就是 RAID 3 。
RAID 3 是在 RAID 2 基础上发展而来的,主要的变化是用相对简单的异或逻辑运算( XOR , eXclusive OR )校验代替了相对复杂的汉明码校验,从而也大幅降低了成本。 XOR 的校验原理如下表:
A 值 |
B 值 |
XOR 结果 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
这里的 A 与 B 值就代表了两个位,从中可以发现, A 与 B 一样时, XOR 结果为 0 , A 与 B 不一样时, XOR 结果就是 1 ,而且知道 XOR 结果和 A 与 B 中的任何一个数值,就可以反推出另一个数值。比如 A 为 1 , XOR 结果为 1 ,那么 B 肯定为 0 ,如果 XOR 结果为 0 ,那么 B 肯定为 1 。这就是 XOR 编码与校验的基本原理。
RAID 3 的结构图如下:

RAID-3 结构图解
从图中可以发现,校验盘只有一个,而数据与 RAID 0 一样是分成条带( Stripe )存入数据阵列中,这个条带的深度的单位为字节而不再是 bit 了。在数据存入时,数据阵列中处于同一等级的条带的 XOR 校验编码被即时写在校验盘相应的位置,所以彼此不会干扰混乱。读取时,则在调出条带的同时检查校验盘中相应的 XOR 编码,进行即时的 ECC 。由于在读写时与 RAID 0 很相似,所以 RAID 3 具有很高的数据传输效率。
RAID 3 在 RAID 2 基础上成功地进行结构与运算的简化,曾受到广泛的欢迎,并大量应用。直到更为先进高效的 RAID 5 出现后, RAID 3 才开始慢慢退出市场。下面让我们总结一下 RAID 3 的特点:
最低硬盘数量 |
4 |
优点/特点 |
缺点 |
非常高的读写传输率 |
在主轴同步时交易吞吐量只梢胜于单个硬盘的最佳状态 |
磁盘损坏对传输的影响较小 |
控制器设计比较复杂 |
很高的ECC效率 |
非常不利于进行软RAID模式操作 |
适用领域:视频数据流设备,图象编辑,视频编辑,其他需要高吞吐量的场合 |
注:主轴同步是指阵列中所有硬盘的主轴马达同步
(3)RAID-4 等级 Independent Data disks with shared Parity disk (独立的数据硬盘与共享的校验硬盘)
RAID 3 英文定义是 Parallel transfer with parity ,即并行传输及校验。与之相比, RAID 4 则是一种相对独立的形式,这也是它与 RAID 3 的最大不同。
RAID-4 结构图解
与 RAID 3 相比,我们发现关键之处是把条带改成了 “ 块 ” 。即 RAID 4 是按数据块为单位存储的,那么数据块应该怎么理解呢?简单的话,一个数据块是一个完整的数据集合,比如一个文件就是一个典型的数据块。当然,对于硬盘的读取,一个数据块并不是一个文件,而是由操作系统所决定的,这就是我们熟悉的簇( Cluster )。 RAID 4 这样按块存储可以保证块的完整,不受因分条带存储在其他硬盘上而可能产生的不利影响(比如当其他多个硬盘损坏时,数据就完了)。
不过,在不同硬盘上的同级数据块也都通过 XOR 进行校验,结果保存在单独的校验盘。所谓同级的概念就是指在每个硬盘中同一柱面同一扇区位置的数据算是同级。在写入时, RAID 就是按这个方法把各硬盘上同级数据的校验统一写入校验盘,等读取时再即时进行校验。因此即使是当前硬盘上的数据块损坏,也可以通过 XOR 校验值和其他硬盘上的同级数据进行恢复。由于 RAID 4 在写入时要等一个硬盘写完后才能写一下个,并且还要写入校验数据所以写入效率比较差,读取时也是一个硬盘一个硬盘的读,但校验迅速,所以相对速度更快。总之, RAID 4 并不为速度而设计。下面我们总结一下 RAID 4 的特点:
最低硬盘数量 |
4 |
优点/特点 |
缺点 |
相对较高的读写传输率 |
相对复杂的控制器设计 |
高效率的ECC操作 |
极差的写入传输率 |
相对较高的总体读取传输率 |
较为困难的数据重建操作 |
| 读取效率与单个硬盘时差不多 |
(4)RAID-6 等级 Independent Data disks with two independent distributed parity schemes (独立的数据硬盘与两个独立分布式校验方案)
RAID 6 等级是在 RAID 5 基础上,为了进一步加强数据保护而设计的一种 RAID 方式,实际上是一种扩展 RAID 5 等级。与 RAID 5 的不同之处于除了每个硬盘上都有同级数据 XOR 校验区外,还有一个针对每个数据块的 XOR 校验区。当然,当前盘数据块的校验数据不可能存在当前盘而是交错存储的,具体形式见图。

RAID-6 结构图解
这样一来,等于每个数据块有了两个校验保护屏障(一个分层校验,一个是总体校验),因此 RAID 6 的数据冗余性能相当好。但是,由于增加了一个校验,所以写入的效率较 RAID 5 还差,而且控制系统的设计也更为复杂,第二块的校验区也减少了有效存储空间。
由于 RAID 6 相对于 RAID 5 在校验方面的微弱优势和在性能与性价比方面的较大劣势, RAID 6 等级基本没有实际应用过,只是对更高级的数据的冗余进行的一种技术与思路上的尝试,下面我们就做一个总结:
最低硬盘数量 |
4 |
优点/特点 |
缺点 |
相对于RAID 5更高的数据冗余性能 |
非常复杂的控制器设计 |
坚强的数据保护能力,可以应付多个硬盘同时发生故障 |
计算校验地址将占用相对多的处理时间 |
完美的任务应急操作应用 |
非常低的写入效率 |
| 由于第二个校验区,将至少需要N+2个硬盘(N是大于等于1的整数) |
(5)RAID-7 等级 Optimized Asynchrony for High I/O Rates as well as High Data Transfer Rates (最优化的异步高 I/O 速率和高数据传输率)
RAID 7 等级是至今为止,理论上性能最高的 RAID 模式,因为它从组建方式上就已经和以往的方式有了重大的不同。基本成形式见图,你会发现在,以往一个硬盘是一个组成阵列的 “ 柱子 ” ,而在 RAID 7 中,多个硬盘组成一个 “ 柱子 ” ,它们都有各自的通道,也正因为如此,你可以把这个图分解成一个个硬盘连接在主通道上,只是比以前的等级更为细分了。这样做的好处就是在读 / 写某一区域的数据时,可以迅速定位,而不会因为以往因单个硬盘的限制同一时间只能访问该数据区的一部分,在 RAID 7 中,以前的单个硬盘相当于分割成多个独立的硬盘,有自己的读写通道,效率也就不言自明了。

RAID-7 结构图解
然而, RAID 7 的设计与相应的组成规模注定了它是一揽子承包计划。总体上说, RAID 7 是一个整体的系统,有自己的操作系统,有自己的处理器,有自己的总线,而不是通过简单的插卡就可以实现的。归纳起来, RAID 7 的主要特性如下:
所有的 I/O 传输都是异步的,因为它有自己独立的控制器和带有 Cache 的接口,与系统时钟并不同步
所有的读与写的操作都将通过一个带有中心 Cache 的高速系统总线,我们称之为 X-Bus
专用的校验硬盘可以用于任何通道
带有完整功能的即时操作系统内嵌于阵列控制微处理器,这是 RAID 7 的心脏,它负责各通道的通信以及 Cache 的管理,这也是它与其他等级最大不同之一
连通性:可增至 12 个主机接口
扩展性:线性容量可增至 48 个硬盘
开放式系统,运用标准的 SCSI 硬盘、标准的 PC 总线、主板以及 SIMM 内存
高速的,集成 Cache 的数据总线(就是上文提到的 X-bus )
在 Cache 内部完成校验生成工作
多重的附加驱动可以随时热机待命,提高冗余率和灵活性
易管理性: SNMP ( Simple Network Management Protocol, 简单网络管理协议) 可以让管理员远程监视并实现系统控制
按照 RAID 7 设计者的说法,这种阵列将比其他 RAID 等级提高 150-600% 写入时的 I/O 性能,虽然这引起了不小的争议。
RAID 7 已经被 SCC 公司( Storage Computer Corporation )注册了商标,下面就让我们做一个总结:
优点/特点 |
缺点 |
全面写入的性能领先单盘性能25%至90%,而且强于其他阵列1.5至6倍 |
它很可能造成一个卖主一个方案的局面 |
主机接口通过可升级的连通性来增加传输带宽 |
存储容量中,每MB成本级高 |
在小规模用户读取操作时,CACHE的命中率极高,几乎可以将寻址时间变向降低为0 |
较为而言非常短的保修期 |
阵列中的磁盘盘数量越多,写入效率提高越大 |
大多数的用户可能的用不到 |
阵列中的磁盘盘数量越多,读取时寻址时间越短 |
必须要有UPS(Uninterruptable Power Supply ,不间断电源)的配合,以保证以外端电时Cache中的数据被顺利保存 |
没有额外的带宽用于校验操作 |
|