불량 섹터

컴퓨터 하드 디스크의 표면에 물리적인 손상이 발생하거나 플래시 메모리의 트랜지스터가 고장나는 등의 원인으로 하드 디스크나 플래시 메모리의 어떤 섹터를 읽을 수도 없고 쓸 수도 없을 때에 이를 불량 섹터, 또는 배드 섹터()라고 한다. 마이크로소프트의 CHKDSK나 스캔디스크, 유닉스 계열의 badblocks 같은 디스크 유틸리티 소프트웨어를 사용하여 불량 섹터를 검출할 수 있다. 이런 프로그램들은 불량 섹터가 발견되면 그 섹터를 사용 불가로 표시하여(대부분의 파일 시스템은 '불량'으로 표시할 수 있는 기능이 있다) 이후에 운영 체제가 그 부분을 사용하지 않고 건너 뛸 수 있도록 해 준다.

디스크 유틸리티가 불량 섹터를 표시할 때에 그 섹터를 이미 어떤 파일에서 사용하고 있었다면, 그 섹터는 비어있는 다른 섹터로 다시 매핑되며, 읽을 수 없는 모든 데이터는 날아간다. 불량 섹터가 발견되면 불량으로 표시하기에 앞서 OS는 파일 손상을 피하기 위해 파일 시스템 레벨의 데이터 복구 방법을 수행해야 한다.

디스크 콘트롤러의 펌웨어에서 어떤 섹터가 불량이거나 불안정하다고 판단하면, 디스크 콘트롤러는 그 논리 섹터를 다른 물리 섹터로 매핑한다. 하드 디스크가 정상적으로 동작중인 경우에는 불량 섹터의 검출과 재 매핑이 시스템의 다른 부분에서는 알 수 없도록 자체적으로 이루어지며, 데이터가 손실되지 않는다. 그러나 하드 디스크에 물리적인 손상이 생기면 데이터가 저장된 한 영역에만 영향을 주지 않는다. 물리적인 손상은 여러 파일에 걸쳐 영향을 주는 경우가 매우 많다.

디스크 하드웨어를 재 매핑하는 데는 두 가지 종류가 있다. 공장에서 생산 시험시 하는 P-LIST와 사용자가 사용하는 동안 디스크의 마이크로코드로 매핑하는 G-LIST이다.

S.M.A.R.T.(Self-Monitoring, Analysis, and Reporting Technology) 정보를 읽을 수 있는 여러 가지 유틸리티가 나와있는데, 그것을 보면 몇 개의 섹터가 재배치 되었는지, 예비용 섹터가 몇 개나 남았는지 알 수 있다. G-LIST 섹터를 액세스할 때에는 자동적으로 예비용 섹터로 건너뛰게 되므로 디스크 단편화 제거를 한 상태라 하더라도 드라이브 액세스 속도가 느려진다. G-LIST가 꽉 차면 드라이브를 교체해야 한다.

섹터가 자동으로 재 매핑되는 동작은 보통 쓸 때에만 일어난다. 읽을 때 발생하는 오류는 데이터 복구 방법으로 해결할 수 있다고 보기 때문이다. 어떤 섹터가 불량이란 걸 알고 있었는데 디스크 콘트롤러가 그 섹터에 뭔가를 덮어쓰라는 명령을 받으면, 예비용 섹터 영역 중의 하나로 그 섹터를 재 매핑한다. 그러므로 모든 불량 섹터가 재 매핑되기까지는 계속적으로 섹터 오류(대개는 디스크 콘트롤러 타임아웃)가 발생한다. 보통 이것을 해결하기 위해 전체 디스크에 0을 쓴다.

각주 

하드 디스크 드라이브
비휘발성 메모리