RAID 级别对 IOPS 的影响

RAID 级别对 IOPS 的影响

关于 IOPS,我在网上看到过一些资料,它们表明给定数量磁盘的 IOPS 仅仅是单个磁盘的 IOPS 乘以磁盘数量。

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

我应该补充一点,我明白由于各种优化和其他因素,实际情况要复杂得多。我的问题实际上只是想知道,从最基本的层面上看,我对 IOPS 含义的理解是否正确。我断言 IOPS 甚至可能受到 RAID 级别的影响,这可能表明我对这个概念存在基本的误解。

答案1

对于 HDDIOPS 通常由磁盘的访问时间, 哪一个是寻道延迟 + 旋转延迟 + 传输延迟的总和。由于这些变量很大程度上取决于访问模式,并且与特定 RAID 布局(即条带大小)和控制器(即预读调整)之间没有明显的相互作用,任何简单的回答都是错误的。

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

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

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

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

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

但 SSD 却是另一回事。由于它们本质上具有更低的平均访问时间,基于奇偶校验的 RAID 的性能开销更低,并且比 HDD 更可行。但是,在以随机写入为中心的小型工作负载中,我无论如何都会使用 RAID10 设置。

答案2

这只是定义问题。您可以在系统的不同级别测量 IOPS,并且会得到不同的值。例如,假设您有两个镜像磁盘,并且写入速度尽可能快。进入磁盘的 IOPS 将是单个磁盘在类似写入负载下可以处理的 IOPS 数量的两倍。但进入控制器的 IOPS 将等于单个磁盘可以处理的 IOPS 数量。

通常我们关心的是阵列中可以获得多少逻辑 IOPS,我们并不特别关心磁盘级别发生了什么。在这种情况下,您是正确的,IOPS 取决于 RAID 级别、磁盘数量、各个磁盘的性能,在某些情况下,还取决于操作的具体特征。

相关内容