DetailPage-MSS-KB

기술 자료

기술 자료: 314835 - 마지막 검토: 2007년 12월 1일 토요일 - 수정: 4.1

이 문서의 Microsoft Windows 2000 및 Windows NT 4.0 버전에 대한 내용은 187941  (http://support.microsoft.com/kb/187941/ ) 을 참조하십시오.

이 페이지에서

요약

이 문서에서는 Windows XP의 CHKDSK 프로그램에 포함되어 있는 새로운 두 가지 스위치인 /C 스위치와 /I 스위치에 대해 설명합니다. 이들 스위치를 사용하면 CHKDSK나 AUTOCHK를 실행할 때 발생하는 다운 시간을 더 효과적으로 관리할 수 있습니다.

경고 /f 스위치를 사용하여 실행되는 chkdsk 프로세스는 중단하지 않는 것이 좋습니다. Microsoft는 chkdsk 프로그램이 중단된 경우 디스크의 무결성을 보장하지 않습니다.

추가 정보

Chkdsk.exe는 파일 시스템의 논리적 무결성을 확인하는 CHKDSK 프로그램의 명령줄 인터페이스입니다. CHKDSK는 파일 시스템 데이터에서 논리적으로 일관성이 없는 데이터를 발견하면 파일 시스템 데이터를 복구하는 작업을 수행합니다(이 데이터가 읽기 전용 모드가 아니라고 가정).

/C 스위치와 /I 스위치는 NTFS 파일 시스템으로 포맷된 드라이브에만 사용할 수 있습니다. 각각의 새 스위치를 사용하면 CHKDSK 루틴에서 특정 작업을 건너 뛰는데, 그렇지 않으면 CHKDSK가 NTFS 데이터 구조의 무결성을 확인하기 위해 이들 특정 작업을 수행합니다.

CHKDSK를 온라인으로 실행할 경우 실제로 확인 작업을 수행하는 코드가 Untfs.dll 및 Ufat.dll 같은 유틸리티 DLL 안에 들어 있습니다. CHKDSK에서 호출하는 확인 루틴은 Windows 탐색기나 디스크 관리 그래픽 사용자 인터페이스를 통해 볼륨을 확인할 때 실행되는 루틴과 동일합니다.

그러나 컴퓨터가 다시 시작될 때 실행되도록 CHKDSK를 예약한 경우 확인 코드가 들어 있는 이진 모듈은 기본 Windows 프로그램인 Autochk.exe입니다. Autochk.exe는 컴퓨터의 시작 순서에서 초기에 실행되므로 가상 메모리나 다른 Win32 서비스의 이점을 갖지 못합니다.

Autochk.exe는 Chkdsk.exe 유틸리티 DLL에서 생성하는 텍스트 출력과 같은 종류의 출력을 생성합니다. Autochk.exe는 시작 과정 중에 이 텍스트 출력을 표시하고 응용 프로그램 이벤트 로그에도 이벤트를 기록합니다. 기록되는 이벤트 정보는 이벤트 로그 데이터 버퍼 양만큼의 텍스트 출력을 포함하고 있습니다.

Autochk.exe와 Chkdsk.exe 유틸리티 DLL의 확인 코드는 모두 같은 소스 코드를 기반으로 하므로 이 문서의 나머지 부분에서는 Autochk.exe나 Chkdsk.exe를 일반적으로 참조할 때 "CHKDSK"라는 용어를 사용합니다. 마찬가지로 이 문서는 NTFS 볼륨과 관련이 있는 CHKDSK 변경 사항에 대해서만 다루기 때문에 "CHKDSK에서의 작업"은 "CHKDSK가 NTFS 볼륨에서 실행될 때의 작업"을 의미합니다.

/C 스위치와 /I 스위치를 사용하면 CHKDSK를 실행한 후에도 볼륨이 손상된 상태로 남아있을 수 있습니다. 따라서 다운 시간을 최소로 유지해야 할 경우에만 이러한 스위치를 사용하는 것이 좋습니다. 이 스위치는 매우 큰 볼륨에서 CHKDSK를 실행해야 할 때 발생하는 다운 시간을 유연성 있게 관리해야 하는 경우에 사용하기 위한 것입니다.

/C 스위치와 /I 스위치를 사용하기에 적합한 경우를 알기 위해서는 내부 NTFS 데이터 구조, 발생할 수 있는 손상 종류, 볼륨을 확인할 때 CHKDSK가 수행하는 동작, 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 스위치를 사용하면 전체 볼륨을 편리하게 검색할 수 있습니다.

CHKDSK 시간 요구량 이해

앞에서 설명한 CHKDSK 실행 단계는 CHKDSK에서 NTFS 볼륨의 무결성을 확인하기 위해 수행하는 주요 작업을 개략적으로만 설명한 것입니다. CHKDSK는 각 단계에서 단계에 특정한 여러 검사 작업을 추가로 수행하고 단계 사이에서도 몇 가지 빠른 검사를 수행합니다. 하지만 다음에서 설명할 CHKDSK의 실행 시간에 영향을 미치는 변수와 Windows XP의 새로운 /C/I 스위치의 영향은 그러한 개략적인 설명에 기반한 것입니다.

변수 1: "인덱스" 단계

CHKDSK 실행 첫 번째 단계와 세 번째 단계(파일 확인 및 보안 설명자 확인) 중에는 "완료율" 표시기가 다소 순조롭게 진행됩니다. 사용하지 않는 파일 레코드 세그먼트의 처리 시간이 더 짧고, 보안 설명자가 클수록 처리 시간이 더 걸리지만 "완료율"은 전반적으로 해당 단계에서 필요한 실제 시간을 비교적 정확하게 반영합니다.

그러나 이러한 퍼센트/시간 관계는 CHKDSK가 인덱스(NTFS 디렉터리)를 검사하는 두 번째 단계에 반드시 적용되지는 않습니다. 디렉터리를 처리하는 데 걸리는 시간은 해당 디렉터리에 있는 파일과 하위 디렉터리 수와 밀접하게 연관되어 있지만 이 단계의 "완료율"은 CHKDSK에서 검사해야 할 디렉터리 수만을 기준으로 합니다. 예를 들어, 파일과 하위 디렉터리가 아주 많이 있는 디렉터리를 처리하는 데 걸리는 시간은 조정할 수가 없습니다. 따라서 볼륨에 있는 모든 디렉터리가 같은 수의 파일을 포함하고 있지 않으면 이 단계 동안 표시되는 "완료율"은 두 번째 단계에 필요한 실제 시간을 신뢰성 있게 나타낸다고 할 수 없습니다.

예상치 못한 CHKDSK 절차의 중간 단계에 있는 경우 CHKDSK의 두 번째 단계가 대개 실행 시간이 가장 긴 단계이기 때문에 상황은 더욱 좋지 않게 됩니다.

변수 2: 볼륨 상태

볼륨 상태와 관련된 많은 요소가 CHKDSK를 실행하는 데 걸리는 시간에 중요한 역할을 합니다. 주어진 볼륨에서 CHKDSK를 실행하는 데 필요한 시간을 예측하는 공식은 파일 및 디렉터리 수, 일반적으로 볼륨의 조각화 정도와 특히 MFT의 조각화 정도, 파일 이름 형식(긴 이름, 8.3 형식 이름 또는 이 둘의 혼합) 및 CHKDSK에서 복구해야 할 실제 손상 정도와 같은 변수를 고려해야 합니다.

변수 3: 하드웨어 문제

하드웨어 문제도 CHKDSK를 실행하는 데 걸리는 시간에 영향을 미칩니다. 사용 가능한 메모리 양, CPU 속도, 디스크 속도와 같은 변수가 실행 시간에 영향을 미칩니다.

변수 4: CHKDSK 설정

/R 스위치를 사용하지 않을 경우에 주어진 하드웨어 플랫폼에서 시간에 대해 가장 많이 고려해야 사항은 볼륨의 절대 크기보다는 해당 볼륨에 있는 파일과 디렉터리의 수입니다.

예를 들어, /R 스위치를 사용하지 않는다면 50GB 볼륨에 큰 데이터베이스 파일이 하나나 두 개만 있을 경우 CHKDSK를 실행하는 데는 몇 초만 걸릴 수 있지만 /R 스위치를 사용하면 CHKDSK에서 볼륨에 있는 모든 섹터를 읽고 확인해야 하기 때문에 큰 볼륨의 경우 상당한 시간이 더 필요합니다. 반면에 비교적 작은 볼륨에서도 작은 파일이 수십만에서 수백만 개가 있다면 /R 스위치의 지정 여부에 관계없이 CHKDSK를 실행하는 데 몇 시간이 걸릴 수 있습니다.

CHKDSK 실행에 필요한 시간 예측

특정 상황에 따라 CHKDSK를 실행하는 데는 몇 초에서 수일까지 걸릴 수도 있습니다. 주어진 볼륨에서 CHKDSK 실행 시간을 예측하는 가장 좋은 방법은 시스템 사용량이 적은 동안 읽기 전용 모드에서 시험적으로 실행해보는 것입니다.

그러나 이 기술을 사용할 때는 다음과 같은 이유 때문에 주의해야 합니다.
  • 읽기 전용 모드에서는 CHKDSK가 초기 단계에서 오류가 발생하면 세 가지 단계를 모두 완료하기 전에 종료되고 오류가 있다고 잘못 보고하는 경향이 있습니다. 예를 들어, CHKDSK에서 디스크를 검사할 때 NTFS에서 디스크 영역을 수정하려고 하면 CHKDSK는 디스크가 손상되었다고 보고할 수 있습니다. 볼륨을 올바르게 확인하기 위해서는 볼륨이 정적인 상태여야 하며 이를 보장하는 유일한 방법은 볼륨을 잠그는 것입니다. CHKDSK는 /F 스위치(또는 /F를 포함하는 /R 스위치)를 지정한 경우에만 볼륨을 잠급니다. 읽기 전용 모드에서 모든 단계를 완료하게 하려면 CHKDSK를 두 번 이상 실행해야 합니다.
  • CHKDSK는 CPU와 디스크를 모두 많이 사용합니다. CHKDSK를 실행하는 데 걸리는 시간은 시스템 로드의 양과 CHKDSK가 온라인으로 실행되는지 또는 Windows XP 시작 단계 동안에 실행되는지 여부에 영향을 받습니다. 병목 상태를 일으킬 수 있는 요소는 하드웨어 구성에 따라 다르지만 CHKDSK를 읽기 전용 모드에서 실행할 때 CPU 사용이나 디스크 I/O가 많으면 CHKDSK 실행 시간이 급격하게 증가합니다. 또한 Autochk.exe는 Chkdsk.exe와 다른 환경에서 실행됩니다. Autochk.exe를 통해 CHKDSK를 실행하면 CHKDSK에서 CPU와 I/O 리소스는 독점적으로 사용할 수 있지만 가상 메모리는 사용할 수 없습니다. Autochk.exe가 Chkdsk.exe보다 빨리 실행된다고 예상되지만 사용 가능한 RAM이 비교적 적은 컴퓨터에서는 Autochk.exe가 실제로 시간이 더 걸릴 수 있습니다.
  • 손상을 수정하는 데 시간이 추가로 필요합니다. 읽기 전용 모드에서는 심각한 손상이 없는 경우에만 CHKDSK가 완료됩니다. 디스크에 경미한 손상만 있는 경우 CHKDSK 실행에는 문제를 수정하는 데 필요한 시간이 약간 더 추가됩니다. 그러나 심각한 하드웨어 실패 등으로 인한 심각한 손상이 있다면 CHKDSK 실행에 필요한 시간은 CHKDSK에서 복구해야 할 손상된 파일 수에 비례하여 증가합니다. 극단적인 경우에는 CHKDSK 실행에 걸리는 시간보다 두 배 정도 더 걸릴 수 있습니다.

/C 및 /I 스위치 소개

/C 스위치

/C 스위치를 사용하면 CHKDSK에서 디렉터리 구조 내의 순환을 검사하지 않습니다. 순환 구조는 하위 디렉터리 자체에 "상위 디렉터리"가 포함되는 매우 드문 손상 형태입니다.

/C 스위치를 사용하면 CHKDSK 속도가 1-2% 빨라질 수 있습니다. 그러나 NTFS 볼륨에서 /C 스위치를 사용하면 디렉터리 "순환 구조"가 남아 있을 수 있습니다. 이와 같은 순환 구조에는 해당 디렉터리 트리의 나머지 부분에서 액세스할 수 없으며, 백업 프로그램을 포함하여 Win32 프로그램이 일부 파일을 볼 수 없다는 점에서 이러한 파일이 연결되지 않은 고아 파일이 될 수 있습니다.

/I 스위치

/I 스위치를 사용하면 CHKDSK에서 디렉터리 항목을 자신의 상응하는 파일 레코드 세그먼트와 비교하지 않습니다. 이 스위치를 적용하면 디렉터리 항목에 내부 일관성이 있는지 검사하지만 디렉터리 항목이 상응하는 파일 레코드 세그먼트에 저장되어 있는 데이터와 일치하지 않을 수 있습니다.

/I 스위치를 사용할 경우 절약되는 시간은 예측하기가 어렵습니다. 일반적으로 /I 스위치를 사용하면 CHKDSK 시간이 50 - 70% 감소되는데, 디렉터리에 대한 파일의 비율과 CPU 속도에 상대적인 디스크 I/O 속도와 같은 요소에 따라 달라집니다.

/I 스위치를 사용하는 데는 다음과 같은 제한이 있습니다.
  • 잘못된 파일 레코드 세그먼트를 참조하는 디렉터리 항목이 있을 수 있습니다. 이러한 경우에는 그 항목을 사용하려는 프로그램에 오류가 발생합니다.
  • 어떤 디렉터리 항목에서도 참조하지 않는 파일 레코드 세그먼트가 있을 수 있습니다. 이러한 경우에도 연결되지 않은 고아 파일이 발생합니다. 파일 레코드 세그먼트에서 나타내는 것처럼 실제로 손상되지 않은 파일도 백업 프로그램을 포함하여 모든 Win32 프로그램에 보이지 않을 수 있습니다.

/C 스위치와 /I 스위치의 값

볼륨에서 디스크 손상이 발견되면 기본적으로 다음 세 가지 옵션 중 하나로 응답합니다.

첫 번째 옵션은 아무런 작업도 수행하지 않는 것입니다. 하루 24시간 내내 온라인이어야 하는 중요한 업무용 서버의 경우에는 이 옵션을 선택해야 합니다. 이 옵션의 단점은 비교적 경미한 손상도 눈덩이처럼 쌓여서 심각한 손상이 될 수 있다는 것입니다. 따라서 손상된 볼륨에 저장되어 있는 데이터의 무결성을 지키는 것보다 서버를 온라인 상태로 유지하는 것이 중요한 경우에만 이 옵션을 사용하십시오. 손상된 볼륨에 있는 데이터는 CHKDSK를 실행할 때까지 모두 "위험한 상태에 있는 것"으로 간주해야 합니다. 두 번째 옵션은 전체 CHKDSK 작업을 실행하여 모든 파일 시스템 데이터를 복구하고 자동화된 프로세스를 통해 복구할 수 있는 모든 사용자 데이터를 복원하는 것입니다. 그러나 전체 CHKDSK 작업을 실행하면 적당하지 않은 시간에도 중요한 업무용 서버를 몇 시간 동안 중지시킬 수 있습니다. 세 번째 옵션은 /C 스위치와 /I 스위치 중 하나나 두 가지 모두를 사용해서 간략하게 CHKDSK 작업을 실행하여, 눈덩이처럼 쌓여서 큰 문제가 될 수 있는 종류의 손상을 전체 CHKDSK 작업에 필요한 시간보다 적은 시간으로 복구하는 것입니다.

그러나 간략하게 CHKDSK 작업을 실행하면 모든 손상을 복구하지는 못합니다. 복구할 수 있는 모든 데이터가 복구되도록 가까운 시일 내에 전체 CHKDSK 작업을 실행해야 합니다.

디스크 손상을 발견한 즉시 전체 CHKDSK 작업을 실행하더라도 NTFS는 사용자 데이터의 무결성을 보장하지 않습니다. CHKDSK에서 복구할 수 없는 파일과 복구는 되었지만 계속 내부적으로 손상된 파일이 있을 수 있기 때문입니다. 따라서 주기적으로 백업하거나 다른 강력한 데이터 복구 방법을 사용하여 중요한 업무용 데이터를 보호해야 합니다.



Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹 (http://support.microsoft.com/newsgroups/default.aspx) 에 참여하시기 바랍니다.

본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Windows XP Home Edition
  • Microsoft Windows XP Professional
  • Microsoft Windows XP Professional x64 Edition
키워드: 
kbinfo kbfea KB314835
공유
추가 지원 옵션
Microsoft Community 지원 포럼
직접 문의하기
Microsoft Certified Partner 찾기
Microsoft Store
소기업이 아닙니까?
다음에서 팔로우하십시오.