一、什么是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创建完毕。
2、创建raid1
[root@lq1 ~]# mdadm -C /dev/md1 -ayes -l1 -n2 /dev/sd[d,e]1
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
然后reboot 测试开机是否自动挂载,raid1 创建完毕。
六、创建RAID5
RAID5 至少需要三块硬盘,我们拿/dev/sdf, /dev/sdg, /dev/sdh, /dev/sdi 这四块硬盘来做实验,三块做为活动盘,另一块做为热备盘。
2、开始创建RAID5
mdadm -C /dev/md5 -ayes -l5 –n3 -x1 /dev/sd[f,g,h,i]1
说明:
"-x1" 或"--spare-devices=1" 表示当前阵列中热备盘只有一块,若有多块热备盘,则将"--spare-devices" 的值设置为相应的数目。
4、添加raid5 到RAID配置文件/etc/mdadm.conf 并修改
echo DEVICE /dev/sd{f,g,h,i}1 >> /etc/mdadm.conf
mdadm -Evs >> /etc/mdadm.conf
6、建立挂载点并挂载
mkdir /opt/md5
7、写入/etc/fstab,实现开机自动挂载
然后reboot 测试开机是否自动挂载,raid5 创建完毕。
七、RAID维护
RAID 做好之后,还需要进行日常的维护操作,比如其中一块物理硬盘损坏,需要进行更换故障磁盘的操作,下面我们将模拟raid5 中磁盘损坏来讲解软RAID 的维护操作。
1、模拟磁盘损坏
当软RAID 检测到某个磁盘有故障时,会自动标记该磁盘为故障磁盘,并停止对故障磁盘的读写操作。
将/dev/sdh1 模拟为出现故障的磁盘,命令如下:
创建测试文件
touch /opt/md5/{1,2,3,4}.txt
2、查看状态
创建RAID 5过程中,设置了一个热备盘,所以当有标记为故障磁盘的时候,热备盘会自动顶替故障磁盘工作,阵列也能够在短时间内实现重建。
其中 "[3/2]" 的第一位数表示阵列所包含的设备数,第二位数表示活动的设备数,因为目前有一个故障设备,所以第二位数为2;
4、移除损坏的磁盘
mdadm /dev/md5 -r /dev/sdh1
5、查看md5状态
6、新加热备磁盘
实际生产中添加新的硬盘,同样需要对新硬盘进行创建分区的操作,这里为了方便,将刚才模拟损坏的硬盘再次新加到raid5 中。
7、 查看raid5 阵列状态
八、向RAID中增加存储硬盘
如果现在已经做好的RAID 空间还是不够用的话,可以向里面增加新的硬盘,来增加RAID 的空间。
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) 并没有变大,这是因为构建没有完成。
构建完毕后的RAID 状态:
4、扩容文件系统
RAID构建完毕后,容量是增加了,但是文件系统还是没有变化,这是需要对文件系统进行扩容。
查看分区情况:
可以看到文件系统已经扩容到15G,测试数据也正常,没丢失,到此新增物理硬盘成功。
从上图可以看到,重启系统后,一切正常,Linux下配置软RAID成功。