向raid 0添加驱动器堆会提高性能吗?


10

向raid 0添加驱动器堆会提高性能吗?我知道带区团队中的两个驱动器通常比单个驱动器快,但是我会注意到,带区团队中的2个驱动器和8个驱动器之间的性能差异吗?在您真的没有任何其他好处之前,对RAID中的驱动器数量有一般限制吗?

这里也提出了类似的问题

将更多驱动器添加到RAID 10阵列是否可以提高性能?

但是我真的是在问是否将多个驱动器添加到RAID 0是否比仅添加说2或4有改进?性能是否会持续提高?

Answers:


11

从理论上讲,是的,raid0中的更多驱动器将导致更高的性能,因为负载是由更多驱动器共享的。但是实际上,您将受到RAID控制器的带宽,CPU和内存性能等的限制。性能提升不是线性的,即4个磁盘的速度并不是2个磁盘的两倍。

在任何具有RAID控制器的合理现代系统中,甚至在Linux的mdadm上使用软件RAID的情况下,使用8个驱动器都将比使用2个驱动器快,并且您不应为系统的其余性能所困扰。CPU,raid和/或磁盘控制器,内存都应该能够处理它。您可能会看到系统资源的使用增加,添加的驱动器越多。特别是如果您将板载SATA控制器以软raid组合使用。但是没有什么会真正阻碍整体可用性。如果使用linux,则可能需要使用没有配置“抢先”的内核,以便面向服务器的任务优先于用户响应能力。

https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO

当然,添加的驱动器越多,其中一个发生故障并破坏整个团队的机会就越大。如果您很幸运,我希望8个驱动器的raid0持续不超过一两年。一个由16个驱动器组成的raid0会带来麻烦,然后我考虑一个raid10,它仍然足够快,您不必担心。

除非有详细的系统规格,否则我不知道有多少驱动器将用尽系统的资源。我认为,如果超过16个磁盘,则故障率将受到更大的限制(我宁愿不去考虑)。

自然,您只将raid0用于可以随时丢失而不会出现问题的数据。它对于诸如构建服务器或用于大型科学计算的临时空间之类的东西非常有用。实际上,这些场景是我经常使用raid0的方式,它是从一群本应收集灰尘的旧的,容量较低且价格便宜的磁盘中挤出更多寿命的好方法。您甚至可以混合大小,至少使用mdadm。

如果使用mdadm,可能值得考虑只使用raid10,因为在某些配置中它可以接近raid0的性能,即raid0的读取性能,并且已经比其他raid级别(raid0除外)提高了写入性能。与raid0相比,与其他raid级别相比,您将获得更好的冗余,并且速度稍有下降。那将是两全其美的做法,您不会经常发现。

https://zh.wikipedia.org/wiki/RAID#非标准级别

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),我期望的并不重要。


如果要混合使用大小,则无法应用RAID0,至少要使用这些磁盘具有的所有空间。您必须使用JBOD,这不会提高性能。
Tero Kilkanen 2015年

您可以使用mdadm混合大小,这非常灵活,mdadm甚至允许您配置3磁盘raid10。我不希望您可以在RAID控制器中混合使用尺寸,这些尺寸较不灵活,但速度更快。
aseq 2015年

1
我检查了一下,如果要RAID0,则阵列中最小的设备将定义整个阵列的大小。也就是说,如果您具有100GB,200GB和300GB的驱动器,则将获得300GB的RAID0阵列以及100GB和200GB的可用空间以用于其他目的。在线性模式下,您可以获得所有设备的完整容量,但不能获得并行性能。
Tero Kilkanen,2015年

1
听起来不错,是的。
aseq 2015年

2
对于旋转介质,寻道时间与传输时间是否还存在问题?添加更多的磁盘可以使更多的磁盘读取/写入的磁盘数量分散(每个磁盘必须做的更少==更快),但是它们仍然必须执行查找操作(不能通过添加更多驱动器来减少)。因此,根据您执行的操作类型(即,丢失小读取而少读取几条大读取),提高传输速度(通过添加更多驱动器)可能会产生很小或很大的差异。
Molomby 2015年

1

这取决于工作量,但是恕我直言,是的,将2个额外的磁盘添加到现有的2个磁盘阵列中应该可以提供更好的整体性能。

您需要意识到瓶颈在哪里:

  • CPU-CPU可以处理多少数据流,
  • 总线/控制器-它可以携带多少数据,
  • SSD / HDD-它可以提供/获取多少数据。

假设有一个Linux软件RAID,然后添加两个额外的磁盘可能会导致:

  • 〜对足够大的数据块的访问时间缩短了两倍,从而导致;
  • 〜两倍的IOPS,
  • 假设控制器具有足够的总线并且CPU可以处理流量,则吞吐量将增加一倍。

*〜在以下因素中,这绝不会两次提高,始终少于10-20%。它看起来或多或少是线性的。请不要将其视为权威性答案,我没有对其进行任何研究。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.