目录
一、什么是RAID
RAID是英文Redundant Array of Indepedent Disks 的缩写,中文简称独立冗余磁盘阵列,简单来说是吧多块独立的物理硬盘按不同的方式组合起来形成一个硬盘组,从而提供比单个硬盘更高性能和存储容量的数据备份技术。
二、RAID的级别
组成磁盘阵列的不同方式称为RAID级别,常用的有一下几种
RAID 0
连续以位或多字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率,但是没有数据冗余
只是单纯地提高性能,没有数据的可靠性保证,而其中一个磁盘失效将影响所有数据
不能应用于数据安全性高的场合

虽然RAID 0可以提供更多的空间和更好的性能,但是整个系统是非常不可靠的,如果出现故障,无法进行任何补救。所以,RAID 0一般只是在那些对数据安全性要求不高的情况下才被人们使用
RAID 1
RAID 1称为磁盘镜像,原理是把一个磁盘的数据镜像到另一个磁盘上,也就是说数据在写入一块磁盘的同时,会在另一块闲置的磁盘上生成镜像文件,在不影响性能情况下最大限度的保证系统的可靠性和可修复性上,只要系统中任何一对镜像盘中至少有一块磁盘可以使用,甚至可以在一半数量的硬盘出现问题时系统都可以正常运行,当一块硬盘失效时,系统会忽略该硬盘,转而使用剩余的镜像盘读写数据,具备很好的磁盘冗余能力。

RAID 1主要是通过二次读写实现磁盘镜像,所以磁盘控制器的负载也相当大,尤其是在需要频繁写入数据的环境中。
RAID 5
RAID5。从它的示意图上可以看到,它的奇偶校验存在于所有磁盘上,其中的p0代表第0带区的奇偶校验值,其它的意思也相同。RAID5的读出效率很高,写入效率一般,块式的集体访问效率不错。因为奇偶校验码在不同的磁盘上,所以提高了可靠性。

由于有校验问题写的性能相对不高
RAID 6
采用双重校验技术,在RAID 5的技术上在增加一块校验盘,可同时损坏两块磁盘的情况下也能保证数据的不丢失,但有两块校验盘的存在,写的性能相比于RAID 5更差。
RAID 1+0
就是兼顾了RAID 1和RAID 0的结合,先做镜像在做条带,结合了两者特点性能高、可靠性高。因为同时有镜像盘,所以磁盘利用率只有50%,且成本较高。

三、各RAID 区别表
| RAID级别 | 硬盘数量 | 磁盘利用率 | 是否有校验 | 保护能力 | 写性能 |
| RAID0 | N | N | 无 | 无 | 单个硬盘的N倍 |
| RAID1 | N(偶数) | N/2. | 无 | 允许一个设备故障 | 需写两对存储设备,互为主备 |
| RAID5 | N>=3 | (N-1) /N | 有 | 允许一个设备故障 | 需写计算校验 |
RAID6 | N>=4 | (N-2) /N | 有 | 允许两个设备故障 | 需双重写计算校验 |
| RAID10 | N>=4(偶数) | N/2 | 无 | 允许两个基组中各坏一个 | N/2块 盘同时写入 |
四、创建RAID
1、这里我们演示创建RAID5,由于RAID5需要N>=3所以我们要创建4块新的硬盘,并将文件格式改为fd

/dev/sdb1 2048 41943039 20970496 fd Linux raid autodetect
/dev/sdc1 2048 41943039 20970496 fd Linux raid autodetect
/dev/sde1 2048 41943039 20970496 fd Linux raid autodetect
/dev/sdd1 2048 41943039 20970496 fd Linux raid autodetect2、创建RAID5,输入命令
mdadm -C -v /dev/md0 -l5 -n3 /dev/sd[bcd]1 -x1 /dev/sde1
-C :表示新建
-v :显示创建过程详细信息
/dev/md0 :表示创建RAID5的名称
-l5 :表示RAID的级别,l5表示RAID5
-n3 :表示几块硬盘创建,n3指三块硬盘
/dev/sd[bcd]1 :/dev/sd [bcd]1: 指定使用这3块磁盘分区去创建RAID
x1 :指定使用几块硬盘做RAID的热备用盘,x1表示保留1块空闲的硬盘作备用
/dev/sde1 :指定用作于备用的磁盘3、格式化磁盘并查看RAID详细信息
输入格式化命令
[root@localhost ~]# mkfs.xfs /dev/md0
meta-data=/dev/md0 isize=512 agcount=16, agsize=654720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=10475520, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=5120, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
输入命令查看RAID详细信息
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Tue Aug 17 01:29:25 2021
Raid Level : raid5
Array Size : 41908224 (39.97 GiB 42.91 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Tue Aug 17 01:36:42 2021
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 7aec178a:264d5f0f:4ca621b8:dbbe97a3
Events : 18
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
4 8 49 2 active sync /dev/sdd1
3 8 65 - spare /dev/sde1
这里可以清楚的看到bcd的1盘为存储盘,e1盘为备用盘
4、模拟故障,查看备用盘是否启用
[root@localhost ~]# mdadm /dev/md0 -f /dev/sdb1 (模拟sdb1磁盘故障)
mdadm: set /dev/sdb1 faulty in /dev/md0
mdadm -D /dev/md0 (查看备用盘是否启用)
Number Major Minor RaidDevice State
3 8 65 0 spare rebuilding /dev/sde1 (备用盘成功启用)
1 8 33 1 active sync /dev/sdc1
4 8 49 2 active sync /dev/sdd1
0 8 17 - faulty /dev/sdb1
5、消除故障恢复磁盘
mdadm /dev/md0 -a /dev/sdb1 消除故障盘
mdadm: added /dev/sdb1
[root@localhost ~]# mdadm /dev/md0 -a /dev/sdb1 重新将sdb1添加到阵列,sde1重回备用盘
[root@localhost ~]# mdadm -D /dev/md0
Number Major Minor RaidDevice State
3 8 65 0 active sync /dev/sde1
1 8 33 1 active sync /dev/sdc1
4 8 49 2 active sync /dev/sdd1
5 8 17 - spare /dev/sdb1
总结
日常工作中若需要RAID要按照自己实际需求配置,RAID10 和其他的也需要多了解根据不同场合需求灵活运用。