Quantas matrizes podem ser criadas com o mdadm?

2

Para fins de experiência, preciso do maior número possível de discos em um único sistema. Como tenho apenas seis discos sobressalentes, decidi particioná-los em 128 partições GPT e criar um array RAID0 de um dispositivo usando cada partição.

O problema é que o mdadm criou apenas 512 arrays /dev/md[0-511] e não consigo criar matrizes adicionais.

Após uma tentativa de criar 513th array, recebo um erro:

% mdadm -C /dev/md512 -l raid0 -n 1 /dev/sdd128 --force

mdadm: unexpected failure opening /dev/md512

É uma limitação projetada? Existe alguma maneira de contornar isso?

    
por sotona 16.09.2018 / 18:14

2 respostas

2

Você atingiu o limite máximo de /dev/md* arrays em um único sistema Linux.

Isso está relacionado ao tradicional dispositivo principal e & números menores. Originalmente, o driver MD RAID recebeu o maior número de dispositivo de bloco 9 (definido em /usr/include/linux/raid/md_u.h como MD_MAJOR), e isso permitiu um conjunto de 256 números de dispositivos menores e, portanto, 256 dispositivos de matriz RAID exclusivos. (A lista canônica para alocação de número de dispositivo está incluída na documentação que acompanha o pacote de origem do kernel .)

Isso acabou sendo insuficiente, e um mecanismo foi desenvolvido para usar um número principal adicional (conhecido no código do kernel como mdp_major ) se mais de 256 matrizes RAID forem necessárias. Você pode encontrar o código para lidar com isso no arquivo de origem do kernel .../drivers/md/md.c . O número de dispositivo principal mdp_major extra é alocado dinamicamente a partir do intervalo de números de dispositivos principais dinâmicos (234..254, iniciar a partir do topo e alocar para baixo).

Para usar mais de 512 matrizes RAID MD em um único host, esse mecanismo precisa ser reescrito para usar mais de um número principal dinâmico, se necessário.

    
por 16.09.2018 / 21:11
0

Existe uma solução bastante suja (funciona com os kernels mais recentes de 3.10.0-862.11.6 branch)

# echo md512 > /sys/module/md_mod/paramaters/new_array
# mdadm -C /dev/md512 -l raid0 -n 1 /dev/sdd128 --force
    
por 17.09.2018 / 13:45