CommuniGate Pro
Version 5.1
クラスタ
 
 
 
のストレージ

クラスタのストレージ

CommuniGate Pro のダイナミッククラスタは、その動作に「共有ファイルシステム」が必要です。 この共有ファイルシステムを介して、各バックエンドクラスタメンバー(バックエンドサーバー) が同じデータファイルに同時にアクセスできます。

共有ファイルシステムの実装形態として一番よく知られているのがファイルサーバーで、NAS (ネッ トワーク接続ストレージ) とも呼ばれます。

このセクションでは、共有ファイルシステム技術について簡単に説明します。またSAN (ストレー ジエリアネットワーク) は共有ファイルシステムではないこと、さらにクラスタファイルシステム ( このシステムをベースにSAN による共有ファイルシステムを構築できます) について概要を説明します。

ストレージシステムとファイルシステム

現在のストレージシステム(ディスクデバイスなど) は、ユーザーから見ると、またアプリケー ションと比較するとあまり「賢い」装置とはいえません。システム(デバイス) は、複数のブロッ クで構成されています。ブロックは固定サイズのデータセグメントで、サイズは例えば1K (1024 バ イト) です。ディスデバイスはコンピュータに接続して使用し、非常に簡単な要求しか認識されま せん。要求は、例えば次の通りです。

ディスクは、IDE、SCSI、FDDI のいずれかのインターフェイスを使ってコンピュータに接続できま す。こういったインターフェイスを介して、コマンドやデータがディスクに送られます。また、ディ スクからデータやコマンド完了コードが取り出されます。

ストレージシステム自体では、データや構造体は生成されません。つまり、ディスクデバイス上で ファイルやファイルディレクトリが作成されることはありません。ストレージシステムが扱うことが できるのはデータブロックのみであり、可能な処理はデータブロックの読み取りと書き込みに限定さ れます。


OS が単一の場合のファイルシステム

最近のオペレーティングシステム(OS) には、ファイルシステムと呼ばれるコンポーネントがあり ます。このコンポーネントは、OS カーネルの一部で、このファイルシステムによって「ファイル」 や「ファイルディレクトリ」が実装されます。

ファイルシステムには様々な種類があり、使用されている処理方式やアルゴリズムも異なります。た だし、次の基本機能は、ほとんどのファイルシステムで共通です。 下記は、ファイルシステムの動作を示した図です。
Single OS File System
上の例では、ファイルシステムは、2 つのアプリケーションからの要求に対して処理を行っています。
アプリケーション1 からファイルシステムに対して、File1 のブロック番号5 の情報を読み取れと いう指示が送られます。
ファイルシステムは、ファイル割当テーブルを参照してFile1 の情報を取得します。ここで、 File1 には5 つのブロックが割り当てられており、File1 のブロック番号5 はディスク上のブ ロック番号123456 に格納されていることが特定されます。

ファイルシステムは、ディスクインターフェイス(IDE やSCSI など) を介してディスクに READBLOCK(123456) コマンドを送信します。

ディスクデバイスから、指定されたブロックの情報がコンピュータに送られます。

ファイルシステムは、読み取られた情報をファイルシステムのキャッシュバッファに格納す ると同時に、その情報をアプリケーションに送信します。

アプリケーション2 からファイルシステムに対して、ブロック番号7 の情報をFile2 に書き込めと いう指示が送られます。
ファイルシステムは、ファイル割当テーブルを参照してFile2 の情報を取得します。ここで、 File2 には6 つのブロックが割り当てられていることが認識されます。また、未使用ディスク ブロックリストを参照し、未使用ブロック番号13477 が利用可能であることが認識されま す。

続いて、未使用ブロック番号13477 が未使用ブロックリストから削除され、その未使用 ブロックがFile2 の7 番目のブロックとしてファイル割当テーブルに登録されます。つまり、 File2 のサイズは合計7 ブロックとなります。

ファイルシステムは、ディスクインターフェイス(IDE やSCSI など) を介して、WRITEBLOCK( 13477) コマンドと、アプリケーションプログラムで生成されたブロックデータを ディスクに送ります。

ディスクデバイス上で、そのブロックデータが指定されたディスクブロックに書き込まれ、 処理が完了します。

最後にファイルシステムによって、そのブロックデータがファイルシステムのキャッシュ バッファにコピーされます。

その後、アプリケーションからFile1 のブロック5 またはFile2 のブロック7 の読み取りの指示があっ た場合、ファイルシステムは、そのキャッシュバッファからブロック5 またはブロック7 の情報を取 り出します。したがって、ディスク処理は何も行われません。

オペレーティングシステム上で動作しているアプリケーションではいずれも、そのオペレーティング システムのファイルシステム(単一) が使用されます。その結果、データの整合性が保証されます。 例えば、File2 にディスクブロック13477 が割り当てられている場合、このブロックがFile2 以外の ファイルに割り当てられることはありません。ただし、File2 が削除されたり、そのサイズが7 ブ ロック未満に減少した場合、ディスクブロック13477 は必要に応じて別のファイルに割り当てられま す。


ネットワークファイルシステム(NAS)

複数のサーバーコンピュータで同一のデータを使用する必要がある場合、一般にネットワークファイ ルシステム(NAS =ネットワーク接続ストレージとも呼びます) を使用します。

ネットワークファイルシステムとは、ファイルサーバーとネットワークで構成されるシステムをいい ます。ここでファイルサーバーとは、通常のコンピュータを指します。または、一般的なファイルシ ステムと一般的なディスクデバイスを備え、ファイルシステムによってディスクデバイスが制御され るようなOS システム( とくにデータの保存用に使用するOS システム) をいいます。

ネットワークファイルシステムの場合、クライアントコンピュータのOS カーネル内部で「スタブ」 が動作しています。このスタブは「ダミー」のファイルシステムで、このダミーのファイルシステム によりアプリケーションのファイル要求が「再翻訳」された後、その要求がネットワークを介して ファイルサーバーに送信されます。

NAS Shared File System

上の例は、複数の「クライアント」コンピュータ(OS) 上で動作している複数のアプリケーション から要求がファイルサーバー上のファイルシステムに送信され、各要求がファイルサーバー上のファ イルシステムによって処理される流れを示したものです。

上記のネットワークファイルシステムとOS が単一のシステム(前セクションのシステム) との違い は一つです。つまり、OS が一つのシステムでは、OS カーネルの内部のファイルシステムとアプリケーションとの間で内部的に通信が実行されますが、ネットワークファイルシステムの場合、クライ アント上の「スタブ」がネットワークを介して要求をファイルサーバーに送信し、またファイルサー バーからの応答を受け取り、その応答をアプリケーションに渡します。さらに、ネットワークファイ ルシステムでは、「実際の処理」(ファイル割当テーブルやキャッシュに関する処理) は、ファイルサー バーコンピュータ上で行われます。

ネットワークファイルシステムでは、物理ディスクへのアクセスはファイルサーバーコンピュータ上 でのみ実行されます。また、各サーバーシステム上のアプリケーションはすべて、同一のファイルシ ステム(ファイルサーバー上で動作しているファイルシステム) を使用します。この方式によりデー タの整合性が保証されます。例えば、File2 にディスクブロック13477 が割り当てられている場合、こ のブロックがFile2 以外のファイルに割り当てられることはありません。その後、File2 が削除された り、そのサイズが7 ブロック未満に減少した場合、ディスクブロック13477 は必要に応じて別のファ イルに割り当てられます。


ストレージエリアネットワーク

ストレージエリアネットワーク(SAN) とは、コンピュータとディスクデバイスを接続する特殊なネッ トワークで、例えば、SCSI ケーブルを介してディスクデバイス(単一もしくは複数) と単一のコン ピュータを接続するようなネットワークをいいます。

SAN に複数のコンピュータが接続されており、また複数のディスクデバイスがSAN に接続されている 場合、任意のコンピュータから任意のディスクデバイスに対してディスクコマンドを送ることができ ます。物理的には、SAN はFDDI やEthernet、その他のネットワーク方式で実装できます。

ディスクドライブやディスクアレイによってはデュアルチャンネルSCSI コントローラが搭載されてい るものもあります。この種のディスクでは、通常のSCSI ケーブルを介して2 台のコンピュータを1 台 のディスク(共有ディスク) に接続できます。この場合、2 台のコンピュータから、そのディスクに 対してディスク読み取り/ 書き込みコマンドに送信するという処理が可能です。つまり、この形式は、 ディスクが1 台のSAN の場合と同じです。

SAN では、上記のように共有ディスクの使用が可能ですが、SAN 自体には共有ファイルシステムはあ りません。そのため、複数のコンピュータから1 台の共有ディスク(例えば、デュアルチャンネル SCSI のディスク) にアクセスが実行され、その処理が通常のファイルシステム( コンピュータのファ イルシステム) を介して行われると、ディスクの論理構造がすぐに損傷します。

共有ディスクをコンピュータ上のファイルシステムを介して使用する場合、具体的には次のような2 つの問題があります。

ディスクスペースの割り当てに関する問題
例えば、コンピュータX とコンピュータY があり、この2 台が共有ディスクに接続(マウン ト) されており、また各コンピュータ上でそれぞれ、そのコンピュータのファイルシステム によってファイル割当テーブルがメモリにロードされているとします。ここで、コンピュー タX 上で動作するプログラムが新規のブロックを何らかのファイルに書き込みを実行したと します。この後、コンピュータX のファイルシステムが、そのファイル割当テーブルと未使 用ブロックリストをチェックし、そのファイルに新規のファイルブロック番号13477 を割り 当てられたとします。

上の例ではコンピュータX のファイルシステムによって、コンピュータX のファイル割当テー ブルが変更されますが、この処理はコンピュータY のメモリにロードされているファイル割 当テーブルにとっては無関係です。例えば、コンピュータY 上で動作しているアプリケーショ ンからファイルサイズの拡張の指示が出された場合、コンピュータY のファイルシステムに よって、そのファイルに対して上記と同じファイルブロック番号13477 が割り当てられる可 能性があります。これは、コンピュータY 上では、このブロック番号がすでにコンピュータ X によって割り当てられていることが認識されないためです。

ファイルデータに関する問題
コンピュータX 上で動作しているプログラムによりFile1 のブロック5 の読み取りが実行さ れ、そのブロックがコンピュータX のファイルシステムのキャッシュにコピーされたとしま す。この後、コンピュータX 上で、そのプログラムまたは別のプログラムによってブロック 5 の読み取りが試行された場合、キャッシュからデータがコピーされ使用されます。

その後、コンピュータY 上のプログラムによりFile1 のブロック5 のデータが変更されたと します。この変更は、コンピュータX のファイルシステムでは認識されません。その結果、 コンピュータX 上では、無効なデータ、つまりキャッシュに格納されている変更前のデータ がアプリケーションで使用されることになります。

上記のような問題があるため、1 台の共有ディスクと複数のコンピュータという組み合わせは、事実 上は使用不可能です。ただし、フェールオーバーシステムなど、任意の時点でディスクを使用してい るのは1 台のコンピュータという環境であれば利用が可能です。例えば、コンピュータX が停止、 またはコンピュータX による共有ディスクの使用が停止したときにのみ、コンピュータY による共 有ディスクの使用が開始されるという環境であれば問題はありません。


クラスタファイルシステム

クラスタファイルシステムはソフトウェア製品で、上記の問題の解決を目的に開発されました。この ソフトウェアを使用することで、複数のコンピュータで単一の共有ディスクを使用するときに発生す る問題(ディスクスペースの割り当てとファイルデータに関する問題) を解決できます。

クラスタファイルシステムは、通常のファイルシステムの周囲に「ラッパー(包み紙)」を施すとい う方法で実装するのが一般的です。クラスタファイルシステムでは、一種のサーバー間ネットワーク を使ってサーバー相互で通信を行い、この通信を介して各サーバーのアクティビティを同期させると いう処理が行われます。サーバー間の「インターコネクト(連結)」は、通常のEthernet ネットワー ク、SAN ( コンピュータとディスクを接続)、高速で低レイタンシーの特殊な「クラスタインターコ ネクト」デバイスのいずれかを用いて実装が可能です。

Cluster File System

上記は、3 台のコンピュータにそれぞれクラスタファイルシステムがインストールされており、各コ ンピュータ上で動作しているアプリケーションから要求が送信される場合の例です。

最初(左端)のコンピュータ上のアプリケーション1 から、クラスタファイルシステムに対してFile1 のブロック番号5 の読み取り要求が送信されます。
要求はクラスタファイルシステムから通常のファイルシステムに渡され、さらに共有ディス クに送られます。この後、データブロックが読み取られます。この読み取り処理は、コン ピュータが1 台のサーバーシステムの場合と同じです。
3 番目(右端) のコンピュータ上のアプリケーション2 から、クラスタファイルシステムに対して File2 のブロック番号7 の書き込み要求が送信されます。
他のコンピュータのクラスタファイルシステムに対して、サーバー間ネットワークを介して、 このブロック(ブロック番号7) が変更されることが通知されます。他のコンピュータのクラ スタファイルシステムにより、そのキャッシュから既存のブロックデータが削除されます。

要求がクラスタファイルシステムから通常のファイルシステムに渡されます。通常のファイ ルシステムは、そのファイル割当テーブルをチェックし、このチェックによりFile2 に6 つの ブロックが割り当てられていることが特定されます。また、未使用ブロックリストをチェッ クし、このチェックで未使用ブロックとしてブロック番号13477 を使用できることが認識さ れます。ブロック番号13477 が未使用ブロックリストから削除され、ファイル割当テーブル 上でFile2 のデータとして7 番目のブロックが追加されます。つまり、File2 のサイズは7 ブ ロックとなります。

3 番目のコンピュータのクラスタファイルシステムから、サーバー間ネットワークを介して、 他のコンピュータのクラスタファイルシステムに対し、3 番目のコンピュータのクラスタファ イルシステムのファイル割当テーブルの内容が変更されたことが通知されます。この通知を もとに、他の2 つのコンピュータのクラスタファイルシステムのファイル割当テーブルが更 新され、同期が完了します。

3 番目のコンピュータの通常のファイルシステムからディスクインターフェイスを介して書 き込みコマンドWRITEBLOCK(13477) が共有ディスクに送信されます。その後、アプリケー ションプログラム上で生成されたブロックデータが送信されます。

最後に、ディスクデバイスによりブロックデータが所定のディスクブロックに書き込まれ、処 理が完了します。

このようにクラスタファイルシステムを使用することで、上記の問題が解決されます。つまり、クラ スタファイルシステムの使用により、単一の共有ディスク(ディスク自体は複数のこともあります) と複数のコンピュータの組み合わせという環境を実装できます。

現在、各種オペレーティングシステム向けに次のようなクラスタファイルシステム製品が出荷されて います。

Cluster File SystemOperating System
Tru64 Cluster 5.x HP Tru64
VERITAS Cluster File SystemSun Solaris, HP/UX
Sun Cluster 3.0Sun Solaris
Generalized Parallel File System (GPFS)IBM AIX, Linux
DataPlow Linux, Solaris, Windows, IRIX
PolyServeLinux
GFSLinux
NonStop ClusterUnixware

CommuniGate® Pro Guide. Copyright © 1998-2007, Stalker Software, Inc.