変更ジャーナル

自動バックアップ アプリケーションは、そのタスクを実行するためにボリュームの状態の変更をチェックする必要があるプログラムの 1 つの例です。 ディレクトリまたはファイルの変更を確認するブルート フォース方式は、ボリューム全体をスキャンすることです。 ただし、多くの場合、システム パフォーマンスが低下するため、これは受け入れ可能なアプローチではありません。 もう 1 つの方法は、アプリケーションで、バックアップするディレクトリのディレクトリ通知 ( FindFirstChangeNotification 関数または ReadDirectoryChangesW 関数を呼び出すことによって) を登録することです。 これは最初の方法よりも効率的ですが、アプリケーションを常に実行する必要があります。 また、多数のディレクトリとファイルをバックアップする必要がある場合は、そのようなアプリケーションの処理とメモリのオーバーヘッドの量によって、オペレーティング システムのパフォーマンスが低下する可能性もあります。

これらの欠点を回避するために、NTFS ファイル システムは更新シーケンス番号 (USN) 変更ジャーナルを保持します。 ボリューム内のファイルまたはディレクトリに変更が加えられた場合、そのボリュームの USN 変更ジャーナルは、変更の説明とファイルまたはディレクトリの名前で更新されます。

コンピューターやボリュームの障害が発生した後など、ファイル システムのインデックス作成を回復するには、変更ジャーナルも必要です。 インデックス作成を回復する機能は、ファイル システムがこのような場合にボリューム全体のインデックスを再作成する時間のかかるプロセスを回避できることを意味します。

次のトピックでは、変更履歴について説明します。

このセクションの内容

トピック 説明
変更ジャーナルのレコード
ファイル、ディレクトリ、およびその他の NTFS ファイル システム オブジェクトが追加、削除、変更されると、NTFS ファイル システムは、コンピューター上のボリュームごとに 1 つずつ、変更ジャーナル レコードをストリームに入力します。
変更ジャーナル識別子の使用
NTFS ファイル システムは、署名されていない 64 ビット識別子を各変更ジャーナルに関連付けます。
変更ジャーナルの作成、変更、削除
管理者は、変更履歴を作成、削除、および再作成できます。
変更ジャーナル操作のボリューム ハンドルの取得
更新シーケンス番号 (USN) 変更ジャーナル操作で使用するボリュームへのハンドルを取得するには、lpFileName パラメーターを \\.\X という形式の文字列に設定して CreateFile 関数を呼び出します。
変更ジャーナルの操作
NTFS ファイル システム更新シーケンス番号 (USN) 変更ジャーナルで使用する制御コードと構造。