解释md的raid10,f2

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

    实际上我觉得维基百科解释得比实际的文档好。 这里是文章的文字。

    他可以使用Linux内核软件RAID驱动程序(称为md,用于“多个设备”)来构build经典的RAID 1 + 0arrays,而且(从版本2.6.9开始)作为单一级别[4] 5]。 标准的“近”布局,其中每个块在k-路条纹arrays中重复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 .. .. .. .. .. .. .. .. .. 

    4驱动器的例子与标准的RAID-1 + 0arrays相同,而3驱动器的例子是RAID-1E的软件实现。 2驱动器的例子是相当于RAID 1.驱动器还支持“远”布局,其中所有的驱动器分为f个部分。 所有块在每个部分重复,但由一个设备抵消。 例如,2驱动器和3驱动器arrays上的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 .. .. .. .. .. 

    这是针对镜像arrays的条带化性能而devise的; 顺序读取可以是条带化的,就像在RAID-0中一样,随机读取有些更快(由于使用磁盘的更快的外部扇区和更小的平均寻道时间,可能有10-20%),顺序和随机写入大致相同到其他镜像袭击。 对于读取更频繁的系统来说,这种布局性能很好,这在很多系统上是非常普遍的情况。 每个驱动器的第一个1 / f是一个标准的RAID-0arrays。 因此,您可以在仅有2个驱动器的镜像集上获得条带化性能。 近和远的选项都可以同时使用。 每个部分的块被n个设备所偏移。 例如n2 f2布局存储2×2 =每扇区4份,所以至less需要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 .. .. .. .. .. .. .. .. .. 

    从Linux 2.6.18开始,驱动程序还支持每个条带重复o次的偏移布局。 例如,2驱动器arrays和3驱动器arrays上的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 .. .. .. .. .. 

    注:k是驱动器的数量,n#,f#和o#是mdadm –layout选项中的参数。 Linux也可以使用md驱动程序(0,1,4,5,6)创build其他标准RAIDconfiguration。

    从我读到的一个f2 RAID10arrays保留至less2个副本的每个块,他们存储彼此远离。

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

    mdadm的(8)

    -p,–layout =这个选项为raid5和raid10数组configuration数据布局的细节

    最后,RAID10的布局选项是“n”,“o”或“p”之后的一个小数字。 默认值是'n2'。

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

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

    f信号“ ”拷贝(多个拷贝具有非常不同的偏移量)。 有关'near'和'far'的更多细节,请参阅md(4)。

    MD(4)

    RAID10提供了RAID1和RAID0的组合,有时也称为RAID1 + 0。 每个数据块被复制一定次数,并且产生的数据块集合分布在多个驱动器上。 configurationRAID10arrays时,需要指定每个数据块所需的副本数(通常为2),以及复制副本是“接近”,“偏移”还是“远”。 (请注意,“偏移”布局只能从2.6.18开始)。

    当select“ 接近 ”副本时,给定块的多个副本被连续地布置在数组的条带上,因此数据块的两个副本可能在两个相邻设备上处于相同的偏移。

    当select“ ”副本时,给定块的多个副本被布置得彼此相距很远。 所有数据块的第一个副本将以RAID0方式分布在所有驱动器的早期部分,然后所有块的下一个副本将在所有驱动器的后面部分分条,确保任何给定块的所有副本都是在不同的驱动器。

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

    当select“偏移”副本时,给定块的多个副本被布置在连续的驱动器上并且以连续的偏移量布置。 有效地,每个条纹都被复制,副本被一个设备所偏移。 如果使用适当大的块大小,这应该给“远”类似的读取特性,但是没有尽可能多地寻找写入。

    应该注意的是,RAID10arrays中的设备数量不一定是每个数据块的副本数量的倍数,那些设备的数量必须至less与副本一样多。

    例如,如果使用5个设备和2个副本创buildarrays,则相当于2.5个设备的空间将可用,每个块将存储在两个不同的设备上。

    这很有趣,很好的解释。 然而,普通的RAID1还具有至less在Linux软件RAID上的特性,能够以非常好的性能并行支持多个读卡器:

    数据是从任何一个设备读取的。 驱动程序尝试在所有设备上分发读取请求以最大限度地提高性能
    从理论上讲,使用N磁盘RAID1将允许N个顺序线程从所有磁盘读取。 (男人4人,RAID1部分)

    看起来,RAID10在其近似布局中更适合这种行为(加速不像RAID0那样是单线程I / O,而是multithreadingI / O)。 4个磁盘的n2f2与4个磁盘的RAID1类似。

    具有4个磁盘的n2布局将同时执行这两个操作:单个线程的读取性能提高一倍,两个线程的读取性能提高四倍(如果Linux md RAID10调度程序已经实现,一个线程应该读取一对,另一个线程另一对)。

    一切都取决于你的需要! 我还没有做基准。