关于IOPS,我在网上看到了几个来源,提示给定数量磁盘的IOPS仅仅是单个磁盘的IOPS乘以磁盘的数量。
如果我对IOPS的理解是正确的(而且我一点都不确定),那么我会认为现实将取决于RAID级别,其中包括许多其他因素。 使用RAID 1/10时,所有数据都至less被复制到两个磁盘上,从而减less某些IO模式在特定磁盘上的争用。 但是,在条带化的RAID级别(如RAID 0/5/6)中,数据是分布式的而不是重复的,这意味着连续的读取请求可能针对同一个主轴,从而导致在前一个IO完成时阻塞。 写作甚至更有争议。
我还要补充一点,我认识到,由于各种优化和其他因素,现实情况要复杂得多。 我的问题实际上只是在一个非常基本的层面上,即我是否理解IOPS意味着什么是正确的。 这可能是因为我认为IOPS甚至会受到RAID级别的影响,这说明对这个概念有一个基本的误解。
对于硬盘而言 ,IOPS通常以磁盘的访问时间为主 ,即寻道延迟+旋转延迟+传输延迟的总和。 由于这些variables很大程度上取决于访问模式,并且与特定的RAID布局(即:条带大小)和控制器(即:预读调优)没有明显的交互作用,所以任何简单的回复都将是错误的。
但是,让我们尝试一个棒球形象。 在第一个近似值中,由n磁盘arrays保证的IOPS应该是单个磁盘IOPS的n倍。 然而,通过在查找/旋转/传输延迟之间改变权重,RAID级别和数据访问模式都大大地改变了这个一阶近似。
假设有一个例子,假设每个磁盘100 IOPS(7200 RPM磁盘的一个典型值)和4个磁盘arrays(除了RAID1,通常仅限于2-way):
让我再说一遍:以上是简单的,近似的近似值。 无论如何,如果你想玩(严重不完整的)RAID IOPS计算器,请看看这里 。
现在,回到现实世界。 在真实世界的工作负载上, RAID10通常是更快和更受欢迎的select , 即使面对降级的arrays ,也能保持高性能。 RAID5和RAID6不应该用于对性能敏感的工作负载,除非它们本质上是以读取为中心或顺序的。 值得注意的是,严重的RAID控制器具有大功率丢失保护的写回caching,主要用于克服(通过重条带caching)RAID5 / 6低随机写入性能。 切勿使用无cachingRAID控制器的RAID5 / 6 ,除非您真的不关心arrays的速度。
SSD是不同的野兽,思想。 由于它们的平均访问时间低得多,所以基于奇偶校验的RAID的性能开销要低得多,而且比HDD更可行。 但是,在一个以随机写作为中心的小型工作负载中,无论如何我都会使用RAID10设置。
这只是一个定义问题。 您可以在系统中测量不同级别的IOPS,您将得到不同的值。 例如,假设您有两个镜像磁盘,并且您正在尽可能快地写入数据。 进入磁盘的IOPS是单个磁盘可以处理的IOPS数量的两倍,具有类似的写入负载。 但是进入控制器的IOPS将等于单个磁盘可以处理的IOPS数量。
通常我们关心的是我们能够进入arrays的逻辑IOPS数量,我们并不特别关心磁盘级别发生的事情。 在这种情况下,您是正确的,IOPS取决于RAID级别,磁盘数量,单个磁盘的性能以及某些情况下操作的特定特性。