我了解到 RAID 10 是镜像条带,而 RAID 01 是条带镜像。 现在,我经常读到 RAID 10 和 RAID 01 之间的主要区别在于RAID 10 提供更高的容错能力。这种说法的理由是,在 RAID 10 中,单个镜像中的每个磁盘都必须发生故障才能导致阵列发生故障,而在 RAID 01 中,每个条带的一个磁盘故障就足以使阵列瘫痪。
但是,我对后一种说法提出质疑。虽然我完全理解为什么一个磁盘故障足以摧毁单个RAID 0 阵列,但我不明白为什么每个条带上的单个磁盘故障必然会摧毁RAID 0 阵列的镜像。考虑上面显示的 RAID 01 阵列,假设磁盘 0 和磁盘 3 发生故障。在这种情况下,不是没有发生数据丢失吗(因为所有块仍然存储在磁盘 1 和磁盘 2 的阵列中)?在这种情况下,为什么声称每个条带上的单个磁盘故障足以摧毁 RAID 01 阵列?
在您的示例中,在 RAID 0+1 中,磁盘 0 和 1 形成单个逻辑磁盘 A,它是 RAID 0 磁盘,磁盘 1 和 2 形成单个逻辑磁盘 B,它也是 RAID 0 磁盘。然后整个磁盘 A 镜像到磁盘 B,产生单个逻辑磁盘 C ,它是 RAID 1 磁盘。如果磁盘 0 发生故障,则整个磁盘 A 也会发生故障,因为这是 RAID 0 的工作方式。磁盘 1 是否仍可运行并不重要。同样,如果磁盘 3 发生故障,则整个磁盘 B 也会发生故障,而磁盘 2 是否仍可运行并不重要。因此,磁盘 A 和 B 都会发生故障,整个镜像 C 也会发生故障。
请注意,RAID 0+1 设置不能保证磁盘 0 和 2 上的数据相同,也不能保证磁盘 1 和 3 上的数据相同。该图有点误导。它只保证磁盘 A 和 B 上的数据相同,但它们在磁盘 A 和 B 中每个磁盘的“子磁盘”之间的布局可能不同(例如,考虑磁盘 A 由三个 200 GB 驱动器组成,形成 600 GB RAID 0 磁盘,而磁盘 B 由两个 300 GB 驱动器组成,也形成 600 GB RAID 0 磁盘的情况 - 这是完全可能的!)。因此,您不能依赖这样的假设:如果磁盘 0 发生故障,则相同的数据仍可在磁盘 2 上使用。
在 RAID 1+0 中,磁盘 0 和 1 组成单个 RAID 1 磁盘 A,磁盘 2 和 3 组成单个 RAID 1 磁盘 B。然后,磁盘 A 和 B 合并为 RAID 0 磁盘 C。如果磁盘 0 发生故障,由于磁盘 1 上有镜像,磁盘 A 仍可操作。如果磁盘 3 发生故障,由于磁盘 2 上有镜像,磁盘 B 仍可操作。因此整个磁盘 C 仍可工作。
如果再有一个磁盘发生故障,则磁盘 A 或磁盘 B 将无法运行,从而导致整个磁盘 C 瘫痪。