파일, 디렉터리 및 기타 NTFS 파일 시스템 개체가 추가, 삭제 및 수정되면 NTFS 파일 시스템은 컴퓨터의 각 볼륨에 대해 하나씩 스트림에서 변경 저널 레코드를 입력합니다. 각 레코드는 변경 유형과 변경된 개체를 나타냅니다. 특정 레코드에 대한 스트림 시작 부분의 오프셋을 특정 레코드에 대한 업데이트 시퀀스 번호(USN)라고 합니다. 스트림의 끝에 새 레코드가 추가됩니다.
NTFS 파일 시스템은 공간을 절약하기 위해 이전 레코드를 삭제할 수 있습니다. 필요한 레코드가 삭제된 경우 인덱싱 서비스는 변경 저널이 없을 때와 마찬가지로 볼륨을 다시 인덱싱하여 복구합니다.
변경 저널은 파일 변경 사실과 변경 이유(예: 쓰기 작업, 잘림, 길이, 삭제 등)만 기록합니다. 변경 내용을 되돌릴 수 있는 충분한 정보를 기록하지 않습니다.
또한 동일한 파일을 여러 번 변경하면 현재 레코드에 하나의 이유 플래그만 추가될 수 있습니다. 동일한 종류의 변경이 두 번 이상 발생하는 경우 NTFS 파일 시스템은 첫 번째 이후의 변경 내용에 대한 새 레코드를 작성하지 않습니다. 예를 들어 중간 닫기 및 다시 열기 작업이 없는 여러 쓰기 작업은 이유 플래그가 설정된 하나의 변경 레코드만 USN_REASON_DATA_OVERWRITE.
변경 저널의 작동 방식을 설명하기 위해 사용자가 다음 순서로 파일에 액세스한다고 가정합니다.
- 파일에 씁니다.
- 파일의 타임스탬프를 설정합니다.
- 파일에 씁니다.
- 파일을 자립니다.
- 파일에 씁니다.
- 파일을 닫습니다.
이 경우 NTFS 파일 시스템은 변경 저널에서 다음 작업을 수행합니다(여기서 | 비트 OR 연산을 나타낸다).
이벤트 | NTFS 파일 시스템 작업 |
---|---|
초기 쓰기 작업 |
NTFS 파일 시스템은 USN_REASON_DATA_OVERWRITE 이유 플래그가 설정된 새 USN 레코드를 씁니다. 가능한 이유 플래그에 대한 자세한 내용은 USN_RECORD 구조를 참조하세요. |
파일 타임스탬프를 설정합니다. |
NTFS 파일 시스템에서 플래그 설정이 USN_REASON_DATA_OVERWRITE 새 USN 레코드를 작성합니다. USN_REASON_BASIC_INFO_CHANGE. |
두 번째 쓰기 작업 |
NTFS 파일 시스템은 새 USN 레코드를 작성하지 않습니다. USN_REASON_DATA_OVERWRITE 기존 레코드에 대해 이미 설정되어 있으므로 레코드를 변경하지 않습니다. |
파일 잘림 |
NTFS 파일 시스템에서 플래그 설정이 USN_REASON_DATA_OVERWRITE 새 USN 레코드를 작성합니다. USN_REASON_BASIC_INFO_CHANGE | USN_REASON_DATA_TRUNCATION. |
세 번째 쓰기 작업 |
NTFS 파일 시스템은 새 USN 레코드를 작성하지 않습니다. USN_REASON_DATA_OVERWRITE 기존 레코드에 대해 이미 설정되어 있으므로 레코드를 변경하지 않습니다. |
작업 닫기 |
사용자가 파일의 유일한 사용자인 경우 NTFS 파일 시스템은 다음 플래그 설정으로 새 USN 레코드를 씁니다. USN_REASON_DATA_OVERWRITE | USN_REASON_BASIC_INFO_CHANGE | USN_REASON_DATA_TRUNCATION | USN_REASON_CLOSE. |
변경 저널은 파일의 첫 번째 열기와 마지막 닫기 사이에 일련의 레코드를 누적합니다. 각 레코드에는 새로운 종류의 변경이 발생했음을 나타내는 새 이유 플래그 집합이 있습니다. 레코드 시퀀스는 파일의 부분 기록을 제공합니다. 파일을 닫을 때 만든 최종 레코드는 USN_REASON_CLOSE 플래그를 추가합니다. 이 레코드는 파일의 변경 내용 요약을 나타내지만 이전 레코드와 달리 변경 순서를 표시하지 않습니다.
파일에 액세스하고 변경할 다음 사용자는 단일 이유 플래그를 사용하여 새 USN 레코드를 생성합니다.