且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

磁盘管理之RAID

更新时间:2022-10-07 09:09:03


一、RAID简介

RAID(Redundant Array of Inexpensive Disks,简称RAID) 的基本目的是把多个小型廉价的磁盘驱动器合并成一组阵列来达到大型昂贵的驱动器所无法达到的性能或冗余性。这个驱动器阵列在计算机眼中就如同一个单一的逻辑贮存单元或驱动RAID 是一种在多个磁盘上分散信息的方法。它使用磁盘分条(disk striping,RAID 级别 0)、磁盘镜像(disk mirroring,RAID 级别 1)、和带有奇偶校验的磁盘分条(disk striping with parity,RAID 级别 5)之类的技术来达到冗余性,减低潜伏时间,并且(或者)增加磁盘读写的带宽,提高从硬盘崩溃中恢复的能力。

RAID 的基本原理是,数据必须使用一致的形式被分散到阵列中的驱动器上。

要打到这个目的,数据必须被分割成大小一致的“块”(大小通常是32K 或64K,也可使用不同大小)。每一块都会根据所用的 RAID 级别而写入其中的一个硬盘驱动器。当数据要被读取时,这个进程就会反过来进行,造成多个驱动器好像是一个大驱动器的假象。

二、RAID特性:

RAID主要满足于2个特性:

高性能(数据读、写)有些场景下需要读写都比较高;要求足够可靠(冗余)

三、raid级别:

RAID0 - RAID7

RAID10,RAID50 等可以将raid组合起来使用

RAID控制器:baidu

级别只是用来描述多块磁盘不同的组合逻辑

1、RAID0:乔带设备,是一种能够实现将数据并行存储在多块磁盘上,如下图所示:

磁盘管理之RAID

RAID0实现把要存放的数据划分成不同的独立的块可以看到左边的D0、D1…等,这里的数据块跟硬盘本身的block块是两码事,一般来讲这个块比block要大的多,而要实现往多个磁盘上存储的时候,那么这些数据块将会按照顺序d0开始 分别存储到不同的磁盘上,依次循环,d0放在第一块盘上 d1放到第二块盘上,以此类推。

当来了一块的时候再进行依次循环,所以存储数据是完全平均分布在硬盘上来实现,性能上会有极大提升,因为实现了并行存储,把一个数据切割成N块形成一个条带。

磁盘管理之RAID

2、RAID1:镜像

以镜像为荣誉方式对虚拟磁盘上的数据做多份拷贝,放在成员磁盘上,如下图所示:

磁盘管理之RAID

因此存储数据仍然需要RAID卡来实现,只不过raid控制器(raid卡)仍然会将数据分成多份,但是数据存储是多块硬盘上是一样的。两块硬盘上的每个扇区都是各自完全对应的,如果其中一块硬盘出现故障可将替换一块新硬盘,当将一块新硬盘插入到服务器内,RAID1会立即做一次镜像同步(srync)重新将新加的硬盘和对应硬盘建立对应关系,按位逐个复制到新硬盘,从而达成冗余

#RAID本身非常消耗带宽,因此必须实施监控raid

RAID1的特性:

磁盘管理之RAID

3、RAID2:校验冗余(通过3块硬盘来实现冗余)

把数据分散为位或块,加入汉明码,间隔写入到磁盘阵列的每个磁盘中

在成员磁盘上的地址都一样

RAID2是通过异或运算提来供错误检查及恢复:

Raid3,raid4,raid5里面都有校验磁盘的概念,其中奇偶校验盘涉及到异或运算。
异或运算XOR:
1.先说异或的逻辑符号:^. 
2.异或的逻辑定义:同则假,异则真(0^0=0,1^1=0, 0^1=1 ,1^0=1)
3.计算机中的逻辑运算用1表示真,0表示假。
4.两个字节按位异或的例子:
01111001 
11100111 :异或运 ^
------------------- 
10011110 
5.假设一个3个数字的异或运算模型:3块硬盘HD1,HD2,HD3的数据信息全通过校验盘HD4存放校验信息
hd1 hd2 hd3 --hd4
0 0 0 --0
0 0 1 --1
0 1 0 --1
0 1 1 --0
1 0 0 --1
1 0 1 --0
1 1 0 --0
1 1 1 --1
从这个模型理解异或运算的概念:偶数个1的结果为0,奇数个1的结果为1;
6.得出n个数字异或运算的技巧:成双的1抵消后,剩下的是0还是1,即使异或的结果。
比如:0^1^0^1^0^1^0^0^1^0^1^0^0=1
(13个数字异或运算)
7.这也可以理解异或运算满足结合律
(a^b)^c=a^(b^c)

4、RAID3:数据块被分为更小的块并行传输到各个成员磁盘上,同时计算XOR校验数据存放到专用的校验磁盘上

磁盘管理之RAID

磁盘管理之RAID

5、RAID4:类似于RAID0,数据被分为更大的块并行传输到各个成员磁盘上,同时计算XOR校验数据存放到专用的校验磁盘上,如下图所示:

磁盘管理之RAID

D0存放第一块硬盘上,D1存放在第二块硬盘上,以此类推,把D0、D1、D2做校验存储为P0,所以没有做二次分割,称为独立校验,除此之外,与RAID3一模一样

RAID4采用独立存取方式,将条带由RAID3的小数据块改为更大的数据块,这是RAID4和RAID3最大的不同;

RAID4的校验较为迅速,可以获得相对于RAID3更高的读取速度,但写入速度极差,控制器的设计更加复杂;

6、RAID5:采用独立存取的阵列方式,校验信息被均匀的分散到阵列的各个磁盘上,如下图所示:

磁盘管理之RAID

由于是分散来存储校验码,所以raid5有左对称 右对称的概念,一般来讲都左对称这种方法***,性能好 组织简单 ;没有一块硬盘来做校验,在数据的吞吐能力上,没有所谓的检验码称为瓶颈一说,所以raid5融合了4了优点 同时避免了4的缺点:

磁盘管理之RAID

7、RAID6:对RAID5做了扩展, DP中的DP指Double Parity,它在RAID4的基础上不仅有行的校验,还增加了一个用来存放斜向校验信息的磁盘,任何两块盘坏掉都不影响

磁盘管理之RAID

无论哪种方式都需要4块硬盘

8、RAID7:RAID7是一种新的RAID标准,它与以前见到的RAID级别有明显的区别,可以理解成一个独立的“存储计算机”。RAID7自身带有智能化实时操作系统和用于存储管理的软件工具,可以完全独立与主机运行,不占用主机CPU资源。

四、组合多种RAID:

1、RAID10结合RAID1和RAID0,先镜像,再条带化

步骤:先做raid1后做raid0

如:假设有6块磁盘,可以将其两两一组 组合成RAID1 然后将每一组当成一个硬盘来用 再做成RAID0,在同组镜像卷 只能坏一块硬盘

2、RAID01:

如:将3块做成raid0 在其基础上做RAID1

磁盘管理之RAID

3、RAID50:是RAID5和RAID0的结合,先实现RAID5,再条带化

其冗余盘数越少,并行量就越高

磁盘管理之RAID

其特性:

磁盘管理之RAID

五、常用RAID级别比较:

磁盘管理之RAID

总结:

常用RAID级别中:

(1)RAID0的性能***;

(2)RAID1的冗余程度最高;

相同可用容量下,RAID1和RAID 10的开销最高



本文转自zuzhou 51CTO博客,原文链接:http://blog.51cto.com/yijiu/1327963