一文彻底搞懂RAID:RAID 0/1/5/6/10原理、选型、Foreign故障排查与Linux实战

一文彻底搞懂RAID:RAID 0/1/5/6/10原理、选型、Foreign故障排查与Linux实战

文章摘要:

本文从条带化、镜像和奇偶校验三个核心机制出发,详细讲解 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 主要用于在以下几个目标之间取得平衡:

  1. 提升磁盘读写性能;

  2. 提高数据可用性;

  3. 提供一定的磁盘故障容错能力;

  4. 将多块硬盘整合为更大的逻辑存储空间。

不同 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 A6

2. 基本特点

  • 最少需要 2 块硬盘;

  • 没有镜像;

  • 没有奇偶校验;

  • 不具备磁盘故障容错能力;

  • 任意一块成员盘损坏,都可能导致整个阵列不可用。

3. 可用容量

可用容量 = N × S

例如,两块 1 TB 硬盘组成 RAID 0:

可用容量 = 2 × 1 TB = 2 TB

4. 优点

  • 磁盘利用率高;

  • 顺序读写性能较好;

  • 多块磁盘可以并行处理数据。

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 TB

4. 优点

  • 能够容忍两块硬盘故障;

  • 可靠性高于 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 B2

2. 基本特点

常见 RAID 10:

  • 至少需要 4 块硬盘;

  • 成员盘数量通常为偶数;

  • 同时使用镜像和条带化;

  • 兼顾性能与冗余。

部分软件 RAID 实现对最小磁盘数量和布局有不同规则,具体应以操作系统和管理工具为准。

3. 可用容量

对于常见的偶数盘 RAID 10:

可用容量 = N ÷ 2 × S

例如,4 块 2 TB 硬盘组成 RAID 10:

可用容量 = 4 ÷ 2 × 2 TB = 4 TB

4. 容错能力

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 02N × S性能高、利用率高任意一盘故障都可能导致阵列失效
RAID 12S常见双盘场景可坏1盘简单可靠、恢复方便容量利用率低
RAID 53(N-1) × S可坏1盘容量、性能、可靠性较均衡校验写入开销、降级重建风险
RAID 64(N-2) × S可坏2盘容错能力较强写入开销更高
RAID 104N/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 控制器在硬盘中发现了不属于当前本地配置的阵列元数据。

常见原因包括:

  1. 硬盘曾经在其他服务器或 RAID 控制器中使用;

  2. 硬盘之前属于某个 RAID 阵列;

  3. RAID 控制器或主板更换;

  4. 硬盘被拔出后重新插入;

  5. 控制器配置丢失,但硬盘中仍保留原阵列信息;

  6. 多块硬盘没有按照原阵列完整接入;

  7. 新服务器使用了没有清理 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/sdc

2. 安装 mdadm

在基于 RPM 的发行版中,可以使用:

sudo dnf install -y mdadm

部分旧版本系统也可能使用:

sudo yum install -y mdadm

3. 创建 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/mdstat

5. 查看详细信息

sudo mdadm --detail /dev/md0

重点关注:

Raid Level Array Size State Active Devices Working Devices Failed Devices Spare Devices

6. 创建文件系统

sudo mkfs.xfs /dev/md0

7. 创建挂载目录

sudo mkdir -p /data/raid1

8. 挂载 RAID

sudo mount /dev/md0 /data/raid1

9. 检查挂载结果

df -Th /data/raid1

十七、模拟软件 RAID 磁盘故障

假设/dev/sdb是需要模拟故障的成员盘。

1. 标记为故障

sudo mdadm /dev/md0 --fail /dev/sdb

2. 查看阵列状态

sudo mdadm --detail /dev/md0 cat /proc/mdstat

此时阵列可能显示为降级状态,但 RAID 1 仍可通过另一块正常磁盘继续工作。

3. 移除故障盘

sudo mdadm /dev/md0 --remove /dev/sdb

4. 添加替换盘

假设新盘为/dev/sdd

sudo mdadm /dev/md0 --add /dev/sdd

5. 观察重建进度

watch cat /proc/mdstat

新硬盘的容量不能小于阵列要求的成员盘容量。重建期间也不应随意重启、断电或拔盘。


十八、RAID 运维中最常见的几个误区

误区一:RAID 就是备份

这是最常见也最危险的误区。

RAID 主要解决的是部分硬盘故障后的业务连续性问题,但它无法完全防止:

  • 人为误删除;

  • 勒索软件;

  • 文件系统损坏;

  • 应用错误写入;

  • 多块硬盘同时故障;

  • RAID 控制器故障;

  • 火灾、进水和设备丢失;

  • 错误执行 Clear、Initialize 或 Delete。

因此:

RAID 提供冗余,但 RAID 不能代替备份。

Dell 和 Red Hat 的官方资料均明确强调,RAID 与备份承担不同角色,RAID 不能替代独立、可恢复的数据备份。


误区二:RAID 5 可以坏一块盘,所以不用管告警

RAID 5 的确可以容忍一块成员盘故障,但阵列进入 Degraded 状态后,已经失去了原本的单盘冗余能力。

如果迟迟不更换故障盘,又出现第二块成员盘故障,整个阵列可能失效。

正确做法是:

  1. 确认当前数据备份;

  2. 检查故障盘槽位和序列信息;

  3. 更换符合要求的新硬盘;

  4. 观察阵列重建;

  5. 重建完成后检查阵列一致性和告警状态。


误区三:看到 Foreign 直接 Clear

Foreign 可能恰恰代表硬盘中保存着需要恢复的原阵列信息。

如果在不确认数据需求的情况下执行 Clear,可能导致原有阵列无法正常导入。

正确顺序应该是:

先确认数据是否需要保留 再检查成员盘是否完整 最后决定Import还是Clear

误区四:更换盘容量差不多就可以

RAID 成员盘对容量、接口、扇区格式、性能和兼容性都有要求。

新盘即使标称容量相同,实际可用扇区数也可能略小。如果替换盘小于原成员盘要求,控制器可能拒绝加入阵列。

生产环境最好按照服务器厂商和控制器兼容列表选择硬盘。


误区五:RAID 正在 Rebuild,可以随意重启或拔盘

重建期间阵列会读取正常成员盘并向新盘恢复数据,磁盘负载通常较高。

此时应避免:

  • 随意拔出其他成员盘;

  • 非必要断电;

  • 错误更换槽位;

  • 同时执行高风险存储操作;

  • 忽略新增的介质错误或控制器告警。


十九、不同业务应该如何选择 RAID?

场景一:两块服务器系统盘

推荐优先考虑:

RAID 1

原因:

  • 配置简单;

  • 可容忍一块系统盘故障;

  • 系统恢复相对方便;

  • 系统盘通常不需要特别大的容量。


场景二:三块及以上硬盘,追求容量利用率

可以评估:

RAID 5

适合读取较多、写入压力适中,并且能够接受单盘容错的场景。


场景三:硬盘数量较多,数据可靠性要求较高

可以评估:

RAID 6

双重校验可以提供更高的磁盘故障容错能力。


场景四:数据库、虚拟化和高随机 I/O

可以评估:

RAID 10

RAID 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、告警监控、定期巡检、数据备份和恢复演练结合起来,才能真正建立可靠的服务器存储体系。