O caso geral é realmente um pouco complicado.
No entanto, no caso de 4 discos, você pode simplificá-lo bastante; você realmente não precisa conhecer nenhuma matemática sofisticada. Você só precisa saber como armazenar 4 bits de forma redundante e já sabe tudo; basta repetir o mesmo esquema para cada grupo de 4 bits que você precisa armazenar.
Podemos representar o esquema como tabelas 4 x 4. Os primeiros 2 bits de nossos dados determinam a linha e os últimos 2 bits de nossos dados determinam a coluna.
Disco 1: Apenas armazene os 2 primeiros bits. Isso é:
00 00 00 00
01 01 01 01
10 10 10 10
11 11 11 11
Disco 2: Apenas armazene os últimos 2 bits. Isso é:
00 01 10 11
00 01 10 11
00 01 10 11
00 01 10 11
Por enquanto, tudo bem. Dado o disco 1 + o disco 2, podemos recuperar nossos dados originais: o disco 1 nos informa a linha (os 2 primeiros bits dos dados originais) e o disco 2 nos informa a coluna (os últimos 2 bits dos dados originais).
Disco 3: É o que fazemos no RAID5, apenas XOR os bits:
00 01 10 11
01 00 11 10
10 11 00 01
11 10 01 00
Mais uma vez, está tudo bem. Você pode recuperar os dados originais usando o disco 1 + disco 3 ou o disco 2 + disco 3. Uma observação importante é que a tabela de pesquisa do disco 3 forma um quadrado latino : todos os elementos de cada linha são distintos e todos os elementos de cada coluna são distinto. Por exemplo, se você conhece os dados no disco 1, conhece a linha correta e pode usar os dados no disco 3 para recuperar a coluna. Por outro lado, se você conhece os dados no disco 2, conhece a coluna da direita e pode usar os dados no disco 3 para recuperar a linha.
Disco 4: Aqui podemos usar a seguinte tabela de pesquisa:
00 01 10 11
10 11 00 01
11 10 01 00
01 00 11 10
Não se preocupe como é construído; nós realmente não nos importamos com isso. As propriedades cruciais são:
As tabelas de pesquisa do disco 3 e do disco 4 são quadrados latinos. Portanto, se você souber 1 + 3 ou 1 + 4 ou 2 + 3 ou 2 + 4, poderá recuperar a linha e a coluna (ou seja, os dados originais).
As tabelas de pesquisa do disco 3 e do disco 4 formam quadrados latinos ortogonais , o que torna possível recuperar os dados se tivermos apenas os discos 3 + 4.
Vamos elaborar sobre o segundo ponto. Concatenando as tabelas de pesquisa do disco 3 e do disco 4, obtemos esta matriz:
0000 0101 1010 1111
0110 0011 1100 1001
1011 1110 0001 0100
1101 1000 0111 0010
Agora observe que cada sequência de 4 bits ocorre nesta tabela exatamente uma vez. Ou seja, se soubermos o que está armazenado nos discos 3 + 4, saberemos onde estamos nesta tabela. Conhecemos a linha e a coluna e, portanto, podemos recuperar os dados originais.
Se você insistir em ver a conexão com os campos de Galois, considere o campo . Rotule os elementos do campo com ; estes correspondem a cadeias de 2 bits ( ≈ , ≈ , ≈ , ≈ ). Agora qualquer cadeia de 4 bits podem ser codificar como um par , onde .F=GF(22)F={0,1,x,x+1}000
101
x10
x+111
(a,b)a,b∈F
Um par agora é armazenado da seguinte forma:(a,b)
- O disco 1 armazena .a
- O disco 2 armazena .b
- O disco 3 armazena .a+b
- O disco 4 armazena .xa+b
Agora, por exemplo, apenas e , você pode resolver e . Usando a regra , você pode encontrarp=a+bq=xa+bab2≡0
- p+q=(xa+b)+(a+b)=(x+1)a+2b≡(x+1)a .
- p+xq=(xa+b)+x(a+b)=2xa+(x+1)b≡(x+1)b .
Em seguida, divida por para obter e , etc. Mas, no final, esta abordagem dá-lhe precisamente as mesmas tabelas de pesquisa como o que foi apresentado acima.x+1ab
A computação para é definitivamente mais difícil do que a computação XOR necessária para embora seja, em certo sentido, o mesmo tipo de cálculo: uma avaliação polinomial.Q P
Sem as técnicas computacionais detalhadas descritas no link, a idéia é considerar os bytes de dados / unidades , como os coeficientes de um polinômio . Então,n D0 D1,…,Dn−1 D(x)=D0+D1x+⋯+Dn−1xn−1
onde é um elemento (indicado por no documento citado pelo OP) do campo Galois GF (também indicado como ) cujos os elementos são os bytes de bits e a segunda linha da equação para pode ser reconhecida como regra de Horner. Obviamente, o cálculo para também pode ser pensado como usando a regra de Horner, exceto que estamos ignorando as multiplicações por como NOPs e eliminando todos os parênteses na regra de Horner, pois são desnecessários.α {02}=(00000010) (28) F28 256 256 8 Q P=D(1) 1
Após a gravação das unidades,
Se um ou ambos e falharem, não há problema; e podem ser recalculados e armazenados em unidades de substituição.P Q P Q
Se a única falha for uma unidade de dados, digamos a ésima unidade, seu conteúdo poderá ser recalculado, poisi
Se uma unidade de dados e falhar, a unidade de dados poderá ser recalculada conforme descrito acima e, em seguida, poderá ser recalculada.Q Q
O que fazer nos outros casos: uma unidade de dados e falha ou duas unidades de dados com falha são mais complicadas de descrever, mas os métodos podem ser entendidos mais facilmente usando a perspectiva polinomial descrita aqui. Por exemplo, se as unidades -ésima e -ésima falharem, a reconstrução é efetivamente a solução das equações simultâneas: onde o lado direito pode ser calculado a partir do conteúdo das unidades sem falhas.P i j
fonte
Os três discos RAID-6 são triviais: armazene as mesmas informações no disco 1, disco 2 e disco 3. Quaisquer dois discos podem falhar e você ainda pode recuperar os dados. Portanto, um RAID-6 de três discos é basicamente apenas um RAID-1 de três discos.
No caso de quatro discos , existem dois "discos" de dados (vamos chamá-losA e B ) e dois "discos" paritários (vamos chamá-los P e Q ) Além disso, temos que operar em dois bits de cada disco de cada vez, para que o item de dados mínimo (cuja geração de paridade seja mostrada aqui) seja de quatro bits: Dois bits no discoA e dois bits no disco B . Isso irá gerar dois bits de paridadeP e mais dois bits de paridade Q . Se tivermos mais bits, apenas repetiremos esse esquema, conforme necessário.
A primeira paridadeP é calculado normalmente, usando um XOR padrão (⊕ ) esquema:
Pela segunda paridadeQ , precisamos alterar um dos itens de dados antes de executar o XOR, para que ele se torne diferente de P :
O mutiladoB∗ é calculado a partir de B da seguinte maneira: O primeiro bit de B∗ é o XOR dos dois bits de B e o segundo pedaço de B∗ é uma cópia do primeiro bit de B :
A fórmula acima leva à seguinte tabela para o cálculo deB∗ de B :
Observe que o valor00 permanece inalterado, quando mutilado, enquanto os outros valores passam por um ciclo de três: 01→10→11→01 .
A desmontagem é bastante simples: por causa da propriedade cíclica, basta repetir a desmontagem duas vezes para desmontar. Ou inverta a fórmula acima paraB∗ , o que leva a:
Portanto, a desmontagem é um tanto simétrica à desmontagem.
Agora vem a mágica, que mais tarde nos permitirá recuperar o cenário, que os dois discos de dados falham e apenas os discos de paridade sobrevivem: O que acontece, seB e B∗ obter XORed? Agora, vamos dar uma olhada:
O bom resultado: XORingB e B∗ é idêntico a executar uma etapa de desmontagem B . portantoB pode ser recuperado de B⊕B∗ aplicando um mangle a ele: B=(B⊕B∗)∗ . E como(B⊕B∗) é o resultado de XORing dos dois valores de paridade P e Q , a recuperação somente dos discos de paridade se torna possível.
Agora, temos tudo juntos: Para armazenarA e B em um RAID-6, calculamos primeiro o dado mutilado B∗ e a paridade padrão P de A e B e a paridade mutilada Q de A e B∗ :
A recuperação após falha de dois discos é a seguinte:
No caso de cinco discos , existem três discos de dadosA , B e C e novamente dois discos de paridade P e Q . A diferença mais notável é que o mangle é realizado duas vezes emC , ao calcular Q :
A recuperação no estojo de cinco discos segue os mesmos princípios que no estojo de quatro discos. Nesses casos, esses dois discos de dados eP ou Q sobrevive, é preciso retirar dois valores da paridade em vez de apenas um e seguir com a função de desmontagem correta no caso deQ . Por exemplo,C é recuperado de A , B e Q do seguinte modo: C=(Q⊕A⊕B∗)∗ .
O caso mais complicado é, se os discosA , P e Q sobreviver. EntãoA é o primeiro XOR fora de P e Q , e depois (P⊕A) é mutilado antes de XORing com (Q⊕A) . Que mapeiaB e deixa liso C :
Para seis ou mais discos , o princípio permanece o mesmo, mas a operação do mangle precisa ser substituída por uma que tenha um ciclo mais longo. Isso também requer o uso de mais bits. Com quatro bits, uma possível operação de mangle é:
Com seu ciclo de 15 estágios, esse mangle op pode ser usado para até 15 discos de dados e dois discos de paridade. Para oP paridade, todos os valores são XORed juntos como estão e, para Q , o primeiro dado dos discos não é desconfigurado, o segundo dado é desconfigurado uma vez, o terceiro dado é desconfigurado duas vezes e assim por diante.
fonte
Parece muito complicado para mim .
(P é o primeiro bit de paridade e Q é o segundo.)
Parece que a explicação que você obteve é uma descrição válida de alto nível do cálculo, sem entrar na teoria matemática e nos detalhes que nem você (ela ou eu, ou a maioria das outras pessoas) realmente entende.
fonte