Sun Cluster データサービス開発ガイド (Solaris OS 版)

多重ホストデータ

高可用性のクラスタファイルシステムのデバイスは多重ホスト化されているため、ある物理ホストがクラッシュしても、正常に動作している物理ホストの 1 つがデバイスにアクセスできます。アプリケーションの高可用性を実現するには、そのデータが高可用性であることが必要です。したがって、アプリケーションのデータは、複数のクラスタノードまたはゾーンからアクセス可能なファイルシステムに格納されている必要があります。Sun Cluster で高可用性にできるローカルファイルシステムには、UNIX File System (UFS)、Quick File System (QFS)、Veritas File System (VxFS)、および Solaris ZFS (Zettabyte File System) があります。

クラスタファイルシステムは、独立したものであるように作成されたデバイスグループにマウントされます。ユーザーは、あるデバイスグループをマウントされたクラスタファイルシステムとして使用し、別のデバイスグループをデータサービス (HA Oracle ソフトウェアなど) で使用する raw デバイスとして使用することもできます。

アプリケーションは、データファイルの位置を示すコマンド行スイッチまたは構成ファイルを持っていることがあります。アプリケーションが、固定されたパス名を使用する場合は、アプリケーションのコードを変更せずに、このパス名を、クラスタファイルシステム内のファイルを指すシンボリックリンクに変更できます。シンボリックリンクの使用法の詳細については、「多重ホストデータを配置するためのシンボリックリンクの使用」を参照してください。

最悪の場合は、実際のデータの位置を示すための機構を提供するように、アプリケーションのソースコードを変更する必要があります。この機構は、追加のコマンド行引数を作成することにより実装できます。

Sun Cluster は、ボリュームマネージャーで構成されているUNIX UFS ファイルシステムと HA の raw デバイスの使用をサポートします。Sun Cluster ソフトウェアをインストールおよび構成するとき、クラスタ管理者は、どのディスクリソースを UFS ファイルシステムまたは raw デバイス用に使用するかを指定する必要があります。通常、raw デバイスを使用するのは、データベースサーバーとマルチメディアサーバーだけです。

多重ホストデータを配置するためのシンボリックリンクの使用

場合によっては、アプリケーションのデータファイルのパス名が固定されており、しかも、固定されたパス名を変更する機構がないものがあります。このような場合に、シンボリックリンクを使用すればアプリケーションのコードを変更せずに、済ませられる場合もあります。

たとえば、アプリケーションがそのデータファイルに固定されたパス名 /etc/mydatafile を指定すると仮定します。このパスは、論理ホストのファイルシステムの 1 つにあるファイルを示す値を持つシンボリックリンクに変更できます。たとえば、パスを /global/phys-schost-2/mydatafile へのシンボリックリンクにできます。

ただし、データファイルの名前を内容とともに変更するアプリケーション (または、その管理手順) の場合には、シンボリックリンクをこのように使用すると問題が生じる可能性があります。たとえば、まず新しい一時ファイル /etc/mydatafile.new を作成することで、アプリケーションが更新を実行するとします。次に、このアプリケーションは rename() システムコール (または mv コマンド) を使用して、この一時ファイルの名前を実際のファイルの名前に変更します。一時ファイルを作成し、その名前を実際のファイル名に変更することで、データサービスは、そのデータファイルの内容が常に適切であるようにします。

このとき、rename() アクションはこのシンボリックリンクを破壊します。このため、/etc/mydatafile という名前は通常ファイルとなり、クラスタのクラスタファイルシステムの中ではなく、/etc ディレクトリと同じファイルシステムの中に存在することになります。/etc ファイルシステムは各ホスト専用であるため、フェイルオーバーまたはスイッチオーバー後はデータが利用できなくなります。

根本的な問題点は、既存のアプリケーションはシンボリックリンクを認識せず、またシンボリックリンクを処理するようには作成されていないことにあります。シンボリックリンクを使用し、データアクセスを論理ホストのファイルシステムにリダイレクトするには、アプリケーション実装がシンボリックリンクを消去しないように動作する必要があります。したがって、シンボリックリンクは、クラスタのファイルシステムへのデータ配置に関する問題の完全な解決策ではありません。