변경 저널 만들기, 수정 및 삭제
관리자는 언제든지 변경 저널을 만들고, 삭제하고, 다시 만들 수 있습니다. 관리자는 현재 USN(업데이트 시퀀스 번호) 값이 USN_JOURNAL_DATA 구조체의 MaxUsn 멤버에 표시된 가능한 최대 USN 값에 가까워지면 저널을 삭제해야 합니다. 또한 관리자는 변경 저널을 삭제하고 다시 만들어 디스크 공간을 회수할 수 있습니다. 이 작업과 프로그래밍 방식이 아닌 다른 모든 변경 저널 작업을 수행하려면 시스템 관리자 권한이 있어야 합니다. 즉, Administrators 그룹의 구성원이어야 합니다.
지정된 볼륨에서 프로그래밍 방식으로 변경 저널을 만들거나 수정하려면 FSCTL_CREATE_USN_JOURNAL 제어 코드를 사용합니다.
새 변경 저널을 만들거나 기존 변경 저널을 수정할 때 NTFS 파일 시스템은 FSCTL_CREATE_USN_JOURNAL이 입력으로 사용하는 CREATE_USN_JOURNAL_DATA 구조체의 정보에서 해당 변경 저널에 대한 정보를 설정합니다. CREATE_USN_JOURNAL_DATA에는 MaximumSize 및 AllocationDelta 멤버가 있습니다.
MaximumSize는 변경 저널의 대상 최대 크기(바이트)입니다. 변경 저널은 이 값보다 커질 수 있지만 NTFS 파일 시스템 검사점에서 NTFS 파일 시스템은 저널을 검사하고 크기가 MaximumSize 값과 AllocationDelta 값을 더한 값을 초과하면 저널을 자릅니다. NTFS 파일 시스템 검사점에서 운영 체제는 NTFS 파일 시스템이 오류 복구에 필요한 처리를 결정할 수 있도록 NTFS 파일 시스템 로그 파일에 레코드를 기록합니다.
AllocationDelta는 메모리가 할당되거나 할당 취소될 때마다 변경 저널의 끝에 추가되고 시작 부분에서 제거되는 바이트 수입니다. 즉, 할당 및 할당 취소가 이 크기 단위로 수행됩니다. 클러스터 크기의 정수 배수는 이 멤버에 적합한 값입니다.
볼륨이 너무 자주 다시 인덱싱되는 경우처럼 관리자가 더 큰 MaximumSize 값을 갖도록 기존 변경 저널을 수정하면 변경 저널은 새로운 최대 크기를 초과할 때까지 새 항목을 받기만 합니다.
변경 저널을 삭제하려면 FSCTL_DELETE_USN_JOURNAL 제어 코드를 사용합니다. 이 작업을 사용하면 볼륨의 모든 파일을 살펴보고 각 파일에 대한 USN을 0으로 다시 설정합니다. 그런 다음, 기존 변경 저널을 삭제합니다. 이 작업은 완료될 때까지 시스템이 다시 시작되어도 유지됩니다. 이 프로세스 중에 변경 저널을 읽거나 만들거나 수정하려는 모든 시도가 실패하며 오류 코드 ERROR_JOURNAL_DELETE_IN_PROGRESS가 표시됩니다.
FSCTL_DELETE_USN_JOURNAL 제어 코드를 사용하여 다른 프로세스에서 시작된 삭제가 진행 중인지 확인할 수도 있습니다. 예를 들어 애플리케이션이 시작될 때 삭제가 진행 중인지 확인할 수 있습니다. 저널 삭제는 시스템이 다시 시작되어도 유지되므로 시스템이 다시 시작될 때 시작된 서비스 및 애플리케이션은 진행 중인 삭제를 확인해야 합니다.
변경 저널이 반드시 시작 시에 만들어지는 것은 아닙니다. 변경 저널을 만들려면 관리자가 명시적으로 만들거나 변경 저널이 필요한 다른 서비스를 시작할 수 있습니다.