存储系列之 RAID技术原理简介

引言:RAID技术是现代大规模存储的基础,“基础(技术)是拿来革命的”。我查raid相关资料时,查布尔运算,居然一路查到“香农原理”,这不是有个视频中HW的任总提到的吗,多基础的东西,任总却绝不含糊,他的认知真不是盖的,咱们这等小辈又有什么理由不去努力提升本身的认知呢。同时我忽然也意识到了,为何国家和这些伟大的企业家重视基础技术的研究,因此就冒出来了上面的语录!思量了许久!!这也是为何冬瓜头在他的书里面花了大量篇幅来写RAID,甚至把编小说的功夫都用上了!嗯,进入正题。数据库

 

背景:前面章节介绍过磁盘读写速度主要限制在于磁头臂的切换即寻道,为了不磁头被不断打断的问题,人们发明了RAID技术,让一个硬盘的磁头在换道时,另外一个磁盘的磁头在读写。若是不少磁盘联合起来,同一时刻总有某块硬盘的磁头在读写状态而不是都在换道状态,这就至关于一个大虚拟磁盘的磁头老是处于读写状态,极大的提高传输速率。缓存

RAID,Redundant Array of Independent Disks,独立硬盘冗余阵列,简称磁盘阵列。从技术提出的背景能够看出,RAID是大量磁盘紧密合做的方式,既能够提高速率,同时又能够作到冗余,而对用户和操做系统来讲看起来像一个单独的更大的硬盘或逻辑存储单元。RAID功能的实现能够用独立的RAID卡来支持,也能够有效地与主板进行集成。随着技术的发展,目前RAID已经造成不少个规范,每一个规范又可称做一种级别。安全

1、基础概念

在介绍RAID级别以前,有必要先介绍下相关的基础技术。最重要的就是条带和IO:条带是随着RAID提出来的;IO这里指数据的写入和读出,在存储系统中能够分红不少类别。并发

一、条带,Stripe

首先,条带是虚拟的概念。硬盘物理上划分的最小单位是扇区(以往文章提到过)。而文件系统有时会将多个(2的n次方)扇区做为块或者簇来做为数据操做的最小单位,即逻辑最小单位。异步

条带和扇区、块没有必然的关系。可是任何磁盘读写都离不开文件系统和硬盘,因此后面会用到扇区、块这两个概念。分布式

条带是将多个并排的磁盘横向切割,即在每一个磁盘相同偏移处横向逻辑切割。工具

跨过的磁盘磁盘个数(或块的个数或字节容量)称为条带长度Stripe Length;或者叫条带宽度,Stripe Width性能

而单个磁盘上占有的区域为段,Segment。优化

段包含的字节数(或块的个数或扇区的个数)为条带深度Stripe Depthspa

条带化是RAID技术抽象出来的一种设计方法,便于多个磁盘之间创建一种逻辑关系,便于提升IO并发能力。

从上面概念看,条带长度通常不变,因此整个条带大小和条带深度有关,因此条带深度也指的是条带的大小,也叫条带大小。

二、IO相关概念

存储IO,都是围绕数据的Input和Output,这里既有最终磁盘的读写,也有传输的IO,控制器缓存IO等等。这里介绍常见的几个概念:

(1)IOPS

磁盘的IOPS,即每秒能进行多少次IO。计算方式每一个系统每一个模块的定义和要求不同。咱们这里指通常状况下,一条I或O命令对应磁盘写或读必定范围内连续的数据的操做,除了开始执行读写命令前可能须要寻道外,其余时间不须要换道。那么完成一次IO所用的时间=寻道时间+旋转延迟时间+数据传输时间。该值越少,IOPS越高。因为寻道时间相对于传输时间要大几个数量级。因此影响IOPS的关键因素是下降寻道时间。而在连续IO的状况下,寻道时间很短,仅在换磁道时候须要寻道,因此此时传输时间越少,IOPS越高

(2)连续IO/随机IO

连续和随机指本次IO给出的初始扇区地址和上一次IO结束扇区地址是否是彻底连续的或者相隔很少的,是则是连续IO,不然随机IO。

(3)顺序IO/并发IO 

磁盘控制器若是能够同时对一个RAID系统中的多块磁盘同时发送IO指令这里的同时是宏观的概念,即若是全部磁盘都在一个总线或者环路上,则这里的同时是指向一块一块磁盘依次发送IO指令,只是没必要等待每次的回应),而且这些最底层的IO数据包含了文件系统下发的多个IO数据,则为并发IO,即多个IO流同时传输和读写。

若是这些发向磁盘的IO只包含了文件系统的一个IO的数据,则为顺序IO,即一个时间点只有一个IO流传输和读写。因此我以为改成“串行IO”更好理解

2、RAID基本级别 

RAID分为8个级别,不一样的级别知足不一样的应用程序的需求。

一、RAID 0:并发IO

按条带化,将数据并行发送给全部磁盘。

最大的优点,读写性能很高。

致命缺点:数据没有冗余,若是一个磁盘损坏,整个存储崩溃。

注意:前面提到,这种并发是”宏观的同时“,RIAD0要提高性能,条带越小越好。可是过小了,要等待下一轮IO的时间变成长次数变多。由于每次IO占用较多物理盘,而队列中的IO必须等待此次IO结束后才能使用物理盘。

IO SIZE/Stripe SIZE 较小,性能提高明显。

二、RAID 1:镜像IO

RAID 1将数据在两个以上的磁盘中造成镜像,读能够并发,写通常不能并发,除非事务性写。

优点:数据有冗余,读性能提升。

缺点:有效空间只能占一半,空间利用率低。写性能有所降低,由于须要写两次,因此时间以最慢的磁盘为准。

注:条带无关紧要。

三、RAID 2:汉明码校验

Hamming Code ECC汉明码错误检测与修正,一种早期的纠错技术。在原有数据位中插入必定数量的校验位来进行错误检测和纠错。

RAID 2中,每一个IO下发的数据被以位为单位平均打散在全部数据盘上,同时计算出汉明码并写入校验盘。数据盘和校验盘都有多块,即有各自的阵列。汉明码只能纠正一个位的错误,因此只容许一个盘损坏。

缺点:校验盘数量太多(四块数据盘须要三块校验盘),开销太大以及成本昂贵,目前基本已经被淘汰。

补:磁盘数据以位单位?磁盘的最小单位是扇区512字节,怎么以位为单位呢?假如四个数据盘,若是一次写入4KB,第一块存放的是第1.5.9.13等位的数据,第二块存放的是2.6.10.14等位的数据,如此分割。

RAID 2不能实现并发IO,由于每次IO都占用了全部物理盘。

四、RAID 3:奇偶校验

对数据磁盘采用高效的XOR运算,将结果放在单独的校验盘。因此一样容许一块磁盘损坏。

RAID 3分割的单位是字节或者扇区(各个文献上说法不同,总之是比较小),比RAID2增大了,但仍是很小。IO传输和磁盘读写操做和RAID 2相似。

优势:校验盘只需一块,成本下降了;持续读和写性能几乎是单盘的N倍。

注:RAID 3和RAID 2同样不能并发IO,由于一个IO占用全部磁盘。二者也一样适合连续大块IO的环境,而RAID3成本更低,更容易部署。

应用:为视频图像、地球物理学、生命科学和其它顺序处理的应用程序提供良好性能。
可是,RAID 3不能很好地适用于那些对多用户或I/O流进行并发操做的应用程序。

五、RAID 4

与RAID 3相同,只是增大了条带深度,大部文献说的是深度是一个数据块。
由于和RAID 3基本上没什么区别,因此也基本上没有应用。

六、RAID 5:并发IO+奇偶校验

采用和RAID 3同样的高效的XOR运算,不一样的是将校验数据打散在各个盘,即不是固定某个盘,因此也称做分布式校验盘。

正是由于校验数据位置不固定,因此每次IO能够不须要全部的磁盘参与,从而能够实现并发IO。

因此最低能够并发IO的RAID5至少须要4块盘。同理,若是数据盘足够多,校验盘打散的部分就会分布的足够普遍,多IO并发的概率就会显著增大。

最大的优点是,随机读性能很高,全部RAID模式中数一数二。

可是,RAID 5的连续读性能没有RAID 3高。

缺点:写性能较差,根本缘由在于每写一扇区的数据就要产生其校验扇区,一并写入校验区。龙其实更改数据(随机写)的时候,这种效应很是明显,由于要有写惩罚。

补:(1)写惩罚(Write Penalty )

RAID 5一次写的动做,其实要浪费3个其余动做,也就是先读出老数据,读出老校验数据,而后写新数据和校验数据。而目的只是写新数据。

而RAID 2和RAID 3都比RAID 5写性能强,由于它们在条带深度很小,任何一次正常点的IO几乎覆写全部盘,均会将整个条带上的位都改变,即不要顾忌是否有未被更新的数据,因此能够直接写入新数据和校验数据,比RAID 5少了两次读操做。

(2)RAID 5E和RAID 5EE

RAID 5E在RAID 5的基础上,每一个数据盘预留一块固定的空间,深度为条带深度,因此也就是说预留一个条带,做为热备。当出现磁盘坏块时,能及时备份数据。

RAID 5EE在RAID 5E的基础上有所改进:将固定的”热备盘“打散到各个数据磁盘中。

实际上,如今的LSI工具能支持外围设置热备盘,并且能够灵活使用,能够每一个RAID组作热备盘,也能够所有磁盘(多个RAID组)作一个热备,两种还能够同时出现。

注:在RAID策略中,随机并发与写性能两者取其一。

这里提到的是顺序写。通常的RAID对随机IO,(特别是随机写)其性能与单盘都没有大的优点,由于RAID所作的只是提升传输速率、并发IO和容错。

可是RAID 5在随机写频发的状况下,因为频发的随机IO提升了潜在的并发概率,若是碰巧并发的IO同处一个条带,还能够下降写惩罚的记录。这样其IOPS降低的趋势比其余RAID级别要平缓一些。

因此,磁盘越多,可并发的概率越大;RAID 5最适合小块IO而若使用“回写高速缓存”可让性能改善很多。

应用:关系型数据、读密集型数据库表格、文件共享和Web应用程序。

七、RAID 6:并发IO+双奇偶校验

与RAID 5相比,RAID 6增长了第二个独立的奇偶校验信息块。仍然保留RAID 5的条带化校验,RAID 6加了另外一种奇偶校验:条带数据乘以逆矩阵再奇偶校验(注【1】)。能够同时坏两个盘

优势,冗余度更好,提升了可靠性。

缺点,比RAID 5的写性能更差,由于有更大的写惩罚,一次写入须要6次操做。

应用:RAID6是对RAID5的扩展,主要是用于要求数据绝对不能出错的场合。

八、RAID 7

RAID 7全称叫“Optimized Asynchrony for High I/O Rates as well as high Data Transfer Rates(最优化的异步高I/O速率和高数据传输率)”,它与之前咱们见到RAID级别具备明显的区别。RAID 7彻底能够理解为一个独立存储计算机,它自身带有操做系统和管理工具,彻底能够独立运行。

RAID 7是一个总体的系统,有本身的操做系统,有本身的处理器,有本身的总线,而不是经过简单的插卡就能够实现的。概括起来,RAID 7的主要特性以下:
(1)全部的I/O传输都是异步的,由于它有本身独立的控制器和带有Cache的接口,与系统时钟并不一样步
(2)全部的读与写的操做都将经过一个带有中心Cache的高速系统总线,咱们称之为X-Bus
(3)专用的校验硬盘能够用于任何通道
带有完整功能的即时操做系统内嵌于阵列控制微处理器,这是RAID 7的心脏,它负责各通道的通讯以及Cache的管理,这也是它与其余等级最大不一样之一。
来自:百度百科。

2、RAID组合级别

一、RAID 01(RAID 0+1)

RAID 01兼容RAID 0和RAID 1的优势,提供RAID 1同样的数据安全保证的同时,也提供了与RAID 0近似的存储性能

先作RAID 0磁盘组,再2组RAID 0作成RAID 1。假若有八块盘和四块数据A,B,C,D;那么八块盘依次存放的是A,B,C,D;A,B,C,D。

这种状况下,若是第一个A出问题,那么第一组A,B,C,D全都无效了。

可靠性较低

二、RAID 10(RAID 1+0)

RAID 10和RAID 01基本原理相近,只是组合方式不一样。

先两两分组,再将各组作成RAID0。仍是上面的例子,假若有八块盘和四块数据A,B,C,D;那么八块盘依次存放的是A,A,B,B,C,C,D,D。

这种状况下,若是第一个A出问题,除了第二个A没有镜像外,其余都没有影响。容许坏多个盘,只要不是一对磁盘坏就能够。

可靠性高,因此RAID 10远较RAID 01经常使用。 

三、RAID 30

提高RAID 3的并发IO能力,两组RAID 3再组建成RAID 0。兼容RAID 0并发IO和RAID 3安全的优势。

适合非交互的应用程序,如视频流、图形和图象处理等,这些应用程序顺序处理大型文件,并且要求高可用性和高速度

四、RAID 50

由两组RAID 5磁盘组成(每组最少3个),每一组都使用了分布式奇偶位,而两组硬盘再组建成RAID 0,实现跨磁盘抽取数据。

RAID 50最少须要6块磁盘,它最适合须要高可靠性存储、高读取速度、高数据传输性能的应用。这些应用包括事务处理和有许多用户存取小文件的办公应用程序。

五、RAID 53

从前面的原理咱们能够得出 :RAID 5 适合小块存储,RAID 3适合大块存储;因此从这里看二者是有冲突的,而从百度百科查到RAID53的定义是:

RAID 53是一种组合RAID 等级,但不要拿RAID 10的观点套用,认为它是RAID 5和RAID 3的组合,事实上,RAID 53应该称为RAID 30或RAID 03(也能够说是RAID 0+3),即RAID 3与RAID 0的组合。

也能够理解成RAID53兼容了RAID 3较高的读写性能和RAID 5良好的并发能力

六、RAID: LSI MegaRAID、Nytro和Syncro

MegaRAID、Nytro和Syncro都是LSI 针对RAID而推出的解决方案,而且一直在创造更新。LSI经过MegaRAID提供基本的可靠性保障;经过Nytro实现加速;经过Syncro突破容量瓶颈,让价格低廉的存储解决方案能够大规模扩展,而且进一步提升可靠性。

 

注【1】:关于RAID 6第二种校验查过不少资料, 大都含糊其辞,或者说法各不相同。不少的只是说整块磁盘的奇偶校验,这个明显说不过去。有一些说的是多项式,有一些说的矩阵。待考究。

 

参考资料:《大话存储II》和百度百科。

相关文章
相关标签/搜索