以下引自:嵌套突袭简介
Linux md 允许您组合“近”和“远” RAID 配置。例如,在 am=2 和 f=2 配置中,有四个驱动器(允许的最小值),数据布局如下所示(省略)。请注意,每个数据块有四个副本!还请注意,我们可以丢失两个驱动器而不会丢失对数据的访问权限。但是,与普通的 RAID-10 相比,我们可以丢失任何两个驱动器,但仍可访问所有数据。这比 RAID-10 好得多,在 RAID-10 中,我们可以丢失任何单个驱动器,但只能丢失两个驱动器的特定组合。此特定的四驱动器“近”和“远” RAID 配置的容量如下。| 容量 = (n/2) * 单个磁盘的容量 | 因此,与 RAID-10 相比,我们没有获得任何额外的容量,但我们确实获得了丢失任何驱动器的能力(在我看来,这是一个很大的优点)。
我不知道是否有错误,我也找不到其他关于巨大的(在我看来)MD-RAID10 n2 f2 布局的好处 - 能够丢失阵列中的任意两个(4 个磁盘阵列中的)驱动器,而标准 RAID10 则只能丢失某些对的磁盘。这是真的绝对适用于任何 MD RAID10 n2 f2 布局?另外,4 磁盘 md raid 10 n2 f2 布局的容量是多少?文章有误,部分评论不同意。
谢谢!
答案1
他们是正确的,这样的安排可以让任何两次故障都能得以幸存。
“N=2”设置确保前两个复制块位于不同磁盘的等效扇区上。
'F=2' 设置确保后两个复制块不与 N=2 个复制块共享磁盘,只要阵列大小达到或超过 N+F 个驱动器。
至于容量计算,文章内容不正确(见下文)。我们来看几个例子:
4 驱动器 2x2 阵列
- 阵列中总共有 4 个驱动器
- 有 2 个“近似”复制品
- 有 2 个“远”副本
- 因此,“条纹宽度”为 4 个块。
因此每个块被复制四次。容量是单个驱动器的大小。
5 驱动器 2x2 阵列
- 阵列中总共有 5 个驱动器
- 有 2 个“近似”复制品
- 有 2 个“远”副本
- 因此,“条纹宽度”为 4 个块。
与 4 驱动器阵列一样,每个块被复制四次。但是,额外的驱动器提供了另一个完整的驱动器块以供扩展。容量是两个驱动器的大小。
换一种说法:
鉴于:
- N = 驱动器数量
- R = 每个条带的复制块数
- S = 驱动器大小
容量 = S * ( N - (R-1))
4 驱动器阵列:
N = 4
R = 4
容量 = S ( 4 - (4-1)) = S * (4-3) = S * 1
5 驱动器阵列:
N = 5
R = 4
容量 = S * ( 5 - (4-1)) = S * (5 - 3) = S * 2
只有当 N ≧ R 时,“任意两个都可能失败”的条件才成立。事实上,当 R=4 时,任意三个可能会失败。同样,只有当 N ≧ R 时才可以。
我必须指出文章中的一个数学错误本身。引用:
此特定的四驱动器“近”和“远” RAID 配置的容量如下。
Capacity = (n/2) * capacity of single disk
这是不正确的。2
该公式中的 应该是复制块的数量。在 2x2 设置中为 4。这在图中得到了清晰的展示,其中“A1”块出现了四次。作者对 3 驱动器示例的计算是正确的,因为这些公式显示除以 3。
[示例为三个磁盘上的双副本 RAID]
Capacity = 2/3 * capacity of single disk
md 的手册页进一步支持了这一点:
最后,可以有一个同时具有“近”和“远”副本的阵列。如果一个阵列配置了 2 个近副本和 2 个远副本,那么每个块将总共有 4 个副本,每个副本位于不同的驱动器上。这是实现的产物,不太可能具有实际价值。
因此,2×2 RAID 设置将有四个副本。因此,四驱动器实现的 2×2 RAID 将具有单个驱动器的容量。
作者认为近/远 RAID 设置将提供超出常规 R10 的额外保护,这一论点站不住脚。保护并非来自近/远设置,而是来自超过 2 个数据副本。
数据复制 R 次的 RAID 配置最多可以容忍 R-1 个磁盘故障。可以容忍更多故障只要额外的故障设备位于已经失败的复制集中。这就是 RAID0 设备的镜像对 (R=2) 可以容忍单个驱动器故障的原因。如果 R 等于驱动器数量 (N),则可以允许除一个驱动器之外的所有驱动器都发生故障,并且仍能维持服务。