我有一个中等大小的文件存储网站,允许人们在线备份他们的数据。 许多这些文件被共享,并接收大量的stream量。 我有几种types的服务器,而且我还没有find可以利用大部分硬盘空间的“甜蜜点”,而没有达到驱动器的IO限制。
我拥有的最强大的服务器是raid5 4K块中的8个128Gb SSD。 它的峰值出现在320MB / s左右的随机读取,看起来还有一定的推动空间。 然后我有一个3×300GB的15k SAS raid0盒子,在它达到io极限之前几乎可以达到45MB / s,并且负载猛增。
当我看到各种驱动器基准testing时,我发现大多数现代固态硬盘可以做〜50MB / s的随机读取。 这是否意味着它或多或less线性缩放? 所以如果我有12个这样的raid0,我可以做大约600MB / s的随机读取? raid5如何降低性能?
另外我听说如果使用RAID,TRIM会被禁用,所以性能会降低得更快。 我真的吗?
如果SAS驱动器是您的IO模式的一个体面的指标,那么看起来您的读取IO大小约为64k – 假设驱动器正常,模式大部分是随机的。 这对您描述的用例types是有意义的。
如果这同样适用于您的SSD,那么您的每个驱动器只能获得大约600IOPs,这对SSD SSD来说相当糟糕。 有一个体面的控制器应该有很less的开销从RAID 5包读取 – 有所有磁盘上的数据(分布式奇偶校验的东西),所以读取应该能够并行发送到所有磁盘,只要你有足够的控制器请求做它的事情。 问题可能是您的控制器无法处理整个IO负载,或者以您试图推送的数据速率达到最大值 – 这是什么types的控制器? 另一件事是,如果有任何写操作,那么它们将会对事情产生巨大的影响 – 使用RAID 5,您的写入IO容量是读取速度的四分之一(使用良好的控制器,坏的情况会更糟糕),SSD写入通常比读取要慢,所以SSD的RAID 5的写入损失通常接近6倍。 如果你确定写入不会混淆问题,那么你可以打折。
如果你没有考虑到这些因素,条纹大小和分区alignment可能会占用相当大的一块。你说你已经把SSDconfiguration成了RAID 5的4K块 – 如果这个4K是你的条带大小的话,那就没问题了。 条纹大小应该是SSD读取块大小的倍数,这将比4K大得多,取决于SSD读取块将是64k / 128k或更多。 尝试尝试使用条带大小,但不知道SSD和控制器的型号,我不能给出任何关于什么尺寸的build议,但记得检查一下您的控制器是否可以实际缩放IO速率和吞吐量已经看到,如果控制器是最大的,那么这是你需要修复的第一个瓶颈。
50Meg / sec的随机读取速度取决于IO尺寸 – 对于体面SSD(Intel X-25E,35k随机读取IOP)的小读取(在4K范围内),您应该看到140Meg / sec。 更便宜的消费级驱动器会慢一点,但是无论使用什么驱动器,你的RAID包都严重不足。
你是正确的,目前TRIM不能与RAID一起使用 – 要正确地做到这一点,需要在操作系统认为是已删除的数据块和如何转换成物理磁盘上的块之间进行映射。 现在还没有这个function,我不会马上屏住呼吸,只有当你写了很多东西到驱动器上,然后重复填充然后删除数据的时候,这个问题才是关键。 如果您的IO模式主要是读取,而您没有重复填写和删除数据,那么TRIM支持对您来说就不那么重要了。
固态硬盘的访问时间非常短,所以它们在随机I / O方面非常出色,我相信当你问他们是否“线性缩放”时,你就会想到这个问题。 15K的旋转磁盘只能做到45MB /秒,然后负载上升,因为它们的平均访问时间是SSD的25倍(5ms比0.2ms)。 这就是使他们更好地处理更高的负载。
15K旋转盘也可以线性缩放,只是从一个小得多的位置缩放。
RAID-5的开销大部分是写入的,所以如果你的负载是很重的话,相比于RAID-0,开销会很less。
请注意公共汽车的限制; 如果你用8个驱动器推动300MB /秒,12个驱动器会让你接近500MB /秒。 确保将这些分布在适当数量的SATA / SAS总线上,并且主机适配器在主板/背板上也具有足够的总线带宽。
我也听说过关于TRIM和RAID的情况,但是我在实践中还没有经验。 它确实取决于固态硬盘,不pipe他们是否需要它。 特别是企业级驱动器不是那么重要。 而且,如果您的应用程序是大部分读取的,那么这个问题就不会那么严重了,因为驱动器在写入数据之后有时间“赶上”擦除块。