(57)【要約】【課題】  本発明の実施例はクライアントに単一のネームスペースを提供する分散型ストレージシステムからクライアントへのファイル転送性能を向上するための方法と装置を提供する。【解決方法】  一つの実施例では、分散型ストレージシステム内のファイルにアクセスを提供するシステムは、ネットワークを経由して接続された複数のストレージノードと少なくとも一式のコンピュータ装置を含む。各ストレージノードは、少なくとも一式のコンピュータ装置の一つからファイルへのファイルアクセス要求をレシーバストレージノードとして受信すると、予め定められたポリシーに従って、ファイルアクセス要求をファイルのオーナーストレージノードにリダイレクトするようにファイルアクセス要求を行っているコンピュータ装置に通知するか否か決定するように構成される。予め定められたポリシーは、ファイルのファイルタイプ又はファイルサイズの少なくとも一方に基づいて、ファイルアクセス要求をリダイレクトするか否かに対する条件を規定する。【選択図】図１
2010092463.tif 000002
【特許請求の範囲】
【請求項１】
分散型ストレージシステム内のファイルへのアクセスを提供するシステムに於いて、該システムは、ネットワークを経由して接続される複数のストレージノードと少なくとも一式のコンピュータ装置を含み、
各ストレージノードは、前記少なくとも一式のコンピュータ装置の一つからファイルへのファイルアクセス要求をレシーバストレージノードとして受信すると、予め定められたポリシーに従って、該ファイルアクセス要求を該ファイルのオーナーストレージノードにリダイレクトするように前記ファイルアクセス要求を行っている前記コンピュータ装置に通知するか否か決定するように構成され、
前記予め定められたポリシーは、前記ファイルのファイルタイプ又はファイルサイズの少なくとも一方に基づいて、前記ファイルアクセス要求をリダイレクトするか否かの条件を規定する、
ことを特徴とするシステム。
【請求項２】
前記レシーバストレージノードは、前記ファイルアクセス要求を前記オーナーストレージノードにリダイレクトする際に、前記ファイルをキャッシュに格納する先読み対象に指定する、先読み要求を前記オーナーストレージノードに送信するように構成される、ことを特徴とする請求項１に記載のシステム。
【請求項３】
前記レシーバストレージノードは、前記ファイルのファイルタイプ又はファイルサイズの少なくとも一方に基づいて前記ファイルアクセス要求をリダイレクトするか否かの前記条件を指定するポリシーテーブルを調べることにより、前記ファイルアクセス要求を前記オーナーストレージノードにリダイレクトするように前記ファイルアクセス要求を行っている前記コンピュータ装置に通知するか否か決定する、ことを特徴とする請求項１に記載のシステム。
【請求項４】
前記条件は、前記ファイルの前記ファイルタイプと前記ファイルサイズの両者に基づいており、更に前記ファイルを要求する前記コンピュータ装置、前記ファイルの外部パスの少なくとも一方、又は前記ファイルアクセス要求の中で指定される少なくとも一つの要求パラメータに基づいている、ことを特徴とする請求項３に記載のシステム。
【請求項５】
前記ポリシーテーブルは前記ストレージノード各々の中に保存される、ことを特徴とする請求項３に記載のシステム。
【請求項６】
前記レシーバストレージノードは、前記ファイルに対するリダイレクトフラグを調べることにより、前記ファイルアクセス要求を前記オーナーストレージノードにリダイレクトするように前記ファイルアクセスを行っている前記コンピュータ装置に通知するか否か決定し、該リダイレクトフラグは、前記ストレージノード内に保存される各ファイルに対して、それに対応するファイルへのファイルアクセス要求をリダイレクトするか否か指定する、ことを特徴とする請求項１に記載のシステム。
【請求項７】
前記リダイレクトフラグは、ファイルが前記ストレージノードの一つに書き込まれる時点で以下のステップ、即ち、
前記ファイルの前記ファイルタイプ又は前記ファイルサイズの少なくとも一方に基づいて前記予め定められたポリシーに従って、ファイルアクセス要求を前記ファイルのオーナーストレージノードにリダイレクトするか否か決定するステップと、
前記決定するステップに従って、前記リダイレクトフラグをリダイレクトすべく又はリダイレクトしないように設定するステップ、
を実行することにより設定される、ことを特徴とする請求項６に記載のシステム。
【請求項８】
前記ファイルアクセス要求の前記ファイルは多数のポーションに分割されて複数の前記ストレージノード内に保存され、
各ストレージノードは、前記レシーバストレージノードとして、予め定められたポリシーに従って、前記ファイルアクセス要求を前記ファイルの前記多数のポーションのオーナーストレージノードにリダイレクトするように前記ファイルアクセス要求を行っている前記コンピュータ装置に通知するか否か決定するように構成される、
ことを特徴とする請求項１に記載のシステム。
【請求項９】
前記レシーバストレージノードは、前記ファイルアクセス要求を前記ファイルの前記多数のポーションの前記オーナーストレージノードにリダイレクトする際に、前記ファイルの前記ポーションをキャッシュに格納する先読み対象に指定する、先読み要求を前記レシーバストレージノード以外の各オーナーストレージノードに送信するように構成される、ことを特徴とする請求項８に記載のシステム。
【請求項１０】
各ストレージノードは、ファイルを送付先ストレージノードに移行するための移行要求を受信すると、該移行対象ファイルの外部パスを抽出し、発生元ストレージノードから前記ファイルを読み出し、前記ファイルと前記ファイルの該外部パスを含む内部書き込み要求を該送付先ストレージノードに送信し、該発生元ストレージノードから前記移行済みのファイルを削除し、前記分散型ストレージシステム内の前記移行済みファイルのロケーション記録を更新する、ように構成される、ことを特徴とする請求項１に記載のシステム。
【請求項１１】
前記レシーバストレージノードは、前記ファイルアクセス要求を前記オーナーストレージノードにリダイレクトしない場合、前記オーナーストレージノードから前記ファイルを読み出し、前記読み出したファイルを前記ファイルアクセス要求を行っている前記コンピュータ装置に送信する、ように構成される、ことを特徴とする請求項１に記載のシステム。
【請求項１２】
前記予め定められたポリシーは、前記ファイルの前記ファイルタイプ、前記ファイルの前記ファイルサイズ、前記ファイルを要求する前記コンピュータ装置、前記ファイルの外部パス、の少なくとも一つ、又は前記ファイルアクセス要求の中で指定される少なくとも一つの要求パラメータ、に基づいて、前記ファイルアクセス要求をリダイレクトするか否かの条件を規定する、ことを特徴とする請求項１に記載のシステム。
【請求項１３】
ネットワークを経由して接続される分散型ストレージシステムと少なくとも一式のコンピュータ装置とを有するシステムに於いて、
前記少なくとも一式のコンピュータ装置の一つからファイルへのファイルアクセス要求を受信時、予め定められたポリシーに従って、該ファイルアクセス要求を該ファイルのオーナーストレージノードにリダイレクトするように前記ファイルアクセス要求を行っている前記コンピュータ装置に通知するか否か決定するステップを含み、
前記予め定められたポリシーは、前記ファイルのファイルタイプ又はファイルサイズの少なくとも一方に基づいて、前記ファイルアクセス要求をリダイレクトするか否かの条件を規定する、ことを特徴とする分散型ストレージシステム内の複数のストレージノード内のファイルへのアクセスを提供する方法。
【請求項１４】
前記ファイルアクセス要求を前記オーナーストレージノードにリダイレクトするように決定されたなら、前記ファイルをキャッシュに格納する先読み対象に指定する、先読み要求を前記オーナーストレージノードに送信するステップ、を更に含む、ことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記ファイルアクセス要求を前記オーナーストレージノードにリダイレクトするように前記ファイルアクセス要求を行っている前記コンピュータ装置に通知するか否か決定するステップは、前記ファイルのファイルタイプ又はファイルサイズの少なくとも一方に基づいて前記ファイルアクセス要求をリダイレクトするか否かの前記条件を指定するポリシーテーブルを調べるステップを含む、ことを特徴とする請求項１３に記載の方法。
【請求項１６】
前記ファイルアクセス要求を前記オーナーストレージノードにリダイレクトするように前記ファイルアクセス要求を行っている前記コンピュータ装置に通知するか否か決定するステップは、前記ファイルに対するリダイレクトフラグを調べるステップを含み、該リダイレクトフラグは前記ストレージノード内に保存される各ファイルに対して、それに対応するファイルへのファイルアクセス要求をリダイレクトするか否か指定する、ことを特徴とする請求項１３に記載の方法。
【請求項１７】
ファイルが前記ストレージノードの一つに書き込まれる時点で以下のステップ即ち、
前記ファイルの前記ファイルタイプ又は前記ファイルサイズの少なくとも一方に基づいて前記予め定められたポリシーに従って、ファイルアクセス要求を前記ファイルのオーナーストレージノードにリダイレクトするか否か決定するステップと、
前記決定するステップに従って、リダイレクトするか否かに対する前記リダイレクトフラグを設定するステップ、
を実行することにより前記リダイレクトフラグを設定するステップ、を更に含む、ことを特徴とする請求項１６に記載の方法。
【請求項１８】
前記ファイルアクセス要求の前記ファイルは多数のポーションに分割されて複数の前記ストレージノード内に保存され、
前記決定するステップは、前記予め定められたポリシーに従って、前記ファイルアクセス要求を前記ファイルの前記多数のポーションのオーナーストレージノードにリダイレクトするように前記ファイルアクセス要求を行っている前記コンピュータ装置に通知するか否か決定するステップを含む、
ことを特徴とする請求項１３に記載の方法。
【請求項１９】
ファイルを送付先ストレージノードに移行する移行要求を受信時に、
前記移行対象ファイルの外部パスを抽出するステップと、
発生元ストレージノードから前記ファイルを読み出すステップと、
前記ファイルと前記ファイルの前記外部パスを含む内部書き込み要求を前記送付先ストレージノードに送信するステップと、
前記発生元ストレージノードから前記移行済みファイルを削除するステップと、
前記分散型ストレージシステム内の前記移行済みファイルのロケーション記録を更新するステップ、
を更に含む、ことを特徴とする請求項１３に記載の方法。
【請求項２０】
前記予め定められたポリシーは、前記ファイルの前記ファイルタイプ、前記ファイルの前記ファイルサイズ、前記ファイルを要求する前記コンピュータ装置、前記ファイルの外部パスの、少なくとも一つ、又は前記ファイルアクセス要求内で指定される少なくとも一つの要求パラメータ、に基づいて、前記ファイルアクセス要求をリダイレクトするか否かに対する条件を規定する、ことを特徴とする請求項１３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
０００１    本発明は一般的にコンピュータストレージシステムのＩ／Ｏ要求を処理する方法と装置に関連し、より具体的にはクライアントに単一のネームスペースを提供する分散型ストレージシステムのファイルアクセス性能を改善する方法と装置に関連する。
【背景技術】
【０００２】
０００２    今日のかなりのコンピュータストレージシステムは多数のストレージノードを持つ分散型システムである。各ノードはクライアント又は他のノードからの要求を処理する処理装置、クライアント又は他のノードとの間で情報を送受する通信装置、及びデータ又は管理情報を保存するストレージ装置を有する。ノードはネットワーク経由で相互に通信して単一のシステムとして動作する。分散型ストレージシステムはいくつかの利点を持つ。例えば、ノードを追加することで良好な拡張性を持つ。更に複数のノードに作業負荷を分散させることで優れた並列処理を実現する。分散型ストレージシステムの一つの例がＵＳ特許Ｎｏ．７，１５５，４６６に開示されている。
【０００３】
０００３    分散型ストレージシステムは、クライアントにファイルシステムを提供する時、しばしばそのストレージ容量を単一のネームスペース内で編成し、そのことはクライアントが、接続されるノード又はネットワークポートに無関係に同一のビューを取得することを意味する。単一のネームスペースを達成するために、ノードはそれら自身間でファイルを送受する。例えば、ノード（“レシーバノード”）がクライアントからファイル読み出し要求を受信するものの、そのファイルがそのノードに保存されていない場合には、そのノードはそのファイルが保存されている別のノード（“オーナーノード”）を特定して、そのファイルをレシーバノードに送信するようにオーナーノードに要求し、クライアントにそのファイルを送信する。単一のネームスペースの機能により、たとえクライアントが一つのノードのみと通信していたとしても、クライアントは任意のノード内のファイルにアクセスすることが可能になり、クライアントの構成管理を単純化できる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
０００４    しかしながら、性能、特にスループットの観点からみると、単一のネームスペースの機能を提供するためのノード間通信はＩ／Ｏプロセスに余分のオーバヘッドをもたらす。クライアントからアクセス要求を受信するノード内にファイルが保存されている場合は、そのファイルはレシーバによって直ちに読み出され、直接クライアントに送信されるのでオーバヘッドは存在しない。一方、ファイルが別のノードに保存されている場合は、オーナーノードが読み出してレシーバノードに転送し、次いでクライアントに送信されなければならない。この場合、ファイルは四つのＮＩＣ（Network Interface Card）即ちオーナーノードのＮＩＣ、ファイルを受信するレシーバノードのＮＩＣ、クライアントにファイルを送信するレシーバノードのＮＩＣ、及びクライアントのＮＩＣを通して転送される。ファイルはＮＩＣを通して処理されるたびに通信プロトコルスタックを通過し、それによりメモリコピー、送信対象データのカプセル化、及び受信データの再編成を引き起す。特に、転送されるファイルサイズが大きい（例えばギガバイト）場合、余分なオーバヘッドによりクライアントがオーナーノードから直接ファイルを受信する場合と比較して転送時間が長くなってしまう。一方、サイズが小（例えばキロバイト）の場合、転送時間が短いのでオーバヘッドはあまり影響をもたらさない。
【課題を解決するための手段】
【０００５】
０００５    本発明の実施例は、クライアントに単一のネームスペースを提供する分散型ストレージシステムからクライアントへのファイル転送性能を改善する方法と装置を提供する。分散型ストレージシステム内の各ノードは予め決められたポリシー（単数又は複数）に基づきクライアントからファイルへのパスを決定して、クライアントにパス情報を提供する機能を有する。ノードは、クライアントからファイルアクセス要求を受信すると、ファイルのオーナーノードを特定する。もしレシーバノードがオーナーであれば、そのレシーバノードはクライアントにファイルを送信する。そうでない場合は、そのレシーバノードは予め決められたポリシーに基づきクライアントがアクセスすべきパスを決定する。パスはファイルのオーナーノードからクライアントへのファイルのリダイレクトを含むことができる。リダイレクトはファイル転送開始後のオーバヘッドを減少させるが、待ち時間即ちファイル転送開始前のオーバヘッドを増加させるので、そうすることは必ずしも望ましいとは言えない。ポリシーはリダイレクトを行うための条件を規定する。例えば、アクセス対象ファイルのサイズによって、ポリシーを規定することができる。もしサイズが予め決められた閾値よりも小であれば、レシーバノードはファイルのオーナーノードからファイルを受信し、それをクライアントに送信する。そうでない場合は、レシーバノードは、オーバヘッドを低減し転送時間をより短縮できるという理由から、オーナーノードに直接アクセスするようにクライアントに伝える。もしクライアントとストレージシステムがＨＴＴＰ（ＲＦＣ２６１６“Hyper Text Transfer Protocol-HTTP/1.1”、http://www.ietf.org/rfc/rfc2616.txtを参照のこと）によって通信しているならば、パスの切り換えは標準のリダイレクト方法を使用して実現することができる。
【０００６】
０００６    本発明の一態様に従い、分散型ストレージシステム内のファイルへのアクセスを提供するシステムは、ネットワーク経由で接続された複数のストレージノードと少なくとも一式のコンピュータ装置を含む。各ストレージノードは、少なくとも一式のコンピュータ装置の一つから或るファイルに対するファイルアクセス要求をレシーバストレージノードとして受信すると、予め定められたポリシーに従ってファイルアクセス要求をファイルのオーナーストレージノードにリダイレクトするようにファイルアクセス要求を行っているコンピュータ装置に通知するか否か決定するように構成される。予め定められたポリシーはファイルのファイルタイプ又はファイルサイズの少なくとも一方に基づきファイルアクセス要求をリダイレクトするか否かの条件を規定する。
【０００７】
０００７    ある実施例では、レシーバストレージノードは、ファイルアクセス要求をオーナーストレージノードにリダイレクトする際に、キャッシュに格納される先読み対象ファイルを指定する先読み要求をオーナーストレージノードに送信するように構成される。レシーバストレージノードは、ファイルのファイルタイプ又はファイルサイズの少なくとも一方に基づいてファイルアクセス要求をリダイレクトするか否かの条件を指定するポリシーテーブルを調べることで、ファイルアクセス要求をオーナーストレージノードにリダイレクトするようにファイルアクセス要求を行っているコンピュータ装置に通知するか否か決定する。その条件はファイルのファイルタイプとファイルサイズの両者に基づいており、更に、ファイルを要求する少なくとも一式のコンピュータ装置、ファイルの外部パス、又はファイルアクセス要求の中で指定される少なくとも一つの要求パラメータに基づいている。ポリシーテーブルは各ストレージノード内に保存される。
【０００８】
０００８    特定の実施例では、レシーバストレージノードは、ファイルのリダイレクトフラグを調べることで、ファイルアクセス要求をオーナーストレージノードにリダイレクトするようにファイルアクセス要求を行っているコンピュータ装置に通知するか否か決定する。リダイレクトフラグは、ストレージノード内に保存される各ファイルに対して、それに対応するファイルへのファイルアクセス要求をリダイレクトするか否か指定する。リダイレクトフラグは、ファイルがストレージノードの一つに書き込まれる時点で以下を実行することで設定される：ファイルのファイルタイプ又はファイルサイズの少なくとも一方に基づいて予め定められたポリシーに従って、ファイルアクセス要求をファイルのオーナーストレージノードにリダイレクトするか否か決定し；決定のステップに従ってリダイレクトするか否かのリダイレクトフラグを設定する。
【０００９】
０００９    ある実施例では、ファイルアクセス要求のファイルは多数のポーションに分割され、複数のストレージノードに保存される。各ストレージノードは、レシーバストレージノードとして、予め定められたポリシーに従ってファイルアクセス要求をファイルの多数のポーションのオーナーストレージノードにリダイレクトするようにファイルアクセス要求を行っているコンピュータ装置に通知するか否か決定するように構成される。レシーバストレージノードはファイルの多数のポーションのオーナーストレージノードにファイルアクセス要求をリダイレクトする際に、キャッシュに格納される先読み対象のファイルのポーションを指定する先読み要求をレシーバストレージノード以外の各オーナーストレージノードに送信するように構成される。各ストレージノードは、ファイルを送付先ストレージノードに移行する移行要求を受信すると、移行対象ファイルの外部パスを抽出し、発生元ストレージノードからファイルを読み出し、送付先ストレージノードにファイルとファイルの外部パスを含む内部書き込み要求を送信し、発生元ストレージノードから移行済みファイルを削除し、分散型ストレージシステム内の移行済みファイルのロケーション記録を更新する、ように構成される。
【００１０】
００１０    特定の実施例では、レシーバストレージノードは、ファイルアクセス要求をオーナーストレージノードにリダイレクトしない場合には、オーナーストレージノードからファイルを読み出し、読み出したファイルをファイルアクセス要求を行っているコンピュータ装置に送信するように構成される。予め定められたポリシーは、ファイルのファイルタイプ、ファイルのファイルサイズ、ファイルを要求するコンピュータ装置、ファイルの外部パス、の少なくとも一つ、又はファイルアクセス要求中で指定される少なくとも一つの要求パラメータに基づいて、ファイルアクセス要求をリダイレクトするか否かの条件を規定することができる。
【００１１】
００１１    本発明の別な態様は、ネットワーク経由で接続された分散型ストレージシステムと少なくとも一式のコンピュータ装置を持つシステムに向けられる。分散型ストレージシステム内の複数のストレージノード内のファイルへのアクセスを可能にする方法は、少なくとも一式のコンピュータ装置の一つからファイルへのファイルアクセス要求を受信時に、予め定められたポリシーに従ってファイルアクセス要求をファイルのオーナーストレージノードにリダイレクトするようにファイルアクセスを行っているコンピュータ装置に通知するか否か決定するステップを含む。予め定められたポリシーはファイルのファイルタイプ又はファイルサイズの少なくとも一方に基づいてファイルアクセス要求をリダイレクトするか否かの条件を規定する。
【００１２】
００１２    本発明のこれらの特徴及びその他の特徴は、以下の好適な実施例の詳細な説明に照らすことにより、この技術分野に於ける通常の知識を有する者（当業者）には明白になるであろう。
【図面の簡単な説明】
【００１３】
【図１】００１３    図１は本発明の方法と装置が適用できるコンピュータシステムの例を示す。
【図２】００１４    図２は図１のコンピュータシステム内のクライアントコンピュータの例を示す。
【図３】００１５    図３は図１のコンピュータシステム内の管理サーバの例を示す。
【図４】００１６    図４は本発明の第１の実施例に従う図１のコンピュータシステムの分散型ストレージシステム内のストレージノードの例を示す。
【図５】００１７    図５は図４のストレージノード内の典型的なポリシーテーブルを示す。
【図６】００１８    図６は図４のストレージノード内の典型的なノードテーブルを示す。
【図７】００１９    図７は図４のストレージノード内の典型的なファイルテーブルを示す。
【図８】００２０    図８は図４のストレージノード内の典型的なパステーブルを示す。
【図９】００２１    図９は図４のストレージノード内の典型的なキャッシュテーブルを示す。
【図１０】００２２    図１０は図３の管理サーバ内の管理プログラムによるプロセスフローの例を示す。
【図１１】００２３    図１１は図４のストレージノード内のストレージシステム制御プログラムのプロセスフローの例を示す。
【図１２】００２４    図１２は図４のストレージノード内のストレージシステム制御プログラムによる書き込み要求のプロセスフローの例を示す。
【図１３】００２５    図１３は図４のストレージノード内のストレージシステム制御プログラムによる内部書き込み要求のプロセスフローの例を示す。
【図１４】００２６    図１４は図４のストレージノード内のストレージシステム制御プログラムによる読み出し要求のプロセスフローの例を示す。
【図１５】００２７    図１５は図４のストレージノード内のストレージシステム制御プログラムによる内部読み出し要求のプロセスフローの例を示す。
【図１６】００２８    図１６は図４のストレージノード内のストレージシステム制御プログラムによる先読み要求のプロセスフローの例を示す。
【図１７】００２９    図１７は図４のストレージノード内のストレージシステム制御プログラムによるファイル移行要求のプロセスフローの例を示す。
【図１８】００３０    図１８は本発明の第２の実施例に従う典型的なファイルテーブルを示す。
【図１９】００３１    図１９は本発明の第２の実施例に従うストレージノード内のストレージシステム制御プログラムによる書き込み要求のプロセスフローの例を示す。
【図２０】００３２    図２０は本発明の第２の実施例に従うストレージノード内のストレージシステム制御プログラムによる内部書き込み要求のプロセスフローの例を示す。
【図２１】００３３    図２１は本発明の第２の実施例に従うストレージノード内のストレージシステム制御プログラムによる読み出し要求のプロセスフローの例を示す。
【図２２】００３４    図２２は本発明の第３の実施例に従うストレージノード内の典型的なファイルテーブルを示す。
【図２３】００３５    図２３は本発明の第３の実施例に従うストレージノード内の典型的なポーションサイズテーブルを示す。
【図２４】００３６    図２４は本発明の第３の実施例に従うストレージノード内のストレージシステム制御プログラムによる書き込み要求のプロセスフローの例を示す。
【図２５】００３７    図２５は本発明の第３の実施例に従うストレージノード内のストレージシステム制御プログラムによる内部書き込み要求のプロセスフローの例を示す。
【図２６】００３８    図２６は本発明の第３の実施例に従うストレージノード内のストレージシステム制御プログラムによる読み出し要求のプロセスフローの例を示す。
【発明を実施するための最良の形態】
【００１４】
００３９    以下の本発明の詳細な説明に於いて、付随する図面が参照され、この図面は開示内容の一部を構成し、図中では本発明が実施できる典型的な実施例が、限定するためでなく説明の目的で示されている。図中では、複数の図を通して類似の番号は実質的に同様なコンポーネントを表わしている。更に、詳細な説明は、以下に記述され、図で説明されるように多様な典型的な実施例を提供するが、本発明はここに記述される実施例に限定されるものでなく、この技術分野の当業者に知られているか、又は知得されるであろう他の実施例に拡張可能であることはいうまでもない。明細書中での“一つの実施例”、“本実施例”、又は“これらの実施例”という言及は、実施例に関連して記述される特定の特徴、構造、又は特性が本発明の少なくとも一つの実施例に含まれることを意味し、これらの語句が明細書中の種々の箇所に出現したとしても必ずしもすべてが同じ実施例を参照しているわけではない。更に、以下の詳細な説明に於いて、数多くの特定な詳細が、本発明の十分な理解を可能にするために記述される。しかしながら本発明を実施するのにこれら特定の詳細すべてが必要とされるわけでないことは、この技術分野の当業者には明白であろう。他の状況では、本発明を不必要に分かりにくくしないように、公知の構造、材料、回路、プロセス及びインタフェースが詳細には記述されておらず、更に／又はブロックダイアグラムの形で説明されることもあり得る。
【００１５】
００４０    本発明の典型的な実施例は、以下により詳細に記述されるように、クライアントに単一のネームスペースを提供する分散型ストレージシステムからクライアントへのファイル転送性能を改善する装置、方法及びコンピュータプログラムを提供する。
【００１６】
００４１    図１は本発明の方法と装置が適用され得るコンピュータシステムの例を示す。複数のクライアントコンピュータ１０００と管理サーバ１００１が、ＬＡＮのようなネットワーク１００２を経由して複数のストレージノード１００４を含む分散型ストレージシステム１００３に接続される。この実施例では、クライアント１０００と分散型ストレージシステム１００３はＨＴＴＰにより通信する。ストレージシステム１００３はそのノード１００４内にファイルを保存する。各ファイルはノード１００４の一つの中に保存される。ノード１００４は、クライアント１０００から要求を受信すると、予め決められれたポリシー（単数又は複数）に基づいてクライアント１０００から要求されたファイルへのパスを決定する。もしパスを切り換える又はリダイレクトするように決定されたなら、リダイレクトはクライアントに別のノード、即ち要求されたファイルのオーナーノードにアクセスするように伝えるＨＴＴＰ応答コードの一つを返送することで達成される。ファイルアクセス要求を受信するレシーバノードがオーナーノードに要求をリダイレクトすると、レシーバノードは更にオーナーノードに、待ち時間とスループットを改善するためにファイルを先読みしてキャッシュメモリに格納するように伝える。更に、ユーザは、管理サーバ１００１からストレージシステム１００３に、一つのノードに保存されたファイルを別のノードに移行するように指示することができる。移行の後に、ストレージシステム１００３は、ファイルへのアクセスを要求しているクライアントに現在のファイルロケーションに対応する新たなパスを通知する。
【００１７】
００４２    図２は図１のコンピュータシステム内のクライアントコンピュータ１０００の例を示す。ＣＰＵ２００２はメモリ２００１内のクライアントプログラム２００５を実行する。クライアントプログラム２００５はＬＡＮポート２００４を経由してストレージシステム１００３と通信し、ＨＴＴＰ要求を送信しＨＴＴＰ応答を受信することでファイルを読み書きする。
【００１８】
００４３    図３は図１のコンピュータシステム内の管理サーバ１００１の例を示す。メモリ３００１内の管理プログラム３００５はＣＰＵ３００２によって実行され、ユーザがユーザインタフェース３００３を経由してストレージシステム１００３の設定を調べたり変更することを可能にする。
【００１９】
００４４    図４は本発明の第１の実施例に従う図１のコンピュータシステムの分散型ストレージシステム１００３内のストレージノード１００４の例を示す。各ノード１００４は、クライアント及び他のノードと通信するためにＬＡＮ  Ｉ／Ｆ４００２を持ち、更にファイル４００６を保存するためにストレージエリア４００５を持つ。ストレージエリア４００５は通常はディスクコントローラ４００４により制御されるディスクドライブから構成される。ＣＰＵ４００１はメモリ４００３内のストレージシステム制御プログラム４００７を実行する。ストレージシステム制御プログラム４００７は、クライアントコンピュータ１０００から送信されるＩ／Ｏ要求だけでなく管理サーバ１００１から送信される管理要求及び他のノードから送信される内部要求をも処理する。メモリ４００３は、管理情報を含むいくつかのテーブル４００８−４０１２とメモリ内にファイルを保存するキャッシュ４０１３を含んでいる。
【００２０】
００４５    図５は図４のストレージノード内の典型的なポリシーテーブル４００８を示す。テーブル内の各行はクライアントからファイルのオーナーノードにファイルアクセスパスをリダイレクトするか否か決定するポリシーを規定する。欄５００１−５００５は決定を行うための条件を含み、欄５００６はアクセスをリダイレクトすべきか否か、即ちアクセスパスをファイルのオーナーノードに切り換えるべきか否かを指定する。ストレージシステム制御プログラム４００７は、ファイル読み出し要求を受信するとその要求条件をチェックする。ポリシーテーブル４００８の行の中に適合したポリシーが検出されれば、ストレージシステム制御プログラム４００７は欄５００６のリダイレクト情報に従って進行する。
【００２１】
００４６    欄５００１は要求を送信するクライアント１０００のＩＤを含む。例えば、ＩＤはクライアントコンピュータのＩＰアドレスとすることができる。クライアントコンピュータ内のアプリケーションプログラムがＨＴＴＰリダイレクトをサポートしていないならば、クライアントのＩＰアドレスをこの欄で指定し欄５００６内のエントリーを“Ｎｏ”と指定することができ、その結果リダイレクト応答はクライアントコンピュータに返送されない。欄５００２は要求されるファイルのタイプを含む。タイプは、例えば、ファイル名の拡張子を参照することで決定することができる。欄５００３は要求されたファイルのサイズに関する条件を含む。欄５００４は要求されたファイルのパスに関する条件を含む。例えば、“／ｌａｒｇｅ／ｆｉｌｅｓ／＊”は／ｌａｒｇｅ／ｆｉｌｅｓという名のディレクトリ又はそのサブディレクトリの一つに保存された任意のファイルと適合する。欄５００５は、クライアントから送信されるＨＴＴＰ要求ヘッダーにて指定される一つ以上の要求パラメータに関する条件を含む。例えば、“Ｘ−Ｒｅｄｉｒｅｃｔ＝Ｙｅｓ”は“Ｘ−Ｒｅｄｉｒｅｃｔ”という名のヘッダーフィールドと“Ｙｅｓ”という値を持つ任意の要求に適合する。この欄はリダイレクトをサポートするクライアントを分類するためにも使用できる。欄５００１−５００５の任意の欄に記録される“＊”というエントリーは何も条件が決められていない、即ちどんな要求でも条件を満たすことを意味する。もし要求が一つの行の中にある欄５００１−５００５内に記録されたすべての条件を満たすならば、欄５００６内に記録されたポリシーが要求に対して適用される。欄５００６内の“Ｙｅｓ”エントリーは要求がリダイレクトされるべきであることを意味する。“Ｎｏ”エントリーはそうすべきでないことを意味する。
【００２２】
００４７    図６は図４のストレージノード内の典型的なノードテーブル４００９を示す。各行はストレージシステム１００３内のノード１００４のＩＤ（欄６００１）及びそのＬＡＮ  Ｉ／Ｆ４００２のＩＰアドレス（欄６００２）を含む。ノードはこのテーブルを参照することでネットワーク内の他のノードを特定することができる。もしノードがストレージシステムに追加されたり、又はストレージシステムから取り除かれたならば、ノードのエントリーがテーブルに追加され又はテーブルから取り除かれる。このテーブルを維持するためにこの技術分野の当業者に知られている任意の適切なプロセスを使用できる。
【００２３】
００４８    図７は図４のストレージノード内の典型的なファイルテーブル４０１０を示す。そこにはストレージシステム１００３内に保存されるすべてのファイルに関する情報が含まれる。各行は外部パスエントリー７００１、ファイルサイズエントリー７００２、及びオーナーノードＩＤエントリー７００３を含む。
【００２４】
００４９    図８は図４のストレージノード１００４内の典型的なパステーブル４０１１を示す。そこにはノード１００４に保存される各ファイルに対する欄８００１の外部ファイルパスと欄８００２の内部ファイルパス間のマッピングに関する情報が含まれる。例えば図７と図８で分かるように、クライアントに／ｄｉｒＡ／ｔｅｘｔ.ｔｘｔとして明らかにされたファイルは内部ファイル／ｉｎｔｅｒｎａｌＤｉｒＡ／ｘｘｘとしてノード３のストレージエリアに保存される。
【００２５】
００５０    図９は図４のストレージノード１００４内の典型的なキャッシュテーブル４０１２を示す。そこにはメモリ内にキャッシュされるファイルに関する情報が含まれる。各行にはキャッシュファイルの外部パスエントリー９００１とそのメモリ内のキャッシュロケーションエントリー９００２が含まれる。
【００２６】
００５１    図１０は図３の管理サーバ１００１内の管理プログラム３００５によるプロセスフローの例を示す。図示の実施例のプロセスフローはポリシー管理とファイル移行を含む。初めに、ユーザインタフェース３００３を経由してユーザから要求を受信する（ステップ１０００１）。受信した要求がポリシー管理要求であれば（ステップ１０００２）、管理プログラム３００５はストレージシステム１００３内のノード１００４の一つにポリシーテーブル読み出し要求を送信(ステップ１０００３)し、ポリシーテーブル４００８を受信し、その中に含まれる情報を表示する（ステップ１０００４）。ユーザが情報を編集した後、管理プログラム３００５は、すべてのノード１００４にポリシーテーブル更新要求を送信する（ステップ１０００５）ことでストレージシステム１００３内のポリシーを更新する。すべてのノード１００４内のポリシーテーブル４００８は同一である。本実施例では、単純化のため、管理プログラム３００５はノードテーブル４００９も受信し、すべてのノード１００４内のすべてのポリシーテーブルを更新するためにノードテーブル内に記録される各ノードにポリシーテーブル更新要求を送信する。
【００２７】
００５２    もし受信した要求がファイル移行要求であれば（ステップ１０００６）、管理プログラム３００５はストレージシステム１００３内のノード１００４の一つにノードテーブル読み出し要求を送信し（ステップ１０００７）、ノードテーブル４００９を受信し、ユーザがノードを選択できるようにノードのリストを表示する（ステップ１０００８）。ユーザがノード１００４を選択した後、管理プログラム３００５は選択したノードにパステーブル読み出し要求を送信し（ステップ１０００９）、選択したノードのパステーブル４０１１を受信し、ユーザが移行対象ファイルを選択できるように選択したノード内に保存されるファイルのリストを表示する（ステップ１００１０）。ユーザが移行対象ファイルと送付先ノードを選択した後、管理プログラム３００５はステップ１０００８で選択したノードにファイル移行要求を送信する（ステップ１００１１）。もし要求がポリシー管理要求でもファイル移行要求でもないならば、管理プログラム３００５は要求元にエラーメッセージを送信する（ステップ１００１２）。
【００２８】
００５３    図１１は図４のストレージノード１００４内のストレージシステム制御プログラム４００７のプロセスフローの例を示す。プログラムはクライアント１０００、他のノード１００４、又は管理サーバ１００１から要求を受信する（ステップ１１００１）。受信される要求は、クライアントからの書き込み要求（ステップ１１００２、１１０１０）、クライアントからの読み出し要求（ステップ１１００３、１１０１１）、他のノードからの内部書き込み要求（ステップ１１００４、１１０１２）、他のノードからの内部読み出し要求（ステップ１１００５、１１０１３）、他のノードからの先読み要求（ステップ１１００６、１１０１４）、管理サーバからのテーブル読み出し要求（ステップ１１００７、１１０１５）、管理サーバ又は他のノードからのテーブル更新要求（ステップ１１００８、１１０１６）、又は管理サーバからの移行要求（ステップ１１００９、１１０１７）、の一つである。そうでない場合は、要求元にエラーメッセージが返送される（ステップ１１０１８）。もしストレージシステム制御プログラム４００７がテーブル読み出し要求を受信するならば（ステップ１１００７）、指定されたテーブルが要求元に送信される（ステップ１１０１５）。もしストレージシステム制御プログラム４００７がテーブル更新要求を受信するならば（ステップ１１００８）、指定されたテーブルが指定された値で更新される（ステップ１１０１６）。他のプロセス（ステップ１１０１０−１１０１４、１１０１７）の詳細は以下に述べる。
【００２９】
００５４    図１２は図４のストレージノード１００４内のストレージシステム制御プログラム４００７による書き込み要求のプロセスフローの例を示す。ノード内のストレージシステム制御プログラム４００７が書き込み要求を受信すると、その要求から保存対象ファイルとその外部パスを抽出する（ステップ１２０１１）。次いで、ファイルのオーナーノードが選択される。ストレージシステム１００３内のノード１００４を選択するのにいくつかの方法がある。例えば、ストレージシステム制御プログラム４００７はノードの中で最大の使用可能容量を持つノードを選択することができる。もし選択したノードがレシーバノード自身である場合（ステップ１２００３）は、ファイルに固有の内部パスを割り当てて保存する（ステップ１２００４）。パスがファイルテーブル４０１０とパステーブル４０１１に記録される（ステップ１２００５）。ストレージシステム制御プログラム４００７は更に他のノード内のファイルテーブルを更新するためにそれらのノードにテーブル更新要求を送信し（ステップ１２００６）、その結果すべてのファイルテーブルは同一になる。選択したノードが異なったノードであるならば、ストレージシステム制御プログラム４００７は選択したノードに書き込み対象ファイルとその外部パスを含む内部書き込み要求を送信する（ステップ１２００７）。
【００３０】
００５５    図１３は図４のストレージノード１００４内のストレージシステム制御プログラム４００７による内部書き込み要求のプロセスフローの例を示す。ノードが内部書き込み要求を受信すると、保存対象ファイルとその外部パスを抽出する（ステップ１３００１）。残りのステップ（ステップ１３００２−１３００４）は図１２のステップ１２００４−１２００６と同じである。
【００３１】
００５６    図１４は図４のストレージノード１００４内のストレージシステム制御プログラムによる読み出し要求のプロセスフローの例を示す。ストレージシステム制御プログラム４００７は、読み出し要求を受信すると、読み出し対象ファイルの外部パス及びその要求内のＨＴＴＰヘッダーフィールドを含むその他のパラメータを抽出する（ステップ１４００１）。次いで指定されたファイルを保存するオーナーノードを特定する（ステップ１４００２）。もしオーナーノードがレシーバノード自身であるならば（ステップ１４００３）、ストレージシステム制御プログラム４００７は、キャッシュテーブル４０１２を調べることによりファイルがメモリ内にキャッシュされているか否かチェックする（１４０１０）。もしキャッシュされていれば、ファイルがキャッシュから読み出される（ステップ１４０１３）。そうでない場合は、ストレージシステム制御プログラム４００７は、パステーブル４０１１を調べることによりファイルの内部パスを特定し（ステップ１４０１１）、ファイルをディスクから読み出す（ステップ１４０１２）。その後、ストレージシステム制御プログラム４００７は要求を行ったクライアント１０００にファイルを送信する（ステップ１４０１６）。もしオーナーノードがレシーバノードでないならば、ストレージシステム制御プログラム４００７は、読み出し要求を送信したクライアントを特定し（ステップ１４００４）、要求されたファイルのタイプとサイズを決定する（ステップ１４００５）。ストレージシステム制御プログラム４００７は、ステップ１４００１で抽出したものに加えてこの情報を基にして、ポリシーテーブル４００８を調べることによりこの要求をリダイレクトするか否か決定する（ステップ１４００６）。条件がこの要求に適合し欄５００６に記録されたリダイレクト指示のエントリーが“ＹＥＳ”であるポリシーが存在するならば（ステップ１４００７）、ストレージシステム制御プログラム４００７はキャッシュに格納される先読み対象ファイルを指定する先読み要求をファイルのオーナーノードに送信し（ステップ１４００８）、要求を行ったクライアントにリダイレクト応答を返送する（ステップ１４００９）。その応答は、クライアントにその値が当初要求されたＵＲＬであるロケーションフィールドとロケーションヘッダーフィールドで指定されたＵＲＬにアクセスさせるＨＴＴＰ応答コード３０２、３０３、又は３０７を持っているが、そのホスト部分は、ノードテーブル４００９を調べることで得られるオーナーノードのＩＰアドレスに置き換えられている。例えば、リダイレクト応答は以下に示すヘッダーを持っている：
ＨＴＴＰ／１．１  ３０３  Ｓｅｅ  Ｏｔｈｅｒ
Ｌｏｃａｔｉｏｎ：ｈｔｔｐ：／／＜オーナーノードのＩＰアドレス＞／＜ファイルの外部パス＞
…
もし適合したポリシーのリダイレクト指示が“Ｎｏ”であるか、又はどのポリシーにも適合しないならば、ストレージシステム制御プログラム４００７は、オーナーノードに内部読み出し要求を送信し（ステップ１４０１４）、オーナーノードからファイルを受信する（ステップ１４０１５）。最後に、プログラムはそのファイルをクライアントに送信する（ステップ１４０１６）。
【００３２】
００５７    図１５は図４のストレージノード１００４内のストレージシステム制御プログラム４００７による内部読み出し要求のプロセスフローの例を示す。ストレージシステム制御プログラム４００７が他のノードから内部読み出し要求を受信すると、読み出し対象ファイルの外部パスを抽出し（ステップ１５００１）、キャッシュ又はディスクから指定されたファイルを読み出す（ステップ１５００２−１５００５）。これらのステップは図１４のステップ１４０１０−１４０１３と同じである。その後、ストレージシステム制御プログラム４００７は内部読み出し要求を送信したノードにファイルを送信する（ステップ１５００６）。
【００３３】
００５８    図１６は図４のストレージノード１００４内のストレージシステム制御プログラム４００７による先読み要求のプロセスフローの例を示す。ストレージシステム制御プログラム４００７は、別のノードから先読み要求を受信すると、読み出し対象ファイルの外部パスを抽出し（ステップ１６００１）、パステーブル４０１１を調べて内部パスを特定し（ステップ１６００２）、ディスクから指定ファイルを読み出しキャッシュメモリに格納する（ステップ１６００３）。プログラムは更に、キャッシュテーブル４０１２内にキャッシュメモリのロケーションを記録する（ステップ１６００４）。
【００３４】
００５９    図１７は図４のストレージノード１００４内のストレージシステム制御プログラム４００７によるファイル移行要求のプロセスフローの例を示す。ストレージシステム制御プログラム４００７は、管理サーバからファイル移行要求を受信すると、移行対象ファイルの外部パスと要求内の送付先ノードのＩＤを抽出し（ステップ１７００１）、キャッシュ又はディスクから指定されたファイルを読み出す（ステップ１７００２）。ステップ１７００２は図１４のプロセスステップ１４０１０−１４０１３又は図１５のプロセスステップ１５００２−１５００５と同じである。次いで、ストレージシステム制御プログラム４００７は送付先ノードにファイルとその外部パスを含む内部書き込み要求を送信し（ステップ１７００３）、ディスクとキャッシュ内に保存されたファイルを削除し（ステップ１７００４）、最後にパステーブル４０１１とキャッシュテーブル４０１２内の削除済みファイルの記録も削除する（ステップ１７００５）。このプロセスは送付先ノード内にファイルの新たなコピーを作成し、元のノード内のファイルを削除することで、一つのノードから別のノードにファイルを移行する。ファイルテーブル４０１０は内部書き込み要求のプロセスの一部として送付先ノードによって更新される。このプロセスは、たとえファイルがノード間で移行されるにしても、ファイルテーブル４０１０とパステーブル４０１１を正確に維持し、その結果リダイレクト応答は常に正しいロケーションヘッダーフィールド値を含む。
【００３５】
００６０    本実施例に於いて、クライアントから読み出し対象ファイルのオーナーノードへのパスの切り換えは、標準のＨＴＴＰの応答コードを指定することで達成される。しかしながら、クライアントがリダイレクトの仕組みをサポートでき、認識できるならば、ファイルへの適切なパスをクライアントに提供する何か他の標準又は独自の通信プロトコルを使用することも可能である。
【００３６】
００６１    図１８−２１に示す第２の実施例に於いて、ノード１００４は、クライアントからストレージシステム１００３内に保存されるファイルを受信すると、予め決められたポリシーに基づいてファイルの読み出し要求をそのオーナーノードにリダイレクトすべきか否か決定し、その結果をファイルテーブル４０１０内にリダイレクトフラグとして記録する。ノード１００４は、ファイル読み出し要求を受信すると、リダイレクトフラグエントリーをチェックしリダイレクトフラグエントリーに基づいて要求をリダイレクトするか否か決定する。第２の実施例と第１の実施例間の相違点は以下に述べる通りである。
【００３７】
００６２    図１８は第２の実施例に従う典型的なファイルテーブル４０１０を示す。ファイルテーブル４０１０はリダイレクトフラグを記録する欄１８００３を持つ。この欄の“Ｙｅｓ”は、ファイル読み出し要求をそのオーナーノードにリダイレクトすべきであることを意味する。“Ｎｏ”はリダイレクトすべきでないことを意味する。
【００３８】
００６３    図１９はストレージノード１００４内のストレージシステム制御プログラム４００７による書き込み要求のプロセスフローの例を示す。第１の実施例の図１２と比較すると、ステップ１９００８−１９０１３がステップ１２００４とステップ１２００５の間に挿入されている。ステップ１９００８で、プログラムは要求を送信するクライアントを特定し、ステップ１９００９で、保存されるファイルのタイプとサイズを決定する。次いでプログラムはリダイレクトポリシーをチェックし（ステップ１９０１０）、アクセス要求をリダイレクトするか否か確認する（ステップ１９０１１）。これらの追加のステップ（１９００８−１９０１１）は、保存されるファイルに関する情報と予め決められたポリシーに基づいて、ファイル読み出し要求をリダイレクトすべきか否か決定する。決定値が図１８のファイルテーブル４０１０内のファイルリダイレクトフラグとして、“Ｙｅｓ”（ステップ１９０１２）又は“Ｎｏ”（ステップ１９０１３）のように記録される。フラグを含めて更新したファイルテーブル４０１０はすべてのノードに共有される（ステップ１２００６）。
【００３９】
００６４    図２０は第２の実施例に従うストレージノード１００４内のストレージシステム制御プログラム４００７による内部書き込み要求のプロセスフローの例を示す。第１の実施例の図１３と比較すると、図２０に示すように、内部書き込み要求のプロセスフロー中に図１９のステップ１９００８-１９０１３と同じ追加のステップがステップ２０００７-２００１２として挿入されており、その結果リダイレクトフラグがファイルテーブル４０１０に記録される。
【００４０】
００６５    図２１はストレージノード１００４内のストレージシステム制御プログラム４００７による読み出し要求のプロセスフローの例を示す。第１の実施例の図１４と比較すると、各リダイレクトポリシーの多数の条件をチェックするステップ１４００４-１４００６が、ファイルのリダイレクトフラグをチェックするだけのステップ２１００４に置き換えられている。第２の実施例では、読み出し要求をリダイレクトすべきか否か決定するプロセスは、第１の実施例に従う読み出し要求の処理に含まれる決定ステップのいくつかを、ファイルが保存される時点での第２の実施例に従う書き込み要求の処理でのステップに代えることで単純化され、その結果ファイル転送の待ち時間が読み出し要求の処理に於いて減少する。更に、この方法を第１の実施例で開示した方法と共に使用することも可能であり、その結果リダイレクト条件をより柔軟に管理することができる。
【００４１】
００６６    図２２−２６に示す第３の実施例に於いて、ファイルは多数のポーションに分割され、各ポーションはノード１００４の一つに保存され、その結果クライアントはスループットを向上するために、多数のノードから異なったファイルのポーションを同時に読み出すことが可能である。ノード１００４は、クライアント１０００にパスを切り換えるように伝える時に、各ファイルポーションのロケーション情報を送信する。パスを変更すべきでない時、ノードは他のノードからファイルポーションを収集しそれらを一つのファイルとして編成してクライアントに送信する。第３の実施例と第１の実施例間の相違は以下に述べる通りである。
【００４２】
００６７    図２２は第３の実施例に従うストレージノード１００４内の典型的なファイルテーブル４０１０を示す。一つのファイルがポーションに分割され、各ポーションはその外部パス（ポーションパス欄２２００３）を持つ。ポーションの外部パスはポーションの生成時にストレージシステム制御プログラム４００７により生成される。例えば、図２２に示すように、ポーションの外部パスは元のファイルの外部パスに対して連続するポーションに連続する番号を付加することで生成される。元のファイルのポーションのロケーションも記録される（範囲欄２２００４）。ポーションがノード間で分散しているため各ポーションはオーナーノードを持つ（オーナーノード欄２２００５）。
【００４３】
００６８    図２３は第３の実施例に従うストレージノード１００４内の新たなテーブルである典型的なポーションサイズテーブル２３００１を示す。ポーションサイズテーブル２３００１はメモリ４００３内に保存される。一つのファイルがポーションに分割されるので、各ポーションのサイズはこのテーブルで指定されるサイズと同等か、より小さくなる。
【００４４】
００６９    図２４は第３の実施例に従うストレージノード１００４内のストレージシステム制御プログラム４００７による書き込み要求のプロセスフローの例を示す。第１の実施例の図１２と比較すると、ステップ２４００２と２４００３がステップ１２００１とステップ１２００２の間に挿入され、図２４のステップ２４００４−２４００８は図１２のステップ１２００４、１２００５、１２００７を置き換えたものである。ステップ２４００２で、保存対象ファイルはポーションサイズテーブル２３００１内に記録されたサイズに基づいてポーションに分割され、ポーションに対する外部パス名が生成される。ステップ２４００３で、外部パスと保存対象ファイルサイズがファイルテーブル４０１０の欄７００１と７００２に記録される。各ポーションに対して、ストレージシステム制御プログラム４００７はオーナーノードを選択する（ステップ１２００２）。もし選択したノードがレシーバノード自身でないならば、ストレージシステム制御プログラム４００７はポーションを書き込むためにノードに内部書き込み要求を送信する（ステップ２４００８）。そうでない場合は、プログラムは内部ファイルとしてポーションを保存しパステーブル４０１１内に内部パスを記録する（ステップ２４００４と２４００５）。保存された各ポーションに対して、ストレージシステム制御プログラム４００７はその外部パス、元のファイル内のその範囲、及びそのオーナーノードをファイルテーブル４０１０に記録する（ステップ２４００６）。これらのステップは、すべてのポーションが保存されるまで繰り返される（ステップ２４００７）。最後に、ストレージシステム制御プログラム４００７はそれらのファイルテーブル４０１０を更新するために他のノードにテーブル更新要求を送信する（ステップ１２００６）。
【００４５】
００７０    図２５は第３の実施例に従うストレージノード１００４内のストレージシステム制御プログラム４００７による内部書き込み要求のプロセスフローの例を示す。ストレージシステム制御プログラム４００７は書き込み対象のポーションファイルとその外部パスを受信し（ステップ２５００１）、内部ファイルとしてポーションを保存し（ステップ２５００２）、パステーブル４０１１にその外部パスと内部パスを記録する（ステップ２５００３）。ファイルテーブルが保存対象ファイルのオーナーノードにより更新される第１の実施例とは異なり、本実施例ではファイルテーブルは書き込み要求のレシーバノードにより更新される。
【００４６】
００７１    図２６は第３の実施例に従うストレージノード１００４内のストレージシステム制御プログラム４００７による読み出し要求のプロセスフローの例を示す。第１の実施例の図１４に比較すると、ステップ２６００２−２６００４が図１４のステップ１４００２-１４００３から置き換わっており、ステップ２６００８-２６０２１がステップ１４００８-１４０１６から置き換わっている。もし指定されたファイルの外部パスがファイルテーブル４０１０内にファイルのポーションとして記録されているならば（ステップ２６００２）、ストレージシステム制御プログラム４００７はポーションファイルを読み出し（ステップ２６００４）、それをクライアントに送信する（ステップ２６０２１）。そうでない場合は、プログラムは各読み出し対象のファイルの各ポーションに対してファイルテーブル４０１０を調べることによりオーナーノードを特定する（ステップ２６００３）。プログラムは要求を送信するクライアントを特定し（ステップ１４００４）、読み出し対象ファイルのタイプとサイズを決定し（ステップ１４００５）、リダイレクトポリシーをチェックする（ステップ１４００６）。もし要求をリダイレクトするように決定されれば（ステップ１４００７）、ストレージシステム制御プログラム４００７は自身以外のオーナーノードにポーションを先読みしてキャッシュに格納するための先読み要求を送信する（ステップ２６００８）。もしファイルの第１のポーションのオーナーノードがレシーバノード自身であるならば（ステップ２６００９と２６０１０）、ストレージシステム制御プログラム４００７は第一のポーションを読み出し（ステップ２６０１３）、ポーションとポーションに関する情報を返送する（ステップ２６０１４）。例えば、その情報は以下に示すようにＨＴＴＰ応答ヘッダーの一部として構成することができる：
ＨＴＴＰ／１．１  ２０６  Ｐａｒｔｉａｌ  Ｃｏｎｔｅｎｔ
Ｃｏｎｔｅｎｔ−Ｒａｎｇｅ：ｂｙｔｅｓ  ０−４９９９９９９９／５００００００００
Ｃｏｎｔｅｎｔ−Ｌｅｎｇｔｈ：５０００００００
Ｘ−Ｎｕｍｂｅｒ−ｏｆ−ｐｏｒｔｉｏｎｓ：４
Ｘ−Ｐｏｒｔｉｏｎ−Ｌｏｃａｔｉｏｎ１：ｈｔｔｐ：／／＜第１のポーションのオーナーノード＞／＜第１のポーションの外部パス＞
Ｘ−Ｐｏｒｔｉｏｎ−Ｒａｎｇｅ１：０−４９９９９９９９
Ｘ−Ｐｏｒｔｉｏｎ−Ｌｏｃａｔｉｏｎ２：ｈｔｔｐ：／／＜第２のポーションのオーナーノード＞／＜第２のポーションの外部パス＞
Ｘ−Ｐｏｒｔｉｏｎ−Ｒａｎｇｅ２：５０００００００−９９９９９９９９
【００４７】
００７２    Ｘ−Ｎｕｍｂｅｒ−Ｌｅｎｇｔｈフィールドは要求されたファイルのポーションの数を含む。Ｘ−Ｐｏｒｔｉｏｎ−Ｌｏｃａｔｉｏｎ＜Ｎ＞フィールドはＮ番目のファイルのポーションのＵＲＬを含む。Ｘ−Ｐｏｒｔｉｏｎ−Ｒａｎｇｅ＜Ｎ＞フィールドは元のファイルのＮ番目のポーションの範囲を含む。応答の本体はファイルのポーションを含む。これらのヘッダーフィールドを参照することで、クライアント１０００はファイルの分割方法やポーションへの適切なパスを理解できる。最後に、ストレージシステム制御プログラム４００７はノードに保存された任意の他のポーションを先読みし（ステップ２６０１５）、その結果、プログラムはポーションファイルに対する読み出し要求を処理するための待ち時間を低減することができる。
【００４８】
００７３    第１のポーションがレシーバノード内に保存されていないならば、ストレージシステム制御プログラム４００７はクライアントにポーションに関する情報を提供するために、クライアント１０００にリダイレクト応答を返送する（ステップ２６０１１）。例えば、その情報は以下に示すＨＴＴＰ応答ヘッダーの一部として構成され得る：
ＨＴＴＰ／１．１  ３０３  Ｓｅｅ  Ｏｔｈｅｒ
Ｌｏｃａｔｉｏｎ：ｈｔｔｐ：／／＜第1のポーションのオーナーノード＞／＜第1のポーションの外部パス＞
Ｘ−Ｎｕｍｂｅｒ−ｏｆ−ｐｏｒｔｉｏｎｓ：４
Ｘ−Ｐｏｒｔｉｏｎ−Ｌｏｃａｔｉｏｎ１：ｈｔｔｐ：／／＜第1のポーションのオーナーノード＞／＜第1のポーションの外部パス＞
Ｘ−Ｐｏｒｔｉｏｎ−Ｒａｎｇｅ１：０−４９９９９９９９
Ｘ−Ｐｏｒｔｉｏｎ−Ｌｏｃａｔｉｏｎ２：ｈｔｔｐ：／／＜第２のポーションのオーナーノード＞／＜第２のポーションの外部パス＞
Ｘ−Ｐｏｒｔｉｏｎ−Ｒａｎｇｅ２：５０００００００−９９９９９９９９
【００４９】
００７４    応答コードは３０２又は３０７であってもよい。この応答はこの要求を第1のポーションのＵＲＬにリダイレクトする。最後に、ストレージシステム制御プログラム４００７はノード内に保存されたポーションを先読みする（ステップ２６０１２）。
【００５０】
００７５    各ポーションに対して（ステップ２６０１６）、要求をリダイレクトしないように決定される場合（ステップ１４００７）は、ストレージシステム制御プログラム４００７はそれがレシーバノードに保存されていれば（ステップ２６０１７）キャッシュ又はディスクからそれを読み出す（ステップ２６０１９）か、又はそのオーナーノードへの外部パスを指定する内部読み出し要求を送信し、オーナーノードからポーションを受信する（ステップ２６０１８）。プログラムは、すべてのポーションを入手した後（ステップ２６０２０）、それらを元のファイルに編成し、クライアントに送信する（ステップ２６０２１）。
【００５１】
００７６    本実施例では、ファイルがポーションに分割され多数のノード内に保存される。クライアントは単一の読み出し要求により分割されたファイルを読み出すことができる。更に、クライアントは、ポーションに関する情報が予め決められたポリシーに基づいてストレージシステムからクライアントに送信されるので、スループットを向上するために、個別の読み出し要求を送信することにより各々のポーションを要求することができる。
【００５２】
００７７    前述から、本発明は、クライアントに単一のネームスペースを提供する分散型ストレージシステムの性能を改善する方法、装置及びコンピュータ読み取り可能媒体に保存されるプログラムを提供することが明白であろう。更に、本明細書内で特定の実施例が図示され、記述されてきたが、本技術分野の当業者は、同じ目的を達成することが予測される任意の構成が、開示された特定の実施例に対して置換可能であることを十分理解する。ここでの開示は本発明の任意かつすべての翻案又は変形にも及ぶように企図されており、当然のことながら以下の特許請求範囲で使用される表現は発明をこの明細書の中で開示された特定の実施例に限定するように解釈すべきでない。もっと正確に言えば本発明の範囲は専ら以下の請求項によって決定されるべきであり、それらはそのような請求項が権利を有する均等な全範囲に沿って、請求項の解釈に於ける確立した理論に従って解釈されるべきである。
【図１】
2010092463.tif 000003
【図２】
2010092463.tif 000004
【図３】
2010092463.tif 000005
【図４】
2010092463.tif 000006
【図５】
2010092463.tif 000007
【図６】
2010092463.tif 000008
【図７】
2010092463.tif 000009
【図８】
2010092463.tif 000010
【図９】
2010092463.tif 000011
【図１０】
2010092463.tif 000012
【図１１】
2010092463.tif 000013
【図１２】
2010092463.tif 000014
【図１３】
2010092463.tif 000015
【図１４】
2010092463.tif 000016
【図１５】
2010092463.tif 000017
【図１６】
2010092463.tif 000018
【図１７】
2010092463.tif 000019
【図１８】
2010092463.tif 000020
【図１９】
2010092463.tif 000021
【図２０】
2010092463.tif 000022
【図２１】
2010092463.tif 000023
【図２２】
2010092463.tif 000024
【図２３】
2010092463.tif 000025
【図２４】
2010092463.tif 000026
【図２５】
2010092463.tif 000027
【図２６】
2010092463.tif 000028
【外国語明細書】
2010092463000001.pdf