O RAID1 aumenta o desempenho com o mdadm do Linux?

20

Eu tenho um NAS barato de 2 compartimentos com um HDD de 2 TB. Para ser robusto contra falhas de disco, estou pensando em comprar um segundo disco rígido de 2 TB e colocá-lo em 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 on-line, mas não há consenso.

Obrigado.

Editar:

Então eu já tenho três respostas diferentes: "um pouco mais rápido", "você não vai notar" e "irá diminuir o desempenho se alguma coisa". (Eu estou interessado principalmente no desempenho de leitura.) Wikipedia diz "o desempenho de leitura pode subir aproximadamente como um múltiplo linear do número de cópias". Qual deles é?

Editar 2:

Encontrei evidências crescentes em apoio ao aumento do desempenho de leitura do RAID1, incluindo a página de manual do MD:

Changes are written to all devices in parallel. Data is read from any one device. The driver attempts to distribute read requests across all devices to maximise performance.

Também descobri o RAID10 do MD com --layout=f2 , que fornece redundância do RAID1 com o desempenho de leitura do RAID0 e pode ser usado com apenas dois drives. O desempenho de gravação é reduzido, no entanto, como uma gravação seqüencial envolve ambas as unidades que buscam para frente e para trás entre partes distantes da unidade. man md para detalhes.

    
por Jesse 03.02.2012 / 10:10

4 respostas

32

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

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

Arquivo único:

# 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=$COUNT part é muito importante. O segundo processo lê 10 GB de dados do deslocamento de 10 GB.

A resposta de Jared e os comentários de ssh referentes ao link estão errados. O benchmark 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 declara explicitamente que o bonnie ++ não é utilizável para a comparação de matrizes RAID ( consulte o readme ).

    
por 22.05.2014 / 01:40
4

Sim, você obterá um aumento na performance de leitura + a redundância. Você pode facilmente imaginar isso, já que você pode ler as partes dos arquivos ao mesmo tempo de dois HDDs diferentes, como os arquivos estão em ambos os HDDs.

Então, teoricamente, se o controlador RAID faz seu trabalho direito, você pode ganhar um aumento de velocidade de O (n).

    
por 05.02.2012 / 09:55
3

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

dstat mostra o uso de discos, também bwm-ng realmente ajuda especialmente nesse caso, pois pode mostrar o uso de leitura / gravação em membros RAID mdadm separados. Apenas pressione n (próximo) algumas vezes, ele mudará das estatísticas da interface para as estatísticas do disco. Em seguida, mude para valores máximos com t para ver o valor máximo de leitura / gravação de cada disco. Você verá o seguinte:

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

    
por 15.08.2012 / 00:49
3
  • man 4 md states: "... Observe que o balanceamento de leitura feito pelo driver não torna o perfil de desempenho do RAID1 o mesmo que o do RAID0 ; um único fluxo de entrada não será acelerado (por exemplo, um único dd), mas vários fluxos sequenciais ou uma carga de trabalho aleatória usará mais de um eixo. Em teoria , ter um N-disk RAID1 permitirá que N threads seqüenciais sejam lidos de todos os discos. … "

  • Ainda por cima - na prática , com base na saída iostat sendo observada em uma configuração RAID de software típica de 2 HDDs, não há nenhum de equilíbrio . Na verdade, parece que a opção mdadm --write-mostly está sempre ativada.

por 28.10.2015 / 00:31