(57)【要約】【課題】  複数のサーバ装置を有する記憶システムの処理能力を向上させる。【解決手段】  サーバ装置１００は、クライアントＣＬから受信したコマンドを他のサーバ装置１００に転送する場合には、コマンド中の制御データ部分のみを転送して、ユーザデータ部分は、共有メモリ２００を介してやり取りする。そのため、サーバ装置１００間で直接転送されるデータのサイズが削減されることになり、クライアントに対するレスポンス遅延が抑制され、記憶システム全体の性能向上を図ることができる。【選択図】  図１
2006119966.tif 000002
【特許請求の範囲】
【請求項１】
クライアントと接続され、該クライアントが用いるデータを記憶する記憶システムであって、
データを記憶する記憶装置と、前記記憶装置に記憶されたデータの少なくとも一部を各々排他的に管理する複数のサーバ装置と、前記各サーバ装置が共通して用いる共有メモリとを備え、
前記サーバ装置は、
データの入出力に関するコマンドを前記クライアントから受信した場合に、該コマンドの内容を解析することによって、該コマンドの処理対象となるデータを管理するサーバ装置を判別する判別部と、
前記判別部によって判別したサーバ装置が自身以外のサーバ装置である場合に、前記コマンド中に含まれる制御データを前記判別したサーバ装置に転送すると共に、該制御データの転送を受けたサーバ装置によって、該制御データにより特定されたデータが前記記憶装置から読み出されて前記共有メモリに転送されたときに、該共有メモリに転送されたデータを用いて前記コマンドに応じた処理を行うデータ処理部とを備える
記憶システム。
【請求項２】
請求項１に記載の記憶システムであって、
前記サーバ装置は、更に、前記判別部によるサーバ装置の判別を行った自身以外のサーバ装置から前記制御データの転送を受けたときに、該制御データによって特定されるデータを前記記憶装置から読み出し、前記共有メモリに転送する共有メモリ転送部を備える
記憶システム。
【請求項３】
請求項１または２に記載の記憶システムであって、
前記サーバ装置のデータ処理部は、前記コマンドがデータの書き込みに関するコマンドである場合には、前記コマンド中に含まれるユーザデータによって前記共有メモリに転送されたデータを更新する更新処理部を備える
記憶システム。
【請求項４】
請求項３に記載の記憶システムであって、
前記サーバ装置は、更に、前記共有メモリに転送したデータが、前記制御データを送信したサーバ装置によって更新された場合に、該更新されたデータを、前記記憶装置に書き戻す書込処理部を備える
記憶システム。
【請求項５】
請求項１〜４のいずれかに記載の記憶システムであって、
前記サーバ装置のデータ処理部は、前記コマンドがデータの読み出しに関するコマンドである場合には、前記共有メモリに転送されたデータを前記クライアントに対して出力する読出処理部を備える
記憶システム。
【請求項６】
請求項１〜５のいずれかに記載の記憶システムであって、
前記サーバ装置の判別部は、前記各サーバ装置と該各サーバ装置が固有に管理する前記記憶装置内のファイルシステムとの対応関係が定義された管理テーブルに基づき、前記コマンドの処理対象となるデータを管理するサーバ装置を判別するものである
記憶システム。
【請求項７】
請求項６に記載の記憶システムであって、
更に、前記管理テーブルの設定を前記サーバ装置毎に行うための管理装置を備える
記憶システム。
【請求項８】
請求項１〜７のいずれかに記載の記憶システムであって、
前記サーバ装置は、該サーバ装置が備えるローカルメモリ内の記憶領域のアドレスと前記共有メモリ内の記憶領域のアドレスとが共通のアドレス体系によってマッピングされたメモリマップを有しており、該メモリマップを用いて、前記共有メモリにアクセスする手段を備える
記憶システム。
【請求項９】
請求項１〜８のいずれかに記載の記憶システムであって、
前記共有メモリは、電源がバックアップされた不揮発性のメモリである
記憶システム。
【請求項１０】
データを記憶する記憶装置と、該記憶装置に記憶されたデータの少なくとも一部を各々排他的に管理する複数のサーバ装置と、前記各サーバ装置が共通して用いる共有メモリとを備える記憶システムに用いられる前記サーバ装置であって、
データの入出力に関するコマンドを前記クライアントから受信した場合に、該コマンドの内容を解析することによって、該コマンドの処理対象となるデータを管理するサーバ装置を判別する判別部と、
前記判別部によって判別したサーバ装置が自身以外のサーバ装置である場合に、前記コマンド中に含まれる制御データを前記判別したサーバ装置に転送すると共に、該制御データの転送を受けたサーバ装置によって、該制御データにより特定されたデータが前記記憶装置から読み出されて前記共有メモリに転送されたときに、該共有メモリに転送されたデータを用いて前記コマンドに応じた処理を行うデータ処理部と
を備えるサーバ装置。
【請求項１１】
記憶装置に記憶されたデータの少なくとも一部を各々排他的に管理する複数のサーバ装置のうちの一のサーバ装置が、他のサーバ装置とともに共有メモリを用いてデータの入出力を行うデータ処理方法であって、
データの入出力に関するコマンドを前記クライアントから受信した場合に、該コマンドの内容を解析することによって、該コマンドの処理対象となるデータを管理するサーバ装置を判別し、
前記判別したサーバ装置が自身以外のサーバ装置である場合に、前記コマンド中に含まれる制御データを前記判別したサーバ装置に転送すると共に、該制御データの転送を受けたサーバ装置によって、該制御データにより特定されたデータが前記記憶装置から読み出されて前記共有メモリに転送されたときに、該共有メモリに転送されたデータを用いて前記コマンドに応じた処理を行う
データ処理方法。
【請求項１２】
記憶装置に記憶されたデータの少なくとも一部を各々排他的に管理する複数のサーバ装置のうちの一のサーバ装置が、他のサーバ装置とともに共有メモリを用いてデータの入出力を行うためのコンピュータプログラムであって、
データの入出力に関するコマンドを前記クライアントから受信した場合に、該コマンドの内容を解析することによって、該コマンドの処理対象となるデータを管理するサーバ装置を判別する機能と、
前記判別したサーバ装置が自身以外のサーバ装置である場合に、前記コマンド中に含まれる制御データを前記判別したサーバ装置に転送すると共に、該制御データの転送を受けたサーバ装置によって、該制御データにより特定されたデータが前記記憶装置から読み出されて前記共有メモリに転送されたときに、該共有メモリに転送されたデータを用いて前記コマンドに応じた処理を行う機能と
をコンピュータに実現させるためのコンピュータプログラム。
【請求項１３】
請求項１２に記載のコンピュータプログラムをコンピュータが読み取り可能に記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クライアントと接続され、このクライアントが用いるデータを記憶する記憶システムに関する。
【背景技術】
【０００２】
近年、ネットワークを介してクライアントから転送されたデータを記憶するＮＡＳ（Network Attached Storage）と呼ばれる記憶システムが普及している。ＮＡＳは、主としてサーバ装置とディスク装置とから構成される。サーバ装置は、クライアントからデータ入出力に関するコマンドを受信し、このコマンドに応じてディスク装置に対するデータの読み書きを制御する。
【０００３】
近年では、クライアントの性能向上に伴い、クライアントが扱うデータのサイズが増加している。そのため、記憶システムに対して、記憶容量の増大が望まれるとともに、データの入出力速度の向上が望まれている。一般的に、記憶システムのデータの入出力速度を向上させるためには、例えば、サーバ装置のＣＰＵを高性能なものと交換したり、搭載するメモリの容量を増設することなどが必要である。しかし、サーバ装置に搭載可能なＣＰＵの種類やメモリの容量には限界があるため、近年では、サーバ装置自体の数を増やすことで、システム全体の性能向上を図る技術が提案されている。
【０００４】
このように、サーバ装置を複数備える記憶システムとして、下記特許文献１には、ネットワークエレメントと称された複数のサーバ装置が、スイッチング装置を介して複数のディスク装置に接続された記憶システムの構成が開示されている。
【０００５】
【特許文献１】米国特許第６６７１７７３号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、複数のサーバ装置を備える従来の記憶システムにおいて、あるサーバ装置が、クライアントから受信したコマンドを、そのコマンドの処理に適した他のサーバ装置に転送するような場合には、ディスク装置に書き込みを行うユーザデータも含めてコマンド全体を転送する必要があった。そのため、ユーザデータのサイズが大きい場合には、データ転送を行うサーバ装置のＣＰＵ負荷が増大し、クライアントに対するレスポンス遅延が発生するおそれがあった。このような課題は、ＮＡＳに限らず複数のサーバ装置を備える記憶システム全般に共通の課題であった。
【０００７】
本発明は、このように、サーバ装置間でコマンドを転送することに伴って生じる課題を解決するためになされたものであり、さらに、記憶システム全体の性能向上を図ることを目的としている。
【課題を解決するための手段】
【０００８】
上記目的を踏まえ、本発明の記憶システムは、クライアントと接続され、該クライアントが用いるデータを記憶する記憶システムであって、
データを記憶する記憶装置と、前記記憶装置に記憶されたデータの少なくとも一部を各々排他的に管理する複数のサーバ装置と、前記各サーバ装置が共通して用いる共有メモリとを備え、
前記サーバ装置は、
データの入出力に関するコマンドを前記クライアントから受信した場合に、該コマンドの内容を解析することによって、該コマンドの処理対象となるデータを管理するサーバ装置を判別する判別部と、
前記判別部によって判別したサーバ装置が自身以外のサーバ装置である場合に、前記コマンド中に含まれる制御データを前記判別したサーバ装置に転送すると共に、該制御データの転送を受けたサーバ装置によって、該制御データにより特定されたデータが前記記憶装置から読み出されて前記共有メモリに転送されたときに、該共有メモリに転送されたデータを用いて前記コマンドに応じた処理を行うデータ処理部とを備えることを要旨とする。
【０００９】
本発明の記憶システムが備えるサーバ装置は、クライアントから受信したコマンドの処理対象となるデータが、他のサーバ装置が管理しているデータであると判別した場合には、コマンド全体ではなく、コマンド中に含まれる制御データ部分のみを、そのサーバ装置に転送する。そのため、サーバ装置間でやり取りが行われるデータ量が削減されることになり、クライアントに対するレスポンス遅延が抑制され、記憶システム全体の処理能力を向上させることができる。
【００１０】
上記構成の記憶システムにおいて、
前記サーバ装置は、更に、前記判別部によるサーバ装置の判別を行った自身以外のサーバ装置から前記制御データの転送を受けたときに、該制御データによって特定されるデータを前記記憶装置から読み出し、前記共有メモリに転送する共有メモリ転送部を備えものとしてもよい。
【００１１】
このような構成によれば、記憶システムが備える全てのサーバ装置が、他のサーバ装置からの制御データの転送を受け付けることができる。
【００１２】
上記構成の記憶システムにおいて、
前記サーバ装置のデータ処理部は、前記コマンドがデータの書き込みに関するコマンドである場合には、前記コマンド中に含まれるユーザデータによって前記共有メモリに転送されたデータを更新する更新処理部を備えるものとしてもよい。この場合、前記サーバ装置は、更に、前記共有メモリに転送したデータが、前記制御データを送信したサーバ装置によって更新された場合に、該更新されたデータを、前記記憶装置に書き戻す書込処理部を備えるものとすることができる。
【００１３】
このような構成によれば、コマンド中に含まれるユーザデータをサーバ装置同士で直接授受することなく、共有メモリを介して記憶装置に書き込むことができる。そのため、各サーバ装置にかかる処理負担を軽減することができる。
【００１４】
上記構成の記憶システムにおいて、
前記サーバ装置のデータ処理部は、前記コマンドがデータの読み出しに関するコマンドである場合には、前記共有メモリに転送されたデータを前記クライアントに対して出力する読出処理部を備えるものとしてもよい。
【００１５】
このような構成によれば、記憶装置から読み出したデータを、サーバ装置同士で直接授受することなく、共有メモリを介してクライアントに出力することができる。そのため、各サーバ装置にかかる処理負担を軽減することができる。
【００１６】
上記構成の記憶システムにおいて、
前記サーバ装置の判別部は、前記各サーバ装置と該各サーバ装置が固有に管理する前記記憶装置内のファイルシステムとの対応関係が定義された管理テーブルに基づき、前記コマンドの処理対象となるデータを管理するサーバ装置を判別するものとしてもよい。
【００１７】
このような構成によれば、管理テーブルを用いることによって容易に制御データを転送すべきサーバ装置を判別することができる。
【００１８】
上記構成の記憶システムにおいて、
更に、前記管理テーブルの設定を前記サーバ装置毎に行うための管理装置を備えるものとしてもよい。
【００１９】
このような構成によれば、クライアントに対してアクセスを許可するファイルシステムをサーバ装置毎に柔軟に設定することができる。
【００２０】
上記構成の記憶システムにおいて、
前記サーバ装置は、該サーバ装置が備えるローカルメモリ内の記憶領域のアドレスと前記共有メモリ内の記憶領域のアドレスとが共通のアドレス体系によってマッピングされたメモリマップを有しており、該メモリマップを用いて、前記共有メモリにアクセスする手段を備えるものとしてもよい。
【００２１】
このような構成によれば、サーバ装置は、自己のローカルメモリに対するアクセスと同様の手法によって、容易に共有メモリにアクセスすることができる。
【００２２】
上記構成の記憶システムにおいて、
前記共有メモリは、電源がバックアップされた不揮発性のメモリであるものとしてもよい。
【００２３】
このような構成によれば、停電などによって電源が切断された場合であっても、共有メモリ内に記憶されたデータが喪失することを抑制することができる。
【００２４】
なお、上記記憶システムは、前記共有メモリを、前記各サーバ装置のローカルメモリ内にそれぞれ共有メモリ領域として備えるものとし、各サーバ装置は、相互に他のサーバ装置の共有メモリ領域をマッピングしたメモリマップを有するものとしてもよい。このような構成であれば、ハードウェア構成を簡略化することができる。
【００２５】
また、本発明は、次のようなサーバ装置としても構成することができる。すなわち、データを記憶する記憶装置と、該記憶装置に記憶されたデータの少なくとも一部を各々排他的に管理する複数のサーバ装置と、前記各サーバ装置が共通して用いる共有メモリとを備える記憶システムに用いられる前記サーバ装置であって、
データの入出力に関するコマンドを前記クライアントから受信した場合に、該コマンドの内容を解析することによって、該コマンドの処理対象となるデータを管理するサーバ装置を判別する判別部と、
前記判別部によって判別したサーバ装置が自身以外のサーバ装置である場合に、前記コマンド中に含まれる制御データを前記判別したサーバ装置に転送すると共に、該制御データの転送を受けたサーバ装置によって、該制御データにより特定されたデータが前記記憶装置から読み出されて前記共有メモリに転送されたときに、該共有メモリに転送されたデータを用いて前記コマンドに応じた処理を行うデータ処理部とを備えるサーバ装置である。
【００２６】
このような構成のサーバ装置によっても、サーバ装置間でやり取りが行われるデータ量が削減されることになるため、クライアントに対するレスポンス遅延が抑制され、記憶システム全体の処理能力を向上させることができる。
【００２７】
また、本発明は、上述した記憶システムやサーバ装置としての構成のほか、例えば、サーバ装置が他のサーバ装置と共に共有メモリを用いてデータの入出力を行うデータ処理方法やデータの入出力を制御するためのコンピュータプログラムとしても構成することができる。このコンピュータプログラムは、データ信号として搬送波内に具現化されていてもよいし、コンピュータ読み取り可能な記録媒体に記録されているものとしてもよい。記録媒体としては、例えば、ＣＤ−ＲＯＭやフレキシブルディスク、光磁気ディスク、ＤＶＤなどを用いることができる。
【発明を実施するための最良の形態】
【００２８】
以下、本発明の作用・効果を一層明らかにするため、本発明の実施の形態を実施例に基づき次の順序で説明する。
Ａ．記憶システムの構成：
Ｂ．ファイルアクセス処理：
【００２９】
Ａ．記憶システムの構成：
図１は、実施例としての記憶システム１０００のハードウェア構成を示す説明図である。記憶システム１０００は、ＬＡＮを介して接続されたクライアントＣＬ１，ＣＬ２が用いる種々のデータを記憶するためのファイルサーバとして用いられるシステムである。
【００３０】
本実施例の記憶システム１０００は、第１サーバ装置１００ａと、第２サーバ装置１００ｂと、共有メモリ２００と、ディスク装置４００ａ，４００ｂが接続されたディスクコントローラ３００ａと、ディスク装置４００ｃ，４００ｄが接続されたディスクコントローラ３００ｂとを備えており、これらは、スイッチ５００を介してそれぞれ接続されている。なお、ここではスイッチ５００を介して接続するものとしたが、バスやネットワークを介して接続するものとしてもよい。なお、サーバ装置やディスクコントローラ、ディスク装置の台数は任意であり、より多くの数を備えるものとしてもよい。
【００３１】
第１サーバ装置１００ａおよび第２サーバ装置１００ｂは、ディスク装置４００ａ〜４００ｄに記憶されたファイルシステムをそれぞれ排他的に管理している。例えば、図中に記載したファイルシステムＦＳ１〜ＦＳ３を第１サーバ装置１００ａが管理し、残りのファイルシステムＦＳ４〜ＦＳ８を第２サーバ装置１００ｂが管理することなどができる。なお、各サーバ装置１００は、ファイルシステムを完全に排他的に管理するものとしてもよいが、その一部を重複して管理するものとしてもよい。
【００３２】
本実施例の各サーバ装置１００は、他のサーバ装置１００が管理しているファイルシステムも含めて、記憶システム１０００内に保持されているファイルシステムの全ての所在を把握している。そのため、自己の管理しているファイルシステムだけではなく、他のサーバ装置１００が管理しているファイルシステムに対するアクセスもクライアントＣＬから受け付けることができる。例えば、第１サーバ装置１００ａが、クライアントＣＬ１から、第２サーバ装置１００ｂが管理しているファイルシステムＦＳ７へのデータの書き込みコマンドを受信したとすると、第１サーバ装置１００ａは、スイッチ５００を介して、このコマンド中の制御データ部分を第２サーバ装置１００ｂに直接転送し、コマンド中に含まるユーザデータ部分については、一旦、自身のローカルメモリ１３０ａ内に保持する。第１サーバ装置１００ａから制御データを受信した第２サーバ装置１００ｂは、共有メモリ２００内のキャッシュ位置を第１サーバ装置１００ａに通知する。第１サーバ装置１００ａは、通知された共有メモリ２００内のキャッシュ位置に対してローカルメモリ１３０ａ内に保持しておいたユーザデータを書き込む。第２サーバ装置１００ｂは、第１サーバ装置１００ａによって共有メモリに書き込まれたユーザデータを、自己の管理するファイルシステムＦＳ７に書き込みを行う。このような処理を行うことで、各サーバ装置１００は、他のサーバ装置１００が管理しているファイルシステムに対するアクセスを受け付けることができる。
【００３３】
次に、記憶システム１０００を構成する各装置のハードウェア構成について簡単に説明する。なお、説明の便宜上、サーバ装置やディスクコントローラを個別に区別する必要のない場合には、符号の一部（符号の末端のａ，ｂ等）を省略して説明する。
【００３４】
第１サーバ装置１００ａおよび第２サーバ装置１００ｂは、それぞれ、ＣＰＵ１１０、ＲＯＭ１２０、ローカルメモリ１３０、ＬＡＮに対して接続を行うためのネットワークインタフェース１４０、スイッチ５００に対して接続を行うためのアダプタ１５０等を備えている。
【００３５】
ＲＯＭ１２０には、サーバ装置１００の動作を制御するための制御プログラムが記憶されている。ＣＰＵ１１０は、この制御プログラムを実行することで、判別部、データ処理部、共有メモリ転送部、更新処理部、書込処理部、読出処理部として機能する。
【００３６】
ローカルメモリ１３０は、ＣＰＵ１１０が上述した制御プログラムを実行する際のワークエリアとして用いられる。また、ローカルメモリ１３０には、自己や他のサーバ装置１００が管理しているファイルシステムを統括的に管理するためのファイルシステム管理テーブルＦＴや共有メモリ２００内のデータを管理するキャッシュ管理テーブルＣＴが記憶されている。これらのテーブルの詳細については後述する。
【００３７】
ディスクコントローラ３００ａ，３００ｂは、それぞれ、スイッチ５００に対して接続を行うためのアダプタ３１０ａ，３１０ｂと、マイクロプロセッサ３２０ａ，３２０ｂとを備えている。マイクロプロセッサ３２０ａ，３２０ｂは、第１サーバ装置１００ａや第２サーバ装置１００ｂからの指示に従い、そのディスクコントローラ３００ａ，３００ｂに接続された磁気ディスク４００ａないし４００ｂに対するデータの読み書きを制御する。
【００３８】
共有メモリ２００は、各サーバ装置１００が共通してキャッシュメモリとして用いるメモリである。内部の記憶領域は、サーバ装置毎に使用可能な領域が区分されている。例えば、第１サーバ装置１００ａは、図１に示す共有メモリ２００中の「第１サーバ用領域」と示した領域を使用する。この共有メモリ２００は、バッテリによって記憶内容がバックアップされた不揮発性のメモリによって構成されている。そのため、停電などによって電源が遮断された場合であっても、記憶内容が保持されることになり、キャッシュされたデータが喪失することを抑制することができる。
【００３９】
図２は、各サーバ装置１００が自己のローカルメモリ１３０や共有メモリ２００にアクセスする際に用いるメモリマップを模式的に示す説明図である。このメモリマップには、個々のサーバ装置が備えるローカルメモリ１３０内の領域と共有メモリ２００内の領域が、共通のアドレス体系によって連続的にマッピングされている。各サーバ装置１００は、このメモリマップを用いることで、自己のローカルメモリ１３０に対するアクセス方法と同様の手法で共有メモリ２００にアクセスすることができる。
【００４０】
図３は、クライアントＣＬとサーバ装置１００間で授受されるコマンドのデータ構造を示す説明図である。図３（ａ）は、サーバ装置１００がクライアントＣＬから受信するリクエストコマンドのデータ構造を示し、図３（ｂ）は、サーバ装置１００がクライアントＣＬに対して返信するレスポンスコマンドのデータ構造を示している。図示したコマンド中、ハッチングを施した部分は、ディスク装置４００への読み書きの対象となるユーザデータを表し、その他の部分は、この読み書きを制御するための制御データを表している。
【００４１】
図３（ａ）に示すように、リクエストコマンドは、コマンド種別とファイルハンドルとコマンド長とパラメータとによって構成される。コマンド種別は、例えば、「リード」や「ライト」といったコマンドの種別を表す。ファイルハンドルは、コマンド処理の対象となるファイルを指定するための識別子である。ファイルハンドルは、後述するＧＦＳ−ＩＤとそのファイルシステム内で固有のＩＤとの組み合わせによって構成される。コマンド長は、コマンド全体のサイズを表す。パラメータには、コマンド種別に応じた種々の情報が記録される。
【００４２】
クライアントがサーバに対してリード要求を行う際に送信されるリクエストコマンドのパラメータ種別には、「リード」と指定され、パラメータには、オフセットとデータサイズとが含まれる。オフセットには、ファイルハンドルによって指定されたファイルの中で、実際に読み込みを行う部分の先頭アドレスが指定される。データサイズには、その読み込みを行う部分のサイズが指定される。
【００４３】
クライアントがサーバに対してライト要求を行う際に送信されるリクエストコマンドのパラメータ種別には、「ライト」と指定され、パラメータには、オフセットとデータサイズとユーザデータとが含まれる。オフセットには、ファイルハンドルによって指定されたファイルの中で、実際に書き込みを行う部分の先頭アドレスが指定される。データサイズには、書き込みを行うデータのサイズが指定される。ユーザデータには、書き込みを行うデータの実体が格納される。
【００４４】
図３（ｂ）に示すように、サーバ装置からクライアントに返信されるレスポンスコマンドは、ステータスとコマンド長とパラメータとにより構成される。ステータスは、レスポンスコマンドに応じて実行された処理の成否を表す。コマンド長は、レスポンスコマンド全体のサイズを表す。パラメータには、リクエストコマンドの種別に応じた種々の情報が記録される。
【００４５】
クライアントからリード要求を受けた場合に返信されるレスポンスコマンドのステータスには、データの読み出しに成功した場合には「ＯＫ」と記録され、失敗した場合には「ＮＧ」と記録される。パラメータには、属性とデータサイズとユーザデータとが記録される。属性には、そのデータのパーミッション情報が記録される。パーミッション情報とは、そのデータが読み書き可能かどうか等を示す情報である。データサイズには、読み出したデータのサイズが記録される。ユーザデータには、読み出されたデータの実体が格納される。
【００４６】
クライアントからライト要求を受けた場合に返信されるレスポンスコマンドのステータスには、データの書き込みに成功した場合には「ＯＫ」と記録され、失敗した場合には「ＮＧ」と記録される。また、パラメータには、実際に書き込まれたデータのサイズが記録される。
【００４７】
なお、本実施例では、データの読み書きに関するコマンドについて例示したが、記憶システム１０００はこれらのコマンド以外にも、データを削除するためのコマンドやディレクトリを作成するためのコマンド等、種々のコマンドを処理することができる。
【００４８】
図４は、サーバ装置１００のローカルメモリ１３０に記憶されるファイルシステム管理テーブルＦＴの構造を示す説明図である。このファイルシステム管理テーブルＦＴは、各サーバ装置１００が直接管理しているファイルシステムと他のサーバ装置１００が管理しているファイルシステムとを統括的に管理するためのテーブルである。このファイルシステム管理テーブルＦＴには、仮想ファイルシステムＩＤ（ＧＦＳ−ＩＤ）と、サーバＩＤ（Ｓ−ＩＤ）と、ローカルファイルシステムＩＤ（ＬＦＳ−ＩＤ）とが対応付けて記録されている。
【００４９】
仮想ファイルシステムＩＤは、サーバ装置１００がクライアントＣＬに対してアクセスを許可している仮想的なファイルシステムのＩＤである。サーバＩＤは、個々のサーバ装置１００に固有に割り当てられたＩＤである。本実施例では、第１サーバ装置１００ａにサーバＩＤとして「ｓ１」が、第２サーバ装置１００ｂにサーバＩＤとして「ｓ２」が割り当てられているものとする。ローカルファイルシステムＩＤは、そのサーバ装置１００が直接管理しているファイルシステムのＩＤである。各サーバ装置１００は、クライアントＣＬから仮想ファイルシステムＩＤが指定されれば、このファイルシステム管理テーブルＦＴを参照することで、そのファイルシステムの実体を管理しているサーバ装置１００を判別することができる。このファイルシステム管理テーブルＦＴは、サーバ装置１００毎に異なる内容が保持されていてもよい。この場合には、サーバ装置１００毎に、クライアントＣＬにアクセスを許可しているファイルシステムが異なることになる。
【００５０】
ファイルシステム管理テーブルＦＴは、ＬＡＮに接続された管理用端末ＭＴ（図１参照）を用いて編集が可能である。管理用端末ＭＴは、汎用的なコンピュータであり、ファイルシステム管理テーブルＦＴをサーバ装置１００から読み出して編集するためのプログラムがインストールされている。図５および図６は、ファイルシステム管理テーブルＦＴを編集する際に管理用端末ＭＴに表示される画面の一例である。図５に示すように管理用端末ＭＴには、ＧＦＳ−ＩＤやサーバＩＤ、ＬＦＳ−ＩＤのほかに、そのローカルファイルシステムがマウントされているマウントポイントや、そのファイルシステムのパーミッションを示す属性情報等が表示される。この画面上で、「作成」ボタンや「編集」ボタンが押されると、図６に示すような画面が表示され、各項目の入力／編集を行うことができる。また、ＧＦＳ−ＩＤの左隣に設けられたチェックボックスにチェックを入れて「削除」ボタンを押すことで、その仮想ファイルシステムをアンマウントすることができる。
【００５１】
図７は、サーバ装置１００のローカルメモリ１３０に記憶されるキャッシュ管理テーブルＣＴの構造を示す説明図である。このキャッシュ管理テーブルＣＴは、共有メモリ２００内に記憶されたキャッシュデータを管理するためのテーブルである。共有メモリ２００がキャッシュするデータの格納単位は４キロバイトであり、キャッシュ管理テーブルＣＴは、その格納単位毎に１つのエントリを有している。各エントリには、「リスト」「ファイルハンドル」「オフセット」「アドレス」「参照数」「ステータス」が記録される。
【００５２】
「リスト」は、キャッシュのヒット判定等を行う場合に、他のエントリへのポインタとなる管理情報である。「ファイルハンドル」は、そのエントリが管理しているキャッシュ領域に記憶されているファイルの識別子である。「オフセット」は、実際にそのキャッシュ領域に記憶されているファイル内の部分を表すオフセットアドレスである。「アドレス」は、そのエントリが管理している共有メモリ２００内のキャッシュ領域の先頭アドレスである。上述したように、キャッシュの格納単位は４キロバイトであるため、通常、１つのキャッシュ領域には、ファイルの一部分しか格納されない。そのため、「ファイルハンドル」と「オフセット」の組合せと「アドレス」とを用いることにより、ファイル中のどの部分がどのキャッシュ領域に格納されているかを管理することができる。なお、本実施例では、「ファイルハンドル」と「オフセット」の組合せを用いるものとしたが、「ｉｎｏｄｅ番号」と「オフセット」の組合せを用いるものとしてもよい。「ｉｎｏｄｅ番号」とは、ファイルハンドルと１対１に対応付けられている番号である。
【００５３】
エントリ中の「参照数」は、そのキャッシュ領域を参照しているクライアントの数である。「ステータス」は、そのキャッシュ領域の現在の状態を表す情報である。このステータスには、そのキャッシュ領域への書き込みが禁止されている場合には「ｌｏｃｋｅｄ」と記録され、そのキャッシュデータが既に参照された場合には「ｒｅｆｅｒｒｅｄ」と記録される。また、そのキャッシュデータが更新された場合には「ｄｉｒｔｙ」と記録される。この「参照数」や「ステータス」は、他のサーバ装置１００に対してそのキャッシュ領域に対するアクセスを許可するか否かを設定する際に用いられる情報である。
【００５４】
サーバ装置１００は、このように構成されたキャッシュ管理テーブルＣＴを参照することで、読み書きを行うデータが既に共有メモリ２００にキャッシュされているか否かを判別することができる。なお、共有メモリ２００にキャッシュされたデータは、共有メモリ２００の容量が使い尽くされると、最も長い間使用されていないデータから消去されることになる。
【００５５】
Ｂ．ファイルアクセス処理：
次に、以上のように構成された記憶システム１０００で実行されるファイルアクセス処理について、図８および図９に基づき説明する。
【００５６】
図８は、リクエストコマンドを受信したサーバ装置１００（以下、「主サーバ」という）が実行する主サーバ処理のフローチャートである。まず、主サーバは、クライアントＣＬからリクエストコマンドを受信すると（ステップＳ１００）、そのリクエストコマンドを一旦、ローカルメモリ１３０内に記憶する。リクエストコマンドには、リード要求の場合には、制御データが含まれ、ライト要求の場合には、制御データとユーザデータとが含まれる（図３（ａ）参照）。
【００５７】
次に、主サーバは、受信したリクエストコマンドの内容を解析して、このコマンドの処理対象となるデータを管理しているサーバ装置を判別する。具体的には、まず、リクエストコマンド中に記録されたファイルハンドルに含まれるＧＦＳ−ＩＤを抽出する（ステップＳ１１０）。例えば、ファイルハンドルが「ｇｆｓ０１ｆ００１」であれば、ＧＦＳ−ＩＤとして、「ｇｆｓ０１」が抽出される。次に、ファイルシステム管理テーブルＦＴ（図４参照）を参照して、このＧＦＳ−ＩＤに対応するサーバＩＤを検索する（ステップＳ１２０）。こうすることで、受信したコマンドの処理対象となるデータを管理しているサーバ装置１００を判別することができる。
【００５８】
次に、主サーバは、検索されたサーバＩＤが他のサーバ装置１００のサーバＩＤであるかを判別する（ステップＳ１３０）。判別の結果、そのサーバＩＤが自己のサーバＩＤであれば（ステップＳ１３０：Ｎｏ）、受信したリクエストコマンドに応じてリードやライト等のコマンド処理を行い（ステップＳ１４０）、そのリクエストコマンドに応じたレスポンスコマンドをクライアントに返信して（ステップＳ１５０）、主サーバ処理を終了する。ローカルメモリ１３０内に一時的に記憶したリクエストコマンドは、主サーバ処理の終了とともに消去する。
【００５９】
一方、検索されたサーバＩＤが他のサーバ装置１００のサーバＩＤであれば（ステップＳ１３０：Ｙｅｓ）、主サーバは、そのサーバＩＤが割り当てられたサーバ装置１００（以下、「副サーバ」という）に対して、クライアントから受信したリクエストコマンドの制御データ部分を転送する（ステップＳ１６０）。ここで、便宜上、説明を図９に移す。
【００６０】
図９は、副サーバが主サーバから制御データを受信した際に実行する副サーバ処理のフローチャートである。副サーバは、主サーバから制御データを受信すると（ステップＳ３００）、受信した制御データのコマンド種別を判別する（ステップＳ３１０）。その結果、コマンド種別がリードあるいはライトであれば、制御データ中に指定されたファイルハンドルとオフセットとが既にキャッシュ管理テーブルＣＴ（図７参照）に登録されているか否かを検索する（ステップＳ３２０）。かかる検索により、読み書きの対象となるファイルが既に共有メモリにキャッシュされているか否かを判別することができる。
【００６１】
検索の結果、読み書きの対象となるファイルがキャッシュされていないと判断されれば（ステップＳ３３０：Ｙｅｓ）、共有メモリ２００内に、このファイルを格納するための新たなキャッシュ領域を確保する（ステップＳ３４０）。また、この新たなキャッシュ領域に関する情報をキャッシュ管理テーブルＣＴに登録する。そして、必要に応じて、このキャッシュ領域に対して、制御データによって指定されたファイルの一部を自己の管理するファイルシステムから読み出して転送する（ステップＳ３５０）。上記ステップＳ３２０による検索の結果、読み書きの対象となるファイルが既に共有メモリ２００にキャッシュされていると判別された場合には、上記ステップＳ３４０とステップＳ３５０の処理は省略する。
【００６２】
次に、副サーバは、キャッシュ管理テーブルＣＴ中の参照数をインクリメントする。このとき、制御データのコマンド種別が「ライト」の場合には、主サーバ以外のサーバ装置からキャッシュされたデータに対して書き込みが行われないようにそのキャッシュ領域をロックする（ステップＳ３６０）。そして、副サーバは、キャッシュ領域のアドレスを主サーバに通知する（ステップＳ３７０）。なお、上記ステップＳ３１０において、コマンド種別がリードもしくはライトではないと判別された場合には、そのコマンド種別に応じた処理を行い（ステップＳ３８０）、その処理が完了した旨を主サーバに通知する（ステップＳ３９０）。
【００６３】
説明を図８に戻す。主サーバは、副サーバからの通知を受信すると（ステップＳ１７０）、クライアントＣＬから受信したリクエストコマンドのコマンド種別を判別する（ステップＳ１８０）。そして、その種別が、「リード」の場合には、副サーバから通知されたキャッシュ領域のアドレスを参照して共有メモリ２００内のキャッシュ領域からデータを読み込む（ステップＳ１９０）。「ライト」の場合には、副サーバから通知されたキャッシュ領域のアドレスに対してリクエストコマンドに含まれるユーザデータを書き込み、共有メモリに記憶されたデータを更新する（ステップＳ２００）。コマンド種別が「リード」や「ライト」でなければ、そのコマンドに応じた処理を行う（ステップＳ２１０）。
【００６４】
次に、主サーバは、リクエストコマンドのコマンド種別に応じたレスポンスコマンドを、クライアントに返信する（ステップＳ２２０）。コマンド種別が「リード」の場合には、上記ステップＳ１９０で共有メモリから読み出したデータがユーザデータとしてクライアントに返信されることになる。また、「ライト」の場合には、書き込みが成功したか否かの情報がクライアントに返信されることになる。主サーバは、こうしてクライアントにレスポンスコマンドを返信すると、副サーバに対して、処理が終了した旨の終了通知を送信し（ステップＳ２３０）、主サーバ処理を終了する。なお、上記ステップＳ１９０およびステップＳ２２０では、リードコマンドの処理にあたり、主サーバが共有メモリ２００からデータ読み出してクライアントに返信するものとしたが、主サーバを介すことなく共有メモリ２００から直接クライアントに対してデータを返信するものとしてもよい。
【００６５】
再度、説明を図９に移す。副サーバは、主サーバから終了通知を受信すると（ステップＳ４００）、コマンド種別が、「リード」および「ライト」の場合には、上記ステップＳ３６０でインクリメントした参照数をデクリメントする。また、コマンド種別が「ライト」の場合には、上記ステップＳ３６０でロックしたキャッシュ領域のロック状態を解除する（ステップＳ４１０）。コマンド種別が「リード」および「ライト」以外の場合には、そのコマンド種別に応じた終了処理を行う。
【００６６】
最後に、副サーバは、コマンド種別が「ライト」の場合には、図８のステップＳ２００において、主サーバによって共有メモリ２００に書き込まれたデータを、必要に応じて自己の管理するファイルシステムに書き戻して（ステップＳ３９０）、副サーバ処理を終了する。
【００６７】
なお、上述した主サーバ処理のステップＳ１４０（図８）における処理の詳細は省略したが、かかるステップでは、副サーバ処理のステップＳ３１０〜Ｓ３６０における処理と、主サーバ処理のステップＳ１８０〜Ｓ２１０における処理と、副サーバ処理のステップＳ４１０〜Ｓ４２０における処理とに相当する処理が実行される。
【００６８】
以上のように構成された本実施例の記憶システム１０００によれば、各サーバ装置１００は、他のサーバ装置１００の管理するファイルシステムまでも含めた仮想ファイルシステムを各クライアントＣＬに公開する。そのため、クライアントＣＬは、どのサーバ装置１００がどのファイルシステムを管理しているかを意識することなく、任意のサーバ装置１００を用いて所望のファイルシステムにアクセスすることができる。
【００６９】
また、本実施例のサーバ装置１００は、他のサーバ装置１００にコマンドを転送する場合には、制御データ部分のみを転送して、ユーザデータ部分は、共有メモリを介してやり取りを行う。そのため、サーバ装置１００間で直接転送されるデータのサイズが削減されることになり、サーバ装置１００のＣＰＵ負荷が軽減され、クライアントＣＬに対するレスポンス遅延が抑制される。この結果、記憶システム全体の性能向上を図ることができる。
【００７０】
以上、本発明の実施例について説明したが、本発明はこのような実施例に何ら限定されるものではなく、本発明の趣旨を逸脱しない範囲内において様々な形態で実施し得ることは勿論である。
【００７１】
例えば、上記実施例では、共有メモリ２００を不揮発性のメモリによって構成するものとしたが、これに対して、揮発性のメモリを用いる構成も可能である。この場合、主サーバが共有メモリ２００に書き込んだデータが、副サーバによって確実にディスク装置４００に書き込まれたことを確認した上で、レスポンスコマンドをクライアントに返信するようにするため、主サーバは、副サーバから図９のステップＳ４２０の処理が完了した旨の通知を受けた後に図８のステップＳ２２０の処理を行うことが好ましい。
【００７２】
また、記憶システム１０００は、共有メモリ２００を備えない構成とすることもできる。この場合には、各サーバ装置１００は、ローカルメモリ１３０内に、それぞれ共有メモリ領域を備え、それぞれの共有メモリ領域を相互にマッピングしたメモリマップを保持するものとする。このような構成であれば、システム構成を簡略化することができる。
【００７３】
また、各サーバ装置１００は、自己の管理するファイルシステムを動的に変更可能であるものとしてもよい。こうすることにより、例えば、第１サーバ装置１００ａの負荷が増大した場合に、この第１サーバ装置１００ａが管理しているファイルシステムの一部の管理を、第２サーバ装置１００ｂに割り振るといった制御を行うことができる。管理対象のファイルシステムを割り振る制御は、各サーバ装置１００が相互に負荷を監視して行うものとしてもよいし、管理用端末ＭＴが、各サーバ装置１００の負荷を監視して行うものとしてもよい。このような構成であれば、記憶システムの処理能力を、より向上させることができる。
【図面の簡単な説明】
【００７４】
【図１】記憶システム１０００のハードウェア構成を示す説明図である。
【図２】メモリマップを模式的に示す説明図である。
【図３】コマンドのデータ構造を示す説明図である。
【図４】ファイルシステム管理テーブルＦＴの構造を示す説明図である。
【図５】管理用端末ＭＴに表示される画面の一例である。
【図６】管理用端末ＭＴに表示される画面の一例である。
【図７】キャッシュ管理テーブルＣＴの構造を示す説明図である。
【図８】主サーバ処理のフローチャートである。
【図９】副サーバ処理のフローチャートである。
【符号の説明】
【００７５】
１０００…記憶システム
１００ａ…第１サーバ装置
１００ｂ…第２サーバ装置
１１０ａ，１１０ｂ…ＣＰＵ
１２０ａ，１２０ｂ…ＲＯＭ
１３０ａ，１３０ｂ…ローカルメモリ
１４０ａ，１４０ｂ…ネットワークインタフェース
１５０ａ，１５０ｂ…アダプタ
２００…共有メモリ
３００ａ，３００ｂ…ディスクコントローラ
３１０ａ，３１０ｂ…アダプタ
３２０ａ，３２０ｂ…マイクロプロセッサ
４００ａ，４００ｂ，４００ｃ，４００ｄ…ディスク装置
５００…スイッチ
ＣＬ１，ＣＬ２…クライアント
ＭＴ…管理用端末
ＦＴ…ファイルシステム管理テーブル
ＣＴ…キャッシュ管理テーブル
【図１】
2006119966.tif 000003
【図２】
2006119966.tif 000004
【図３】
2006119966.tif 000005
【図４】
2006119966.tif 000006
【図５】
2006119966.tif 000007
【図６】
2006119966.tif 000008
【図７】
2006119966.tif 000009
【図８】
2006119966.tif 000010
【図９】
2006119966.tif 000011