首页/系统/服务器硬件与 RAID 速查/写惩罚:RAID 随机写性能的核心概念
RAID 级别与计算68 条

写惩罚:RAID 随机写性能的核心概念

写惩罚指一次逻辑写拆成几次物理 IO:RAID 0 为 1、RAID 1/10 为 2、RAID 5 为 4、RAID 6 为 6。它是估算阵列随机写 IOPS 的除数。

写惩罚是什么

写惩罚(write penalty)指一次逻辑写最终会拆成几次物理磁盘 IO。放大来自两个原因:镜像级别要把同一份数据写多块盘;校验级别要先把旧数据与旧校验读出来,算出新校验再写回去。它是估算阵列随机写 IOPS 时的除数:盘数越多、级别冗余越重,除数越吃亏。选型时只看容量不看写惩罚,是随机写场景性能不达预期最常见的原因。

基本信息

适用对象所有带冗余的 RAID 级别,RAID 0 除外
影响范围只影响随机写与非整条带写;顺序整条带写时校验可一次算出
估算口径阵列随机写 IOPS = 盘数 × 单盘随机 IOPS / 写惩罚
可被缓存吸收带电池或电容保护的写缓存可把随机写合并后再顺序落盘,实际表现常优于公式值
介质差异SSD 单盘随机 IOPS 高,除以 4 或 6 后仍往往够用;机械盘随机能力本就有限,惩罚体感更强

各级别写惩罚

级别物理写次数原因
RAID 01直写条带,无冗余
RAID 1 / 102每份数据写两份
RAID 54读旧数据、读旧校验、写新数据、写新校验
RAID 66两套校验各自读改写

公式与算例

公式与算例
# 通用公式
阵列随机写 IOPS = 盘数 x 单盘随机 IOPS / 写惩罚
# 同一个 8 盘阵列,单盘机械盘随机 IOPS 取 150,级别不同结果差三倍
RAID 10:8 x 150 / 2 = 600
RAID 5 :8 x 150 / 4 = 300
RAID 6 :8 x 150 / 6 = 200
# 读侧不受写惩罚影响:8 x 150 = 1200(RAID 5/6),RAID 10 同样约 1200

把它用对的三条前提

  • 估算前先确认单盘随机 IOPS 的实测值,同容量 7.2K 与 15K 盘差好几倍,用错基线全盘皆错
  • 区分读写比例:读多写少的业务用 RAID 5/6 划算,写占比超三成的 OLTP 应认真考虑 RAID 10
  • 把满条带写单独核算:大块顺序写(备份、视频、日志归档)不受 4/6 惩罚影响,不要用随机写公式去算
SSD 单盘随机 IOPS 可达机械盘的上百倍,即使除以 4 或 6 也往往远超业务需求,因此 SSD 时代「写惩罚」更多影响的是寿命与写放大,而不是 IOPS 是否够用。
写缓存能显著改善随机写表现,但依赖电池或超级电容保护:缓存失效后掉电会丢数据,甚至造成校验块与数据块不一致,启用 Write Back 前必须确认保护模块健康。

易错点

  • 把写惩罚当固定值套用所有场景:整条带顺序写不受 4/6 惩罚影响,按随机写公式报容量会偏保守很多
  • 忽略阵列卡缓存的吸收作用:带保护的写缓存能把随机写合并成顺序落盘,用纯公式估算会低估实际性能
  • 用 RAID 5/6 承载写占比高的业务:单盘 150 IOPS 的 8 盘阵列,RAID 6 随机写只剩 200 IOPS,业务一上量就堵
  • 单盘 IOPS 基线取错:拿 15K SAS 的数字去算 7.2K 近线盘的阵列,容量规划与性能承诺都会落空

数据来源与参考

  • SNIA 存储术语表(write penalty)
  • 《The RAID Book》性能章节
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌