RAID 级别对 IOPS 的影响

dbr*_*dbr 14 raid performance storage iops

关于 IOPS,我在网上看到几个消息来源表明给定磁盘数量的 IOPS 只是单个磁盘的 IOPS 乘以磁盘数量。

如果我对 IOPS 的理解是正确的(我完全不确定),我会认为现实将取决于 - 在许多其他因素中 - RAID 级别。使用 RAID 1/10,所有数据都至少在两个磁盘上复制,从而减少了某些 IO 模式在特定磁盘上的争用。但是,在条带化 RAID 级别(例如 RAID 0/5/6)中,数据是分布的而不是复制的,这意味着连续的读取请求可能针对同一主轴,从而导致在前一个 IO 完成时发生阻塞。写的更有争议。

我应该补充一点,由于各种优化和其他因素,我意识到现实要复杂得多。我的问题实际上只是在非常基本的层面上推动我对 IOPS 含义的理解是否在正确的轨道上。可能是我断言 IOPS 甚至可能以这种方式受到 RAID 级别的影响,这表明对该概念的基本误解。

sho*_*hok 14

对于 HDD,IOPS 通常由磁盘的访问时间决定,即寻道延迟 + 旋转延迟 + 传输延迟之和。由于这些变量在很大程度上取决于访问模式,并且与特定 RAID 布局(即:条带大小)和控制器(即:预读调整)有不明显的交互,因此任何简单的回复都将是错误的。

然而,让我们试着有一个大概的数字。粗略估计,n 磁盘阵列保证的 IOPS 应该是单个磁盘 IOPS 的 n 倍。然而,RAID 级别和数据访问模式,通过在寻道/旋转/传输延迟之间转移权重,戏剧性地改变了这种一阶近似。

让我们举一些例子,假设每个磁盘 100 IOPS(7200 RPM 磁盘的典型值)和 4 磁盘阵列(RAID1 除外,通常仅限于 2 路):

  • 单个磁盘是 100 IOPS,读取和写入(注意:由于写入合并,写入 IOPS 通常高于读取 IOPS,但为了简单起见,让我们忽略)
  • RAID0(4 路条带化)具有高达4 倍的随机 IOPS 和高达4 倍的顺序 IOPS。这里的关键词是“高达”:由于条带化和数据对齐的性质,如果随机访问的扇区普遍驻留在单个磁盘上,那么最终的 IOPS 会低得多。
  • RAID1(2 路镜像)的配置文件更复杂。由于不同的磁盘可以搜索不同的数据,它具有高达 2 倍的随机读取 IOPS,但具有相同的 1 倍(或略低,由于开销)随机写入 IOPS。如果所有事情都很好地对齐(即:大但不是 100% 的顺序读取,即使在镜像模式下使用块/条带概念/处理的 RAID 控制器,预读工作正常等)顺序读取有时可以高达单次读取的 2 倍磁盘值,而顺序写入的上限仍为单个磁盘的 1 倍(即:无加速)
  • RAID10(4 路镜像)在性能方面介于 4 路 RAID0 条带化和 2 路镜像之间。它具有高达 4 倍的随机读取 IOPS 和高达 2 倍的随机写入 IOPS。对于顺序传输,适用 RAID1 警告:有时它具有高达顺序读取 IOPS 的 4 倍,但只有顺序写入 IOPS 的 2 倍。请注意,某些 RAID10 实现(即 Linux MDRAID)为 RAID10 阵列提供不同的布局,具有不同的性能配置文件
  • RAID5(条带奇偶校验)具有高达 4 倍的随机读取 IOPS,而随机写入 IOPS,取决于许多因素,例如写入相对于条带大小的大小、大型条带缓存的可用性、条带重建算法本身(读-重构-写 vs 读-修改-写)等,可以是单个磁盘 IOPS 的 0.5 倍(或更低)和 2 倍之间的任何值。顺序工作负载更具可预测性,是单个磁盘 IOPS 的 3 倍(读取和写入)
  • RAID6(条带双奇偶校验)的行为与其 RAID5 兄弟非常相似,但写入性能较低。单盘随机读取IOPS高达4倍,但其随机写入性能甚至低于RAID5,绝对值相同(0.5x - 2x),但实际字平均值更低。顺序读取和写入的上限是单个磁盘 IOPS 的 2 倍。

让我重复一遍:以上是简单且几乎不完整的近似值。无论如何,如果您想使用(严重不完整的)RAID IOPS 计算器,请看这里

现在,回到现实世界。在实际工作负载中,RAID10 通常是更快和首选的选择即使在阵列降级的情况下也能保持高性能。RAID5 和 RAID6 不应用于对性能敏感的工作负载,除非它们本质上是以读取为中心或顺序的。值得注意的是,严重的 RAID 控制器具有大的断电保护回写缓存,主要是为了克服(通过大量条带缓存)RAID5/6 低随机写入性能。切勿将 RAID5/6 与无缓存 RAID 控制器一起使用,除非您真的不关心阵列的速度。

SSD 是不同的野兽,想。由于它们本质上的平均访问时间要低得多,因此基于奇偶校验的 RAID 的性能开销要低得多,并且是比 HDD 更可行的选择。但是,在以随机写入为中心的小型工作负载中,无论如何我都会使用 RAID10 设置。