解释md的raid10,f2

xen*_*ide 15 linux raid mdadm software-raid

我知道大多数不同的 RAID 是如何工作的。但是我 在研究linux软件raid时偶然发现了推荐的raid10,f2模式。我真的不明白它是如何在 2 或 3 个磁盘上工作的。有人可以向我解释一下吗?或者给我指出一篇解释它的非常好的文章?

xen*_*ide 19

实际上,我认为维基百科比实际文档更好地解释了它。这是文章中的文字。

Linux 内核软件 RAID 驱动程序(称为 md,表示“多设备”)可用于构建经典的 RAID 1+0 阵列,但也可(自 2.6.9 版起)作为具有一些有趣扩展的单层[4][4] 5]。标准的“近”布局,其中每个块在 k 路条带阵列中重复 n 次,等效于标准的 RAID-10 排列,但它不需要 n 除 k。例如,2、3 和 4 个驱动器上的 n2 布局如下所示:

2 drives         3 drives            4 drives
--------         ----------        --------------
A1  A1           A1  A1  A2        A1  A1  A2  A2
A2  A2           A2  A3  A3        A3  A3  A4  A4
A3  A3           A4  A4  A5        A5  A5  A6  A6
A4  A4           A5  A6  A6        A7  A7  A8  A8
..  ..           ..  ..  ..        ..  ..  ..  ..
Run Code Online (Sandbox Code Playgroud)

4 驱动器示例与标准 RAID-1+0 阵列相同,而 3 驱动器示例是 RAID-1E 的软件实现。2 驱动器示例等效于 RAID 1。驱动程序还支持“远”布局,其中所有驱动器分为 f 部分。所有块在每个部分都重复,但由一个设备偏移。例如,2 驱动器和 3 驱动器阵列上的 f2 布局如下所示:

2 drives             3 drives
--------             --------------
A1  A2               A1   A2   A3
A3  A4               A4   A5   A6
A5  A6               A7   A8   A9
..  ..               ..   ..   ..
A2  A1               A3   A1   A2
A4  A3               A6   A4   A5
A6  A5               A9   A7   A8
..  ..               ..   ..   ..
Run Code Online (Sandbox Code Playgroud)

这是为镜像阵列的条带化性能而设计的;顺序读取可以条带化,就像在 RAID-0 中一样,随机读取稍微快一些(可能是 10-20%,因为使用更快的磁盘外部扇区,以及更短的平均寻道时间),并且顺序和随机写入的性能大致相同到其他镜像突袭。该布局对于读取比写入更频繁的系统表现良好,这是许多系统上非常常见的情况。每个驱动器的第一个 1/f 是标准 RAID-0 阵列。因此,您可以在只有 2 个驱动器的镜像集上获得条带化性能。Near 和 far 选项可以同时使用。每个部分中的块由 n 个设备偏移。例如 n2 f2 布局存储每个扇区的 2×2 = 4 个副本,因此至少需要 4 个驱动器:

A1  A1  A2  A2        A1  A1  A2  A2  A3
A3  A3  A4  A4        A3  A4  A4  A5  A5
A5  A5  A6  A6        A6  A6  A7  A7  A8
A7  A7  A8  A8        A8  A9  A9  A10 A10
..  ..  ..  ..        ..  ..  ..  ..  ..
A2  A2  A1  A1        A2  A3  A1  A1  A2
A4  A4  A3  A3        A5  A5  A3  A4  A4
A6  A6  A5  A5        A7  A8  A6  A6  A7
A8  A8  A7  A7        A10 A10 A8  A9  A9
..  ..  ..  ..        ..  ..  ..  ..  ..
Run Code Online (Sandbox Code Playgroud)

从 Linux 2.6.18 开始,驱动程序还支持偏移布局,其中每个条带重复 o 次。例如,2 驱动器和 3 驱动器阵列上的 o2 布局布局如下:

2 drives       3 drives
--------       --------
A1  A2         A1  A2  A3
A2  A1         A3  A1  A2
A3  A4         A4  A5  A6
A4  A3         A6  A4  A5
A5  A6         A7  A8  A9
A6  A5         A9  A7  A8
..  ..         ..  ..  ..
Run Code Online (Sandbox Code Playgroud)

注意:k 是驱动器的数量,n#、f# 和 o# 是 mdadm --layout 选项中的参数。Linux 还可以使用 md 驱动程序(0、1、4、5、6)创建其他标准 RAID 配置。


Zor*_*che 6

从我读到的f2 RAID10 阵列中,每个块至少保留 2 个副本,并且它们彼此相距很远。

以下是手册页中的相关部分。

妈妈(8)

-p, --layout= 这个选项配置了raid5 和raid10 阵列的数据布局的细节
......
最后,RAID10 的布局选项是'n'、'o' 或'p' 之一,后跟一个小的数字。默认值为“n2”。

n 表示“接近”副本。一个数据块的多个副本在不同设备中的偏移量相似。

o 表示“偏移”副本。不是在条带内复制块,而是复制整个条带但由一个设备旋转,因此重复的块位于不同的设备上。因此,块的后续副本位于下一个驱动器中,并且位于更远的一个块中。

f 表示“”副本(多个副本具有非常不同的偏移量)。有关“近”和“远”的更多详细信息,请参见 md(4)。

医学博士(4)

RAID10 提供了 RAID1 和 RAID0 的组合,有时也称为 RAID1+0。每个数据块都被复制多次,并且由此产生的数据块集合分布在多个驱动器上。在配置 RAID10 阵列时,需要指定每个数据块所需的副本数量(通常为 2)以及副本应该是“near”、“offset”还是“far”。(请注意,'offset' 布局仅从 2.6.18 开始可用)。

选择“”副本时,给定块的多个副本在阵列的条带上连续布置,因此数据码的两个副本可能在两个相邻设备上处于相同的偏移量。

选择“遥远”副本时,给定块的多个副本彼此相当遥远。所有数据块的第一个副本将以 RAID0 方式跨所有驱动器的早期部分进行条带化,然后所有块的下一个副本将跨所有驱动器的后面部分进行条带化,始终确保任何给定块的所有副本都是在不同的驱动器上。

”排列可以提供与 RAID0 阵列相同的顺序读取性能,但代价是写入性能下降。

选择“偏移”副本时,给定块的多个副本在连续驱动器和连续偏移时布置出来。实际上,每个条带都被复制,副本由一个设备偏移。如果使用适当大的块大小,这应该给 'far' 类似的读取特性,但没有那么多的写入搜索。

需要注意的是,一个RAID10阵列中的设备数量不必是每个数据块的副本数量的倍数,那些设备的数量必须至少与副本数量一样多。

例如,如果创建了一个具有 5 个设备和 2 个副本的阵列,则相当于 2.5 个设备的空间将可用,并且每个块将存储在两个不同的设备上。