(57)【特許請求の範囲】
【請求項１】
互いに異なるプロトコルを使用する複数のユーザ・コンピュータから入力されたアクセス要求に応答してストレージ内のデータを、複数のファイル・サーバのうちの１つを介してアクセスする方法であって、
前記複数のユーザ・コンピュータのうちの１つのユーザ・コンピュータから入力されたアクセス要求のプロトコルを判定するステップと、
前記複数のファイル・サーバによって使用される互いに異なる複数のプロトコルを識別するステップと、
前記入力されたアクセス要求のプロトコルを、前記複数のファイル・サーバのそれぞれによって使用されるプロトコルと比較するステップと、
前記比較するステップの次に、前記入力されたアクセス要求のプロトコルと一致するプロトコルを使用する前記ファイル・サーバが複数検出されたか否かを調べるステップと、
前記入力されたアクセス要求のプロトコルと一致するプロトコルを使用する前記ファイル・サーバが複数であることに応答して、該複数のファイル・サーバの１つが同じユーザ・コンピュータにより前回使用されたことを検出して、該前回使用されたファイル・サーバを選択するステップと、
前記選択に応答して前記入力されたアクセス要求を、前記選択されたファイル・サーバにルーティングするステップと、
前記選択されたファイル・サーバが、前記ルーティングされたアクセス要求に応答して、互いに異なるプロトコルを使用する前記複数のファイル・サーバが共用する前記ストレージをアクセスするステップとを含む、方法。
【請求項２】
前記比較するステップの次に、前記入力されたアクセス要求のプロトコルと一致するプロトコルを使用する前記ファイル・サーバが複数検出されたか否かを調べるステップと、
前記入力されたアクセス要求のプロトコルと一致するプロトコルを使用する前記ファイル・サーバが１つであることに応答して、該１つのファイル・サーバを選択するステップと、
前記選択に応答して前記入力されたアクセス要求を、前記選択されたファイル・サーバにルーティングするステップと、
前記選択されたファイル・サーバが、前記ルーティングされたアクセス要求に応答して、互いに異なるプロトコルを使用する前記複数のファイル・サーバが共用する前記ストレージをアクセスするステップとを含む、請求項１に記載の方法。
【請求項３】
前記比較するステップの次に、前記入力されたアクセス要求のプロトコルと一致するプロトコルを使用する前記ファイル・サーバが複数検出されたか否かを調べるステップと、
前記入力されたアクセス要求のプロトコルと一致するプロトコルを使用する前記ファイル・サーバが複数であることに応答して、前記前回使用されたファイル・サーバに代えて、前記複数のファイル・サーバの１つをランダムに選択するステップと、
前記選択に応答して前記入力されたアクセス要求を、前記選択されたファイル・サーバにルーティングするステップと、
前記選択されたファイル・サーバが、前記ルーティングされたアクセス要求に応答して、互いに異なるプロトコルを使用する前記複数のファイル・サーバが共用する前記ストレージをアクセスするステップとを含む、請求項１に記載の方法。
【請求項４】
前記ファイル・サーバによって使用されるプロトコルが、該ファイル・サーバの元来のプロトコルである、請求項１乃至３に記載の方法。
【請求項５】
前記比較するステップが、前記複数のファイル・サーバのうちどのファイル・サーバが利用可能であるか及び該ファイル・サーバが使用するプロトコルを記述するテーブル内の前記プロトコルと前記アクセス要求のプロトコルと比較する、請求項１乃至４のいずれか１項に記載の方法。
【請求項６】
前記ルーティングするステップが、前記アクセス要求の内容を変更することなく該アクセス要求をルーティングする、請求項１乃至５のいずれか１項に記載の方法。
【請求項７】
コンピュータに請求項１乃至６のいずれか１項の手順を実行させるためのプログラム。
【請求項８】
互いに異なるプロトコルを使用する複数のユーザ・コンピュータと、
該複数のユーザ・コンピュータから入力されたアクセス要求を受け取るルータと、
該ルータに接続され、互いに異なるプロトコルを使用する複数のファイル・サーバと、
ストレージ・ネットワークを介して前記複数のファイル・サーバに接続され、前記互いに異なるプロトコルを使用する前記複数のファイル・サーバが共用するストレージとを備え、
前記ルータが、
前記複数のユーザ・コンピュータのうちの１つのユーザ・コンピュータから入力されたアクセス要求のプロトコルを判定し、
前記複数のファイル・サーバによって使用される互いに異なる複数のプロトコルを識別し、
前記入力されたアクセス要求のプロトコルを、前記複数のファイル・サーバのそれぞれによって使用されるプロトコルと比較し、
前記比較の次に、前記入力されたアクセス要求のプロトコルと一致するプロトコルを使用する前記ファイル・サーバが複数検出されたか否かを調べ、
前記入力されたアクセス要求のプロトコルと一致するプロトコルを使用する前記ファイル・サーバが複数であることに応答して、該複数のファイル・サーバの１つが同じユーザ・コンピュータにより前回使用されたことを検出して、該前回使用されたファイル・サーバを選択し、
前記選択に応答して前記入力されたアクセス要求を、前記選択されたファイル・サーバにルーティングし、
前記選択されたファイル・サーバが、前記ルーティングされた入力アクセス要求に応答して、互いに異なるプロトコルを使用する前記複数のファイル・サーバが共用する前記ストレージをアクセスする、ストレージ・システム。
【請求項９】
前記ルータが、
前記比較の次に、前記入力されたアクセス要求のプロトコルと一致するプロトコルを使用する前記ファイル・サーバが複数検出されたか否かを調べ、
前記入力されたアクセス要求のプロトコルと一致するプロトコルを使用する前記ファイル・サーバが１つであることに応答して、該１つのファイル・サーバを選択し、
前記選択に応答して前記入力されたアクセス要求を、前記選択されたファイル・サーバにルーティングし、
前記選択されたファイル・サーバが、前記ルーティングされたアクセス要求に応答して、互いに異なるプロトコルを使用する前記複数のファイル・サーバが共用する前記ストレージをアクセスする、請求項８に記載のストレージ・システム。
【請求項１０】
前記ルータが、
前記比較の次に、前記入力されたアクセス要求のプロトコルと一致するプロトコルを使用する前記ファイル・サーバが複数検出されたか否かを調べ、
前記入力されたアクセス要求のプロトコルと一致するプロトコルを使用する前記ファイル・サーバが複数であることに応答して、前記前回使用されたファイル・サーバに代えて、前記複数のファイル・サーバの１つをランダムに選択し、
前記選択に応答して前記入力されたアクセス要求を、前記選択されたファイル・サーバにルーティングし、
前記選択されたファイル・サーバが、前記ルーティングされたアクセス要求に応答して、互いに異なるプロトコルを使用する前記複数のファイル・サーバが共用する前記ストレージをアクセスする、請求項８に記載のストレージ・システム。
【請求項１１】
前記ファイル・サーバによって使用されるプロトコルが、該ファイル・サーバの元来のプロトコルである、請求項８乃至１０に記載のストレージ・システム。
【請求項１２】
前記ルータによる前記比較が、前記複数のファイル・サーバのうちどのファイル・サーバが利用可能であるか及び該が使用するプロトコルを記述するテーブル内の前記プロトコルと前記アクセス要求のプロトコルと比較する、請求項８乃至１１のいずれか１項に記載のストレージ・システム。
【請求項１３】
前記ルータによる前記ルーティングが、前記アクセス要求の内容を変更することなく該アクセス要求をルーティングする、請求項８乃至１２のいずれか１項に記載のストレージ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、不均一な環境において用いるための分散型オブジェクト・ストレージ・システムに関する。更に具体的には、本発明は、異なるネットワーク・プロトコルによってユーザが単一システムとネイティブに通信を行ってサービスを得ることを可能とするためのシステムおよび方法に関する。
【背景技術】
【０００２】
多くの従業員を有する会社等の大企業は、通常、多くのネットワーク化したコンピュータを作動させる。コンピュータは、企業において他のコンピュータからのアクセスを可能とする方法でデータを保存する必要がある。多くの場合、これは、ファイル・システムおよびファイル・サーバを用い、共通のストレージ・システム上に共有ファイルを保存することによって達成される。ファイル・システムのクライアントは、明確に定義されたネットワーク・ファイル・プロトコルを用いてファイル・サーバと通信を行う。コンピュータによってファイルを作成する場合、これは、ファイル・サーバを介してディスクに書き込まれる。このファイルを同一または別のコンピュータによって読み出す場合、データはディスクから読み出され、ファイル・サーバを介して流れ、次いでそのファイルに対するアクセスを要求したコンピュータに送信される。
【０００３】
多くの場合、ファイルにアクセスするコンピュータは、異機種であり、ＡＩＸ（登録商標）、Microsoft Windows（登録商標）、Solaris（登録商標）、ＨＰ−ＵＸ（登録商標）、およびLinux（登録商標）等の多くの異なるオペレーティング・システムを実行する場合がある。それらが実行するオペレーティング・システムに応じて、それらはファイル・サーバにアクセスするために異なるプロトコルを用いる場合がある。例えば、Microsoft Windows（登録商標）を実行するシステムは、共通のインターネット・ファイル・システム（ＣＩＦＳ）プロトコルを用いる傾向があるが、Unix（登録商標）のバリエーションを実行するものは、ネットワーク・ファイル・システム（ＮＦＳ）プロトコルを用いる傾向がある。しかし、それらは全て同一ファイルにアクセスする必要がある。それらがばらばらの組のファイルにアクセスするとしても、同一ファイル・サーバを共用可能であると、非常に便利である。
【０００４】
様々なネットワーク・プロトコルと通信可能なファイル・サーバを構築する試みが行われている。これらは、ネットワーク接続ストレージ（すなわちＮＡＳ：network attached storage）・システムと呼ばれる。しかしながら、各ＮＡＳシステムは、あるオペレーティング・システム上に構築され、そのシステムが有するネイティブのプロトコルは多くても１つである。Microsoft Windows（登録商標）上のＣＩＦＳサーバおよびLinux（登録商標）（または他のいずれかのUnix（登録商標）バリエーション）上のＮＦＳサーバは、各プロトコルの「ネイティブの」実施と見なされる。
【０００５】
従って、ＮＡＳシステムは、エミュレーションによって他のプロトコルを処理しなければならない。例えば、エミュレートしたＣＩＦＳおよびエミュレートしたＮＦＳが、ネットワーク・アプライアンス・ネットワーク接続ストレージ製品によって実施されている。ネイティブのＣＩＦＳおよびエミュレートしたＮＳＦが、ＩＢＭのネットワーク接続ストレージＮＡＳ２００製品によって実施されている。エミュレートしたＣＩＦＳおよびネイティブのＮＦＳが、Varitas ServPoint（登録商標）ＮＡＳシステムによって実施されている。
【０００６】
一般に、エミュレートしたプロトコルは、ネイティブ実施による機能もしくは性能またはその双方と完全にコンパチブルではなく、動作および通信上の困難が生じる。また、エミュレータの開発には時間および労力がかかるので、新しいプロトコルまたは既存のプロトコルの新しいバージョンを導入する場合、たとえ少しの間だとしても、ＮＡＳシステムによってサポートされない恐れがある。
【０００７】
これらの問題に対処する１つの方法は、異種ファイル・システム（ＨＦＳ）を用いることである。かかるシステムによって、異種システム間のファイル共用が可能となり、そのファイル・システム・クライアント（ＨＦＳクライアント）のいずれからも全てのファイルにアクセスすることが可能となっている。ＨＦＳクライアントは、各々がそれ自身のネイティブ・ネットワーク・プロトコルを有する異なるオペレーティング・システムを実行することができる。従って、これらのクライアントは、それらの各プロトコルのためのネイティブ・サーバとして機能する。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、ＨＦＳクライアントは、異なるネットワークＩＰアドレスを有する別個のシステムである。この結果、ユーザは、彼／彼女のコンピュータが用いているのはどのプロトコルであるか、ＨＦＳクライアントの各々によってサポートされているプロトコルを知り、対応するＨＦＳクライアントに対して具体的に要求を送出する必要がある。これを更に複雑にするのは、ＨＦＳクライアントが利用不可能になるか、または更新および置換されると、ＨＦＳクライアントに関する情報が動的である可能性があるという事実である。更に、ＨＦＳクライアント、次いでＨＦＳサーバを通過する際に、余分なホップがあるので、性能が低くなる可能性がある。
【０００９】
更に、単一のファイル・サーバによって扱うデータが多すぎる場合、多数のサーバが必要であり、ユーザはどのファイル・サーバが彼らのデータを有するかを知らなければならない。多数のサーバを用いる場合、それらのサーバ間で負荷のバランスを取ることは容易ではない。
【００１０】
従って、必要とされるのは、どのプロトコルを用いているか、および、どこにそれらのファイルがあるかに関わらず、ユーザにとって単一のエンティティとして見え（すなわち単一システムのイメージを提示する）、効率的かつネイティブに全てのそれらのサービス要求（すなわちファイル）を処理することができるシステムである。
【課題を解決するための手段】
【００１１】
本発明は、この必要性を満足させ、独立クレームに請求する方法、コンピュータ・プログラム、およびシステムを提示する。
【００１２】
本発明では、最近開発されたStorage Tank（商標）システムを異種ファイル・システム（ＨＦＳ）として用いることが好ましい。これについては、２００２年１月２４日の「IBM Storage Tank（商標） ADistributed Storage System」に記載されている。<http://www.almaden.ibm.com/cs/storagesystems/stortank/ExtStorageTankPaper01_24_02.pdf>を参照のこと。
【００１３】
本発明のシステムは、好適には、具体的にはStorage Tank（商標）であるＨＦＳ、および、１つ以上のインテリジェント・ルータから成る。ＨＦＳクライアントは、それらの各ネットワーク・プロトコルのためのネイティブ・サーバとして機能する。例えば、Microsoft Windows（登録商標）ＨＦＳクライアントおよびLinux（登録商標）ＨＦＳクライアントは、それぞれＦＩＣＳサーバおよびＮＦＳサーバとして機能することができる。しかしながら、Microsoft Windows（登録商標）およびLinux（登録商標）ＨＦＳクライアントは、異なるネットワークＩＰアドレスを有する別個のシステムである。この結果、インテリジェント・ルータを用いなければ、ユーザは、彼／彼女のコンピュータが用いているのはどのプロトコルであるか、ＨＦＳクライアントの各々によってサポートされるプロトコルを知り、対応するＨＦＳクライアントに対して具体的に要求を送信する必要がある。インテリジェント・ルータは、ユーザの部分 (part) に対する命令もインタラクションもなしに、自動的にユーザを正しいＨＦＳクライアントに方向付ける。インテリジェント・ルータは、良好な性能を提供する可能性が高い適切なＨＦＳクライアントにユーザを方向付ける。
【００１４】
好ましくは、インテリジェント・ルータは、ユーザにとって単一のネットワークＩＰアドレスを有する単一のエンティティとして見える。インテリジェント・ルータが要求を受信した場合、これは、共通インターネット・ファイル・システム（ＣＩＦＳ）、またはネットワーク・ファイル・システム（ＮＦＥ）等のプロトコル・タイプを調べて、適切なＨＦＳクライアントの１つへと要求をルーティングする。インテリジェント・ルータは、ＣＩＦＳ要求をＣＩＦＳサーバに転送し、ＮＦＳ要求をＮＦＳサーバに再送信する。
【００１５】
先に述べたように、データへの経路に余分なサーバが存在し、応答時間を長くするので、この手法には性能上の問題がある恐れがある。従って、本発明は、好適には、例えばＨＦＳとしてStorage Tank（商標）システム（本明細書中ではＳＴまたはストレージ・タンク・システムと呼ぶ）を用いる。ＳＴでは、ＨＦＳクライアント（ＳＴクライアント）を、ストレージ・ネットワークを用いて直接ストレージ・ディスクに接続する。それらは、また、別のネットワークを介して１組のメタデータ・サーバ（ＳＴサーバ）に接続される。
【００１６】
ＳＴプロトコルは、ＳＴクライアントとＳＴサーバとの間で通信を行うために用いられる好適なプロトコルである。このプロトコルは、ロッキングおよびデータ整合性モデルを実施する。これによって、ストレージ・タンク分散型ストレージ・システムは、単一ファイル・システムとして見え、そのように動作することができる。ＳＴクライアントは、メタデータを読み取り、対象のデータの位置を知るためだけに、ＳＴサーバにアクセスする。メタデータ情報を用いて、ＳＴクライアントは直接データにアクセスする。ＳＴクライアントとデータとの間の経路からサーバを除去することによって、はるかに高速で効率的なデータ転送接続を可能とする。
【００１７】
好適な実施形態では、本システムは、異種ファイル共用環境と共に１組のインテリジェント・ルータを利用して、マルチプル・ネットワーク製品をサポートする単一システム・イメージ・アーキテクチャを達成する。インテリジェント・ルータは、共に、単一のネットワークＩＰアドレスをユーザに提示し、プロトコルに基づいたルーティングを実行する。インテリジェント・ルータは、いくつかのプロトコルのエミュレートしたバージョンではなく、各サーバ・タイプごとの「ネイティブな」プロトコル実施によるシステム・アーキテクチャを可能とする。インテリジェント・ルータは、多数の異質ユーザが単一ファイル名空間において全ファイルを共用することができるシステム・アーキテクチャを容易にする。
【００１８】
ＳＴクライアントは、全てのメタデータ動作をＳＴサーバに方向付け、更に、全てのデータ動作を、高速ネットワークに接続されたストレージ・デバイスに方向付ける。加えて、ＳＴクライアントは、ユーザのオペレーティング・システムに対して（更に、システム上で動作しているアプリケーションに対して）可視的なメタデータを、ネイティブの、ローカルに接続されたファイル・システムから読み出されたメタデータと同一に見せる。
【００１９】
メッセージまたは要求がシステムに対する入力として到着すると、インテリジェント・ルータは、どのプロトコルがユーザと一致するかを判定し、そのメッセージを適切なＳＴクライアントにルーティングする。ＳＴクライアントがデータを検索した場合、データは、必ずしもインテリジェント・ルータを介してユーザに戻されない。しかしながら、他の実施形態では、検索したデータは、必要な場合には、インテリジェント・ルータを介してルーティングすることができる。
【００２０】
インテリジェント・ルータの実施において、サーバ装置は、例えば、ＣＩＦＳのためのポート１３９またはＮＦＳのためのポート２０４９のように、選択したポートのみを聴取する。それらのポートの１つに要求が到着すると、インテリジェント・ルータは、メディア・アクセス（ＭＡＣ）アドレスおよびプロトコル・タイプ等、ソース機械に固有の識別子を用いて、メッセージの宛先を判定する。これによって、同一のＳＴクライアントが、同一のソースからの全ての要求を処理することが保証され、インテリジェント・ルータがプロトコルのために状態情報を維持する必要がなくなる。
【００２１】
インテリジェント・ルータは、メッセージの内容を変更せず、従って、ＳＴクライアントは、インテリジェント・ルータの存在に気付かない。この結果、いかなるリターン・メッセージも、インテリジェント・ルータを介する必要はない。ウエブ・サーバの負荷均衡化のために開発された技術を用いて、１組の相互に関係するインテリジェント・ルータが、同一のホストネームもしくはＩＰアドレスまたはその双方を用いた単一のシステムとして見えるようにすることができる。
【００２２】
本発明の様々な特徴およびそれらを達成する方法を、以下の記述、特許請求の範囲、および図面を参照して、更に詳細に説明する。図面において、適宜、参照番号を再使用して、参照したアイテム間の対応を示す。
【発明を実施するための最良の形態】
【００２３】
以下の定義および説明は、本発明の技術的分野に関する背景情報を提供し、本発明の範囲を限定することなく、その理解を容易にすることを意図している。
【００２４】
コンテナ：  グローバルなネーム空間のサブ・ツリー。これは、負荷均衡化および管理の目的のため、１組のストレージ・タンク・オブジェクトをグループ化する。
【００２５】
ＩＰネットワーク：  インターネット・プロトコル・ネットワーク。ＩＰは、データグラムとも呼ばれるパケットのフォーマットおよびアドレッシング方式を規定する。ほとんどのネットワークは、ＩＰを、伝送制御プロトコル（ＴＣＰ）と呼ばれるもっと高いレベルのプロトコルと組み合わせ、これによって宛先とソースとの間の仮想接続を確立する。
【００２６】
メタデータ：  データに関するデータ。例えば、ＷＷＷ文書の主題を示すタグ。メタデータは、例えば、特定のデータ・セットが、どのように、いつ、誰によって収集されたか、そのデータがどのようにフォーマットされたか、およびそのデータがどこに配置されているかを記述する。
【００２７】
ネイティブ：  元来の形態を指す。例えば、多くのアプリケーションは、様々なフォーマットのファイルと動作することができるが、アプリケーションのネイティブのファイル・フォーマットは、それが内部で用いるものである。他の全てのフォーマットでは、アプリケーションはまずファイルをそのネイティブ・フォーマットに変換しなければならない。
【００２８】
プロトコル：  ２つのデバイス間でデータを伝送するための合意に基づくフォーマット。プロトコルは、以下のことを決定する。すなわち、用いるエラー・チェックのタイプ、ある場合はデータ圧縮法、送信側デバイスがどのようにメッセージ送信を終了したことを示すか、および、受信側デバイスがどのようにメッセージを受信したことを示すか。
【００２９】
サーバ：  ネットワーク・リソースを管理するネットワーク上のコンピュータまたはデバイス。
【００３０】
ストレージ・プール：  １つ以上のボリュームの集合。これは、コンテナに空間を割り当てるために、ボリュームの論理グループ化を行う。１つのコンテナ内のファイルは、異なるストレージ・プールに属する可能性がある。多数のコンテナが単一ストレージ・プール内にストレージを所有することができる。
【００３１】
ボリューム：  物理デバイスまたは論理デバイスとすることができる、エキスポートされたストレージ・デバイス。ボリュームは、ストレージ・プールに追加され、ボリューム上のデータに対するアクセスを必要とする全てのサーバおよびクライアントからアクセス可能でなければならない。
【００３２】
図１は、インテリジェント・ルータ１０を用いるストレージ・タンク・システム１００の例示的なアーキテクチャを示す。個別にまたは１つの組として動作するインテリジェント・ルータ１０は、ネットワーク２０を介して、ユーザ１５に、単一のネットワークＩＰアドレスを提示し、プロトコルに基づいたルーティングを実行して、マルチプル・ネットワーク・プロトコルをサポートする単一システム・アーキテクチャを達成する。
【００３３】
インテリジェント・ルータ１０は、ソフトウエア・プログラミング・コードまたはコンピュータ・プログラムを含み、これは通常、ホスト・サーバ内に具現化されるか、またはホスト・サーバ上にインストールされている。あるいは、インテリジェント・サーバ１０は、ディスケット、ＣＤ、ハード・ドライブ、または同様のデバイス等の適切なストレージ媒体上にセーブすることができる。システム１００は、ＷＷＷと関連付けて説明するが、インテリジェント・ルータ１０は、ＷＷＷもしくは他のソースまたはその双方から得られた可能性のあるタームのスタンドアロン・データベースと共に使用可能である。
【００３４】
インテリジェント・ルータ１０は、ストレージ・タンク・クライアント３０、３５、４０、４５、５０のブロック２５に接続されている。インテリジェント・ルータ１０には、ストレージ・タンク・クライアント・ブロック２５におけるいくつかの異なるストレージ・タンク・クライアントが利用可能である。個々のストレージ・タンク・クライアントは、異なるオペレーティング・システムまたはプロトコルを用いることができる。インテリジェント・ルータ１０によって、いくつかのプロトコルのエミュレートしたバージョンではなく、各サーバ・タイプごとの「ネイティブの」プロトコル実施によるシステム・アーキテクチャが可能となる。例示の通り、ストレージ・タンク・クライアント３０はＡＩＸ（登録商標）オペレーティング・システムを用い、ストレージ・タンク・クライアント３５はSolaris（登録商標）オペレーティング・システムを用い、ストレージ・タンク・クライアント４０はＨＰ／ＵＸ（登録商標）オペレーティング・システムを用い、ストレージ・タンク・クライアント４５はLinux（登録商標）オペレーティング・システムを用い、ストレージ・タンク・クライアント５０はMicrosoft Windows（登録商標）２０００オペレーティング・システムを用いる。
【００３５】
図示したオペレーティング・システムのタイプは、インテリジェント・ルータ１０が対応する多種多様なオペレーティング・システムを示す。ストレージ・タンク・クライアント３０、３５、４０、４５、５０の各々は、ストレージ・タンク・クライアント・ソフトウエアを動作させる。これは、例えば、Unix（登録商標）ストレージ・タンク・クライアント上の仮想ファイル・システム・インタフェース（ＶＦＳ）において、および、Microsoft Windows（登録商標）ストレージ・タンク・クライアント上のインストール可能ファイル・システム（ＩＦＳ）として実施される。このため、ストレージ・タンク・クライアント３０、３５、４０、４５、５０を、ＶＦＳまたはＩＦＳのいずれかとして示す。
【００３６】
ストレージ・タンク・クライアント・ブロック２５は、ストレージ・ネットワーク６０を介して、多数のストレージ・プール５５内のデータを共用する。また、ストレージ・タンク・クライアント・ブロック２５は、メタデータ・サーバ６５、７０、７５に接続されている。メタデータ６５、７０、７５は、共にクラスタ化してメタデータ・サーバ・クラスタ８０を形成する。多ストレージ・プール５５に保存されたデータのためのメタデータは、メタデータ・ストア８５に保存される。コンピュータ・データを保存するストレージ・システムおよびデバイスは、ストレージ・タンク・メタデータを保存するストレージ・システムまたはデバイスから分離することができる。
【００３７】
図１のストレージ・タンク・システム１００は、２つの論理ネットワーク、すなわち制御ネットワーク９０およびストレージ・ネットワーク６０を用いる。ストレージ・タンク・クライアント２５は、全てのメタデータ動作を、制御ネットワーク９０を介して、ストレージ・タンク・サーバ８０に方向付ける。ストレージ・タンク・クライアント３０、３５、４０、４５、５０は、ユーザ１５のオペレーティング・システムに対して可視的なメタデータを、ネイティブの、ローカルに接続されたファイル・システムから読み出されたメタデータと同一に見せる。制御ネットワーク９０は、メッセージおよびメタデータのみを伝える。制御ネットワーク９０を介して転送されるデータ量は最小である。
【００３８】
ストレージ・タンク・クライアント・ブロック２５およびメタデータ・サーバ８０、マルチプル・ストレージ・プール５５、およびメタデータ・ストア８５は、全て、高速ストレージ・ネットワーク６０に接続されている。ストレージ・ネットワーク６０は、あらゆるデータ転送のために用いられる。これによって、データ経路からストレージ・タンク・サーバ８０を除去し、性能オーバーヘッドを低減し、潜在的なデータ転送ボトルネックを解消する。
【００３９】
ストレージ・タンク・システム１００は、そのファイル・データのためのマルチプル・ストレージ・プール５５およびメタデータ・ストア８５のためのマルチプル・ストレージ・プールをサポートする。ほとんどのファイル・システムとは異なり、保存タンク・システムは、メタデータおよびデータを別個に保存する。また、ファイル名、作成日、およびアクセス制御情報等の標準的なファイル・メタデータを含むメタデータは、ディスク上のファイル・データの位置も含む（エクステント・リスト）。
【００４０】
メタデータは、高性能の高度に有効な専用サーバ・ストレージ上に維持され、データ・ストレージと同じストレージ・ネットワーク上または別個のストレージ・ネットワーク上に配することができ、クラスタ内の全てのストレージ・タンク・サーバによってアクセス可能である。メタデータは、ストレージ・タンク・クライアント３０、３５、４０、４５、５０によって直接アクセスされないが、制御ネットワーク９０を介してストレージ・タンク・プロトコルによって供される。
【００４１】
いずれかの所与のファイルのデータ・ブロックは、ストレージ・プールのうちの１つにおいてディスク上に保存される。データ・デイスクは、ストレージ・タンク・クライアント３０、３５、４０、４５、５０およびストレージ・タンク・サーバ８０の双方によってアクセス可能に、ストレージ・ネットワーク６０上で構成される。多くの状況において、ストレージ・ネットワーク６０は、ストレージ・タンク・データ・ディスク、クライアント、およびサーバのために、１つのゾーンによって構成される。また、必要に応じて、ストレージ・タンク・サーバとストレージ・タンク・クライアントのサブセットとによって排他的にアクセス可能ないくつかのゾーンを作成して、ユーザ１５の特別なセキュリティ要求を満足させることも可能である。
【００４２】
ユーザ１５は、ネットワーク２０を介してインテリジェント・ルータ１０と通信を行う。ネットワーク２０は、インターネット、ローカル・エリア・ネットワーク、または他のいずれかのネットワークとすることができる。
【００４３】
このシステムは、サーバ６５等の１つのストレージ・タンク・サーバ、サーバ８０等のサーバの１つのクラスタ、またはサーバ８０の多数クラスタを有することができる。クラスタ化したストレージ・タンク・サーバは、負荷均衡化、フェイルオーバ処理、およびスケーラビリティの増大を提供する。クラスタ化したストレージ・タンク・サーバ８０は、それら自身の高速ネットワーク上で、または、ストレージ・タンク・クライアント３０、３５、４０、４５、５０と通信を行うために用いられる制御ネットワーク９０上のいずれかで、相互接続されている。
【００４４】
ストレージ・タンク・プロトコルは、ストレージ・タンク・クライアント３５、４０、４５、５０とストレージ・タンク・サーバ８０との間で通信を行うために用いられるプロトコルである。プロトコルは、ロッキングおよびデータ整合性モデルを実施し、これによって、マルチプル・ストレージ・プール（またはストレージ・タンク分散型ストレージ・システム）５５は、単一ローカル・ファイル・システムとして見え、そのように動作することができる。ストレージ・タンク・プロトコルの１つの目的は、分散型環境においてストレージ・タンク・クライアント・ブロック２５とストレージ・タンク・サーバ８０との間に強力なデータ整合性を提供することである。
【００４５】
インテリジェント・ルータ１０は、好ましくは制御ネットワーク９０であるネットワークを介して、各ストレージ・タンク・クライアント２５、３０、３５、４０、４５に接続されている。ユーザ１５からメッセージまたは要求が到着すると、インテリジェント・ルータ１０は、どのプロトコルがユーザ１５の用いるものと一致するかを判定し、そのメッセージを、ストレージ・タンク・クライアント・ブロック２５内の適切なストレージ・タンク・クライアントにルーティングする。例えば、ユーザ１５がLinux（登録商標）オペレーティング・システムを実行し、マルチプル・ストレージ・プール５５に保存されたファイル内のデータにアクセスすることを望む。インテリジェント・ルータ１０は、ユーザ１５のメッセージから、後者がＮＦＳプロトコルを用いていることを認識する。この結果、インテリジェント・ルータ１０は、このファイル・アクセス要求を、ＮＦＳプロトコルにサービスするストレージ・タンク・クライアント４５にルーティングする。
【００４６】
図２は、インテリジェント・ルータ１０の高レベル階層を表す。インテリジェント・ルータ１０は、概ね、プロトコル判定モジュール２０５、クライアント機能テーブル２１０、ストレージ・タンク・クライアント選択モジュール２１５から成る。ストレージ・タンク・クライアント１（２２５）、保存タンク・クライアント２（２３０）、ストレージ・タンク・クライアントｎ（２３５）に表すように、多くのストレージ・タンク・クライアントがインテリジェント・ルータ１０に利用可能である。
【００４７】
動作において、更に図３の方法３００を参照すると、ステップ３０５において、ユーザ１５は、システム１０に要求を発するか、またはメッセージを送信する。ステップ３１０において、プロトコル判定モジュール２０５は、その要求またはメッセージを受信し、そのプロトコルを判定する。
【００４８】
インテリジェント・ルータ１０は、例えば、ＣＩＦＳのためのポート１３９またはＮＦＳのためのポート２０４９のように、選択したポートのみを聴取する。それらのポートの１つに要求が到着すると、インテリジェント・ルータ１０は、メディア・アクセス（ＭＡＣ）アドレスおよびプロトコル・タイプ等、ソース機械に固有の識別子を用いて、メッセージの宛先を判定する。これによって、同一のストレージ・タンク・クライアント２２５、２３０、または２３５が、同一の上位レベル・クライアント１５からの全ての要求を処理することが保証される。プロトコル・タイプは、例えば、共通インターネット・ファイル・システム（ＣＩＤＳ）またはネトワーク・ファイル・システム（ＮＦＳ）とすることができる。好適な実施形態では、ストレージ・タンク・クライアント２２５、２３０、および２３５は、クライアント可用性および性能モジュール２３６に接続され、これはストレージ・タンク・クライアント選択モジュール２１５に接続されている。ストレージ・タンク・クライアント選択モジュール２１５は、番号２３７によって示す選択されたクライアントを出力する。
【００４９】
ステップ３２０において、プロトコル判定モジュール２０５は、このメッセージのためのプロトコル情報を、ストレージ・タンク・クライアント選択モジュール２１５に送信する。ステップ３２５において、ストレージ・タンク・クライアント選択モジュール２１５は、メッセージのプロトコルを、クライアント機能テーブル２１０においてリスト化されたプロトコルと比較する。クライアント機能テーブル２１０は、ストレージ・タンク・システム１００においてどのストレージ・タンク・クライアント２２５、２３０、２３５が利用可能であるかと共に、これらのストレージ・タンク・クライアントがサービスするネイティブ・プロトコルを記述する。
【００５０】
決定ステップ３３０において、メッセージのプロトコルにサービスするストレージ・タンク・クライアント２２５、２３０、２３５の数が１である場合、ステップ３３５において、インテリジェント・ルータ１０は、ユーザ１５からのメッセージをその単一のストレージ・タンク・クライアントにルーティングする。例えば、ユーザ１５は、Linux（登録商標）オペレーティング・システムを動作させている。決定ステップ３３０において、インテリジェント・ルータ１０は、Linux（登録商標）オペレーティング・システムが用いるＮＦＳプロトコルの「ネイティブ」実施を動作している唯一のストレージ・タンク・クライアント、例えばストレージ・タンク・クライアント２（２３０）を発見する。次いで、インテリジェント・ルータ１０は、ユーザ１５からのメッセージをストレージ・タンク・クライアント２（２３０）にルーティングする。
【００５１】
決定ステップ３３０において、インテリジェント・ルータ１０が、ユーザ１５のプロトコルの「ネイティブ」バージョンを動作する２つ以上のストレージ・タンク・クライアントを見つける場合がある。この場合、ステップ３４０において、インテリジェント・ルータ１０は、適切な保存タンク・クライアントのうち１つを選択する。
【００５２】
例えば、ユーザ１５は、Microsoft Windows（登録商標）オペレーティング・システムを実行する。ステップ３３０において、システム１００は、ストレージ・タンク・クライアント１（２２５）およびストレージ・タンク・クライアント２（２３０）等、Microsoft Windows（登録商標）ＣＩＦＳプロトコルをネイティブにサポートする２つのストレージ・クライアントを発見する。本発明の好適な実施形態では、インテリジェント・ルータ１０は、メッセージまたは要求の受信者として、ストレージ・タンク・クライアント１（２２５）等、可能なストレージ・タンク・クライアントの１つをランダムに選択する。
【００５３】
代替的な実施形態では、ステップ３４０において、インテリジェント・ルータ１０は、例えばストレージ・タンク・クライアント２（２２５）のように、ユーザ１５が用いた前回のストレージ・タンク・クライアントを覚えて、同じストレージ・タンク・クライアントを選択する。前回のストレージ・タンク・クライアントを覚えるために、インテリジェント・ルータ１０は、メディア・アクセス・アドレスおよびメッセージ・プロトコル・タイプ等、ソース機械に固有の識別子を用いて、適切なサーバを決定してメッセージまたは要求を受信する。これによって、同一のストレージ・タンク・クライアントが、同一の上位レベル・クライアント８５からの全ての要求を処理することが保証される。この結果、インテリジェント・ルータ１０は、プロトコルのためにいかなる状態情報も維持する必要がない。
【００５４】
別の実施形態では、インテリジェント・ルータ１０は、適切なネイティブ・プロトコルをサポートするストレージ・タンク・クライアントを順次選択する（すなわち循環する）ことも可能であり、または、他のいずれかの方法でストレージ・タンク・クライアントを選択してメッセージを受信することも可能である。
【００５５】
いったんストレージ・タンク・クライアントを選択したら、ステップ３４５において、インテリジェント・ルータ１０は、選択したストレージ・タンク・クライアントにメッセージをルーティングする。インテリジェント・ルータ１０は、ストレージ・タンク・クライアントに送出するメッセージ内容を変更しない。この結果、いかなるリターン・メッセージも、インテリジェント・ルータ１０を介してルーティングする必要はない。しかしながら、リターン・メッセージは、必要な場合には、インテリジェント・ルータを介してルーティングすることができる。
【００５６】
本発明について、ストレージ・エリア・ネットワークに関連付けて例示の目的のためにのみ説明したが、本発明は、異種システム間でファイル共用を可能とするどんなファイル・システムにも適用可能であることは明らかであろう。
【図面の簡単な説明】
【００５７】
【図１】本発明を使用可能な例示的な動作環境の概略図である。
【図２】図１のインテリジェント・ルータの高レベル・アーキテクチャのブロック図である。
【図３】図１および２のインテリジェント・ルータの動作方法を示すプロセス・フローチャートである。
【図１】
0004521278.tif 000002
【図２】
0004521278.tif 000003
【図３】
0004521278.tif 000004