一、什么是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。

重复7次添加。

到此添加硬盘成功,开启虚拟机。

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

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

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

将该主分区更改分区类型:fd 是linux系统的raid类型。

查看现在的状态

同样的操作再来一次:

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

注: -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工作状态

[root@lq1 ~]# mdadm -D /dev/md0 #查看raid0的详细信息

说明:

| 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

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

6、创建挂载目录并挂载 [root@lq1 ~]# mkdir /opt/md0/ [root@lq1 ~]# mount /dev/md0 /opt/md0/ [root@lq1 ~]# df -hT 从上如可以看出,/dev/md0的可用大小为10G。

7、写入/etc/fstab 为了下次开机还能正常使用RAID设备,需要将挂载的信息写入/etc/fstab 文件中。

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

五、创建RAID1 1、新建分区类型

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

3、查看raid的状态

4、查看raid1 的信息 说明: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 修改成以下内容:

6、格式化raid1 [root@lq1 ~]# mkfs.xfs /dev/md1

7、建立挂载点并挂载 [root@lq1 ~]# mkdir /opt/md [root@lq1 ~]# mount /dev/md1 /opt/md1

8、写入到/etc/fstab文件中,实现开机自动挂载

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

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

1、新建分区并修改分区类型

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

3、查看raid5 状态 cat /proc/mdstat

mdadm -D /dev/md5

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

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

mdadm -Evs >> /etc/mdadm.conf

5、格式化磁盘阵列 mkfs.xfs /dev/md5

6、建立挂载点并挂载

mkdir /opt/md5

mount /dev/md5 /opt/md5

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

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

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

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

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

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

mdadm /dev/md5 -f /dev/sdh1

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

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

3、查看之前写入的测试数据是否还在

4、移除损坏的磁盘 mdadm /dev/md5 -r /dev/sdh1

5、查看md5状态

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

7、 查看raid5 阵列状态

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

1、添加新物理硬盘

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

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

3、热备盘转换成活动盘 mdadm -G /dev/md5 -n4

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

也可以用mdadm -D /dev/md5

构建完毕后的RAID 状态:

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

ext文件系统: resize2fs /dev/md5

xfs文件系统: xfs_growfs /dev/md5

查看分区情况:

可以看到文件系统已经扩容到15G,测试数据也正常,没丢失,到此新增物理硬盘成功。

5、重启测试

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