다음을 통해 공유


변경 저널 레코드

파일, 디렉터리 및 기타 NTFS 파일 시스템 개체가 추가, 삭제 및 수정되면 NTFS 파일 시스템은 스트림에 변경 저널 레코드를 컴퓨터의 각 볼륨마다 하나씩 입력합니다. 각 기록은 변경 유형 및 변경된 개체를 나타냅니다. 특정 레코드에 대한 스트림 시작부터의 오프셋을 해당 특정 레코드의 USN(업데이트 시퀀스 번호)이라고 합니다. 새 레코드 스트림의 끝에 추가 됩니다.

NTFS 파일 시스템은 공간을 절약하기 위해 이전 레코드를 삭제할 수 있습니다. 필요한 레코드가 삭제된 경우 인덱싱 서비스는 변경 저널이 없을 때와 마찬가지로 볼륨을 다시 인덱싱하여 복구합니다.

변경 저널은 파일 변경 사실과 변경 이유(예: 쓰기 작업, 자르기, 늘리기, 삭제 등)만 기록합니다. 변경 내용을 되돌릴 수 있을 정도로 충분한 정보를 기록하지 않습니다.

또한 동일한 파일을 여러 번 변경하면 현재 레코드에 하나의 이유 플래그만 추가될 수 있습니다. 동일한 종류의 변경이 두 번 이상 발생하는 경우 NTFS 파일 시스템은 첫 번째 이후 변경 내용에 대해 새 레코드를 작성하지 않습니다. 예를 들어 중간 닫기 및 다시 열기 작업이 없는 여러 쓰기 작업의 경우 이유 플래그 USN_REASON_DATA_OVERWRITE가 설정된 하나의 변경 레코드만 작성됩니다.

변경 저널의 작동 방식을 설명하기 위해 사용자가 다음 순서로 파일에 액세스한다고 가정합니다.

  1. 파일에 씁니다.
  2. 파일의 타임스탬프를 설정합니다.
  3. 파일에 씁니다.
  4. 파일을 자릅니다.
  5. 파일에 씁니다.
  6. 파일을 닫습니다.

이 경우 NTFS 파일 시스템은 변경 저널에서 다음 작업을 수행합니다(여기서 |는 비트 OR 연산을 나타냅니다).

이벤트 NTFS 파일 시스템 작업
초기 쓰기 작업
NTFS 파일 시스템이 USN_REASON_DATA_OVERWRITE 이유 플래그가 설정된 새 USN 레코드를 씁니다. 가능한 이유 플래그에 대한 자세한 내용은 USN_RECORD 구조를 참조하세요.
파일 타임스탬프 설정
NTFS 파일 시스템은 플래그 설정이 USN_REASON_DATA_OVERWRITE | USN_REASON_BASIC_INFO_CHANGE인 새 USN 레코드를 씁니다.
두 번째 쓰기 작업
NTFS 파일 시스템은 새 USN 레코드를 쓰지 않습니다. 기존 레코드에 대해 USN_REASON_DATA_OVERWRITE가 이미 설정되어 있기 때문에 레코드를 변경하지 않습니다.
파일 자르기
NTFS 파일 시스템은 플래그 설정이 USN_REASON_DATA_OVERWRITE | USN_REASON_BASIC_INFO_CHANGE | USN_REASON_DATA_TRUNCATION인 새 USN 레코드를 씁니다.
세 번째 쓰기 작업
NTFS 파일 시스템은 새 USN 레코드를 쓰지 않습니다. 기존 레코드에 대해 USN_REASON_DATA_OVERWRITE가 이미 설정되어 있기 때문에 레코드를 변경하지 않습니다.
닫기 작업
파일을 변경하는 사용자가 해당 파일의 유일한 사용자인 경우 NTFS 파일 시스템은 플래그 설정 USN_REASON_DATA_OVERWRITE | USN_REASON_BASIC_INFO_CHANGE | USN_REASON_DATA_TRUNCATION | USN_REASON_CLOSE를 사용하여 새 USN 레코드를 씁니다.

변경 저널은 파일의 첫 번째 열기와 마지막 닫기 사이에 일련의 레코드를 누적합니다. 각 레코드에는 새로운 종류의 변경이 발생했음을 나타내는 새 이유 플래그 집합이 있습니다. 레코드 시퀀스는 파일의 부분 기록을 제공합니다. 파일을 닫을 때 만든 최종 레코드가 USN_REASON_CLOSE 플래그를 추가합니다. 이 레코드는 파일의 변경 내용 요약을 나타내지만 이전 레코드와 달리 변경 순서를 나타내지 않습니다.

파일에 액세스하고 변경하는 다음 사용자는 단일 이유 플래그를 사용하여 새 USN 레코드를 생성합니다.