RAID6 스크럽 불일치 수정?

RAID6 스크럽 불일치 수정?

다음 명령을 사용하여 mdadm 배열 정리를 시작할 수 echo 'check' > /sys/block/mdX/md/sync_action있으며 불량 섹터가 발견되면자동 재작성(미러링 또는 RAID5/6의 패리티 정보)

그러나 만일성공적으로 읽었지만 일관성이 없는 것으로 확인된 모든 블록은 불일치로 간주됩니다.. 이 경우 mdadm은 어느 미러에 올바른 데이터가 포함되어 있는지(RAID1/10) 또는 데이터나 패리티가 손상되었는지(RAID5) 알 수 없기 때문에 복구가 복잡합니다.

이론적으로 RAID6에 대한 나의 이해가 정확하다면 RAID6에서는 이런 일이 발생해서는 안 됩니다. 이중 패리티가 있으므로 데이터이든 패리티이든 단일 손상 위치를 정확히 찾아내는 것이 가능해야 합니다.

  1. 내 이해가 정확하고 이것이 이론적으로 가능해야 합니까?
  2. 맞다면 어떤 블록이 손상되었는지 추측할 필요 없이 mdadm이 이러한 불일치 데이터를 수정할 수 있습니까?

답변1

이론적으로는 가능합니다. 데이터 + 패리티는 데이터가 어떠해야 하는지에 대한 세 가지 의견을 제공합니다. 둘 중 두 개가 동의하면 세 번째가 잘못되었다고 가정하고 처음 두 개를 기반으로 다시 작성할 수 있습니다.

Linux RAID6은 이 작업을 수행하지 않습니다. 대신 불일치가 발생할 때마다 두 패리티 값이 모두 잘못된 것으로 가정하고 데이터 값을 기반으로 다시 계산합니다. '과반수 투표' 제도로 변경하자는 제안도 있었지만 아직 시행되지는 않았습니다.

키트 mdadm에는 다음이 포함됩니다.raid6check 유틸리티패리티 불일치가 발생한 경우 어떤 디스크가 불량인지 파악하려고 시도하지만 가장자리가 다소 거칠고 기본적으로 설치되지 않으며 발견된 오류를 수정할 수 없습니다.

답변2

raid6check유틸리티 에는 버전 3.3(2013년 9월 3일 출시)의 패턴이 mdadm포함되어 있습니다 (보다 정확하게는 이 커밋 이후).repairhttps://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=8a63c73123b9d022107c82bd684e17bf87bc081e)

관련 정보