Red Hat Training

A Red Hat training course is available for Red Hat Virtualization

2.10. Red Hat Virtualization における排他的リソースと Sanlock

Red Hat Virtualization 環境の特定のリソースには、排他的にアクセスする必要があります。
SPM のロールはそのようなリソースの 1 つです。複数のホストが SPM になると、同じデータが 2 つの場所から同時に変更される可能性があるため、データが破損するリスクがあります。
Red Hat Enterprise Virtualization 3.1 以前では、SPM の除外は、セーフリース と呼ばれる VDSM 機能を使用して維持および追跡されていました。リースは、データセンター内のすべてのストレージドメインの特別な領域に書き込まれました。環境内のすべてのホストは、ネットワークに依存しない方法で SPM ステータスを追跡できます。VDSM のセーフリースは、SPM ロールという 1 つのリソースの排他性のみを維持していました。
Sanlock は同じ機能を提供しますが、SPM ロールをロック可能なリソースの 1 つとして扱います。Sanlock は、追加のリソースをロックできるため、より柔軟性があります。
リソースのロックが必要なアプリケーションは、Sanlock に登録できます。登録されたアプリケーションは、Sanlock が自分に代わってリソースをロックするように要求できるため、他のアプリケーションはそのリソースにアクセスできません。たとえば、VDSM が SPM ステータスをロックする代わりに、VDSM は Sanlock にロックするように要求するようになりました。
ロックは、ロックスペース のディスクで追跡され ます。ストレージドメインごとに 1 つのロックスペースがあります。SPM リソースのロックの場合、各ホストの liveness は、ストレージへの接続時に Manager から受け取った hostid を更新し、一定の間隔でタイムスタンプをロックスペースに書き込むホストの機能によってロックスペースで追跡されます。ids 論理ボリュームは、各ホストの一意の識別子を追跡し、ホストが hostid を更新するたびに更新されます。SPM リソースは、ライブホストのみが保持できます。
リソースは、leases 論理ボリュームのディスクで追跡されます。ディスク上の表現が、それを 取得 したプロセスの一意識別子で更新されたときに、リソースが取得されます。SPM ロールの場合、SPM リソースは、それを取得した hostid で更新されます。
各ホストの Sanlock プロセスは、リソースが取得されていることを確認するために 1 回だけリソースをチェックする必要があります。最初のチェックの後、Sanlock は、ロックされたリソースを持つホストのタイムスタンプが古くなるまで、ロックスペースを監視できます。
Sanlock は、リソースを使用するアプリケーションを監視します。たとえば、VDSM は SPM ステータスとホスト ID について監視されます。ホストが Manager から hostid を更新できない場合、ロックスペース内のすべてのリソースで多様性が失われます。Sanlock はリソースを更新して、リソースが使用されなくなったことを示します。
SPM ホストがストレージドメインのロックスペースにタイムスタンプを一定時間書き込むことができない場合、ホストの Sanlock のインスタンスは VDSM プロセスがそのリソースを解放することを要求します。VDSM プロセスが応答すると、そのリソースが解放され、ロックスペース内の SPM リソースを別のホストが取得できます。
SPM ホスト上の VDSM がリソースを解放する要求に応答しない場合、ホスト上の Sanlock は VDSM プロセスを強制終了します。kill コマンドが失敗した場合、Sanlock は sigkill を使用して VDSM を強制終了しようとしてエスカレーションします。sigkill が失敗した場合、Sanlock は ウォッチドッグデーモン に依存してホストを再起動します。
ホストの VDSM がホスト ID を更新し、ロックスペースにタイムスタンプを書き込むたびに、ウォッチドッグデーモンは ペット を受け取ります。VDSM がこれを実行できない場合、ウォッチドッグデーモンは pet されなくなります。ウォッチドッグデーモンが一定時間ペットを受信しないと、ホストを再起動します。この最終レベルのエスカレーションに達すると、SPM リソースが解放され、別のホストが取得できることが保証されます。