上个世纪八十年代,美国加利福尼亚大学伯克利分校研究小组希望能找出一种新的技术,在短期内,立即提升效能来平衡计算机的运算能力。在当时,CPU效能每年大约成长30~50%,而硬磁机只能成长约7%,硬磁机的增长已经严重跟不上CPU的增长速度,于是,RAID就这样诞生了。
RAID,为Redundant Arrays of Independent Disks的简称,中文为廉价冗余磁盘阵列。
RAID理论,作为高性能的存储系统,已经得到了越来越广泛的应用。RAID阵列技术允许将一系列磁盘分组,以实现为数据保护而必需的数据冗余,以及为提高读写性能而形成的数据条带分布。
RAID最初用于高端服务器市场,不过随着计算机技术的快速发展,RAID技术已经渗透到计算机遍布的各个领域。
如今,在家用电脑主板中,RAID控制芯片也随处可见。
RAID级别介绍
一般常用的RAID阶层,分别是RAID 0、RAID1、RAID 2、RAID 3、RAID 4、RAID 5,RAID 50、RAID 6、以及 RAID 0+1或称RAID 10。
实现方式
(1)软件模拟实现:Software RAID,结合内核中的md(multi devices)工具,生产环境中一般没有人使用
(2)硬件实现:硬件级别的RAID配置多块硬盘在bios中实现
外接式磁盘阵列:通过扩展卡提供适配能力内接式RAID:主板集成RAID控制器
1)可以通过SAS接口的适配器接口扩展出串行端口附加存储,以logical unit number逻辑单元号表现
窄带:8个接口,7target宽带:16个接口,15个target
2)RAID控制器需要系统驱动使用,在BIOS中可以设置,通过适配器连接到RAID磁盘阵列
3)RAID控制器本身有CPU,还可以有内存来加速,另外设置电源方式断电时候的应急写入
RAID0
也称为条带模式(striped),即把连续的数据分散到多个磁盘上存取,如图所示。当系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求。这种数据上的并行操作可以充分利用总线的带宽,显著提高磁盘整体存取性能。因为读取和写入是在设备上并行完成的,读取和写入性能将会增加,这通常是运行 RAID 0 的主要原因。但RAID 0没有数据冗余,如果驱动器出现故障,那么将无法恢复任何数据。
RAID1
RAID 1 又称为镜像(Mirroring),一个具有全冗余的模式,如图所示。RAID 1可以用于两个或2xN个磁盘,并使用0块或更多的备用磁盘,每次写数据时会同时写入镜像盘。这种阵列可靠性很高,但其有效容量减小到总容量的一半,同时这些磁盘的大小应该相等,否则总容量只具有最小磁盘的大小。
RAID2
从概念上讲,RAID 2 同RAID 3类似,两者都是将数据条块化分布于不同的硬盘上,条块单位为位或字节。然而RAID 2 使用一定的编码技术来提供错误检查及恢复。这种编码技术需要多个磁盘存放检查及恢复信息,使得RAID 2技术实施更复杂。因此,在商业环境中很少使用。由于海明码的特点,它可以在数据发生错误的情况下将错误校正,以保证输出的正确。它的数据传送速率相当高,如果希望达到比较理想的速度,那最好提高保存校验码ECC码的硬盘,对于控制器的设计来说,它又比RAID3,4或5要简单。没有免费的午餐,这里也一样,要利用海明码,必须要付出数据冗余的代价。输出数据的速率与驱动器组中速度最慢的相等。
RAID3
RAID 3 是将数据先做XOR 运算,产生Parity Data后,在将数据和Parity Data 以并行存取模式写入成员磁盘驱动器中,因此具备并行存取模式的优点和缺点。进一步来说,RAID 3每一笔数据传输,都更新整个Stripe﹝即每一个成员磁盘驱动器相对位置的数据都一起更新﹞,因此不会发生需要把部分磁盘驱动器现有的数据读出来,与新数据作XOR运算,再写入的情况发生﹝这个情况在 RAID 4和RAID 5会发生,一般称之为Read、Modify、Write Process,我们姑且译为为读、改、写过程﹞。因此,在所有 RAID级别中,RAID 3的写入性能是最好的。
RAID4
RAID 4 是采取独立存取模式,同时以单一专属的Parity Disk 来存放Parity Data。RAID 4的每一笔传输﹝Strip﹞资料较长,而且可以执行Overlapped I/O,因此其读取的性能很好。
如果一个驱动器出现故障,那么可以使用校验信息来重建所有数据。如果两个驱动器出现故障,那么所有数据都将丢失。不经常使用这个级别的原因是校验信息存储在一个驱动器上。每次写入其它磁盘时,都必须更新这些信息。因此,在大量写入数据时很容易造成校验磁盘的瓶颈,所以目前这个级别的RAID很少使用了。
RAID5
RAID5 与 RAID4 之间最大的区别就是校验信息均匀分布在各个驱动器上,这样就避免了RAID 4中出现的瓶颈问题。如果其中一块磁盘出现故障,那么由于有校验信息,所以所有数据仍然可以保持不变。如果可以使用备用磁盘,那么在设备出现故障之后,将立即开始同步数据。如果两块磁盘同时出现故障,那么所有数据都会丢失。RAID5 可以经受一块磁盘故障,但不能经受两块或多块磁盘故障。
RAID 5也是采取独立存取模式,但是其Parity Data 则是分散写入到各个成员磁盘驱动器,因此,除了具备Overlapped I/O 多任务性能之外,同时也脱离如RAID 4单一专属Parity Disk的写入瓶颈。但是,RAI?D 5在座资料写入时,仍然稍微受到"读、改、写过程"的拖累。
基本上来说,多人多任务的环境,存取频繁,数据量不是很大的应用,都适合选用RAID 5 架构,例如企业档案服务器、WEB 服务器、在线交易系统、电子商务等应用,都是数据量小,存取频繁的应用。
RAID 50
由两组RAID 5磁盘组成(每组最少3个),每一组都使用了分布式奇偶位,而两组硬盘再组建成RAID 0,实现跨磁盘抽取数据。RAID 50提供可靠的数据存储和优秀的整体性能,并支持更大的卷尺寸。即使两个物理磁盘发生故障(每个阵列中一个),数据也可以顺利恢复过来。
RAID 50最少需要6个驱动器,它最适合需要高可靠性存储、高读取速度、高数据传输性能的应用。这些应用包括事务处理和有许多用户存取小文件的办公应用程序。
优势:更高的容错能力,具备更快数据读取速率的潜力。
需要注意的是:磁盘故障会影响吞吐量。故障后重建信息的时间比镜像配置情况下要长。
RAID 6
raid 6是由一些大型企业提出来的私有raid级别标准,它的全称叫“independent data disks with two independent distributed parity schemes(带有两个独立分布式校验方案的独立数据磁盘)”。这种raid级别是在raid 5的基础上发展而成,因此它的工作模式与raid 5有异曲同工之妙,不同的是raid 5将校验码写入到一个驱动器里面,而raid 6将校验码写入到两个驱动器里面,这样就增强了磁盘的容错能力,同时raid 6阵列中允许出现故障的磁盘也就达到了两个,但相应的阵列磁盘数量最少也要4个。
RAID-6 是在RAID-5基础上把校验信息由一位增加到两位的raid 级别。
RAID10
RAID 0+1/RAID 10,综合了RAID 0 和 RAID 1的优点,适合用在速度需求高,又要完全容错,当然经费也很多的应用。 RAID 0和RAID 1的原理很简单,合起来之后还是很简单,我们不打算详细介绍,倒是要谈谈,RAID 0+1到底应该是 RAID 0 + RAID 1,还是RAID 1 + RAID 0,也就是说,是把多个RAID 1 做成RAID 0,还是把多个 RAID 0 做成RAID 1?
RAID0 + RAID 1
假设有四台磁盘驱动器,每两台磁盘驱动器先做成RAID 1,再把两个RAID 1做成RAID 0,这就是RAID 0 + RAID 1:
(RAID 1) A = Drive A1 + Drive A2 (Mirrored)(RAID 1) B = Drive B1 + Drive B2 (Mirrored)
RAID 0 = (RAID 1) A + (RAID 1) B (Striped)
RAID1 + RAID 0
假设有四台磁盘驱动器,每两台磁盘驱动器先做成RAID 0,再把两个RAID 0做成RAID 1,这就是RAID 1 + RAID 0:
(RAID 0) A = Drive A1 + Drive A2 (Striped)(RAID 0) B = Drive B1 + Drive B2 (Striped)
RAID 1 = (RAID 1) A + (RAID 1) B (Mirrored)
在这种架构之下,如果 (RAID 0) A有一台磁盘驱动器故障,(RAID 0) A就算毁了,当然RAID 1仍然可以正常工作;如果这时 (RAID 0) B也有一台磁盘驱动器故障,(RAID 0) B也就算毁了,此时RAID 1的两磁盘驱动器都算故障,整个RAID 1资料就毁了。
因此,RAID 0 + RAID 1应该比RAID 1 + RAID 0具备比较高的可靠度。所以精容数安建议,当采用RAID 0+1/RAID 10架构时,要先作RAID 1,再把数个RAID 1做成RAID 0。
重 点
RAID取代不了备份,它需要结合其他某种数据保护机制一起使用。如果RAID不结合其他某种数据保护方法或者技术,那么被删除的文件就会永远消失。不过如果有备份、快照或者数据的其他副本或视图,那么被删除的文件是可以恢复过来的。