Talvez o link que tenha mais detalhes e referências possa ajudá-lo a entender o design?
Eu tenho lido: link
Isso basicamente descreve o RAID-DP como ataque de paridade diagonal. Mas há uma coisa que está me incomodando um pouco - este exemplo deve ser simplificado, porque ele descreve como tirar uma soma. Isso é bastante justo - para paridade 'normal' em RAID4 e RAID5 - você faz XORs ao invés de somas aditivas diretas e isso funciona porque os XORs são bastante eficientes e você pode reconstruir.
Se a sua paridade é:
A xor B x ou C = P
Então
P xor B x ou C = A
Há apenas uma coisa que me incomoda um pouco - A soma de DP não funciona dessa forma, porque se você fizer uma paridade dupla de 'estilo XOR' ... você acaba tendo um resultado ambíguo. Você cria um monte de equações simultâneas, que permitem que você descubra as relações entre os bits - por exemplo, você sabe quais bits são iguais e não iguais entre si. No entanto, você acaba com duas soluções válidas - uma a 'inversa' da outra.
Eu suponho que é por isso que o exemplo trabalhado usa somas aditivas ... mas o que mais me incomoda em é: Sua soma aditiva geralmente será um número maior de bytes do que a fonte. Se você 'soma' 10 valores de um byte, e sua soma pode ser maior que um byte. Você poderia 'embrulhar' sua soma, eu acho, mas você ainda corre o risco de obter um resultado ambíguo.
O que sua paridade efetivamente diz é quais bits são iguais entre si e quais não são. Mas o resultado líquido é ambíguo - você pode ter a resposta "certa" ou uma inversão da resposta "certa".
O que estou perdendo?
(Eu suspeito que a resposta possa ser similar a como o RAID-6 faz isso).
Talvez o link que tenha mais detalhes e referências possa ajudá-lo a entender o design?
Não se preocupe com o resultado que não é adequado para adição. Apenas ignore o estouro. Não há ambiguidade. Por exemplo, vamos imaginar baldes que contenham um único dígito decimal.
5 + 4 + 8 + 3 + 6 = > 26.
Como ele contém apenas um dígito, apenas escrevemos "6" para paridade. Agora precisamos reconstruir o quarto dígito de dados. O inverso para adição é subtração:
6 - (5 + 4 + 8 + 6) = > -17 Basta adicionar "10" s até obter um número positivo e 3 é o valor em falta.
Você está certo de que, para o disco duplo, não é possível trabalhar em uma única linha e recuperar as informações. Você deve poder ler várias linhas. Aqui é um documento USENIX que cobre um algoritmo para paridade diagonal em linha.