RAID 磁盘阵列

发布时间 2023-05-10 02:42:18作者: m_zhuang

一、RAID 介绍

RAID 中文简称为独立冗余磁盘阵列,其是将独立的物理硬盘按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而得到比单个硬盘更高的存储性能和提供数据备份技术。

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

常用的RAID级别有:RAID0、RAID1、DRAD5、RAID6、RAID10(RAID1+0)

1. RAID 0

条带化存储

RAID 0 所需要的硬盘个数为 N(N >= 1)

它是连续以字节为单位分割数据,并行读取/存储多个硬盘,达到高数据传输

没有数据冗余备份,所以当其中一个硬盘失效时会影响所有数据

不可以将其用作数据安全性高的场合

2. RAID 1

镜像存储

RAID 1 所需要的硬盘个数是偶数个

每两个硬盘间相互备份,当数据繁忙时可直接读取镜像硬盘中的数据

所以RAID 1 的读取速度高,但写入数据速度较低

当源硬盘失效时镜像硬盘可直接代替源硬盘工作

3. RAID 5

RAID 5 所需硬盘数为 N(N >= 3)

硬盘利用率为 (N-1) /N

将一份数据分成 N-1 份,同时还有一份校验数据,把N份数据循环均衡存储进N块硬盘

同时读写,但因为有校验机制的存在,所以读取数据速度高,写入数据速度相对较低

可靠性高,一块硬盘失效,不影响数据

4. RAID 6

RAID 6 所需要的硬盘数为 N(N >= 4)

硬盘利用率为(N - 2)/N

在RAID 5 的基础上增加了独立的奇偶校验信息块

两个独立的奇偶系统使用的是不同的算法,即使两块硬盘同时失效也不会影响数据的使用

相对于 RAID 5 写入数据性能较差

可靠性高,两块硬盘失效,不影响数据

5. RAID 10

先做镜像再做条带(RAID 1 + RAID 0)

RAID 10 所需硬盘个数为 N(N为偶数且 N>=4)

利用率为 N/2

N/2块硬盘同时写入,N块盘同时读取

性能高,可靠性高

还有 RAID 01 ,它与RAID 10 相同,但它是先做条带再做镜像

二、RAID的级别总结

RAID 级别 硬盘数量 硬盘利用率 读性能 写性能 高可用性 特点
RAID 0 N N 100% 追求最大容量和读写速度,坏一块硬盘,数据全部异常
RAID 1 N(偶数) N/2 50% 中等 追求安全,只坏一块硬盘,不影响使用,数据也不影响
RAID 5 N >= 3 (N-1)/N 成本控制前提下,追求最大容量、速度及高可用性,只坏一块硬盘,不影响数据
RAID 6 N >= 4 (N-2)/N 很高 比RAID5安全性高,但写入速度低,可以坏两个硬盘不受影响
RAID 10 N >=4(偶数) N/2 50% 中等 中等 综合RAID0和RAID1的优点,既有速度又有高可用,每个基组可以坏一个硬盘,数据不受影响

三、命令

命令:

mdadm

选项:

选项 作用
-C 创建RAID
-v 显示创建过程信息
-l数字 创建的是RAID的级别,级别数是什么这个数字就是什么
-n数字 硬盘名1 硬盘名2 …… 设置组成磁盘阵列的硬盘,有多少个硬盘,数字就是多少
-x数字 硬盘名2 硬盘名2 …… 设置热备份硬盘,硬盘的个数有多少个硬盘,数字就是多少
-D 查看RAID的信息
设备名 -f 硬盘名 强制损坏磁盘阵列中的硬盘分区
-S 停止RAID
-As 激活RAID
-R 强制启动RAID
-G 设备名 -n数字 -a 硬盘名 向磁盘阵列中添加硬盘,数字=硬盘添加进磁盘阵列后的硬盘总数
--misc --zero-superblock 解除硬盘与RAID的关联

四、实操 RAID 5

主机硬盘情况如下:

1. 磁盘阵列 RAID 5

(1)创建RAID 5

组成磁盘阵列的硬盘为 sdb1、sdc1、sdd1,热备份盘为 sde1

[root@localhost ~]# mdadm -Cv /dev/md5 -l5 -n3 /dev/sd[b-d]1 -x1 /dev/sde1
[root@localhost ~]# mdadm -D /dev/md5


(2)格式化 RAID 5

将 RAID 5 格式化为 xfs 文件系统类型

[root@localhost ~]# mkfs.xfs /dev/md5

(3)挂载 RAID 5

将 RAID 5 挂载至 /data/md5 目录下

[root@localhost ~]# mkdir -p /data/md5
[root@localhost ~]# mount /dev/md5 /data/md5

2. 验证 RAID5 的高可用性

(1)模拟sdb1损坏

当sdb1分区损坏时,验证RAID5 中的数据是否收到影响

[root@localhost ~]# mdadm /dev/md5 -f /dev/sdb1
[root@localhost ~]# mdadm -D /dev/md5
[root@localhost ~]# cd /data/md5/
[root@localhost md5]# touch 1 2 3
[root@localhost md5]# ls


(2)模拟sdb1、sdc1损坏

当RAID5 中的sdb1 和 sdc1分区损坏时,验证RAID5 中的数据是否收到影响

[root@localhost md5]# mdadm -D /dev/md5
[root@localhost md5]# mdadm /dev/md5 -f /dev/sdc1
[root@localhost md5]# mdadm -D /dev/md5
[root@localhost md5]# cd /data/md5
[root@localhost md5]# touch 4 5 6
[root@localhost md5]# ls


(3)模拟sdb1、sdc1、sdd1都损坏

当RAID5 中的sdb1、sdc1、sdd1分区损坏时,验证RAID5 中的数据是否收到影响

[root@localhost md5]# mdadm -D /dev/md5
[root@localhost md5]# mdadm /dev/md5 -f /dev/sdd1
[root@localhost md5]# mdadm -D /dev/md5
[root@localhost md5]# ls
[root@localhost md5]# touch 7 8 9


3. 删除 RAID5

顺序:

解挂载RAID5 ------> 停止运行RAID5 ------> 解除硬盘分区与RAID5的联系

[root@localhost ~]# umount /dev/md5
[root@localhost ~]# df -h
[root@localhost ~]# mdadm -S /dev/md5
[root@localhost ~]# mdadm --misc --zero-superblock /dev/sd[b-d]1
[root@localhost ~]# lsblk

五、实操 RAID 10

主机硬盘情况如下:

1. 磁盘阵列 RAID 10

(1)创建RAID 10

组成磁盘阵列的硬盘为 sdb1、sdc1、sdd1、sde1,热备份盘为 sdf1

[root@localhost ~]# mdadm -Cv /dev/md10 -l10 -n4 /dev/sd[b-e]1 -x1 /dev/sdf1
[root@localhost ~]# mdadm -D /dev/md10

(2)格式化 RAID 10

将RAID 10 格式化为 xfs文件系统类型

[root@localhost ~]# mkfs.xfs /dev/md10

(3)挂载 RAID 10

将 RAID 10 挂载至 /data/md10 目录下

2. 检验 RAID 10 的高可用性

将 RAID 10 中的sdb1、sdc1、sdd1全部破坏,检验是否对RAID 10 中的数据有影响

[root@localhost md10]# touch 1
[root@localhost md10]# ls
[root@localhost md10]# cd
[root@localhost ~]# mdadm /dev/md10 -f /dev/sd[b-d]1
[root@localhost ~]# mdadm -D /dev/md10

3. 删除 RAID 10

删除方法与删除RAID 5一致

六、实操 用LVM创建RAID 5

主机硬盘情况如下:

1. 创建逻辑卷

将sdb1、sdc1、sdd1、sde1都创建成为逻辑卷

[root@localhost ~]# pvcreate /dev/sdb1
[root@localhost ~]# pvcreate /dev/sdc1
[root@localhost ~]# pvcreate /dev/sdd1
[root@localhost ~]# pvcreate /dev/sde1

[root@localhost ~]# vgcreate bvg /dev/sdb1
[root@localhost ~]# vgcreate cvg /dev/sdc1
[root@localhost ~]# vgcreate dvg /dev/sdd1
[root@localhost ~]# vgcreate evg /dev/sde1

[root@localhost ~]# lvcreate -L 9G -n blv bvg
[root@localhost ~]# lvcreate -L 9G -n clv cvg
[root@localhost ~]# lvcreate -L 9G -n dlv dvg
[root@localhost ~]# lvcreate -L 9G -n elv evg




2. 用逻辑卷创建RAID 5

组成磁盘阵列的硬盘为 blv、clv、dlv,热备份盘为 elv

[root@localhost ~]# mdadm -Cv /dev/md5 -l5 -n3 /dev/bvg/blv /dev/cvg/clv /dev/dvg/dlv -x1 /dev/evg/elv
[root@localhost ~]# mdadm -D /dev/md5

3. 格式化 RAID 5

将 RAID 5 格式化为 xfs 文件系统类型

[root@locahost ~]# mkfs.xfs /dev/md5

4. 挂载 RAID 5

将 RAID 5 挂载至 /data/lvmd5 目录下

[root@localhost ~]# mkdir -p /data/lvmd5
[root@localhost ~]# mount /dev/md5 /data/lvmd5/
[root@localhost ~]# df -h

5. 验证 RAID5 的高可用性

与之前一致