前言

一、raid的定义与作用

raid(独立冗余磁盘阵列)。raid技术通过把多个硬盘设备组合成一个容量更大的,安全性更好的磁盘阵列。把数据切割成许多区段后分别放在不同的物理磁盘上,然后利用分散读写技术来提升磁盘阵列整体的性能,同时把多个重要数据的副本同步到不同的物理设备上,从而起到了非常好的数据冗余备份效果。缺点就是磁盘利用率低。

 

二、raid的分类

raid的分类目前来说至少有几十种,这里简单介绍一下最常见的四种,raid0,raid1,raid10,raid5。

 

1、RAID 0

 

RAID 0是最早出现的RAID模式,即Data Stripping数据分条技术。RAID 0是组建磁盘阵列中最简单的一种形式,只需要2块以上的硬盘即可,成本低,可以提高整个磁盘的性能和吞吐量。RAID 0没有提供冗余或错误修复能力,但实现成本是最低的。

 

2、RAID 1

 

RAID 1称为磁盘镜像,原理是把一个磁盘的数据镜像到另一个磁盘上,也就是说数据在写入一块磁盘的同时,会在另一块闲置的磁盘上生成镜像文件,在不影响性能情况下最大限度的保证系统的可靠性和可修复性上,只要系统中任何一对镜像盘中至少有一块磁盘可以使用,甚至可以在一半数量的硬盘出现问题时系统都可以正常运行,当一块硬盘失效时,系统会忽略该硬盘,转而使用剩余的镜像盘读写数据,具备很好的磁盘冗余能力。虽然这样对数据来讲绝对安全,但是成本也会明显增加,磁盘利用率为50%。

 

3、RAID0+1

 

RAID 0+1名称上我们便可以看出是RAID0与RAID1的结合体。在我们单独使用RAID 1也会出现类似单独使用RAID 0那样的问题,即在同一时间内只能向一块磁盘写入数据,不能充分利用所有的资源。为了解决这一问题,我们可以在磁盘镜像中建立带区集。因为这种配置方式综合了带区集和镜像的优势,所以被称为RAID 0+1。把RAID0和RAID1技术结合起来,数据除分布在多个盘上外,每个盘都有其物理镜像盘,提供全冗余能力,允许一个以下磁盘故障,而不影响数据可用性,并具有快速读/写能力。RAID0+1要在磁盘镜像中建立带区集至少4个硬盘。也有一种叫法叫raid10.

 

4、RAID5:分布式奇偶校验的独立磁盘结构
它的奇偶校验码存在于所有磁盘上。RAID5的读出效率很高,写入效率一般,块式的集体访问效率不错。因为奇偶校验码在不同的磁盘上,所以提高了可靠性。但是它对数据传输的并行性解决不好,而且控制器的设计也相当困难。在RAID 5中有“写损失”,即每一次写操作,将产生四个实际的读/写操作,其中两次读旧的数据及奇偶信息,两次写新的数据及奇偶信息。

 

总结:raid0大幅度提升了设备的读写性能,但不具备容错能力。raid1虽然十分注重数据安全,但磁盘利用率太低。raid5就是raid0和raid5的一种折中,既提升了磁盘读写能力,又有一定的容错能力,成本也低。raid10就是raid0和raid1的组合,大幅度提升读写能力,较强的容错能力,成本也较高。一般中小企业用raid5,大企业采用raid10。

 

这里主要介绍raid5的搭建与测试。主要内容:一、添加硬盘。二、对磁盘进行初始化设置。三、搭建raid5。四、raid5的测试。五、raid5的维护。六、mdadm命令总结。

Raid5的搭建

一、 首先添加四块硬盘

 

centos7 ldap 集群 centos7 raid配置_centos7 ldap 集群

centos7 ldap 集群 centos7 raid配置_运维_02

centos7 ldap 集群 centos7 raid配置_数据_03

centos7 ldap 集群 centos7 raid配置_磁盘阵列_04

centos7 ldap 集群 centos7 raid配置_centos7 ldap 集群_05

centos7 ldap 集群 centos7 raid配置_运维_06

 

二、reboot重启并对磁盘进行初始化设置

 

centos7 ldap 集群 centos7 raid配置_centos7 ldap 集群_07

reboot重启

 

centos7 ldap 集群 centos7 raid配置_运维_08

centos7 ldap 集群 centos7 raid配置_数据_09

centos7 ldap 集群 centos7 raid配置_运维_10

centos7 ldap 集群 centos7 raid配置_操作系统_11

centos7 ldap 集群 centos7 raid配置_centos7 ldap 集群_12

 

centos7 ldap 集群 centos7 raid配置_centos7 ldap 集群_13

centos7 ldap 集群 centos7 raid配置_磁盘阵列_14

 

三、搭建raid5

1,yum install -y mdadm  //安装madam (madam是Linux下的raid管理工具)

 

centos7 ldap 集群 centos7 raid配置_磁盘阵列_15

2,mdadm -C /dev/md0 -ayes -l5 -n3 -x1 /dev/sd[b-e]1  //用sdb1,sdc1,sdd1,sde1四块磁盘其中3块创建raid5,名称为md0,另外一块作为热备份。

madam参数说明

-C  --create   创建阵列;

-a  --auto    同意创建设备,如不加此参数时必须先使用mknod 命令来创建一个RAID设备,不过推荐使用-a yes参数一次性创建;

-l   --level   阵列模式,支持的阵列模式有 linear, raid0, raid1, raid4, raid5, raid6, raid10, multipath, faulty, container;

-n     --raid-devices    阵列中活动磁盘的数目,该数目加上备用磁盘的数目应该等于阵列中总的磁盘数目;

 

3,查看raid5状态

cat /proc/mdstat

mdadm -D /dev/md0

 

centos7 ldap 集群 centos7 raid配置_数据_16

centos7 ldap 集群 centos7 raid配置_磁盘阵列_17

4,添加raid5到raid配置文件并做修改

echo 'DEVICE /dev/sd[b-e]1' >>/etc/mdadm.conf

mdadm -Ds >>/etc/mdadm.conf

 

centos7 ldap 集群 centos7 raid配置_centos7 ldap 集群_18

5,格式化磁盘阵列

mkfs.xfs /dev/md0

 

centos7 ldap 集群 centos7 raid配置_运维_19

 

6,建立挂载点并挂载

mkdir /raid5

mount /dev/md0 /raid5/

 

centos7 ldap 集群 centos7 raid配置_centos7 ldap 集群_20

 

7,将挂载写入开机启动项

vi /etc/fstab

 

centos7 ldap 集群 centos7 raid配置_数据_21

 

四,测试raid5

1, 建立文件a.txt 和 b.txt

 

centos7 ldap 集群 centos7 raid配置_操作系统_22

 

2, 模拟其中一块磁盘坏道,我选择让sdb1损坏,然后查看raid阵列信息情况,发现热备份磁盘sde1自动替换已损坏了的sdb1。并且资料无损失

 

centos7 ldap 集群 centos7 raid配置_操作系统_23

centos7 ldap 集群 centos7 raid配置_操作系统_24

centos7 ldap 集群 centos7 raid配置_操作系统_25

 

3, 移除已损坏的磁盘,添加一块新硬盘作为热备份盘,并查看数据情况

mdadm /dev/md0 -r /dev/sdb1

 

centos7 ldap 集群 centos7 raid配置_操作系统_26

centos7 ldap 集群 centos7 raid配置_运维_27

注意:在实际中sdb1已经是另一块完好的硬盘了。不是说之前损坏的那块移除再添加就好了。

 

centos7 ldap 集群 centos7 raid配置_centos7 ldap 集群_28

 

五,维护raid5

1, 向raid5中添加存储硬盘

mdadm /dev/md0 -a /dev/sdf1

 

centos7 ldap 集群 centos7 raid配置_数据_29

由于默认是添加成热备盘,得把热备盘改为活动盘

mdadm /dev/md0 -G -n4  //-G改变raid中的活动盘的数量,一般和-n连用。-n用来指定raid中活动盘的数量。最好保证要有足够的热备盘添加。

 

centos7 ldap 集群 centos7 raid配置_磁盘阵列_30

查看状态,添加完成

 

centos7 ldap 集群 centos7 raid配置_数据_31

2,查看文件系统发现总容量未变

 

centos7 ldap 集群 centos7 raid配置_运维_32

此时需要对文件系统扩容

resize2fs /dev/md0  //resizefx适用于ext3,ext4等文件系统不适用于xfs文件系统

 

centos7 ldap 集群 centos7 raid配置_操作系统_33

xfs_growfs /dev/md0  //xfs_growfs对xfs文件系统进行扩容

 

centos7 ldap 集群 centos7 raid配置_centos7 ldap 集群_34

 

关于mdadm的相关参数汇总

-C  --create   创建阵列;

-a  --auto    同意创建设备,如不加此参数时必须先使用mknod 命令来创建一个RAID设备,不过推荐使用-a yes参数一次性创建;

-l   --level   阵列模式,支持的阵列模式有 linear, raid0, raid1, raid4, raid5, raid6, raid10, multipath, faulty, container;

-n     --raid-devices    阵列中活动磁盘的数目,该数目加上备用磁盘的数目应该等于阵列中总的磁盘数目;

-x    热备盘数目

实例:mdadm -C /dev/md0 -ayes -l5 -n3 -x1 /dev/sd[b-e]1  //用sdb1,sdc1,sdd1,sde1四块磁盘其中3块创建raid5,名称为md0,另外一块作为热备份。

-D  --detail  查看raid设备的详细信息

-f  使一块raid磁盘故障

-a  增加一块raid磁盘

-r  移除一块故障的raid磁盘

-s  --scan:扫描配置文件或 /proc/mdstat以搜寻丢失的信息

-S  停止raid磁盘阵列

实例:

mdadm -Ds >>/etc/mdadm.conf
mdadm /dev/md0 -f /dev/sdb1
mdadm /dev/md0 -r /dev/sdb1
mdadm /dev/md0 -a /dev/sdf1
mdadm /dev/md0 -G -n4  //-G改变raid中的活动盘的数量,一般和-n连用。-n用来指定raid中活动盘的数量。最好保证要有足够的热备盘添加。