RAID 容量与重建时间计算器

RAID 容量与重建时间计算器

选 RAID 级别、填盘数与单盘容量,算出可用容量、容量利用率、容错盘数与写惩罚;再按重建速率估算重建要多久,以及重建窗口里出现不可恢复读错误的概率。全部在浏览器里算,不发任何请求。

参数

RAID 级别

RAID 5:至少 3 块盘,允许任意 1 块故障;每次随机写要读改写 4 次(写惩罚 4)。

高级假设(改了结果就跟着变)

机械盘 7200 rpm 约 75 ~ 150 IOPS,企业级 SAS 约 150 ~ 210,SATA SSD 约 5 000 ~ 90 000,NVMe 可到几十万。填你手上盘的真实数字,随机写的估算才对得上。文件系统开销默认 5%(ext4 给 root 保留的块比例),填 0 就是「阵列级可用容量」的口径。

改任意一项都会即时重算;按钮只是给键盘与触屏一个明确入口。

容量与冗余

可用容量

24 TB
21.83 TiB / 22 352 GiB(系统显示)

裸容量(全部盘相加)

32 TB
4 × 8 TB

容量利用率

75.0%
校验开销 8 TB

容错盘数

1 块
任意单块故障仍可读写

写惩罚

4
一次随机写 = 4 次磁盘 I/O

随机写 IOPS(估算)

120
4 盘 × 120 IOPS ÷ 4
容量公式 (4 − 1) × 8 TB = 24 TB
这套阵列换来什么 牺牲 8 TB(25%)容量,换来任意一块盘故障后阵列仍可继续读写。
顺序读 / 顺序写(量级) 顺序吞吐大致是成员盘之和,实际以控制器、背板与业务模型为准。
RAID 0 没有冗余:任何一块盘故障,整个阵列的数据都拿不回来。
参数不成立。

重建估算(降级后重建一块盘)

重建需读取 24 TB
读取口径 3 块幸存成员盘各读一遍(数据 + 校验)
预计重建时长 44.4 小时(约 1.9 天)
换个速率会差多少 100 MB/s → 66.7 小时 · 150 MB/s → 44.4 小时 · 200 MB/s → 33.3 小时
重建写回 8 TB(新盘写入量,通常不是瓶颈)

重建窗口内遇到不可恢复读错误(URE)的概率

消费级 · 10¹⁴ 85.3%
企业级 · 10¹⁵ 17.5%
企业级+ · 10¹⁶ 1.9%

读取 24 TB = 1.92×10¹⁴ 位,概率按 1 − e^(−位数 ÷ URE) 估算。这只是「至少碰上一次坏扇区」的概率,不是预言。

降级状态下没有第二份冗余:重建期间再坏一块(或再读到一次坏扇区),缺的数据就补不回来了。大容量机械盘上,这个窗口会长到以「天」计。

容量口径:厂商标称与系统显示

可用容量(十进制) 24 TB
系统里显示(二进制) 21.83 TiB(22 352 GiB)
单盘同一口径 8 TB → 7.28 TiB(7 451 GiB)
为什么数字变小 厂商按 1000 进制标称(1 TB = 10¹² 字节),系统按 1024 进制显示(1 TiB = 2⁴⁰ 字节)。同一块盘写成 GiB 少 6.87%,写成 TiB 少 9.05%——差别只在于用哪一级单位。
扣掉文件系统开销后 22.8 TB(20.74 TiB)
这一层是怎么吃掉的 按 5% 计:ext4 默认给 root 保留 5% 的块(可用 tune2fs 调整),XFS / Btrfs 的元数据通常占 1 ~ 3%,快照、回收站与预留空间另算。

RAID 级别对照:容量、容错与写惩罚

级别最少盘数可用容量容错写惩罚说明
单盘 / JBOD 1 n × 单盘 无 1 每块盘各自独立使用,不条带、不校验。坏哪块丢哪块上的数据,容量可用满。
RAID 0 2 n × 单盘 无 1 只条带不冗余,读写最快、容量全用;任何一块盘故障,整个阵列全损。适合缓存与临时数据。
RAID 1 2 1 × 单盘 1 块 1 镜像写、两份同时下发,随机读好、重建只读幸存的那块;三副本时容错 2 块。容量利用率 = 1 ÷ 盘数。
RAID 5 3 (n − 1) × 单盘 1 块 4 一块盘的容量用于分布式校验,容量与性能折中;重建期间再坏一块即全损,大容量盘上风险明显。
RAID 6 4 (n − 2) × 单盘 2 块 6 两块校验(P + Q),容忍双盘故障;随机写最慢、容量开销最大,适合大容量近线存储。
RAID 10 4(偶数) n ÷ 2 × 单盘 每组 1 块 2 先镜像成对、再跨对条带。随机写普遍最好,重建只读它的镜像伙伴;利用率固定 50%。
RAID 50 6(≥2 组 × 3 盘) (n − g) × 单盘(g = 组数) 每组 1 块 4 多个 RAID 5 组再条带。重建范围只限本组、速度快,但两块故障落在同一组仍会全损。
RAID 60 8(≥2 组 × 4 盘) (n − 2g) × 单盘(g = 组数) 每组 2 块 6 多个 RAID 6 组再条带,容量开销大、重建压力分散在组内;写性能最吃亏,胜在能扛。

表里的容量公式只在「所有盘同规格」时成立;混插不同容量时,只有最小那块(或最小公共容量)参与条带,多出来的部分通常被浪费或用不上。

容量公式、写惩罚与随机 IOPS 都是通用 RAID 口径;重建时长是「读取量 ÷ 重建速率」的量级估算,URE 概率按标称不可恢复读错误率做泊松近似。真实结果取决于控制器、固件、盘的型号与健康状态,请以实测为准。

一、RAID 解决的是三件事,而这三件事互相冲突

RAID(廉价磁盘冗余阵列)最初的想法很朴素:用一堆便宜的小盘拼出一块又大又快的盘。今天的实现千差万别,但它回答的始终是三个问题——容量能不能拼起来、速度能不能叠加、坏一块盘数据还在不在。

麻烦在于这三件事抢的是同一份资源。想要速度和容量,就把数据切开分散写到所有盘上(条带),可这样一来任何一块盘故障都会带走一部分数据;想要容错,就得额外存一份或存校验,容量立刻打折;想随机写快,就不能每次写都去算一遍校验。于是有了今天这一串级别:RAID 0 换速度、RAID 1 换安全、RAID 5 想在中间站住、RAID 6 承认大容量盘时代需要两块冗余、RAID 10 干脆用一半容量买最稳的随机写。级别没有优劣,只有取舍。

还有一件事必须写在最前面:RAID 不是备份。它能挡的是「一块盘物理坏掉」,挡不住误删、勒索软件加密、控制器或固件故障、机箱进水、阵列配置表丢失。本站那篇《RAID 是怎么来的、有哪些级别》把各个级别的来历和适用场景讲得更细,可以对着看。

二、可用容量的公式:从 RAID 0 到 RAID 60

同规格盘组成的阵列,可用容量都能写成一个式子(记 n 为盘数、g 为组数):

  • RAID 0:n × 单盘 —— 全部容量可用,代价是没有冗余。
  • RAID 1:1 × 单盘 —— 无论 2 块还是 3 块,可用容量都只有一块盘。三副本的容错是 2 块,但容量利用率掉到 1/3。
  • RAID 5:(n − 1) × 单盘 —— 一块盘的容量被拿去存分布式校验。4 块 8 TB 的阵列因此只有 24 TB 可用,利用率 75%。
  • RAID 6:(n − 2) × 单盘 —— 两块校验。6 块 8 TB 只剩 32 TB,利用率 66.7%。
  • RAID 10:n ÷ 2 × 单盘 —— 先两两镜像再条带,利用率固定 50%,与盘数无关。
  • RAID 50 / 60:(n − g) × 单盘 / (n − 2g) × 单盘 —— 先分组做 5 或 6,再把各组条带起来,校验开销按组数而非整阵列计算。

注意这里的「单盘容量」指的是参与条带的那部分。混插不同容量的盘时,只有最小容量(或所有盘的最小公共容量)能被条带化,多出来的部分在 RAID 0 / 5 / 6 里通常白白浪费——所以「先买两块 8 TB、以后再补两块 16 TB」这种做法,结果多半是把 16 TB 当 8 TB 用。真想把不同容量的盘用起来,RAID 之上再叠一层卷管理更合适,这也是混合存储架构(RAID + Btrfs + LvmCache)那篇在讲的事。

三、写惩罚:为什么 RAID 5 的随机写只剩四分之一

顺序写大文件时,RAID 5 / 6 的表现还不错:数据被切成大块分散到各盘,校验也能攒在控制器的缓存里成批算。真正难受的是随机小块写——改一个扇区,就得同时更新落在别的盘上的校验块。

以 RAID 5 改一个旧数据块为例,控制器要做四件事:读旧数据、读旧校验、算出新校验、写新数据和新校验。这就是「写惩罚 = 4」的来历(RAID 6 有两套校验,因此是 6;RAID 1 的两份镜像可以并行下发,记 1;RAID 10 因为叠加了条带,按保守口径记 2)。用公式表达,阵列的随机写能力大致是:

随机写 IOPS ≈ 盘数 × 单盘随机 IOPS ÷ 写惩罚

所以 4 块 150 IOPS 的机械盘做 RAID 5,随机写只有 150 IOPS 左右,和一块单盘的随机写能力差不多——而同样 4 块盘做 RAID 10,是 300 IOPS。这也解释了为什么数据库、虚拟机这类随机写密集的负载普遍选 RAID 10:它用一半容量买的是随机写和重建代价。控制器上的写缓存(BBU / 超级电容保护、写回模式)能大幅缓解这件事,它把多次小写攒成大块再落盘;缓存失效或掉电保护没做好时,性能会掉回公式算出来的水平。

四、重建时间怎么估:读的是成员盘,不是你的数据量

阵列降级后,控制器要把缺的那块盘重算出来。对 RAID 5 来说,这个过程必须把幸存成员盘上的数据(含校验)全部读一遍——不是读你的「可用容量」,而是读成员盘上的原始数据量。所以重建读取量是:

  • RAID 1:读 1 × 单盘(只读它镜像伙伴那一块)
  • RAID 5:读 (n − 1) × 单盘(全部幸存成员盘)
  • RAID 6:读 (n − 1) × 单盘(一块盘故障时同样要扫过其余成员)
  • RAID 10:读 1 × 单盘(只重建故障盘所在的那一对)
  • RAID 0 / JBOD:没有冗余,谈不上重建

时长就是「读取量 ÷ 重建速率」,但速率不是盘的理论顺序读速度。机械盘外圈快、内圈慢,平均下来 150 MB/s 上下;很多控制器默认把重建限速到正常性能的 30 ~ 50%,免得业务被拖垮;再加上重建期间还要应付主机读写请求,实际窗口常常比「理论 ÷ 速率」更长。SSD 快得多,但要留意写入耐久、SLC 缓存用尽后的降速,以及同批次的故障相关性。

按 4 块 8 TB 的 RAID 5 估算:要读 24 TB,按 150 MB/s 算约 44 小时,接近两天。这两天里阵列一直是降级运行:没有第二份冗余,而且全阵列都在被满负荷扫读——这恰好是坏盘最容易暴露的时候。想缩短窗口,能做的有:换成 SAS 或 SSD、放宽控制器的重建限速(前提是业务扛得住)、把阵列拆小一点(组数多、每组盘少)。

五、URE 与「重建失败」:为什么大容量 RAID 5 让人不放心

硬盘规格里有个参数叫 URE(Unrecoverable Read Error,不可恢复读错误率),写法是「每读 10N 位出现一次」。消费级盘常见 1014,企业级 1015,企业级增强盘 1016。把它换算成容量:1014 位 = 12.5 TB,意思是「平均每读 12.5 TB 数据,就可能碰到一个怎么重试都读不出来的扇区」。

现在把上一节的重建读取量代进去:4 块 8 TB 的 RAID 5 重建要读 24 TB ≈ 1.92 × 1014 位。用 1014 档的盘,碰上至少一次坏扇区的概率约 85%;换 1015 档约 17.5%;1016 档约 1.9%。在 RAID 5 里,重建期间只要有一块幸存盘读不出来,这个条带的数据就补不回去——整块阵列的数据都受影响,而不是只丢那一个扇区。这就是「大容量 RAID 5 重建失败率高」的数学来源:容量越大,重建要读的位数越多,撞上 URE 的窗口越宽。

要强调的是,这是概率而不是判决:单块盘的 URE 标称值、这批盘的实际质量、温度、震动、服役年限都会让结果偏离,实际阵列上重建成功仍然是常态。但方向是清楚的——盘越来越大,RAID 5 的安全边际越来越薄。常见的应对:改用 RAID 6 或 RAID 10、配一块热备盘(故障后立刻自动开始重建,不用等人来换)、把单盘容量控制在合理范围、把阵列拆成多个小组,以及最要紧的一条——始终有可用的备份。盘的健康状态值得提前盯:用 smartctl 看 SMART 属性里的重映射扇区、待定扇区与 UDMA CRC 计数,比等它坏掉再重建划算得多。存储协议与链路怎么选,可以看《常用存储协议扫一遍》。

六、TB、TiB、GiB:8 TB 的盘为什么显示 7.28 TiB

厂商标称容量用的是 1000 进制:1 TB = 1012 字节。操作系统与阵列管理界面用的是 1024 进制:1 TiB = 240 字节 = 1.0995 × 1012 字节。同一块 8 TB 的盘,在系统里就显示为 7.28 TiB(或 7451 GiB)。

这里有个常被搞混的地方:「少了 7%」和「少了 9%」其实都对,区别在用了哪一级单位。GB 与 GiB 之间是 (1000/1024)3 ≈ 0.9313,所以写成 GiB 时数字少 6.87%;TB 与 TiB 之间是 (1000/1024)4 ≈ 0.9095,所以写成 TiB 时数字少 9.05%。换句话说,8 TB 的盘在系统里显示 7451 GiB(比 8000 GB 少 6.87%),也就是 7.28 TiB(比 8 TB 少 9.05%)——同一件事,两种说法。

所以这通常不是厂商缺斤少两,而是单位口径不同。做容量规划时把它算进去:一块「8 TB」的盘,实际可用于条带的是 8 × 1012 字节;阵列的可写容量还要再扣掉文件系统元数据与保留块——ext4 默认给 root 保留 5% 的块,XFS / Btrfs 的元数据一般占 1 ~ 3%。这也和闪存介质的选择有关:TLC 与 QLC 该选谁讲的是同一件事的另一面——容量、耐久与成本怎么平衡。

常见问题

RAID 5 的可用容量怎么算?4 块 8 TB 为什么系统里只有 21.8 TiB?

公式是 (n − 1) × 单盘容量:(4 − 1) × 8 TB = 24 TB,也就是 24 × 1012 字节。换成系统显示口径就是 21.83 TiB(22 352 GiB)——数字看起来「少了」,是因为单位从十进制换成了二进制,不是容量被吃掉了。再扣掉文件系统元数据与保留块,实际可写大约在 21 TiB 出头。

RAID 重建一般要多久?

按「重建读取量 ÷ 重建速率」估算,量级通常是几小时到几天。4 块 8 TB 的 RAID 5 要读 24 TB,150 MB/s 下约 44 小时;同样容量的 RAID 10 只要读 8 TB,约 15 小时;8 块 16 TB 的 RAID 6 要读 112 TB,按 150 MB/s 接近 9 天。实际会更慢:控制器常把重建限速、机械盘内圈速率低、业务负载还要抢 I/O。想知道自己这套的窗口,把盘数与容量填进上面的工具换几个速率看。

大容量 RAID 5 真的会重建失败吗?我该选 RAID 6 还是 RAID 10?

先看清风险来自哪里:RAID 5 在降级状态下只有一份冗余,重建期间再坏一块盘、或者在某块幸存盘上读到无法恢复的扇区,这个条带就补不回来了。盘越大,重建要读的位越多,撞上 URE 的概率越高(4 块 8 TB 用消费级盘,估算约 85%)。RAID 6 用两块校验换第二次机会,适合大容量、写压力不高的近线存储;RAID 10 重建只读镜像伙伴、窗口最短、随机写最好,代价是只能用一半容量,适合数据库与虚拟化。两者都比 RAID 5 更保守,也都不能替代备份。

写惩罚是什么?为什么 RAID 5 是 4、RAID 6 是 6?

写惩罚指「一次逻辑写会变成几次物理 I/O」。RAID 5 修改一个数据块时,要读旧数据、读旧校验、写新数据、写新校验,共 4 次,所以写惩罚是 4;RAID 6 有两套独立校验(P 和 Q),要读的旧校验多一份,记 6;RAID 0 与 RAID 1 直接把数据写下去(镜像两份可并行下发),记 1;RAID 10 因为叠加了条带,按保守口径记 2。随机写能力 ≈ 盘数 × 单盘 IOPS ÷ 写惩罚,这就是 RAID 5 / 6 在小块随机写下吃力的原因。

热备盘(Hot Spare)算不算阵列容量?

不算。热备盘不参与条带,也不贡献可用容量,它只是「待命」——一旦检测到某块盘故障,控制器立刻用它顶上并开始重建,省掉「等人发现、等人采购、等人到场」的这段时间。对重建窗口以天计的大容量阵列来说,这段省下来的时间往往比多买一块盘的钱值钱得多。要注意有些阵列的全局热备会被多个阵列共享,也可能被自动重建策略「抢走」。

能用 RAID 代替备份吗?

不能。RAID 挡的是「盘坏了」,挡不住误删、误格式化、勒索软件、控制器故障、阵列配置表损坏、机箱进水或整机被偷。这些情况下 RAID 会把「坏」同步复制到每一块盘上。正确的组合是:RAID 保证可用性(继续能跑),备份保证可恢复性(还能回到昨天)。3-2-1 原则依然适用:至少 3 份数据、2 种介质、1 份异地。NAS 上的做法与选购考虑,可以看绿联 NAS DXP4800 的购买使用介绍。

关于数据

工具里的容量公式(RAID 0 = n × 单盘、RAID 1 = 单盘、RAID 5 = (n − 1) × 单盘、RAID 6 = (n − 2) × 单盘、RAID 10 = n ÷ 2 × 单盘)、写惩罚(0 / 1 = 1、5 = 4、6 = 6、10 = 2)与随机写 IOPS 估算,都是通用 RAID 口径,不针对某个品牌或某款控制器。重建时长按「重建读取量 ÷ 重建速率」计算;URE 概率按标称值做泊松近似(1 − e−位数 ÷ URE),读取量里已包含校验块。

这个工具是纯前端计算:不向服务器发送任何请求,输入与切换全部在浏览器里完成,不写 cookie、不加载外部脚本。所有速率、IOPS 与 URE 都是可以改的假设值——它们决定的是结果的数量级,而不是精确答案;真实表现取决于控制器型号与固件版本、盘的型号与批次、条带大小、业务读写模型与环境温度。本站的工具一贯只给清单与口径,不下「你这套阵列行不行」的判决。

顺手指个路:RAID 是怎么来的、有哪些级别讲级别与来历;混合存储架构讲怎么在阵列上再叠缓存与卷管理;折腾一套万兆内网讲盘之外的另一半瓶颈。本站自制的工具都收在《站点小工具》这一页里,全部不需要注册。