如何正确估计我的 RAID 10 磁盘可以提供的平均 I/O 操作数?

LMC*_*LMC 4 optimization storage tuning

磁盘可以维持的平均每秒输入/输出操作是调优 MySQL / InnoDB 数据库的一个非常重要的因素,因为它推动了脏 InnoDB 缓冲池页面刷新回磁盘的速度。

有没有一种方法或公式可以用来估计我的 RAID 10 磁盘阵列可以运行的每秒平均 I/O 操作数?

Mar*_*ith 6

tl;dr 是的,您可以进行粗略和现成的计算,但如果您需要准确性,建议进行基准测试。除了原始磁盘性能之外,还有许多因素会影响 IOP,尤其是 RAID 控制器。

如果您有磁盘的技术规格,确定 IOP 的快速计算是:1 /(平均延迟 + 平均寻道时间)= 随机 IOP。

促成因素:

  • 平均延迟是请求磁盘扇区在驱动器磁头下旋转所用的时间。
  • 平均寻道时间是指驱动器磁头在所请求的磁盘磁道上定位自身所需的时间。
  • 旋转速度(以每分钟转数表示)不直接用于计算,但会影响上述内容。它也是任何驱动器规范中引用的标题数字。

虽然驱动器模型之间存在差异,但您可以将粗略和现成的数字应用于每个常见的旋转速度。

  • 7200 RPM ~75 IOPS
  • 10K RPM ~125 IOPs
  • 15K RPM ~175 IOPs

对于大多数企业级 RAID 控制器,常见 RAID 级别 (1/10/5/6) 的读取性能将大致与 IOP * 磁盘数量一致。更便宜的控制器可能会受到惩罚。然而,写入性能受所选级别的显着影响:

  • RAID 1 & 10 = IOPS / 2
  • RAID 5 = IOPS / 4
  • RAID 6 = IOPS / 6

例如,一个由 10 个 15k 磁盘组成的 RAID 10 阵列相当于:

  • (175 * 10) = 1750 IOPS 读取
  • (175 * 10) / 2 = 875 IOPS 写入

当然,大多数工作负载是读取和写入的混合,因此有必要考虑 r/w 比率以确定所需的容量。