为什么 RAID 0 不能利用两个不同大小的磁盘上的所有磁盘空间?

为什么 RAID 0 不能利用两个不同大小的磁盘上的所有磁盘空间?

去引用维基百科关于 RAID 的文章

可以使用不同大小的磁盘创建 RAID 0,但每个磁盘添加到阵列的存储空间仅限于最小磁盘的大小。例如,如果 100 GB 的磁盘与 350 GB 的磁盘一起分条,则阵列的大小将为 200 GB(100 GB × 2)。

然而,文章并没有说明为什么它不能将它们一起 RAID 并占用整个磁盘空间。我理解条带化写入在两者之间,但肯定不应该防止在性能下降的情况下,向第二个磁盘的后面扇区写入数据?是否有其他 RAID 系统(例如软件 RAID)提供此类功能?

答案1

大小被限制为最小磁盘大小的原因与条带“交替”写入且必须具有相同大小的事实有关。

在双磁盘系统中,所有奇数条带位于一个磁盘上,偶数条带位于另一个磁盘上。写入在磁盘之间交替进行,奇数/偶数/奇数/偶数/...

由于条带必须大小相同且成对(对于两个磁盘),因此最大可用空间限制为 2 *(最小磁盘的大小)。

答案2

使用剩余空间。您可以使用剩余空间创建卷,甚至可以将其用作另一个 RAID 的一部分。但是,使用这个额外的空间会降低 RAID 0 的性能,因为两个不同的进程可能会尝试访问同一个物理控制器和磁盘。

为什么不能将这个额外的空间添加到原始 RAID?好吧,不用说太多细节,这是因为 RAID 使用的算法。RAID 0 先写入 RAID 中的第一个磁盘,然后再写入下一个磁盘。这提高了性能,因为它不必等待前一个磁盘完成读取或写入。如果使用了您帖子中的 250 GB,则大部分写入将写入第一个磁盘,几乎消除了任何性能提升。

RAID 可能不是您想要的解决方案,如果您想使用驱动器的所有空间,您应该跨卷。跨卷允许您获取多个卷并将它们连接在一起形成一个大卷。跨卷不会提高性能或提供冗余。

答案3

RAID 是一个伪标准,它描述了如何在磁盘阵列上存储数据。该标准描述了四种不同的数据存储方式(技术上更多,但大多数人都不关心其他方式):

Raid-0:条带化。每个数据块分散在 RAID 设备的每个成员上。没有冗余,因此它更像是廉价磁盘阵列,而不是廉价磁盘冗余阵列。

Raid-1:镜像。每个数据块都存储在阵列中的每个磁盘上。这只有在使用两个磁盘时才有意义。RAID 1/0 或 RAID 10 是镜像和条带化的组合,可用于利用两个以上的磁盘。

Raid-5:奇偶校验。每个数据块分布在 RAID 设备的每个成员上 + 一个磁盘专用于奇偶校验。

Raid-6:双重奇偶校验:与 Raid-5 相同,但具有两个奇偶校验磁盘。

就是这样。Raid 没有描述如何处理大小不匹配或其他问题,但条带化实际上只适用于大小相同的磁盘。通常解决这个问题的方法是,您可以将剩余空间用作单独的磁盘驱动器。

不再使用 RAID 来创建大型磁盘阵列,您可以使用 ZFS 之类的东西,只需将磁盘添加到存储池即可。ZFS 始终会尽可能高效地使用两个磁盘,您可以告诉 ZFS 您喜欢的冗余级别。

先前的技术包括卷映射(即 LVM 或 Windows 等效技术),它将将块映射到磁盘的概念抽象到更高级别。使用 LVM,您可以跨磁盘、扩展分区、拥有不连续的分区等等。卷映射不是 RAID,它不会随着您增加磁盘而提高性能,而是会根据您在文件系统中的位置随机选择写入一个磁盘或另一个磁盘。这称为跨接,如果您追求的是 IOPS 而不是原始性能,它通常比 RAID 更好。

答案4

A RAID 0 can be created with disks of differing sizes, but the storage
space added to the array by each disk is limited to the size of the
smallest disk.

对于大多数 RAID0 实现来说,这可能是真的,而且将是如此。但并非全部。

使用 RAID 0 有两个原因:

  1. 将多个磁盘连接成一个大卷。
  2. 表现。

选项 2 是最常见的,我认为它几乎用于所有当前的 RAID 0 实现。技术解释是信息在磁盘之间交替写入。

用非技术性的方式来说:将磁盘想象成两本书。这些书的访问(读/写)速度有限。因此,我们不是将它们分成两本 100 页的书,而是将它们重新格式化为两本书,但重新对页面进行编号,以便所有偶数都写在一本书中,所有奇数都写在另一本书中。

现在我们新的“R0书”的行为就像是一本页数是原来的两倍、速度是原来的两倍的书。


选项 1 可以简单到“将书背对背粘在一起”。在这种情况下,您不会获得速度提升,但可以粘上页数不同的书。我似乎记得 1990 年左右有一些类似的“RAID0”实现。但这不是大多数人认为的“正确的 RAID 0”。

相关内容