![]() |
Version 5.1 |
|||||||||||||||||||||||||||||
|
|
現在のストレージシステム(ディスクデバイスなど) は、ユーザーから見ると、またアプリケー ションと比較するとあまり「賢い」装置とはいえません。システム(デバイス) は、複数のブロッ クで構成されています。ブロックは固定サイズのデータセグメントで、サイズは例えば1K (1024 バ イト) です。ディスデバイスはコンピュータに接続して使用し、非常に簡単な要求しか認識されま せん。要求は、例えば次の通りです。
ディスクは、IDE、SCSI、FDDI のいずれかのインターフェイスを使ってコンピュータに接続できま す。こういったインターフェイスを介して、コマンドやデータがディスクに送られます。また、ディ スクからデータやコマンド完了コードが取り出されます。
ストレージシステム自体では、データや構造体は生成されません。つまり、ディスクデバイス上で ファイルやファイルディレクトリが作成されることはありません。ストレージシステムが扱うことが できるのはデータブロックのみであり、可能な処理はデータブロックの読み取りと書き込みに限定さ れます。
最近のオペレーティングシステム(OS) には、ファイルシステムと呼ばれるコンポーネントがあり ます。このコンポーネントは、OS カーネルの一部で、このファイルシステムによって「ファイル」 や「ファイルディレクトリ」が実装されます。
ファイルシステムには様々な種類があり、使用されている処理方式やアルゴリズムも異なります。た だし、次の基本機能は、ほとんどのファイルシステムで共通です。ファイルシステムは、ディスクインターフェイス(IDE やSCSI など) を介してディスクに READBLOCK(123456) コマンドを送信します。
ディスクデバイスから、指定されたブロックの情報がコンピュータに送られます。
ファイルシステムは、読み取られた情報をファイルシステムのキャッシュバッファに格納す ると同時に、その情報をアプリケーションに送信します。
続いて、未使用ブロック番号13477 が未使用ブロックリストから削除され、その未使用 ブロックがFile2 の7 番目のブロックとしてファイル割当テーブルに登録されます。つまり、 File2 のサイズは合計7 ブロックとなります。
ファイルシステムは、ディスクインターフェイス(IDE やSCSI など) を介して、WRITEBLOCK( 13477) コマンドと、アプリケーションプログラムで生成されたブロックデータを ディスクに送ります。
ディスクデバイス上で、そのブロックデータが指定されたディスクブロックに書き込まれ、 処理が完了します。
最後にファイルシステムによって、そのブロックデータがファイルシステムのキャッシュ バッファにコピーされます。
その後、アプリケーションからFile1 のブロック5 またはFile2 のブロック7 の読み取りの指示があっ た場合、ファイルシステムは、そのキャッシュバッファからブロック5 またはブロック7 の情報を取 り出します。したがって、ディスク処理は何も行われません。
オペレーティングシステム上で動作しているアプリケーションではいずれも、そのオペレーティング システムのファイルシステム(単一) が使用されます。その結果、データの整合性が保証されます。 例えば、File2 にディスクブロック13477 が割り当てられている場合、このブロックがFile2 以外の ファイルに割り当てられることはありません。ただし、File2 が削除されたり、そのサイズが7 ブ ロック未満に減少した場合、ディスクブロック13477 は必要に応じて別のファイルに割り当てられま す。
複数のサーバーコンピュータで同一のデータを使用する必要がある場合、一般にネットワークファイ ルシステム(NAS =ネットワーク接続ストレージとも呼びます) を使用します。
ネットワークファイルシステムとは、ファイルサーバーとネットワークで構成されるシステムをいい ます。ここでファイルサーバーとは、通常のコンピュータを指します。または、一般的なファイルシ ステムと一般的なディスクデバイスを備え、ファイルシステムによってディスクデバイスが制御され るようなOS システム( とくにデータの保存用に使用するOS システム) をいいます。
ネットワークファイルシステムの場合、クライアントコンピュータのOS カーネル内部で「スタブ」 が動作しています。このスタブは「ダミー」のファイルシステムで、このダミーのファイルシステム によりアプリケーションのファイル要求が「再翻訳」された後、その要求がネットワークを介して ファイルサーバーに送信されます。
上の例は、複数の「クライアント」コンピュータ(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 のファイルシステムによって、コンピュータX のファイル割当テー ブルが変更されますが、この処理はコンピュータY のメモリにロードされているファイル割 当テーブルにとっては無関係です。例えば、コンピュータY 上で動作しているアプリケーショ ンからファイルサイズの拡張の指示が出された場合、コンピュータY のファイルシステムに よって、そのファイルに対して上記と同じファイルブロック番号13477 が割り当てられる可 能性があります。これは、コンピュータY 上では、このブロック番号がすでにコンピュータ X によって割り当てられていることが認識されないためです。
その後、コンピュータY 上のプログラムによりFile1 のブロック5 のデータが変更されたと します。この変更は、コンピュータX のファイルシステムでは認識されません。その結果、 コンピュータX 上では、無効なデータ、つまりキャッシュに格納されている変更前のデータ がアプリケーションで使用されることになります。
上記のような問題があるため、1 台の共有ディスクと複数のコンピュータという組み合わせは、事実 上は使用不可能です。ただし、フェールオーバーシステムなど、任意の時点でディスクを使用してい るのは1 台のコンピュータという環境であれば利用が可能です。例えば、コンピュータX が停止、 またはコンピュータX による共有ディスクの使用が停止したときにのみ、コンピュータY による共 有ディスクの使用が開始されるという環境であれば問題はありません。
クラスタファイルシステムはソフトウェア製品で、上記の問題の解決を目的に開発されました。この ソフトウェアを使用することで、複数のコンピュータで単一の共有ディスクを使用するときに発生す る問題(ディスクスペースの割り当てとファイルデータに関する問題) を解決できます。
クラスタファイルシステムは、通常のファイルシステムの周囲に「ラッパー(包み紙)」を施すとい う方法で実装するのが一般的です。クラスタファイルシステムでは、一種のサーバー間ネットワーク を使ってサーバー相互で通信を行い、この通信を介して各サーバーのアクティビティを同期させると いう処理が行われます。サーバー間の「インターコネクト(連結)」は、通常のEthernet ネットワー ク、SAN ( コンピュータとディスクを接続)、高速で低レイタンシーの特殊な「クラスタインターコ ネクト」デバイスのいずれかを用いて実装が可能です。
上記は、3 台のコンピュータにそれぞれクラスタファイルシステムがインストールされており、各コ ンピュータ上で動作しているアプリケーションから要求が送信される場合の例です。
要求がクラスタファイルシステムから通常のファイルシステムに渡されます。通常のファイ ルシステムは、そのファイル割当テーブルをチェックし、このチェックによりFile2 に6 つの ブロックが割り当てられていることが特定されます。また、未使用ブロックリストをチェッ クし、このチェックで未使用ブロックとしてブロック番号13477 を使用できることが認識さ れます。ブロック番号13477 が未使用ブロックリストから削除され、ファイル割当テーブル 上でFile2 のデータとして7 番目のブロックが追加されます。つまり、File2 のサイズは7 ブ ロックとなります。
3 番目のコンピュータのクラスタファイルシステムから、サーバー間ネットワークを介して、 他のコンピュータのクラスタファイルシステムに対し、3 番目のコンピュータのクラスタファ イルシステムのファイル割当テーブルの内容が変更されたことが通知されます。この通知を もとに、他の2 つのコンピュータのクラスタファイルシステムのファイル割当テーブルが更 新され、同期が完了します。
3 番目のコンピュータの通常のファイルシステムからディスクインターフェイスを介して書 き込みコマンドWRITEBLOCK(13477) が共有ディスクに送信されます。その後、アプリケー ションプログラム上で生成されたブロックデータが送信されます。
最後に、ディスクデバイスによりブロックデータが所定のディスクブロックに書き込まれ、処 理が完了します。
このようにクラスタファイルシステムを使用することで、上記の問題が解決されます。つまり、クラ スタファイルシステムの使用により、単一の共有ディスク(ディスク自体は複数のこともあります) と複数のコンピュータの組み合わせという環境を実装できます。
現在、各種オペレーティングシステム向けに次のようなクラスタファイルシステム製品が出荷されて います。
Cluster File System | Operating System |
---|---|
Tru64 Cluster 5.x | HP Tru64 |
VERITAS Cluster File System | Sun Solaris, HP/UX |
Sun Cluster 3.0 | Sun Solaris |
Generalized Parallel File System (GPFS) | IBM AIX, Linux |
DataPlow | Linux, Solaris, Windows, IRIX |
PolyServe | Linux |
GFS | Linux |
NonStop Cluster | Unixware |