关于频繁使用的文件存储服务器中的驱动器的问题

关于频繁使用的文件存储服务器中的驱动器的问题

我有一个中型文件存储网站,允许人们在线备份数据。这些文件中有很多是共享的,并且接收大量流量。我有几种类型的服务器,但我还没有找到可以利用大部分硬盘空间的“最佳点”,而不会达到驱动器的 IO 限制。

我拥有的最强大的服务器是 8 x 128Gb SSD,采用 raid5 4K 块。其峰值随机读取速度约为 320MB/s,而且看起来仍有提升空间。然后我有一个 3 x 300GB 15k SAS raid0 盒,在达到其 io 限制之前,它只能勉强达到 45MB/s,并且负载会猛增。

当我查看各种驱动器基准测试时,我发现大多数现代 SSD 可以进行约 50MB/s 的随机读取。这是否意味着它或多或少呈线性扩展?那么,如果我在 raid0 中有 12 个这样的 SSD,我可以进行大约 600MB/s 的随机读取?raid5 对性能的降低有多严重?

另外,我听说如果使用 RAID,TRIM 将被禁用,因此性能会下降得更快。这是真的吗?

答案1

如果 SAS 驱动器可以很好地反映您的 IO 模式,则您的读取 IO 大小似乎约为 64k - 假设驱动器正常且模式基本随机。这对于您描述的用例类型来说是有意义的。

如果同样的情况也适用于您的 SSD,那么您每个驱动器只能获得大约 600IOP,在我看来这对于 SSD 来说相当糟糕。使用一个不错的控制器,从 RAID 5 包读取的开销应该很小 - 所有磁盘上都有数据(分布式奇偶校验),因此只要您有足够的请求让控制器执行其操作,读取应该能够并行发送到所有磁盘。问题可能是您的控制器无法处理整体 IO 负载或以您尝试推动的数据速率达到最大值 - 它是什么类型的控制器?另一件事是,如果有任何写入,那么它们将极大地影响事情 - 使用 RAID 5,您的写入 IO 容量是读取速率的四分之一(使用好的控制器,使用坏的控制器更糟),并且 SSD 写入通常比读取慢,因此使用 SSD 的 RAID 5 的写入惩罚通常接近 6 倍。如果您确定写入不会混淆问题,那么您可以忽略这一点。

如果您没有考虑到这些因素,条带大小和分区对齐可能会占用相当大的空间。您说您已将 SSD 配置为具有 4K 块的 RAID 5 - 如果 4K 是您的条带大小,那么那就错了。条带大小应为 SSD 读取块大小的倍数,该倍数将远大于 4K,具体取决于 SSD,读取块将是 64k/128k 或更大。尝试试验条带大小,在不知道 SSD 型号和控制器的情况下,我无法为您提供有关什么大小合适建议,但请记住检查您的控制器是否真的可以扩展到您已经看到的 IO 速率和吞吐量数字,如果控制器已达到最大值,那么这是您需要修复的第一个瓶颈。

50Meg/秒的随机读取率取决于 IO 大小 - 对于在不错的 SSD(Intel X-25E,35k 随机读取 IOP)上进行小规模读取(在 4K 范围内),您应该看到 140Meg/秒。较便宜的消费级驱动器会慢一点,但无论使用哪种驱动器,您的 RAID 包的表现都严重不佳。

您说得对,TRIM 目前无法与 RAID 一起使用 - 要正确使用,需要在操作系统视为已删除的数据块与将其转换为物理磁盘上的块之间建立映射。目前还无法实现这一点,我也不会指望它能很快实现,只有当您向驱动器写入大量数据并反复填充然后删除数据时,这才是问题所在。如果您的 IO 模式主要是读取,并且您不会反复填充和删除数据,那么 TRIM 支持对您来说就不是问题了。

答案2

SSD 的访问时间非常短,因此它们在随机 I/O 方面非常出色,我相信这就是您在询问它们是否“线性扩展”时想要表达的意思。15K 旋转磁盘只能达到 45MB/秒,然后负载就会上升,因为它们的平均访问时间是 SSD 的 25 倍(5ms 对 0.2ms)。这就是它们能够更好地处理更高负载的原因。

15K 旋转磁盘也线性扩展,它们只是从更小的位置扩展。

RAID-5 的开销主要在写入上,因此如果您的负载是读取繁重的,那么与 RAID-0 相比,开销会很小(如果有的话)。

但请注意总线限制;如果您使用 8 个驱动器实现 300MB/秒,那么 12 个驱动器将使您更接近 500MB/秒。确保将这些驱动器分布在适当数量的 SATA/SAS 总线上,并且主机适配器在主板/背板上也具有足够的总线带宽。

我也听说过 TRIM 和 RAID 也有同样的问题,但我没有实际使用过。但这实际上取决于 SSD 是否需要它。特别是,企业级驱动器在这方面的问题较少。此外,如果您的应用程序主要是读取,那么问题就不那么严重了,因为驱动器将有时间在您写入数据后“赶上”擦除块。

相关内容