是否可以创建具有近端和远端布局选项的 mdadm RAID10?

是否可以创建具有近端和远端布局选项的 mdadm RAID10?

如何创建具有近端和远端布局选项的 mdadm RAID10?

维基百科表明这是可行的。

“近”和“远”选项可以一起使用......

mdadm 的手册页没有提及它。

我只能找到这个帖子有人的 mdadm --detail 显示了使用近端和远端布局选项的 RAID10。和另一个帖子有人问是否应该说“near=2,far=1”。不幸的是,两者都没有显示它们的数组是如何创建的。

我在创建数组时尝试使用语法。但每次都会出现这个错误:

mdadm: layout for raid10 must be 'nNN', 'oNN', or 'fNN' where NN is a number, not n2f2(or whatever syntax I tried)

我可以使用近或远创建数组,没有任何问题。

sudo mdadm --verbose --create /dev/md127 --level=10 --layout="What should go here to create an array using near=2 & far=2 layouts?" --chunks=512 --raid-devices=5 /dev/sd[b-f]1

我缺少什么?维基百科已经过时了吗?这不再可能了吗?

Linux Mint 17.3 肉桂 64 位; 5x 3.0TB Seagate NAS HDD(仅用于 RAID); 8GB 内存。

答案1

从mdadm-3.4源代码来看,它不接受任何其他输入。至于near=2,far=1输出,这是默认值,没有任何更改,但=1不再打印值,因为这本质上意味着“没有额外的副本”(计数从 1 开始)。如果两者都near相等far1则打印NO REDUNDANCY。然而,您实际上也无法创建这样的对象,内核会直接拒绝它并显示错误消息。

我设法做到这一点的唯一方法是hexedit直接获取元数据。这是带有副本的 4x 128MiB 循环设备的 RAID-10 near=2, far=2

# mdadm --detail /dev/md42
/dev/md42:
        Version : 1.2
  Creation Time : Sun May  1 01:47:59 2016
     Raid Level : raid10
     Array Size : 129024 (126.00 MiB 132.12 MB)
  Used Dev Size : 129024 (126.00 MiB 132.12 MB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Sun May  1 01:48:00 2016
          State : clean 
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : near=2, far=2
     Chunk Size : 512K

           Name : EIS:42  (local to host EIS)
           UUID : 7fa3ba1e:dd0f2db9:aaf3977f:0e6dc2cb
         Events : 17

    Number   Major   Minor   RaidDevice State
       0       7        0        0      active sync   /dev/loop0
       1       7        1        1      active sync   /dev/loop1
       2       7        2        2      active sync   /dev/loop2
       3       7        3        3      active sync   /dev/loop3

它实际上似乎也有效。 (警告,破坏性测试方法)

# yes > /dev/md42
# echo Hello World. > /dev/md42
# grep 'Hello World' -a -b --only-matching /dev/loop[0-3]
/dev/loop0:1048576:Hello World
/dev/loop1:1048576:Hello World
/dev/loop2:67108864:Hello World
/dev/loop3:67108864:Hello World

我将此字符串写入 RAID 的开头,在两个设备上,它位于 1MiB 位置(恰好是元数据偏移),这应该是近副本,另一个位于 64MiB 位置(一半磁盘容量),我猜是远程副本...

即便如此,我也不建议编辑任何 RAID 元数据。如果你这样做,没有其他人在测试它......或者也许我们都缺少一些明显的东西,谁知道呢。

更换此类 RAID 中的磁盘似乎可行。然而,增长却并非如此。

# mdadm --grow /dev/md42 --raid-devices=8 --add /dev/loop[4567]
mdadm: Cannot reshape RAID10 in far-mode

我认为缺点太多了。坚持使用标准 RAID 布局,除非您有充分的理由不这样做。

相关内容