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

System.IO.Log 名前空間は、レコード指向シーケンシャル I/O システムにログを記録するためのインターフェイスを定義します。この名前空間のクラスを使用すると、独自の診断ログやトランザクション処理システムを実装できます。この名前空間では、単純なファイルベースのログを使用するこのインターフェイスの実装、または ws2003r2 および Windows Vista で提供される Common Log File System (CLFS) を使用する実装も提供されます。

System.IO.Log 名前空間

System.IO.Log 名前空間は、レコード指向シーケンシャル I/O システムにログを記録するためのインターフェイスを定義します。このインターフェイスの実装はログ レコードの読み書きにも使用できます。そのような実装にログ レコードが追加されると、それぞれに一意の連続した番号が付与されます。連続番号は、指定されたレコードの順序どおり、常に決まった値で増加し、別のレコードの連続番号とは比較されません。連続番号は SequenceNumber の構造体で表されます。さらに、レコードのシーケンスは基本記憶域のスペースを保持するための機構を提供します。この保持機構を利用して、今後のログ レコード用に必要なスペースが確保されるようにすることができます。

このインターフェイスの 2 つの異なる実装が FileRecordSequence クラスおよび LogRecordSequence クラスにより提供されます。FileRecordSequence は、ファイル システム内の単一のログ ファイルに基づくレコード シーケンスです。

それに対して LogRecordSequence クラスは、Common Log File System (CLFS) ログ上でレコード シーケンス インターフェイスの実装を提供します。この実装の詳細については、「System.IO.Log Abstraction」セクションを参照してください。

CLFS

CLFS は、高パフォーマンスの、一般的な目的のファイル ログ サービスを提供します。専用クライアント アプリケーションがこのサービスを使用し、複数のクライアンで共有することにより、ログ アクセスが最適化されます。

ログ アーキテクチャ

CLFS は ARIES ログ マネージャです。ログ レコードを生成された順序で保存し、システム エラーの後でも、フラッシュされたログ レコードが確実に維持されるようにします。CLFS を使用すると、ログの管理とアプリケーション ポリシーの設定を行うことができます。CLFS は、次のアブストラクションを使用してログ記録を実装します。

  • レコードは、クライアントが書き込むデータの単位です。

  • 物理ログは、1 つまたは多数のログ ストリームが格納されるファイルおよび属性の物理的なセットです。ログ ストリームは、クライアントがログに記録するログ レコードのシーケンスです。これは、物理ログと似ています。専用ログには、名前のないストリームが 1 つだけあります。多重化されたログには、1 つまたは複数の名前付きストリームがあり、後でさらにストリームを作成できます。クライアントは、どの種類のログにも 1 つまたは複数のログ ストリームが含まれるログを記録できます。ただし、ログが作成されると、その種類から別の種類に変換することはできません。

多重化されたログは、同じログを共有する 2 つのアプリケーションまたはサブシステム間のコントラクトの一致を表します。多重化されたログの各ストリームは、そのクライアント所有者に対しては専用ログに格納されているかのように表示されます。多重化されたログを使用することの主な利点は、システム I/O コストが複数のストリーム間で共有されるため、複数の専用ログを使用するよりもシステム パフォーマンスが向上する場合があるという点です。多重化されたログ内のレコードとログ ブロックは、通常同じディスク シリンダに書き込まれるため、シークが最小限に抑えられて I/O の待ち時間が減少します。

ログ ファイル アクセスは、ローカル ディスクに行うことも、内部クライアント サーバーのサポートによってリモート システム上のディスクに行うこともできます。クラスタ内では、標準 OS メカニズムを使用してログ ファイルを別のシステムにフェールオーバーすることができます。ログに対するすべての書き込みは、フラッシュ バッファまたは新しいバッファが必要になるまでクライアントにバッファされます。可能な場合は、データはコピーされずにクライアント バッファからディスクに直接書き込まれます。回復処理時、バックアップ時、またはトランザクションの中止が急増したときのディスク アクセスを減らすために、読み取りはキャッシュされます。

物理ログは、実際にはメタデータおよび任意の数のコンテナ ファイル (またはファイル内のストリーム) を保持する "基本ログ ファイル" (blf) として格納されます。ログを作成する場所を定義して、ログ コンテナを直接作成できます。ログを使用可能にするには、コンテナを 2 つ以上追加する必要があります。ただし、ログ ポリシーはコンテナがなくても設定できます。

System.IO Log アブストラクション

LogRecordSequence クラスは、Common Log File System (CLFS) ログ上でレコード シーケンス インターフェイスの実装を提供します。標準のレコード指向の機能に加えて、ログがいっぱいになる条件を回避し、同じ物理ファイル上でクライアントを多重化するためのポリシー モデルを提供します。CLFS ログ ファイルを直接操作および管理するためのインターフェイスを提供する LogStore クラスと共に動作します。LogStore クラスと LogRecordSequence クラスの関係は、ディスク ファイルと FileStream オブジェクトの関係に似ています。ディスク ファイルは具象的な記憶域を提供し長さや最終アクセス日時などの属性を持つのに対して、FileStream オブジェクトはファイルに対する読み書きで使用できるファイルに関するビューを提供します。同様に、LogStore クラスはポリシーやディスク エクステントのコレクションなどの属性を持つのに対して、LogRecordSequence クラスはデータを読み書きするためのレコード指向の機構を提供します。

FileRecordSequence クラスにより表されるファイル レコード シーケンスとは異なり、LogStore インスタンスは LogExtent インスタンスにより表されるディスク エクステントのコレクションにデータを保存します。指定の LogStore インスタンス内のエクステントはすべて、均一のサイズを持ちます。また、エクステントの増加分について、LogStore インスタンスに対して領域の追加と削除が行われます。

実際のログ レコードは、LogRecord クラスのインスタンスで表されます。

ポリシー

LogStore インスタンスには、ポリシーを関連付けることができます。これらは、LogPolicy インスタンスにより表されます。ポリシーは、エクステントの最大数と最小サイズなど、ログで準拠を試みる規則と、一定条件下での LogStore の拡大および縮小の手順を決定します。また、LogStore インスタンスをアーカイブ可能にするかどうかを指定できます。

ポリシーはログごとに設定され、揮発性を有します。つまり、ログへの各ハンドルを閉じると、ポリシーは存在しなくなります。

セキュリティ

ログは、標準 NTFS ACL (アクセス制御リスト) により保護されます。FAT ドライブでは保護されないため、ログを FAT ドライブに格納することは推奨されません。

関連項目

概念

単純なファイル ログ システム

Footer image

このトピックに関するコメントを Microsoft に送信する。

Copyright © 2007 by Microsoft Corporation.All rights reserved.