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 より以前のバージョンでは、safelease という VDSM 機能を使用して SPM が排他的に維持および追跡されていました。このリースは、データセンター内の全ストレージドメインにある特別な領域に書き込まれ、環境内のすべてのホストが、ネットワークに依存しない方法で SPM ステータスを追跡することが可能でした。VDSM のセーフリースでは、1 つのリソース (SPM ロール) の排他性のみが維持されました。

Sanlock は同じ機能を提供しますが、SPM ロールを、ロックできるリソースの 1 つとして扱います。これ以外のリソースもロックできるため、Sanlock にはより大きな柔軟性があります。

リソースのロックが必要なアプリケーションは、Sanlock で登録できます。登録されたアプリケーションは、Sanlock がアプリケーションの代わりにリソースをロックするように要求して、他のアプリケーションがそのリソースにアクセスできないようにすることが可能です。たとえば、VDSM は SPM ステータスをロックする代わりに、Sanlock にその処理を行うように要求します。

ロックは、lockspace のディスクで追跡されます。各ストレージドメインには 1 つの lockspace があります。SPM リソースのロックの場合、各ホストがライブ状態であるかどうか (ライブネス) は、ホストがストレージに接続したときに Manager から受け取った hostid を更新できるかどうか、ホストがタイムスタンプを定期的に lockspace に書き込むことができるかどうかにより、lockspace で追跡されます。ids 論理ボリュームは、各ホストの一意 ID を追跡し、ホストが hostid を更新するたびに更新されます。SPM リソースは、ライブ状態のホストのみが保持できます。

リソースは、leases 論理ボリュームのディスクで追跡されます。リソースは、リソースを取得したプロセスの一意な ID でディスク上のその表現が更新された場合に、取得された とみなされます。SPM ロールの場合、SPM リソースは SPM リソースを取得した hostid で更新されます。

各ホストの Sanlock プロセスは、リソースが取得されたことを確認するためにリソースを一度だけチェックする必要があります。最初のチェック後は、Sanlock は、ロックされたリソースがあるホストのタイムスタンプが古くなるまで lockspace を監視できます。

Sanlock は、リソースを使用するアプリケーションを監視します。たとえば、VDSM では SPM ステータスと hostid が監視されます。ホストが Manager から hostid を更新できない場合は、そのホストは lockspace のすべてのリソースに関して排他性を失います。Sanlock は、リソースが取得されなくなったことを示すようリソースを更新します。

SPM ホストが、一定期間ストレージドメインの lockspace にタイムスタンプを書き込むことができない場合、Sanlock のホストインスタンスは VDSM プロセスがそのリソースを解放するよう要求します。VDSM プロセスが応答する場合、そのリリースは解放され、別のホストが lockspace の SPM リソースを取得できます。

SPM ホスト上の VDSM がリソースを解放する要求に応答しない場合、ホスト上の Sanlock は VDSM プロセスを終了します。kill コマンドが失敗した場合、Sanlock は sigkill を使用して VDSM を終了しようとします。sigkill が失敗した場合、Sanlock は watchdog デーモン を使用してホストを再起動します。

ホスト上の VDSM が hostid を更新し、タイムスタンプを lockspace に書き込むたびに、watchdog デーモンは pet を受け取ります。VDSM がそのような処理を行えない場合、watchdog デーモン は pet を受け取らなくなります。watchdog デーモンが一定期間 pet を受け取らないと、ホストが再起動されます。この最終的な手段によって、確実に SPM リソースが解放され、別のホストが SPM リソースを取得できるようになります。