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 afirmou que o RAID5 era mais robusto que o RAID1.

Ele afirmou que, com o RAID5, na leitura, os dados de paridade foram lidos para garantir que todas as unidades retornassem os dados corretos. Ele alegou ainda que, no RAID1, os erros ocorridos em uma unidade passam despercebidos porque essa verificação não é feita com o RAID1.

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

Portanto, 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 de todas as unidades e comparam os dados na leitura?

andynormancx
fonte

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 RAID significa Matriz redundante de discos baratos . Os discos são a unidade atômica da redundância - o RAID realmente não se importa com os dados. Você compra soluções que empregam sistemas de arquivos como WAFL ou ZFS para lidar com redundância e integridade de dados.

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

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

Se você está usando RAID-5, 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.

duffbeer703
fonte
6

Acredito que a resposta depende do controlador / software, por exemplo, é bastante comum que os sistemas de espelhamento leiam apenas um disco de um par e, portanto, sejam capazes de fornecer os dados errados. Observo que, se seus resultados dependem desses dados, quando os dados são gravados nos dois discos, eles são corrompidos nos dois discos .....

Do pdf em SATAssure (tm) Plus:

"A revolucionária tecnologia SATAssure oferece proteção e confiabilidade de dados de classe empresarial usando unidades de disco SATA de grande capacidade e baixo custo. O SATAssure opera em todas as operações de leitura, garantindo a integridade dos dados e corrigindo automaticamente os problemas em tempo real - tudo sem a penalidade de desempenho ou capacidade encontrada nos sistemas tradicionais. sistemas de armazenamento. Reduza as RMAs de unidades com uma nova capacidade de ligar e desligar unidades individuais ".

É interessante que alguns fabricantes se preocupem com o fato de sempre calcularem a paridade, o que me leva a pensar que é relativamente incomum em controladores de hardware. Também é importante notar que sistemas como ZFS e WAFL (netapp) fazem cálculos de paridade para cada leitura.

James
fonte
Esse link parece interessante, mas ele realmente diz explicitamente em qualquer lugar da página ou do folheto que eles recalculam a paridade em todas as leituras?
22630 Andynormancx
Eu adicionei uma citação do pdf. Observe que as caixas S2A são silenciosas e sofisticadas.
James
3

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

Com o RAID-1, geralmente as leituras são passadas pelas unidades, sempre que possível, para aumentar o desempenho da leitura. Como você observou, se o subsistema RAID tentar ler as duas unidades e elas diferirem, 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 estiver com problemas.

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

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

Isso também leva a discussões sobre "gravações fantasmas", nas quais uma gravação é relatada como bem-sucedida pelos componentes eletrônicos da unidade, mas por qualquer motivo, a gravação nunca chega ao disco. Isso acontece. Considere que, para uma matriz RAID-5, quando houver uma falha na unidade, a matriz DEVE ler TODOS OS setores em TODAS as unidades sobreviventes PERFEITAMENTE para recuperar. A NetApp afirma que o tamanho grande das unidades e o tamanho dos grupos de invasões significa que, em alguns casos, suas chances de falhar durante uma reconstrução podem ser tão ruins quanto uma em cada dez. Portanto, eles recomendam que discos grandes em grandes grupos RAID usem paridade dupla (o que eu acho que está relacionado ao RAID-6).

Aprendi isso em uma discussão técnica da NetApp apresentada por alguns de seus engenheiros.

David Mackintosh
fonte
Eu não usaria o termo "mais eficaz" ... "mais capacidade" seria mais apropriado. Na minha opinião, uma solução que aumenta a probabilidade de eu perder meus dados não é mais eficaz.
duffbeer703
Tudo é uma troca de custo-valor. O RAID-5 é mais econômico em termos de armazenamento, enquanto o RAID-1 ou RAID-1 + 0 (0 + 1) é mais eficaz em termos de robustez.
David Mackintosh
O outro motivo para preferir 1 + 0 a 0 + 1 é que 1 + 0 pode sobreviver a 4 dos 6 possíveis "uma segunda unidade falha antes que a primeira unidade com falha seja substituída e a matriz reconstruída" cenários em que 0 + 1 pode sobreviver apenas 2 dos 6. Embora 0 + 1 possa sobreviver a uma falha do controlador em um braço (onde 0 + 1 não pode), isso é muito mais raro do que uma falha na unidade (mesmo uma falha na unidade múltipla).
David Spillett
O RAID-DP (implementação de paridade dupla da NetApp) é um RAID-6. O RAID-6 (diferentemente do RAID-5) é definido funcionalmente como um RAID que pode sobreviver a duas falhas de disco. O RAID-DP difere do RAID-6 típico por não distribuir a paridade - o WAFL não grava gravações aleatórias aleatoriamente, portanto, a distribuição de paridade não oferece nenhum benefício.
Captain Segfault 04/08/09
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 streaming para evitar buscas desnecessárias (mais barato jogar fora a enésima quadra do que fazer com que a unidade procure por cada enésima quadra). As implementações de RAID1 não podem ser verificadas porque elas leem o desempenho dos dois discos (bem, na grande maioria das implementações de RAID1. Um punhado permite que você escolha, o que pode ser útil se um disco for muito mais lento que o outro e não exigir muita gravação carga.)

Alguns verificam com um 'esfregar' de fundo. Nesse caso, o RAID6 vence porque pode recuperar os dados e o RAID5 e o RAID1 estão na mesma situação, é possível identificar, mas não corrigir. (Isso não é estritamente verdadeiro, pois a unidade pode detectar um CRC incorreto, retornar um erro e permitir que você reescreva o bloco com paridade. Isso acontece com bastante frequência).

Se você deseja integridade dos dados, armazene um hash em cada bloco (ou registro, ou no entanto, ele está dividido) na camada de aplicativo. A Sybase e a Oracle fazem isso (acredito no nível da página) e já vi várias vezes salvar um banco de dados gigantesco. (por exemplo, o controlador começa a retornar dados incorretos, o sybase trava com um erro claro; portanto, nenhuma gravação foi feita quando o banco de dados estava em execução no hardware com um estado inconsistente).

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

Carlito
fonte
0

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

Se eles estão sobre a paridade, o RAID1 não possui 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 ao fio

O RAID5 tem um pouco 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 eles correspondam ao que veio à tona

Nesse caso, as somas de verificação são totalmente independentes do RAID que pode ou não ser executado com vários discos

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

Ben Quick
fonte
Ele estava falando sobre paridade. Ele estava alegando que no RAID5 as informações de paridade foram recuperadas em uma leitura e comparadas com os dados provenientes dos outros discos para verificar se não havia erros de leitura.
22630 Andynormancx
5
Eu discordo da sua recomendação de RAID de hardware sobre software em todos os casos. Com o hardware moderno, o RAID do software pode ser tão rápido quanto o hardware, se o servidor tiver bastante CPU sobressalente (que o meu sempre terá). Além disso, o RAID de hardware tem algumas desvantagens, sendo a principal em uma situação de recuperação, que você precisa de uma placa RAID correspondente. Com o software RAID, você pode retirar uma unidade de uma máquina, colocá-la em outra e sair sem precisar de uma nova placa RAID que corresponda exatamente à antiga.
22630 Andynormancx
Eu estava tentando entender o contexto em que contexto ele estava falando. Pelo que entendi, as somas de verificação são usadas na gravação do disco (independentemente do RAID). Paridade é usada para colocar blocos de dados em diferentes discos e para reconstruir uma matriz no caso de uma falha no disco. A paridade não é usada em todos os níveis de RAID
Ben Quick
1
Consulte en.wikipedia.org/wiki/… para obter uma discussão sobre o software versus RAID de hardware. Obviamente, a implementação que você escolheu depende do seu ambiente e dos seus requisitos. Minha preferência é hardware RAID sobre RAID software
Ben Rápida
Entendo, esqueça que já mencionei somas de verificação. Atualizei a pergunta para esclarecer a confusão. A questão é se os sistemas RAID5 normalmente verificam os dados de paridade nas leituras.
22630 Andynormancx
0

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 afirmou que o RAID5 era mais robusto que o RAID1.

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

Ele afirmou que, com o RAID5, na leitura, os dados de paridade foram lidos para garantir que todas as unidades retornassem os dados corretos. Ele alegou ainda que, no RAID1, os erros ocorridos em uma unidade passam despercebidos porque essa verificação não é feita com o RAID1.

faz algum sentido, mas não realmente :) o que acontece é - se dados errados forem gravados, em um espelho, eles serão enviados para as duas unidades e, na paridade raid5, serão gerados e espalhados 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 invasão.

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

realmente faz? Os sistemas RAID5 verificam os dados de paridade nas leituras? Existem sistemas RAID1 que lêem de todas as unidades e comparam os dados na leitura?

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

a robustez da matriz está de acordo com a qualidade das unidades (unidades de 2,5 "tendem a viver mais de 3,5" devido à redução das taxas de RV; na minha experiência NUNCA compre unidades maxtor SCSI / SAS - elas têm falhas horríveis de firmware), o ambiente (controle de temperatura e umidade), o próprio controlador (possui uma BBU? o firmware está atualizado? é um ataque real ou fakeraid?), a quantidade de PSUs no servidor, a qualidade da UPS etc.

dyasny
fonte
Receio que você não tenha respondido à pergunta, que é muito precisamente sobre o que as implementações reais reais do RAID5 fazem com relação à verificação dos dados de paridade em uma leitura.
29630 Andynormancx
0

Não sei disso, mas me parece improvável que sim. Lembre-se de que, para calcular a paridade, ele precisará ler o bloco de todas as unidades em seu conjunto RAID e, em seguida, fazer cálculos para determinar a exatidão, enquanto que, se não o fizer, apenas fará a leitura de uma unidade.

Além disso, se sua leitura for inferior a um bloco, uma leitura de verificação de paridade teria que expandi-la para um bloco completo, enquanto uma leitura regular não seria. (Supondo, é claro, que o bloco RAID seja maior que o bloco dos discos. Acho que as leituras do disco devem ser de blocos completos. Caso contrário, meu argumento é ainda mais válido.)

Portanto, do meu ponto de vista, sim, poderia fazer isso, mas, se o fizesse, seria ineficiente e duvido que alguma seja implementada dessa maneira.

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

wfaulk
fonte
0

Os sistemas RAID5 verificam os dados de paridade nas leituras?

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ê pode atender a 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!)

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

Capitão Segfault
fonte
0

Eu estive pensando um pouco sobre a afirmação de que o RAID-1 deve ser mais rápido nas leituras do que o RAID-5, pois ele lê nas duas unidades ao mesmo tempo.

Agora, como a paridade não é lida no RAID-5, a menos que a matriz precise de uma reconstrução, na verdade é igual a uma matriz 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", pois não há redundância). :-D

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

MAS: Parece que uma matriz degradada é muito mais lenta que uma matriz em execução normal! Acabei de testar isso com o Fedora 9, executando em unidades de 4 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 240 MB / seg (!) RAID-1: velocidade de leitura 88 MB / seg

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


fonte
Algumas coisas interessantes, mas você repetiu a falácia do RAID1 que eu ouço o tempo todo. O RAID1 não precisa significar que ele pode sobreviver apenas a uma única falha de disco. Você não precisa ter apenas dois discos em sua matriz RAID1. Por exemplo, você tem uma matriz RAID1 com 3 discos, ela sobreviverá a duas falhas de disco e o desempenho de leitura também aumentará ( se o sistema RAID estiver lendo de várias unidades em uma leitura).
andynormancx 5/09/09
-1

Pessoalmente, acho que o teste final de um sistema RAID é como ele pode suportar falhas. Nesse caso, o RAID5 e 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, acho que depende dos drivers RAID. Definitivamente, será lido durante a reconstrução, mas no uso normal, não faria muito sentido fazê-lo, pois a largura de banda seria desperdiçada.

sybreon
fonte
Receio que sua resposta seja "Não sei se alguma implementação de RAID5 verifica a paridade em uma leitura" e, portanto, não responde à pergunta.
22630 Andynormancx
É uma resposta válida, porque ninguém saberá com certeza, exceto a pessoa que realmente escreveu o motorista.
sybreon
-2

afaik, eu não sou profissional de armazenamento 24/7, o controlador sempre verifica o que está gravado e lido nos discos. ou seja, com o raid1, você tem gravações um pouco piores do que em um único disco, mas suas leituras são um pouco mais rápidas (precisam gravar um arquivo em dois discos, mas podem ler uma parte do disco um e a outra parte do disco dois).

Talvez você possa desativar a verificação de dados para um nível de invasão, mas qual é o objetivo disso? Todos os níveis de invasão (exceto 0) existem para fornecer redundância de dados.

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.

Assim, em ataques maiores, o nível 5 oferece mais armazenamento, enquanto o ataque 1 oferece mais redundância.

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

Dependendo do tamanho da invasão, você também deve considerar o tempo de reconstrução em caso de erro (quantos discos existem, qual o tamanho de um disco, que tipo de invasão (soft, fake, hardware)), qual nível etc. )

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

mrt181
fonte
1
Receio que isso realmente não responda à minha pergunta, minha pergunta é muito precisa sobre se as implementações típicas do RAID5 verificam ou não os dados de paridade na leitura. E para o registro RAID1 não precisa de um número par de discos. Felizmente, é possível ter uma matriz RAID1 com mais de dois discos, aumentando assim a redundância e reduzindo a velocidade de gravação.
andynormancx
1
"o controlador sempre verifica o que está gravado e lido nos discos." Este não é o caso em que o controlador pode ler os dois discos, mas alguns controladores retornam os primeiros dados obtidos.
James
Eu acho que é possível dizer que o RAID1 precisa de um número par de discos e que um terceiro espelho é algo diferente de RAID1. Tão poucas implementações suportam um terceiro espelho que a terminologia nunca padronizou.
Carlito