I/O 오류가 발생했지만 배드블록을 실행한 후 모든 것이 정상으로 돌아갑니다. 이것이 어떻게 가능합니까?

I/O 오류가 발생했지만 배드블록을 실행한 후 모든 것이 정상으로 돌아갑니다. 이것이 어떻게 가능합니까?

너무 오래;

하드 드라이브가 손상된 것 같습니다. mkfs.ext4새로 생성된 GPT 테이블이 있어도 파티션을 포맷할 수 없습니다( I/O 오류). SMART 테스트에서는 몇 가지 오류가 표시됩니다. 디스크를 버리려고 했어요. 그 전에는 badblocks호기심에 철저한 테스트를 해봤습니다 . 매우 놀랍습니다. 불량 블록을 감지하지 못했습니다! GParted로 돌아가서 GPT 테이블과 여러 파티션이 생성되었습니다. 이제 모든 것이 잘 작동합니다! 당신은 무엇을 했나요 badblocks?

전체 이야기

방금 무슨 일이 일어났는지 알아내려고 노력 중입니다. HDD에 파티션을 만들 수 없어서 HDD를 버리려고 했는데 SMART에서 몇 가지 오류가 표시되었습니다. 디스크를 버리기 전에 그냥 가지고 놀고 싶었는데 badblocks…큰 놀라움: badblocks디스크가 고친 것 같습니다! 나는 그것이 그렇게 할 수 있는지조차 몰랐습니다! 그래서 이제 실제로 디스크를 사용할 수 있고 잘 작동할 수 있어서 행복합니다. 하지만 여전히 방금 무슨 일이 일어났는지 알아내려고 노력 중입니다!

이것은 제가 몇 년 동안 사용하지 않은 4TB Seagate 하드 드라이브입니다. SATA ← USB 어댑터에 연결했습니다(어댑터는 잘 작동하고 다른 여러 HDD와 함께 사용합니다). Wirh GParted 새 GPT 파티션 테이블을 만든 다음 파티션을 만들었습니다. 끝까지 진행할 수 없습니다. mkfs.ext4I/O 오류가 발생했습니다.

(...)
Allocating group tables: done
Writing inode tables: done
Creating journal (131072 blocks): done
Writing superblocks and filesystem accounting information: 0/895
mke2fs 1.46.2 (28-Feb-2021)
mkfs.ext4: Input/output error while writing out and closing file system

다른 USB 어댑터, 다른 USB 케이블, 다른 USB 포트를 사용하여 여러 번 시도했습니다. 일한 적이 없습니다.

그런 다음 SMART 간단한 테스트를 수행했습니다.

# smartctl -t short -C /dev/sde
(...)

# smartctl -a /dev/sde
(...)
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short captive       Completed: read failure       90%       528         191105024
(...)

아무래도 하드 드라이브에 결함이 있는 것 같습니다. 그렇죠? 그래서 버리려고 했는데, badblocks전에 테스트를 해봤습니다.

# badblocks -wvs -t random -b 4096 /dev/sde
Checking for bad blocks in read-write mode
From block 0 to 976754645
Testing with random pattern: done                                                 
Reading and comparing: done                                                 
Pass completed, 0 bad blocks found. (0/0/0 errors)

테스트는 오류 없이 약 19시간(4TB 디스크 기준) 동안 진행됐다. 놀랐어요!

GParted로 돌아가서 새 GPT 테이블과 일부 파티션을 만들었고 모든 것이 정상이었습니다.

결국 디스크 성능을 확인하기 위해 몇 가지 일반적인 복사 테스트를 수행했고 모든 것이 괜찮아 보였습니다(대용량 파일 복사 시 155MB/s R/W).

completed without error이번에는 또 다른 SMART 짧은 테스트를 수행했습니다 .

# smartctl -t short -C /dev/sde
(...)

# smartctl -a /dev/sde
(...)
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short captive       Completed without error       00%       549         -
# 2  Short captive       Completed: read failure       90%       528         191105024
(...)

누구든지 이해할 수 있습니까? 달리는 것이 badblocks어떻게든 내 하드 드라이브를 수리한 것과 같습니다 . 어떻게 이럴 수있어? 이런 badblocks일도 해야 할까요?

참고: 필요한 경우 추가 정보(전체 SMART 출력 및 전체 GParted 결과)를 제공할 수 있습니다.

답변1

예, badblocks이러한 효과가 발생할 수 있습니다. 실제로는 의도적으로 설계된 것이 아니지만 하드 드라이브는 결함이 있는 블록을 다시 매핑할 수 있고 쓰기 중에 결함이 있는 블록을 발견할 때 그렇게 할 수 있기 때문입니다(데이터가 손실될 수 없으므로). 드라이브 에는 액세스 가능한 모든 섹터에 기록하여 이를 수행할 수 있는 충분한 기회가 제공됩니다 badblocks. 드라이브에 실패한 모든 블록을 다시 매핑할 수 있는 충분한 여유 용량이 있으면 badblocks문제가 발견되지 않습니다.

smartctl -a드라이브에서 이를 실행 하면 "재할당된 섹터 수"(속성 5)가 0이 아닌 것을 볼 수 있습니다. 이는 섹터가 다시 매핑되었음을 나타냅니다.

현재는 드라이브가 제대로 작동할 수 있지만 이는 드라이브에 문제가 있음을 의미하므로 스토리지의 일부에 오류가 발생하면 가까운 시일 내에 더 많은 드라이브에 오류가 발생할 수 있으므로 의심해야 합니다.

당신은 또한 볼 수 있습니다SSD: "불량 블록"/"e2fsck -c" 대 재할당/재매핑된 섹터.

관련 정보