Linux md 배열의 어떤 블록이 일치하지 않습니까?

Linux md 배열의 어떤 블록이 일치하지 않습니까?

이것은 앞으로ServerFault에 대해 질문했습니다.활동 부족으로 인해 자동 삭제됩니다. 여기에 더 나은 행운이 있기를 바랍니다 .

Linux에서 중복성을 갖춘 md 소프트웨어 RAID 어레이에 대해 "검사"(쓰기)를 수행한 후 check하위 시스템은 일치하지 않는 블록에 포함된 섹터 수로 가상 파일을 업데이트합니다./sys/class/block/md0/md/sync_actionmd/sys/class/block/md0/md/mismatch_cnt

불행하게도 어느 블록이나 섹터인지는 알 수 없습니다.

2개의 드라이브(예: sda 및 sdb의 md0)가 있는 RAID 1 어레이에서 다음을 수행할 수 있습니다.

blockdev --flushbufs /dev/md0 /dev/sda /dev/sdb
cmp -l /dev/sda /dev/sdb > sda-sdb.diff

어떤 바이트가 다른지 확인한 다음 섹터와 추가 정보(예: 파일 시스템이 존재하는 경우 어떤 파일이 영향을 받는지)를 내보냅니다.

하지만 다른 RAID 레벨에 대해서도 동일한 정보를 얻을 수 있는 방법이 있습니까? 예를 들어, 이 RAID10 어레이의 경우:

$ cat /sys/class/block/md0/md/mismatch_cnt
4608
$ cat /proc/mdstat
[...]
md0 : active raid10 sdd1[4] sdc1[3] sdb1[1] sda1[0]
      3906763776 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]

불일치가 있는지 어떻게 알 수 있나요 /dev/md0?

이 특정 예에서 알고리즘은 그리 복잡하지 않습니다. 이를 사용하여 mdadm -E장치에서 데이터가 시작되는 위치를 찾을 수 있습니다. 그런 다음 sda1은 sdb1과 동일하고 sdc1은 sdd1과 동일하며 /dev/md0의 첫 번째 블록 sda1과 sda2는 첫 번째 블록에서 발견되고, 두 번째 블록은 sdc1과 sdd1의 첫 번째 블록에서 발견되므로 한 쌍의 장치에서 바이트 차이의 오프셋이 주어지면 해당 오프셋을 찾는 것이 어렵지 않습니다. md 장치이지만 알고리즘을 수동으로 실행하는 것을 피할 수 있는 방법이 있기를 바랐습니다.

관련 정보