flykey
发布于 2026-08-13 / 0 阅读
0

RAID 磁盘阵列 · 系统知识笔记

第一部分 · 速查表(先看这里)

T1 · 级别选型主表

级别

最少盘

可用容量

容错

随机写

顺序读

利用率

重建速度

典型场景

RAID 0

2

N×S

0

极强

极强

100%

无法重建

渲染缓存、临时数据

RAID 1

2

1×S

N-1

中

高

50%

最快

系统盘、日志

RAID 5

3

(N-1)×S

1

弱

高

(N-1)/N

慢

≤4TB 盘的文件服务

RAID 6

4

(N-2)×S

2

最弱

高

(N-2)/N

最慢

大容量归档、NAS 默认

RAID 10

4(偶数)

N/2×S

每组1块

强

极强

50%

快

数据库、虚拟化

RAID 50

6

(N-2)×S

每组1块

中

高

较高

中

大型文件服务

RAID 60

8

(N-4)×S

每组2块

弱

高

较低

中慢

超大规模归档

RAIDZ1

3

(N-1)×S

1

弱

高

高

慢

小容量 ZFS 池

RAIDZ2

4

(N-2)×S

2

最弱

高

较高

最慢

ZFS 大池默认

ZFS Mirror

2

1×S

N-1

强

高

50%

最快

VM 存储、需扩容

S = 单盘容量,N = 盘数。重建速度一列是相对比较,绝对数值看 T2/T3。

T2 · 重建时间主表(按单盘容量 × 重建速率)

这是全篇最关键的一张表。重建时间 ≈ 单盘容量 ÷ 有效重建速率(校验型的额外开销见 T3)。

单盘容量

30 MB/s
(繁忙/低端)

50 MB/s
(典型 NAS)

100 MB/s
(轻载/企业级)

150 MB/s
(高速盘/调优后)

2 TB

19 h

11 h

5.6 h

3.7 h

4 TB

37 h

22 h

11 h

7.4 h

6 TB

2.3 天

33 h

17 h

11 h

8 TB

3.1 天

44 h

22 h

15 h

10 TB

3.9 天

2.3 天

28 h

19 h

12 TB

4.6 天

2.8 天

33 h

22 h

16 TB

6.2 天

3.7 天

44 h

30 h

18 TB

6.9 天

4.2 天

2.1 天

33 h

20 TB

7.7 天

4.6 天

2.3 天

37 h

24 TB

9.3 天

5.6 天

2.8 天

44 h

30 TB

11.6 天

6.9 天

3.5 天

2.3 天

数据来源:按容量 ÷ 速率的标准估算模型。实际值受盘型号、阵列负载、控制器影响很大。

速率怎么取:消费级 NAS(群晖 DS / 威联通 TS 系列)轻载时通常 50–100 MB/s,边用边重建会掉到 30–60 MB/s。现代 16–22TB 氦气 CMR 盘外圈能跑 200–280 MB/s、内圈降到 100–140 MB/s,全盘平均约 150 MB/s。

T3 · 各级别的重建开销系数

T2 是"基准时间",实际还要乘上级别开销。以 4TB 盘、80 MB/s​ 为基准的实测/估算对照:

级别

4TB 重建耗时

相对开销

原因

RAID 1

~14 h

1.0×(基准)

纯镜像拷贝,无运算

RAID 10

~14 h(4TB);19.3 h(12TB 实测)

1.0×

只读镜像伙伴,不算校验

RAID 5

20–24 h(4TB);32.7 h(12TB 实测)

1.4–1.6×

读全部幸存盘 + XOR 校验

RAID 6

25–32 h(4TB);58.4 h(12TB 实测)

1.8–2.3×

双校验 P+Q 运算

RAID 6 坏两块

50–60 h(4TB)

~4×

双重重建

RAID 50

介于 RAID 5 与 RAID 0 之间

—

只重建故障子组

RAID 60

介于 RAID 6 与 RAID 0 之间

—

只重建故障子组

12TB 实测组(4×12TB IronWolf + LSI 9300-8i,128KB 顺序写):RAID 1 8.2h / RAID 10 19.3h / RAID 5 32.7h / RAID 6 58.4h。这组数字很直观地说明:同样 12TB 的盘,RAID 6 的重建窗口是 RAID 1 的 7 倍。

T4 · ZFS resilver 时间

ZFS 的 mirror 只重建已用空间,RAIDZ 必须遍历全部数据,两者差距很大:

vdev 大小

Mirror resilver

RAIDZ2 resilver

1 TB

~30 min

~1 h

4 TB

~2 h

~4 h

10 TB

~5 h

~12 h

50 TB

~24 h

~3 天

社区经验线:resilver 超过 24 小时即视为不安全;OpenZFS 社区建议控制在 12 小时内,生产环境常以 4 小时为目标。这条线意味着——用 20TB 盘做单个大 RAIDZ2 vdev 是危险的,应该拆成多个小 vdev。

T5 · 备份速查(核心)

问题

答案

RAID 是备份吗?

不是。​ RAID 只保硬件故障时的业务连续性

快照是备份吗?

不是。​ 与源数据同盘,阵列崩了快照一起没

异地复制是备份吗?

不是。​ 误删和勒索会同步过去

冗余 = 备份?

不等于。​ 冗余是"同一时刻的多份在线副本",备份是"独立的、可回溯的历史副本"

3-2-1 是什么?

3 份副本、2 种介质、1 份异地

离线/不可变才算数?

是。能防勒索的只有不可变(immutable)或离线副本


第二部分 · 恢复时间详解

2.1 为什么重建这么慢

重建不是"把数据拷回来"那么简单,瓶颈来自四处:

  1. 必须读全部幸存盘:校验型 RAID 每重建一个条带,都要把该条带在其余所有盘上的块全部读一遍再反算。盘越多,读放大越严重。

  2. 校验运算吃资源:RAID 5 算 XOR,RAID 6 还要算伽罗瓦域的 Q,控制器或 CPU 成为瓶颈。

  3. 最慢的盘定节奏:整条重建流水线的速度由阵列中最慢的那块盘决定,老盘往往是短板。

  4. 业务负载抢带宽:NAS 边重建边跑 Plex、Docker、备份任务,有效速度会掉 30–50%。

另外,硬件限制也会突然冒出来:盘数一多,可能撞上 HBA 带宽上限、电源 12V 轨供电不足或机箱散热导致的降速。

2.2 重建窗口 = 风险窗口

这是理解现代 RAID 选型的钥匙。重建期间阵列处于裸奔状态:

级别

重建期间的剩余冗余

此时再坏 1 块

此时遇到 URE

RAID 5 / RAIDZ1

0​

全盘数据丢失

重建中断,该条带永久丢失

RAID 6 / RAIDZ2

1(降为 RAID 5 水平)

可继续

可算回,重建继续

RAID 1 / RAID 10

看坏在哪一组

同组则丢失

另一副本可读

RAID 0

不适用

—

—

风险分级(按重建时长):

重建时长

风险等级

处置

< 12 h

低

正常监控

12–24 h

中

重点监控

24–48 h

高

密切监控,减负载

> 48 h

危险​

应立即改造配置(降容量/提级别/加备份)

对照 T2:一块 16TB 的盘在典型 NAS(50 MB/s)上要跑 3.7 天——直接落在危险区。这就是为什么"8TB 以上必须双校验"不是玄学,是算术。

2.3 URE:重建失败的头号杀手

URE(不可恢复读错误)指某扇区重试和 ECC 都读不出来。标称错误率(UBER):

盘类型

UBER

大致含义

消费级 HDD

1/10¹⁴ 位

每读约 12TB 撞一次

企业级/近线 HDD

1/10¹⁵ 位

每读约 120TB 撞一次

SATA SSD

1/10¹⁶ 位

—

NVMe SSD

1/10¹⁷ 位

—

按 1-(1-UBER)^读取位数 估算的 RAID 5 重建失败概率:

配置

重建读取量

消费级盘

企业级盘

3×4TB

8 TB

6.2%

0.6%

4×8TB

24 TB

17.5%

1.9%

5×12TB

48 TB

32.1%

3.7%

6×16TB

80 TB

47.2%

6.2%

8×18TB

126 TB

63.6%

9.6%

读法:这不是"一定会坏",是"赌不起"。消费级盘 + 16TB 以上,失败概率接近抛硬币。

2.4 怎么缩短重建窗口

手段

效果

备注

上热备盘(Hot Spare)

消除等待换盘的时间

不增加冗余,只缩短降级窗口

冷备盘(买好放抽屉)

几乎同效,不占盘位

性价比更高

提高重建优先级

显著提速,业务变慢

群晖/威联通存储管理器可调;mdadm 调 /proc/sys/dev/raid/speed_limit_max

重建期间停业务

提速 30–50%

暂停转码、备份任务、大文件拷贝

用 Synology Fast Repair

只重建已用空间,可省一半

仅池容量 ≤80% 时生效

选小容量盘、多盘

单盘重建量变小

同样总容量下更快、更安全

ZFS 用 mirror vdev

只重建已用数据

RAIDZ 必须遍历全盘

把阵列拆成多个小 vdev

重建范围受限

ZFS 推荐 4–8 盘一个 vdev

接 UPS

防中断

断电可能让重建前功尽弃


第三部分 · 备份(核心章节)

3.1 RAID 挡得住什么,挡不住什么

情形

RAID 能挡吗

备份能挡吗

单块硬盘物理损坏

✅

✅

两块盘同时损坏(RAID 6 内)

✅

✅

重建期间二次故障

❌(超容错配额即全损)

✅

误删除 / 误格式化

❌ 同步发生

✅

勒索病毒加密

❌ 同步发生

✅(需离线/不可变)

文件系统逻辑损坏

❌

✅

控制器故障 / 元数据损坏

❌

✅

整机被盗、火灾、水浸

❌

✅(需异地)

位衰减(静默损坏)

部分(ZFS scrub 可修)

✅

一句话:RAID 保的是"服务不中断",备份保的是"数据还在"。两者的失效场景几乎不重叠。

3.2 冗余 ≠ 备份

这是最容易被混为一谈的一对概念:

冗余(Redundancy)

备份(Backup)

形态

同一份数据的多个在线副本

独立存储的历史副本

时间维度

只有"现在"

有多个时间点的版本

位置

通常在同一机箱/阵列

独立设备,最好异地

联动性

实时同步,误操作立即生效

独立,误操作不影响历史版本

防什么

硬件故障、介质损坏

逻辑错误、人为失误、灾害

典型实现

RAID 1/5/6/10、RAIDZ

rsync/Borg/restic、快照到异地、磁带

判断口诀:冗余是"多份一样的东西放在一起",备份是"多份不一样时间点的东西放在不同地方"。冗余再多,也不能替代一份备份。

3.3 3-2-1 规则怎么落地

3 份副本:生产数据 1 份 + 本地备份 1 份 + 异地备份 1 份。

2 种介质:比如 阵列(HDD)+ 外置盘/磁带/对象存储,避免同一介质的共性缺陷。

1 份异地:放不同物理位置(另一栋楼、另一城市、云上),防盗窃/火灾/水浸。

每一条怎么算、怎么落地

"3" 怎么算——份数指独立的数据副本数,不是拷贝的份数。

  • ❌ 错误算法:阵列里 4 块盘做 RAID 6 = 4 份?不,这算 1 份(一个阵列 = 一份逻辑数据)。

  • ✅ 正确算法:NAS 上的数据(1)+ 外接 USB 盘的备份(2)+ 云端/异地 NAS 的备份(3)。

"2" 怎么算——介质类型要真的不同。

  • ❌ 同一台 NAS 里两个存储池 = 1 种介质(同一个机箱、同一套控制器、同一份电源)。

  • ✅ NAS 阵列(HDD RAID)+ 磁带/蓝光/云对象存储 = 2 种。

  • 注意:两块外接 HDD 算同一种介质,但如果是"一块本地盘 + 一块异地盘",靠异地这条独立成立。

"1" 异地怎么算——必须物理隔离。

  • ❌ 同屋的另一个机柜、同一栋楼的另一层(火灾水浸一起完)。

  • ✅ 另一栋建筑、另一城市、云对象存储(S3/OSS/COS)。

  • 异地那份最好同时满足离线或不可变,才能防勒索病毒顺网络爬过去。

扩展规则 3-2-1-1-0

更严格的现代版本,专门针对勒索病毒:

  • 3​ 份副本

  • 2​ 种介质

  • 1​ 份异地

  • 1​ 份离线或不可变(immutable,写后不可改,防勒索和误删)

  • 0​ 错误:定期做恢复演练验证,确保备份真的能读回来

3.4 这些"看起来像备份"的东西都不是备份

假备份

为什么不算

RAID 阵列

只防硬件故障,误删/勒索同步发生

快照(Snapshot / Time Machine)

与源数据在同一套盘上,阵列崩了快照一起没

异地复制(Replication / zfs send)

误删和加密会同步到目标端

网盘同步(Dropbox / OneDrive 同步盘)

删除和覆盖会同步,不是版本化备份

同一台机器上的第二块硬盘

同电源、同控制器、同机箱、同灾难

组里另一台服务器的副本(同机房)

火灾、水浸、盗窃、断电一起中招

关键判断标准:如果你的主数据在某个瞬间被全部抹掉或加密,这份"备份"会不会同时遭殃?会 → 不是备份。

3.5 备份策略怎么设计

备份类型:

类型

内容

速度

恢复

常用频率

全量(Full)

全部数据

最慢、最占空间

最快(一次搞定)

每周/每月

增量(Incremental)

上次备份后的变化

最快、最省空间

最慢(要链式回放)

每天

差异(Differential)

上次全量后的变化

中等

中等(全量+最后一次差异)

每天

永久增量 / 合成全量

增量累积,后台合成

快

快(等价于全量)

现代备份软件主流

轮转策略(GFS:Grandfather-Father-Son):保留每日(近期 7–14 份)、每周(4–8 份)、每月(12 份)、每年若干份,形成时间梯度。这样既能找回"昨天的误删",也能找回"半年前被覆盖的版本"。

推荐组合(按规模):

规模

建议方案

个人 / 家庭 NAS

阵列(RAID 6/SHR-2)+ 外接硬盘定期全量 + 云端对象存储加密备份;开快照防误删

小型团队

主存储 + 本地备份服务器(Borg/restic 去重加密)+ 异地/云;每周恢复演练

企业

主存储 + 备份一体机 + 异地容灾中心 + 磁带/不可变存储;RPO/RTO 写进 SLA,季度演练

RPO / RTO(定备份频率的关键指标):

  • RPO(恢复点目标):能容忍丢多少数据 → 决定备份频率。RPO=1 小时就要每小时备份一次。

  • RTO(恢复时间目标):能容忍多久恢复 → 决定备份介质和架构。RTO=30 分钟就不能用磁带慢慢倒。

3.6 没验证过的备份等于没有备份

必须定期做的三件事:

  1. 恢复演练:定期真的恢复一次,确认能读回来。只备份不验证是最常见的翻车点。

  2. 完整性校验:用带校验和的工具(Borg、restic、ZFS send),定期校验备份是否可打开。

  3. 监控告警:备份失败要有告警。静默失败的备份任务比没有备份更可怕——你以为有,其实没有。

一个残酷的现实:RAID 重建失败后找专业恢复,起步价通常在数千到数万元,且不保证成功。同样的钱,早就够做一套完整的备份方案了。


第四部分 · 原理备查(已懂可跳过)

4.1 三种基本手法

手法

原理

保护

代价

条带化 Striping

数据切块轮流写到多盘

无

0

镜像 Mirroring

同一份数据写多份

有

容量 1/N

校验 Parity

XOR 算出冗余块

有

1~2 块盘容量

P = D1 ⊕ D2 ⊕ D3
丢 D2 时:D2 = P ⊕ D1 ⊕ D3

4.2 关键概念速记

概念

一句话

条带大小 Chunk

单盘上一个条带单元的大小,常见 64KB/128KB/256KB;大文件顺序读写用大条带,小文件随机读写用小条带

写惩罚

一次逻辑写被放大:RAID 5 → 4 次 I/O,RAID 6 → 6 次 I/O

写洞 Write Hole

数据与校验写入非原子,断电后校验不一致;靠 BBU、mdadm journal 或 ZFS 的 COW 解决

Degraded

降级状态,还活着但没冗余了

Scrub / Patrol Read

全盘巡检,主动发现静默损坏;ZFS 还能自愈

Hot Spare

热备盘,掉盘自动顶上,缩短降级窗口

TLER / ERC

硬盘错误恢复时限(约 7 秒),防止桌面盘因长时重试被控制器误踢

vdev

ZFS 里的冗余单元,池的容错能力 = 各 vdev 的最小值

4.3 实现层次对比

维度

硬件 RAID 卡

mdadm

ZFS

端到端校验和

无

无

有​

静默损坏自愈

无

无

有​

快照/复制

无

需 LVM

原生

写洞

靠 BBU 缓解

靠 journal 缓解

不存在

厂商锁定

高(卡坏了要同型号)

无

无

内存需求

无

极低

较高,建议 ECC

选型:要数据完整性和快照 → ZFS(配 IT 模式 HBA + ECC);要简单省心 → 硬件 RAID(务必配 BBU/CacheVault);资源受限 → mdadm。Btrfs 的 RAID 5/6 有已知问题,避免使用。

4.4 故障应急

掉盘后正确做法:

  1. 先判断是真故障还是线缆/背板问题,别急着重建。

  2. 拍照记录:盘序、型号、序列号、条带大小、控制器固件版本。

  3. 有备份就先复制关键数据出来,再动阵列。

  4. 确认新盘健康后替换,重建期间不要跑其他负载。

  5. 完成后跑一次完整一致性检查。

⚠️ 别把掉线的盘插回去"重建":它离线期间其他盘已被改写过多条带,控制器可能误认为它的数据仍有效而不再同步,导致数据不一致。当作新盘走完整重建。

重建失败后的绝对禁忌:

  • ❌ 反复重启重建(已受损的盘扛不住第二遍)

  • ❌ 调换/混插硬盘(盘序绝不能变)

  • ❌ 重置或初始化控制器(会清空配置、覆写数据)

  • ❌ 异常状态下刷固件(可能覆盖元数据)

  • ❌ 在成员盘上直接跑恢复软件(写操作二次破坏)

  • ❌ 照着论坛旧帖子乱试

专业恢复流程:逐盘只读镜像(遇坏道跳过而非中止)→ 分析条带大小/盘序/校验分布 → 虚拟重组 → 文件系统解析导出。核心是"先镜像、后分析、全程只读"。

4.5 运维清单

  • [ ] 开启定期 scrub/patrol read(机械盘建议每月一次)

  • [ ] 开启 SMART 监控,关注 Reallocated/Pending Sectors

  • [ ] 分散采购批次,降低相关性故障

  • [ ] 配热备盘

  • [ ] 阵列留 10–20% 余量,别写满

  • [ ] 接 UPS + RAID 卡配 BBU/CacheVault

  • [ ] 用支持 TLER/ERC 的 NAS/企业盘

  • [ ] 备份并归档阵列配置文档

  • [ ] 旧盘退役前做安全擦除

  • [ ] 定期做恢复演练(最容易漏的一条)

4.6 常见误区

问题

正解

盘越多越安全?

错。期望故障次数上升、重建窗口变长

不同容量能混用?

标准 RAID 按最小的那块算;想混用选 SHR/JBOD/SnapRAID

能加一块盘扩容吗?

RAID 0/1/5/6/10 多数支持在线扩容(耗时高风险高);RAIDZ 从 OpenZFS 2.3 起才支持

SSD 要组 RAID 吗?

必要性下降(URE 低两三个数量级、重建快);注意 RAID 卡是否支持 TRIM 透传

SMR 盘能组 RAID 吗?

强烈不建议,随机重写性能骤降,会把重建拖成数天

RAID 6 万能吗?

不是。重建期间只剩单冗余,再坏一块照样丢