디스크의 배드 블럭(Bad Blocks) 을 진단하는 도구이지만, 검사 방식과 결과 해석이 다릅니다. 두 툴에서 나오는 카운트를 직접 비교하는 것은 적절치 않을 수 있으며, 보완적으로 해석하여야 합니다.
badblocks
- 현시점에서 직접 읽기/쓰기 실패가 있는 블럭을 찾음
- 검사방식 : 디스크 전체를 직접 읽고 쓰며 확인
- 배드블록감지 : 실제 I/O를 통해 감지
- 검사시간 : 매우오래걸림(특히 쓰기모드)
- 데이터 손상위험 : 있음(쓰기 검사시)
- 주용도 : 수동 오류검사, 불량 영역 직접확인
badblocks -sv /dev/sda
- 숫자로 된 불량 블록 번호 리스트를 출력
- OS 레벨에서 직접 감지한 I/O 실패이며, 실제 불량이 있을 가능성이 높음
- 디스크가 자동으로 재할당(sector remapping)을 한 경우는 감지되지 않을 수 있음
smartctl(S.M.A.R.T.)
- 과거 및 현재 디스크 내부 상태 기반으로 향후 위험을 예측
- 검사방식 : 디스크 내부 펌웨어가 자체 진단한 정보
- 배드블록감지 : 내부 오류 통계 기반(예: 재할당된 섹터 수등)
- 검사시간 : 빠름(정보조회)
- 데이터 손상위험 : 없음
- 주용도 : 예측, 지속적인 상태 모니터링
smartctl -A /dev/sda
- ID 5 Reallocated_Sector_Ct 재할당된 섹터수(물리적 배드 블럭)
- ID 197 Current_Pending_Sector 재할당 대기 중인 섹터(읽기 실패 발생한 블럭)
- ID 198 Offline_Uncorrectable 오프라인 검사 중 복구 불가능한 블럭
- 해당 항목들이 0이 아니면 물리적 손상이나 예비 고장이 발생하고 있다는 신호입니다.
Reallocated_Sector_Ct / 재할당 프로세스
- 디스크 펌웨어(S.M.A.R.T. 시스템 포함)가 읽기 또는 쓰기 실패를 감지합니다.
- 해당 섹터를 "사용 불가(bad)"로 표시합니다.
- 디스크는 "스페어(예비)" 섹터를 내부적으로 가지고 있습니다.
- 이 스페어 섹터를 사용해 손상된 섹터의 위치를 대체합니다. → 재할당 (Reallocation)
- 그 후, 디스크는 새로운 위치를 사용하고 기존 위치는 무시합니다.
- RAW_VALUE 값을 재할당된 물릭적인 섹터를 나타내며 이수치는 누적되며 줄어들지 않는다.
Reallocated_Sector_Ct > 0 이라는 것은 디스크가 이미 물리적 손상이 발생한 상태이며, 디스크 자체가 자동으로 문제를 봉합 중이라는 뜻입니다.
이 재할당은 무한정 가능한 게 아니며, 예비 섹터가 소진되거나 더 큰 문제가 생기면 데이터 손실이 발생할 수 있습니다.
따라서 이 값이 계속 증가한다면 정상 동작 중인 것처럼 보여도 디스크는 위험한 상태입니다.