别只会装硬盘!Linux软RAID从理论到生产级运维指南
Linux RAID 存储技术
摘要:本文全面介绍了 Linux 环境下的 RAID 存储技术。内容涵盖 RAID 技术的历史演进、软硬 RAID 的实现方式对比,以及 RAID 0、1、5、6、10、50、60 等主流级别的原理、适用场景、优缺点。文章还通过大量实操命令,详细演示了在 Linux 中使用
mdadm工具管理软 RAID(包括创建、查看、格式化、挂载、故障模拟、热备盘、扩容及删除等操作),是一份理论与实践并重的 RAID 技术指南。
一、环境准备
虚拟机添加6块20G 硬盘,sdb sdc sdd sde sdf sdg

二、RAID技术历史
1988年,美国加州大学伯克利分校D. A. Patterson教授等人在论文中首次提出RAID概念,最初为“廉价磁盘冗余阵列”,核心是将多个廉价小容量磁盘组合,以低成本实现大容量磁盘的性能和可靠性。
随着磁盘成本下降,“廉价”失去意义,RAID咨询委员会(RAB)将其改为“独立磁盘冗余阵列”,名称变化不改变核心技术。
三、RAID实现方式
- 软RAID:依赖操作系统和CPU,无专用芯片,效率最低。
- 硬RAID:有专用控制、I/O芯片和缓存,不占用CPU,成本高。
- 软硬混合RAID:有控制芯片但无I/O芯片,性能和成本介于两者之间。
四、RAID级别
基于数据条带、镜像、校验技术,RAID分为不同等级,满足不同需求。
- 标准等级:最初定义RAID1RAID5,后扩展RAID0、RAID6,业界公认标准为RAID0RAID5。
- 扩展等级:如RAID7、RAID10等,无统一标准。
- 选择原则:等级无高低,需结合数据特点、可用性、性能和成本选择。

下面我们来详细介绍一下RAID的各个级别。
1.RAID 0
(1)原理
RAID 0使用数据条带化(striping)的方式将数据分散存储在多个磁盘驱动器上,而不进行冗余备份。数据被分成固定大小的块,并依次存储在每个磁盘上。例如,如果有两个驱动器(驱动器A和驱动器B),一块数据的第一个部分存储在驱动器A上,第二个部分存储在驱动器B上,以此类推。这种条带化的方式可以同时从多个驱动器读取或写入数据,从而提高系统的性能。

(2)适用场景
RAID 0适用于需要高性能而不关心数据冗余的场景。以下是几种适合使用RAID 0的场景:
- 视频编辑和处理:在视频编辑中,需要快速读取和写入大量数据。RAID 0可以通过并行读写操作提高数据传输速度,加快视频编辑和处理的速度。
- 大型数据库应用:对于需要频繁访问和查询数据库的应用程序,RAID 0可以提供更快的数据访问速度,加快数据库操作的响应时间。
- 实时流媒体:对于需要实时传输和处理大量数据的流媒体应用,RAID 0可以提供足够的带宽和吞吐量,确保流媒体内容的平滑播放。
(3)优点
RAID 0具有以下优点:
- 高性能:通过数据条带化和并行读写操作,RAID 0可以提供更快的数据传输速度和更高的系统性能。
- 成本效益:相对于其他RAID级别(如RAID 1或RAID 5),RAID 0不需要额外的磁盘用于冗余备份,因此在成本上更具竞争力。
(4)缺点
RAID 0也存在一些缺点:
- 缺乏冗余:由于RAID 0不提供数据冗余,如果任何一个驱动器发生故障,所有数据都可能丢失。因此,RAID 0不适合存储关键数据。
- 可靠性降低:由于没有冗余备份,RAID 0的可靠性相对较低。如果任何一个驱动器发生故障,整个阵列的可用性将受到影响。
2.RAID 1
(1)原理
RAID 1使用数据镜像(mirroring)的方式将数据完全复制到两个或多个磁盘驱动器上。当写入数据时,数据同时写入所有驱动器。这样,每个驱动器都具有相同的数据副本,从而实现数据的冗余备份。如果其中一个驱动器发生故障,系统可以继续从剩余的驱动器中读取数据,确保数据的可用性和完整性。

(2)适用场景
RAID 1适用于对数据冗余和高可用性要求较高的场景。以下是几种适合使用RAID 1的场景:
- 关键数据存储:对于关键数据的存储,如企业的财务数据、客户信息等,RAID 1可以提供数据冗余备份,以防止数据丢失。
- 数据库服务器:对于需要高可用性和容错性的数据库服务器,RAID 1可以确保数据的持久性和可用性,即使一个驱动器发生故障,也可以从其他驱动器中读取数据。
- 文件服务器:对于共享文件的服务器,RAID 1可以提供冗余备份,确保文件的可靠性和高可用性。
(3)优点
RAID 1具有以下优点:
- 数据冗余备份:RAID 1通过数据镜像将数据完全复制到多个驱动器上,提供冗余备份,保护数据免受驱动器故障的影响。
- 高可用性:由于数据的冗余备份,即使一个驱动器发生故障,系统仍然可以从其他驱动器中读取数据,保证数据的可用性和连续性。
- 读取性能提升:RAID 1可以通过并行读取数据的方式提升读取性能,从而加快数据访问速度。
(4)缺点
RAID 1也存在一些缺点:
- 成本增加:由于需要额外的磁盘用于数据冗余备份,RAID 1的成本相对较高。需要考虑额外的硬件成本。
- 写入性能略低:由于数据需要同时写入多个驱动器,相对于单个驱动器的写入性能,RAID 1的写入性能可能略低。
3.RAID 5
(1)原理
RAID 5使用数据条带化(striping)的方式将数据分散存储在多个磁盘驱动器上,并通过分布式奇偶校验实现数据的冗余备份。数据和奇偶校验信息被组织成数据块,其中奇偶校验信息被分布式存储在不同的驱动器上。当写入数据时,奇偶校验信息也会被更新。如果其中一个驱动器发生故障,系统可以通过重新计算奇偶校验信息来恢复丢失的数据。这种方式可以同时提供性能增强和数据冗余。

(2)适用场景
RAID 5适用于需要性能增强和数据冗余的场景。以下是几种适合使用RAID 5的场景:
- 文件服务器:对于文件服务器,RAID 5可以提供高性能的数据访问和数据冗余备份,确保文件的安全性和可用性。
- 数据库服务器:对于需要高性能和数据冗余的数据库服务器,RAID 5可以提供快速的数据读取和写入,同时保护数据免受驱动器故障的影响。
- 小型企业环境:对于小型企业,RAID 5提供了经济实惠的解决方案,同时提供了性能和数据冗余的好处。
(3)优点
RAID 5具有以下优点:
- 性能增强:通过数据条带化和并行读写操作,RAID 5可以提供较高的数据传输速度和系统性能。
- 数据冗余备份:通过分布式奇偶校验,RAID 5可以提供数据的冗余备份,保护数据免受驱动器故障的影响。
- 成本效益:相对于其他RAID级别(如RAID 1),RAID 5只需要额外一个驱动器用于奇偶校验信息,从而在成本上更具竞争力。
(4)缺点
RAID 5也存在一些缺点:
- 写入性能受限:由于写入数据时需要重新计算奇偶校验信息,相对于读取操作,RAID 5的写入性能较低。
- 驱动器故障期间的数据完整性:如果一个驱动器发生故障,系统在恢复数据时需要进行计算,这可能导致数据访问速度较慢,并且在此期间可能会有数据完整性的风险。
4.RAID 6
(1)原理
RAID 6使用数据条带化(striping)的方式将数据分散存储在多个磁盘驱动器上,并通过分布式奇偶校验和双重奇偶校验实现数据的冗余备份。数据和奇偶校验信息被组织成数据块,其中奇偶校验信息被分布式存储在不同的驱动器上,并通过双重奇偶校验提供更高的数据冗余性。当写入数据时,奇偶校验信息也会被更新。如果其中两个驱动器发生故障,系统可以通过重新计算奇偶校验信息来恢复丢失的数据。这种方式可以同时提供性能增强和更高级别的数据冗余。

(2)适用场景
RAID 6适用于需要更高级别的数据冗余和性能增强的场景。以下是几种适合使用RAID 6的场景:
- 大容量存储系统:对于需要大容量存储和数据冗余备份的系统,如大型文件服务器或存档系统,RAID 6可以提供更高级别的数据冗余性。
- 长时间运行的应用程序:对于需要长时间运行的关键应用程序,如数据库服务器,RAID 6可以提供更高级别的数据冗余和故障容忍性。
- 虚拟化环境:在虚拟化环境中,需要高性能和更高级别的数据冗余来支持多个虚拟机的运行。RAID 6可以满足这些要求。
(3)优点
RAID 6具有以下优点:
- 更高级别的数据冗余:通过分布式奇偶校验和双重奇偶校验,RAID 6可以提供更高级别的数据冗余性,即使同时发生两个驱动器故障,仍能恢复丢失的数据。
- 性能增强:通过数据条带化和并行读写操作,RAID 6可以提供较高的数据传输速度和系统性能。
(4)缺点
RAID 6也存在一些缺点:
- 写入性能略低:由于数据需要同时写入多个驱动器,并进行双重奇偶校验计算,相对于读取操作,RAID 6的写入性能较低。
- 较高的成本:由于需要额外的磁盘用于奇偶校验信息和更复杂的计算,RAID 6的成本相对较高。需要考虑额外的硬件成本。
5.RAID 10
(1)原理
RAID 10使用条带化(striping)的方式将数据分散存储在多个磁盘驱动器上,并通过镜像(mirroring)实现数据的冗余备份。数据被分成固定大小的块,并依次存储在不同的驱动器上,类似于RAID 0。然而,每个数据块都会被完全复制到另一个驱动器上,实现数据的冗余备份,类似于RAID 1。这样,RAID 10在提供性能增强的同时,也提供了数据的冗余保护。

(2)适用场景
RAID 10适用于需要高性能和数据冗余的场景。以下是几种适合使用RAID 10的场景:
- 数据库服务器:对于需要高可用性和性能的数据库服务器,RAID 10可以提供快速的数据读取和写入,同时保护数据免受驱动器故障的影响。
- 虚拟化环境:在虚拟化环境中,需要高性能和数据冗余来支持多个虚拟机的运行。RAID 10可以满足这些要求,提供性能增强和数据保护。
- 关键业务应用:对于关键业务应用,如金融交易系统或在线电子商务平台,RAID 10可以提供高可用性和快速的数据访问,确保业务的连续性和稳定性。
(3)优点
RAID 10具有以下优点:
- 高性能:通过数据条带化和并行读写操作,RAID 10可以提供较高的数据传输速度和系统性能。
- 数据冗余备份:通过数据镜像将数据完全复制到另一个驱动器上,RAID 10提供了数据的冗余备份,保护数据免受驱动器故障的影响。
- 较高的可靠性:由于RAID 10采用镜像的方式进行数据冗余备份,即使一个驱动器发生故障,仍然可以从其他驱动器中读取数据,确保数据的可用性和连续性。
- 快速的故障恢复:在RAID 10中,如果一个驱动器发生故障,系统可以直接从镜像驱动器中恢复数据,而无需进行复杂的计算,从而加快故障恢复的速度。
(4)缺点
RAID 10也存在一些缺点:
- 较高的成本:相对于其他RAID级别,RAID 10需要更多的驱动器用于数据镜像,从而增加了硬件成本。
- 低效的空间利用:由于RAID 10的数据镜像特性,有效的存储容量只等于所有驱动器中一半的容量,因此空间利用率较低。
6.RAID 50
(1)原理
RAID 50使用条带化(striping)的方式将数据分散存储在多个RAID 5组中,并通过RAID 0的条带化方式对这些RAID 5组进行条带化。每个RAID 5组由多个磁盘驱动器组成,并使用分布式奇偶校验来提供数据冗余备份。RAID 0则通过将数据划分为固定大小的块,并将这些块依次存储在多个驱动器上,提供了更高的性能。这样,RAID 50既提供了数据冗余备份,又提供了性能增强。

(2)适用场景
RAID 50适用于需要高性能和更高级别的数据冗余的场景。以下是几种适合使用RAID 50的场景:
- 大规模数据存储:对于需要大规模数据存储和数据冗余备份的系统,如视频编辑、数据分析或大型数据库,RAID 50可以提供高性能和较高级别的数据冗余性。
- 图形渲染和动画制作:在图形渲染和动画制作领域,需要高性能的存储系统来处理大型文件和复杂的渲染任务。RAID 50可以满足这些要求,提供快速的数据读取和写入速度。
- 虚拟化环境:在虚拟化环境中,需要高性能和更高级别的数据冗余来支持多个虚拟机的运行。RAID 50可以满足这些要求,提供性能增强和数据保护。
(3)优点
RAID 50具有以下优点:
- 高性能:通过数据条带化和并行读写操作,RAID 50可以提供较高的数据传输速度和系统性能。
- 更高级别的数据冗余:由于采用了多个RAID 5组的方式,RAID 50提供了更高级别的数据冗余备份,即使同时发生多个驱动器故障,仍能恢复丢失的数据。
(4)缺点
RAID 50也存在一些缺点:
- 较高的成本:由于需要更多的驱动器用于数据条带化和数据冗余备份,RAID 50的硬件成本相对较高。
- 配置和管理复杂性:由于涉及多个RAID 5组和驱动器,RAID 50的配置和管理相对复杂,需要更多的注意和维护。
7.RAID 60
(1)原理
RAID 60采用条带化(striping)的方式将数据分散存储在多个RAID 6组中,并通过RAID 0的条带化方式对这些RAID 6组进行条带化。每个RAID 6组由多个磁盘驱动器组成,并使用分布式奇偶校验来提供数据的冗余备份。RAID 0则通过将数据划分为固定大小的块,并将这些块依次存储在多个驱动器上,提供了更高的性能。这样,RAID 60既提供了更高级别的数据冗余备份,又提供了性能增强。

(2)适用场景
RAID 60适用于需要更高级别的数据冗余和更高性能的场景。以下是几种适合使用RAID 60的场景:
- 大型数据库系统:对于大型数据库系统,需要高可用性、高性能和更高级别的数据冗余来确保数据的完整性和可靠性。RAID 60可以提供这些要求。
- 大规模数据分析:在大规模数据分析领域,需要高性能的存储系统来处理大量数据的读取和写入。RAID 60可以满足这些要求,提供较高的数据传输速度和系统性能。
- 视频流媒体处理:对于视频流媒体处理应用,需要快速的数据读取和写入,以确保流畅的视频播放和高质量的媒体处理。RAID 60可以满足这些要求。
(3)优点
RAID 60具有以下优点:
- 更高级别的数据冗余:由于采用了多个RAID 6组的方式,RAID 60提供了更高级别的数据冗余备份,即使同时发生多个驱动器故障,仍能恢复丢失的数据。
- 高性能:通过数据条带化和并行读写操作,RAID 60可以提供较高的数据传输速度和系统性能。
(4)缺点
RAID 60也存在一些缺点:
- 较高的成本:由于需要更多的驱动器用于数据条带化和数据冗余备份,RAID 60的硬件成本相对较高。
- 配置和管理复杂性:由于涉及多个RAID 6组和驱动器,RAID 60的配置和管理相对复杂,需要更多的注意和维护
8.RAID 级别总结

五、管理软 RAID
Linux 提供 mdadm 实用程序来创建和管理软件RAID。
1.管理 RAID0
(1)创建 RAID
[root@server ~ 10:55:52]# yum install -y mdadm
# 创建一个包含2个块设备的raid0设备/dev/md0
[root@server ~ 11:27:04]# 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.
(2)查看 RAID
# 查看 raid 概要信息
[root@server ~ 11:27:50]# cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 sdc[1] sdb[0]
41908224 blocks super 1.2 512k chunks
unused devices: <none>
# 查看 raid 设备详细信息
[root@server ~ 11:28:12]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu May 21 11:27:50 2026
Raid Level : raid0
Array Size : 41908224 (39.97 GiB 42.91 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Thu May 21 11:27:50 2026
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Chunk Size : 512K
Consistency Policy : none
Name : server.lz.cloud:0 (local to host server.lz.cloud)
UUID : bf931554:1c6982b6:2200c079:79f7d0b1
Events : 0
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
[root@server ~ 11:28:51]# 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
需要关注的属性:
• Raid Level : raid0
• State : clean
• Chunk Size : 512K
• 设备清单
[root@server ~ 11:28:23]# lsblk /dev/md0
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
md0 9:0 0 40G 0 raid0
[root@server ~ 11:28:39]# lsblk /dev/sdb /dev/sdc
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 20G 0 disk
└─md0 9:0 0 40G 0 raid0
sdc 8:32 0 20G 0 disk
└─md0 9:0 0 40G 0 raid0
(3)格式化和挂载
[root@server ~ 11:34:11]# mkdir -p /raid/raid0
[root@server ~ 11:34:25]# mount /dev/md0 /raid/raid0
[root@server ~ 11:34:47]# df -h /raid/raid0
文件系统 容量 已用 可用 已用% 挂载点
/dev/md0 40G 33M 40G 1% /raid/raid0
# 创建数据
[root@server ~ 11:35:00]# cp /etc/ho* /raid/raid0
[root@server ~ 11:35:25]# ls /raid/raid0
host.conf hostname hosts hosts.allow hosts.deny
(4)删除 RAID
# 卸载
[root@server ~ 11:35:32]# umount /dev/md0
# stop RAID阵列,将删除阵列
[root@server ~ 11:38:54]# mdadm --stop /dev/md0
mdadm: stopped /dev/md0
# 清除原先设备上的 md superblock
[root@server ~ 11:39:16]# mdadm --zero-superblock /dev/sd{b,c}
(5)补充说明
• raid0 条带不能增加新成员盘。
[root@server ~ 11:42:44]# mdadm --add /dev/md0 /dev/sdd
mdadm: add new device failed for /dev/sdd as 2: Invalid argument
- raid0 条带不能强制故障成员盘。
[root@server ~ 11:43:46]# mdadm --fail /dev/md0 /dev/sdc
mdadm: set device faulty failed for /dev/sdc: Device or resource busy
2.管理 RAID1
(1)创建 RAID
# 创建一个包含2个块设备的raid1设备/dev/md1
[root@server ~ 13:48:20]# mdadm --create /dev/md1 --level 1 --raid-devices 2 /dev/sd{b,c}
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.
(2)查看 RAID
[root@server ~ 13:48:39]# mdadm --detail /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Thu May 21 13:48:39 2026
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 : Thu May 21 13:48:53 2026
State : clean, resyncing
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Consistency Policy : resync
Resync Status : 12% complete
Name : server.lz.cloud:1 (local to host server.lz.cloud)
UUID : d142c0aa:302bf60d:7662acd5:285d32a9
Events : 2
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
需要关注的属性:
- Raid Level : raid1
- State : clean, resyncing,正在同步。
- Consistency Policy : resync
- Resync Status : 33% complete,同步进度。
- 设备清单
[root@server ~ 13:48:53]# lsblk /dev/md1
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
md1 9:1 0 20G 0 raid1
[root@server ~ 13:51:40]# lsblk /dev/sdb /dev/sdc
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 20G 0 disk
└─md1 9:1 0 20G 0 raid1
sdc 8:32 0 20G 0 disk
└─md1 9:1 0 20G 0 raid1
(3)格式化和挂载
等待同步完成:直到同步进度达到100%,然后进行格式化和挂载。
[root@server ~ 13:52:10]# mkfs.xfs -f /dev/md1
[root@server ~ 13:52:21]# mkdir /raid/raid1
[root@server ~ 13:52:34]# mount /dev/md1 /raid/raid1
[root@server ~ 13:53:03]# df -h /raid/raid1
文件系统 容量 已用 可用 已用% 挂载点
/dev/md1 20G 33M 20G 1% /raid/raid1
# 创建数据
[root@server ~ 13:53:15]# cp /etc/ho* /raid/raid1/
[root@server ~ 13:53:31]# ls /raid/raid1/
host.conf hostname hosts hosts.allow hosts.deny
(4)增加热备盘
[root@server ~ 13:54:13]# mdadm --add /dev/md1 /dev/sdd
mdadm: added /dev/sdd
[root@server ~ 13:54:43]# mdadm --detail /dev/md1 |tail -5
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
2 8 48 - spare /dev/sdd
# /dev/sdd的状态为spare(备用)
(5)模拟故障
# 强制成员盘故障
[root@server ~ 13:54:52]# mdadm --fail /dev/md1 /dev/sdc
mdadm: set /dev/sdc faulty in /dev/md1
# 查看成员状态
[root@server ~ 13:55:08]# mdadm --detail /dev/md1 |tail -5
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
2 8 48 1 spare rebuilding /dev/sdd
1 8 32 - faulty /dev/sdc
# /dev/sdd立刻顶替故障磁盘,并进行同步
# 数据依然正常访问
[root@server ~ 13:55:11]# ls /raid/raid1/
host.conf hostname hosts hosts.allow hosts.deny
[root@server ~ 13:55:28]# cat /raid/raid1/hostname
server.lz.cloud
(6)删除故障磁盘
[root@server ~ 13:55:46]# mdadm --remove /dev/md1 /dev/sdc
mdadm: hot removed /dev/sdc from /dev/md1
[root@server ~ 13:55:55]# mdadm --detail /dev/md1 |tail -5
Events : 33
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
2 8 48 1 spare rebuilding /dev/sdd
(7)删除 RAID
[root@server ~ 13:56:06]# umount /dev/md1
[root@server ~ 13:56:24]# mdadm --stop /dev/md1
mdadm: stopped /dev/md1
[root@server ~ 13:57:26]# mdadm --zero-superblock /dev/sd{b..d}
(8)补充说明
RAID1的设计初衷是数据冗余和可靠性,而不是为了增加存储容量。因此,即使添加了新的硬盘并进行了扩容操作,由于RAID1的工作方式,其总容量是不会增加的。
3.管理 RAID5
(1)创建 RAID
[root@server ~ 13:58:43]# mdadm --create /dev/md5 --level 5 --raid-devices 4 /dev/sd{b..e}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
(2)查看 RAID
[root@server ~ 14:17:49]# mdadm --detail /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Thu May 21 14:17:49 2026
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 : Thu May 21 14:18:00 2026
State : clean, degraded, recovering
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Rebuild Status : 9% complete
Name : server.lz.cloud:5 (local to host server.lz.cloud)
UUID : c1a07aea:3aac81b6:d98ed09c:a5358ef4
Events : 2
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 spare rebuilding /dev/sde
需要关注的属性:
- Raid Level : raid5
- State : clean, resyncing,正在同步。
- Consistency Policy : resync
- Resync Status : 17% complete,同步进度。
- 设备清单
[root@server ~ 14:18:05]# lsblk /dev/md5
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
md5 9:5 0 60G 0 raid5
[root@server ~ 14:18:19]# lsblk /dev/sd{b..e}
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 20G 0 disk
└─md5 9:5 0 60G 0 raid5
sdc 8:32 0 20G 0 disk
└─md5 9:5 0 60G 0 raid5
sdd 8:48 0 20G 0 disk
└─md5 9:5 0 60G 0 raid5
sde 8:64 0 20G 0 disk
└─md5 9:5 0 60G 0 raid5
(3)格式化和挂载
注意:格式化前,等待 raid 构建完成。
[root@server ~ 14:18:41]# 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 ~ 14:24:25]# mkdir /raid/raid5
[root@server ~ 14:24:33]# mount /dev/md5 /raid/raid5
[root@server ~ 14:24:41]# df -h /raid/raid5/
文件系统 容量 已用 可用 已用% 挂载点
/dev/md5 60G 33M 60G 1% /raid/raid5
[root@server ~ 14:24:48]# cp /etc/ho* /raid/raid5
[root@server ~ 14:24:58]# ls /raid/raid5/
host.conf hostname hosts hosts.allow hosts.deny
(4)增加热备盘
[root@server ~ 14:25:05]# mdadm --add /dev/md5 /dev/sdf
mdadm: added /dev/sdf
[root@server ~ 14:25:15]# mdadm --detail /dev/md5 |tail -7
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
5 8 80 - spare /dev/sdf
(5)模拟故障
[root@server ~ 14:25:26]# mdadm --fail /dev/md5 /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md5
[root@server ~ 14:25:39]# mdadm --detail /dev/md5 |tail -7
Number Major Minor RaidDevice State
5 8 80 0 spare rebuilding /dev/sdf
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
4 8 64 3 active sync /dev/sde
0 8 16 - faulty /dev/sdb
[root@server ~ 14:25:47]# ls /raid/raid5/
host.conf hostname hosts hosts.allow hosts.deny
[root@server ~ 14:26:17]# cat /raid/raid5/hostname
server.lz.cloud
(6)删除故障磁盘
[root@server ~ 14:26:25]# mdadm --remove /dev/md5 /dev/sdb
mdadm: hot removed /dev/sdb from /dev/md5
[root@server ~ 14:26:34]# mdadm --detail /dev/md5 |tail -5
Number Major Minor RaidDevice State
5 8 80 0 spare rebuilding /dev/sdf
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
4 8 64 3 active sync /dev/sde
(7)扩容 RAID
对于raid5,只能扩容,不能减容。
注意:阵列只有在正常状态下,才能扩容,降级及重构时不允许扩容。
[root@server ~ 14:26:46]# mdadm --add /dev/md5 /dev/sdb /dev/sdg
mdadm: added /dev/sdb
mdadm: added /dev/sdg
[root@server ~ 14:27:00]# mdadm --detail /dev/md5 |tail -8
Number Major Minor RaidDevice State
5 8 80 0 spare rebuilding /dev/sdf
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
4 8 64 3 active sync /dev/sde
6 8 16 - spare /dev/sdb
7 8 96 - spare /dev/sdg
[root@server ~ 14:27:12]# mdadm --grow /dev/md5 --raid-devices 5
[root@server ~ 14:27:26]# mdadm --detail /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Thu May 21 14:17:49 2026
Raid Level : raid5
Array Size : 62862336 (59.95 GiB 64.37 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 5
Total Devices : 6
Persistence : Superblock is persistent
Update Time : Thu May 21 14:27:36 2026
State : clean, degraded, reshaping
Active Devices : 4
Working Devices : 6
Failed Devices : 0
Spare Devices : 2
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Reshape Status : 4% complete
Delta Devices : 1, (4->5)
Name : server.lz.cloud:5 (local to host server.lz.cloud)
UUID : c1a07aea:3aac81b6:d98ed09c:a5358ef4
Events : 71
Number Major Minor RaidDevice State
5 8 80 0 spare rebuilding /dev/sdf
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
4 8 64 3 active sync /dev/sde
7 8 96 4 active sync /dev/sdg
6 8 16 - spare /dev/sdb
[root@server ~ 14:28:54]# lsblk /dev/md5
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
md5 9:5 0 80G 0 raid5 /raid/raid5
[root@server ~ 14:33:44]# xfs_growfs /raid/raid5
[root@server ~ 14:34:20]# df -h /raid/raid5/
文件系统 容量 已用 可用 已用% 挂载点
/dev/md5 80G 34M 80G 1% /raid/raid5
(8)删除 RAID
[root@server ~ 14:34:42]# umount /dev/md5
[root@server ~ 14:35:37]# mdadm --stop /dev/md5
mdadm: stopped /dev/md5
[root@server ~ 14:35:45]# mdadm --zero-superblock /dev/sd{b..g}
(9)重构 RAID
# stop之后、清除superblock之前,如果想构建原先的md5设备,使用以下命令,数据不会丢失
# mdadm --assemble /dev/md5 /dev/sd{b..g}
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)