RAID1 복구 프로세스에서 불량 블록을 건너뜁니다.

RAID1 복구 프로세스에서 불량 블록을 건너뜁니다.

RAID1 어레이가 있는데 디스크 중 하나가 약간 손상되었습니다 /dev/sdb. /dev/sda미러링을 위해 새 HDD를 어레이에 넣었습니다 (그런 다음 새 HDD로 sdb교체하겠습니다 ).sdb

# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sda2[2] sdb2[1]
      999872 blocks super 1.2 [2/2] [UU]

md1 : active raid1 sda3[2] sdb3[1]
      1952380736 blocks super 1.2 [2/1] [_U]
      [>....................]  recovery =  2.7% (53083136/1952380736) finish=640.0min speed=49453K/sec

unused devices: <none>

그러나 이 "복구" 프로세스는 약 30%에서 멈춥니다.

# cat /proc/mdstat 
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sda2[2] sdb2[1]
      999872 blocks super 1.2 [2/2] [UU]

md1 : active raid1 sda3[2](S) sdb3[1]
      1952380736 blocks super 1.2 [2/1] [_U]

unused devices: <none>

여기서 문제는 /dev/sdb약 100개의 불량 블록(발견에 사용됨 badblocks -v -b 512 /dev/sdb > sdb-bads.log)이 있다는 것입니다. 읽기/쓰기가 불가능합니다:

# tail -n 2 sdb-bads.log
1039341414
1039341415

# dd if=/dev/sdb of=/dev/null bs=512 skip=1039341414 count=1
dd: error reading '/dev/sdb': Input/output error
0+0 records in
0+0 records out
0 bytes copied, 9.33531 s, 0.0 kB/s

# dd if=/dev/sdb of=/dev/null bs=512 skip=1039341415 count=1
dd: error reading '/dev/sdb': Input/output error
0+0 records in
0+0 records out
0 bytes copied, 3.36192 s, 0.0 kB/s

내 질문은 다음과 같습니다

  • 영향을 받은 파일을 찾는 것이 가능합니까(RAID1이라고 가정)? 내가 이해한 바에 따르면 도구는 debugfs가상 RAID가 아닌 실제 파일 시스템을 사용하는 것을 선호합니다.
  • sdaRAID1 미러링 프로세스를 완료하기 위해 동기화 중에(일부 데이터가 손실될 수 있다고 가정하여) 이러한 블록을 건너뛸 수 있는 기회가 있습니까 ?

답변1

결국 badblocks -v -b 512 /dev/sdb > sdb-bads.log.hdparm --write-sectorsdbsda

관련 정보