USN と range tracking
fsutil コマンドの「enablerangetracking」オプションを確認してみます。テスト環境は Windows 10 です。
この機能については、マイクロソフト社の下記URLで説明されています。
Tracking modified ranges of a file より引用
The NT File System (NTFS) team has added a new feature to Windows. USN Journal will output an update sequence number (USN) record containing modified ranges for a file upon close. A new record type, USN_RECORD_V4 has been introduced to record these changed ranges of a file.
F: ドライブで USN ジャーナルを有効にします。デフォルトでは「Write range tracking: Disabled」となっています。
Range trackingを有効にします。
fsutil usn enablerangetracking f:
Range trackingが有効になりました。レコードが生成される条件は下記となっています。
USN_RECORD_V4 structure (Windows) より引用
A USN_RECORD_V4 record is only output when range tracking is turned on and the file size is equal or larger than the value of the RangeTrackFileSizeThreshold member. The user always receives one or more USN_RECORD_V4 records followed by one USN_RECORD_V3 record.
今回のテストで利用するJPEGファイルのサイズは 4,022,324 バイトです。
「Write range tracking file size threshold: 1048576」よりも、サイズの大きい JPEG ファイルを利用します。
JPEG ファイルの末尾に1バイト(0xFF)を追加します。その後、USNジャーナルを確認すると、V4 レコードが追加されている事を確認できます。
USN_RECORD_V4 structure と USN_RECORD_EXTENT structure を参考に、USN V4レコード 176 のバイナリデータをパースしてみます。
50000000 RecordLength ⇒ 80
0400 MajorVersion
0000 MinorVersion
27000000000001000000000000000000 FileReferenceNumber
05000000000005000000000000000000 ParentFileReferenceNumber
B000000000000000 USN ⇒ 176
03000080 Reason
00000000 SourceInfo
00000000 RemainingExtents
0100 NumberOfExtents
1000 ExtentSize
00403D0000000000 LONGLONG Offset ⇒ 4014080
0040000000000000 LONGLONG Length ⇒ 16384
一般的なUSNパースツールが、USN V4 レコードを可視化するかは未確認です。
参考URL: