O RAID5 é mais robusto que o RAID1?

12

Estou prestes a substituir uma matriz RAID5 de hardware antiga por uma matriz RAID1 de software Linux. Eu estava conversando com um amigo e ele alegou que o RAID5 era mais robusto que o RAID1.

Sua alegação era de que, com o RAID5, na leitura, os dados de paridade eram lidos para garantir que todas as unidades estivessem retornando os dados corretos. Ele alegou ainda que, no RAID1, os erros que ocorrem em uma unidade passarão despercebidos, porque essa verificação não é feita com o RAID1.

Eu posso ver como isso poderia ser verdade, mas também pode ver que tudo depende de como os sistemas RAID em questão são implementados. Certamente um sistema RAID5 não tem para ler e verificar os dados de paridade em uma leitura e um sistema RAID1 poderia tão facilmente ler de todas as unidades em leitura para verificar se eles estavam todos mantendo os mesmos dados e, portanto, atingem o mesmo nível de robustez (com uma perda correspondente de desempenho).

Então a questão é: o que os sistemas RAID5 / RAID1 no mundo real realmente fazem? Os sistemas RAID5 verificam os dados de paridade nas leituras? Existem sistemas RAID1 que lêem todas as unidades e comparam os dados em leitura?

    
por andynormancx 29.07.2009 / 11:37

11 respostas

22
O RAID-5 é uma solução de tolerância a falhas, não uma solução de integridade de dados.

Lembre-se de que o RAID significa Redundant Array of Cheap Disks . Discos são a unidade atômica de redundância - o RAID realmente não se importa com dados. Você compra soluções que empregam sistemas de arquivos como o WAFL ou o ZFS para abordar a redundância e a integridade dos dados.

O controlador RAID (hardware ou software) não verifica a paridade de blocos no tempo de leitura. Este é um grande risco de executar o RAID-5 - se você encontrar uma falha parcial na mídia em uma unidade (uma situação em que um bloco defeituoso não está marcado como "ruim"), você está agora em uma situação em que seus dados foram silenciosamente corrompido.

O RAID-Z / ZFS da Sun fornece integridade de dados de ponta a ponta , e eu suspeito que outros sistemas de arquivos e os sistemas RAID fornecerão esse recurso no futuro, à medida que o número de núcleos disponíveis em CPUs continuar a aumentar.

Se você está usando o RAID-5, você está sendo barato, na minha opinião. O RAID 1 tem melhor desempenho, oferece maior proteção e não afeta a produção quando uma unidade falha - por uma diferença de custo marginal.

    
por 29.07.2009 / 17:44
6

Acredito que a resposta depende do controlador / software, por exemplo, é bastante comum os sistemas de espelhamento lerem apenas um disco de um par e, portanto, serem capazes de fornecer os dados errados. Observo que, se os resultados dependerem desses dados, quando os dados forem gravados em ambos os discos, eles serão corrompidos em ambos os discos .....

A partir do pdf em SATAssure (tm) Plus:

"A revolucionária tecnologia SATAssure oferece proteção e confiabilidade de dados de classe empresarial usando grande capacidade, unidades de disco SATA baratas. O SATAssure opera em todas as operações de leitura, garantindo integridade de dados e corrige automaticamente problemas em tempo real - tudo sem o desempenho ou penalidade de capacidade encontrada em sistemas de armazenamento tradicionais. Reduza os RMAs da unidade com uma nova capacidade de inversores individuais de ciclo de energia. "

É interessante que alguns fabricantes façam um barulho sobre o fato de que eles sempre computam paridade, isso me leva a pensar que é relativamente incomum em controladores de hardware. É também de notar que sistemas como o ZFS e o WAFL (netapp) fazem cálculos de paridade para cada leitura.

    
por 29.07.2009 / 13:51
3

Com o RAID-5, a paridade geralmente só é lida na reconstrução da matriz, não na leitura geral. Isso é para que as leituras possam ser mais aleatórias e mais rápidas (já que você não precisa ler e calcular a paridade para uma faixa inteira toda vez que quiser 1K de dados da matriz).

Com o RAID-1, geralmente as leituras são realizadas nas unidades sempre que possível para aumentar o desempenho de leitura. Como você observou, se o subsistema RAID tentar ler as duas unidades e elas forem diferentes, o subsistema não terá como saber qual unidade estava errada.

A maioria dos subsistemas RAID depende da unidade para informar o controlador ou o computador quando está indo mal.

Então o RAID-5 é "mais robusto"? A resposta é, depende. O RAID-5 permite obter um armazenamento mais eficaz para um determinado número de discos do que o RAID-1; embora para dar armazenamento efetivo além de um disco, o RAID-1 precisa ser combinado com o RAID-0, seja como uma faixa de matrizes RAID-1, ou um RAID-1 através de duas faixas RAID-0.

(Eu prefiro o primeiro, uma vez que uma única falha de unidade removerá um único elemento RAID-1, significando que apenas uma única unidade exigirá reconstrução. Com a última, uma única falha de unidade mata um elemento RAID-0, significando que HALF os discos estarão envolvidos na reconstrução quando a unidade for substituída.)

Isso também leva a discussões sobre "escritas fantasmas", em que uma gravação é relatada como bem-sucedida pela eletrônica do inversor, mas, por qualquer motivo, a gravação nunca chega ao disco. Isso acontece. Considere que, para uma matriz RAID-5, quando você tem uma falha na unidade, a matriz DEVE ler TODOS os setores em TODAS as unidades sobreviventes PERFEITAMENTE para recuperar. A NetApp alega que o tamanho grande das unidades mais o tamanho grande dos grupos de ataque significa que, em alguns casos, suas chances de falha durante uma reconstrução podem ser tão ruins quanto uma em dez. Assim, eles estão recomendando que discos grandes em grandes grupos de RAID usem paridade dupla (que eu acho que está relacionada ao RAID-6).

Eu aprendi isso em uma discussão técnica da NetApp feita por alguns de seus engenheiros.

    
por 29.07.2009 / 14:45
3

Nenhuma implementação comum de RAID normalmente verifica a paridade no acesso a dados. Eu nunca vi um. Algumas implementações de RAID5 leem dados de paridade para leituras de fluxo contínuo para evitar busca desnecessária (mais barato descartar todo enésimo bloco do que fazer com que a unidade busque por todo bloco de enésima). As implementações do RAID1 não podem ser verificadas porque eles lêem os dois discos quanto ao desempenho (bem, na grande maioria das implementações do RAID1. Poucos permitem escolher, o que pode ser útil se um disco for muito mais lento que o outro e não exigir muita gravação carga.)

Alguns checam com um "esfregar" de segundo plano. Nesse caso, o RAID6 ganha como ele pode recuperar os dados, e RAID5 e RAID1 estão na mesma situação, você pode identificar, mas não corrigir. (Isso não é estritamente verdadeiro, pois o drive pode detectar um CRC incorreto, retornar um erro e permitir que você reescreva o bloco da paridade. Isso acontece com muita frequência).

Se você deseja integridade de dados, armazene um hash com cada bloco (ou registro, ou como ele está dividido) na camada de aplicativo. A Sybase e a Oracle fazem isso (acredito que no nível da página) e eu já vi isso em muitas ocasiões salvar um banco de dados gigantesco. (por exemplo, o controlador começa a retornar dados inválidos, o sybase trava com um erro claro, portanto, nenhuma gravação foi feita quando o banco de dados estava sendo executado em hardware com falha com um estado inconsistente).

A única solução de sistema de arquivos e a única solução de RAID que faz isso para você é o ZFS.

    
por 30.08.2009 / 22:38
0

Seu amigo está falando sobre o bit de paridade envolvido em alguns níveis de RAID ou soma de verificação dos dados gravados no disco?

Se estiverem sobre paridade, o RAID1 não tem um bit de paridade - você tem duas cópias dos mesmos dados. Deve haver uma soma de verificação executada pelo disco para garantir que o que foi gravado no disco corresponda ao que veio no fio

O RAID5 tem um bit de paridade. Isso significa que você pode perder um disco no seu conjunto RAID e continuar como se nada tivesse acontecido. Ainda assim, deve haver uma soma de verificação dos dados gravados no disco para garantir que ele corresponda ao que veio no fio

Neste caso, as somas de verificação são totalmente independentes do RAID, que pode ou não ser executado com um monte de discos

Editado para adicionar: Você mencionou a mudança do RAID de hardware para o RAID de software. A preferência é sempre o RAID de hardware sobre o RAID de software. Se você pode comprar o hardware necessário para fornecer o nível de RAID que deseja implementar, sugiro que você o faça. Isso permitirá que todos os cálculos de paridade sejam executados pela placa RAID, em vez do host. Portanto, liberando recursos no host. Não há dúvidas de outros benefícios, mas eles me escapam no momento

    
por 29.07.2009 / 12:31
0

I am about to replace an old hardware RAID5 array with a Linux software RAID1 array. I was talking to a friend and he claimed that RAID5 was more robust than RAID1.

Isso dependeria do tipo de implementação do raid (hw / sw), dos discos, do controlador de raid, se houver, e de seus recursos.

His claim was that with RAID5, on read the parity data was read to make sure that all the drives were returning the correct data. He further claimed that on RAID1 errors occurring on a drive will go unnoticed because no such checking is done with RAID1.

faz algum sentido, mas não realmente :) o que acontece é - se dados errados são escritos, em um espelho ele será enviado para ambas as unidades, e na paridade raid5 ele será gerado e espalhado pelas unidades . a verificação de leitura / gravação de dados é feita pelo firmware do disco e do controlador e não tem nada a ver com os níveis de raid.

So the question is, what do RAID5/RAID1 systems in the real world

actually do ? Do RAID5 systems check the parity data on reads ? Are there RAID1 systems that read from all drives and compare the data on read ?

como eu disse, as verificações não fazem parte do algoritmo raid, embora alguns controladores possam ter algo adicional implementado.

a robustez da matriz é até a qualidade das unidades (unidades de 2,5 "tendem a viver mais de 3,5" devido a taxas de RV diminuídas; na minha experiência NUNCA comprar discos SCSI / SAS do maxtor - eles têm falhas de firmware horríveis) , o ambiente (controle de temperatura e umidade), o próprio controlador (ele tem uma BBU? o firmware está atualizado? é uma invasão real ou fakeraid?), a quantidade de PSUs no servidor, a qualidade da UPS etc.

    
por 29.07.2009 / 12:51
0

Eu não sei isso, mas parece-me improvável que isso aconteça. Lembre-se que, para calcular a paridade, ele terá que ler o bloco de todas as unidades do seu conjunto de RAID e, em seguida, fazer a matemática para determinar a exatidão, enquanto se não, apenas faz a leitura de uma unidade. / p>

Além disso, se a sua leitura for de menos de um bloco, uma leitura de verificação de paridade teria que expandi-la para um bloco inteiro, ao passo que uma leitura normal não o faria. (Assumindo, é claro, que o bloco RAID é maior que os blocos dos discos. Eu acho que as leituras do disco precisam ser de blocos completos. Se não, meu ponto é ainda mais válido). / p>

Então, do meu ponto de vista, sim, poderia fazer isso, mas se o fizesse, seria ineficiente, e duvido que algum deles seja implementado dessa forma.

Mais uma vez, porém, não tenho conhecimento pessoal de implementações reais.

    
por 29.07.2009 / 15:44
0

Do RAID5 systems check the parity data on reads ?

Realmente não faz sentido. O que você faz quando encontra uma incompatibilidade de paridade? (Como você sabe qual bloco está errado?)

Para leituras aleatórias, verificar a paridade seria caro. Normalmente, você poderia fazer uma leitura aleatória apenas olhando para um único disco, mas, se quiser verificar a paridade, precisará ler todos os discos em cada leitura. (Isso ainda pode fazer sentido se houver algo que você possa fazer sobre isso!)

Note que o RAID-1 também tem esse problema - o que faz sentido quando você olha para um RAID-1 como um disco de dois RAID-5.

    
por 04.08.2009 / 23:30
0

Eu estive pensando um pouco sobre a afirmação de que o RAID-1 deveria ser mais rápido nas leituras do que o RAID-5, já que ele lê as duas unidades de uma só vez.

Agora, como a paridade não é lida no RAID-5, a menos que o array precise de uma reconstrução, na verdade é igual a um array RAID-0 em termos de leitura, estou correto?

O RAID-0 é geralmente considerado o nível mais rápido (embora deva ser chamado de "AID", já que não há redundância alguma). :-D

Falando de RAID de software Linux, um teste simples - usando o hdparm - confirma esta teoria: minhas matrizes RAID-5 sempre mostram uma velocidade de leitura maior do que as matrizes RAID-1.

MAS: Um array degradado executa muito mais lentamente que um array normal em execução, parece! Acabei de testar isso com o Fedora 9, rodando em 4 unidades WD 1 TB com diferentes níveis de RAID. Aqui estão os resultados:

RAID-5 degradado: velocidade de leitura 43 MB / seg. RAID-5 normal: velocidade de leitura de 240 MB / seg (!) RAID-1: velocidade de leitura 88 MB / seg

Como a perda permitida de discos é a mesma em RAID-1 e RAID-5 (ou seja, um), acho que o RAID-5 deve superar o RAID-1 em todos os aspectos - dando mais capacidade em relação ao número de discos usados matriz e mesma tolerância a falhas. Isso leva a uma conclusão que afirma que o RAID-6 supera todos os outros níveis de RAID, pois é tão rápido quanto o RAID-0 na leitura normal (sem paridade de leitura dos dois discos de paridade) e ainda tolerante a falhas em caso de perda de um membro da matriz. ; -)

    
por 04.09.2009 / 04:59
-1
Pessoalmente, acho que o teste final de um sistema RAID é o quão bem ele pode resistir a falhas. Nesse caso, tanto o RAID5 quanto o RAID1 podem lidar com falhas de unidade única, mas nenhum deles sobreviverá mais do que isso.

Quanto à sua pergunta sobre o bit de paridade, eu acho que é dependente dos drivers RAID. Ele definitivamente será lido durante a reconstrução, mas no uso normal, não faria muito sentido fazê-lo, já que a largura de banda seria desperdiçada.

    
por 29.07.2009 / 13:33
-2
afaik, não sou um profissional de armazenamento 24 horas por dia, 7 dias por semana, o controlador sempre verifica o que está gravado e lido nos discos. isto é, com raid1 você tem gravações um pouco piores do que em um único disco, mas suas leituras são um pouco mais rápidas (tem que gravar um arquivo em dois discos, mas pode ler uma parte do disco um e a outra parte do disco dois). >

Talvez você possa desabilitar a verificação de dados para um nível de ataque, mas o que é isso, todos os níveis de raid (exceto 0) estão lá para dar a você redundância de dados, então por que se atrapalhar.

Com o raid 5 você precisa de pelo menos 3 discos e pode usar discos N-1 para dados. Com o raid 1, você sempre precisa de um número par de discos e pode usar discos N / 2 para dados.

Portanto, em raids maiores, o nível 5 oferece mais armazenamento, enquanto o raid 1 oferece mais redundância.

Se por mais robusto você quer dizer qual oferece mais redundância, então é o raid 1.

dependendo do tamanho da raid, você também deve considerar tempos de reconstrução em caso de erro (quantos discos existem, quão grande é um disco, que tipo de raid (soft-, fake-, hardware-), que nível etc.)

Portanto, não é realmente possível dizer que um ataque é mais robusto do que outro (talvez o ataque 6 seja sempre mais robusto do que o ataque 5 ao custo que você perde espaço de armazenamento)

    
por 29.07.2009 / 12:53