RAID 5 是一种存储性能、数据安全和存储成本兼顾的存储解决方案。 RAID 5可以理解为是RAID 0和RAID 1的折中方案。RAID 5可以为系统提供数据安全保障,但保障程度要比Mirror低而磁盘空间利用率要比Mirror高。RAID 5具有和RAID 0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较低,是运用较多的一种解决方案
RAID5 至少需要3块硬盘:
硬盘 | 分区 | 分区格式 | 大小 |
sdb | sdb1 | fd | 5G |
sdc | sdc1 | fd | 5G |
sdd | sdd1 | fd | 5G |
sde | sde1 | fd | 5G |
sdf | sdf1 | fd | 5G |
一、创建 RAID5
1、安装
yum -y install mdadm
2、创建 RAID1
# 创建3个活动盘,一个热备盘
mdadm -C /dev/md5 -l5 -n3 -x1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
# 显示
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array? Y # 输入Y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
注解:
选项 | 全称 | 功能 |
C | --create | 创建阵列 |
-l | --level | 阵列模式 |
-n | --reid-devices | 阵列中活动磁盘的数目 |
-x | -spare-devices=N | 表示当前阵列中热备盘有 N 块(自定义 N 数量即可) |
3、配置信息
# 配置磁盘设备文件名
echo "DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1" >> /etc/mdadm.conf
# 配置软RAID信息
mdadm -Ds /dev/md5 >> /etc/mdadm.conf
4、查看阵列状态
cat /proc/mdstat
# 显示
Personalities : [raid6] [raid5] [raid4]
md5 : active raid5 sde1[3](S) sdd1[4] sdc1[1] sdb1[0]
10473472 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
unused devices: <none>
5、查看阵列详细
mdadm -D /dev/md5
# 显示
/dev/md5:
Version : 1.2
Creation Time : Sun Feb 19 15:40:26 2023
Raid Level : raid5
Array Size : 10473472 (9.99 GiB 10.72 GB)
Used Dev Size : 5236736 (4.99 GiB 5.36 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Sun Feb 19 15:51:57 2023
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : kvm110:5 (local to host kvm110)
UUID : c971f791:081aa0e7:ce94d8e9:66be1f53
Events : 19
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
4 8 49 2 active sync /dev/sdd1
3 8 65 - spare /dev/sde1
注解:
名称 | 功能 |
Raid Level | 阵列级别 |
Array Size | 阵列容量大小 |
Raid Devices | RAID 成员的个数 |
Total Devices | RAID 中下属成员的总计个数,因为还有冗余硬盘或分区,也就是 spare |
State | 包含三个状态(clean 表示正常,degraded 表示有问题,recovering 表示正在恢复或构建) |
Active Devices | 被激活的 RAID 成员个数 |
Working Devices | 正常工作的 RAID 成员个数 |
Failed Devices | 出问题的 RAID 成员 |
Spare Devices | 备用 RAID 成员个数(会自动替换出现问题的成员) |
UUID | RAID 的 UUID 值,在系统中是唯一的 |
6、挂载系统
# 格式化
mkfs.xfs -f /dev/md5
# 创建挂载点
mkdir /raid5
# 挂载
mount /dev/md5 /raid5/
# 开机永久挂载
echo "/dev/md5 /raid5 xfs defaults 0 0" >> /etc/fstab
7、查看系统,成功挂载,raid5大小为10G
[root@kvm110 ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 17G 1.6G 16G 9% /
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 12M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 146M 869M 15% /boot
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/md5 xfs 10G 33M 10G 1% /raid5
8、查看分区
[root@kvm110 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 5G 0 disk
└─sdb1 8:17 0 5G 0 part
└─md5 9:5 0 10G 0 raid5 /raid5
sdc 8:32 0 5G 0 disk
└─sdc1 8:33 0 5G 0 part
└─md5 9:5 0 10G 0 raid5 /raid5
sdd 8:48 0 5G 0 disk
└─sdd1 8:49 0 5G 0 part
└─md5 9:5 0 10G 0 raid5 /raid5
sde 8:64 0 5G 0 disk
└─sde1 8:65 0 5G 0 part
└─md5 9:5 0 10G 0 raid5 /raid5
sdf 8:64 0 5G 0 disk
└─sdf1 8:65 0 5G 0 part
sr0 11:0 1 918M 0 rom
9、我们往 raid5 写入一点数据
dd if=/dev/zero of=/raid5/test.img bs=1M count=60
10、重启系统
shutdown -r now
二、模拟硬盘坏了
1、我们假设 sdb 硬盘坏了
mdadm /dev/md5 -f /dev/sdb1
# 显示
mdadm: set /dev/sdb1 faulty in /dev/md5
2、查看阵列,sde 热备盘自动补上
mdadm -D /dev/md5
# 显示
/dev/md5:
Version : 1.2
Creation Time : Sun Feb 19 15:40:26 2023
Raid Level : raid5
Array Size : 10473472 (9.99 GiB 10.72 GB)
Used Dev Size : 5236736 (4.99 GiB 5.36 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Sun Feb 19 16:17:08 2023
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 1
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : kvm110:5 (local to host kvm110)
UUID : c971f791:081aa0e7:ce94d8e9:66be1f53
Events : 40
Number Major Minor RaidDevice State
3 8 65 0 active sync /dev/sde1
1 8 33 1 active sync /dev/sdc1
4 8 49 2 active sync /dev/sdd1
0 8 17 - faulty /dev/sdb1
3、手动移除坏的硬盘,这里如果重启系统,也会把坏的硬盘自动移除的
mdadm /dev/md5 -r /dev/sdb1
# 显示
mdadm: hot removed /dev/sdb1 from /dev/md5
# 再次查看阵列
mdadm -D /dev/md5
# 显示
/dev/md1:
......
Number Major Minor RaidDevice State
3 8 65 0 active sync /dev/sde1
1 8 33 1 active sync /dev/sdc1
4 8 49 2 active sync /dev/sdd1
三、阵列扩容
1、往阵列中加入2个新的硬盘
mdadm /dev/md5 -a /dev/sdb1
mdadm /dev/md5 -a /dev/sdf1
2、查看,默认加入进的都是热备盘
mdadm -D /dev/md5
# 显示
/dev/md5:
......
Number Major Minor RaidDevice State
5 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
4 8 49 2 active sync /dev/sdd1
3 8 81 - spare /dev/sdf1
6 8 65 - spare /dev/sde1
3、热备盘转为活动盘
mdadm -G /dev/md5 -n4
4、查看
mdadm -D /dev/md5
# 显示
/dev/md5:
Version : 1.2
Creation Time : Sun Feb 19 15:40:26 2023
Raid Level : raid5
Array Size : 15710208 (14.98 GiB 16.09 GB) # 之前是10G,现在是15G
Used Dev Size : 5236736 (4.99 GiB 5.36 GB)
Raid Devices : 4
Total Devices : 5
Persistence : Superblock is persistent
Update Time : Sun Feb 19 16:31:03 2023
State : clean
Active Devices : 4
Working Devices : 5
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : kvm110:5 (local to host kvm110)
UUID : c971f791:081aa0e7:ce94d8e9:66be1f53
Events : 90
Number Major Minor RaidDevice State
5 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
4 8 49 2 active sync /dev/sdd1
6 8 65 3 active sync /dev/sde1
3 8 81 - spare /dev/sdf1
6、扩容文件系统
xfs_growfs /dev/md5
# 查看
df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 17G 1.6G 16G 9% /
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 12M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 146M 869M 15% /boot
/dev/md5 xfs 15G 94M 15G 1% /raid5
tmpfs tmpfs 378M 0 378M 0% /run/user/0
7、更新配置文件
echo "DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1" > /etc/mdadm.conf
mdadm -Ds /dev/md5 >> /etc/mdadm.conf
四、如何删除 RAID5
1、取消挂载
umount /raid5
2、停止阵列
mdadm --stop /dev/md5
# 如何启用一个阵列
mdadm --assemble /dev/md5
3、清除阵列超级块信息
mdadm --zero-superblock /dev/sd[b-e]1
4、删除永久挂载信息,不然系统就起不来了
# 注释掉
# /dev/md5 /raid5 xfs defaults 0 0"