第5章 ロック管理

ロック管理は、他のクラスターインフラストラクチャーコンポーネントが共有リソースへのアクセスを同期するために仕組みを提供する共通のクラスターインフラストラクチャーのサービスです。Red Hat クラスターでは、DLM (分散ロックマネージャー) がロックマネージャーです。
ロックマネージャーは、GFS ファイルシステムへのアクセスなどの、クラスター内のリソースへのアクセスを制御する Traffic Cop (交通を取り締まる警官) として機能します。ロックマネージャーがないと、共有ストレージへのアクセス制御がなくなり、クラスター内のノードが相互のデータを破損させる可能性があるので、ロックマネージャーは必要です。
名前に示されるように、DLM は分散ロックマネージャーであり、各クラスターノードで実行されます。ロック管理はクラスター内のすべてのノードを対象として分散されます。GFS2 および CLVM はロックマネージャーのロックを使用します。GFS2 は、ロックマネージャーのロックを使用して (共有ストレージ上の) ファイルシステムのメタデータへのアクセスを同期します。CLVM は、ロックマネージャーのロックを使用して (共有ストレージ上の) LVM ボリュームおよびボリュームグループへの更新を同期します。さらに、rgmanager は DLM を使用してサービスの状態を同期します。

5.1. DLM ロッキングモデル

DLM のロッキングモデルは、多数のロッキングモードのセットと、同期/非同期の両方の実行を提供します。アプリケーションは、ロックリソース上でロックを取得します。ロックリソースとロックの間には 1 対多の関係があります。単一のロックリソースには、これに関連付けられた複数のロックが含めることができます。
ロックリソースは、ファイル、データ構造、データベース、または実行可能なルーチンなどの実際のオブジェクトに対応させることができますが、必ずしもこれらのいずかに対応させる必要はありません。ロックリソースに関連付けるオブジェクトは、ロックの粒度を定めるものです。例えば、データベース全体のロックは粒度の粗いロックと見なされ、データベース内の各項目のロックは粒度の細かいロックと見なされます。
DLM のロッキングモデルは以下をサポートします。
  • リソースへのアクセスを次第に制限する 6 つのロッキングモード
  • 変換によるロックの昇格と降格
  • ロック要求の同期完了
  • 非同期完了
  • ロック値ブロックによるグローバルデータ
DLM は、ロックトラフィックを管理するためのノード間通信や、ノード障害の発生後のロックのリマスタリングまたはノードがクラスターに入る際のロック移行を行うリカバリープロトコルなどのロック機能をサポートする独自の仕組みを提供します。ただし、DLM はクラスター自体を実際に管理する仕組みは提供しません。従って DLM は、以下の最低要件を満たす他のクラスターインフラストラクチャー環境と連動してクラスター内で動作することが予期されます。
  • ノードはクラスターの一部である。
  • すべてのノードがクラスターのメンバーシップについて一致しており、定足数を有している。
  • IP アドレスはノード上で DLM と通信する必要がある。通常、DLM はノードごとの単一 IP アドレスに制限されるノード間通信用の TCP/IP を使用します (これはボンディングドライバーを使用して冗長化できます)。DLM は、1 ノードに複数の IP アドレスを許可するノード間トランスポート用として SCTP を使用するように設定できます。
DLM は、上記の最低要件を満たすすべてのクラスターインフラストラクチャー環境で機能します。オープンソースまたはクローズドソース環境のどちらを使用するについてはユーザーが決定できます。ただし DLM には、複数の環境を使って実施されるテスト量に関して主な制限があります。