一、什么是RAID?
RAID,
是英文Redundant Array of Independent Disks 的缩写,翻译成中文意思是“独立磁盘冗余阵列”,有时也简称磁盘阵列(Disk Array)。

简单的说,RAID是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份的技术。

组成磁盘阵列的不同方式称为RAID级别(RAID Levels)。

常见的RAID级别包括RAID0,RAID1,RAID5,RAID6,RAID10(1+0)。
各级别对比如下:

RAID级别 最少硬盘 最大容错 可用容量 读取性能 写入性能 安全性 目的 应用产业
0 2 0 0 n n 一个硬盘异常,全部硬盘都会异常 追求最大容量、速度 3D产业实时渲染、视频剪接、告诉缓存
1 2 n-1 1 n n-1 最高,只需一个硬盘正常即可 追求最大安全性 个人,企业备份
5 3 1 n-1 n-1 n-1 高,允许坏一块硬盘 追求最大容量,最小预算 个人,企业备份
6 4 2 n-2 n-2 n-2 高,允许坏2块硬盘 追求高大容量,最小预算 个人,企业备份
10 4 n/2 n/2 n n/2 安全性高 综合raid0和raid1优点,理论速度较快 大型数据库,服务器

注:
n,代表硬盘总数
raid10,是raid1和raid0的组合体,先两两制作成raid1,以保证数据安全,再将两个raid1制作成raid0,以保证最大读写性能。

二、RAID的种类
RAID可分为硬件RAID和软件RAID。
硬件RAID:通过用硬件来实现RAID功能的就是硬件RAID,如各种RAID卡,还有主板集成能够做的RAID都是硬件。

软件RAID:通过操作系统来完成RAID功能
的就是软RAID,比如:在Linux操作系统下,用3块硬盘做的RAID5。

硬件RAID和软件RAID的区别:
1、性能
这是最重要的一个方面,用RAID就是为了提高性能。从理论上说,使用RAID0可以获得使用单硬盘双倍的速度,用软/硬RAID0都可以接近这个速度。使用软RAID的CPU占用率要高一些,所以在性能上,硬RAID要领先。

2、兼容性
目前主流的服务器新版操作系统基本都支持软RAID,但是如果操作系统出了问题,软RAID就挂了。硬RAID的兼容性要好很多,万一系统出了问题,做系统维护、数据恢复也方便多了。

3、安全性
软RAID安全性不好,当有一块硬盘损坏时,它不能实现重建的功能,而且它的局限性也很在,而硬RAID有硬盘丢失时,它可以实现重建,以及如果RAID卡损坏时,它可以通过更换RAID卡,实现不丢失数据的功能。

4、稳定性
做RAID是为了追求性能,市面上主流7.2k硬盘的发热量普遍较大,同时在机箱里放上两块,散热就已经是个问题,更何况是三块。毕竟稳定压倒一切,要是硬盘被烧毁就得不偿失了。况且,有些机箱根本放不下三块硬盘。因此使用硬RAID的稳定性要高一些。

三、实验系统环境
1、系统环境:
实验环境:Vmware Workstation Pro 14
系统平台:CentOS Linux release 7.4.1708 (Core)
RAID管理工具软件包:mdadm-4.0-5.el7.x86_64

2、设置磁盘
在Vmware Workstation Pro 14里模拟增加磁盘,此实验,将创建raid0、raid1、raid5。

raid0需要两块硬盘;
raid1需要两块硬盘;
raid5需要四块硬盘;

所以这里添加八块物理硬件,每块5GB。

linux系统之RAID_第1张图片

linux系统之RAID_第2张图片

linux系统之RAID_第3张图片

linux系统之RAID_第4张图片

重复7次添加。

linux系统之RAID_第5张图片

到此添加硬盘成功,开启虚拟机。
linux系统之RAID_第6张图片

3、安装RAID管理工具
yum install mdadm -y #这里使用的是本地yum仓库。

到此准备工作完毕,开始着手创建RAID了。

四、创建raid0
1、新建分区
直接将一个磁盘分为一个主分区

linux系统之RAID_第7张图片
将该主分区更改分区类型:fd 是linux系统的raid类型。

linux系统之RAID_第8张图片

linux系统之RAID_第9张图片
查看现在的状态
linux系统之RAID_第10张图片

同样的操作再来一次:
linux系统之RAID_第11张图片

2、创建raid0
[root@lq1 ~]# mdadm -Cv /dev/md0 -a yes -l0 -n2 /dev/sd[bc]1

linux系统之RAID_第12张图片
注:
-C  --create   创建阵列;
-v 显示创建过程;
-a  --auto    同意创建设备,如不加此参数时必须先使用mknod 命令来创建一个RAID设备,不过推荐使用-a yes参数一次性创建;
-l   --level   阵列模式,支持的阵列模式有 linear, raid0, raid1, raid4, raid5, raid6, raid10, multipath, faulty, container;
-n     --raid-devices    阵列中活动磁盘的数目,该数目加上备用磁盘的数目应该等于阵列中总的磁盘数目;
/dev/md0     阵列的设备名称;
/dev/sd{b,c}1  参与创建阵列的磁盘名称;

3、查看raid0状态
[root@lq1 ~]# cat /proc/mdstat #查看raid工作状态
linux系统之RAID_第13张图片

[root@lq1 ~]# mdadm -D /dev/md0 #查看raid0的详细信息
linux系统之RAID_第14张图片

说明:

| Raid Level | 阵列级别 |
| -------- | -------- | -------- | 
|Array Size| 阵列容量大小;
|Raid Devices| RAID成员的个数;
|Total Devices | RAID中下属成员的总计个数,因为还有冗余硬盘或分区,也就是spare,为了RAID的正常运珩,随时可以推上去加入RAID的;
|State | clean, degraded, recovering 状态,包括三个状态,clean 表示正常,degraded 表示有问题,recovering 表示正在恢复或构建;
|Active Devices | 被激活的RAID成员个数;
|Working Devices | 正常的工作的RAID成员个数;
|Failed Devices | 出问题的RAID成员;
|Spare Devices | 备用RAID成员个数,当一个RAID的成员出问题时,用其它硬盘或分区来顶替时,RAID要进行构建,在没构建完成时,这个成员也会被认为是spare设备;
|UUID | RAID的UUID值,在系统中是唯一的;

4、创建RAID配置文件/etc/mdadm.conf
RAID 的配置文件为/etc/mdadm.conf,默认是不存在的,需要手工创建。
该配置文件的主要作用是系统启动的时候能够自动加载软RAID,同时也方便日后管理。但不是必须的,推荐对该文件进行配置。

/etc/mdadm.conf文件内容包括:
由DEVICE 选项指定用于软RAID的所有设备,和ARRAY 选项所指定阵列的设备名、RAID级别、阵列中活动设备的数目以及设备的UUID号。

创建/etc/mdadm.conf
[root@lq1 ~]# echo DEVICE /dev/sd{b,c}1 >> /etc/mdadm.conf
[root@lq1 ~]# mdadm -Evs >> /etc/mdadm.conf

linux系统之RAID

5、格式化磁盘阵列
[root@lq1 ~]# mkfs.xfs /dev/md0

linux系统之RAID_第15张图片
6、创建挂载目录并挂载
[root@lq1 ~]# mkdir /opt/md0/
[root@lq1 ~]# mount /dev/md0 /opt/md0/
[root@lq1 ~]# df -hT
linux系统之RAID_第16张图片
从上如可以看出,/dev/md0的可用大小为10G。

7、写入/etc/fstab
为了下次开机还能正常使用RAID设备,需要将挂载的信息写入/etc/fstab 文件中。
linux系统之RAID_第17张图片

然后重启开机测试是否自动挂载,到此raid0创建完毕。

五、创建RAID1
1、新建分区类型
linux系统之RAID_第18张图片

2、创建raid1
[root@lq1 ~]# mdadm -C /dev/md1 -ayes -l1 -n2 /dev/sd[d,e]1

linux系统之RAID_第19张图片

3、查看raid的状态
linux系统之RAID_第20张图片

4、查看raid1 的信息
linux系统之RAID_第21张图片
说明:Used Dev Size : RAID单位成员容量大小,也就是构成RAID的成员硬盘或分区的总容量的大小。

5、添加raid1到raid配置文件/etc/mdadm.conf中,并修改
[root@lq1 ~]# echo DEVICE /dev/sd{d,e}1 >> /etc/mdadm.conf
[root@lq1 ~]# mdadm -Evs >> /etc/mdadm.conf
修改成以下内容:
linux系统之RAID

6、格式化raid1
[root@lq1 ~]# mkfs.xfs /dev/md1
linux系统之RAID_第22张图片

7、建立挂载点并挂载
[root@lq1 ~]# mkdir /opt/md
[root@lq1 ~]# mount /dev/md1 /opt/md1
linux系统之RAID_第23张图片

8、写入到/etc/fstab文件中,实现开机自动挂载
linux系统之RAID_第24张图片

然后reboot 测试开机是否自动挂载,raid1 创建完毕。

六、创建RAID5
RAID5 至少需要三块硬盘,我们拿/dev/sdf, /dev/sdg, /dev/sdh, /dev/sdi 这四块硬盘来做实验,三块做为活动盘,另一块做为热备盘。

1、新建分区并修改分区类型
linux系统之RAID_第25张图片

linux系统之RAID_第26张图片

2、开始创建RAID5
mdadm -C /dev/md5 -ayes -l5 –n3 -x1 /dev/sd[f,g,h,i]1
linux系统之RAID
说明:
"-x1" 或"--spare-devices=1" 表示当前阵列中热备盘只有一块,若有多块热备盘,则将"--spare-devices" 的值设置为相应的数目。

3、查看raid5 状态
cat /proc/mdstat
linux系统之RAID_第27张图片

mdadm -D /dev/md5
linux系统之RAID_第28张图片

4、添加raid5 到RAID配置文件/etc/mdadm.conf 并修改

echo DEVICE /dev/sd{f,g,h,i}1 >> /etc/mdadm.conf

mdadm -Evs >> /etc/mdadm.conf

linux系统之RAID_第29张图片

5、格式化磁盘阵列
mkfs.xfs /dev/md5
linux系统之RAID_第30张图片

6、建立挂载点并挂载

mkdir /opt/md5

mount /dev/md5 /opt/md5
linux系统之RAID_第31张图片

7、写入/etc/fstab,实现开机自动挂载

linux系统之RAID_第32张图片
然后reboot 测试开机是否自动挂载,raid5 创建完毕。

七、RAID维护
RAID 做好之后,还需要进行日常的维护操作,比如其中一块物理硬盘损坏,需要进行更换故障磁盘的操作,下面我们将模拟raid5 中磁盘损坏来讲解软RAID 的维护操作。

1、模拟磁盘损坏
当软RAID 检测到某个磁盘有故障时,会自动标记该磁盘为故障磁盘,并停止对故障磁盘的读写操作。

将/dev/sdh1 模拟为出现故障的磁盘,命令如下:

创建测试文件
touch /opt/md5/{1,2,3,4}.txt

mdadm /dev/md5 -f /dev/sdh1
linux系统之RAID

2、查看状态
创建RAID 5过程中,设置了一个热备盘,所以当有标记为故障磁盘的时候,热备盘会自动顶替故障磁盘工作,阵列也能够在短时间内实现重建。
linux系统之RAID_第33张图片

其中 "[3/2]" 的第一位数表示阵列所包含的设备数,第二位数表示活动的设备数,因为目前有一个故障设备,所以第二位数为2;

3、查看之前写入的测试数据是否还在
linux系统之RAID_第34张图片

4、移除损坏的磁盘
mdadm /dev/md5 -r /dev/sdh1
linux系统之RAID

5、查看md5状态

linux系统之RAID_第35张图片

6、新加热备磁盘
实际生产中添加新的硬盘,同样需要对新硬盘进行创建分区的操作,这里为了方便,将刚才模拟损坏的硬盘再次新加到raid5 中。

linux系统之RAID

7、 查看raid5 阵列状态

linux系统之RAID_第36张图片

八、向RAID中增加存储硬盘
如果现在已经做好的RAID 空间还是不够用的话,可以向里面增加新的硬盘,来增加RAID 的空间。

1、添加新物理硬盘
linux系统之RAID_第37张图片

linux系统之RAID_第38张图片

2、向RAID 中新加一块硬盘
mdadm /dev/md5 -a /dev/sdj1

linux系统之RAID

linux系统之RAID_第39张图片

默认情况下,向RAID 中增加的磁盘,会被默认当作热备盘,需要把热备盘加入到RAID 的活动盘中。

3、热备盘转换成活动盘
mdadm -G /dev/md5 -n4
linux系统之RAID_第40张图片

/dev/sdj1 已经变成了活动盘,但是Array Size : 10465280 (9.98 GiB 10.72 GB) 并没有变大,这是因为构建没有完成。

linux系统之RAID_第41张图片

也可以用mdadm -D /dev/md5
linux系统之RAID_第42张图片

构建完毕后的RAID 状态:

linux系统之RAID_第43张图片

4、扩容文件系统
RAID构建完毕后,容量是增加了,但是文件系统还是没有变化,这是需要对文件系统进行扩容。

linux系统之RAID_第44张图片
ext文件系统:
resize2fs /dev/md5

xfs文件系统:
xfs_growfs /dev/md5
linux系统之RAID_第45张图片

查看分区情况:

linux系统之RAID_第46张图片
可以看到文件系统已经扩容到15G,测试数据也正常,没丢失,到此新增物理硬盘成功。
linux系统之RAID

5、重启测试
linux系统之RAID_第47张图片

从上图可以看到,重启系统后,一切正常,Linux下配置软RAID成功。