服务器术语之RAID
扫盲
RAID是英文Redundant Array of Independent Disks的缩写,翻译成中文意思是“独立磁盘冗余阵列”,有时也简称磁盘阵列(Disk Array)。
简单的说,RAID是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术。组成磁盘阵列的不同方式成为RAID级别(RAID Levels)。数据备份的功能是在用户数据一旦发生损坏后,利用备份信息可以使损坏数据得以恢复,从而保障了用户数据的安全性。在用户看起来,组成的磁盘组就像是一个硬盘,用户可以对它进行分区,格式化等等。总之,对磁盘阵列的操作与单个硬盘一模一样。不同的是,磁盘阵列的存储速度要比单个硬盘高很多,而且可以提供自动数据备份。
RAID
技术的两大特点:一是速度、二是安全,由于这两项优点,
RAID
技术早期被应用于高级服务器中的
SCSI
接口的硬盘系统中,随着近年计算机技术的发展,PC机的
CPU
的速度已进入
GHz
时代。
IDE
接口的硬盘也不甘落后,相继推出了
ATA66
和
ATA100
硬盘。这就使得
RAID
技术被应用于中低档甚至个人PC机上成为可能。
RAID
通常是由在硬盘阵列塔中的
RAID
控制器或
电脑
中的
RAID
卡来实现的。
RAID
技术经过不断的发展,现在已拥有了从
RAID 0
到
6
七种基本的
RAID
级别。另外,还有一些基本
RAID
级别的组合形式,如
RAID 10
(
RAID 0
与
RAID 1
的组合),
RAID 50
(
RAID 0
与
RAID 5
的组合)等。不同
RAID
级别代表着不同的存储性能、数据安全性和存储成本。但我们最为常用的是下面的几种
RAID
形式。
RAID
级别的选择有三个主要因素:可用性(数据冗余)、性能和成本。如果不要求可用性,选择
RAID0
以获得最佳性能。如果可用性和性能是重要的而成本不是一个主要因素,则根据硬盘数量选择
RAID 1
。如果可用性、成本和性能都同样重要,则根据一般的数据传输和硬盘的数量选择
RAID
3、
RAID
5。
RAID 0
RAID 0
又称为
Stripe
(条带化)或
Striping
,它代表了所有
RAID
级别中最高的
存储
性能。
RAID 0
提高存储性能的原理是把连续的数据分散到多个磁盘上存取,这样,系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求。这种数据上的并行操作可以充分利用总线的带宽,显著提高磁盘整体存取性能。
如图所示:系统向三个磁盘组成的逻辑
硬盘
(
RAID 0
磁盘组)发出的
I/O
数据请求被转化为
3
项操作,其中的每一项操作都对应于一块物理硬盘。我们从图中可以清楚的看到通过建立
RAID 0
,原先顺序的数据请求被分散到所有的三块硬盘中同时执行。从理论上讲,三块硬盘的并行操作使同一时间内磁盘读写速度提升了
3
倍。
但由于总线带宽等多种因素的影响,实际的提升速率肯定会低于理论值,但是,大量数据并行传输与串行传输比较,提速效果显著显然毋庸置疑。
RAID 0
的缺点是不提供数据冗余,因此一旦用户数据损坏,损坏的数据将无法得到恢复。
RAID 0
具有的特点,使其特别适用于对性能要求较高,而对数据安全不太在乎的领域,如图形工作站等。对于个人用户,
RAID 0
也是提高硬盘存储性能的绝佳选择。
RAID 1
RAID 1
又称为
Mirror
或
Mirroring
(镜像),它的宗旨是最大限度的保证用户数据的可用性和可修复性。
RAID 1
的操作方式是把用户写入
硬盘
的数据百分之百地自动复制到另外一个硬盘上。
如图所示:当读取数据时,系统先从
RAID 0
的源盘读取数据,如果读取数据成功,则系统不去管备份盘上的数据;如果读取源盘数据失败,则系统自动转而读取备份盘上的数据,不会造成用户工作任务的中断。当然,我们应当及时地更换损坏的硬盘并利用备份数据重新建立
Mirror
,避免备份盘在发生损坏时,造成不可挽回的数据损失。
由于对
存储
的数据进行百分之百的备份,在所有
RAID
级别中,
RAID 1
提供最高的数据安全保障。同样,由于数据的百分之百备份,备份数据占了总存储空间的一半,因而
Mirror(
镜像
)
的磁盘空间利用率低,存储成本高。
Mirror
虽不能提高存储性能,但由于其具有的高数据安全性,使其尤其适用于存放重要数据,如服务器和数据库存储等领域
.
RAID 0+1
正如其名字一样
RAID 0+1
是
RAID 0
和
RAID 1
的组合形式,也称为
RAID 10
。
以四个磁盘组成的
RAID 0+1
为例,其数据
存储
方式如图所示:
RAID 0+1
是存储性能和数据安全兼顾的方案。它在提供与
RAID 1
一样的数据安全保障的同时,也提供了与
RAID 0
近似的存储性能。
由于
RAID 0+1
也通过数据的
100%
备份功能提供数据安全保障,因此
RAID 0+1
的磁盘空间利用率与
RAID 1
相同,存储成本高。
RAID 0+1
的特点使其特别适用于既有大量数据需要存取,同时又对数据安全性要求严格的领域,如银行、金融、商业超市、仓储库房、各种档案管理等。
RAID 3
RAID 3
是把数据分成多个
“
块
”
,按照一定的容错算法,存放在
N+1
个
硬盘
上,实际数据占用的有效空间为
N
个硬盘的空间总和,而第
N+1
个硬盘上
存储
的数据是校验容错信息,当这
N+1
个硬盘中的其中一个硬盘出现故障时,从其它
N
个硬盘中的数据也可以恢复原始数据,这样,仅使用这
N
个硬盘也可以带伤继续工作(如采集和回放素材),当更换一个新硬盘后,系统可以重新恢复完整的校验容错信息。由于在一个硬盘阵列中,多于一个硬盘同时出现故障率的几率很小,所以一般情况下,使用
RAID3
,安全性是可以得到保障的。与
RAID0
相比,
RAID3
在读写速度方面相对较慢。使用的容错算法和分块大小决定
RAID
使用的应用场合,在通常情况下,
RAID3
比较适合大文件类型且安全性要求较高的应用,如视频编辑、硬盘播出机、大型数据库等
.
RAID 5
RAID 5
是一种
存储
性能、数据安全和存储成本兼顾的存储解决方案。
以四个
硬盘
组成的
RAID 5
为例,其数据存储方式如图
4
所示:图中,
P0
为
D0
,
D1
和
D2
的奇偶校验信息,其它以此类推。由图中可以看出,
RAID 5
不对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成
RAID5
的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当
RAID5
的一个磁盘数据发生损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。
RAID 5
可以理解为是
RAID 0
和
RAID 1
的折衷方案。
RAID 5
可以为系统提供数据安全保障,但保障程度要比
Mirror
低而磁盘空间利用率要比
Mirror
高。
RAID 5
具有和
RAID 0
相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶校验信息,
RAID 5
的磁盘空间利用率要比
RAID 1
高,存储成本相对较低。
RAID 5
模式的工作原理如下:
RAID 5
使用至少三块硬盘来实现阵列,它既能实现
RAID 0
的加速功能也能够实现
RAID 1
的备份数据功能,在阵列当中有三块硬盘的时候,它将会把所需要存储的数据按照用户定义的分割大小分割成文件碎片存储到两块硬盘当中,此时,阵列当中的第三块硬盘不接收文件碎片,它接收到的是用来校验存储在另外两块硬盘当中数据的一部分数据,这部分校验数据是通过一定的算法产生的,可以通过这部分数据来恢复存储在另外两个硬盘上的数据。另外,这三块硬盘的任务并不是一成不变的,也就是说在这次存储当中可能是
1
号硬盘和
2
好硬盘用来存储分割后的文件碎片,那么在下次存储的时候可能就是
2
号硬盘和
3
号硬盘来完成这个任务了。可以说,在每次存储操作当中,每块硬盘的任务是随机分配的,不过,肯定是两块硬盘用来存储分割后的文件碎片另一块硬盘用来存储校验信息。
这个校验信息一般是通过
RAID
控制器运算得出的,通常这些信息是需要一个
RAID
控制器上有一个单独的芯片来运算并决定将此信息发送到哪块硬盘存储。
RAID 5
同时会实现
RAID 0
的高速存储读取并且也会实现
RAID 1
的数据恢复功能,也就是说在上面所说的情况下,
RAID 5
能够利用三块硬盘同时实现
RAID 0
的速度加倍功能也会实现
RAID 1
的数据备份功能,并且当
RAID 5
当中的一块硬盘损坏之后,加入一块新的硬盘同样可以实现数据的还原。
下面来分析一下
RAID 5
如何实现对数据的还原,举个例子来说,使用
3
块硬盘来构成一个
RAID 5
阵列,用户定义的分割文件大小为
64K
,此时需要存储的文件大小为
128K
。首先,当
RAID
控制器接收到这部分数据之后利用一定的算法得出校验信息,
然后将这
128K
的文件分割成两个大小为
64K
大小的文件碎片,然后将这两个文件碎片同时分别放往
1
号硬盘和
2
号硬盘,最后校验信息被发往
3
号硬盘。如果
这个阵列当中某个硬盘损坏了,还是可以恢复原来的数据:如果上面用来存储校验信息的
3
号硬盘损坏了,可以通过
1
号和
2
号硬盘来重新生成校验信息;如果损坏的是
1
号或者
2
号硬盘,可以利用
3
号硬盘上存储的校验信息重新生成原来的文件碎片。
RAID 5
模式并不是一些都好,如果阵列当中某块硬盘上的信息发生了改变的话,那么就需要重新计算文件分割碎片,并且,校验信息也需要重新计算,这时,三个硬盘都需要重新调用。同样,如果要做
RAID 5
阵列的话,最好使用相同容量相同速度的硬盘,
RAID 5
模式的有效容量是阵列中容量最小的硬盘容量乘上阵列中硬盘数目减去一后的数,这里硬盘数目要减去一是因为其中有一块硬盘用来存放校验信息。
RAID 5
既能够实现速度上的加倍,同时也能够保证数据的安全性,所以在很多高端系统当中都使用这种
RAID
模式。
从
RAID 0
到
RAID 7
都有相对应的组合方式,但是有些并不常用。还有一种方式是
RAID 10
,这种方式其实就是
RAID 0+1
,它的性能基本上和
RAID 5
相同,既有
RAID 0
在速度上的优势,同时也有
RAID 1
在数据安全上的优势,不过,想要组建一个
RAID 10
模式需要至少四块硬盘,这个成本就比较高了。
RAID3 和RAID5技术详解
RAID 3
采用的是一种较为简单的校验实现方式,使用一个专门的磁盘存放所有的校验数据,而在剩余的磁盘中创建带区集分散数据的读写操作。例如,在一个由
4
块硬盘
构成的
RAID 3
系统中,
3
块硬盘将被用来保存数据,第四块硬盘则专门用于校验。这种配置方式可以用
3+1
的形式表示,具体如图
:
在上图中,我们用相同的颜色表示使用同一个校验块的所有数据块,斜线标出的部分为校验块。校验块和所有对应的数据块一起构成一个带区。
第四块硬盘中的每一个校验块所包含的都是其它
3
块硬盘中对应数据块的校验信息。
RAID 3
的成功之处就在于不仅可以像
RAID 1
那样提供容错功能,而且整体开销从
RAID 1
的
50%
下降为
25%(RAID 3+1)
。随着所使用磁盘数量的增多,成本开销会越来越小。举例来说,如果我们使用
7
块硬盘,那么总开销就会将到
12.5%(1/7)
。
在不同情况下,
RAID 3
读写操作的复杂程度不同。最简单的情况就是从一个完好的
RAID 3
系统中读取数据。这时,只需要在数据存储盘中找到相应的数据块进行读取操作即可,不会增加任何额外的系统开销。
当向
RAID 3
写入数据时,情况会变得复杂一些。即使我们只是向一个磁盘写入一个数据块,也必须计算与该数据块同处一个带区的所有数据块的校验值,并将新值重新写入到
校验块中。例如,当我们向上图中的绿色数据块写入数据时,必须重新计算所有
3
个绿色数据块的校验值,然后重写位于第四块硬盘的绿色校验块。由此我们可以看
出,一个写入操作事实上包含了数据读取
(
读取带区中的关联数据块
)
,校验值计算,数据块写入和校验块写入四个过程。系统开销大大增加。
我们可以通过适当设置带区的大小使
RAID
系统得到简化。如果某个写入操作的长度恰好等于一个完整带区的大小
(
全带区写入
)
,那么我们就不必再
读取带区中的关联数据块计算校验值。我们只需要计算整个带区的校验值,然后直接把数据和校验信息写入数据盘和校验盘即可。
到目前为止,我们所探讨的都是正常运行状况下的数据读写。下面,我们再来看一下当硬盘出现故障时,
RAID
系统在降级模式下的运行情况。
RAID 3
虽然具有容错能力,但是系统会受到影响。当一块磁盘失效时,该磁盘上的所有数据块必须使用校验信息重新建立。如果我们是从好盘中读取数据块,不会有任何
变化。但是如果我们所要读取的数据块正好位于已经损坏的磁盘,则必须同时读取同一带区中的所有其它数据块,并根据校验值重建丢失的数据。
当我们更换了损坏的磁盘之后,系统必须一个数据块一个数据块的重建坏盘中的数据。整个过程包括读取带区,计算丢失的数据块和向新盘写入新的数据
块,都是在后台自动进行。重建活动最好是在
RAID
系统空闲的时候进行,否则整个系统的性能会受到严重的影响。
RAID 3
的性能问题
除了我们在上文讨论过的有关数据写入和降级模式的问题之外,在使用
RAID 3
的过程中还有其他一些性能上的问题需要引起我们的注意。
RAID 3
所存在的最大一个不足同时也是导致
RAID 3
很少被人们采用的原因就是校验盘很容易成为整个系统的瓶颈。
我们已经知道
RAID 3
会把数据的写入操作分散到多个磁盘上进行,然而不管是向哪一个数据盘写入数据,都需要同时重写校验盘中的相关信息。因此,对于那些经常需要执行大量写入
操作的应用来说,校验盘的负载将会很大,无法满足程序的运行速度,从而导致整个
RAID
系统性能的下降。鉴于这种原因,
RAID 3
更加适合应用于那些写入操作较少,读取操作较多的应用环境,例如数据库和
WEB
服务器等。
RAID 5
RAID 3
所存在的校验盘的性能问题使几乎所有的
RAID
系统都转向了
RAID 5
。在运行机制上,
RAID 5
和
RAID 3
完全相同,也是由同一带区内的几个数据块共享一个校验块。
RAID 5
和
RAID 3
的最大区别在于
RAID 5
不是把所有的校验块集中保存在一个专门的校验盘中,而是分散到所有的数据盘中。
RAID 5
使用了一种特殊的算法,可以计算出任何一个带区校验块的存放位置。具体如图所示
:
注意图中的校验块已经被分散保存在不同的磁盘中,这样就可以确保任何对校验块进行的读写操作都会在所有的
RAID
磁盘中进行均衡,从而消除了产
生瓶颈的可能。