O RAID1 aumenta o desempenho com o Linux mdadm?

26

Eu tenho um NAS barato de 2 baias com um HD de 2 TB. Para ser robusto contra falhas de disco, estou pensando em comprar um segundo HD de 2 TB e colocá-lo no RAID1 com o Linux mdadm. O sistema de arquivos é ext4.

Isso aumentará ou diminuirá o desempenho do NAS? Que tal apenas ler ou escrever desempenho?

Parece haver muitas opiniões sobre isso online, mas não há consenso.

Obrigado.

Editar:

Então, eu já tenho três respostas diferentes: "um pouco mais rápido", "você não notará" e "diminuirá o desempenho, se for o caso". (Estou interessado principalmente no desempenho de leitura.) A Wikipedia diz que "o desempenho de leitura pode aumentar aproximadamente como um múltiplo linear do número de cópias". Qual é esse?

Edição 2:

Encontrei evidências crescentes no suporte ao RAID1, aumentando o desempenho de leitura, incluindo a página de manual do MD:

As alterações são gravadas em todos os dispositivos em paralelo. Os dados são lidos em qualquer dispositivo. O driver tenta distribuir solicitações de leitura em todos os dispositivos para maximizar o desempenho.

Também descobri o RAID10 do MD --layout=f2, que fornece redundância de RAID1 com o desempenho de leitura de RAID0 e pode ser usado com apenas duas unidades. No entanto, o desempenho de gravação é reduzido, pois uma gravação seqüencial envolve as duas unidades que procuram entre as partes distantes da unidade. man mdpara detalhes.

Jesse
fonte
2
escreve; um pouco mais devagar. lê; um pouco mais rápido. Pelo que entendi, a diferença de gravação é quase zero e a leitura é bastante perceptível.
Sirex
Exatamente o que a sirex diz .. você não notará a diferença de desempenho a olho nu. Não espere dobrar ou mesmo metade.
Piotr Kula
1
Sinto falta de uma parte: quão rápido é o acesso ao NAS. Se um disco já preencher a conexão de rede, mais velocidade interna não ajudará muito.
Hennes

Respostas:

39

Sim, a implementação do RAID1 no Linux acelera as operações de leitura de disco duas vezes, desde que duas operações de leitura de disco separadas sejam executadas por vez . Isso significa que a leitura de um arquivo de 10 GB não será mais rápida no RAID1 do que no disco único, mas a leitura de dois arquivos distintos de 10 GB * será mais rápida.

Para demonstrá-lo, basta ler alguns dados com dd. Antes de executar qualquer coisa, limpe o cache de leitura do disco com sync && echo 3 > /proc/sys/vm/drop_caches. Caso contrário hdparm, reivindicará leituras super rápidas.

Único arquivo:

# COUNT=1000; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT &
(...)
10485760000 bytes (10 GB) copied, 65,9659 s, 159 MB/s

Dois arquivos:

# COUNT=1000; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT &; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT skip=$COUNT &
(...)
10485760000 bytes (10 GB) copied, 64,9794 s, 161 MB/s
10485760000 bytes (10 GB) copied, 68,6484 s, 153 MB/s

A leitura de 10 GB de dados levou 65 segundos, enquanto a leitura de 10 GB + 10 GB = 20 GB levou 68,7 segundos no total, o que significa que várias leituras de disco se beneficiam muito do RAID1 no Linux. skip=$COUNTparte é muito importante. O segundo processo lê 10 GB de dados do deslocamento de 10 GB.

Resposta de Jared e comentários do ssh referentes a http://www.unicom.com/node/459 estão errados. A referência de lá prova que as leituras de disco não se beneficiam do RAID1. No entanto, o teste foi realizado com a ferramenta de benchmarking bonnie ++, que não realiza duas leituras separadas ao mesmo tempo. O autor afirma explicitamente que o bonnie ++ não é utilizável para benchmarking de matrizes RAID ( consulte o leia-me ).

Nowaker
fonte
5

Sim, você obterá um aumento no desempenho de leitura + a redundância. Você pode facilmente imaginar isso, pois pode ler as partes dos arquivos ao mesmo em dois HDs diferentes, pois os arquivos estão nos dois HDDs.

Portanto, teoricamente, se o controlador RAID fizer seu trabalho corretamente, você poderá obter uma aceleração de O (n).

inf
fonte
5
O mdadm é um RAID de software, portanto, na verdade, não existe um "controlador RAID", mas fornecerá um bom impulso de leitura ao realizar leituras múltiplas em paralelo, não tanto neste caso, como suponho que uma caixa NAS raramente seja acessada de forma simultânea. Veja aqui para mais detalhes: freebsdwiki.net/index.php/…
Shadok
1
Na prática, o desempenho diminui para a leitura do ataque ao MD do Linux Software. Consulte unicom.com/node/459 (nesse teste, a velocidade de leitura diminuiu de 77 MB / s para 74 MB / s).
Ssh
2
@ssh unicom.com/node/459 está totalmente errado. O bonnie ++ não é utilizável para testar espelhos RAID, que são explicitamente declarados no leia-me. Veja minha resposta para mais detalhes. superuser.com/a/757264/68978
Nowaker
4
  • man 4 mdafirma: "… Observe que o balanceamento de leitura feito pelo driver não faz com que o perfil de desempenho RAID1 seja o mesmo do RAID0 ; um único fluxo de entrada não será acelerado (por exemplo, um único dd), mas vários fluxos sequenciais ou aleatórios a carga de trabalho usará mais de um eixo-árvore. Em teoria , ter um RAID1 de disco N permitirá que N threads sequenciais leiam todos os discos. … "

  • Para completar, na prática , com base na iostatsaída observada em uma configuração típica de RAID de software com 2 HDs, não há equilíbrio . De fato, parece que mdadma opção --write-mostlyestá sempre ativa.

poige
fonte
3

Não, você não receberá nenhum benefício ao ler o mdadm RAID1. Eu estava me perguntando sobre isso há algum tempo.

dstatmostra o uso de discos, também bwm-ngrealmente ajuda especialmente nesse caso, pois pode mostrar o uso de leitura / gravação em membros RAID mdadm separados. Apenas empurren (a seguir) algumas vezes, ele mudará das estatísticas da interface para as estatísticas do disco. Em seguida, mude para max values ​​com tpara ver o máximo de leitura / gravação de cada disco. Você verá o seguinte:

A gravação no volume RAID1 bwm-ng mostra 2 x gravações, gravando em 2 discos ao mesmo tempo. A leitura do volume RAID1 bwm-ng mostra a leitura da unidade única (membro da matriz).

TooMeeK
fonte