软Raid配置

1.硬 RAID 与软 RAID区分

磁盘阵列冗余技术
它是由很多独立的磁盘组成一个容量巨大的磁盘组,然后利用个别磁盘提供数据所产生的一个加速效果,提升整个磁盘系统性能,利用这项技术,能够将数据切割为许多个区段,分别存储在各个硬盘上,磁盘阵列还能利用检查的概念,Part Check 然后在数组中检查任意一个硬盘故障的时候,我仍然可以读取数据,在数据重构的时候,再将数据通过计算之后,加入到新的硬盘中,这就是磁盘阵列冗余技术
软 RAID。
软 RAID 通过软件的形式去安装,去使用,软件是其他程序员写好的,我们可以直接使用,叫软 RAID。
硬 RAID
硬 RAID 而是提供 RAID 卡,它是一块实实在在存在的硬件,能够实现与软 RAID 一样的效果,硬 RAID 效果比软 RAID 效果佳,硬 RAID 是一种把多块独立的物理硬盘按不同方式组合起来形成一个逻辑硬盘,从而提供比单个硬盘有着更高的性能和提供数据冗余的技术,叫做 硬 RAID。
RAID常见组合

  • RAID 0
  • RAID 1
  • RAID 5
  • RAID 10
    软 RAID 的区分
    互联网公司一般都会购买 RAID 卡(硬 RAID)
    -数据冗余性能(也就是数据安全性能)从好到坏的排序:RAID 1 RAID 10 RAID 5 RAID 0
  • 数据读写性能从好到坏:RAID 0 RAID 10 RAID 5 RAID 1
    -成本从高到低:RAID 0 RAID 10 RAID 1 RAID 5
  • 硬 RAID 与软 RAID 的区别
    -软件 RAID 会额外的消耗 CPU 资源,造成服务器压力。
    -硬 RAID 更加稳定,并且 软件 RAID 可能会造成磁盘发热过量,造成损坏。公司一般都使用 硬件 RAID
    -硬 RAID 兼容性更好,软 RAID 兼容性依赖于操作系统,可能会出问题。
    -硬 RAID 完胜。

2.配置软Raid(注意应先做软Raid再做LVM)

今天我们来配置软Raid:

2.1准备

添加一个20G的虚拟硬盘,分成10个2G的分区(使用fdisk,上期文章有讲)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[root@192 ~]# fdisk /dev/sdb

欢迎使用 fdisk (util-linux 2.39.1)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

设备不包含可识别的分区表。
Created a new DOS (MBR) disklabel with disk identifier 0x8cbd7811.

命令(输入 m 获取帮助):n
分区类型
p 主分区 (0个主分区,0个扩展分区,4空闲)
e 扩展分区 (逻辑分区容器)
选择 (默认 p):p
分区号 (1-4, 默认 1):
第一个扇区 (2048-41943039, 默认 2048):
最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (2048-41943039, 默认 41943039): +10G

创建了一个新分区 1,类型为“Linux”,大小为 10 GiB。

命令(输入 m 获取帮助):n
分区类型
p 主分区 (1个主分区,0个扩展分区,3空闲)
e 扩展分区 (逻辑分区容器)
选择 (默认 p):p
分区号 (2-4, 默认 2):
第一个扇区 (20973568-41943039, 默认 20973568):
最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (20973568-41943039, 默认 41943039):

创建了一个新分区 2,类型为“Linux”,大小为 10 GiB。

命令(输入 m 获取帮助):w
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。

首先看一下是否安装了mdadm工具,如果没有就安装

1
2
3
4
5
6
[root@192 ~]# which mdadm
/usr/sbin/mdadm
[root@192 ~]# rpm -qf /usr/sbin/mdadm
mdadm-4.1-rc2.0.17.uel20.x86_64
# 没有就安装
[root@192 ~]# dnf install -y mdadm

2.2创建raid0

2.2.1创建

1
2
3
4
5
6
-C:创建软raid
-l:指定raid级别
-n:指定raid中设备个数
[root@192 ~]# mdadm -C /dev/md0 -l 0 -n 2 /dev/sdb1 /dev/sdb2
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

2.2.2查看RAID信息:

1
2
3
4
5
6
[root@192 ~]# cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 sdb2[1] sdb1[0]
20952064 blocks super 1.2 512k chunks

unused devices: <none>

2.2.3查看指定的RAID信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[root@192 ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Apr 4 16:45:39 2025
Raid Level : raid0
Array Size : 20952064 (19.98 GiB 21.45 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent

Update Time : Fri Apr 4 16:45:39 2025
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0

Layout : original
Chunk Size : 512K

Consistency Policy : none

Name : 192.168.135.174:0 (local to host 192.168.135.174)
UUID : 1a44ef6c:1e8a114a:5df87f1b:1b4a1845
Events : 0

Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 18 1 active sync /dev/sdb2

2.2.4格式化挂载使用并查看空间使用情况:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@192 ~]# mkfs.ext4 /dev/md0
mke2fs 1.47.0 (5-Feb-2023)
创建含有 5238016 个块(每块 4k)和 1310720 个 inode 的文件系统
文件系统 UUID:d6fa2ff5-b54c-4300-9fc2-eeceaa32ef9a
超级块的备份存储于下列块:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000

正在分配组表:完成
正在写入 inode表:完成
创建日志(32768 个块):完成
写入超级块和文件系统账户统计信息:已完成

[root@192 ~]# mkdir /md0 (创建挂载目录)
[root@192 ~]# mount /dev/md0 /md0/
[root@192 ~]# df -h
文件系统 大小 已用 可用 已用% 挂载点
/dev/sda4 26G 2.7G 23G 11% /
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 1.7G 0 1.7G 0% /dev/shm
tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
tmpfs 682M 8.8M 673M 2% /run
/dev/sda4 26G 2.7G 23G 11% /home
tmpfs 1.7G 0 1.7G 0% /tmp
/dev/sda2 974M 207M 700M 23% /boot
/dev/md0 20G 24K 19G 1% /md0

停止raid并擦除超级块(superblock)清楚相关信息

1
2
3
4
5
6
7
8
9
1.卸载设备
# umount /md5/
2.移除所有磁盘
# mdadm /dev/md0 -f /dev/sdb[12]
# mdadm /dev/md0 -r /dev/sdb[12]
3.停止raid:
# mdadm --stop /dev/md0
4.擦除超级块(superblock)清楚相关信息
# mdadm --zero-superblock /dev/sdb[12]

2.3创建raid1

2.3.1创建raid1:

1
[root@192 ~]# mdadm -C /dev/md1 -l 1 -n 2 /dev/sdb1 /dev/sdb2

2.3.2查看状态信息:

1
2
3
4
5
6
7
8
9
10
[root@192 ~]# watch -n1 "cat /proc/mdstat" 
#watch命令监控该文件变化情况,1秒钟显示一次
#或者直接查看
[root@node01 ~]# cat /proc/mdstat
Personalities : [raid0] [raid1]
md1 : active raid1 sdb2[1] sdb1[0]
10475520 blocks super 1.2 [2/2] [UU]

unused devices: <none>
#以上信息说明两块盘在进行同步,100%说明同步完成

2.3.3查看raid1详细信息

1
[root@192 ~]# mdadm -D /dev/md1   

2.3.4格式化挂载使用:

1
2
3
[root@192 ~]# mkfs.ext4 /dev/md1
[root@192 ~]# mkdir /md1
[root@192 ~]# mount /dev/md1 /md1

2.3.5查看空间使用情况:

1
2
3
4
[root@192 ~]# df -h
文件系统 大小 已用 可用 已用% 挂载点
/dev/md1 9.8G 24K 9.3G 1% /md1
#可用空间50%

2.3.6测试验证热插拔:

1.模拟一块盘故障(将磁盘标记为失效)
1
2
3
[root@192 ~]# mdadm /dev/md1 -f /dev/sdb2
mdadm: set /dev/sdb2 faulty in /dev/md1
#-f or --fail 表示失效
2.查看raid1状态
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@192 ~]# cat /proc/mdstat
Personalities : [raid0] [raid1]
md1 : active raid1 sdb2[1](F) sdb1[0] (F表示失效失败)
10475520 blocks super 1.2 [2/1] [U_]
#_表示有一块盘失效
unused devices: <none>

[root@192 dev]# mdadm -D /dev/md1
...
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
- 0 0 1 removed
1 8 18 - faulty /dev/sdb2
# 失效盘等待移除
3.移除故障或者失效硬盘(热拔)
1
2
3
4
5
6
7
8
9
10
[root@192 ~]# mdadm /dev/md1 -r /dev/sdb1
mdadm: hot removed /dev/sdb1 from /dev/md1

#-r or --remove 表示移除

[root@192 ~]# mdadm -D /dev/md1
...
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
- 0 0 1 removed
4.加入新的磁盘到raid1中(热插)
1
2
[root@192 ~]# mdadm  /dev/md1 -a /dev/sdb5
mdadm: added /dev/sdd5
5.加入新的磁盘到raid1中(热插)
1
2
3
4
5
6
[root@192 ~]# mdadm  /dev/md1 -a /dev/sdb3
mdadm: added /dev/sdb3

#-a or --add 表示增加

[root@192 ~]# cat /proc/mdstat

2.4创建raid5

2.4.1创建raid5:

1
2
3
4
5
6
7
8
[root@192 ~]# mdadm -C /dev/md5 -l 5 -n 3 -x 1 /dev/sdb{1,2,3,4}
#-x, --spare-devices= 表示指定热备盘
[root@192 ~]# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4]
md5 : active raid5 sdb3[4] sdb4[3](S) sdb2[1] sdb1[0]
10473472 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]

unused devices: <none>

说明:热备盘表示当其中一块盘故障后,热备盘会立马顶上去,而不需要人为手动干预。

1
2
3
4
5
6
[root@192 ~]# mdadm -D /dev/md5
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 18 1 active sync /dev/sdb2
4 8 19 2 active sync /dev/sdb3
3 8 20 - spare /dev/sdb4

2.4.2格式化挂载使用:

1
2
3
[root@192 ~]# mkfs.ext4 /dev/md5
[root@192 ~]# mkdir /md5
[root@192 ~]# mount /dev/md5 /md5/

2.4.3查看空间使用情况:

1
2
3
4
[root@192 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/md5 9.8G 24K 9.3G 1% /md5
#可用空间 (磁盘数量-1)x 单一磁盘容量

2.4.4测试热备磁盘作用:

1.标记一块活动盘失效
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@192 ~]# mdadm /dev/md5 -f /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md5

[root@192 ~]# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4]
md5 : active raid5 sdb3[4] sdb4[3] sdb2[1] sdb1[0](F)
10473472 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]

unused devices: <none>

[root@192 ~]# mdadm -D /dev/md5
Number Major Minor RaidDevice State
3 8 20 0 active sync /dev/sdb4
1 8 18 1 active sync /dev/sdb2
4 8 19 2 active sync /dev/sdb3

0 8 17 - faulty /dev/sdb1

2.移除失效的盘
1
2
3
4
[root@192 ~]# mdadm /dev/md5 -r /dev/sdb1
mdadm: hot removed /dev/sdb1 from /dev/md5
[root@192 ~]# mdadm /dev/md5 -a /dev/sdb1
mdadm: added /dev/sdb1

3.保存RAID信息

为什么要保存raid信息?
如果不做信息的保存,在CentOS6中,重启系统后raid不能自动被识别到,7,8系统中不会出现这种状况。

3.1创建配置文件

1
2
[root@192 ~]# cat /etc/mdadm.conf
ARRAY /dev/md5 metadata=1.2 spares=1 name=192.168.135.174:5 UUID=352fe575:2b243e2a:3d6f59b4:88ef686a

4.raid停止与启动

以RAID5为例说明:
停止raid:

4.1卸载raid

1
# umount /md5 

4.2.使用命令停止raid

1
# mdadm --stop /dev/md5

4.3.启动raid

4.3.1配置文件(/etc/mdadm.conf)存在如下启动
1
# mdadm -A /dev/md5
4.3.2配置文件(/etc/mdadm.conf)不存在如下启动
1
# mdadm -A /dev/md5 /dev/sdb[1234]
4.3.3如果设备名不知道,可以去查看每个设备的raid信息,使用uuid把raid设备重新组合
1
2
3
4
5
6
7
8
9
10
[root@192 ~]# mdadm -E /dev/sdb1 | grep UUID
Array UUID : 352fe575:2b243e2a:3d6f59b4:88ef686a
Device UUID : fd110eee:41700eb5:242c1771:5b5ab08f
#说明:同一个raid里每个磁盘查看的UUID都是这个值
[root@192 ~]# mdadm -E /dev/sdb2 | grep UUID
Array UUID : 352fe575:2b243e2a:3d6f59b4:88ef686a
Device UUID : 974d110f:f9cb7a58:19b41563:4781649c
#通过以上方法找到后进行重新组合,如下:
[root@node01 ~]# mdadm -A --uuid=352fe575:2b243e2a:3d6f59b4:88ef686a /dev/md5
mdadm: /dev/md5 has been started with 3 drives and 1 spare.

4.4raid的删除

4.4.1卸载设备
1
# umount /md5/
4.4.2移出所有磁盘
1
2
3
4
5
6
7
8
9
10
11
[root@192 dev]# mdadm /dev/md5 -f /dev/sdb[1234]
mdadm: set /dev/sdb6 faulty in /dev/md5
mdadm: set /dev/sdb7 faulty in /dev/md5
mdadm: set /dev/sdb8 faulty in /dev/md5
mdadm: set /dev/sdb9 faulty in /dev/md5

[root@192 dev]# mdadm /dev/md5 -r /dev/sdb[1234]
mdadm: hot removed /dev/sdb6 from /dev/md5
mdadm: hot removed /dev/sdb7 from /dev/md5
mdadm: hot removed /dev/sdb8 from /dev/md5
mdadm: hot removed /dev/sdb9 from /dev/md5
4.4.3停止raid
1
2
[root@node01 ~]# mdadm --stop /dev/md5
mdadm: stopped /dev/md5

4.4.4擦出超级块(superblock)清除相关信息

1
# mdadm --zero-superblock /dev/sdb[1234]

问题:

做之前注意看一下系统内核是否自动装配了raid

1
2
3
[root@192 dev]# mdadm --examine /dev/sdb1 /dev/sdb2
mdadm: No md superblock detected on /dev/sdb1.
mdadm: No md superblock detected on /dev/sdb2.

这里可以看到没有,如果自动装填了,那我们需要去先停止自动创建的设备,并且清楚分区上RAID元数据:

1
2
3
4
5
1. 停止自动创建的 RAID 设备
mdadm --stop /dev/mdXXX

2. 清除分区上的 RAID 元数据
mdadm --zero-superblock /dev/sde1 /dev/sde2

软Raid配置
https://bote798.top/2025/04/02/软Raid配置/
作者
bote798
发布于
2025年4月2日
许可协议