为“远”布局中的 Linux mdadm RAID10 阵列计算正确的条带大小

hai*_*img 6 raid mdadm raid10

我正在从 6 个驱动器创建 RAID10 阵列。在近布局中创建时,例如

mdadm --create /dev/md2 --chunk=64 --level=10 --raid-devices=6 --layout=n2 /dev/sda1 ...

检查系统报告的条带大小:

cat /sys/devices/virtual/block/md2/queue/optimal_io_size

结果是 196608,正如预期的那样,例如 3 个数据驱动器(RAID10 中总共 6 个的 50%)x 64K 块 = 192K 条带。

现在,当使用--layout=f2选项创建相同的数组时,optimal_io_size报告393216,例如两倍大。

现在,根据 Nail Brown(mdadm raid10 作者)的说法

“远”布局将所有数据以类似 raid0 的方式排列在所有驱动器的前半部分,然后在所有驱动器的后半部分以类似的布局布置第二个副本 - 确保块的所有副本都打开不同的驱动器。

预计这会在整个驱动器数量上产生类似于 raid0 的读取性能,但写入性能要差得多,因为将有更多的驱动器磁头搜索。

因此,操作系统似乎建议我最好使用类似 RAID0 的条带大小(跨阵列中的所有磁盘),而不是“传统的”RAID10 条带大小(跨阵列中的半个磁盘)。这对 LVM 和文件系统对齐、条带/步幅调整等具有潜在的严重影响。但是,我从未见过任何将远模式下的 MDADM RAID10 视为 RAID0 的建议。

问题:我在这里遗漏了什么,或者在对齐/调整该 RAID 之上的任何内容时将 RAID10,f2 视为 RAID0 是否正确?