文章摘要:
本文从条带化、镜像和奇偶校验三个核心机制出发,详细讲解 RAID 0、RAID 1、RAID 5、RAID 6、RAID 10 的工作原理、容量计算、容错能力及适用场景,并结合服务器安装欧拉操作系统时磁盘处于 Foreign 状态的实际案例,梳理 Import、Clear、Degraded、Rebuild 等常见问题及 Linux mdadm 软件 RAID 实验。
前言:为什么安装操作系统时看不到硬盘?
前段时间,我在一台物理服务器上通过 U 盘安装欧拉操作系统时,遇到了一个比较典型的问题:
服务器 BIOS 能够识别物理硬盘,但是进入操作系统安装界面后,却找不到可以安装系统的磁盘。
一开始我以为是操作系统缺少磁盘驱动,后来进入 RAID 控制器配置界面检查,发现多块硬盘处于Foreign状态。确认这些硬盘中没有需要保留的数据后,我清除了原有的 Foreign 配置,使硬盘恢复为可配置状态,随后重新划分 RAID 1 和 RAID 5,操作系统安装程序才正常识别到逻辑磁盘。
这个问题让我意识到:对于服务器运维人员来说,只知道“RAID 1 是镜像、RAID 5 有校验”远远不够。我们还需要理解:
RAID 到底处于服务器存储链路的哪一层;
不同 RAID 级别如何存储数据;
RAID 容量为什么比物理硬盘总容量小;
Foreign、Failed、Degraded 分别意味着什么;
RAID 出现异常时,应该 Import 还是 Clear;
为什么 RAID 不能代替数据备份。
本文将从原理、选型、配置和故障排查四个角度,完整梳理 RAID 技术。
@TOC
一、RAID 到底是什么?
RAID 的全称是:
Redundant Array of Independent Disks
独立磁盘冗余阵列
它的核心思想,是将多块独立的物理硬盘按照一定规则组合起来,对上层系统提供一个或多个逻辑磁盘。
例如,一台服务器中实际安装了 4 块硬盘:
物理硬盘: Disk 0 Disk 1 Disk 2 Disk 3经过 RAID 控制器组合后,操作系统看到的可能不再是 4 块单独的硬盘,而是一块逻辑磁盘:
Disk 0 ┐ Disk 1 ├── RAID控制器 ──> Virtual Disk 0 ──> 操作系统 Disk 2 ┤ Disk 3 ┘因此,在使用硬件 RAID 的服务器中,完整的存储链路通常是:
物理硬盘 ↓ RAID控制器 ↓ RAID磁盘组 ↓ 虚拟磁盘 / 逻辑磁盘 ↓ 操作系统分区 ↓ 文件系统RAID 主要用于在以下几个目标之间取得平衡:
提升磁盘读写性能;
提高数据可用性;
提供一定的磁盘故障容错能力;
将多块硬盘整合为更大的逻辑存储空间。
不同 RAID 级别,本质上就是对性能、容量和可靠性进行不同取舍。
二、理解 RAID 的三个核心机制
在学习各种 RAID 级别之前,先理解三个最重要的概念:
条带化;
镜像;
奇偶校验。
1. 条带化:把数据拆开并行写入
条带化英文为Striping。
假设现在需要写入四块数据:
A1 A2 A3 A4如果使用两块磁盘进行条带化,数据可能按照下面的方式写入:
Disk 1:A1 A3 Disk 2:A2 A4由于两块磁盘可以同时工作,因此理论上能够提高读写吞吐量。
但条带化本身不提供冗余。如果任意一块硬盘损坏,部分数据块就会丢失,整个文件甚至整个阵列都可能无法使用。
RAID 0 使用的就是条带化。
2. 镜像:同一份数据保存两份
镜像英文为Mirroring。
假设需要保存数据 A 和数据 B:
Disk 1:A B Disk 2:A B两块硬盘中的内容基本一致。
当其中一块硬盘损坏时,系统仍然可以通过另一块硬盘继续读取数据。
镜像的代价也很明显:保存一份数据需要占用两份磁盘空间。
RAID 1 使用的就是镜像机制。
3. 奇偶校验:用校验信息恢复丢失数据
奇偶校验英文为Parity。
可以先用一个简化的异或运算理解它:
A XOR B = P其中:
A、B 是原始数据;
P 是校验数据。
如果 A 丢失,可以通过 B 和 P 反推出 A:
A = B XOR P真实 RAID 中的数据恢复过程比这个示例复杂,但核心思想相同:利用剩余数据块和校验块,重新计算出丢失的数据。
RAID 5 使用单重分布式校验,RAID 6 使用双重分布式校验。
三、常见 RAID 级别详解
为了方便计算,假设:
磁盘数量为
N;每块磁盘容量为
S;各成员盘容量相同。
如果硬盘容量不同,RAID 通常会按照成员盘中容量最小的硬盘计算,其余超出部分可能无法被当前阵列使用。
四、RAID 0:性能优先,没有冗余
1. 工作原理
RAID 0 将数据拆分为多个数据块,并行写入不同硬盘。
Disk 1 Disk 2 Stripe 1 A1 A2 Stripe 2 A3 A4 Stripe 3 A5 A62. 基本特点
最少需要 2 块硬盘;
没有镜像;
没有奇偶校验;
不具备磁盘故障容错能力;
任意一块成员盘损坏,都可能导致整个阵列不可用。
3. 可用容量
可用容量 = N × S例如,两块 1 TB 硬盘组成 RAID 0:
可用容量 = 2 × 1 TB = 2 TB4. 优点
磁盘利用率高;
顺序读写性能较好;
多块磁盘可以并行处理数据。
5. 缺点
没有任何数据冗余;
阵列中的硬盘越多,整体故障风险涉及的成员盘也越多;
不适合存放无法重新生成的重要数据。
6. 适用场景
RAID 0 更适合:
临时缓存;
可重新生成的数据;
对性能要求较高、对数据可靠性要求较低的测试环境。
对于生产系统中的关键数据,不建议只使用 RAID 0。
五、RAID 1:镜像存储,简单可靠
1. 工作原理
RAID 1 将同一份数据同时写入两块硬盘:
Disk 1 Disk 2 Data 1 A A Data 2 B B Data 3 C C两块硬盘互为镜像。
2. 基本特点
常见 RAID 1 使用两块硬盘:
一块硬盘保存数据;
另一块硬盘保存相同副本;
任意一块硬盘损坏后,系统通常仍可继续运行;
更换故障盘后,可以根据正常磁盘进行重建。
3. 可用容量
对于常见的双盘 RAID 1:
可用容量 = S例如,两块 1 TB 硬盘组成 RAID 1:
物理总容量 = 2 TB 实际可用容量 = 1 TB磁盘利用率约为 50%。
4. 优点
原理简单;
容错能力明确;
故障后的恢复逻辑相对简单;
读取请求在部分实现中可以分散到不同镜像盘。
5. 缺点
容量利用率较低;
写入数据时需要同时维护镜像副本;
同时损坏所有镜像副本后,数据仍然会丢失。
6. 适用场景
RAID 1 常用于:
服务器系统盘;
操作系统启动盘;
小型数据库;
对可靠性要求较高、容量需求不大的业务。
在服务器部署中,使用两块系统盘组成 RAID 1,是一种比较常见的设计。
六、RAID 5:容量、性能和可靠性的折中
1. 工作原理
RAID 5 使用:
数据条带化;
单重分布式奇偶校验。
所谓“分布式校验”,是指校验块不会永远集中在某一块硬盘上,而是分散到不同硬盘中。
以 3 块硬盘为例:
Disk 1 Disk 2 Disk 3 Stripe 1 A1 A2 P1 Stripe 2 B1 P2 B2 Stripe 3 P3 C1 C2其中:
A1、A2 是第一组数据;
P1 是第一组数据的校验块;
不同条带的校验块分布在不同硬盘上。
2. 基本特点
最少需要 3 块硬盘;
可以容忍 1 块成员盘故障;
一块硬盘故障后,阵列通常进入 Degraded,也就是降级状态;
更换硬盘后,可以利用剩余数据和校验数据进行重建。
3. 可用容量
可用容量 = (N - 1) × S例如,4 块 2 TB 硬盘组成 RAID 5:
可用容量 = (4 - 1) × 2 TB = 6 TB相当于牺牲一块硬盘的容量用于校验冗余。
4. 优点
容量利用率高于 RAID 1;
具备单盘容错能力;
读取性能通常较好;
在容量、成本和可靠性之间相对均衡。
5. 缺点
写入时需要更新校验信息;
小块随机写入可能产生额外的校验开销;
降级状态下性能会受到影响;
如果重建完成前再次损坏一块成员盘,阵列可能失效。
6. 适用场景
RAID 5 可以用于:
文件服务器;
一般业务数据;
读取较多、写入压力适中的场景;
对容量利用率有一定要求的服务器。
对于单盘容量较大、业务写入压力较高或者可靠性要求更高的环境,需要认真评估 RAID 5 的重建时间和二次故障风险,也可以考虑 RAID 6 或 RAID 10。
七、RAID 6:双重校验,允许两块盘故障
1. 工作原理
RAID 6 与 RAID 5 类似,但每组条带会维护两份独立的校验信息。
Disk 1 Disk 2 Disk 3 Disk 4 Stripe 1 A1 A2 P1 Q1 Stripe 2 B1 P2 Q2 B2 Stripe 3 P3 Q3 C1 C2其中 P、Q 可以理解为两组不同的校验数据。
2. 基本特点
通常最少需要 4 块硬盘;
可以容忍两块成员盘故障;
比 RAID 5 多占用一块硬盘的等效容量;
写入校验开销通常高于 RAID 5。
3. 可用容量
可用容量 = (N - 2) × S例如,6 块 4 TB 硬盘组成 RAID 6:
可用容量 = (6 - 2) × 4 TB = 16 TB4. 优点
能够容忍两块硬盘故障;
可靠性高于 RAID 5;
更适合成员盘数量较多的阵列。
5. 缺点
双重校验增加写入开销;
容量利用率低于相同磁盘数量的 RAID 5;
阵列重建仍然会占用大量磁盘资源。
6. 适用场景
RAID 6 常用于:
大容量文件存储;
归档数据;
备份存储池;
硬盘数量较多、重建周期较长的环境;
对数据可用性要求较高的业务。
八、RAID 10:先镜像,再条带化
RAID 10 也常写作 RAID 1+0。
1. 工作原理
RAID 10 通常先将硬盘两两组成 RAID 1,再对多个镜像组进行 RAID 0 条带化。
RAID 0 ┌──────┴──────┐ RAID 1 RAID 1 ┌───┴───┐ ┌───┴───┐ Disk 1 Disk 2 Disk 3 Disk 4数据分布示例:
Disk 1 Disk 2 Disk 3 Disk 4 Data A1 A1 A2 A2 B1 B1 B2 B22. 基本特点
常见 RAID 10:
至少需要 4 块硬盘;
成员盘数量通常为偶数;
同时使用镜像和条带化;
兼顾性能与冗余。
部分软件 RAID 实现对最小磁盘数量和布局有不同规则,具体应以操作系统和管理工具为准。
3. 可用容量
对于常见的偶数盘 RAID 10:
可用容量 = N ÷ 2 × S例如,4 块 2 TB 硬盘组成 RAID 10:
可用容量 = 4 ÷ 2 × 2 TB = 4 TB4. 容错能力
RAID 10 能否容忍多块硬盘同时故障,取决于损坏硬盘的位置。
例如:
镜像组1:Disk 1 + Disk 2 镜像组2:Disk 3 + Disk 4以下情况可能仍然正常:
Disk 1故障 Disk 3故障因为两个镜像组中都还有一个正常副本。
但如果以下两块盘同时故障:
Disk 1故障 Disk 2故障同一个镜像组中的两个副本全部丢失,整个 RAID 10 就可能失效。
所以不能简单地说 RAID 10 “一定能坏两块盘”,准确说法应该是:
RAID 10 可以容忍部分多盘故障,但不能同时丢失同一镜像组内的全部成员盘。
5. 适用场景
RAID 10 常用于:
高并发数据库;
虚拟化平台;
日志写入系统;
对随机读写性能要求较高的业务;
同时重视性能与可靠性的核心系统。
九、常见 RAID 级别对比
| RAID级别 | 常见最少磁盘数 | 可用容量 | 容错能力 | 主要优势 | 主要不足 |
|---|---|---|---|---|---|
| RAID 0 | 2 | N × S | 无 | 性能高、利用率高 | 任意一盘故障都可能导致阵列失效 |
| RAID 1 | 2 | S | 常见双盘场景可坏1盘 | 简单可靠、恢复方便 | 容量利用率低 |
| RAID 5 | 3 | (N-1) × S | 可坏1盘 | 容量、性能、可靠性较均衡 | 校验写入开销、降级重建风险 |
| RAID 6 | 4 | (N-2) × S | 可坏2盘 | 容错能力较强 | 写入开销更高 |
| RAID 10 | 4 | N/2 × S | 取决于故障盘所在镜像组 | 随机读写性能好、恢复较快 | 容量利用率约50% |
需要注意,表中的性能只是相对趋势。实际读写能力还会受到以下因素影响:
HDD 或 SSD 类型;
磁盘转速;
RAID 控制器性能;
控制器缓存;
条带大小;
顺序读写或随机读写;
队列深度;
文件系统;
当前业务负载。
因此,不能脱离具体业务,仅凭“星级表格”判断某种 RAID 一定更快。
十、硬件 RAID、软件 RAID 和固件 RAID 的区别
1. 硬件 RAID
硬件 RAID 通常由独立 RAID 控制器完成数据组织。
物理硬盘 ↓ RAID控制器 ↓ 虚拟磁盘 ↓ 操作系统操作系统通常只看到控制器创建的虚拟磁盘,而不直接管理每一块物理硬盘。
优点
RAID 运算主要由控制器处理;
可提供读写缓存;
与操作系统相对独立;
适合服务器生产环境;
可以在操作系统安装前创建系统盘阵列。
缺点
需要额外的 RAID 控制器;
不同控制器之间可能存在兼容性问题;
控制器故障后,恢复可能依赖相同或兼容型号;
配置错误可能直接影响整个阵列。
本文后面提到的 Foreign 状态,主要就是硬件 RAID 控制器中的概念。
2. 软件 RAID
软件 RAID 由操作系统管理。
在 Linux 中,常见的软件 RAID 方案包括 mdraid,通常使用mdadm工具进行创建和管理。
物理硬盘 ↓ Linux内核与mdraid ↓ /dev/md0 ↓ 文件系统和挂载目录优点
不依赖专用 RAID 控制器;
成本较低;
配置灵活;
阵列信息可以通过操作系统工具查看。
缺点
RAID 的组装和维护依赖操作系统;
系统盘软件 RAID 的启动和恢复相对复杂;
迁移时需要确保目标系统支持对应的 RAID 元数据和工具。
3. 固件 RAID
部分服务器或主板可以在 BIOS、UEFI 中配置 RAID,但部分运算仍由驱动程序和 CPU 完成,这类方案也常被称为 Firmware RAID 或 FakeRAID。
它介于硬件 RAID 和纯软件 RAID 之间,具体能力和兼容性取决于平台及驱动程序。Red Hat 文档将部分固件 RAID 描述为通过固件菜单配置的软件 RAID 类型。
十一、服务器硬盘为什么会显示 Foreign?
Foreign 可以理解为:
RAID 控制器在硬盘中发现了不属于当前本地配置的阵列元数据。
常见原因包括:
硬盘曾经在其他服务器或 RAID 控制器中使用;
硬盘之前属于某个 RAID 阵列;
RAID 控制器或主板更换;
硬盘被拔出后重新插入;
控制器配置丢失,但硬盘中仍保留原阵列信息;
多块硬盘没有按照原阵列完整接入;
新服务器使用了没有清理 RAID 元数据的旧硬盘。
当控制器检测到这些历史配置时,为了避免直接覆盖原有阵列,可能会把磁盘标记为 Foreign。
Dell 的 RAID 控制器文档中,将 Foreign 描述为硬盘中保留了全部或部分虚拟磁盘配置;控制器通常会提供 Import 和 Clear 两种处理方式。
十二、Foreign 状态应该 Import 还是 Clear?
这是整个 RAID 故障处理中最需要谨慎的地方。
1. Import Foreign Configuration
Import 的含义是:
将硬盘中检测到的原有 RAID 配置导入当前控制器。
适合以下情况:
原服务器控制器损坏后进行了更换;
将一组完整阵列迁移到兼容控制器;
硬盘被误拔后重新插入;
需要恢复原有虚拟磁盘和数据;
确认当前检测到的 Foreign 配置就是需要恢复的阵列。
执行 Import 之前,应重点确认:
原阵列的全部硬盘是否都已安装;
是否存在 Missing、Failed 或 Offline 成员盘;
磁盘数量是否与原阵列一致;
控制器识别出的虚拟磁盘容量是否合理;
原阵列是否使用加密或安全密钥;
当前控制器是否兼容原阵列。
部分控制器官方文档明确建议,在导入前确认虚拟磁盘所需的物理硬盘全部存在,并检查 Foreign View 中是否存在 Missing 磁盘。
2. Clear Foreign Configuration
Clear 的含义是:
清除硬盘中原有的 Foreign RAID 配置信息,使硬盘可以重新加入当前阵列。
适合以下情况:
当前是全新部署;
硬盘中的原有数据不再需要;
已经完成数据备份;
确认 Foreign 配置属于废弃阵列;
计划重新创建 RAID 虚拟磁盘。
必须特别注意:
Clear Foreign 不能理解为普通的“解除异常状态”。
它可能导致原有虚拟磁盘配置和数据无法恢复。官方文档也明确警告,清除 Foreign 配置属于数据破坏性操作,如果需要保留原虚拟磁盘,应优先评估 Import,而不是直接 Clear。
十三、Foreign 故障的标准排查流程
遇到 Foreign 状态时,可以按照以下流程处理。
第一步:立即停止高风险操作
不要看到 Foreign 就直接点击:
Clear Initialize Delete Virtual Disk Reset Configuration这些操作都可能增加数据恢复难度。
第二步:记录现场信息
建议记录:
服务器型号;
RAID 控制器型号;
控制器固件版本;
物理硬盘槽位;
每块硬盘的状态;
原虚拟磁盘数量;
RAID 级别;
虚拟磁盘容量;
是否存在 Missing 或 Failed;
是否有业务数据需要保留。
有条件时,应先拍照或截图保存当前配置。
第三步:确认是新部署还是故障恢复
这是决定 Import 还是 Clear 的关键。
是否需要保留硬盘中的原有数据? │ ┌────┴────┐ │ │ 需要 不需要 │ │ 评估Import 评估Clear │ │ 确认成员盘 确认备份或 是否完整 确认无有效数据第四步:检查物理硬盘状态
常见状态包括:
| 状态 | 常见含义 |
|---|---|
| Online | 已加入阵列并正常工作 |
| Ready | 可以用于创建阵列 |
| Unconfigured Good | 硬盘正常,但尚未加入虚拟磁盘 |
| Foreign | 检测到其他阵列的配置信息 |
| Failed | 控制器认为硬盘发生故障 |
| Offline | 硬盘已离线 |
| Rebuild | 正在重建数据 |
| Hot Spare | 被指定为热备盘 |
不同厂商和不同控制器使用的状态名称可能略有区别,应以对应设备手册为准。
第五步:根据数据需求执行 Import 或 Clear
如果是恢复旧阵列:
检查所有成员盘 ↓ 预览Foreign配置 ↓ 确认RAID级别和容量 ↓ 执行Import ↓ 检查Virtual Disk状态 ↓ 必要时等待Rebuild如果是全新部署,并且确定没有数据需要保留:
确认无有效数据 ↓ Clear Foreign ↓ 硬盘恢复为可配置状态 ↓ 创建Disk Group ↓ 创建Virtual Disk ↓ 初始化 ↓ 设置启动顺序具体菜单路径会因服务器和 RAID 控制器型号不同而变化,不能将某一型号的操作界面直接套用到其他设备。
十四、真实案例:安装欧拉操作系统时无法检测到磁盘
1. 故障现象
在一台物理服务器上通过 U 盘安装欧拉操作系统时,安装程序无法检测到目标硬盘。
现场表现为:
BIOS 可以看到服务器硬盘;
操作系统安装界面没有可用安装磁盘;
RAID 控制器中多块硬盘显示 Foreign;
当前服务器属于重新部署,不需要保留硬盘中的历史数据。
2. 初步判断
由于 BIOS 能识别物理硬盘,说明:
硬盘并非全部掉线;
硬盘背板和连接链路至少具备基础识别能力;
问题更可能出现在 RAID 控制器配置层。
操作系统安装程序通常识别的是 RAID 控制器创建的虚拟磁盘。如果控制器中没有正常的 Virtual Disk,即使物理硬盘存在,安装程序也可能没有合适的逻辑磁盘可以使用。
3. 处理过程
在确认原硬盘数据不需要保留后,处理思路如下:
进入RAID控制器 ↓ 检查物理硬盘状态 ↓ 确认硬盘为Foreign ↓ 清除废弃的Foreign配置 ↓ 硬盘恢复为可配置状态 ↓ 创建RAID 1系统盘 ↓ 创建RAID 5数据盘 ↓ 初始化虚拟磁盘 ↓ 重新进入欧拉安装界面 ↓ 成功识别逻辑磁盘4. 为什么系统盘选择 RAID 1?
系统盘通常更重视:
操作系统可用性;
故障后的恢复便利性;
配置简单;
不需要特别大的容量。
因此,可以使用两块硬盘组成 RAID 1。即使一块系统盘损坏,另一块镜像盘仍可保留完整数据。
5. 为什么数据盘可以选择 RAID 5?
数据盘通常需要更大的可用容量。
当存在至少 3 块成员盘时,RAID 5 可以在牺牲一块硬盘等效容量的情况下,提供单盘故障容错能力,因此在容量利用率和可靠性之间较为均衡。
但 RAID 5 并不是所有场景的固定答案。对于大容量硬盘、重要生产数据或者写入压力较大的环境,也应评估 RAID 6、RAID 10、备份策略和业务恢复目标。
十五、RAID 配置完成后,操作系统如何分区?
RAID 控制器创建好虚拟磁盘后,操作系统看到的是逻辑磁盘。
例如:
Virtual Disk 0:系统盘 Virtual Disk 1:数据盘在 UEFI 启动模式下,常见的 Linux 系统分区可能包括:
/boot/efi EFI系统分区 /boot Linux内核和启动文件 swap 交换空间 / 根分区 /data 业务数据目录一种常见的思路是:
RAID 1逻辑磁盘 ├── /boot/efi ├── /boot ├── swap └── / RAID 5逻辑磁盘 └── /data需要注意:
RAID 解决的是物理磁盘组合问题;
分区解决的是逻辑磁盘空间划分问题;
文件系统解决的是文件如何组织和访问的问题;
挂载点决定文件系统接入 Linux 目录树的位置。
这几个概念不能混为一谈。
十六、Linux 使用 mdadm 创建软件 RAID 1
下面通过一个简单实验了解 Linux 软件 RAID。
警告:以下命令会改写目标磁盘。请仅在虚拟机或专用实验环境中操作,执行前必须通过
lsblk确认设备名称,禁止直接照抄到生产服务器。
1. 查看磁盘
lsblk假设实验中准备了两块空磁盘:
/dev/sdb /dev/sdc2. 安装 mdadm
在基于 RPM 的发行版中,可以使用:
sudo dnf install -y mdadm部分旧版本系统也可能使用:
sudo yum install -y mdadm3. 创建 RAID 1
sudo mdadm --create /dev/md0 \ --level=1 \ --raid-devices=2 \ /dev/sdb /dev/sdc参数含义:
--create 创建新的软件RAID /dev/md0 创建后的RAID设备 --level=1 RAID级别为RAID 1 --raid-devices=2 使用两块活动磁盘 /dev/sdb /dev/sdc 成员磁盘Red Hat 官方文档也使用mdadm --create、--level和--raid-devices这类参数创建 Linux 软件 RAID。
4. 查看同步状态
cat /proc/mdstat持续观察:
watch cat /proc/mdstat5. 查看详细信息
sudo mdadm --detail /dev/md0重点关注:
Raid Level Array Size State Active Devices Working Devices Failed Devices Spare Devices6. 创建文件系统
sudo mkfs.xfs /dev/md07. 创建挂载目录
sudo mkdir -p /data/raid18. 挂载 RAID
sudo mount /dev/md0 /data/raid19. 检查挂载结果
df -Th /data/raid1十七、模拟软件 RAID 磁盘故障
假设/dev/sdb是需要模拟故障的成员盘。
1. 标记为故障
sudo mdadm /dev/md0 --fail /dev/sdb2. 查看阵列状态
sudo mdadm --detail /dev/md0 cat /proc/mdstat此时阵列可能显示为降级状态,但 RAID 1 仍可通过另一块正常磁盘继续工作。
3. 移除故障盘
sudo mdadm /dev/md0 --remove /dev/sdb4. 添加替换盘
假设新盘为/dev/sdd:
sudo mdadm /dev/md0 --add /dev/sdd5. 观察重建进度
watch cat /proc/mdstat新硬盘的容量不能小于阵列要求的成员盘容量。重建期间也不应随意重启、断电或拔盘。
十八、RAID 运维中最常见的几个误区
误区一:RAID 就是备份
这是最常见也最危险的误区。
RAID 主要解决的是部分硬盘故障后的业务连续性问题,但它无法完全防止:
人为误删除;
勒索软件;
文件系统损坏;
应用错误写入;
多块硬盘同时故障;
RAID 控制器故障;
火灾、进水和设备丢失;
错误执行 Clear、Initialize 或 Delete。
因此:
RAID 提供冗余,但 RAID 不能代替备份。
Dell 和 Red Hat 的官方资料均明确强调,RAID 与备份承担不同角色,RAID 不能替代独立、可恢复的数据备份。
误区二:RAID 5 可以坏一块盘,所以不用管告警
RAID 5 的确可以容忍一块成员盘故障,但阵列进入 Degraded 状态后,已经失去了原本的单盘冗余能力。
如果迟迟不更换故障盘,又出现第二块成员盘故障,整个阵列可能失效。
正确做法是:
确认当前数据备份;
检查故障盘槽位和序列信息;
更换符合要求的新硬盘;
观察阵列重建;
重建完成后检查阵列一致性和告警状态。
误区三:看到 Foreign 直接 Clear
Foreign 可能恰恰代表硬盘中保存着需要恢复的原阵列信息。
如果在不确认数据需求的情况下执行 Clear,可能导致原有阵列无法正常导入。
正确顺序应该是:
先确认数据是否需要保留 再检查成员盘是否完整 最后决定Import还是Clear误区四:更换盘容量差不多就可以
RAID 成员盘对容量、接口、扇区格式、性能和兼容性都有要求。
新盘即使标称容量相同,实际可用扇区数也可能略小。如果替换盘小于原成员盘要求,控制器可能拒绝加入阵列。
生产环境最好按照服务器厂商和控制器兼容列表选择硬盘。
误区五:RAID 正在 Rebuild,可以随意重启或拔盘
重建期间阵列会读取正常成员盘并向新盘恢复数据,磁盘负载通常较高。
此时应避免:
随意拔出其他成员盘;
非必要断电;
错误更换槽位;
同时执行高风险存储操作;
忽略新增的介质错误或控制器告警。
十九、不同业务应该如何选择 RAID?
场景一:两块服务器系统盘
推荐优先考虑:
RAID 1原因:
配置简单;
可容忍一块系统盘故障;
系统恢复相对方便;
系统盘通常不需要特别大的容量。
场景二:三块及以上硬盘,追求容量利用率
可以评估:
RAID 5适合读取较多、写入压力适中,并且能够接受单盘容错的场景。
场景三:硬盘数量较多,数据可靠性要求较高
可以评估:
RAID 6双重校验可以提供更高的磁盘故障容错能力。
场景四:数据库、虚拟化和高随机 I/O
可以评估:
RAID 10RAID 10 通常具有较好的随机读写性能,同时具备镜像冗余,但容量成本较高。
场景五:纯临时数据或高速缓存
可以考虑:
RAID 0前提是数据可以重新生成,并且已经接受任意成员盘故障可能导致全部数据丢失的风险。
二十、RAID 上线前检查清单
创建阵列前
确认物理硬盘数量;
确认硬盘容量;
确认硬盘接口和介质类型;
确认是否存在 Foreign;
确认旧数据是否需要保留;
确认 RAID 级别;
确认是否配置热备盘;
确认系统盘和数据盘规划。
创建阵列后
检查虚拟磁盘状态;
检查初始化是否完成;
检查 RAID 级别和可用容量;
设置正确的启动逻辑磁盘;
检查操作系统是否识别磁盘;
完成分区和文件系统规划;
配置硬盘及控制器告警;
制定独立的数据备份策略。
更换故障盘后
再次核对故障盘槽位;
确认替换盘容量满足要求;
检查是否自动开始 Rebuild;
观察重建进度;
重建结束后确认阵列为 Optimal;
检查是否仍存在硬盘或控制器告警;
验证重要数据和业务状态。
总结
RAID 并不是简单地把几块硬盘“绑在一起”,而是在性能、容量、成本和可靠性之间进行权衡。
可以用下面几句话快速记忆:
RAID 0:只条带,不冗余,性能高但风险大。 RAID 1:做镜像,两块盘保存相同数据。 RAID 5:单重校验,可以容忍一块盘故障。 RAID 6:双重校验,可以容忍两块盘故障。 RAID 10:先镜像再条带,性能和可靠性兼顾。遇到 Foreign 状态时,最重要的不是立刻操作,而是先回答一个问题:
硬盘中的原有数据到底需不需要保留?
需要保留,就应优先评估 Import;确认不需要保留并完成必要备份后,才考虑 Clear。
最后必须再次强调:
RAID 解决的是磁盘故障容错和业务可用性问题,不是完整的数据备份方案。
只有将 RAID、告警监控、定期巡检、数据备份和恢复演练结合起来,才能真正建立可靠的服务器存储体系。