Linux之磁盘冗余阵列

RAID: 是Redundant Arrays of Independent Disk的缩写,即独立磁盘冗余阵列。也就是通过一些技术将多个磁盘组合成一个磁盘组,逻辑上看就是一个较大的磁盘设备。除了存储的功能,还可以根据不同RAID级别提供数据冗余备份的功能。

一 mdadm命令,用于管理RAID工具

-C 或者 --create:建立一个新阵列
-A: 机会磁盘阵列
-D 或者 --detail:打印阵列设备详细信息
-s或者–scan:扫描配置文件或者/proc/mdstat得到阵列缺失信息
-S: 停止磁盘阵列
-f:将设备状态定位故障
-a 或者 --add:添加设备到阵列
-v:显示详细信息
-r: 移除设备
-l 或者 --level: 设定磁盘阵列的级别
-n 或者–raid-devices: 指定阵列成员(分区/磁盘)的数量
-x或者–spare-devicds: 指定阵列备用盘数量
-c或者–chunk: 设定阵列的chunk大小,默认为4k
-G或者–grow: 改变阵型大小或者形态

热备份盘(hot spare or hot standby driver): 为了加强容错的功能以及使系统在磁盘故障的情况下能够迅速的重建数据,以维持系统的性能,一般的磁盘阵列系统都可以使用热备份功能。

chunk: RAID存储数据的时候每一个数据段的大小。4k,64k等
如果chunk过大可能数据读写都限于一块磁盘上,如果过小,可能引发大量的读写操作,不能发挥并发性能,占用过多的控制器总线带宽。所以应该选择合适的chunk大小。

二 RAID-0(等量模式,stripe)

核心思想:
这种模式首先会将磁盘分割成等量的chunk(区块),比如4KB,64KB等。然后当文件要写入RAID时,该文件也会依据chunk大小切分好,然后再依次序将文件数据放入磁盘里。
是所有阵列级别中实现思路最简单的,而且也是读写性能最好的。那么RAID-0的容量就是各个磁盘组合而成的容量之和。
在这里插入图片描述

如上图所示,你的数据为100M要写入磁盘阵列,那么而每一个磁盘被分配25M。但是一旦某一个磁盘损坏了,那么文件数据也就损坏了,那么整个文件就没法读了。

RAID-0的特性:
#1 至少要有2块磁盘
#2 总容量是所有磁盘的总和,即磁盘容量利用率是100%
#3 数据等量分布或者也叫条带式分布,每一个磁盘上的数据量几乎差不多
#4 没有数据冗余或者备份,当一块磁盘损坏,那么整个RAID就几乎不可用
#5 读写性能最好,尤其是当磁盘都是相同型号和容量的时候。

2.1 创建RAID-0

用相同的磁盘创建2个主分区,模拟2块磁盘。
fdisk /dev/sdb
mdadm -C -v /dev/md0 -l 0 -n 2 /dev/sdb1 /dev/sdb2
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
这样磁盘阵列RAID0就启动了,设备就是/dev/md0。
查看磁盘阵列详细信息:
在这里插入图片描述

2.2 导出配置文件

mdadm -Ds > /etc/madam.conf
[root@integrate-01 ~]# cat !$
cat /etc/madam.conf
ARRAY /dev/md0 metadata=1.2 name=integrate-01:0 UUID=84762f0a:b88e860a:5fded0d9:55b664a0

2.3 格式化并挂载到指定目录

fdisk /dev/md0
[root@integrate-01 ~]# ll /dev/md0*
brw-rw---- 1 root disk 9, 0 Dec 31 08:13 /dev/md0
brw-rw---- 1 root disk 259, 0 Dec 31 08:13 /dev/md0p1
然后进行格式化:
mkfs.ext4 /dev/md0p1
在这里插入图片描述

挂载到/raid0
mkdir /raid0
mount /dev/md0p1 /raid0

.2.4 修改/etc/fstab永久挂载,即开机挂载

vim /etc/fstab,添加:
/dev/md0p1 /raid0 ext4 defaults 0 0

三 RAID-1(镜像模式,mirror)

核心思想:
镜像模式是指将2个或以上的磁盘组合成一个较大的逻辑磁盘设备,然后同一份数据同时保存在两个磁盘上,即允许数据冗余,这样就算一个磁盘坏了,另外一个磁盘的数据还在。
在这里插入图片描述

RAID-1特性:
#1 至少需要2块或以上的磁盘
#2 总容量是全部磁盘容量的一般,,即磁盘容量利用率是50%
#3 数据有备份,当一个磁盘损坏了还可以从另外一个磁盘读取
#4 写的性能不好,但是读的性能还可以

3.1 创建RAID-1 并且添加1G的热备盘

创建三个分区:fdisk /dev/sdc
创建完毕之后,查看一下
fdisk -l /dev/sdc

在这里插入图片描述

创建RAID-1:
mdadm -C -v /dev/md1 -l 1 -n 2 -x 1 /dev/sdc{1,2,3}
在这里插入图片描述

查看磁盘阵列状况:cat /proc/mdstat
在这里插入图片描述

生成配置文件:
mdadm -Ds > /etc/mdadm.conf
在这里插入图片描述

开始磁盘阵列的分区:
fdisk /dev/md1
在这里插入图片描述

mkfs.ext4 /dev/md1p1
mkdir /raid1
mount /dev/md1p1 /raid1/

3.2 模拟磁盘故障,自动顶替故障盘

可以监控磁盘阵列状况
watch -n 1 cat /proc/mdstat
模拟故障:
mdadm -f /dev/md1 /dev/sdc1
看到磁盘阵列的状况:
在这里插入图片描述

即备份盘消失了,顶替了sdc1,而sdc1则是出现了故障的盘

3.3 卸载阵列并删除阵列

将/dev/sdc1 从磁盘阵列/dev/md1中删除
mdadm -r /dev/md1 /dev/sdc1
cat /proc/mdstat
看一看出sdc1已经移除了
在这里插入图片描述

四 RAID-5

数据类似RAID0进行等量模式写入,不过在写入的过程中,每一次写入,会进行数据奇偶校验,即异或运算,然后这个值会放入一个磁盘中,每次总有一个磁盘来记录这个校验值。同时兼顾了读性能和数据冗余的特点。
什么是数据奇偶校验呢?
说白了就是异或运算:比如
3 7 10 parity?
3的二进制是0011
7的二进制是0111
10的二进制是1010
现在进行异或运算,即0011 xor 0111 xor 1010 = 1110
如果7所在磁盘算坏,那么就可以根据这个异或值推算出来这个值是0111。
在这里插入图片描述

RAID-5特性:
#1 至少需要三块磁盘
#2 总容量=(磁盘数量-1)* 容量,前提是容量相等。所以磁盘的利用率是(n-1)/n
#3 因为数据校验,可以提供数据冗余的功能,但是只支持一块磁盘的损坏。RAID 6原理跟RAID 5 差不多,可以支持2块磁盘损坏
#4 读的性能还行,跟RAID0差不多,但是写的性能并没有提升,因为要计算校验值

4.1 创建RAID-5,添加1G热备盘

创建3个主分区,1个扩展分区,然后2个逻辑分区,当三个主分区都给1G,然后剩余的都分给扩展分区
注意:一个Linux系统可以有至少一个最多4个主分区,扩展分区可以没有,最多一个。但是主分区+扩展分区数量不能超过4个,剩余的都是逻辑分区,硬盘的容量=主分区的容量+扩展分区的容量
扩展分区的容量=各个逻辑分区的容量之和。
fdisk /dev/sdd
在这里插入图片描述

创建磁盘阵列/dev/md5,
mdadm -C -v /dev/md5 -l 5 -n 3 -c 32 -x 1 /dev/sdd{1,2,3,5}
提示我扩展分区不适合这个阵列,所以我换成了逻辑分区
cat /proc/mdstat
在这里插入图片描述

4.2 停止和激活磁盘阵列

停止磁盘阵列:
mdadm -S /dev/md5

激活磁盘阵列:

4.3 添加

mdadm -a /dev/md5 /dev/sdd6

五 RAID-10创建

核心思想:
由于RAID-0读写性能不错,但是没有备份,RAID-1虽有备份,但是性能不佳,所以就有了结合这两者的一个RAID方案即RAID10.
底层由磁盘组成2个或以上RAID-1,然后组成的RAID-1阵列再组成RAID-0.
在这里插入图片描述

RAID-10特点:
#1 应该至少需要4块磁盘
#2 总容量 = 所有磁盘的总容量的一半,即磁盘利用率50%
#3 数据冗余,性能提升
在这里插入图片描述

fdisk /dev/sdf
查看分区情况
fdisk -l /dev/sdf

先创建底层的2个RAID-1
mdadm -C -v /dev/md11 -l 1 -n 2 /dev/sdf{1,2}
mdadm -C -v /dev/md12 -l 1 -n 2 /dev/sdf{3,4}

然后创建上层RAID-0
mdadm -C -v /dev/md10 -l 0 -n 2 /dev/md1{1,2}
mdadm -Ds > /etc/mdadm.conf

六 删除磁盘阵列

首先:如果已经挂载则先卸载
umount /dev/md1 /mnt
其次:停止RAID设备
mdadm -Ss(所有)
最后:删除RAID配置文件
rm -rf /etc/mdadm.conf

清除物理磁盘中的RAID标识
mdadm --misc --zero-superblock /dev/sdf{5,6}

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莫言静好、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值