磁盘阵列(RAID)科普:从原理到实践

举报
暮山紫 发表于 2026/09/05 09:32:07 2026/09/05
【摘要】 磁盘阵列(RAID)科普:从原理到实践磁盘阵列,通常称为 RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列),是一种把多块物理磁盘组合起来,对外表现为一个或多个逻辑磁盘的技术。它的核心目标有三个:提高性能、增加容量、提升可靠性。自 1987 年提出以来,RAID 已成为服务器、NAS、高性能工作站乃至许多家用存储设备的基础技术。一、RAID...

磁盘阵列(RAID)科普:从原理到实践

磁盘阵列,通常称为 RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列),是一种把多块物理磁盘组合起来,对外表现为一个或多个逻辑磁盘的技术。它的核心目标有三个:提高性能、增加容量、提升可靠性。自 1987 年提出以来,RAID 已成为服务器、NAS、高性能工作站乃至许多家用存储设备的基础技术。

一、RAID 的基本思想

单块磁盘无论速度、容量还是可靠性都有上限。RAID 的思路是让多块磁盘协同工作:

  • 条带化(Striping):把连续数据切分成小块,分散写入多块磁盘。这样读写可以并行进行,大幅提升吞吐量。

  • 镜像(Mirroring):把同一份数据完整写到两块或多块磁盘上。一块损坏时,另一块仍可提供完整数据。

  • 奇偶校验(Parity):根据数据计算校验信息并单独存放。当某块磁盘损坏时,可通过剩余数据和校验信息反推出丢失的数据。

这三种基本机制组合出不同的 RAID 级别。

二、常见 RAID 级别

RAID 0——纯条带,无冗余

RAID 0 把数据按块平均分散到所有磁盘。最少 2 块盘。

  • 容量:所有磁盘容量之和(按最小盘计算后相加)。

  • 性能:顺序读写性能约为单盘的 N 倍,随机性能也有明显提升。

  • 容错:完全没有。任何一块盘损坏,所有数据全部丢失。

  • 适用场景:对速度要求极高且数据可丢失或可从其他来源快速恢复的场合,如临时缓存、视频编辑暂存盘、游戏加载盘。

RAID 0 的“0”也常被调侃为“你失去的数据量”。

RAID 1——镜像

RAID 1 将数据完整写入两块磁盘。最少 2 块盘。

  • 容量:等于单块盘容量。

  • 性能:读性能可以接近单盘的两倍(从两块盘同时读不同请求),写性能与单盘相当或略低。

  • 容错:允许 1 块盘损坏。

  • 适用场景:操作系统盘、小型数据库、对可靠性要求高但容量需求不大的环境。

RAID 1 简单可靠,但磁盘利用率只有 50%。

RAID 5——分布式奇偶校验

RAID 5 使用条带化,并在每个条带中写入一份奇偶校验信息,校验信息轮流存储在所有磁盘上。最少 3 块盘。

  • 容量:(N-1) × 最小盘容量。

  • 性能:读性能接近 RAID 0;顺序写性能尚可,但随机写存在“写惩罚”,性能明显低于单盘。

  • 容错:允许 1 块盘损坏。

  • 适用场景:传统文件服务器、归档存储、读多写少的应用。

RAID 5 曾是企业存储的主流选择。但随着单盘容量增大,重建时间和风险急剧上升,RAID 5 在大容量场景下已不再被普遍推荐。

RAID 6——双重奇偶校验

RAID 6 与 RAID 5 类似,但每个条带包含两份独立的奇偶校验信息。最少 4 块盘。

  • 容量:(N-2) × 最小盘容量。

  • 性能:读性能与 RAID 5 接近;随机写性能更差,因为每次写需要更新两份校验。

  • 容错:允许同时损坏 2 块盘。

  • 适用场景:大容量存储、对数据安全性要求较高的文件服务器、备份存储池。

RAID 6 解决了 RAID 5 在重建期间再坏一块盘导致数据全丢的问题,但写惩罚也更重。

RAID 10(1+0)——镜像条带

RAID 10 先做 RAID 1 镜像,再对镜像对做 RAID 0 条带。通常需要至少 4 块盘,且盘数一般为偶数。

  • 容量:(N/2) × 最小盘容量,磁盘利用率 50%。

  • 性能:读性能接近 RAID 0,写性能也优于 RAID 5/6,因为不需要计算奇偶校验。

  • 容错:每组镜像中允许损坏 1 块盘。理论上最多可承受 N/2 块盘损坏,但前提是每组镜像中至少保留 1 块好盘。

  • 适用场景:数据库、虚拟化平台、高负载应用服务器等对性能和数据安全都有较高要求的场景。

RAID 10 综合性能最好,但成本也最高。

其他级别

  • RAID 2/3/4:早期使用独立校验盘或位级条带,现已被 RAID 5 取代。

  • RAID 50/60:将多个 RAID 5/6 组再进行 RAID 0 条带,适合大规模存储。

  • JBOD:严格说不是 RAID,只是把多块盘串联成一个逻辑卷,无条带无冗余。

三、常见 RAID 级别对比



级别 最少盘数 容量利用率 读性能 写性能 容错能力 典型场景
RAID 0 2 100% 极好 极好 临时/缓存
RAID 1 2 50% 一般 1 块 系统盘
RAID 5 3 (N-1)/N 差(随机写) 1 块 文件存储
RAID 6 4 (N-2)/N 很差(随机写) 2 块 大容量存储
RAID 10 4 50% 极好 每组 1 块 数据库/虚拟化

四、关键机制与术语

条带与块大小

条带大小(stripe size)指一个完整条带覆盖的数据量,块大小(chunk size)是每块磁盘上连续写入的数据单元。块大小通常在 32 KB 到 1 MB 之间。块大小过小会带来更多 I/O 开销,过大则可能降低并行度。选择时需结合工作负载的 I/O 特性。

热备盘与重建

热备盘(Hot Spare)是预先接入阵列但不参与日常读写的磁盘。当某块成员盘损坏时,RAID 控制器会自动用热备盘替换,并开始重建(Rebuild)。重建过程会读取所有存活磁盘的全部数据,重新计算并写入新盘。

写惩罚与写洞

RAID 5/6 的随机写需要“读-改-写”过程:先读取旧数据和旧校验,计算新校验,再写回数据和校验。一次逻辑写可能引发多次物理 I/O,称为写惩罚。

“写洞”(Write Hole)是指写入数据后、写入校验前发生断电或崩溃,导致数据与校验不一致。此时如果恰好有磁盘损坏,重建时无法正确恢复。硬件 RAID 卡和现代软件 RAID 通常使用日志或非易失性缓存来缓解此问题。

缓存与掉电保护

RAID 控制器常配备缓存(Cache)以提升性能,尤其是随机写性能。写请求进入缓存后立即返回,控制器稍后批量写入磁盘。为了防止断电导致缓存中未写入的数据丢失,硬件 RAID 卡通常带有电池(BBU)或超级电容,确保断电后仍能将缓存数据写入磁盘。

URE 与重建风险

不可恢复读错误(Unrecoverable Read Error,URE)是磁盘读取时无法纠正的错误。消费级机械硬盘的 URE 指标通常为每 10¹⁴ 位出现 1 次,约等于 12.5 TB。企业级硬盘为每 10¹⁵ 位 1 次,约 125 TB。

当 RAID 5 的一块磁盘损坏后,重建需要完整读取其他所有磁盘的数据。如果阵列容量很大,读取过程中遇到一个 URE,重建就会失败,数据可能部分丢失。这正是大容量盘不建议继续使用 RAID 5 的根本原因。RAID 6 由于有双重校验,重建时可以容忍一个 URE,因此更安全。

五、硬件 RAID 与软件 RAID

硬件 RAID

由独立的 RAID 控制器卡(如 Broadcom/LSI MegaRAID、Microchip Adaptec)实现。控制器上有专用处理器、内存和缓存,不占用主机 CPU 资源。

优点:性能稳定,功能丰富,带电池保护,对操作系统透明。
缺点:成本高,控制器本身成为单点故障,更换不同型号控制器可能无法识别原有阵列。

软件 RAID

由操作系统或文件系统实现,如 Linux 的 mdadm、Windows 存储空间、ZFS 的 RAID-Z。

优点:成本低,不受硬件绑定,可灵活迁移,现代 CPU 性能足够处理 RAID 计算。
缺点:占用一定主机资源,无独立缓存,极端情况下性能可能低于硬件 RAID。

此外还有“主板 FakeRAID”,介于两者之间,依赖驱动和 CPU,可靠性一般,通常不建议用于生产环境。

六、RAID 不是备份

这是一个必须反复强调的观念:RAID 解决的是“可用性”问题,不是“数据保护”问题

RAID 可以防止因单块或多块磁盘物理损坏导致的停机或数据丢失,但它无法应对以下情况:

  • 误删除、误修改文件;

  • 病毒或勒索软件加密;

  • 文件系统损坏或软件 Bug;

  • 火灾、水浸、雷击等物理灾害;

  • 控制器损坏导致整个阵列无法识别;

  • 多块磁盘同时损坏超过容错上限。

因此,RAID 仍需配合定期备份(如 3-2-1 备份策略)、快照和异地容灾。备份才是数据安全的最后防线。

七、现代发展与替代技术

随着单盘容量不断增大、SSD/NVMe 普及以及分布式存储兴起,RAID 也在演进。

RAID-Z 与 ZFS

ZFS 文件系统的 RAID-Z 模式对传统 RAID 5/6 进行了改进。它使用可变条带宽度,写入时以完整条带为单位,避免了“读-改-写”写惩罚,也通过写时复制和校验解决了写洞问题。RAID-Z1 类似 RAID 5,RAID-Z2 类似 RAID 6,RAID-Z3 可容忍 3 块盘损坏。

纠删码

纠删码(Erasure Coding)是 RAID 思想的通用化。它把数据分割成 k 份,再生成 m 份校验,总共 k+m 份分散存储,任意丢失 m 份仍可恢复。相比传统 RAID,纠删码支持更灵活的冗余配置(如 8+3、10+4),在 Ceph、MinIO 等分布式存储系统中广泛应用。

NVMe 与 RAID

NVMe SSD 的随机性能远超传统机械硬盘,传统硬件 RAID 卡可能成为瓶颈。因此,许多 NVMe 存储系统改用软件 RAID 或主机端直通加文件系统级冗余(如 vSAN、SPDK)。同时,一些新协议如 NVMe-oF 和计算型存储也在改变阵列的构建方式。

八、如何选择 RAID 级别

没有绝对正确的 RAID 级别,只有最适合当前场景的选择。一些经验建议:

  • 系统盘/少量热数据:RAID 1 或 RAID 10。

  • 数据库/虚拟化高性能环境:RAID 10。

  • 大容量文件共享/备份存储:RAID 6 或 RAID-Z2。

  • 读写需求高、数据可重建:RAID 0(但需接受风险)。

  • 家用 NAS 两盘位:RAID 1;四盘位以上可选 RAID 5、RAID 6 或 RAID 10。

  • 超过 8 块盘:考虑 RAID 50/60 或分布式纠删码。

选择时还要关注磁盘类型(HDD 或 SSD)、容量、控制器性能、重建时间和预算。

结语

磁盘阵列是存储技术中承上启下的关键一环。它用简单的数学和工程手段,将不可靠的单块磁盘组合成性能更强、更可靠的存储系统。理解 RAID 的原理和局限,能帮助我们在性能、容量、可靠性与成本之间做出更理性的权衡。无论技术如何演进,数据始终是核心,而 RAID 只是保护数据的手段之一——永远不要忘记备份。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。