![RAID1 복구 프로세스에서 불량 블록을 건너뜁니다.](https://linux55.com/image/158973/RAID1%20%EB%B3%B5%EA%B5%AC%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%97%90%EC%84%9C%20%EB%B6%88%EB%9F%89%20%EB%B8%94%EB%A1%9D%EC%9D%84%20%EA%B1%B4%EB%84%88%EB%9C%81%EB%8B%88%EB%8B%A4..png)
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가 아닌 실제 파일 시스템을 사용하는 것을 선호합니다. sda
RAID1 미러링 프로세스를 완료하기 위해 동기화 중에(일부 데이터가 손실될 수 있다고 가정하여) 이러한 블록을 건너뛸 수 있는 기회가 있습니까 ?
답변1
결국 badblocks -v -b 512 /dev/sdb > sdb-bads.log
.hdparm --write-sector
sdb
sda