RAID级别对IOPS的影响[关闭]


11

关于IOPS,我在网络上看到了一些资料,这些数据表明给定数量的磁盘的IOPS就是单个磁盘的IOPS乘以磁盘数。

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

我还要补充一点,我感谢由于各种优化和其他因素而使现实变得更加复杂。我的问题实际上只是在从根本上了解我对IOPS含义的理解是否正确。我认为IOPS甚至可能会受到RAID级别影响的断言可能是对该概念的基本误解。


4
您正在将其简化到排除RAID控制器缓存,操作系统,应用程序的行为,同步或异步I / O和磁盘类型的影响的程度。你在找什么?
ewwhite

@ewwhite抱歉,我应该更清楚一些。我真的希望看到我的思维基本原理是否正确,而不是做出真实的预测。我赞赏现实中,各种优化和其他复杂性会极大地影响事物。背景中有一个现实世界的情况,但通常情况下,当您正在研究自己不熟悉的事物时,我决定离开并进行一些背景学习,因此我感到有点熟悉基本原理。
dbr

我很想问问任何人关于存储及其性能方面的理论和概念是否对高质量的阅读有任何建议,但是我没有,因为我认为这对于ServerFault可能是不合适的问题。到目前为止,我在网上发现的关于该主题的高质量文章似乎很少,这也许是因为这是一个非常复杂的主题,很少有人真正理解。
dbr

RAID性能比RAID级别更多地取决于控制器硬件和实施限制。例如,RAID0,RAID1,RAID5和RAID6理论上可以使用所有磁盘进行长时间读取,因此它们在理想的控制器上可以具有完全相同的读取速度。
Zac67

Answers:


12

对于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:它有时最多有4倍的顺序读取IOPS,但只有2倍的顺序写入IOPS。请注意,某些RAID10实现(即Linux MDRAID)为RAID10阵列提供了不同的布局,并具有不同的性能配置文件
  • RAID5(条纹奇偶校验)具有高达随机读取IOPS的4倍,而随机写入IOPS则取决于许多因素,例如关于条带大小的写入大小,大条带缓存的可用性,条带重建算法本身(读取-重构-写入与读取-修改-写入)等,可以在单个磁盘IOPS的0.5倍(或更低)到2倍IOPS之间。顺序工作负载更可预测,其单个磁盘的IOPS是其三倍(读写)
  • RAID6(条纹双奇偶校验)的行为与RAID5兄弟相似,但写入性能较低。它的单个磁盘的随机读取IOPS高达4倍,但其随机写入性能甚至比RAID5还要低,具有相同的绝对值(0.5x-2x),但实际字均值较低。顺序读取和写入的上限是单个磁盘的IOPS的2倍。

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

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

固态硬盘是不同的野兽。由于奇偶校验RAID的平均访问时间大大缩短,因此其性能开销要低得多,并且比HDD更可行。但是,在以随机写入为中心的小型工作量中,无论如何我都会使用RAID10设置。


切勿将RAID5 / 6与无缓存RAID控制器一起使用,除非您真的不在乎阵列的速度。如果您真的知道自己在做什么并且对IO模式进行了严格控制,则可以避免这种情况。如果您仅执行与阵列的条带大小匹配的顺序IO,则可以使用无缓存RAID5 / 6。如果对RAID5 / 6阵列执行足够的随机,小块写入操作,则缓存将无法保存性能,尽管对于一个真正好的RAID控制器而言,“足以阻止性能的IO操作”的值可能是巨大的。
安德鲁·亨利

@AndrewHenle当然,如果仅发出按条带对齐的顺序读取/写入,那么即使是RAD5 / 6模式下的无缓存控制器也可以为您带来良好的结果。但是,这是一个非常狭窄的使用模式(即流和备份)。对于一般用途的工作负载,与任何奇偶校验RAID结合使用的无缓存控制器将非常慢。某些控制器甚至需要受功耗保护的写回缓存,才能创建奇偶校验RAID。
shodanshok

我在想更多有关管理员的问题,他们想知道为什么带有19 MB的企业邮件存储21驱动器RAID6阵列的条带大小会变慢,因为它的速度会变慢....
Andrew Henle

1

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

通常,我们关心的是可以进入阵列的逻辑IOPS的数量,并且我们并不特别关心磁盘级别的情况。在这种情况下,您是正确的,IOPS取决于RAID级别,磁盘数量,单个磁盘的性能以及在某些情况下的特定操作特性。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.