rockylinux8.9 做软RAID
前言
参考链接:https://blog.csdn.net/u011130086/article/details/119172119
有台服务器没有 RAID 卡,虽然数据不太重要,但是真要丢失了还是会存在一些麻烦。因此考虑用 软 RAID 的方式实现数据的冗余。
制作过程
环境介绍
首先,在虚拟机上模拟这个过程,环境如下:
OS: CentOS Linux release 7.9.2009
Kernel: 3.10.0-1160.el7.x86_64
Raid disk:
vdb 252:16 0 10G 0 disk
vdc 252:32 0 10G 0 disk
安装mdadm
dnf install -y mdadm
RAID-1
镜像阵列。
优点:
- 数据可靠性高,一块盘坏了不影响数据的完整性;
- 读取性能较好(可并行读)
缺点:
- 容量利用率只有 50%
- 写入速度略低(需同步写入两块硬盘)
适用场景:操作系统盘、日志盘、小型数据库
配置
- 创建raid1
~ > mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda /dev/sdb
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? yes
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
- 查看raid同步过程
~ > cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb[1] sda[0]
10476544 blocks super 1.2 [2/2] [UU]
[=====>...............] resync = 28.6% (3001344/10476544) finish=0.5min speed=214381K/sec
unused devices: <none>
- 查看raid详细信息
~ > mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Jun 20 16:05:12 2025
Raid Level : raid1
Array Size : 10476544 (9.99 GiB 10.73 GB)
Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Fri Jun 20 16:06:04 2025
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 8945bbe8:0066ed77:1c7883c1:38dc411e
Events : 17
Number Major Minor RaidDevice State
0 8 0 0 active sync /dev/sda
1 8 16 1 active sync /dev/sdb
- 查看磁盘信息,并挂载
#查看磁盘信息
~ > lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 10G 0 disk
└─md0 9:0 0 10G 0 raid1
sdb 8:16 0 10G 0 disk
└─md0 9:0 0 10G 0 raid1
sdc 8:32 0 10G 0 disk
sr0 11:0 1 2.4G 0 rom
#格式化文件系统
~ > mkfs.xfs /dev/md0
#挂载
~ > mkdir /data
~ > mount /dev/md0 /data/
#永久挂载
~ > blkid /dev/md0
~ > vim /etc/fstab
~ > mount -a
- 重启进行测试
~ > reboot
#查看挂载
~ > lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 10G 0 disk
└─md0 9:0 0 10G 0 raid1 /data
sdb 8:16 0 10G 0 disk
└─md0 9:0 0 10G 0 raid1 /data
sdc 8:32 0 10G 0 disk
测试
将其中一块硬盘设置为失败
#查看正常状态
~ > mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Jun 20 16:05:12 2025
Raid Level : raid1
Array Size : 10476544 (9.99 GiB 10.73 GB)
Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Fri Jun 20 16:11:36 2025
State : clean #注意看这里的状态,正常情况下是 clean 状态。
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 8945bbe8:0066ed77:1c7883c1:38dc411e
Events : 17
Number Major Minor RaidDevice State
0 8 0 0 active sync /dev/sda
1 8 16 1 active sync /dev/sdb
#将一块硬盘设置为fail
~ > mdadm /dev/md0 --fail /dev/sda
mdadm: set /dev/sda faulty in /dev/md0
#再次查看raid信息
~ > mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Jun 20 16:05:12 2025
Raid Level : raid1
Array Size : 10476544 (9.99 GiB 10.73 GB)
Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Fri Jun 20 16:17:06 2025
State : clean, degraded #这里状态还是clean,但是又多了一个状态:degraded(被降级的)
Active Devices : 1
Working Devices : 1
Failed Devices : 1
Spare Devices : 0
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 8945bbe8:0066ed77:1c7883c1:38dc411e
Events : 19
Number Major Minor RaidDevice State
- 0 0 0 removed
1 8 16 1 active sync /dev/sdb
0 8 0 - faulty /dev/sda # sda的状态为故障的
#因为是raid1,快掉一块硬盘依然可用
~ > touch /data/abc
#还可以通过命令将sda直接删除
~ > mdadm /dev/md0 --remove /dev/sda
mdadm: hot removed /dev/sda from /dev/md0
~ > mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Jun 20 16:05:12 2025
Raid Level : raid1
Array Size : 10476544 (9.99 GiB 10.73 GB)
Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
Raid Devices : 2
Total Devices : 1
Persistence : Superblock is persistent
Update Time : Fri Jun 20 16:19:12 2025
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 8945bbe8:0066ed77:1c7883c1:38dc411e
Events : 24
Number Major Minor RaidDevice State
- 0 0 0 removed
1 8 16 1 active sync /dev/sdb
#将sda重新加入raid1
~ > mdadm /dev/md0 --add /dev/sda
mdadm: added /dev/sda
~ > mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Jun 20 16:05:12 2025
Raid Level : raid1
Array Size : 10476544 (9.99 GiB 10.73 GB)
Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Fri Jun 20 16:21:50 2025
State : clean, degraded, recovering
Active Devices : 1
Working Devices : 2
Failed Devices : 0
Spare Devices : 1
Consistency Policy : resync
Rebuild Status : 7% complete
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 8945bbe8:0066ed77:1c7883c1:38dc411e
Events : 31
Number Major Minor RaidDevice State
2 8 0 0 spare rebuilding /dev/sda # 正在重建,这里可以通过 cat /proc/mdstat 查看
1 8 16 1 active sync /dev/sdb
设置热备盘
设置热备盘的意义在于,当raid组中有硬盘故障,热备盘可以直接替换掉组群中故障的硬盘。
#将sdc设置为热备盘
~ > mdadm /dev/md0 --add /dev/sdc
#查看状态
~ > mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Jun 20 16:05:12 2025
Raid Level : raid1
Array Size : 10476544 (9.99 GiB 10.73 GB)
Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
Raid Devices : 2
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Fri Jun 20 16:23:53 2025
State : clean
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 8945bbe8:0066ed77:1c7883c1:38dc411e
Events : 48
Number Major Minor RaidDevice State
2 8 0 0 active sync /dev/sda
1 8 16 1 active sync /dev/sdb
3 8 32 - spare /dev/sdc
模拟故障测试
#将sdb设置为故障
~ > mdadm /dev/md0 --fail /dev/sdb
#查看raid组
~ > mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Jun 20 16:05:12 2025
Raid Level : raid1
Array Size : 10476544 (9.99 GiB 10.73 GB)
Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
Raid Devices : 2
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Fri Jun 20 16:26:26 2025
State : clean, degraded, recovering
Active Devices : 1
Working Devices : 2
Failed Devices : 1
Spare Devices : 1
Consistency Policy : resync
Rebuild Status : 47% complete
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 8945bbe8:0066ed77:1c7883c1:38dc411e
Events : 57
Number Major Minor RaidDevice State
2 8 0 0 active sync /dev/sda
3 8 32 1 spare rebuilding /dev/sdc #sdc作为热备盘直接替换掉故障的sdb,热备生效
1 8 16 - faulty /dev/sdb #设置为故障的
RAID-5
条带+奇偶效验
优点:
- 可容忍1块盘故障
- 高读取性能
- 容量利用率较高(N-1)
缺点:
- 写入性能较差(奇偶效验计算)
- 重建时风险大,IO压力高
适用场景:读多写少的应用,如文件服务器、备份存储
配置
~ > mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sda /dev/sdb /dev/sdc
mdadm: Defaulting to version 1.2 metadata
#查看同步过程
~ > cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md0 : active raid5 sdc[3] sdb[1] sda[0]
20953088 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]
[=>...................] recovery = 7.6% (800896/10476544) finish=0.8min speed=200224K/sec
unused devices: <none>
#同步完成,查看详细信息
~ > mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Jun 20 16:36:10 2025
Raid Level : raid5
Array Size : 20953088 (19.98 GiB 21.46 GB)
Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Fri Jun 20 16:37:03 2025
State : clean #状态为clean可用
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : a28c6471:0b7484eb:e909709c:2f91ca40
Events : 18
Number Major Minor RaidDevice State
0 8 0 0 active sync /dev/sda
1 8 16 1 active sync /dev/sdb
3 8 32 2 active sync /dev/sdc
#格式化文件系统
~ > mkfs.xfs /dev/md0 -f
#挂载
~ > mount /dev/md0 /data/
~ > lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 10G 0 disk
└─md0 9:0 0 20G 0 raid5 /data #这里也可以看到是raid5
sdb 8:16 0 10G 0 disk
└─md0 9:0 0 20G 0 raid5 /data
sdc 8:32 0 10G 0 disk
└─md0 9:0 0 20G 0 raid5 /data
测试
#将sdc设置为故障
~ > mdadm /dev/md0 --fail /dev/sdc
mdadm: set /dev/sdc faulty in /dev/md0
#查看raid信息
~ > mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Jun 20 16:36:10 2025
Raid Level : raid5
Array Size : 20953088 (19.98 GiB 21.46 GB)
Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Fri Jun 20 16:40:53 2025
State : clean, degraded #新增了一个降级的状态,但是raid依然可用,符合raid5
Active Devices : 2
Working Devices : 2
Failed Devices : 1
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : a28c6471:0b7484eb:e909709c:2f91ca40
Events : 20
Number Major Minor RaidDevice State
0 8 0 0 active sync /dev/sda
1 8 16 1 active sync /dev/sdb
- 0 0 2 removed
3 8 32 - faulty /dev/sdc
#将sdc添加到raid5中,要添加首先要删除
~ > mdadm /dev/md0 --remove /dev/sdc
mdadm: hot removed /dev/sdc from /dev/md0
#添加sdc到raid5中
~ > mdadm /dev/md0 --add /dev/sdc
mdadm: added /dev/sdc
#查看raid信息
~ > mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Jun 20 16:36:10 2025
Raid Level : raid5
Array Size : 20953088 (19.98 GiB 21.46 GB)
Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Fri Jun 20 16:42:12 2025
State : clean, degraded, recovering # recovering正在恢复状态
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Rebuild Status : 5% complete
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : a28c6471:0b7484eb:e909709c:2f91ca40
Events : 23
Number Major Minor RaidDevice State
0 8 0 0 active sync /dev/sda
1 8 16 1 active sync /dev/sdb
3 8 32 2 spare rebuilding /dev/sdc #这里可以通过 cat /proc/mdstat 查看进度
RAID10
镜像的条带,raid10 拆解来看,raid1 + raid0 的组合。
优点:
- 高性能(raid0)+ 高冗余(raid1)
- 可容忍每组镜像中的1块磁盘损坏
缺点:
- 仅50%容量利用率
- 至少需要4块硬盘
适用场景:数据库、虚拟化平台、高性能应用
配置
#创建raid10
~ > mdadm --create /dev/md0 --level=10 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd
#查看同步过程
~ > cat /proc/mdstat
Personalities : [raid10]
md0 : active raid10 sdd[3] sdc[2] sdb[1] sda[0]
20953088 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
[=========>...........] resync = 46.0% (9651968/20953088) finish=0.9min speed=200930K/sec
unused devices: <none>
#同步完成,查看详细信息
~ > mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Jun 20 16:54:11 2025
Raid Level : raid10
Array Size : 20953088 (19.98 GiB 21.46 GB)
Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Fri Jun 20 16:55:56 2025
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : c2abec6c:ce740d34:e3f92c91:dcd0856c
Events : 17
Number Major Minor RaidDevice State
0 8 0 0 active sync set-A /dev/sda
1 8 16 1 active sync set-B /dev/sdb
2 8 32 2 active sync set-A /dev/sdc
3 8 48 3 active sync set-B /dev/sdd
#格式化文件系统
~ > mkfs.xfs /dev/md0 -f
#挂载
~ > mount /dev/md0 /data/
测试
Number Major Minor RaidDevice State
0 8 0 0 active sync set-A /dev/sda
1 8 16 1 active sync set-B /dev/sdb
2 8 32 2 active sync set-A /dev/sdc
3 8 48 3 active sync set-B /dev/sdd
上面是 raid10 的磁盘,注意: active sync set-A ,A-B为一组raid1 因此在raid10中,A-B必须有一个为活动的状态。
#将sda设置为故障
~ > mdadm /dev/md0 --fail /dev/sda
mdadm: set /dev/sda faulty in /dev/md0
#查看raid详细信息
~ > mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Jun 20 16:54:11 2025
Raid Level : raid10
Array Size : 20953088 (19.98 GiB 21.46 GB)
Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Fri Jun 20 17:39:30 2025
State : clean, degraded #新增了降级的状态
Active Devices : 3
Working Devices : 3
Failed Devices : 1
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : c2abec6c:ce740d34:e3f92c91:dcd0856c
Events : 19
Number Major Minor RaidDevice State
- 0 0 0 removed
1 8 16 1 active sync set-B /dev/sdb
2 8 32 2 active sync set-A /dev/sdc
3 8 48 3 active sync set-B /dev/sdd
0 8 0 - faulty /dev/sda # sda已经标记为故障状态
#目前raid组已经可用
~ > touch /data/abc
~ > ls /data/
abc
#再次将sdc标记为故障
~ > mdadm /dev/md0 --fail /dev/sdc
mdadm: set /dev/sdc faulty in /dev/md0
#查看raid10
~ > mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Jun 20 16:54:11 2025
Raid Level : raid10
Array Size : 20953088 (19.98 GiB 21.46 GB)
Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Fri Jun 20 17:52:33 2025
State : clean, degraded #状态依然是降级的,只要有clean,则表示raid10依然可用。
Active Devices : 2
Working Devices : 2
Failed Devices : 2
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : c2abec6c:ce740d34:e3f92c91:dcd0856c
Events : 31
Number Major Minor RaidDevice State
- 0 0 0 removed
1 8 16 1 active sync set-B /dev/sdb
- 0 0 2 removed
3 8 48 3 active sync set-B /dev/sdd
0 8 0 - faulty /dev/sda
2 8 32 - faulty /dev/sdc
#测试是否可用
~ > touch /data/hukey
~ > ls /data/
abc hukey
#再次尝试将sdb设置为故障状态
~ > mdadm /dev/md0 --fail /dev/sdb
mdadm: Cannot remove /dev/sdb from /dev/md0, array will be failed.
这里给的提示已经很明确了, 如果将 sdb 设置为故障,raid10组将会失败,数据会丢失。
热备盘的配置和RAID1中提到的一致,可自行进行测试。

浙公网安备 33010602011771号