1. 개요
배드 섹터(Bad Sector) 또는 불량 섹터는 HDD의 섹터가 물리적 또는 논리적으로 손상을 입어 제대로 판독할 수 없는 현상 또는 해당 섹터를 말한다. 일부 배드 섹터는 증식도 하기에 HDD의 입장에서는 암 세포 같은 존재다. 전축을 너무 많이 읽어서 그 부분에서 잡음이 나는 것과 원리 상으로 다를 게 없다. 생명체로 보면 노환이다.2. 관찰되는 현상
- 파일 복사 같은 파일 작업을 하다 속도가 느려지거나 오류가 난다. 특히 여러 파일을 복사하거나 백업 도중 계속 같은 위치나 파일에서 멈추거나 CRC 오류가 난다면 의심해 볼 수 있다.
- 작업 중 마우스가 멈추는 등 잠깐씩 느려지거나 반응이 없다가 복구된다.
- HDD에서 평소에 들리지 않던 괴음이 들린다. 이때 화면이 나가는 등의 현상을 겸하는 경우도 있다. 일부 HDD들은 비프음을 내기도 한다.
- 배드섹터 진단 프로그램 등으로 진단을 시도할 때 마찬가지로 멈춘다.
- FAT 파티션의 경우 분명히 포맷을 했는데 사용 중인 공간이 있다면 배드섹터 발생을 의심해 볼 필요가 있다. NTFS의 경우는 MFT 영역으로 사용할 공간을 할당하기 때문에 포맷을 해도 몇십 MB의 사용중인 공간이 발생한다. 그래도 찜찜하다면 배드섹터 진단 프로그램을 돌려보자. 물론 무참히 깨져나가는 시간들은 감수해야 한다.[1]
운영체제나 프로그램이 설치된 HDD에 문제가 있는 경우라면 다음과 같은 현상을 겪을 수 있다.
- 컴퓨터를 사용하다 갑자기 멈추는가 싶더니 멈춰버린다. 그리고 HDD 액세스 등은 계속 켜져있다. 이 같은 경우는 간혹 원래대로 돌아오기도 한다.
- 부팅을 거부한다.
- 블루스크린이 발생할 때의 오류코드가 0x0000007a[2][3]이거나 0x00000154[4] 두번째 파라미터가 0x9c이다.
3. 원인
크게 두 가지 원인으로 나뉜다. 외부 충격 또는 불량 등 하드웨어에 문제가 발생하거나, 악성코드 등의 소프트웨어에 의해 발생하는 경우다. 전자를 물리적 배드섹터라고 하고 후자를 논리적 배드섹터라고 한다.3.1. 물리적인 경우
- HDD의 핵심 부품인 플래터의 일정 부분이 충격을 받거나 노화로 파손된 때에 헤드가 이 섹터를 지나면 변형을 일으켜 손상되지 않은 플래터까지 계속 손상시킨다. 배드섹터가 증식을 하는 건 이 경우에 해당한다.
- HDD에 충격이 가면서 헤드가 플래터를 긁은 경우. 헤드는 매우 빠른 속도로 자기(磁氣) 디스크 위를 스캔하며 데이터를 읽어들인다. 근데 이때 큰 충격이 가면 흠집이 나고, 이게 배드섹터가 된다. 이 경우는 컴퓨터가 꺼져있을 때보다 켜져있을 때 더 많이 일어난다. 당연히 컴퓨터가 느리다고 본체를 때리는 것도 이 "충격"에 포함된다.
- 묻지마 파워 등 불량 파워 서플라이를 사용해도 발생할 수 있다. 보통 이런 파워들은 전압이나 전류를 불규칙적으로 HDD에 공급하기 때문이다.
- HDD를 제대로 고정하지 않은 상태에서 오랫동안 사용하면 장기간 진동에 따른 누적 데미지에 따라 발생하기 시작할 수 있다.
- HDD를 삐딱하게 고정하고 장시간 사용해도 발생할 수 있다. 원래 HDD는 가로로 눕혀서 고정하거나 90도 각도로 세워서 장착하면 문제가 전혀 없지만, 45도 각도로 기울여서 놓는다든지 기울이면 장시간 동작시 성능을 보장할 수 없다.
- 섹터를 나누는 구획의 자성이 잘못된 경우. 즉, 플래터 표면에는 문제가 없고 섹터 구획상의 자기적 결함으로 인해 해당 섹터를 인식하지 못하는 상태.
- 생산 과정에서 결함(먼지유입, 조립불량)도 원인이 될수가 있다. 예로는 태국 홍수 이후 생산분에서 불량율이 꽤 많이 나왔다.
미미해보이는 충격도 의외로 HDD에 상당한 손상을 준다는 것을 알 수 있는데, 이는 HDD가 작동하지 않을 때 견디는 한계인 300G가 고작 3cm 높이에서 딱딱한 바닥에 떨어졌을 때와 같다는 것을 감안하면 어찌 보면 당연한 이야기다.
3.2. 논리적인 경우
- 악성코드가 배드섹터를 생성하는 경우.[5] 이런 형태는 논리적 배드섹터이기에 파티션을 날린 다음 제로필 포맷해주면 없앨 수 있다. 아니면 그냥 쉽게 백신으로 점검해주면 치료 가능한 경우도 있다.
- 소프트웨어가 꼬인 경우. 몇몇 프로그램, 특히 비트토렌트를 잘못된 설정으로 사용하거나[6] 별로 좋지 않은 백신[7]을 사용하는 경우 등에 파일이 깨지면서 매우 낮은 확률로 배드섹터 판정이 난다.
- 컴퓨터를 강제 종료한 경우, 또는 USB 메모리를 안전 제거하지 않고 그냥 뽑는 경우. 이런 일을 하고 나면 컴퓨터가 디스크 검사를 하겠다고 하는 것도 이 때문이다. NTFS의 경우는 FAT 파일 시스템에 비해 좀 더 안전하기는 하지만 이런 일이 반복되다 보면 파일시스템 자체가 깨지는 경우도 있다. 또, FAT의 구조가 좀 더 단순하기 때문에 속도와 저장공간의 측면에서 USB 메모리에는 FAT로 포맷되어 있는 경우가 많으므로 USB는 좀 더 조심하는 것이 좋다.
- 아주 희귀한 예시로 윈도우98에서 고용량의 하드(지원 크기 이상의 하드)를 포맷하다가 배드섹터가 생기는 경우도 있다. 이 경우 fdisk의 버그로 생긴 것 이기 때문에 fdisk를 업데이트 하거나 지원 크기 이하로 파티션 분할을 해 주면 된다.
4. 비슷한 증상이 나오지만 배드 섹터가 아닌 경우
파일 전송 속도가 느려지거나 오류가 나는데, HDD 배드 섹터 문제가 아닌 경우가 있다. 이 경우는 전송 계통에 문제가 생긴 것으로, 메인보드의 칩셋이나 커넥터, 케이블 등에 문제가 있을 수도 있다. 이 경우는 증상이 다른데, 배드 섹터의 경우에는 오류 위치가 고정되어 있지만 전송 계통의 문제는 오류 위치가 계속 바뀐다. 파일 하나를 복사하다 실패한 뒤에 다시 시도해서 성공하는 경우에는 배드 섹터보다는 이쪽을 먼저 의심해봐야 한다. Crystal disk info 같은 SMART 프로그램에서는 울트라 DMA CRC오류의 카운트 횟수가 증가하기도 한다.가장 흔한 원인으로는 데이터 케이블 관련 불량이 있다. 전송 케이블이 SATA로 거의 바뀐 시점에서는 많이 사라진 일이지만, 옛날 80선짜리 병렬 케이블을 쓰던 시절에는 케이블의 내구도가 낮으며, 거대한 케이블 크기 때문에 접어서 선정리를 하는 일이 많아서 이런일이 자주 발생했다. 물론 SATA도 케이블을 잘못 만들면 이런 일이 발생하므로, 케이블도 다른 걸로 바꿔보자. 또한, 선정리를 할때 마치 스프링 마냥 배배 꼬거나 접는 행위도 자제해야한다.
기록 방식에 의한 속도저하도 있다. CMR 기록 HDD는 괜찮지만 SMR 기록 HDD는 일정 용량이 차게되면 속도가 반토막 나거나, 저하가 엄청나게 일어난다.
이는 SMR 기록의 특성이므로 불량이 아니다. SMR 하드는 TRIM기능이 있어서 파일을 자주 지우거나 디스크 조각 모음을 하면 안 된다. 해결하려면 로우레벨 포맷 후 재사용 하면 된다.
5. 관리법과 해결 방법
5.1. 내부 데이터 관리법
배드섹터가 발생한 때에 플래터가 깨진 물리적 배드섹터이면 그 영역이 계속 확대되기 때문에 발생이 확인된 즉시 데이터를 안전한 곳에 백업해두자. 이러면 HDD는 버려도 데이터는 나중에 백업한 만큼 살린다. 하지만 영역이 확대되지 않는 경우도 존재한다.- 논리적 배드섹터이면 복구를 해 주는 프로그램도 있다.
- 물리적 배드섹터라 하더라도, 플래터가 깨진 게 아닌 단순한 자기장의 오류에 따라 생기는 배드섹터가 꽤 있다. 이 경우에는 치료/복구를 하기가 어렵지만 적어도 번지지는 않는다. 하지만 물리적 배드섹터일 때 사용자가 구분하는 것은 거의 불가능하므로 일단 배드섹터 복구 프로그램이 복구하지 못하고 메꾸기만 하면 백업을 해두는 것이 안전하다. 60% 정도의 물리적 배드섹터가 이 경우이다.
5.2. 검사 및 해결 방법
논리적 배드인지 물리적 배드 쪽의 문제인지 확인이 필요하다면 명령 프롬프트(CMD)를 관리자 권한으로 실행해서 chkdsk[8]를 돌려야하는데 chkdsk c: /scan (C드라이브 예시) 엔터키를 누르고 기다리면 chkdsk c: /f를 해야할지 chkdsk c: /f /r 해야할지 알려주는데 전자는 파일 시스템 오류 수정, 후자는 물리적 충격 포함 파일 복구다.배드섹터의 유무 자체는 CrystalDiskInfo 같은 HDD의 S.M.A.R.T 정보를 볼 수 있는 프로그램을 돌려보면 알 수 있다. CrystalDiskInfo 기준으로 "현재 보류 중인 섹터 수(Current Pending Sector Count)"가 논리 배드섹터, "수정 불가능 섹터 수(Uncorrectable Sector Count)"가 물리 배드섹터를 의미한다. 여기에 "주의" 표시가 뜬다면 배드 섹터가 있다는 뜻이다. 단 S.M.A.R.T 정보는 배드섹터의 유무만 알려줄 뿐, 위치를 알려주지 못한다. 위치를 알고 조치를 취하려면 아래에 있는 프로그램들을 써야 한다.
논리적 배드섹터라 하더라도 수리가 어렵고, 물리적 배드섹터는 아예 답이 없지만, 배드섹터의 영향을 어느정도 무마하는 것은 가능하다. 개인의 경우 프로그램을 사용해 배드섹터를 잡을 수 있는데, 대표적인 프로그램이 상용 프로그램인 HD Tune, HDD Regenerator 등으로 배드섹터에 "이거 배드섹터임" 하고 표기를 해두는 것으로 해당 배드섹터로 인해 문제가 확산되지 않도록 막을 수 있다. 논리적 배드섹터로 인한 문제라면 어느정도 방지할 수 있고, 물리적 배드섹터도 해당 섹터를 피해가는 것으로 무마할 수준이면 어느정도 효과를 볼 수 있다.
논리적 배드섹터 자체를 고치기 위해서는 Drevitalize 같은 전문적인 상용 유틸리티의 도움이 필요하다. 공식 홈페이지 이런 유틸리티들은 논리적 배드섹터를 직접적으로 수리할 수 있다. 물론, 수리가 된다는 보장은 없고, 물리적 배드섹터는 근본적인 해결이 불가능하기 때문에, 언제까지나 임시방편이라 생각하자.
근본적인 해답은 언제나 백업이다. 하지만, 미처 백업되지 못한 내용이 있다면 최대한 빨리 백업해두도록 하자. "이거 배드섹터임!" 하고 표기해서 피해다녀도, 물리적 배드섹터가 계속 늘어나면서 결국 HDD가 완전히 먹통이 되는 상황이 올 수 있다. 일반 사용자에게는 새로 사는게 유틸리티 값 보다 싸니, 그냥 소모품임을 받아들이자.
윈도우즈 내장 유틸리티인 chkdsk에도 배드섹터 검사와 제한적인 복구 기능이 붙어 있다. 각 옵션에 따라 작동하는 방식이 다르므로 이는 여기를 참고 해보길 바란다. 관련 옵션을 준 경우,(chkdsk <해당 디스크> /f) 배드섹터가 발견된 경우 해당 섹터가 오류난 섹터임을 표기하고, 논리적 배드섹터의 경우 가능하다면 오류를 수정한다. 다만, 이 내장 툴로는 논리적 배드섹터를 고치더라도 읽을 수 없는 파일을 읽게 해주는 수준에 그친다. 동영상의 경우를 예를 들자면, 해당 데이터가 있는 섹터가 논리적 배드섹터가 되어버린걸 복구했을 때, 화면이 부분적으로 깨져서 나오거나 소리가 깨져서 나오지만 어쨌든 일부분이라도 재생이 가능은 해지는 식. 사람으로 치면 다리가 잘려나갔을 때, 대충 목발을 대놓고 '이제 괜찮지?' 히면서 퇴원시키는 것과 비슷하다고 할 수 있다.
이 chkdsk의 배드섹터 복구 기능은 정말 주의해서 써야하는데, 복구하다 삐긋나서 소중한 파일들이 증발해 버리는 눈물나는 경험을 겪을 수 있다. 경미한 오류는 알아서 복구해주지만, 파일 테이블이 어긋나거나 디렉토리 주소가 정확하지 않는 등의, 내버려두면 여지없이 블루스크린이 나오게 하는 논리 배드섹터의 경우 얄짤없이 쳐내고 Found.000식의 숨겨진 폴더를 만든 뒤 chk파일로 저장하는데, 운없으면 chk로 변환도 안되고 삭제되어 버린다. 이 경우 Recuva나 EaseUS같은 데이터 복구 프로그램을 써야만 한다. 소중한 자료들을 당장 복구해야 하더라도, chkdsk를 쓰기 전에 무조건 남아 있는 것 부터 미리 백업해놓아야 한다.
이론적으론 로우 레벨 포맷으로 섹터를 전부 엎어버리면 논리적 배드섹터를 제거할 수 있지만, 이걸 돌리다가 오히려 물리적 배드섹터가 속출하는 긁어 부스럼이 될 수 있으며, 요즘 HDD 규격은 로우 레벨 포맷을 지원하지도 않는다. 이런 이유로 요즘 나오는 HDD들은 로우 레벨 포맷 명령이 들어오면 OK로 응답해서 무시해버리거나, 아니면 하이 레벨 포맷 비슷하게 제로필을 해버리고 로우 레벨 포맷을 한 것으로 퉁처버린다. 로우 레벨 포맷 자체가 사실상 공장 초기화인데 HDD란 물건이 그걸 버틸 정도로 튼튼한 물건이 아니다. 요즘 HDD에서 물리적 배드섹터를 오류 표기하고도 문제가 생긴다면 그 HDD는 그냥 수명이 다한 것으로 치는게 맞다.
배드섹터가 발생한 섹터와 그 근처의 섹터를 피해 파티션을 다시 만들어 사용하는 경우도 있다. 이 경우 해당 영역만큼의 공간은 잃지만, 그러지 않는 만큼은 건진다. 요즘은 HDD 가격이 워낙 저렴해 젔기 때문에 굳이 이럴 필요가 없어젔지만.
물리적 배드섹터는 근본적인 수리가 불가능하기 때문에 그냥 HDD를 교체하는 것 만이 해답이다. 품질 보증 기간 내라면 무료로 교체받을 수도 있다. 물론, 교체하기 전에 데이터 백업을 최대한 해두자. 다만, 워런티를 통해서 교체 받는 HDD는 대부분 다른 사용자가 맡긴 고장난 HDD를 리퍼비시한 제품이, 한편 개봉한 HDD는 설령 수리가 클린룸에서 했더라도 미개봉 HDD에 비해서 다시 고장날 확률이 엄청나게 높아지니, 결국 새로 구입하는 것만이 해답.
모든 문제들이 그렇듯 예방이 최선이다. 동작 중인 HDD는 옮기거나 충격을 줘선 절대로 안되고, 규격나사를 사용해 케이스에 튼튼하게 고정해주는 것도 예방법의 하나다. SSD는 물리적 배드섹터가 발생할 확률이 극히 낮지만, 정전기 치명타 한방 잘못 맞으면 그냥 훅 가버리니 결국 대책은 백업 하나뿐이다. 중요 파일들을 다른 디스크에 옮겨두고 로우레벨 포맷을 해본 뒤 그래도 배드섹터가 나온다면 하드를 폐기하는게 낫다고 보면 된다.
5.3. 실제 확인법
현재의 HDD는 자체적으로 예비 영역을 두고 배드섹터가 생기면 예비 영역으로 대체하여 외부(운영체제)에서는 이를 신경쓰지 않고 이용할 수 있게 하고 있기 때문에 윈도우즈 체크디스크에서 배드섹터가 생겼다는 메시지를 볼 일은 거의 없다. 만약 체크디스크에서 배드섹터가 있다고 나오면 바이러스나 시스템 오류 등 논리적인 문제인 가능성이 크지만, 그렇지 않고 예비 영역이 다 떨어질 만큼 많은 배드섹터가 생겼을 수도 있다.이를 확인하기 위해서는 프로그램으로 HDD의 S.M.A.R.T.(Self-Monitoring, Analysis and Reporting Technology)정보를 보면 되는데, 항목 중 '현재 치환 예정인 섹터 수[9]/Current Pending Sector Count'와 '고칠 수 없는 섹터 수[10]/Off-Line Uncorrectable Sector Count'(프로그램 및 제조사에 따라 항목이 다를 수 있다.)와 같은 항목이 있는데, 전자가 '읽기/쓰기가 잘 안된 적이 있어서 만약 문제가 더 생기면 배드섹터로 체크하려고 대기하는 섹터 수', 후자가 '얄짤없이 배드섹터'를 뜻한다. 특히 이 중 후자의 수치가 중요한데, 만약 이 수치가 너무 크거나(한 수십~수백 이상), 작더라도 시간이 지날수록 점점 커진다면 HDD를 새것으로 교체해야 한다. 특히 수치가 점점 커지고 있다면 배드섹터가 HDD 내의 다른 멀쩡한 부분까지 손상시키고 있다는 뜻이니 반드시 이 글을 읽은 순간 바로 지체 없이 모든 데이터를 백업하고 HDD를 교체해야 한다. 놔뒀다가는 어느 날 데이터를 못 읽게 될 수 있다.
6. 여담
원리가 똑같은 플로피 디스크에서도 배드섹터는 발생한다. HDD에 비해 전염(?)은 잘 되지 않지만 애시당초 용량이 작다보니 1KB의 배드섹터 하나가 크게 느껴지는 편. 또 플래시 메모리 기반의 SSD나 USB 메모리에서도 배드섹터가 발생할 수 있다. 플래시 메모리에 생긴 배드섹터를 보통 '배드 셀'이라 부르고 있다. 단, 이러한 경우는 드물고 발생했다 하더라도 초기불량이거나 정전기 혹은 낸드 수명이 다 되어서 생긴 것이므로, 초기불량이거나 보증기간 내 불량인 경우 새것으로 교환받으면 된다.배드섹터는 아니지만 잘 읽히지 않는 섹터를 마지널 섹터 또는 마지널 블록이라고 부르기도 한다.(배드섹터만큼 흔히 사용되는 표현은 아니다.) 이러한 섹터는 읽히긴 하지만 시간이 오래 걸릴 수 있으며 배드섹터가 되는 경우도 있다. SMART에서 '현재 치환 예정인 섹터 수'는 보통 이러한 섹터를 가리킨다. 한국에서 흔히 사용되는 표현은 아니지만 외국 문서에선 보이기도 한다.
HDDScan(v4.1) 검사 프로그램은 검사 중 배드섹터로 인해 읽기 속도가 비정상적으로 저하가 되면 해당 구간 이후의 모든 구간을 배드섹터로 판정해버리는 버그가 있다.
80-90년대 일부 고전 게임에서 복사방지로 불량섹터를 박아놓기도 했다.
7. 관련문서
[1] 배드 섹터 검사에 걸리는 시간은 HDD의 전송속도에 반비례, 용량에 비례해서 시간이 늘어나며, 2016년 후반기 기준으로 가장 흔하게 쓰이는 1TB HDD 기준으로 (3.5인치: 약 1.5~2시간 / 2.5인치: 약 2.5~3시간) 정도가 걸린다.[2] 요청받은 커널 데이터 페이지 파일을 메모리에서 읽지 못했음을 의미한다.[3] 윈도우 10에서는 KERNEL_DATA_INPAGE_ERROR[4] 배드섹터가 있을 때 많이 일어나는 블루스크린이며 저장장치 문제로도 발생하기는 한다. 윈도우 10에서는 UNEXPECTED_STORE_EXCEPTION다.[5] 실제로 과거에는 자신을 보호하기 위해 자신의 데이터가 설치된 섹터를 배드섹터로 마킹하는 형태가 존재했다. 브레인 바이러스가 대표적이다.[6] 쓰기 버퍼 설정과 다운로드 시작시부터 모든 공간을 미리 할당하는 옵션 같은.[7] 알약이 백신인 주제에 이상한 파일을 파괴하는 것으로 말이 많았다.[8] MS DOS 시절부터 내려오는 유구한 하드검사프로그램으로, 한글자판으로 치면 "촹나"가 되어서 몇몇 올드 컴덕들사이에서는 속칭 촹나라고 부르기도 했다고 했으며 scandisk라고 부르기도 한다. 사실 CheckDisk와 ScanDisk는 다르지만 서로 유사하다. 물론 MS-DOS를 쓰지않는 지금은 CheckDisk만 남았다.[9] Crystaldiskinfo 한글 기준은 보류중인 섹터 수[10] Crystaldiskinfo 한글판 기준 회복 불가능 섹터 수