Como a paridade funciona em uma matriz RAID-5?

31

Estou procurando criar uma pequena e agradável matriz RAID para backups dedicados. Eu gostaria de ter cerca de 2 a 4 TB de espaço disponível, pois tenho esse pequeno hábito desagradável de digitalizar tudo. Portanto, preciso de muito armazenamento e muita redundância em caso de falha na unidade. Também vou fazer backup de 2-3 /homepastas de computadores usando um dos clones do "Time Machine" para Linux. Essa matriz estará acessível na minha rede local via SSH.

Estou tendo dificuldades para entender como o RAID-5 atinge a paridade e quantas unidades são realmente necessárias. Alguém poderia assumir que ele precisa de 5 unidades, mas eu posso estar errado. A maioria dos diagramas que eu vi ainda me confundiu. Parece que é assim que o RAID-5 funciona. Corrija-me, pois tenho certeza de que não estou entendendo direito:

/---STORAGE---\    /---PARITY----\
|   DRIVE_1   |    |   DRIVE_4   |
|   DRIVE_2   |----|     ...     |
|   DRIVE_3   |    |             |
\-------------/    \-------------/

Parece que as unidades 1-3 aparecem e funcionam como uma única unidade maciça ( capacity * number_of_drives) e as unidades de paridade fazem backup dessas unidades. O que me parece estranho é que geralmente vejo mais de 3 unidades de armazenamento em um diagrama para apenas 1 ou 2 unidades de paridade. Digamos que estamos executando 4 unidades de 1 TB em uma matriz RAID-5, 3 de armazenamento em execução e 1 paridade em execução, temos 3 TB de armazenamento real, mas apenas 1 TB de paridade !?

Eu sei que estou perdendo alguma coisa aqui, alguém pode me ajudar? Além disso, para o meu caso de uso, o que seria melhor, RAID-5 ou RAID-6? A tolerância a falhas é a maior prioridade para mim neste momento, já que ela será executada em uma rede apenas para uso doméstico, a velocidade não é extremamente crítica.

Naftuli Kay
fonte

Respostas:

30

Apenas XORs cada bit correspondente de cada unidade - Se você perder alguma unidade, poderá recriar os dados ausentes.

Para o fundo:

A B (A XOR B)
0 0    0
1 1    0
0 1    1
1 0    1

Suponha que D seja o XOR das outras colunas e, desde que você perca apenas uma unidade, poderá descobrir o que perdeu.

A B C D
1 0 0 1
0 1 0 1
1 1 0 0

Algumas vezes o bit de distribuição será distribuído pelas unidades, mas o conceito é o mesmo.

Portanto, para o RAID-5, não importa quantas unidades, você só precisa de 1 unidade com paridade igual ou maior que a menor unidade na matriz que deseja RAID.

O RAID-5 para uso pessoal é provavelmente o melhor, pois a complexidade computacional é muito menor que o RAID-6.

O RAID-6 é mais complicado usando Galois Fields para calcular a paridade. E isso pode tributar os cálculos de paridade. No entanto, você pode perder mais unidades, mas se você reconstruir sua matriz assim que receber uma única falha, você deverá seguir o RAID-5.

Matt
fonte
Excelente resposta. Eu estava pensando em uma escala muito grande, com base no disco rígido completo, em vez de em um nível de bits. Então o RAID-5 usa uma unidade dedicada para paridade, ou melhor, todas as unidades para paridade? Estou confuso nisso.
Naftuli Kay
2
Acredito que a abordagem moderna é distribuir a paridade na diagonal em todas as unidades. Isso tem o efeito de acelerar o tempo de leitura para bits de paridade, pois várias solicitações de E / S podem ser enviadas paralelamente a unidades diferentes, mas não me cite.
23411 Matt
Existe uma fórmula matemática que eu possa usar para determinar a capacidade de xunidades e yGB disponíveis em cada unidade?
Naftuli Kay
2
Sim, é o (menor tamanho da unidade) * (número de unidades no array - 1)
Matt
11
Se a paridade for apenas um XOR dos outros dois discos, como você sabe qual dos dois discos foi corrompido? Um pouco de flip em qualquer disco resultaria em um pouco de paridade?
Jay Sullivan
8

Aqui está o que eu acho que é um diagrama melhor para mostrar como a paridade funciona no RAID4 e RAID5

RAID4

Disk1  Disk2  Disk3  Disk4
----------------------------
data1  data1  data1  parity1
data2  data2  data2  parity2
data3  data3  data3  parity3
data4  data4  data4  parity4

RAID5

Disk1   Disk2   Disk3   Disk4
----------------------------
parity1 data1   data1   data1   
data2   parity2 data2   data2  
data3   data3   parity3 data3
data4   data4   data4   parity4
camster342
fonte
Ou consulte este SVG na Wikipedia en.wikipedia.org/wiki/Standard_RAID_levels#/media/…
Giuseppe Crinò
4

Eu recomendaria a leitura deste artigo da Wikipedia sobre Raid 5 e Raid 6

http://en.wikipedia.org/wiki/Standard_RAID_levels#RAID_5_parity_handling

O RAID 5 grava um bloco de paridade em cada faixa, portanto, para a Faixa A de uma matriz de 4 discos, ele grava a verificação de paridade no 4º disco, com Dados nos discos 1, 2 e 3

Para a Faixa B, o bloco de paridade está no disco 3, com dados nos discos 1,2 e 4 .. etc.

Se o disco 4 falhar, os dados poderão ser recuperados para a Faixa B, como você conhece os dados nos discos 1 e 2 e a verificação de paridade no disco 3.

Se a faixa B tiver paridade "2" e o disco 1 tiver dados "1" e dados 2 do disco "0", o disco 4 deverá ter dados iguais a "1" para que o disco seja gravado com data = "1"

O disco inteiro pode ser recriado dessa maneira, o RAID 6 estende isso ao ter 2 blocos de festa por faixa.

Em relação ao espaço para o Raid 5, você perde apenas um disco em espaço para paridade, pois ele só grava em bloco de paridade por faixa, enquanto no Raid 6 você perde 2 discos, mas também pode perder dois discos em vez daquele em que pode perder. Invasão 5;)

O artigo da Wikipedia explica isso melhor!

markfknight
fonte
3

O RAID 5 usa uma unidade para paridade, independentemente de quantas unidades de dados existem na matriz. Isso significa que se torna mais eficiente, em termos de espaço utilizável, mais unidades adicionadas.

A paridade é alcançada executando uma operação XOR no mesmo bloco em cada unidade; o conteúdo da unidade de paridade é ajustado para que todas as unidades XOR sejam zero . Isso significa que o RAID 5 é restrito pela menor capacidade de todas as unidades na matriz.

O RAID 6 é semelhante, exceto que duas falhas simultâneas na unidade podem ser toleradas. Isso é útil porque o processo de " resilvering " uma matriz após uma falha de uma única unidade pode ser estressante o suficiente para causar uma segunda unidade.

sblair
fonte
Então isso significa essencialmente que posso ter 4 unidades de 2 TB e 6 TB de armazenamento redundante e eficaz?
Naftuli Kay
@TK Kocheran Com RAID 5, sim. Observe que o armazenamento efetivo será um pouco menor devido ao sistema de arquivos. Por exemplo, meu NAS com 4 unidades de 2 TB no RAID-Z1 (versão do RAID 5 do ZFS) tem um espaço útil de 5,18 TB.
Sblair 23/05
Bem, sim, claro :) Sempre acontece assim. Próxima pergunta é o que sistema de arquivos para usar ...
Naftuli Kay
0

Se o objetivo é a tolerância a falhas, o RAID-6 fornecerá redundância suficiente para perder duas unidades. Normalmente, o RAID-5 tolera apenas uma falha de unidade única.

Nate
fonte
Qual é a proporção de unidades por paridade (armazenamento total) para RAID-6? drive_size * (drive_count - 2)?
Naftuli Kay
11
Além de a tolerância a falhas de uma segunda unidade ficar ruim antes que você possa substituir a primeira, há uma outra situação pela qual ela é ótima e já me deparei com mais de uma vez: Uma unidade fica ruim em uma matriz RAID e, portanto, uma nova unidade é solicitada. Um cara aleatório que não sabe nada sobre matrizes RAID entra na sala do servidor com a nova unidade na mão, bagunça a numeração e ejeta a unidade errada da matriz para substituição. Sob RAID5, sua matriz está ferrada ali. RAID6 significa que você ainda pode se recuperar.
Camster342 #