É possível criar um mdadm RAID10 com as opções de layout near e far?

2

Como você cria um mdadm RAID10 com opções de layout tanto próximas quanto distantes?

O wiki indica que é factível.

The "near" and "far" options can be used together...

As páginas man do mdadm não mencionam isso.

Eu só consigo encontrar esta postagem em que o mdadm --detail de alguém está mostrando um RAID10 usando as opções de layout near e far. E outro post com alguém perguntando se deveria dizer "near = 2, far = 1". Infelizmente, nem mostram como suas matrizes foram criadas.

Eu tentei brincar com a sintaxe ao criar minha matriz. Mas dá esse erro toda vez:

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

Eu posso criar o array usando próximo ou distante sem qualquer problema.

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

O que estou perdendo? O wiki está desatualizado e isso não é mais possível?

Linux Mint 17,3 Canela 64 bits; 5x HDDs Seagate NAS de 3,0TB (utilizados apenas para RAID); 8 GB de RAM.

    
por terrelsa13 01.05.2016 / 00:37

1 resposta

2

A julgar pelo código fonte do mdadm-3.4, ele não aceita outras entradas. Quanto à saída near=2,far=1 , esse é o padrão e nada é alterado, mas os valores =1 simplesmente não são mais impressos porque isso significa essencialmente "nenhuma cópia adicional" (a contagem começa em 1). No caso de ambos near e far igual 1 , imprime NO REDUNDANCY . No entanto, você não é capaz de criar tal coisa, o kernel a rejeita diretamente com uma mensagem de erro.

A única maneira que consegui fazer isso é hexedit ing os metadados diretamente. Este é um RAID-10 de dispositivos de loop 4x 128MiB com near=2, far=2 de cópias.

# 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

Na verdade, parece funcionar também. (Aviso, método de teste destrutivo)

# 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

Eu escrevi essa string para o início do RAID e em dois dispositivos está na posição 1MiB (que é o offset de metadados) que deve ser a cópia próxima e a outra na posição 64MiB (metade da capacidade do disco) que eu acho que é a cópia distante ...

Mesmo assim, eu não recomendaria a edição de metadados RAID para nada. Se você fizer isso, ninguém mais está testando ... ou talvez haja algo óbvio que todos nós estamos perdendo, quem sabe.

A substituição de discos em um RAID parece funcionar. Crescer, no entanto, não.

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

Eu acho que há muitas desvantagens. Atenha-se aos layouts RAID padrão, a menos que você tenha uma boa razão para não fazê-lo.

    
por 01.05.2016 / 02:01