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