본문 바로가기
드레곤박의 잡동사니/윈도우 팁

메모리나 하드디스크 오류를 Chkdsk로 복구, 사용법과 원리는?

by 드레곤박의 잡동사니 2021. 5. 13.
반응형

Chkdsk는 하드디스크나 USB 메모리 등의 저장매체에 오류가 생겼을 때, 가장 심플하게 할 수 있는 복구 도구이다. 이번 포스팅에선 Chkdsk의 사용법과 작동 원리에 대해 다뤄보도록 한다.

 

Chkdsk는 Check disk의 줄임말로, 과거 DOS 시절부터 존재해 왔던 정말 골동품 같은 프로그램인데, 그만큼 원초적이면서도, 꽤나 강력한 도구이다. 개인적으론 윈도우의 기능인 디스크 검사보다 chkdsk를 좀 더 좋아한다.

 

1. Chkdsk의 실행

앞에서 골동품 같다라는 표현을 한건 단지 오래된 프로그램 이어서 뿐만 아니라 실행마저도 아이콘이 아닌 직접 입력해서 실행해야 하기 때문이다.

 

우선 [윈도우키] + R을 누른 뒤 cmd 라고 치고 엔터를 치자

cmd를 실행한다.

 

cmd는 command를 줄인말로 우리말로는 "명령" 정도가 되겠다 시작 메뉴에서는 명령 프롬프트라는 이름으로 등록되어있다. 명령 프롬프트가 실행되면 까만 창에 글씨만 보이는 화면이 나온다.

명령 프롬프트 창

 

여기서 chkdsk [드라이브명]: /[옵션] 의 형식으로 입력을 한다. 옵션은 여러 개를 넣을 수 있다.

만약 옵션이 궁금하다면 chkdsk /? 라고 엔터를 치면 나온다.

옵션이 많지만 우리가 쓸만한 옵션 2개만 알고 넘어가자

 

옵션명 chkdsk /? 했을때 나오는 설 명
/f 디스크에 있는 오류를 고칩니다.
/r 손상된 섹터를 찾아서 읽을 수 있는 정보를 복구합니다.
(/scan이 지정되지 않은 경우 /F 함축)

 

만약 D 드라이브를 검사 및 복구를 원한다면

 

chkdsk d: /f 라고 치고 엔터를 누르면 된다.

chkdsk d: /r 는 디스크 전체를 검사하면서 베드 섹터까지 복구하기 때문에 시간이 많이 걸린다.

/r 옵션을 주면 /f 옵션은 안 해도 된다 기본적으로 포함돼서 실행을 한다.

정확히는 /f옵션은 3가지 검사를 진행하지만 /r 옵션은 3가지 검사를 시행한 후 2가지 검사를 추가로 하는 것 이기 때문이다.

 

디스크 검사를 하면 다음과 같은 질문을 하는데 이것은 검사 및 복구를 하는도중에 하드디스크를 액세스 해서 불필요한 오류가 나지 않도록 잠시 논리적으로 분리한다는 말이다. Y를 눌러주고 엔터를 누른다.

 

다른 프로세스가 볼륨을 사용 중이기 때문에 Chkdsk를 실행할 수 없습니다.
이 볼륨을 우선 분리하면 Chkdsk를 실행할 수 있을 것입니다.
그러면 이 볼륨에 대해 열린 모든 핸들을 사용할 수 없습니다.
이 볼륨에서 분리하도록 하시겠습니까(Y/N)?

 

Y를 누르면 검사를 시작한다.

 

만약 C드라이브의 오류를 복구하려고 시도하면 관리자모드로 실행하라고 나오는데 cmd 관리자모드는 윈도우 시작 메뉴 옆에 검색하는 곳에서 cmd를 쳐보면 명령 프롬프트 아이콘이 나오고 관리자모드로 실행이라는 메뉴가 나오는데 이걸로 실행하면 된다.

관리자 권한으로 실행

 

관리자모드에서 chkdsk c: /f 라고 치면 아래와 같이 나온다.

Microsoft Windows [Version 10.0.19042.928]
(c) Microsoft Corporation. All rights reserved.

C:\Windows\system32>chkdsk c:/f
파일 시스템 유형은 NTFS입니다.
현재 드라이브를 잠글 수 없습니다.

다른 프로세스가 볼륨을 사용하고 있으므로 CHKDSK를
실행할 수 없습니다. 다음에 시스템이 다시 시작할 때
이 볼륨을 검사하도록 하시겠습니까(Y/N)?

이 메세지는 윈도우는 수시로 하드디스크와 메모리를 참조해서 작동하기 때문에 검사 도중 하드디스크에 뭔가 기록이 되면 오작동을 할 수 있기 때문에 윈도우가 실행된 상태에서는 검사를 못한다는 말이다.

 

여기서 Y를 누르고 엔터를 치면 chkdsk 검사가 예약이 되는데

재부팅을 하면 윈도우가 기동 하기 이전에 chkdsk가 검사를 먼저 한다.

 

 

2. Chkdsk 의 작동 원리

저장장치에 파일을 기록하고 지우고 하는 구조를 파일 시스템 이라고 한다.

대표적인 파일 시스템은 FAT, FAT32, exFAT, NTFS 가 있다.

그중 윈도우가 사용하는 파일 시스템은 NTFS인데 실제로 디스크에 저장되는 방식은 아래 표과 같다.

Volume
Boot
Record
MFT
(Master File Table)
Data Area

위 표는 원형의 디스크를 한 줄로 펼쳐놓은 모습으로, 디스크의 가장 앞쪽은 VBR 이라는 영역이 있고 부팅에 관한 정보가 담겨있다 두 번째 MFT는 파일에 관한 정보가 기록이 되며, 실제 데이타는 Data Area에 기록이 된다.

 

즉 실제 파일의 데이타는 Data Area에 기록이 되지만 그 파일의 이름과 속성 기록된 위치 등의 파일에 관한 속성 정보는 MFT에 기록이 된다는 말이다. 이렇게 앞쪽에 파일 정보를 두지 않으면 파일을 액세스할 때 뒤쪽의 파일을 찾을 때 끝까지 뒤져야 해서 속도가 엄청 느려질 것이다.

 

이런 파일시스템의 구조로 인해 MFT의 정보에 오류가 발생하면 실제 데이터를 찾지 못하는 상황이 발생한다.

 

실제로, 데이타를 삭제한다는 건 Data Area 에 있는 실제 데이타를 지우는 것이 아니라 MFT에 있는 해당 파일의 위치에 대한 내용을 지워서 파일이 없는 것처럼 인식시켜 주는 것이다.

 

우리가 종종 쓰는 디스크 복구 프로그램은 바로 이 실제 데이타 영역에서 직접 파일을 찾아가서 MFT에 파일이 위치한 실제 주소를 기록한다. 복구 프로그램을 써 본 사람은 알겠지만 복구는 되는데 파일 이름은 임의대로 붙여지는 것을 본 적이 있을 것이다. 이는 위에도 언급했지만 파일 이름은 MFT영역에 기록하기 때문인데, 파일삭제 명령으로  MFT내용을 지웠으니 파일 이름을 알 수 가 없어서 임의의 이름으로 복구할 수밖에 없는 것이다.

 

빠른 포멧 역시 MFT영역을 초기화 하는것이라 포멧을 해도 데이타를 복구할 수 있다.

 

이야기가 조금 샜는데 chkdsk는 이러한 MFT영역의 오류를 검사하며 실제로 MFT에 있는 정보대로 데이타가 Data Area에 위치해 있는지 대조해 보면서 오류를 복구한다.

 

3. MFT 의 손상 원인

  • Windows 시스템 충돌
  • MFT에 대한 맬웨어 및 바이러스 공격
  • 하드 드라이브의 많은 불량 섹터
  • 애플리케이션 충돌 또는 오작동
  • 외부 디스크가 작동중에 분리할때

 

반응형

댓글