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=A⊕B
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=A⊕B∗
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∗=(B∗1,B∗2)=(B1⊕B2,B1)
A fórmula acima leva à seguinte tabela para o cálculo de B∗ de B:
00→00
01→10
10→11
11→01
Observe que o valor 00 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:
B=(B∗2,B∗1⊕B∗2)
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 B∗obter XORed? Agora, vamos dar uma olhada:
B⊕B∗=(B1,B2)⊕(B1⊕B2,B1)=(B1⊕B1⊕B2,B1⊕B2)=(B2,B1⊕B2)
O bom resultado: XORing B 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 armazenar A 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∗:
B∗=(B1⊕B2,B1)
P=A⊕B
Q=A⊕B∗
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=P⊕A, em seguida, recalcular Q.
- E se B e P sobreviver, recuperar A=P⊕B, em seguida, recalcular Q.
- E se A e Q sobreviver, recuperar B∗=Q⊕A, 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=Q⊕B∗, em seguida, recalcular P.
- E se P e Q sobreviver, use a fórmula explicada acima B=(P⊕Q)∗, então recupere A=P⊕B.
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=A⊕B⊕C
Q=A⊕B∗⊕C∗∗
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=(Q⊕A⊕B∗)∗.
O caso mais complicado é, se os discos A, P e Qsobreviver. 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:
(P⊕A)∗⊕(Q⊕A)=(A⊕B⊕C⊕A)∗⊕(A⊕B∗⊕C∗∗⊕A)=
=(B⊕C)∗⊕(B∗⊕C∗∗)=(B∗⊕C∗)⊕(B∗⊕C∗∗)=
=B∗⊕C∗⊕B∗⊕C∗∗=B∗⊕B∗⊕C∗⊕C∗∗=(C⊕C∗)∗=
=(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∗=(M1⊕M4,M1,M2,M3)
0000 é novamente mapeado em 0000, enquanto todos os outros valores passam por um ciclo de 15 estágios: 0001→1000→1100→1110→1111→0111→1011→0101→1010→1101→0110→0011→1001→0100→0010→0001
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.