본문 바로가기

Microsoft/Windows Server

Chkdsk 동작 원리

CHKDSK의 기능 이해

CHKDSK 작업은 볼륨의 모든 메타데이터를 검사하는 주요한 세 가지 단계와 옵션인 네 번째 단계로 나눌 수 있습니다.

   

메타데이터는 "데이터에 대한 데이터"입니다. 즉, 볼륨에 저장되어 있는 모든 파일에 대한 정보를 추적하는 데 사용되는 파일 시스템 "오버헤드"입니다. 메타데이터는 해당 파일의 데이터를 구성하는 할당 단위, 사용 가능한 할당 단위, 불량 섹터가 있는 할당 단위 등에 대한 정보를 포함하고 있습니다. 하지만 파일에 들어 있는 데이터는 "사용자 데이터"라고 합니다. NTFS는 트랜잭션 로그를 사용하여 메타데이터를 보호합니다. 하지만 사용자 데이터는 보호되지 않습니다.

1단계: 파일 확인

CHKDSK는 첫 번째 단계에서 파일을 확인 중이라는 메시지를 표시하며 완료율을 0에서 100까지의 백분율로 표시합니다. 이 단계에서 CHKDSK는 볼륨의 MFT(마스터 파일 테이블)에서 각 파일 레코드 세그먼트를 검사합니다. 

   

MFT의 특정 파일 레코드 세그먼트는 NTFS 볼륨에 있는 모든 파일과 디렉터리를 고유하게 식별합니다. 이 단계 동안 CHKDSK가 표시하는 "완료율"은 확인한 MFT의 퍼센트입니다. 이 단계 동안 CHKDSK는 각 파일 레코드 세그먼트에 내부 일관성이 있는지 검사하고 두 가지 비트맵을 작성합니다. 이 중 하나는 사용 중인 파일 레코드 세그먼트를 나타내고 다른 하나는 사용 중인 볼륨 클러스터를 나타냅니다. 

   

이 단계의 끝에서 CHKDSK는 MFT와 전체 볼륨에서 사용 중인 공간과 사용할 수 있는 공간을 확인합니다. NTFS도 디스크에 저장되는 자체 비트맵에서 이 정보를 추적합니다. CHKDSK는 해당 검사 결과를 NTFS에 보관된 비트맵과 비교합니다. 둘 사이에 차이점이 있으면 CHKDSK 출력에 나타납니다. 예를 들어, 사용 중인 파일 레코드 세그먼트가 손상된 것으로 밝혀진 경우 이 파일 레코드 세그먼트와 연관된 디스크 클러스터가 CHKDSK 비트맵에서는 "사용 가능"한 것으로 표시되지만 NTFS 비트맵에서는 "사용 중"인 것으로 표시될 수 있습니다.

2단계: 인덱스 확인

CHKDSK는 두 번째 단계에서 인덱스를 확인 중이라는 메시지를 표시하고 다시 완료율을 0에서 100까지의 백분율로 표시합니다. 이 단계 동안 CHKDSK는 볼륨에 있는 각 인덱스를 검사합니다.

   

인덱스는 본질적으로는 NTFS 디렉터리이며 이 단계 동안 CHKDSK에서 표시하는 "완료율"은 볼륨에서 확인된 전체 볼륨 디렉터리 수의 퍼센트입니다. 이 단계에서 CHKDSK는 볼륨에 있는 각 디렉터리에 내부 일관성이 있는지 검사하고 MFT의 파일 레코드 세그먼트가 나타내는 모든 파일과 디렉터리가 최소한 하나 이상의 디렉터리에서 참조되는지 확인합니다. 또한 각 디렉터리에서 참조되는 모든 파일이나 하위 디렉터리가 MFT에서 유효한 파일 레코드 세그먼트로서 실제로 존재하는지 확인하고 순환 디렉터리 참조를 검사합니다. 마지막으로 파일의 시간 스탬프와 파일 크기 정보가 해당 파일의 디렉터리 목록에서 최신인지 확인합니다. 

   

이 단계의 끝에서 CHKDSK는 "연결되지 않은" 파일이 없는지 확인하고 모든 디렉터리 목록이 올바른 파일에 대한 것인지 확인합니다. 연결되지 않은 파일이란 올바른 파일 레코드 세그먼트가 존재하지만 어떤 디렉터리에도 목록이 없는 파일을 말합니다. 연결되지 않은 파일도 적절한 디렉터리가 존재하기만 하면 종종 해당 디렉터리에 복원할 수 있습니다. 적절한 디렉터리가 더 이상 존재하지 않으면 CHKDSK는 루트 디렉터리에 디렉터리를 만들어 파일을 거기에 놓습니다. CHKDSK는 더 이상 사용하지 않는 파일 레코드 세그먼트나 사용 중이지만 디렉터리에 나열된 파일에 해당하지 않는 파일 레코드 세그먼트에 대한 디렉터리 목록을 발견하면 그러한 파일 레코드 세그먼트에 대한 디렉터리 항목을 제거합니다.

3단계: 보안 설명자 확인

CHKDSK는 세 번째 단계에서 보안 설명자를 확인 중이라는 메시지를 표시하며 "완료율"을 0에서 100까지의 백분율로 표시합니다. 이 단계 동안 CHKDSK는 볼륨에 있는 파일이나 디렉터리에 연관된 각 보안 설명자를 검사합니다.

   

보안 설명자에는 파일이나 디렉터리에 대한 소유권, NTFS 권한 및 감사 정보가 포함되어 있습니다. 이 단계 동안 CHKDSK에서 표시하는 "완료율"은 볼륨에서 확인된 파일과 디렉터리의 퍼센트입니다. CHKDSK는 각 보안 설명자 구조가 잘 형성되어 있고 내부적으로 일관성이 있는지 확인합니다. 하지만 목록에 있는 사용자나 그룹의 실제 존재 여부나 부여된 권한의 적합성 여부는 확인하지 않습니다.

4단계: 섹터 확인

/R 스위치를 적용하면 CHKDSK는 네 번째 단계를 실행하여 볼륨의 사용 가능한 공간에서 불량 섹터를 찾습니다. 볼륨에 있는 모든 섹터를 읽고 해당 섹터를 사용할 수 있는지 확인합니다. /R 스위치를 사용하지 않은 경우에도 CHKDSK는 항상 메타데이터와 연관된 섹터를 읽습니다. 사용자 데이터와 연관된 섹터는 /R 스위치를 지정한 경우에 CHKDSK의 초기 단계 동안 읽혀집니다. 

   

CHKDSK가 읽을 수 없는 섹터를 발견하면 NTFS는 불량 클러스터 목록에 이 섹터가 포함되어 있는 클러스터를 추가합니다. 이 불량 클러스터가 사용 중인 경우에는 CHKDSK가 새 클러스터를 할당하여 불량 클러스터의 작업을 수행하도록 합니다. 내결함성 디스크를 사용 중인 경우에는 NTFS가 이 불량 클러스터의 데이터를 복구하여 새로 할당한 클러스터에 씁니다. 그렇지 않으면 새로운 클러스터를 0xFF 바이트 패턴으로 채웁니다. 

   

NTFS에서 정상 작동 중에 읽을 수 없는 섹터를 발견하면 CHKDSK에서 실행할 때와 같은 방식으로 이 섹터를 다시 매핑합니다. 따라서 대개의 경우에는 /R 스위치를 꼭 사용할 필요는 없습니다. 그러나 디스크에 불량 섹터가 있다고 의심되는 경우에 /R 스위치를 사용하면 전체 볼륨을 편리하게 검색할 수 있습니다.

   

[참고 사이트]

An explanation of the new /C and /I Switches that are available to use with Chkdsk.exe

http://support.microsoft.com/kb/314835/en-us