共通ログ ファイル システムの概要

共通ログ ファイル システム (CLFS) は、ユーザー モードまたはカーネル モードで実行されているソフトウェア クライアント が使用できる汎用ログ サービスです。 このドキュメントでは、カーネル モード クライアントの CLFS インターフェイスについて説明します。 ユーザー モード インターフェイスの詳細については、Microsoft Windows SDK の共通ログ ファイル システムを参照してください。

CLFS は、回復と分離のセマンティクスを利用するためのアルゴリズム (ARIES) のすべての機能をカプセル化します。 ただし、CLFS デバイス ドライバー インターフェイス (DDI) は ARIES のサポートに限定されません。これは、さまざまなロギングのシナリオに適しています。

ハイ パフォーマンスのトランザクション ログの主な仕事は、ログ クライアントが過去を正確に再現できるようにすることです。 CLFS は、クライアント ログ レコードをメモリ バッファーにマーシャリングし、それらを強制的に安定したストレージにし、要求に応じてレコードを遡って読み取ることによって、これを行います。 レコードが安定したストレージになり、ストレージ メディアが手付かずの状態になると、CLFS はシステム障害全体にわたってレコードを読み取ることができることに注意することが重要です。

CLFS では、専用ログと多重化ログがサポートされています。 専用ログには、ログのすべてのクライアントが使用するログ レコードのストリームが 1 つ含まれます。 多重化ログ (共通ログとも呼ばれます) には、複数のストリームがあります。 各ストリームには、ログ レコードをマーシャリングするための独自のクライアントと独自のメモリ バッファーがありますが、これらのすべてのバッファーのレコードは 1 つのキューに多重化され、安定したストレージ上の 1 つのログにフラッシュされます。 多重化を使用すると、複数のストリームの I/O 操作を統合することができます。

クライアントは、ストリームにレコードを書き込むと、後で参照できるようにログ レコードを識別するログ シーケンス番号 (LSN) を取得します。 特定のストリームに書き込まれるレコードに割り当てられた LSN は、増加するシーケンスを形成します。 つまり、ストリームに書き込まれたレコードに割り当てられた LSN は、同じストリームに書き込まれた前のレコードに割り当てられた LSN よりも常に大きくなります。

CLFS には、ログ レコードのマーシャリング、フラッシュ、および取得に加えて、いくつかのサービスが用意されています。 次の一覧で、これらの追加サービスのいくつかを説明します。

  • 関連するログ レコードのセットの領域は、事前に予約できます。 これは、クライアントが、CLFS がトランザクションを記述するすべてのレコードをログに追加できることを認識して、トランザクションを続行できることを意味します。

  • CLFS は、各ログ レコードのヘッダーを保持します。 クライアントは、ヘッダー内の特定のフィールドを設定して、後で逆の順序で走査できるリンクされたレコードのチェーンを作成できます。

  • CLFS は、ポリシーに従ってログ レコードを安定したストレージにフラッシュしますが、クライアントは一連のログ レコードを安定したストレージに強制することもできます。

  • CLFS は、ログのメタデータと、多重化されたログの各ストリームのメタデータを保持します。 クライアントはメタデータを表示し、メタデータの特定の部分を設定できます。

  • 各ストリームについて、CLFS は、クライアントがストリームのアクティブな部分を区別するために使用することができる、基本 LSN と最後の LSN を保持します。

  • 専用ログの場合、CLFS は、アーカイブされたログの部分を追跡するためにクライアントが使用することができる、アーカイブ末尾を (クライアントの要求に応じて) 保持します。

CLFS の特定の機能 (レコード ヘッダーの前の LSN フィールドや元に戻す次の LSN フィールドなど) は、ARIES を調べることでより良く理解することができます。 ARIES について詳しくは、次の論文を参照してください。

  • C: Mohan、Don Haderle、Bruce Lindsay、Hamid Pirahesh、Peter Schwarz、ARIES: A Transaction Recovery Method Supporting Fine-Granularity Locking and Partial Rollbacks Using Write-Ahead Logging (ARIES: ログ先行書き込みを使用した細かな粒度のロックと部分ロールバックをサポートするトランザクション回復方法)

  • C: Mohan、Repeating History Beyond ARIES (ARIES を超えて過去を再現)