Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

B.3. Glock

GFS2 を理解するために、理解する必要がある最も重要な概念で、他のファイルシステムと区別されるのは、glocks の概念です。ソースコードの観点から、glock は、DLM を統合して 1 台のマシンにキャッシュするデータ構造です。各 glock は、1 つの DLM ロックと 1:1 の関係を持ち、そのロック状態のキャッシュを提供します。これにより、ファイルシステムの 1 つのノードから実行される反復操作が DLM を繰り返し呼び出す必要がないため、不要なネットワークトラフィックを回避できます。glock には、メタデータをキャッシュするカテゴリーとキャッシュしない広範なカテゴリーが 2 つあります。inode の glock およびリソースグループの glock の両方がキャッシュメタデータをキャッシュし、他のタイプの glock はメタデータをキャッシュしません。inode の glock はメタデータに加えてデータのキャッシングにも関与し、すべての glock の中で最も複雑なロジックを持っています。

表B.1 Glock モードおよび DLM ロックモード

Glock モードDLM ロックモード備考
UN IV/NL ロック解除 (I フラグに依存する glock または NL ロックに関連付けられた DLM ロックがない)
SH PR 共有 (保護された読み取り) ロック
EX EX 排他ロック
DF CW ダイレクト I/O およびファイルシステムのフリーズに使用される遅延 (同時書き込み)
Glock は、(別のノードの要求または仮想マシンの要求で) ロックが解除されるまでメモリー内に残り、ローカルユーザーはありません。この時点で、glock ハッシュテーブルから削除され、解放されます。glock が作成されると、DLM ロックは glock に即座に関連付けられません。DLM ロックは、DLM への最初の要求時に glock に関連付けられます。この要求が成功すると、「I」(initial) フラグが glock に設定されます。表B.4「glock フラグ」は、異なる glock フラグの意味を示しています。DLM が glock に関連付けられていると、DLM ロックは、少なくとも解放されるまで常に NL (Null) ロックモードのままになります。NL からロック解除への DLM ロックの降格は、常に glock の有効期間時の最後の操作になります。
各 glock には多数の「ホルダー」を関連付けることができ、それぞれが上位レイヤーからのロック要求を表します。コードの重要なセクションを保護するために、GFS2キューに関連するシステムコールおよびホルダーを glock のキューからからキューから取り出します。
glock 状態のマシンはワークキューに基づいています。パフォーマンス上の理由から、タスクレットを使用することが推奨されます。ただし、現在の実装では、そのコンテキストから I/O を送信し、使用を禁止する必要があります。
注記
ワークキューには、GFS2 トレースポイントと組み合わせて使用できる独自のトレースポイントがあります。
表B.2「Glock モードおよびデータタイプ」は、各 glock モードでキャッシュされる状態と、キャッシュされた状態がダーティーである可能性があるかどうかを示しています。これは、inode ロックとリソースグループロックの両方に適用されますが、リソースグループロック用のデータコンポーネントはなく、メタデータのみです。

表B.2 Glock モードおよびデータタイプ

Glock モードキャッシュデータキャッシュメタデータダーティーデータダーティーメタデータ
UN いいえ いいえ いいえ いいえ
SH はい はい いいえ いいえ
DF いいえ はい いいえ いいえ
EX はい はい はい はい