1、历史
- 1988年,由伯克利大学的D.A.Patterson出品;
- 名字的变更: 独立的磁盘冗余阵列---->廉价的磁盘冗余阵列;
2、raid概念
**磁盘阵列**(Redundant Arrays of Independent Disks,RAID),有“**独立磁盘构成的具有冗余能力的阵列**”之意。
磁盘阵列是由很多块独立的[磁盘](https://baike.baidu.com/item/%E7%A3%81%E7%9B%98/2842227),**组合**成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。
磁盘阵列还能利用同位检查(Parity Check)的观念,当[数组](https://baike.baidu.com/item/%E6%95%B0%E7%BB%84/3794097)中任意一个硬盘发生故障时,仍可读出数据。在数据重构时,可将数据经计算后重新置入新硬盘中;
3、raid实现的分类
(1)软RAID:由操作系统自身的算法来实现的,需要依赖消耗系统本身的资源,不适用与大型,密集型的计算场景
(2)硬RAID:由一个物理的RAID来组成的RAID,不需要依赖消耗操作系统本身的资源,性能好。
- 目前常见的分类由raid0,raid1,raid5,raid 6,raid10,RAID 01,raid50等;
4、硬raid
RAID卡就是一种利用独立硬件来实现RAID功能的方法。要在硬件上实现RAID功能,必须找一个物理硬件作为载体,SCSI卡或者主板上的南桥无疑就是这个载体了,RAID卡有PCI-E插槽的,也有直接集成在主板上的类型,但是他们的功能都是一样,RAID卡上有一套单独的计算单元(比如CPU,内存,IO处理总线等),用于实现RAID的功能。
1、由于RAID功能是单独通过RAID卡来完成的,不在依赖于底层操作系统来完成,因此它的性能更好
2、如果是使用的PCI-E插槽的RAID,可以更换性能更强的RAID卡,可以提高更好,更稳定的IO性能,更加灵活
1、RAID卡属于一种单独的设备,如果需要升级需要单独购买
2、软RAID由于RAID的信息是写在磁盘上的,迁移方便,但是硬件RAID的信息是写在RAID卡上,一旦RAID出现问题,会导致系统无法识别硬盘。
5、raid的形态
5.1、raid0(条带卷)
- raid0:条带卷;
- 磁盘的数量:>=1 ;
- 性能:n倍单块磁盘的新能;
- 最多有几块磁盘故障:不能出现单边磁盘故障;
- 磁盘的利用率:100%(所有raid中磁盘利用率最高);
优点:
1. 充分利用I/O总线性能使其带宽翻倍,读写速度翻倍。
2. 充分利用磁盘空间,利用率为100%。
缺点: 1. 不提供数据冗余。
1. 无数据检验,不能保证数据的正确性。
2. 存在单点故障。
应用场景:
1. 对数据完整性要求不高的场景,如:日志存储,个人娱乐。
2. 要求读写效率高,安全性要求不高,如图像工作站。

5.2、raid1(镜像卷)
- raid1:镜像卷;
- 磁盘的数量:>=2 ;
- 性能:没有提升(下降);
- 最多有几块磁盘故障:可以允许有单块磁盘出现故障;
- 磁盘的利用率:n-1/n;
优点:
1. 提供数据冗余,数据双倍存储。
2. 提供良好的读性能
缺点:
1. 无数据校验。
2. 磁盘利用率低,成本高。
应用场景:
1. 存放重要数据,如数据存储领域。

5.3、raid4\5
- raid4和5,是一样的。只不过raid4是有一块单独的磁盘存放奇偶校验值的;raid5是采用依次、按右对齐的算法进行排序的;
- 磁盘的数量:>=3;
- 性能:(n-1)*单块磁盘的IO性能;
- 最多有几块磁盘故障:1;
- 磁盘的利用率:n-1/n;
- raid 5 奇偶验证值,是依次的放在磁盘中,使用右对齐算法;
优点:
1. 读写性能高
2. 有校验机制
3. 磁盘空间利用率高
缺点:
磁盘越多安全性越差
应用场景:
安全性高,如金融、数据库、存储等、

5.4、raid6
- 与RAID 5相比,RAID 6增加了第二个独立的奇偶校验信息块。双重奇偶校验;
- 原理:两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,即使两块磁盘同时失效也不会影响数据的使用。但RAID 6需要分配给奇偶校验信息更大的磁盘空间,写性能比RAID5差。
- 磁盘的数量>=4;
- 性能=(n-2)*单块磁盘的IO性能;
- 最多有几块磁盘故障:2;
- 磁盘的利用率:n-2/n;
优点:
1、 良好的随机读性能
2、 有校验机制
缺点:
1、 写入速度差
2、 成本高
应用场景:
对数据安全级别要求比较高的企业

5.5、raid 01
- raid 01 \ 10 \50 \60 都是组合型raid;
- RAID 01:RAID 0和RAID 1的组合形式;
- 原理:先做RAID 0再将RAID 0组合成RAID 1,拥有两种RAID的特性;
- 数量:>=4
- IO性能:有所提升;
- 允许单边单块或双块的故障,不允许双边单块的故障;
- 利用率:n - 2 / n
优点:
1、 较高的IO性能
2、 有数据冗余
3、 无单点故障
缺点:
1、 成本稍高
2、 安全性比RAID 10 差

5.6、raid 10
- 原理:先做RAID 1再将RAID 1组合成RAID 0,拥有两种RAID的特性,安全性高;
- 数量:>=4
- IO性能:有所提升;
- 允许双边单块的故障,不允许单边单块或双块的故障;
- 利用率:n - 2 / n
优点:
1. RAID 10的读性能将优于RAID 01
2. 较高的IO性能
3. 有数据冗余
4. 无单点故障
5. 安全性高
缺点:
成本稍高
应用场景:特别适用于既有大量数据需要存取,同时又对数据安全性要求严格的领域,如银行、金融、商业超市、仓储库房、各种档案管理等。

5.7、raid 50 \ 60 \ 7
- 50的数量 >=6
- 60的数量 >=8
- raid7是私有的,性能好;
5.8、磁盘簇(jbod)
5.9、不同raid的对比
|
数量 |
性能 |
容错 |
利用率 |
| raid0 |
>=1 |
n * 单块磁盘的IO性能 |
磁盘不允许出错 |
100% |
| raid1 |
>=2 |
没有提升(些许下降) |
允许单块磁盘出现故障 |
50% |
| raid4 |
>=3 |
n -1 * 单块磁盘的IO性能 |
允许单块磁盘出现故障 |
n-1/n |
| raid5 |
>=3 |
n -1 * 单块磁盘的IO性能 |
允许单块磁盘出现故障 |
n-1/n |
| raid 6 |
>= 4 |
n -2 * 单块磁盘的IO性能 |
允许两块磁盘出现故障 |
n-2/n |
| raid 01 |
>=4 |
有提升 |
允许单边单块或两块出现故障,不允许双边单块出现故障; |
n-2/n |
| raid 10 |
>=4 |
有提升 |
允许双边单块出现故障,不允许单边单块出现故障; |
n-2/n |
| raid 50 \ 60 |
50 >=6 60 >=8 |
有提升 |
|
n-2/n |
6、软raid的实例分配
yum -y install mdadm
mdadm语法格式
mdadm [options] device
选项参数说明:
-C 创建阵列 create
-A 激活磁盘阵列 active
-D 打印阵列详细信息 display
-s 扫描磁盘阵列/porc/mdstat,得到阵列缺省信息
-f 将设备状态定位故障
-a 自动创建目标RAID设备的设备文件
-v 显示详细信息
-r 移除设备
-S 解除阵列,释放所有资源 stop
-l 设定磁盘阵列的级别
-x 指定磁盘阵列的备用用盘数量
-c 设定阵列的块chunk大小,单位KB ,默认512KB
-G 该表阵列大小或形态 grow
-n 磁盘阵列的数量
例如:(创建raid0的配置实例)
mdadm -C /dev/md0 -n2 -l0 /dev/sda /dev/sdb
例如:
例如:(创建raid0的配置实例)
mdadm -C /dev/md0 -n2 -l0 /dev/sda /dev/sdb -x /dev/sde
-x 是指定热备盘;
查看raid0 的信息;
mdadm -D /dev/md0 ##查看raid信息
创建md0的配置文件;
[root@localhost ~]# mdadm -Ds > /etc/mdadm.conf
[root@localhost ~]# cat /etc/mdadm.conf
ARRAY /dev/md0 metadata=1.2 name=localhost.localdomain:0 UUID=1c2a95dd:157de9e1:d1114fab:15205fa6
创建文件系统,挂载使用;
格式化: mkfs.ext4 /dev/md0
挂载:
[root@localhost ~]# mkdir /raid0
[root@localhost ~]# mount /dev/md0 /raid0
停止raid 0
先取消挂载:umount /raid0
停止:mdadm -S /dev/md0
激活raid 0
mdadm -A /dev/md0
故障模拟
模拟磁盘sdc6 出现故障:
mdadm /dev/md1 -f /dev/sdc6
移除故障磁盘:
[root@localhost ~]# mdadm /dev/md1 -r /dev/sdc6
加入新的磁盘:
[root@localhost ~]# mdadm /dev/md1 -a /dev/sdc6
更改阵列形态:
mdadm -G /dev/md6 -n 5 ##改变阵列形态
添加热备盘:
mdadm /dev/md10 -a /dev/sdb7 ##添加热备盘
删除创建的raid
mdadm --zero-superblock /dev/sdc1