更新:刚刚在一块有八个额外 SATA 端口的主板上尝试了这种方案,它成功了。比我想象的要慢,但仍然可以接受。根据与 David Schwartz 的讨论,我相信他可能是正确的,认为存在一些病态的错误,或者 Ali Chen 可能是正确的,认为 RHEL 无法同时处理那么多主机控制器。既然我已经走到这一步,而且现在基本上是因为好奇才得到报酬的,我将再多做一些实验。:)
开始原始帖子
因此,设置过程有点冗长。我们的系统中有两个 RocketU 1144D 4 端口 USB 3.0 卡,一个位于 PCIe 2.0 插槽上,另一个位于 PCIe 3.0 插槽上,以避免带宽问题。每个 USB 卡都配有四个 Crucial MX300 1TB SSD,它们位于外部供电的 Silver Stone Raven 外壳中。根据客户的要求,需要能够同时将同一组文件写入八个磁盘中的四个磁盘,同时从其他四个磁盘读取文件以计算 MD5 校验和。每个磁盘的容量都尽可能接近,文件大小大约为 1GB,无论是在读取时还是在写入所有文件后。
现在,如果我们只在其中一张卡上访问或写入文件,速度就不会太差。在满 TB 的情况下,我们平均每个文件需要 3 到 4 秒(读取/计算或写入)。问题是,当我们尝试同时执行这两项操作时,读取和写入速度会很快下降,从开始的每个文件大约 1.5 秒下降到每个文件超过 60 秒。
系统中仅有的其他卡是 PCIe 3 16x 插槽中的视频卡和另一个 PCIe 3 8x 插槽中的 Intel X540-T2 适配器(目前未使用)。
我们有一个双 CPU X10DRL-i 服务器 MOBO,上面有两个 6 核 Zenon 处理器,还有 64 GB 的 RAM,运行来自另一个连接到 SATA 端口的 Crucial MX300 的 RHEL 7.2。
因此,问题是,是否有可能在适当的时间内完成上述描述,该时间定义为:每个 SSD 读取一千个一千兆字节的文件,从连接到第一张卡的四个 SSD 写入连接到第二张卡的四个 SSD,这些操作必须并行完成(因为客户)所有操作都在一小时以内完成?
从我所学的知识来看,我开始倾向于否定,但我想问问是否有比我更有知识的人有更明确的答案。任何帮助、建议,尤其是答案,我都非常感谢。
根据 David Schwartz 的建议进行编辑:
每张卡所需带宽 每个 USB 3.0 端口 5Gbps x4 端口 = 20 Gbps
可用带宽 PCIe 2.0 x4,每通道 500 MBps = 16 Gbps
据我所知,由于一张卡使用 PCIe 3 通道,另一张卡使用 PCIe 2 通道,因此这些资源不应该发生冲突。
笔记:
我知道该卡的带宽是超卖的,但每个 GB 文件的读写不应该花费数分钟的时间。
编辑2:
根据 David Schwartz 的建议,我使用系统监视器和 htop 监视了核心使用情况。系统显示前十几个文件 IO 的使用率为 100% 或接近 100%,即四个核心。然后系统会冻结几秒钟,这时文件 IO 性能会下降。此外,此后核心利用率很少会达到 100%,即使达到,时间也很短。
编辑 3:很可能是最终编辑。
经过一些研究和实验,我认为我们可以说这不适用于手头的卡,我敢打赌评论中提到的 StarTech 卡也不会起作用。我相信我们可以根据几件事得出这个结论。简而言之,一个 SSD 在卡上运行良好。两个 SSD 运行良好,但速度会稍微减慢;我想是开销。但是,3 个或更多开始出现问题。我想这是因为我们试图将 20Gbps 推到 16Gbps 的 PCIe 通道上,而不是获得 16Gbps 的理论最大值,传输两侧的控制器可能会相互绊倒,并且通常导致事情备份到数据传输速度变慢的程度。这只是一个理论,但它足以让客户放弃 USB 要求并允许我们尝试 SATA 和其他方法。SATA 的效果要好得多,所以我认为我们有一个赢家。感谢 David Schwartz 和 Ali Chen 的帮助和建议。
编辑 4:实际的最终编辑
因此,昨天我在查看 SATA 解决方案时偶然发现了问题的多个部分答案。实际问题有两个方面,而且只有在发现第一个问题后才变得明显。
因此,第一个问题是内存管理。在测试了读取大文件进行写入的软件后,发现文件似乎被读取一次,然后被写入多次。事实并非如此。因此,我们不断收到多个 1GB 文件的多个读取请求。为什么这在测试中有效,但在实践中却无效,我不确定,但我们没有时间进行事后分析,所以这留给历史去解决吧。
第二个问题是我们不是硬件专家,因此在 Linux 系统上工作时我们不知道一个非常重要的细节。由于 NTFS 不是 Linux 的原生文件系统(我们知道这一点),显然它的运行速度会慢近一个数量级(我们不知道这一点)。如果这是 Windows 系统,我们就不会遇到任何问题。
将这两个因素结合起来,您就会得到我们所经历的不稳定行为。一旦我们将所有磁盘完全重新格式化为 EXT4,我们就不会再看到任何不可预测的读/写时间,一切都按预期运行。我们可以在允许的参数范围内同时进行写入和读取/md5 计算。