各级RAID概念
RAID(独立磁盘冗余阵列)是一种将多个物理磁盘驱动器组合成一个或多个逻辑单元的技术;可以理解为将多块普通磁盘组合起来,在特定的逻辑下合作存储数据,以达到提升性能、增加容量、提高存储安全性等目的。
从实现角度看, RAID 主要分为:
- 软 RAID:所有功能均有操作系统和 CPU 来完成,没有独立的 RAID 控制 / 处理芯片和 I/O 处理芯片,效率最低。
- 硬 RAID :配备了专门的 RAID 控制 / 处理芯片和 I/O 处理芯片以及阵列缓冲,不占用 CPU 资源,成本很高。
- 软硬混合 RAID:具备 RAID 控制 / 处理芯片,但缺乏 I/O 处理芯片,需要 CPU 和驱动程序来完成,性能和成本在软 RAID 和硬 RAID 之间。
不同的RAID级别代表了不同的磁盘组合方式和存储逻辑:
| RAID级别 | 最小磁盘数 | 数据拆分说明 |
|---|---|---|
| RAID 0 | 2 | 将数据分成两部分,分别存入两块磁盘;每块磁盘储存着完整数据的一部分 |
| RAID 1 | 2 | 将数据复制一次后,分别存入两块磁盘;每块磁盘储存着完整的数据 |
| RAID 5 | 3 | 将数据分为两部分和一份奇偶校验信息,分别存入三块磁盘;任一数据部分丢失时可根据奇偶校验信息还原为原始数据 |
| RAID 6 | 4 | 将数据分为两部分和两份奇偶校验信息,分别存入四块磁盘;任一数据部分丢失时可根据奇偶校验信息还原为原始数据 |
| RAID 10 | 4 | 将磁盘分为两两一组,每组获得一份完整数据;再对每组磁盘进行RAID 0相同储存方式;即先复制再拆分存储 |
RAID 技术中有一个概念叫冗余;其本质可以理解为备份,在RAID中表示通过创建数据的额外副本来提高系统的可靠性和容错能力;简单来说,当RAID中的磁盘发生故障时,系统可以利用冗余备份数据恢复原始信息,从而避免数据丢失。
冗余度是衡量数据备份程度的量化指标,表示数据被额外备份的比例;冗余度越高,意味着备份的副本越多,系统的容错能力越强,但存储空间的利用率也越低。
例如在RAID 1中,数据被复制了一份后分别存入不同的磁盘,相当于同一数据占用了两倍的空间,冗余度即为50%。
| RAID级别 | 冗余机制 | 冗余度 |
|---|---|---|
| RAID 0 | 无 | 0% |
| RAID 1 | 镜像 | 50% |
| RAID 5 | 奇偶校验 | 25% |
| RAID 6 | 双重奇偶校验 | 33.3% |
| RAID 10 | 镜像 | 50% |
冗余度越高,可容忍的故障磁盘越多;
但需要注意RAID不是备份,RAID的主要目的是提高可用性和性能,不能代替备份。
RHEL 提供多磁盘和设备管理 (mdadm) 程序实用程序来创建和管理软件RAID;mdadm (Multiple Devices Admin) 是 Linux 下创建、管理和监控软件 RAID 的核心工具,用于实现RAID阵列。
语法:mdadm [模式] [参数] [磁盘列表]
mdadm命令的组成是选择一个模式加若干参数;
mdadm拥有以下命令模式:
- 创建模式:–create;用于初始化新 RAID 阵列;
- 组装模式:–assemble;激活已存在的 RAID 阵列;
- 管理模式:直接在mdadm后连接选项;用于调整 RAID 状态;
- 监控模式:–monitor;用于监控 RAID 状态;
- 增长模式:–grow;扩容或修改阵列属性;
- 杂项模式:包含以下命令
–detail:查看阵列详细信息;
–examine:检查磁盘 RAID 元数据;
–query:快速查看阵列基础信息;
–zero-superblock:销毁阵列,清除磁盘 RAID 元数据;
| mdadm选项 | 作用 |
|---|---|
| -l,–level | 设置 RAID 级别 |
| -n,–raid-devices | 设定磁盘数量 |
| -x,–spare-devices | 热备盘数量 |
| -c,–chunk | 设置条带大小 |
| –bitmap=internal | 启用内存位图 |
| –scan | 自动扫描 /etc/mdadm.conf 或 /proc/partitions 配置 |
| –add | 添加热备盘 |
| –fail | 触发重建(需热备盘) |
| –remove | 安全卸载故障盘 |
| –stop | umount 文件系统,用于卸载前 |
[root@server ~]# mdadm --detail --scan >>/etc/mdadm.conf
# 扫描系统中所有活动的RAID阵列,将输出追加到/etc/mdadm.conf文件中;可以持久化保存当前RAID阵列的配置信息,确保系统重启后能自动识别并重组RAID阵列
[root@server ~]# madam --assemble --scan
# 自动扫描并组装所有RAID
RAID 0
RAID 0 的数据分布方式被称为条带化(Stripe);原因是RAID 0使数据被分割成条带,依次循环写入所有磁盘。
RAID 0的总容量是成员磁盘容量的总和,因为没有冗余数据;如果任何一块磁盘故障,整个阵列的数据将丢失,且无法恢复。
创建RAID 0至少需要两块磁盘:
[root@server ~]# mdadm --create /dev/md0 --level 0 --raid-devices 2 /dev/sd{b,c}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@server ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sun Nov 16 21:09:06 2025
Raid Level : raid0
Array Size : 41908224 (39.97 GiB 42.91 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Sun Nov 16 21:09:06 2025
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Chunk Size : 512K
Consistency Policy : none
Name : server.gc.cloud:0 (local to host server.gc.cloud)
UUID : 527aabcc:40c60758:7fc96289:d3ed627a
Events : 0
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
raid0阵列不能增加新成员盘,也不能强制使成员盘故障。
接下来格式化raid0阵列,然后就可以进行存储数据了:
[root@server ~]# mkfs.xfs /dev/md0
meta-data=/dev/md0 isize=512 agcount=16, agsize=654720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=10475520, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=5120, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@server ~]# mount /dev/md0 /data/raid0
卸载raid0阵列:
[root@server ~]# umount /dev/md0
[root@server ~]# mdadm --stop /dev/md0
mdadm: stopped /dev/md0
[root@server ~]# mdadm --zero-superblock /dev/sd{b,c}
RAID 1
RAID 1指数据被同时写入两块(或更多)磁盘,形成镜像;
[root@server ~]# mdadm --create /dev/md1 --level 1 --raid-devices 2 /dev/sd{b,c}
mdadm: partition table exists on /dev/sdb
mdadm: partition table exists on /dev/sdb but will be lost or
meaningless after creating array
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
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
# 警告信息代表 /dev/sdb 上存在分区表,创建 RAID 后原有分区表将失效;两个磁盘上的所有现有数据都将被清除
[root@server ~]# mdadm --detail /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Mon Nov 17 17:18:56 2025
Raid Level : raid1
Array Size : 20954112 (19.98 GiB 21.46 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Mon Nov 17 17:20:42 2025
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Consistency Policy : resync
Name : server.gc.cloud:1 (local to host server.gc.cloud)
UUID : 0cfed40e:fe8e204a:3ca4ec36:9da2a510
Events : 17
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
格式化与raid0相同,raid1不限于两块磁盘,可以随时添加热备盘;但添加的热备盘初始状态为备用,需要使用–grow扩容才能进入工作状态。
[root@server ~]# mkfs.xfs /dev/md1
mkfs.xfs: /dev/md1 appears to contain an existing filesystem (xfs).
mkfs.xfs: Use the -f option to force overwrite.
# 表示已有xfs文件系统,可以使用-f选项强制执行
[root@server ~]# mount /dev/md1 /data/raid1
[root@server ~]# mdadm /dev/md1 --add /dev/sdd
mdadm: added /dev/sdd
raid1阵列可以容忍任一磁盘损坏,可以使用fail命令模拟故障:
[root@server ~]# mdadm /dev/md1 --fail /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md1
[root@server ~]# mdadm --detail /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Mon Nov 17 17:18:56 2025
Raid Level : raid1
Array Size : 20954112 (19.98 GiB 21.46 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Mon Nov 17 19:32:01 2025
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 1
Spare Devices : 0
Consistency Policy : resync
Name : server.gc.cloud:1 (local to host server.gc.cloud)
UUID : 0cfed40e:fe8e204a:3ca4ec36:9da2a510
Events : 19
Number Major Minor RaidDevice State
- 0 0 0 removed
1 8 32 1 active sync /dev/sdc
2 8 48 1 spare rebuilding /dev/sdd
0 8 16 - faulty /dev/sdb
当raid1阵列中的任一磁盘发生损坏时,备用磁盘会立刻顶替损坏磁盘以保证阵列正常运转。
RAID 5
数据被条带化分布在所有磁盘上,同时每个条带集计算出一个奇偶校验块;奇偶校验块均匀地分布在不同磁盘上,而不是固定在一个盘,这是为了防止单一磁盘被反复擦写而降低使用寿命。
RAID 5阵列至少需要4块磁盘:
[root@server ~]# 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 20G 0 disk
sdc 8:32 0 20G 0 disk
sdd 8:48 0 20G 0 disk
sde 8:64 0 20G 0 disk
sr0 11:0 1 4.4G 0 rom
[root@server ~]# mdadm --create /dev/md5 --level 5 --raid-devices 4 /dev/sd{b,c,d,e}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
[root@server ~]# mdadm --detail /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Mon Nov 17 20:24:31 2025
Raid Level : raid5
Array Size : 62862336 (59.95 GiB 64.37 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Mon Nov 17 20:26:17 2025
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : server.gc.cloud:5 (local to host server.gc.cloud)
UUID : a16c1bbe:81157277:0b045a79:c40cb070
Events : 18
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
4 8 64 3 active sync /dev/sde
格式化并挂靠文件夹:
[root@server ~]# mkfs.xfs -f /dev/md5
meta-data=/dev/md5 isize=512 agcount=16, agsize=982144 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=15714304, imaxpct=25
= sunit=128 swidth=384 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=7680, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@server ~]# mount /dev/md5 /data/raid5
raid5阵列只能扩容,不能减容;且阵列只有在正常状态下,才能扩容。
[root@server ~]# mdadm /dev/md5 --add /dev/sdf
[root@server ~]# mdadm --grow /dev/md5 --raid-devices 5
# 扩展文件系统
[root@server ~]# xfs_growfs /data/raid5
898

被折叠的 条评论
为什么被折叠?



