哪种配置将为 USB RAID 阵列带来最佳吞吐量

哪种配置将为 USB RAID 阵列带来最佳吞吐量

我使用一台旧的 MacBook Core 2 Duo 作为 NAS 服务器。我有四个外置 USB 3TB 驱动器(我们称它们为驱动器 1 - 驱动器 4),我想将其配置为 RAID 阵列,可以是 RAID 0+1 或 RAID 10。MacBook 有两个 USB 2.0 控制器(我们称它们为控制器-A 和 -B)。计划是将驱动器 1 和驱动器 2 连接到控制器 A,将驱动器 3 和驱动器 4 连接到控制器 B。在我看来,我有两种配置 RAID 阵列的选项:

  1. 将驱动器 1 与控制器 A 上的驱动器 2 进行条带化,将驱动器 3 与控制器 B 上的驱动器 4 进行条带化,并将控制器 A 上的驱动器镜像到控制器 B 上的驱动器(我相信这称为 RAID 0+1)
  2. 将控制器 A 上的驱动器 1 与控制器 B 上的驱动器 3 进行条带化,将控制器 A 上的驱动器 2 与控制器 B 上的驱动器 4 进行条带化,然后将驱动器 1 和驱动器 3 镜像到驱动器 2 和驱动器 4(我相信这称为 RAID 10)

我的问题是哪种配置能够产生最佳吞吐量?

答案1

完全重写

基本假设

  1. USB2 吞吐量限制在约 30-40MB/秒。
  2. 任何 3TB 硬盘都比它快。
  3. 您实际上有两个独立的 USB 控制器。

1) 是众所周知的事实。根据驱动程序、外部机箱中的 USB 转 SATA 芯片等,会有一些变化。但除非您的设置非常差,否则每个 USB 总线的速度将约为 35MB/秒。

2) 硬盘速度因型号而异。假设 3TB 型号是现代硬盘,我预计其较慢的连续吞吐量至少为 90MB/秒。

3) 基于您自己的帖子。

MacBook 有两个 USB 2.0 控制器(我们称之为控制器-A 和 -B)。

如果您恰好有两个 USB 连接器连接到同一个内部 USB 集线器,那么您实际上就拥有一个控制器。无论您使用哪种驱动器组合,都不会超过单个控制器的速度。

RAID 信息

关于 RAID 级别的权威文章在我们的姊妹网站 ServerFault 上对 RAID 级别 0(条带)、1(镜像)和 10 进行了很好的解释。

请阅读它,解释很清楚。


它们也不适用于您。所有这些都假设驱动器的速度是有限的。也就是说,信息以比驱动器所能承受的速度快得多的速度传入和传出驱动器。在一个条带中使用两个驱动器将快两倍,因为您可以同时使用两个驱动器的速度。

如果您将两个驱动器放在同一个 USB 总线上,那么您仍然会受到该总线速度的限制,并且在进行顺序读取或写入时不会获得任何速度。

这对我意味着什么?

如果在控制器 A 上设置两个独立驱动器,就会遇到这种情况。

控制器-A --------- [驱动器1] ----- [驱动器2]

每个驱动器的读写速度约为 35MB/秒。如果同时使用两个驱动器,则读写速度会减半。


如果我对驱动器进行条带化(RAID 0),那么它将显示为单个双倍大小的驱动器。

控制器-A --------- ([驱动器 1][驱动器 2])

速度仍然受到 USB2 总线的限制。连续吞吐量仍然限制在 35MB/秒左右。速度并没有提高。但是,您可以轻松地虚拟单个 6TB 驱动器,而不是两个 3TB 驱动器。


镜像(RAID 1)驱动器通常会导致两倍的读取速度(因为限制因素是磁盘读取速度,而您可以同时从两个磁盘读取)并且通常不会损失写入速度。

但在本例中不是。

控制器-A --------- [驱动器1]
                        [驱动器2]

单个驱动器的读取速度将使总线饱和。两个驱动器不会使其翻倍。结果仍将是相同的 35MB/秒。

在写入镜像的情况下,情况甚至更糟。您正在写入两个驱动器。您将通过相同的限制性 USB2 总线两次传递相同的数据。写入速度将减半!


我们可以对通过 USB 控制器 B 连接的磁盘执行相同的操作,并获得相同的结果。显然,在同一 USB 总线上使用两个磁盘不会增加吞吐量。甚至可能使情况变得更糟。

另一种方法是在不同的控制器上使用两个磁盘。

控制器-A --------- ([驱动器 1]  

控制器-B --------- [驱动器3] )

如果镜像这些,则读取速度将提高一倍。这是因为读取将从两个磁盘进行,并填充两个 USB2 总线。读取速度约为 70MB/秒。

写入必须同时在两个驱动器上进行。您仍会写入两倍的数据。您拥有两倍的带宽。最终结果没有变化。

您将获得镜像的额外冗余。(如果一个驱动器发生故障,您仍然可以读取所有数据)。


现在进行条纹处理:

控制器-A --------- ([驱动器 1]  

控制器-B --------- [驱动器3] )

两个驱动器可以同时读取和写入。读取和写入速度加倍。耶!:)

但是,您现在正在使用两个 USB2 总线上的所有带宽。添加任何驱动器都不会增加吞吐量。无论您将它们组合成 RAID10 还是 RAID01。

所以无论如何我的速度都被限制在 70MB/秒?

是的。

此设置的最佳速度为 70MB/秒,使用独立控制器上的两个驱动器。

您可以设置两个条带。只要您不同时使用它们,它们都会产生最大吞吐量。如果同时使用它们,它们的速度都会下降到大约一半。

吞吐量?而不是速度?

我一直非常小心地尽可能地使用顺序吞吐量。而不是速度。

执行大量小型 IO 请求可能会使磁盘性能下降。在这种极端情况下,驱动器性能可能会下降到每秒 5 MB(即使在 15k RPM 2½ 英寸 SAS 驱动器上也是如此)。

这不是您在正常使用 NAS 时会遇到的情况。NAS 大多存储几 MB 大小的电影、音乐、照片和文档。在这种情况下,磁盘将以高速(大约 100MB/秒)读取这些文件,然后等待 2/3 的时间,直到它可以通过 USB 总线将其推送。

如果您访问整个磁盘上的大量小文件(例如,在碎片严重的卷上执行编译作业期间),则有效磁盘速度会低得多。如果低于 USB2 总线速度,那么您将获得 RAIDing 驱动器的正常优势。

然而这种情况应该极其罕见,你的问题是:

我的问题是哪种配置能够产生最佳吞吐量?

你会怎么办?

两个驱动器组成一个条带,每个控制器一个驱动器,可产生一个不错的 6TB 驱动器。使用其他驱动器作为离线备份。

RAID 口号

RAID 不是备份。 RAID 不是备份。 RAID 不是备份。

  • 如果发生火灾,RAID 将无法保存您的数据。
  • 如果发生盗窃,RAID 将不会保存您的数据。
  • 如果发生严重电源故障,RAID 将无法保存您的数据。
  • 等等等等。唯一的备份是异地备份。缺少离线备份。

答案2

第二种方案称为 1+0,与 RAID10 不同(实际上取决于控制器)。RAID10 阵列至少由四个设备组成,维护起来更轻松。

如果您将一个或多个驱动器进行条带化和镜像,则性能会得到明显的提升,如下所示:

1 2 3 : 突袭 0 \
                 +-- 突袭 1
4 5 6:突袭 0/

.. 相对于

1 2 3:突袭 1 \
                +-- 突袭 0
4 5 6:突袭 1 /

.. 但话又说回来

1 2 :突袭 1 \
3 4: 突袭 1 +-- 突袭 0
5 6:突袭 1 /

可能会给你大约相同的吞吐量。

但因为你正好有四个驱动器,所以两种情况下的性能大致相同。但事实是,你的设置无论如何都会很慢,因为 USB2 是一个严重的瓶颈。

相关内容