在 raid 0 中添加大量驱动器是否会提高性能?我知道条带化 raid 中的两个驱动器通常比单个驱动器更快,但我是否会注意到条带化 raid 中的 2 个驱动器和 8 个驱动器之间的性能差异?在您真正无法获得更多好处之前,raid 中的驱动器数量是否有一般限制?
有一个类似的问题被问到here
但我真正想问的是,向 raid 0 添加许多驱动器是否比仅添加 2 个或 4 个驱动器有所改进。性能会持续提高吗?
答案1
理论上是的,raid0 中的更多驱动器将带来更高的性能,因为负载由更多驱动器分担。然而在实践中,你会受到 raid 控制器带宽、CPU 和内存性能等的限制。性能提升不是线性的,也就是说 4 个磁盘的速度并不完全是 2 个磁盘的两倍。
在任何配备 raid 控制器的现代系统中,或者甚至使用带有 linux mdadm 的软件 raid 时,使用 8 个驱动器都比使用 2 个驱动器快,并且您不应该受到系统其余部分性能的阻碍。CPU、raid 和/或磁盘控制器、内存,所有这些都应该能够处理它。您可能会看到添加的驱动器越多,系统资源的使用量就越大。特别是如果您在软 raid 组合中使用板载 SATA 控制器。但这不会真正妨碍整体可用性。如果使用 linux,您可能希望使用已配置为没有“抢占”的内核,以便面向服务器的任务优先于用户响应。
https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO
当然,您添加的驱动器越多,其中一个驱动器发生故障并毁掉整个 raid 的可能性就越大。如果您足够幸运的话,我预计 8 个驱动器的 raid0 不会持续超过一两年。16 个驱动器的 raid0 会很麻烦,然后我会考虑 raid10,它仍然足够快,您不用担心太多。
至于有多少个驱动器会占用系统资源的最大值,除非我有详细的系统规格,否则我不会知道。我认为如果超过 16 个磁盘(我不太喜欢考虑这个问题),故障率会更受限制。
当然,您只会将 raid0 用于那些随时可能丢失而不会出现问题的数据。它非常适合构建服务器或用于大型科学计算的临时空间。事实上,这些场景正是我经常使用 raid0 的情况,这是一种很好的方法,可以让一堆旧的、容量较低的、便宜的磁盘多活一点,否则这些磁盘就会积满灰尘。您甚至可以混合大小,至少使用 mdadm 即可。
如果使用 mdadm,可能值得考虑只使用 raid10,因为在某些配置下,它可以接近 raid0 的性能,即 raid0 的读取性能,并且已经比其他 raid 级别(raid0 除外)的写入性能有所提高。您将获得比其他 raid 级别更好的冗余,与 raid0 相比,速度只会略有下降。这将是两全其美的,您不会经常发现这种情况。
https://en.wikipedia.org/wiki/RAID#Non-standard_levels
Linux MD RAID 10 提供了一个通用 RAID 驱动程序,其“近”布局默认为具有两个驱动器的标准 RAID 1 和具有四个驱动器的标准 RAID 1+0;但是,它可以包含任意数量的驱动器,包括奇数。凭借其“远”布局,MD RAID 10 可以同时运行条带和镜像,即使在 f2 布局中只有两个驱动器;这将运行镜像和条带读取,从而提供 RAID 0 的读取性能。Linux 软件 RAID 提供的常规 RAID 1 不会条带读取,但可以并行执行读取。
正如评论中所建议的,如果您利用所有磁盘空间而不是让最小的磁盘定义阵列的大小,则使用 mdadm 混合大小不会提高速度。
此外,raid0 中的寻道时间不会改善,甚至会变得更慢。对于基于 SSD 的 raid0,寻道时间会非常短(介于 0.08 到 0.16 毫秒之间https://en.wikipedia.org/wiki/Hard_disk_drive_performance_characteristics#cite_note-HP_SSD-6) 我认为这并不会有太大影响。
答案2
这取决于工作负载,但恕我直言,在现有的 2 个磁盘阵列中添加 2 个额外的磁盘应该可以提供更好的整体性能。
您需要意识到瓶颈在哪里:
- CPU——CPU 可以处理多少数据流,
- 总线/控制器 - 它可以承载多少数据,
- SSD/HDD — 它可以提供/获取多少数据。
假设有一个 Linux 软件 RAID,然后添加两个额外的磁盘可能导致:
- ~ 对足够大的数据块的访问时间缩短两倍,从而导致;
- ~ 双倍 IOPS,
- ~ 双倍吞吐量,假设控制器有足够的总线并且 CPU 可以处理流量。
*~ 以下因素永远不会有两倍的提升,总是少于 10-20%。它看起来或多或少是线性的。请不要将其视为权威答案,我没有对此进行任何研究。