RAID 10 (1+0) 和 RAID 01 (0+1) 之间有区别吗?

25 raid database

我已经看到列出的这两个,都在多个驱动器上进行了条带化​​和镜像,但是我没有注意到它们之间的区别吗?

Mar*_*son 37

它与执行操作的顺序有关,它仅适用于 6 个磁盘或更大的阵列(如果您有 4 个磁盘,它们几乎相同)。

RAID 1+0 (10):磁盘 1 + 2、3 + 4、5 + 6 被镜像以创建 RAID-1 阵列,并在阵列之上创建 RAID 0 阵列。

RAID 0+1 (01):将磁盘 1 + 2 + 3 条带化以创建 RAID 0 阵列,然后将磁盘 4 + 5 + 6 条带化以创建 RAID 1 冗余。

使用 RAID 0+1,阵列一侧(1、2、3 或 4、5、6)的单个磁盘丢失将使阵列降级到您基本上运行 RAID 0 的状态(这很糟糕)。

使用 RAID 1+0,您可以从每对(1,2 或 3,4 或 5,6)中丢失一个磁盘,而阵列将保持正常运行。使该阵列脱机的唯一方法是使成对的两个磁盘都出现故障。

除非您的情况特殊,否则永远不要使用 0+1。

  • 我想不出任何,因此为什么如果你确实有一个,那会很特别 (7认同)
  • +1 避免 0+1 它应该只在非常特殊的情况下使用 (3认同)
  • 只是一个快速说明,在任何一种情况下,在丢失一个磁盘后,阵列都被视为降级,并且需要尽快更换该磁盘,因为再丢失一个磁盘可能会导致数据丢失。RAID1+0 的几率是 1/7,RAID0+1 的几率是 4/7。但在任何一种情况下,再发生 1 次故障都会导致整个阵列瘫痪 (3认同)

red*_*ght 16

Raid 0+1 vs Raid 1+0(失败概率)

这里有一些数学知识,可以显示失败率的差异。为简单起见,我们假设有偶数个磁盘。

在这两种阵列配置中,每个磁盘都被分成块。在 Raid 0+1 中,先进行条带化,然后再进行镜像。在 Raid 1+0 中,首先发生镜像,然后是条带化。

我们总是可以将 Raid 0+1 分成两组(G1 和 G2)。
请注意,我在数学意义上使用“分区”。
对于 n 个磁盘,我们可以定义:
G1 = {D 1 , D 2 , ..., D n/2 }
G2 = {D n/2+1 , D n/2+2 , ..., D n }

Raid 0+1

4 Disks:                       6 Disks:
Disk1 Disk2 Disk3 Disk4        Disk1 Disk2 Disk3 Disk4 Disk5 Disk6
----- ----- ----- -----        ----- ----- ----- ----- ----- -----
| a | | b | | a | | b |        | a | | b | | c | | a | | b | | c |
| c | | d | | c | | d |        | d | | e | | f | | d | | e | | f |
----- ----- ----- -----        ----- ----- ----- ----- ----- -----
G1 = {D1, D2}                  G1 = {D1, D2, D3}
G2 = {D3, D4}                  G2 = {D4, D5, D6}
Run Code Online (Sandbox Code Playgroud)



对于 Raid 1+0,我们总是可以将磁盘分区为 n/2 组。
请注意,我在数学意义上使用“分区”。
对于 n 个磁盘,我们可以定义:
G1 = {D1, D2}
G2 = {D3, D4}
...
G n/2 = {D n-1 , D n }

Raid 1+0

4 Disks:                       6 Disks:
Disk1 Disk2 Disk3 Disk4        Disk1 Disk2 Disk3 Disk4 Disk5 Disk6
----- ----- ----- -----        ----- ----- ----- ----- ----- -----
| a | | a | | b | | b |        | a | | a | | b | | b | | c | | c |
| c | | c | | d | | d |        | d | | d | | e | | e | | f | | f |
----- ----- ----- -----        ----- ----- ----- ----- ----- -----
G1 = {D1, D2}                  G1 = {D1, D2}
G2 = {D3, D4}                  G2 = {D3, D4}
                               G3 = {D5, D6}
Run Code Online (Sandbox Code Playgroud)


现在,让我们进入一些数学!
要在 Raid 0+1 配置中发生故障,每个组中至少有 1 个硬盘必须死亡。
要在 Raid 1+0 配置中发生故障,任何单个组中的所有硬盘都必须死亡。

在任一 Raid 配置中,至少有两个磁盘必须失效。让我们看看如果两个磁盘都死了,这两种 Raid 配置可能会失败的所有可能方式。

Number of Disks (n) = 4
2 Disks Die : Raid Failure
D1D2        : R10
D1D3        : R01
D1D4        : R01
D2D3        : R01
D2D4        : R01
D3D4        : R10
Run Code Online (Sandbox Code Playgroud)

对于 4 个磁盘,总共有 C(n, 2) = C(4, 2) = 6 种组合。

这些组合中的4 / 6将导致 Raid 0+1 配置失败。(失败的几率为 66%)
我们可以说:

P1 = P (Raid 0+1 Failure | 2 Disks die) = 2/3
Run Code Online (Sandbox Code Playgroud)


这些组合中的2 / 6将导致 Raid 1+0 配置失败。(失败的几率为 33%)
我们可以说:

P2 = P (Raid 1+0 Failure | 2 Disks die) = 1/3
Run Code Online (Sandbox Code Playgroud)


我们可以用 n = 6 做同样的测试,但我将省略该表。

P1 = 9/15 = 3/5
P2 = 3/15 = 1/5
P3 = P (No failures | 2 Disks die) = 4/15
P1P2 = 1/15
Run Code Online (Sandbox Code Playgroud)

对于 6 个磁盘,有 c(n, 2) = c(6, 2) = 15 种可能的组合。
Raid 0+1 配置失败的几率为 60%。
Raid 1+0 配置失败的几率为 20%。

现在这些结果可以推广到 n 个磁盘。

P1 = c(n/2, 1) * c(n/2, 1) / c(n, 2)

   = (n/2 * n/2) / (n * (n - 1) / 2)

   = (n/2 * n/2) * (2 / (n * (n - 1))

   = (n * n / 4) * (2 / (n * (n - 1))

   = (n / 2) * (1 / (n - 1))

   = n / (2 * (n - 1))
Run Code Online (Sandbox Code Playgroud)


P2 = (n/2) / c(n, 2)

   = (n/2) / (n * (n - 1) / 2)

   = (n/2) * (2 / (n * (n - 1)))

   = 1 / (n - 1)
Run Code Online (Sandbox Code Playgroud)


现在是数学中最有用和最有趣的部分。我们可以取上面两个方程的极限。下面,我使用“inf”来表示无穷大。

Lim n->inf P1 = Lim n->inf n / (2 * (n - 1))     // We can use L'Hopital's rule

              = Lim n->inf 1 / 2 = 1 / 2
Run Code Online (Sandbox Code Playgroud)

换句话说,如果 2 个磁盘在 Raid 0+1 配置中死亡,则至少有 50% 的失败机会!

现在让我们看看 Raid 1+0 配置如何公平。

Lim n->inf P2 = Lim n->inf 1 / (n - 1) = 0
Run Code Online (Sandbox Code Playgroud)

换句话说,我们在raid 1+0 配置中添加的磁盘越多,我们得到的故障概率就越接近于理论上的 0%!

一张决赛桌(请注意,我将数值四舍五入为整数。)

-------------------
| n   | P1  | P2  |
-------------------
| 4   | 66% | 33% |
| 6   | 60% | 20% |
| 8   | 57% | 14% |
| 10  | 55% | 11% |
| 12  | 54% | 9%  |
| 16  | 53% | 7%  |
| 20  | 52% | 5%  |
| 24  | 52% | 4%  |
| 32  | 51% | 3%  |
| 64  | 50% | 1%  |
| 128 | 50% | 0%  |
-------------------
Run Code Online (Sandbox Code Playgroud)

结论:使用Raid 1+0。

  • 老实说,我认为你的桌子看起来很漂亮,图像会更糟。 (6认同)
  • 当我决定学习 Raids 时,我今天在工作中真的很无聊。我想出了这些计算并将所有内容放入一个word文档中。不幸的是,我没有发布图片的代表,所以我的表格和方程看起来有点难看。 (2认同)
  • 在 4 盘 RAID10 与 RAID01 阵列之间的比较中,您将 D1+D4 故障和 D2+D3 故障列为 RAID01 阵列完全丢失但 RAID10 阵列中的数据完好无损。这是不正确的。在任一 RAID 实施中,这两个故障对都不会丢失数据。在 4 磁盘阵列中,RAID10 和 RAID01 之间的容错能力相同。RAID10 只有在更大的阵列上才具有更好的容错能力。 (2认同)

Ear*_*rlz 3

这属于 ServerFault,但这里是与 Wikipedia 的差异的快速概述

\n\n

磁盘阵列10

\n\n

RAID 1+0(或10)是镜像数据集(RAID 1),然后进行条带化(RAID 0),因此得名“1+0”。RAID 1+0 阵列至少需要四个驱动器 \xe2\x80\x93,其中两个镜像驱动器用于保存一半的条带数据,另外两个镜像驱动器用于保存另一半数据。在 Linux 中,MD RAID 10 是一种非嵌套 RAID 类型,类似于 RAID 1,只需要至少两个驱动器,并且可以提供 RAID 0 级别的读取性能。

\n\n

磁盘阵列01

\n\n

RAID 0+1(或01)是一个条带数据集(RAID 0),然后进行镜像(RAID 1)。RAID 0+1 阵列至少需要四个驱动器:两个用于保存条带数据,另外两个用于镜像第一对。

\n