Reparo de incompatibilidade de limpeza RAID6?

6

Você pode iniciar uma depuração de uma matriz mdadm com echo 'check' > /sys/block/mdX/md/sync_action e, se um setor inválido for encontrado, será reescreva-o automaticamente (a partir de um espelho ou de informações de paridade para RAID5 / 6).

No entanto, se todos os blocos forem lidos com sucesso, mas não forem consistentes, isso é considerado uma incompatibilidade . Neste caso, o reparo é complicado porque o mdadm não pode dizer qual espelho contém os dados corretos (RAID1 / 10) ou se são dados ou paridades que estão corrompidos (RAID5).

Em teoria, este não é o caso do RAID6 se eu entendi o RAID6 corretamente. Como existe paridade dupla, deve ser possível identificar onde uma única corrupção é, se é dados ou paridade.

  1. O meu entendimento é correto, isso deveria ser possível na teoria?
  2. Se estiver correto, o mdadm poderá reparar esses dados inconsistentes sem adivinhar qual bloco está corrompido?
por Jack Douglas 16.06.2014 / 13:11

2 respostas

5

É possível em teoria: os dados + paridade dão a você três opiniões sobre o que os dados devem ser; se dois deles forem consistentes, você pode assumir que o terceiro é incorreto e reescrevê-lo com base nos dois primeiros.

O Linux RAID6 não faz isso. Em vez disso, sempre que houver uma incompatibilidade, os dois valores de paridade serão considerados incorretos e recalculados a partir dos valores de dados. Houve propostas para mudar para um sistema de "votação majoritária", mas não foi implementado.

O pacote mdadm inclui o utilitário raid6check que tenta descobrir quais disco é ruim no caso de uma incompatibilidade de paridade, mas tem algumas arestas, não é instalado por padrão e não corrige os erros encontrados.

    
por 19.04.2015 / 11:38
2

O utilitário raid6check de mdadm inclui um modo repair desde a versão 3.3 (lançada em 2013-09-03) (mais precisamente desde que este commit: link )

    
por 30.07.2018 / 14:18