Reparo de incompatibilidade de depuração RAID6?

Reparo de incompatibilidade de depuração RAID6?

Você pode iniciar uma limpeza de um array mdadm com echo 'check' > /sys/block/mdX/md/sync_actione, se um setor defeituoso for encontrado, ele iráreescreva-o automaticamente(de um espelho ou de informações de paridade para RAID5/6).

Contudo setodos os blocos foram lidos com sucesso, mas não são consistentes, então isso é considerado uma incompatibilidade. Neste caso, o reparo é complicado porque o mdadm não consegue dizer qual espelho contém os dados corretos (RAID1/10) ou se são dados ou paridade que estão corrompidos (RAID5).

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

  1. Meu entendimento está correto, isso deveria ser possível em teoria?
  2. Se correto, o mdadm é capaz de reparar esses dados inconsistentes sem adivinhar qual bloco está corrompido?

Responder1

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

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 dos dados. Houve propostas para mudar para um sistema de “votação por maioria”, mas ele não foi implementado.

O mdadmpacote inclui outilitário raid6checkque tenta descobrir qual disco está com defeito no caso de incompatibilidade de paridade, mas tem algumas arestas, não é instalado por padrão e não corrige os erros que encontra.

Responder2

O raid6checkutilitário from mdadminclui um repairmodo desde a versão 3.3 (lançada em 03/09/2013) (mais precisamente desde este commit:https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=8a63c73123b9d022107c82bd684e17bf87bc081e)

informação relacionada