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 md
para detalhes.
Respostas:
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 comsync && echo 3 > /proc/sys/vm/drop_caches
. Caso contráriohdparm
, reivindicará leituras super rápidas.Único arquivo:
Dois arquivos:
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
parte é 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 ).
fonte
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).
fonte
man 4 md
afirma: "… 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
iostat
saída observada em uma configuração típica de RAID de software com 2 HDs, não há equilíbrio . De fato, parece quemdadm
a opção--write-mostly
está sempre ativa.fonte
Não, você não receberá nenhum benefício ao ler o mdadm RAID1. Eu estava me perguntando sobre isso há algum tempo.
dstat
mostra o uso de discos, tambémbwm-ng
realmente 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).
fonte