恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
一块硬盘不够快、也不够稳,多块“组团“怎么就把难题解了?——RAID 的冗余算术,一次讲透
首页
资讯中心
/
一块硬盘不够快、也不够稳,多块“组团“怎么就把难题解了?——RAID 的冗余算术,一次讲透
一块硬盘不够快、也不够稳,多块“组团“怎么就把难题解了?——RAID 的冗余算术,一次讲透
发布时间:2026/10/9 22:59:34
一块硬盘不够快、也不够稳多块组团怎么就把难题解了——RAID 的冗余算术一次讲透几年前有个朋友丢了移动硬盘里面是他拍了五年的照片一张都没留。他问我有没有办法恢复我只能摇头——单块机械硬盘一旦坏道、摔了、进水数据基本就交代了。后来我了解到服务器里的数据从来不会只放一块盘上。为什么答案就藏在一个词里RAID。你可能天天用着它却从没认真想过它到底怎么运作。这篇文章我把它从头拆到脚。一、先搞清楚单块盘到底输在哪机械硬盘HDD有两个天生短板。第一是慢。磁头要摆到对应的柱面、等盘片转到对的扇区这一趟寻道 旋转延迟下来是毫秒级。对比 CPU 的纳秒级运算硬盘慢了几十万倍——它是整个计算机里最拖后腿的部件之一。第二是脆。盘片是物理旋转的磁头是悬浮的稍有震动、发热、老化随时可能出坏道。数据说没就没。两个短板的解法其实是同一个思路一块不够就多来几块让它们协同工作。RAID 的全称叫Redundant Array of Independent Disks直译就是独立磁盘的冗余阵列。把好几块物理盘绑成一个逻辑盘对外看起来就是一块大硬盘。但协同有很多种玩法不同的玩法换来的是不同的东西——有的换速度有的换可靠有的两者都要点。下面逐个拆。二、RAID 0拆开并行速度翻倍但一颗子弹就完蛋RAID 0 的思路叫条带化striping把数据切成一片片固定大小的条带轮流写到不同的盘上。比如你要写 1MB 的数据有 4 块盘那就切成 4 份每块盘同时写 256KB。原本 1MB 要一块盘写 4 个时间单位现在 4 块盘并行1 个时间单位就写完了。理论上性能翻 4 倍读也一样。数据块: D0 D1 D2 D3 D4 D5 D6 D7 ... │ │ │ │ │ │ │ │ 磁盘0: D0 D4 ... 磁盘1: D1 D5 ... 磁盘2: D2 D6 ... 磁盘3: D3 D7 ...代价是什么零容错。4 块盘里任何一块挂掉数据就不完整了——因为你的每一份数据都被拆散分布在所有盘上。而且坏的概率反而更高了4 块盘的总故障率是 1 块的 4 倍。所以 RAID 0 的定位很明确要极致的速度能接受数据丢失的风险。用在那些数据可以随时重建、丢了也无所谓的场景比如视频剪辑的临时缓存、数据库的热数据副本。RAID 0 里的0其实不是冗余等级而是一个带点玩笑的说法——冗余是 0故障率却翻倍。三、RAID 1镜像容量砍半换来的双保险RAID 1 的思路是镜像mirroring每一份数据都一模一样地写到两块盘上。磁盘0: D0 D1 D2 D3 ... 磁盘1: D0 D1 D2 D3 ... 完全相同的副本好处立竿见影任何一块盘挂了另一块还在数据分毫不少。而且读性能也能翻倍——同一份数据存在两处可以同时从两块盘读不同的部分。坏处也直白花了两块盘的价钱和容量只得到一块盘的可用空间。容量利用率只有 50%。RAID 1 适合那种数据比命还值钱的场景核心数据库、财务系统、系统盘。它是最简单、也最直观的冗余方式。四、RAID 5奇偶校验用一块盘的代价换扛一块盘坏RAID 0 快但脆RAID 1 稳但贵。能不能折中RAID 5 给出了经典的答案。它的核心武器是奇偶校验parity而奇偶校验的数学基础是一个你早就认识的东西——异或运算XOR。先看异或的性质0 ⊕ 0 0 0 ⊕ 1 1 1 ⊕ 0 1 1 ⊕ 1 0异或有个绝妙的特性如果 A ⊕ B ⊕ C P那么丢掉任意一个都能用剩下的三个把它算回来。比如丢了 C那么 C A ⊕ B ⊕ P。这就是 RAID 5 的底层逻辑。假设有 4 块盘其中 3 块装数据1 块的对应位置装校验值磁盘0: D0 D3 P2 ... 这里是 P2 校验块 磁盘1: D1 P1 D5 ... 磁盘2: D2 D4 D6 ... 磁盘3: P0 D5 D7 ... 校验块轮流分散在不同盘上注意校验块 P 不是固定写在同一块盘而是轮流分散到每一块盘上。这样避免了校验盘成为读写热点的瓶颈。现在算一笔账。4 块盘1 块专门轮流存校验可用容量是3/4即 (n-1)/n。相比 RAID 1 的 50%同样的 4 块盘RAID 5 能多出整整一块盘的可用空间。更妙的是容错能力任意一块盘坏了系统还能继续工作降级运行换上新盘后用剩余的盘做异或把丢失的数据原地重建出来。我们举个具体数字感受一下这种魔法。假设三份数据 D011000001、D110100111、D201101100那校验块是P D0 ⊕ D1 ⊕ D2 11000001 ⊕ 10100111 ⊕ 01101100 00001010现在假设 D1 那块盘烧了。恢复它只需D1 D0 ⊕ D2 ⊕ P 11000001 ⊕ 01101100 ⊕ 00001010 10100111 ← 正是原来丢掉的数据一块盘坏了数据一块都不少地回来了。这不是运气是异或的确定性。代价是写性能比 RAID 0 差一些——每次写数据都要额外算一次校验、多写一块盘有读改写的开销。但换来的是扛一块盘坏的能力性价比极高是中大型企业最常用的 RAID 级别。五、RAID 6 与 RAID 10往两个方向继续加码RAID 5 能扛一块盘坏但有个隐患降级运行期间已经坏了一块、正在重建另一块时如果又坏一块数据就真没了。磁盘容量越来越大重建一块 16TB 的盘要十几个小时这段裸奔时间里风险并不低。于是有了 RAID 6用两个独立的校验值通常基于不同的算法比如 Reed-Solomon 编码能同时容忍两块盘故障。代价是可用容量变成 (n-2)/n。而 RAID 10RAID 10走的是另一条路先做镜像RAID 1再做条带化RAID 0。既拿到条带化的性能又拿到镜像的可靠但成本也最贵——容量利用率 50%至少需要 4 块盘。RAID 0 条带化上层 │ ┌───────┴───────┐ RAID 1 RAID 1 下层镜像对 磁盘A 磁盘B 磁盘C 磁盘DRAID 10 的性能和可靠性都极其出色属于不差钱的企业的选择尤其适合数据库这种对随机读写性能要求高的负载。六、一张表把这些级别摆平级别最少盘数容量利用率容错能力读性能写性能一句话定位RAID 02100%无高最高只要快数据能重建RAID 1250%1 块较高一般双保险简单直观RAID 53(n-1)/n1 块高中等有校验开销性价比之王RAID 64(n-2)/n2 块高较低双校验大容量时代的保守选择RAID 10450%每对可坏 1 块高高性能与可靠兼得但费盘看到这张表你可能意识到一件事RAID 从来不是越高级越好而是一道用多少钱、买多少性能、买多少安心的算术题。选哪一级取决于你更怕慢还是更怕丢。七、408 里怎么考以及它跟校验码的亲戚关系RAID 虽然在 408 操作系统文件管理 / 外存管理里不是每年必考的大题但它和两样东西强相关命题人特别爱把它们串起来考。第一是组成原理里的奇偶校验 / 海明码。RAID 5 用的是奇偶校验思想本质上和计组里奇偶校验码能检错、海明码能纠错是同一套冗余换可靠的哲学。我之前写过一篇讲海明码的文章核心就一句话检错纠错的本质是往数据里掺进可控的冗余再用这套冗余去算回丢掉的信息。RAID 的异或校验是这套思想在块设备层面的放大版。第二是磁盘读写与 I/O 性能。为什么 RAID 0 能提速因为它把顺序 I/O 变成了并行 I/O。这个点会和磁盘调度算法“块大小”寻道时间这些 OS 存储知识点绑在一起出选择题。所以备考时别把 RAID 当成孤立名词背。它一头连着计组的校验码一头连着 OS 的磁盘 I/O是典型的跨科目知识。复习的时候把这三条线串起来比各背各的效率高得多。这类散落在不同章节、需要串线的知识点正是容易学了就忘、考了就不会的地方。建议把 RAID、校验码、磁盘调度收进 CoLearnyantucs.com的 AI 错题集里考前专门过一次概念上卡壳直接丢给 AI 答疑问RAID 5 为什么坏一块盘还能恢复数据它会从异或的角度给你推一遍。写在最后RAID 这个东西说白了就是把一个朴素的道理落到了工程里再结实的单点也架不住时间与其押注一块盘永远不坏不如让多块盘互相兜底。冗余听起来是浪费——多买盘、少容量、多算校验。可正是这点浪费换来了数据在意外面前的那份从容。回到开头那个丢了五年照片的朋友。如果他的照片放在一个 RAID 1 或 RAID 5 上故事的结局会完全不一样。技术不负责创造奇迹但它能把万一的概率压到你安心睡觉的程度。想系统补齐这些底层原理的硬知识推荐 B站【408实验室】的《数据结构》与操作系统相关课程跟着把存储、I/O 这条线从原理到计算练扎实比零散刷题管用得多。