RAID(独立冗余磁盘阵列)技术

RAID技术的由来

人类自有活动以来,就伴随着信息的记录和保存。原始社会的刻痕和结绳,到中国古代的竹简和纸张,以及20世纪中期出现的磁带,软盘和硬盘。到了20世纪后期,随着集成电路的飞速发展,固态硅芯片的出现,表明有RAM芯片,Flash芯片,CPU芯片等。技术在不断进步,其中一个大的趋势是单位体积的存储量愈来愈大。不过,随着21世纪的到来,网络日益发达和全球的一体化致使信息的大爆炸,对存储量和存储的速度有了更大的要求。纵然,现在的单碟SATA(Serial ATA)硬盘已经能够达到几个TB的容量,可是也远远没法知足容量和速度上的需求。html

要解决这个问题,除了提升单碟的容量和存取速度之外,还能够将多个磁盘进行组合,这就是RAID技术,即Redundant Array of Idependent Disks,中文名是由独立的磁盘组成的具备冗余特性的阵列——磁盘阵列。RAID做为一种磁盘冗余阵列,可以提供一个独立的大型存储设备解决方案。将几个物理磁盘合并成一个更大的虚拟设备,在提升硬盘容量的同时,还可以充分提升硬盘的速度,使数据更加安全,更加易于磁盘的管理。算法

引言

若是咱们有一个须要很大容量,一块硬盘存储不了的数据,只能存储到多个硬盘上,最简单的思惟是:一块硬盘一块硬盘的读取/存储。数据库

很显然,这样单纯的堆积法虽然解决了容量的问题,可是也带来的浪费,由于一次只是从一块硬盘上进行读/写,同时,单块硬盘的读取速度,也是整个磁盘组合的读取速度。后端

由于CPU和缓存的速度远远大于磁盘的读取数据,所以咱们能够将CPU数据读/取请求按照顺序给不一样的磁盘,让磁盘“同时”读/写数据,也就是下面的RAID 0.缓存

RAID 0

将连续的数据拆分红block,分散将数据block的读/写请求给各个磁盘,达到“同时”读/写的目的。安全

也叫Stripe条带模式。服务器

  • 优势:这种数据上的并行操做能够充分利用总线的带宽,显著提升磁盘总体存取性能。由于读取和写入是在设备上并行完成的,读取和写入性能将会增长,网络

  • 缺点:没有数据冗余,若是其中一个磁盘Disk出现错误,将影响全部的读/写操做,而且不能从错误中恢复数据。并发

P.S.磁盘上只有实实在在的扇区结构,并无什么Stripe结构,Stripe只是一种逻辑上由程序根据某种算法实现的一种的概念。Stripe后的多个硬盘,数据是被并行写入磁盘的,而不是只有写满了一个磁盘的Stripe区域后,再写下个磁盘的Stripe区域。性能

RAID0

RAID 1

又称为镜像(Mirroring),一个具备全冗余的模式。

  • 优势:须要极高的可靠性和安全性。支持"热替换",即不断电的状况下对故障磁盘进行更换。

  • 缺点:其磁盘的利用率却只有50%,是全部RAID级别中最低的。

RAID1

RAID 1+0

先作镜像(1),再作条带(0)。

好比,有HDD0~HDD7共8个磁盘,其中HDD0~HDD3是数据盘,HDD4~HDD7是对应的镜像盘。同时,有”ABCD”四个数据的磁盘写请求。

当数据A的写请求在磁盘HDD0上执行时,就在对应的镜像盘HDD4中进行镜像A’。与此同时,按照与数据A相似的步骤,并行在相应磁盘中写入数据B、数据C和数据D。

RAID10

  • 优势:兼顾了RAID0和RAID1的优势,在可靠性和I/O性能上有保证。只要不是数据盘和对应的镜像盘同时出现损坏,数据就能保证完整性,写功能不会受到影响。若是损坏了其中一块好比HDD0时,读性能可能会稍微下降(读取数据时能够并行操做)。

  • 缺点:从上图能够看出,须要分出一半的磁盘组做为Mirror,所以空间利用率只有50%,成本大。

RAID1+0 因为兼具可靠性和好的性能, 在商业应用中很普遍,常应用于数据库等要求安全性,小数据频繁写的场合。

RAID 0+1

先作条带(0),再作镜像(1)。

先对数据进行RAID 0条带化,而后将Stripe后的数据进行备份。

RAID01几乎不会在实际环境中应用,由于RAID0+1和RAID1+0在读取效率上没有差别,可是RAID0+1在安全性和可靠性低。

RAID01

RAID 2

能够认为是RAID0的改进版,加入了汉明码(Hanmming Code)错误校验。

汉明码(Hamming Code)是一种可以自动检测并纠正一位错码的线性纠错码,即SEC(Single Error Correcting)码。汉明码经过在要传输的数据位中增长一些bit做为校验位,能够验证数据的有效性。

汉明码的原理举例说明,若是传输的数据位数为k,使用的校验位的位数为r,组成一个n=k+r位数的汉明码。为了可以发现这n位数的数据在传输给后端时是否出错,而且可以指明是那一位数据出错,那么r位的校验位至少可以表明k+r+1个状态(k+r代表出错的位置,其中多出来的1表示数据传输正确)。那么关系式以下:

2RAID

也是就是说,若是要传输k=4位数据位,根据算式(1) 必须则校验位r≥3,若是用r=3做为校验位数,那么总共传输的数据位数n=k+r=7。

RAID就是利用了汉明码的原理,使用校验磁盘做为错误检查和纠正ECC(Error Correcting Code)盘。以下图,A0-A3四个盘是数据盘,Ax-Az三个盘是校验盘。

RAID2

根据原理,汉明码有且仅能纠正一个Bit的错误,而且由于校验的缘由,校验位和数据位须要一同并行写人或读取(例如,A0-A3,Ax-Az的磁盘须要并行联动)

RAID2技术过于极端,目前基本已经被淘汰了。根据原理,RAID2须要在IO数据到来以后,控制器将数据按Bit分开,顺序并同时在每一个数据盘和相应校验盘中存放1Bit,而磁盘上的IO最小单位是扇区512B,那么如何确保写入1Bit而且不至于浪费过多空间的算法就很复杂。此外,须要占用相对较多的校验盘也是缘由之一,虽然随着数据盘的增长,校验盘的数量会呈指数降低。

RAID 3

RAID 2的缺点主要是将数据以bit位做为单位来分割,将本来物理连续的扇区转变成了物理不连续、逻辑连续的,这样致使效率低下。RAID3 就准备从根本上就绝这个问题。

RAID3保留了RAID2的一些优势,好比多磁盘同时联动,性能高(利用将一个IO尽可能作到可以分割成小块,让每一个磁盘可以参与工做)。不过RAID3放弃了将数据分割成Bit这么极端的作法,由于这样就将磁盘扇区的物理连续性打破了。RAID3将数据以一个扇区(512B)或者几个扇区(例如4KB)做为单位来分割数据。此外,RAID3也放弃了使用汉明码来校验,取而代之的是XOR校验算法。XOR校验算法只能判断数据是否有误,不能判断出有那一位有误,更不能更正错误,可是XOR算法能够只须要一块校验盘便可。

RAID3

在一个磁盘阵列中,通常状况下多于一个磁盘出现故障的概率是很小的,全部通常状况下,RAID3的安全性仍是有保障的。

同RAID2同样,因为须要多磁盘同时联动,同时还须要校验。显然,RAID3不适用于有大量写操做的状况,由于这样会使得校验盘的负荷较大,下降RAID系统的性能。RAID3 经常使用于写操做较少,读操做较多的应用环境,好比数据库和WEB服务器。

RAID 4

从RAID2和RAID3的设计来看,都是为了尽可能达到全盘联动,也就是说主要都是为了提升数据传输率而设计的,可是确没法作到并发IO。

然而,现实中例如数据库等应用的特色就是高频率随机IO读写,例如每秒产生的IO数目很大,可是每一个IO请求的数据长度都很小。这种状况下,若是全部的磁盘同一时刻都被一个IO占用而且不能并发IO,只能一个IO一个IO的作,必然产生极大的浪费。

那么,要实现并发IO,就须要保证有空闲的磁盘没有被IO占用,这样才能让其余IO去占有这个磁盘进访问。要达到有有空闲磁盘的目的,那么就须要增长每次读/写的容量,例如按块(Block)存取。

RAID4

RAID4对于写IO有个很难克服的问题,那就是校验盘的争用。例如上图A0-A3四个数据盘和一个校验盘构成的RAID4系统中,某一时刻一个IO只占用了A0和A1两个磁盘和校验盘,此时虽而后面两块磁盘是空闲的,能够同时接受新的IO请求,可是接受了新的IO请求,则新的IO请求也要使用校验盘。这样就致使了校验盘的争用成为并发的瓶颈。(动画演示见http://storage-system.fujitsu...

基于这个缘由,须要特别优化请求的IO数据,才能高效使用RAID4。然而,要优化到并发概率很高很不容易,目前只有NetApp的WAFL文件系统还在使用RAID4,其余产品均未使用了。

RAID4面临淘汰,取而代之的是拥有高盲并发概率的RAID5系统。所谓的高盲并发概率,就是上层文件系统不用感知下层磁盘的结构,便可增长并发的概率。

RAID 5

RAID5

RAID 5+0

RAID50

RAID 6

RAID6

备注:

关于RAID的介绍中动画的网站http://storage-system.fujitsu...
http://storage-system.fujitsu...

参考文献

  1. 大话云存储

  2. RAID技术介绍和总结

相关文章
相关标签/搜索