单个 RAID 与多个文件系统的性能比较

单个 RAID 与多个文件系统的性能比较

我正在尝试为 Linux 服务器上的应用程序获取最大顺序磁盘吞吐量。它有 7 个 SATA 磁盘,我可以使用硬件 RAID 控制器 (HP P420i) 将它们放入一个 RAID0 或 RAID5 中。或者,我可以单独使用它们,并在每个磁盘上分别放置一个文件系统,然后将它们安装在 /mnt/a、/mnt/b、... /mnt/g 下。(RAID/SATA 控制器可以将每个磁盘分配给其自己的 1 磁盘卷。)

我有一个大数据应用程序,其中多个(最多 10 个)进程可能同时执行文件/对象的顺序写入和读取。使用单个 RAID 卷,它们都将写入同一个文件系统,并且可能在同一个 RAID 系统和文件系统上产生一些争用。可怜的 RAID 控制器可能会太忙,速度达不到我想要的速度。另一方面,使用 /mnt/{a..g},我可以在应用程序层引入一些分片逻辑,以便根据正在写入的“对象”的名称,选择 /mnt/{a..g} 之一来存储该对象,这样进程就不会全部写入同一个 RAID 和文件系统,也许可以避免与 RAID 或文件系统争用相关的性能问题。

我以前认为 RAID5 的连续吞吐量与磁盘数量成线性关系,直到某个不太小的数字,但我最近的经验告诉我,实际情况并不接近。(在 7 磁盘 RAID5 ext4 上,我的写入速度只有 160MB/s,读取速度只有 320MB/s。)因此,我正在考虑最大化总​​连续磁盘吞吐量的替代方案。如果我分别安装 7 个磁盘并同时分别使用 7 个文件系统,我是否有可能为我的 10 个进程获得更好的总吞吐量?

答案1

为您的问题提供正确的答案远远超出了本文的范围 - 它太宽泛了。但结论是一样的 - 假设冗余无关紧要,那么差异将取决于工作负载的性质(尽管正如 Andrew 指出的那样,错误配置 RAID 系统比错误配置单个磁盘文件系统要容易得多)。

明确的答案(远比您在这里得到的答案好得多)来自于通过您的系统运行大量代表性工作负载并测量结果。

如果您特别关心性能,那么从所有硬件开始解决问题似乎是一种奇怪的方法;除非您特别需要容量,否则将其中一个 HD 换成配置为 bcache/journalling 的 SSD 可能是一个更好的解决方案。

相关内容