O RAID1 aumenta o desempenho com Linux mdadm?

O RAID1 aumenta o desempenho com Linux mdadm?

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 HDD de 2 TB e colocá-lo em RAID1 com 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 nenhum consenso.

Obrigado.

Editar:

Então já tenho três respostas diferentes: "um pouco mais rápido", "você não notará" e "diminuirá o desempenho, se alguma coisa". (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 é?

Editar 2:

Encontrei evidências crescentes de suporte ao aumento do desempenho de leitura do RAID1, 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 de qualquer dispositivo. O driver tenta distribuir solicitações de leitura entre todos os dispositivos para maximizar o desempenho.

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

Responder1

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

Para demonstrar isso, basta ler alguns dados com dd. Antes de realizar qualquer coisa, limpe o cache de leitura do disco com sync && echo 3 > /proc/sys/vm/drop_caches. Caso contrário, hdparmreivindicará 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 de dados levou 68,7 segundos no total, o que significamúltiplas leituras de disco se beneficiam muito do RAID1no Linux. skip=$COUNTparte é 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 ahttp://www.unicom.com/node/459está errado. O benchmark 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 pode ser usado para benchmarking de arrays RAID (consulte o leia-me).

Responder2

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

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

Responder3

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-ngajuda especialmente neste caso, pois pode mostrar o uso de leitura/gravação em membros separados do RAID mdadm. Basta pressionar 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 para tver o máximo de leituras/gravações de cada disco. Você verá o seguinte:

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

Responder4

SIMe NÃO ao mesmo tempo. Por padrão, o parâmetro "leitura antecipada" do RAID 1 é muito baixo para notar o benefício em uma única transferência de arquivo, no entanto, tudo que você precisa fazer é ajustá-lo.

Para verificar seu valor digite:

# blockdev --getra /dev/md0
256

Agora você pode definir a leitura antecipada (em setores de 512 bytes) por dispositivo RAID. A sintaxe é:

## Set read-ahead to 32 MiB ##
# blockdev --setra 65536 /dev/md0

Na maioria dos casos, apenas definir este parâmetro duplicará a velocidade de leitura de um único arquivo (assumindo que ambas as unidades sejam iguais).

Nota: Isto é aplicável a todas as configurações de raid.

informação relacionada