O segundo bit de paridade no RAID 6 é um cálculo simples?


7

Estou tentando entender como o segundo bit ou byte de paridade é definido no RAID 6. Estou lendo um artigo de H. Peter Anvin e ele entra na álgebra de campo de Galois, que é algo novo para mim. De qualquer forma, um representante da HP estava tentando me explicar o RAID 6 e ela pensou que eram apenas duas operações XOR, uma para o 1º bit de paridade e outra para o 2º. Isso não faz sentido para mim, mas como ainda estou trabalhando no documento, não sei se isso se reduz a algo simples para o RAID 6 em vez do RAID n. Parece-me que o segundo bit de paridade é um pouco mais complicado do que o primeiro bit de paridade baseado em XOR. Isso é verdade?

Respostas:


12

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}000101x10x+111(a,b)a,bF

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+bab20

  • 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


11
E este é apenas um caso especial do método geral dos códigos de Reed-Solomon, conforme observado no documento citado pelo OP, e dos detalhes descritos na minha resposta: e não é diferente de e . Só que com é possível usar um campo menor. Por outro lado, você precisa de 2 discos redundantes para 2 discos de dados, enquanto o RAID-n permite mais de 2 discos de dados. P=D0D1Q=D0D1αa+bxa+bn=2
precisa

7

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.QP

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,nD0D1,,Dn1D(x)=D0+D1x++Dn1xn1

P=D(1)=D0D1Dn1Q=D(α)=D0D1αDn1αn1=(((Dn1αDn2)αD1α)D0

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)F28256256 8QP=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.PQPQ

  • Se a única falha for uma unidade de dados, digamos a ésima unidade, seu conteúdo poderá ser recalculado, pois i

    Di=D0D1Di1Di+1Dn1P.
  • Se uma unidade de dados e falhar, a unidade de dados poderá ser recalculada conforme descrito acima e, em seguida, poderá ser recalculada.QQ

  • 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.Pij

    DiDj=Pk:ki,jDkαiDiαjDj=Qk:ki,jDkαk.

Parece o mesmo tipo de cálculo que foi feito na correção direta de erros de Reed-Solomon.
edA-qa mort-ora-y

2
Sim, de fato, o método usa um código Reed-Solomon reduzido (como mencionado no link na pergunta do OP), mas a recuperação de dados não invoca a metodologia completa do algoritmo de decodificação RS que permite várias correções de erros / falhas de disco, mas muito método mais simples baseado no fato de haver no máximo duas falhas de disco e sabemos quais discos falharam. Em outras palavras, se houver erros de leitura não detectados em dois discos, o método não funcionará (nem o método geral de decodificação RS): os erros de leitura detectados (também conhecidos como falhas de disco) estão OK.
precisa saber é o seguinte

2

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 paridade P é calculado normalmente, usando um XOR padrão () esquema:

P=AB

Pela segunda paridade Q, precisamos alterar um dos itens de dados antes de executar o XOR, para que ele se torne diferente de P:

Q=AB

O mutilado B é calculado a partir de B da seguinte maneira: O primeiro bit de B é o XOR dos dois bits de Be o segundo pedaço de B é uma cópia do primeiro bit de B:

B=(B1,B2)=(B1B2,B1)

A fórmula acima leva à seguinte tabela para o cálculo de B de B:

0000
0110
1011
1101

Observe que o valor 00 permanece inalterado, quando mutilado, enquanto os outros valores passam por um ciclo de três: 01101101.

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:

B=(B2,B1B2)

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, se B e Bobter XORed? Agora, vamos dar uma olhada:

BB=(B1,B2)(B1B2,B1)=(B1B1B2,B1B2)=(B2,B1B2)

O bom resultado: XORing B e B é idêntico a executar uma etapa de desmontagem B. portantoB pode ser recuperado de BB aplicando um mangle a ele: B=(BB). E como(BB) é 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 armazenar A e B em um RAID-6, calculamos primeiro o dado mutilado Be a paridade padrão P de A e B e a paridade mutilada Q de A e B:

B=(B1B2,B1)
P=AB
Q=AB

A recuperação após falha de dois discos é a seguinte:

  • E se A e B sobreviver, apenas recalcular P e Q.
  • E se A e P sobreviver, recuperar B=PA, em seguida, recalcular Q.
  • E se B e P sobreviver, recuperar A=PB, em seguida, recalcular Q.
  • E se A e Q sobreviver, recuperar B=QA, então recupere B de B através de uma operação de desmembramento (ou um duplo desmonte), em seguida, recalcule P.
  • E se B e Q sobreviver, calcular o mutilado B de B, então recupere A=QB, em seguida, recalcular P.
  • E se P e Q sobreviver, use a fórmula explicada acima B=(PQ), então recupere A=PB.

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:

P=ABC
Q=ABC

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 Qsobrevive, é 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=(QAB).

O caso mais complicado é, se os discos A, P e Qsobreviver. EntãoA é o primeiro XOR fora de P e Q, e depois (PA) é mutilado antes de XORing com (QA). Que mapeiaB e deixa liso C:

(PA)(QA)=(ABCA)(ABCA)=
=(BC)(BC)=(BC)(BC)=
=BCBC=BBCC=(CC)=
=(C)=C=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 é:

M=(M1M4,M1,M2,M3)

0000 é novamente mapeado em 0000, enquanto todos os outros valores passam por um ciclo de 15 estágios: 0001100011001110111101111011010110101101011000111001010000100001

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.


1

Parece muito complicado para mim .

Assim, na fórmula acima, o cálculo de P é apenas o XOR de cada faixa. Isso ocorre porque a adição em qualquer característica de dois campos finitos reduz à operação XOR. O cálculo de Q é o XOR de uma versão deslocada de cada faixa.

(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.


Não sei como (ou mesmo se eu deveria) colocar essa fórmula da Wikipedia na minha resposta ...: /

Agora que a pergunta foi migrada para a Ciência da Computação , você pode usar a formatação LaTeX .
Gilles 'SO- stop be evil'
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.