Como verificar / reparar um array RAID1?

0

Atualmente, estou usando uma matriz RAID-1 de software no linux, construída em cima de um HDD e um SSD. Tenho a strong impressão de que o SSD está falhando.

Eu gostaria de verificar o quão ruim o SSD está se comportando. Fiz uma verificação do array, com echo check > /sys/block/md1/md/sync_action e, quando foi concluído, dei uma olhada no conteúdo de /sys/block/md1/md/mismatch_cnt . Corri 3 vezes seguidas e obtive 3 resultados diferentes: 256, 128 e 384. O que me intriga é que a segunda corrida deu um resultado menor que o primeiro. Uma incompatibilidade foi corrigida?

Existe uma maneira de obter mais detalhes sobre as incompatibilidades detectadas? Pode ser interessante verificar se os blocos incompatíveis mudam ou se é sempre o mesmo. Eu também gostaria de dar uma olhada no conteúdo dos blocos incompatíveis, para ver se posso dizer qual deles está correto. (Por exemplo, se o SSD tiver zerado alguns blocos, ele não poderá ser relido.)

Além disso, vejo que há uma opção para repair uma matriz MD. Mas eu sou um pouco suspeito: como o kernel pode adivinhar qual dos blocos incompatíveis está correto?

    
por user2233709 13.07.2018 / 02:24

1 resposta

0

Bem… Lendo o código-fonte da função process_checks no arquivo drivers/md/raid1.c do linux 4.9.88, se eu o ler corretamente:

  1. Não há como fazer com que as operações de verificação ou reparo sejam detalhadas sobre onde as incompatibilidades são encontradas.
  2. Se uma falha de leitura encontrada durante uma operação de verificação ou reparo, o bloco com falha será reescrito.
  3. Se uma incompatibilidade for encontrada durante uma operação de reparo, ela será corrigida copiando o bloco do bloco “principal” (primeiro sem falha) para o (s) outro (s).

Portanto, não há como adivinhar quais blocos incompatíveis estão corretos; apenas leva o primeiro como correto. (Como eu li, mesmo que existam 3 componentes e o 2º e 3º tenham o mesmo conteúdo.)

    
por 16.07.2018 / 00:35