변경 저널 레코드
파일, 디렉터리 및 기타 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_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 레코드를 생성합니다.