RAID1 - mdadm mirror - não executa leituras paralelas conforme esperado?

3

Temos um espelho RAID 1 de três vias que é alimentado pelo mdadm. Acho que li que o mdadm deve receber várias solicitações simultâneas de leitura e distribuí-las em diferentes unidades no espelho (paralelizar as leituras) para melhorar o desempenho de leitura, mas em nossos testes e assistindo a saída de iostat -xm 1 , aparece somente / O dev / sda está sendo usado mesmo que a E / S desse dispositivo esteja sendo saturada de 5 dispositivos diferentes.

Estou entendendo mal alguma coisa? O mdadm precisa ser configurado de forma diferente? A nossa versão (CentOS 6.7) não suporta isso? Não sei por que está se comportando dessa maneira.

Configuração de referência - execute os seguintes comandos simultaneamente:

dd if=/dev/md2 bs=1048576 of=/dev/null count=25000
dd if=/dev/md3 bs=1048576 of=/dev/null count=25000
dd if=/dev/md4 bs=1048576 of=/dev/null count=25000
dd if=/dev/md5 bs=1048576 of=/dev/null count=25000
dd if=/dev/md6 bs=1048576 of=/dev/null count=25000

Enquanto isso, veja a saída de iostat -xm 1 (saída de exemplo incluída abaixo - o espelho é composto de sda, sdb e sdc).

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
sda           100669.00     0.00 10710.00    0.00   435.01     0.00    83.18    33.28    3.11   0.09 100.00
sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdc               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdd               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
md1               0.00     0.00 19872.00    0.00    77.62     0.00     8.00     0.00    0.00   0.00   0.00
md2               0.00     0.00 18272.00    0.00    71.38     0.00     8.00     0.00    0.00   0.00   0.00
md5               0.00     0.00 18272.00    0.00    71.38     0.00     8.00     0.00    0.00   0.00   0.00
md7               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
md6               0.00     0.00 18240.00    0.00    71.25     0.00     8.00     0.00    0.00   0.00   0.00
md4               0.00     0.00 18208.00    0.00    71.12     0.00     8.00     0.00    0.00   0.00   0.00
md3               0.00     0.00 18528.00    0.00    72.38     0.00     8.00     0.00    0.00   0.00   0.00
md0               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    
por sa289 12.08.2015 / 07:41

1 resposta

4

Realize o teste novamente, mas altere-o para que todas as cinco leituras sejam executadas no mesmo dispositivo MD (por exemplo, / dev / md2) e você deverá vê-las sendo distribuídas.

Uma única operação de leitura só lerá de uma unidade em um espelho. Ele começará com o primeiro disco atribuído ao espelho, que neste caso parece ser / dev / sda. Como você tem 5 ou mais dispositivos MD configurados e estão realizando uma única operação de leitura de cada dispositivo, todos eles estão usando o / dev / sda.

Eu recomendaria acabar com vários dispositivos MD configurados e usar apenas um único dispositivo abrangendo todo o SSD.

Como alternativa, altere seu método de teste para forçá-lo a executar várias tarefas diferentes. Dê uma olhada em bonnie ++ , é bem bacana.

    
por 12.08.2015 / 08:06