(57)【要約】  本発明は、ネットワークＮ上に幾つかのストレージ装置Ｄ，Ｄ１，Ｄ２，Ｄ３，…，Ｄｎを有する分散ストレージシステムを管理する方法であって、他のストレージ装置Ｄ，Ｄ１，Ｄ２，Ｄ３，…，Ｄｎを制御するためにストレージ装置Ｄ，Ｄ１，Ｄ２，Ｄ３，…，Ｄｎの１つをマスタストレージ装置として選出する選出プロセスにおいて、ストレージ装置Ｄ，Ｄ１，Ｄ２，Ｄ３，…，Ｄｎは、ストレージ装置Ｄ，Ｄ１，Ｄ２，Ｄ３，…，Ｄｎのどれがあるパラメータの最大値を有しているかを決定するためにダイアログにおいてパラメータの情報２，２´をやり取りし、最大のパラメータ値を持つストレージ装置Ｄ，Ｄ１，Ｄ２，Ｄ３，…，Ｄｎが、他のストレージ装置Ｄ，Ｄ１，Ｄ２，Ｄ３，…，Ｄｎが従属ストレージ装置Ｄ，Ｄ１，Ｄ２，Ｄ３，…，Ｄｎの状態になるその後の期間、最新のマスタストレージ装置として選出される当該分散ストレージシステムを管理する方法を説明する。
2008512759.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク上に幾つかのストレージ装置を有する分散ストレージシステムを管理する方法であって、
他のストレージ装置を制御するために前記ストレージ装置の１つをマスタストレージ装置として選出する選出プロセスにおいて、前記ストレージ装置は、前記ストレージ装置のどれがあるパラメータの最も適切な値を有しているかを決定するためにダイアログにおいて状態及び／又はパラメータの情報をやり取りし、最も適切なパラメータ値を持つストレージ装置が、前記他のストレージ装置が従属ストレージ装置の状態になるその後の期間、最新のマスタストレージ装置として選出される当該分散ストレージシステムを管理する方法。
【請求項２】
各ストレージ装置は、最初に前記マスタストレージ装置の状態になる請求項１記載の方法。
【請求項３】
マスタストレージ装置の状態になると、ストレージ装置は、前記ネットワーク上に存在する任意の他のストレージ装置を伴うダイアログに入り、前記ダイアログは、前記ストレージ装置が、前記他のストレージ装置の前記状態及び／又は前記パラメータ値に関する前記他のストレージ装置からの情報を要求するために別のストレージ装置に要求信号を出す及び／又は前記他のストレージ装置からの要求信号に応じてそれ自身の状態及び／又はそれ自身のパラメータ値を表す情報信号を別のストレージ装置に呈示する所定の選出サービスプロトコルに従う請求項２記載の方法。
【請求項４】
マスタストレージ装置の状態の第１のストレージ装置と従属ストレージ装置の状態の第２のストレージ装置との間の前記ダイアログにおいて、前記第１のストレージ装置は、前記第２のストレージ装置に関する情報を従属ストレージ装置の状態のストレージ装置に関する入力を記憶するために設けられたリストに入力する請求項３記載の方法。
【請求項５】
マスタストレージ装置の状態の２つのストレージ装置間の前記ダイアログにおいて、より少なく適切なパラメータ値を有するストレージ装置は、その状態をマスタストレージ装置の状態から従属ストレージ装置の状態に切り替え、存在する場合にはその従属ストレージ装置に関するあらゆる入力のリストを消去する請求項３又は４記載の方法。
【請求項６】
マスタストレージ装置の状態のストレージ装置は、機能停止していないことを前記ネットワーク上の任意の他のストレージ装置に広めるため及び／又は前記ネットワーク上の任意の従属ストレージ装置が機能停止していないことを決定するために、一定の間隔をおいて非停止要求を出す請求項１ないし５のいずれか１項に記載の方法。
【請求項７】
前記非停止信号が予め定義された持続時間に存在しないと決定されると、従属ストレージ装置の状態のストレージ装置がマスタストレージ装置の状態になる請求項６記載の方法。
【請求項８】
ストレージ装置により呈示される前記パラメータの情報は、当該ストレージ装置について利用可能な空きストレージ容量の指示を有しており、最も多くの空きストレージ容量を持つストレージ装置が最新のマスタストレージ装置であるように選出される請求項１ないし７のいずれか１項に記載の方法。
【請求項９】
前記マスタストレージ装置は、好ましくは幾つかの前記従属ストレージ装置のストレージ容量を前記分散ストレージシステムにおいて記憶されるデータに割り当てることによりその空きストレージ容量を保つように努める請求項１ないし８のいずれか１項に記載の方法。
【請求項１０】
分散ストレージシステムにおいて用いるためのストレージ装置であって、
マスタストレージ装置として又は従属ストレージ装置として動作可能であり、
状態及び／又はパラメータ値の情報を受け取る及び／又は与えるネットワーク上に存在する任意の他のストレージ装置を伴うダイアログに入るためのダイアログユニットと、
他のストレージ装置から受け取ったパラメータ値に従って前記ストレージ装置の次の状態を決定する状態決定ユニットと、
マスタストレージ装置の状態と従属ストレージ装置の状態との間において前記ストレージ装置の前記状態を切り換える状態トグルユニットと
を有する当該ストレージ装置。
【請求項１１】
非停止信号が存在しないことを決定する機能停止検出ユニットを有し、
前記ストレージ装置の前記状態決定ユニット及び／又は状態トグルユニットは、前記ストレージ装置の前記状態が、予め定義された持続時間にマスタストレージ装置の前記非停止信号が存在しないと従属ストレージ装置の状態からマスタストレージ装置の状態に切り換えられるように実現される
請求項１０記載のストレージ装置。
【請求項１２】
請求項１０記載のストレージ装置を幾つか有する分散ストレージシステム。
【請求項１３】
前記ストレージ装置の少なくとも１つが請求項１１記載のストレージ装置である請求項１２記載の分散ストレージシステム。
【請求項１４】
分散ストレージシステムに用いるためのプログラム可能なストレージ装置のメモリに直接ロード可能なコンピュータプログラムであって、当該プログラムが前記ストレージ装置上において走る際に請求項１ないし９に記載の方法のステップを実行するソフトウェアコード部を有する当該コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、幾つかのストレージ装置を有する分散ストレージシステムを管理する方法に関する。
【０００２】
本発明は、また、分散ストレージシステムに用いるためのストレージ装置に関する。
【０００３】
本発明は、また、分散ストレージシステムに用いるためのプログラム可能なストレージ装置のメモリに直接ロード可能なコンピュータプログラムに関する。
【背景技術】
【０００４】
分散ストレージシステムは、通常ネットワークに一緒に接続される幾つかのストレージ装置にわたってデータ、典型的には大量のデータを記憶するために用いられる。典型的な分散ストレージシステムでは、メインフレームコンピュータ、パーソナルコンピュータ、ワークステーション等であり得る１つの装置が、通常、他のワークステーション、パーソナルコンピュータ等であり得る幾つかの他の従属装置に関して利用可能なストレージ容量又はメモリを追跡し、どのデータ又はコンテンツがどの装置に記憶されているかを記録する制御装置としての役割を果たす。この制御装置は、通常最も強力な機械、すなわち最大の処理能力及びストレージスペースを有する機械である。しかしながら、この制御装置がストレージスペースを使い果たすと、コンテンツはまだ利用可能な記憶スペースを持つ従属装置に移されなければならない。これは、追加のネットワーク転送を発生させ、ネットワークの利用可能な帯域幅を制限する。また、上記制御装置が何らかの理由のために機能しなくなると、分散ストレージシステムは制御デバイスを修理又は交換するため及び元の制御装置に保持されたデータの記録を取り出す又は復元するため（これが可能である限りにおいて）に必要な長さの時間動かない。そのような修理のプロセスは、手作業で行われなければならず、時間及び費用のかかるプロセスである。制御装置が動かない間、そのような分散ストレージシステムの任意のユーザが必要なデータにアクセスすることができない場合、追加の費用及び遅延が生じ得る。
【０００５】
文献ＵＳ４，５２８，６２４公報から、中央ホストコンピュータが中央記録部において幾つかの周辺ストレージ装置の利用可能なストレージ容量を追跡するストレージシステムを管理するシステムが知られている。記憶されるデータは周辺ストレージ装置のうちの１つ又はそれ以上の空き領域に割り当てられ、それに伴って中央の記録が更新される。このシステムは、何がどこに記憶されているかを把握しているのが中央ホストコンピュータであるので、中央ホストコンピュータが機能しなくなった場合に、ストレージシステムが全体として使い物にならなくなってしまうという上述した不都合を有する。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従って、本発明の目的は、強固で安価な分散ストレージシステムを管理する方法を提供することにある。
【課題を解決するための手段】
【０００７】
この目的のために、本発明は、ネットワーク上に幾つかのストレージ装置を有する分散ストレージシステムを管理する方法であって、他のストレージ装置を制御するために前記ストレージ装置の１つをマスタストレージ装置として選出する選出プロセスにおいて、前記ストレージ装置は、前記ストレージ装置のどれがあるパラメータの最も適切な値を有しているかを決定するためにダイアログにおいて状態及び／又はパラメータの情報をやり取りし、最も適切なパラメータ値を持つストレージ装置が、前記他のストレージ装置が従属ストレージ装置の状態になるその後の期間、最新のマスタストレージ装置として選出される当該分散ストレージシステムを管理する方法を提供する。
【０００８】
本発明による選出プロセスでは、ネットワークのストレージ装置が、ストレージ装置のうちのどれがマスタストレージ装置の状態になるのに最も好適であるかを決定するために、信号の形態で情報をやり取りする。選出ダイアログは、ストレージ装置がストレージ装置の状態及び／又はパラメータ値に関する情報を要求及び／又は呈示する予め定義されたプロトコルに従う。マスタストレージ装置の状態の任意のストレージ装置は、別のストレージ装置から状態及び／又はパラメータ値を要求することができる。そのような要求に応じて、ストレージ装置は、必要な情報を呈示する。１つよりも多いストレージ装置がマスタストレージ装置の状態を有している状況では、これらのストレージ装置のうちのどれがマスタストレージ装置の状態を保つべきであるかを決定するためにパラメータの値が用いられる。最も適切な値、すなわちパラメータの種類に依存して「最大の」値又は「最小の」値を持つストレージ装置が、最終的にマスタストレージ装置の状態を保ち、他のストレージ装置は状態をマスタから「スレーブ」又は従属の状態に切り換える。このやり方でマスタストレージ装置であるように選出されたストレージ装置は、当該ストレージ装置が機能しなくなるまで又はそのパラメータ値が別のストレージ装置のパラメータ値により超えられるまで、次の期間この状態を保つ。上記「マスタ」及び「スレーブ」という用語は、それぞれ制御装置及び従属装置を指す場合に通常用いられており、従って以下においても用いられる。
【０００９】
２つのストレージ装置の間においてやり取りされる上記状態の情報は、「マスタ」又は「スレーブ」のいずれか一方であり得る。上記パラメータの情報は、空きメモリスペース、処理能力、利用可能な帯域幅等のような任意の好適なパラメータの値であり得る。パラメータの種類は分散ストレージシステムの動作の初めに規定されることが好ましく、全体を通して継続する。「最も適切な」値は「より望ましい」と理解されるべきであり、必ずしもより大きい値ではない。例えば、ストレージ装置間においてやり取りされるパラメータがそのときのＣＰＵの負荷を表す場合、より低い値が高い値よりも「より望ましい」と解釈され得る。両方のストレージ装置が等しいパラメータ値を有している場合には、これらの装置のどちらが「優れている」かに関しての決定は、硬貨を投げて表か裏かで物事を決めるやり方でランダム化され得る。
【００１０】
従って、本発明の特に有利な特徴は、マスタ／スレーブ選出プロセス全体が完全に自動式で行われることであり、これは、ユーザによる手動式の対話の必要をなくす。そのため、その時に指定されているマスタストレージ装置が何らかの理由のために機能しなくなった場合でさえも、残りのストレージ装置がマスタストレージ装置の役割を担うようにそれらの数のうちの１つを選出する。従って、ヒューマンインターアクションは必要とされず、分散ストレージシステムの動作中の妨害又は中断が防止され得る。
【００１１】
従って、分散ストレージシステムにおいて用いるための、マスタストレージ装置として又は従属ストレージ装置として動作可能であるストレージ装置は、状態及び／又はパラメータ値の情報を受け取る及び／又は与えるネットワーク上に存在する任意の他のストレージ装置を伴うダイアログに入るためのダイアログユニットと、他のストレージ装置から受け取ったパラメータ値に従って前記ストレージ装置の次の状態を決定する状態決定ユニットと、マスタストレージ装置の状態と従属ストレージ装置の状態との間において前記ストレージ装置の前記状態を切り換える状態トグルユニットとを有する。
【００１２】
上記ストレージ装置のいずれもが機能しなくなったマスタストレージ装置に取って代わるためにマスタストレージ装置の状態になることができるべきであるので、すなわち、各ストレージ装置がマスタ又はスレーブのいずれか一方として互換性を持って動作することができるべきであるので、ネットワーク上の各ストレージ装置は同一であり、同じタイプのプロセッサを備え、同じソフトウェアを走らせることが好ましい。この態様では、マスタ状態とスレーブ状態との切り換えは、任意のストレージ装置に関して任意の時間に可能である。
【００１３】
従属請求項及び後の説明は、本発明の特に有利な形態及び特徴を開示している。
【００１４】
ストレージ装置の電源を投入すると、該ストレージ装置は自動的にマスタストレージ装置の状態になることが最も好ましい。ネットワークの幾つかのストレージ装置が同時に電源投入される又はオン状態にされると、これらのストレージ装置のそれぞれはマスタストレージ装置の状態になる。更に、ストレージ装置が分散ストレージシステムに加えられると、分散ストレージシステムを既に制御しているマスタストレージ装置に加えて、このストレージ装置も電源投入時にマスタストレージ装置の状態になる。マスタ／スレーブ管理システムは、ストレージ装置のうちの１つだけがマスタストレージ装置の状態を有し得ることを前提としているので、ストレージ装置のうちのどれがマスタストレージ装置の状態を保つかに関して決定がなされなければならない。
【００１５】
電源投入時に自動的にマスタストレージ装置の状態になるストレージ装置を備えることの利点は、ストレージ装置のうちの少なくとも１つがマスタストレージ装置の状態を有するので、ネットワーク上の全てのストレージ装置がスレーブ又は従属ストレージ装置の状態を同時に有する状況が避けられることであり、１つよりも多いストレージ装置がマスタの状態を有する場合、これらのうちのどれがその状態を保つべきであるかを決定する選出プロセスは単純明快である。
【００１６】
この目的のために、マスタストレージ装置の状態の各ストレージ装置は、任意の他のストレージ装置が存在するかどうかを決定するためにネットワークを走査する走査動作を開始し、検索し得る任意の他のストレージ装置を伴うダイアログに入る。このダイアログは、ストレージ装置が他のストレージ装置の状態及び／又はパラメータ値に関する他のストレージ装置からの情報を要求するために別のストレージ装置に要求信号を送る及び／又は他のストレージ装置からの要求信号に応じて別のストレージ装置にそれ自身の状態及び／又はそれ自身のパラメータ値を表す情報信号を呈示する予め定義された選出サービスプロトコルに従う。マスタの状態のストレージ装置は、リストを確立しており、そのリストに従属又はスレーブの状態の任意の他のストレージ装置に関する記述的情報を入力する。上記記述的情報は、ＩＰアドレス又は任意の他の好適な情報であり得る。マスタストレージは、電源投入後にこのリストを確立するか、又はスレーブストレージ装置の状態の別のストレージ装置を検出した際に初めてリストを確立し得る。
【００１７】
マスタストレージ装置の状態の第１のストレージ装置が第２のストレージ装置から状態の情報を受け取り、第２のストレージ装置がスレーブの状態を有することを確認する状況において、第１のストレージ装置は、第２のストレージ装置に関する適切な情報でそのスレーブのリストを補強する。第２のストレージ装置が自身もマスタストレージ装置の状態を有していると返信すると、第１のストレージ装置は、選出サービスプロトコルに従って第２のストレージ装置からのパラメータ値を要求する。第２のストレージ装置が第１のストレージ装置のパラメータ値よりも少なく適切なパラメータ値を返信すると、第１のストレージ装置は、第２のストレージ装置を表す情報を入力することによりそのスレーブのリストを補強し、第２のストレージ装置はスレーブの状態に切り換わる。一方、第２のストレージ装置が第１のストレージ装置のパラメータ値よりも多く適切なパラメータ値を返信すると、第１のストレージ装置は、リストに存在している任意の入力よりなるそのスレーブのリストを消去し、その状態をマスタからスレーブに切り換えるのに対して、第２のストレージ装置は、第１のストレージ装置に関する入力でそのスレーブのリストを補強し、マスタとして動作し続ける。
【００１８】
電源投入後、１つ又はそれ以上のストレージ装置がマスタストレージ装置として役割を果たし、各そのようなマスタストレージ装置は、好ましくは一定の間隔をおいて、そのスレーブのリストの各スレーブストレージ装置の機能停止検出ユニットに「ハートビートの要求」又は非停止（non-failure）信号を出す。マスタストレージ装置は、この要求に対する応答を期待する。従属ストレージ装置が応答を返信しない場合、マスタストレージ装置は、スレーブストレージ装置は機能しなくなっていると結論付け、このスレーブをスレーブのリストから削除する。マスタストレージ装置は、また、システムのオペレータ又はコントローラにスレーブストレージ装置の機能停止を報告し、その結果、任意の必要な補修又は修理の作業が行われ得る。
【００１９】
更に、スレーブ又は従属ストレージ装置のそれぞれは、マスタストレージ装置からある間隔でこの信号又は要求を受け取ることを期待する。上記ハートビートの要求が所定の持続時間を越えて届かない場合、スレーブストレージ装置は、マスタストレージ装置が機能しなくなっていると結論付け、該スレーブストレージ装置がマスタストレージ装置の状態になる。従って、ハートビート信号が存在しないことを検出することができる全てのスレーブストレージ装置は、元のマスタストレージ装置の機能停止後のある時間にマスタストレージ装置の状態になる。これらのストレージ装置のそれぞれは、マスタ／スレーブ選出プロトコルに従って、このとき他のストレージ装置からの状態及びパラメータの情報に関する要求を出すことを開始するとともに、他のストレージ装置からの要求に応じて状態及び／又はパラメータの情報を呈示する。やり取りされた情報に基づいて、ストレージ装置の全てであるが１つが、状態をマスタからスレーブに切り換え、マスタの状態を保つために１つのみのストレージ装置をそのままにする。このストレージ装置もまた、ネットワーク上の全てのスレーブストレージ装置に非停止信号を出すことを始める。
【００２０】
どのストレージ装置がマスタストレージ装置の状態に関して最も好適であるかを決定するために、処理能力、利用可能な帯域幅等のような任意の好適なパラメータが用いられ得る。本発明の特に好ましい形態では、ストレージ装置により呈示されるパラメータの情報が、当該ストレージ装置に関して利用可能な空きストレージ容量の指示（indication）を有しており、最大の空きスペースを有するストレージ装置が最終的にマスタストレージ装置として動作するように選出される。任意のある時間において最大の空きストレージ容量を有するマスタストレージ装置の利点は、マスタストレージ装置がストレージスペースを使い切ってしまい、スレーブストレージ装置へのデータの転送を要する場合に別の方法では生じる不要なネットワーク転送が防止される。本発明の好ましい形態では、マスタストレージ装置は、幾つかの従属ストレージ装置のストレージ容量を分散ストレージシステムにおいて記憶されるデータに割り当てることにより空きストレージ容量を保つように努め、その結果、マスタストレージ装置のストレージ容量が従属ストレージ装置のそれぞれのストレージ容量よりも大きいままである。従って、ネットワークをわたる不要なデータの転送が防止され、利用可能なネットワークの帯域幅が影響を及ぼされない。マスタ／スレーブの群（constellation）は、まれに、例えば、その時のマスタストレージ装置よりも大きいストレージ容量を持つ新しいストレージ装置がネットワークに追加された場合又はその時のマスタストレージ装置が機能しなくなった場合にのみ、変化する必要がある。
【００２１】
上記マスタストレージ装置は、分散ストレージシステムの利用可能なストレージ容量を最適化するために１つの従属ストレージ装置から別の従属ストレージ装置にデータを移動することもできる。マスタストレージ装置がそれ自身のストレージ容量を確保することを強要され得る場合、結果として生じる空きストレージ容量の減少がその後にマスタの状態を失うことを招き、このストレージ装置はもはやネットワーク上の他のストレージ装置に非停止又はハートビート信号を出さなくなり、その結果、ハートビートの要求が存在しないことが検出されると、他のストレージ装置の幾つかがそれら自身をマスタストレージ装置の状態にする。マスタ／スレーブ選出サービスプロトコルにおけるパラメータ値のやり取りに従って、その時に最大の空きストレージ容量を有するストレージ装置が最終的にマスタであるように選出されるのに対して、元のマスタストレージ装置はその状態を明け渡し、スレーブとして動作を続ける。
【００２２】
上記分散ストレージシステムは、任意の数の上述したようなストレージ装置を有しており、これらのストレージ装置の少なくとも１つ、好ましくは全てが機能停止検出ユニットを利用し、機能停止検出ユニットを用いる従属ストレージ装置のいずれかが、必要が生じた場合にマスタストレージ装置の状態になり得る。そのような機能停止検出ユニットは、マスタストレージ装置により時々送出されるハートビートの要求を検出しようとする。この要求が予め定義された長さの時間に届かないと、機能停止検出ユニットは状態決定ユニット又は状態トグルユニットにスレーブからマスタに切り換える決定がなされ得ることを知らせる。
【００２３】
上述したようなストレージ装置のモジュール又はユニットは、ソフトウェア、ハードウェア又は最適であるソフトウェア及びハードウェアの両方の組み合わせにおいて実現され得る。上記マスタ／スレーブ選出サービスプロトコルは、プログラム可能なストレージ装置のメモリに直接ロードされ得るコンピュータプログラム製品の形で実現されることが最も好ましく、上記方法の各ステップは、コンピュータプログラムが上記ストレージ装置上で走る場合に好適なソフトウェアコード部により実行される。
【００２４】
本発明の他の目的及び特徴は、添付の図面と組み合わせて検討される以下の詳細な説明から明らかになるであろう。しかしながら、図面は単に説明の目的のために意図されており、本発明の限定の定義として意図されてはいないことを理解されたい。
【発明を実施するための最良の形態】
【００２５】
各図面において、同じ参照符号は全体を通して同じ物体を意味している。
【００２６】
図１は、ネットワークＮにより互いに接続された分散ストレージシステム１の幾つかのストレージ装置Ｄ１，Ｄ２，Ｄ３，…，Ｄｎを示している。各ストレージ装置Ｄ１，Ｄ２，Ｄ３，…，Ｄｎは、ネットワーク接続部を伴う処理ボード及び可変サイズのハードディスクＭ１，Ｍ２，Ｍ３，…，Ｍｎを有しており、同じソフトウェアスタックを走らせる。ネットワークＮは、任意の好適なやり方で実現され、簡単にするために図面ではバックボーンネットワークＮとして示されている。分散ストレージシステム１におけるストレージ装置Ｄ１，Ｄ２，Ｄ３，…，Ｄｎのそれぞれは、ネットワークＮ上の任意の他のストレージ装置Ｄ１，Ｄ２，Ｄ３，…，Ｄｎから情報、すなわち信号を受け取ることができ、また、ここではいかなる深さにおいても処理される必要がない幾つかの好適なバスアドレッシングプロトコルを用いてネットワークＮ上の任意の他のストレージ装置Ｄ１，Ｄ２，Ｄ３，…，Ｄｎに情報を送ることもできる。
【００２７】
本発明によるストレージ装置Ｄ１，Ｄ２，Ｄ３，…，Ｄｎは、１つ又はそれ以上のハードディスク、揮発性メモリ又は異なるメモリのタイプの組み合わせさえもを有し得る関連するメモリＭ１，Ｍ２，Ｍ３，…，Ｍｎにデータを記憶するため及び上記関連するメモリＭ１，Ｍ２，Ｍ３，…，Ｍｎからデータを取り出すために用いられ得る。各ストレージ装置Ｄ１，Ｄ２，Ｄ３，…，Ｄｎは、それ自身の特定のメモリＭ１，Ｍ２，Ｍ３，…，Ｍｎと関連している。ストレージ装置Ｄ１，Ｄ２，Ｄ３，…，ＤｎのメモリＭ１，Ｍ２，Ｍ３，…，Ｍｎに記憶されたデータは、ネットワークＮをわたって目的のストレージ装置Ｄ１，Ｄ２，Ｄ３，…，Ｄｎに送られる。ストレージプロセスを制御する任意の信号もまたネットワークＮをわたって送られる。
【００２８】
必要が生じた場合に任意のストレージ装置Ｄ１，Ｄ２，Ｄ３，…，Ｄｎが任意の時間にマスタストレージ装置の役割を引き受けることを可能にするために、各ストレージ装置Ｄ１，Ｄ２，Ｄ３，…，Ｄｎは、コンテンツに関連するメタデータを含むデータベースと、ハードディスクＭ１，Ｍ２，Ｍ３，…，Ｍｎ上のコンテンツの物理的な位置に対するポインタとを有している。上記データベースは、また、分散ストレージシステムの任意の設定値を含んでいる。このデータベースは、マスタストレージ装置により該マスタストレージ装置上において更新され、その後、全てのスレーブストレージ装置Ｄ１，Ｄ２，Ｄ３，…，Ｄｎに複製される。
【００２９】
典型的には、このような分散ストレージシステム１は、連続的に動作している。ストレージ装置Ｄ１，Ｄ２，Ｄ３，…，Ｄｎは、任意の時間に分散ストレージシステム１に加えられ得るか、又は、不適当、物理的な故障、維持の手段等のような何らかの理由のために取り除かれ得る。ストレージ装置Ｄ１，Ｄ２，Ｄ３，…，ＤｎがネットワークＮに加えられると、マスタデータベースのコンテンツが新しいストレージ装置Ｄ１，Ｄ２，Ｄ３，…，Ｄｎに複製され、新しいコンテンツを受け入れる準備が整う。万一ストレージ装置Ｄ１，Ｄ２，Ｄ３，…，Ｄｎが機能しなくなると、マスタストレージ装置はそのデータベースから専ら当該ストレージ装置Ｄ１，Ｄ２，Ｄ３，…，Ｄｎのメモリに記憶されたコンテンツに関連する全てのメタデータを削除する。マスタストレージ装置Ｄ１，Ｄ２，Ｄ３，…，Ｄｎが機能しなくなった状況では、残りのストレージ装置Ｄ１，Ｄ２，Ｄ３，…，Ｄｎのうちの１つがマスタに選ばれ、専ら以前のマスタのメモリに記憶されたコンテンツに関連する全てのメタデータを削除する。
【００３０】
分散ストレージシステム１におけるストレージスペースは集中的に割り当てられるべきであるので、以下により詳細に説明されるマスタ／スレーブ選出ダイアログにおいて、ストレージ装置Ｄ１，Ｄ２，Ｄ３，…，Ｄｎのうちの１つが「マスタ」の状態に選ばれ又は指定され、残りのストレージ装置Ｄ１，Ｄ２，Ｄ３，…，Ｄｎは「スレーブ」又は従属の状態になる。その後、このマスタストレージ装置は、ストレージ装置Ｄ１，Ｄ２，Ｄ３，…，Ｄｎのどれに任意の入力データが割り当てられる又は記憶されるべきであるかと、どのストレージ装置Ｄ１，Ｄ２，Ｄ３，…，Ｄｎから特定のデータが取り出されるべきであるかとを決定する。更に、上記マスタストレージ装置は、続けられている機能又は機能が停止していないことを従属ストレージ装置Ｄ１，Ｄ２，Ｄ３，…，Ｄｎに知らせるため及び各スレーブストレージ装置Ｄ１，Ｄ２，Ｄ３，…，Ｄｎからの機能が停止していないことの確認を要求するために、一定の間隔をおいてハートビート要求信号を出す。
【００３１】
ネットワークＮをわたって受け取られる信号を解釈するため及びメモリへのデータの記憶とメモリからのデータの取り出しとに対処するために、ストレージ装置は幾つかのユニット又はモジュールを利用する。図２は、本発明に関連するストレージ装置Ｄと、その関連するメモリＭと、ストレージ装置Ｄのユニット５，６，７，８，９，１０，１１とを示している。ストレージ装置Ｄは、本発明に関係がなく、従ってこの説明において考慮されない任意の数の他のユニット、モジュール又はユーザインターフェースを有し得る。
【００３２】
コマンド送出ユニット５は、ストレージ装置Ｄがマスタとして動作する際にメモリの割り当て又はデータの取り出しに関係がある信号のようなコマンド信号１２を送出することを可能にする。スレーブとして動作する場合には、コマンド受信ユニット６がマスタストレージ装置からコマンド信号１３を受け取る。このストレージ装置Ｄと関連しているメモリＭにデータ１４が書き込まれ得るか、又は上記メモリＭからデータ１４が読み出される。メモリのアドレス指定は、ストレージ装置Ｄにより局所的に管理され得るか、又は、マスタストレージ装置により遠く離れた所から管理され得る。
【００３３】
インターフェースユニット８は、ネットワーク上の別のストレージ装置から入ってくる要求信号２及び情報信号３を受け取り、また、別のストレージ装置に要求信号２´及び／又は情報信号３´を送る。ダイアログユニット７は、他のストレージ装置から受け取った任意の要求２及び情報３を解釈し、以下に詳細に説明されるマスタ／スレーブ選出プロトコルに従って、要求を出すとともに、インターフェースユニット８によりネットワーク上の別のストレージ装置に送られるこのストレージ装置Ｄに関する状態及びパラメータの情報を呈示する。ダイアログユニット７は、また、状態決定ユニット９に情報を伝える。
【００３４】
機能停止検出ユニット１１は、その時のマスタストレージ装置により送出される非停止若しくはハートビート信号４を受け取るか又は「聞く」。万一上記その時のマスタストレージ装置が何らかの理由で機能しなくなると、このハートビート信号４が機能停止検出ユニット１１に到達しない。所定の長さの時間ハートビート信号４が存在しなかった後、マスタストレージ装置は機能しなくなったとみなされる。適切な信号が状態決定ユニット９に伝えられる。
【００３５】
この状態決定ユニット９は、ダイアログユニット７及び機能停止検出ユニット１１から受け取った情報に基づいて、その時のマスタ／スレーブ状態が続くべきであるかどうか又はその状態がマスタからスレーブに若しくはスレーブからマスタに切り換えられるべきであるかどうかを決定する。それに応じて、状態トグルユニット１０は、ストレージ装置Ｄの状態を「マスタ」から「スレーブ」に又は「スレーブ」から「マスタ」に切り換える。
【００３６】
ダイアログユニット７、状態決定ユニット９及び状態トグルユニット１０のような上述したユニットの全てが、任意の信号の解釈及び処理を実行するソフトウェアモジュールの形態で実現され得る。
【００３７】
上記信号２，２´，３，３´，１２，１３，１４，４の全てがネットワークＮをわたって通常のやり方で伝送されると考えられるが、理解しやすいようにこの図では別個に示されている。更に、ストレージ装置ＤとネットワークＮとの間のインターフェースは、任意の好適なネットワークインターフェースカード又はコネクタであってもよく、コマンド送出ユニット５、コマンド受信ユニット６、機能停止検出ユニット１１及びインターフェースユニット８は、単一のインターフェースにおいて全て組み合わされる。
【００３８】
図３は、本発明によるマスタ／スレーブ選出プロトコルのステップを詳細に示している。分散ストレージシステムにおけるストレージ装置の電源投入１００の後、このストレージ装置は自動的にマスタの状態１０１になる。ストレージ装置は、ネットワーク上に他のストレージ装置が幾つ存在するか及びこれらの他のストレージ装置の状態又はパラメータ値が何であるかを知ることができないので、各ストレージ装置は、他のストレージ装置に対する状態を決定し、必要であればパラメータ値を比較しなければならない。この目的のために、ネットワークを走査するプロセス２０、他のストレージ装置からの要求に応えるプロセス３０及び機能停止の検出を行うプロセス４０が、ステップ２００，３００，４００においてそれぞれ初期化され、各ストレージ装置上で平行して進む。以下においては、ネットワークをわたる不要なデータの転送はマスタストレージ装置の空きストレージ容量を維持することにより減少し、これは帯域幅の不要な減少を防止するので、各ストレージ装置間においてやり取りされるパラメータ値はストレージ装置において利用可能な空きストレージ容量の尺度である。明らかに、任意の他の好適なパラメータ値が、動作の最初に等しく適切に決定され、同じダイアログを用いてやり取りされ得る。
【００３９】
上記走査プロセス２０では、別のストレージ装置の選出サービスポートの存在を明らかにしようとして第１のストレージ装置によりサブネット又はネットワークが走査される。ステップ２０１において他のストレージ装置が見つからなかった場合、上記第１のストレージ装置はステップ２０９において走査プロセス２０を終了する。ステップ２０１において別のストレージ装置が見つかった場合には、第１のストレージ装置は、ステップ２０２において第２のストレージ装置の状態を要求する。ステップ２０３において、第１のストレージ装置は上記第２のストレージ装置がスレーブであるかどうかを調べる。スレーブであった場合、ステップ２０４において第１のストレージ装置は第２のストレージ装置についての記述的情報でそのスレーブのリストを補強し、ステップ２００に戻る。第２のストレージ装置がマスタであった場合には、第１のストレージ装置は、ステップ２０５においてその空きストレージスペースを要求し、ステップ２０６において第２のストレージ装置の空きストレージスペースを自身のストレージスペースと比較する。
【００４０】
上記第２のストレージ装置が上記第１のストレージ装置よりも少ない空きストレージ容量しか持っていないと、第１のストレージ装置は、ステップ２０４において第２のストレージ装置の記述子でそのスレーブのリストを補強し、ステップ２００に戻る。一方、第２のストレージ装置が第１のストレージ装置よりも多いストレージ容量を利用する場合には、第１のストレージ装置は、ステップ２０７において任意の入力よりなるそのスレーブのリストを消去し、ステップ２０８においてマスタの状態を譲ってスレーブの状態に切り換わり、ステップ２０９において走査プロセス２０を終了する。
【００４１】
上記走査プロセス２０と平行して選出サービスプロセス３０が走り、このプロセスでは、ステップ３０１において各ストレージ装置がネットワーク上の別のストレージ装置からの要求を待つ。第２のストレージ装置から入ってくる要求が解析される。ステップ３０２において第１のストレージ装置の状態が要求されると、ステップ３０３において上記第１のストレージ装置はその状態（マスタ又はスレーブ）を第２のストレージ装置に返信する。ステップ３０２´においてパラメータ値、このケースでは空きストレージ容量が要求されると、ステップ３０３´において第１のストレージ装置はその時の空きスペースを第２のストレージ装置に返信する。ステップ３０３又はステップ３０３´のいずれかの後、ステップ３０４において第１のストレージ装置は自身の状態を調べる。スレーブであれば、ステップ３０１に戻って他の要求を持つ。マスタであれば、ステップ３０５において第２のストレージ装置のパラメータ値を要求する。ステップ３０６において第２のストレージ装置がより低いパラメータ値を返信すると、第１のストレージ装置は、ステップ３０７においてそのスレーブのリストに第２のストレージ装置を加え、ステップ３０１に戻り、他の要求を聞く。一方、ステップ３０６において第２のストレージ装置により返信されたパラメータ値が第１のストレージ装置のパラメータ値を超えていると、第１のストレージ装置は、ステップ３０８においてそのスレーブのリストを消去し、ステップ３０９においてスレーブの状態になり、ステップ３０１に戻ってネットワーク上の他のストレージ装置からの要求を聞き取ることを再開する。
【００４２】
機能停止の検出のための残りのプロセス４０では、ステップ４０１において第１のストレージ装置がその状態を調べる。マスタであれば、ステップ４０２において、上記第１のストレージ装置はそのスレーブのリストの第２のストレージ装置からの「ハートビート」を要求する。上記第２のストレージ装置が生存している（alive）と、すなわちステップ４０３においてハートビートを返信した場合は、第１のストレージ装置はステップ４０１に戻る。一方、ステップ４０３において第２のストレージ装置がハートビート信号を返信しないと、ステップ４０４において、第１のストレージ装置は第２のストレージ装置が機能していないと結論付け、そのスレーブのリストからこの第２のストレージ装置を削除する。
【００４３】
ステップ４０１において、上記第１のストレージ装置が、該第１のストレージ装置はマスタではないと決定すると、ステップ４０５において第１のストレージ装置は所定の長さの時間マスタストレージ装置からのハートビートの要求を待つ。ステップ４０６において、第１のストレージ装置は、既に費やされた待ち時間を予め定義された持続時間と連続的に比較する。ステップ４０７において指定された最大タイムアウト内にハートビートの要求が届くと、ステップ４０８において第１のストレージ装置が確認信号を送ることによりマスタストレージ装置に応答し、ステップ４０５に戻って他のハートビートの要求を持つ。この待ち時間の長さがハートビートの要求についての待ち時間に関する予め定義された持続時間に等しいか又はそれを超えた場合、ステップ４０６において、第１のストレージ装置は、マスタストレージ装置は機能していないと結論付け、ステップ１０１において該第１のストレージ装置自体をマスタストレージ装置の状態にする。
【００４４】
他のストレージ装置も、マスタストレージ装置は機能していないと結論付け、このストレージ装置もまたマスタストレージ装置の状態になるので、他のストレージ装置がスレーブ装置になる一方で、マスタ／スレーブ選出プロトコルは、そのストレージ装置のマスタの状態を保つために該ストレージ装置のうちの１つを再度選出する。
【００４５】
図４ないし図８は、上述したようなマスタ／スレーブ選出プロトコルにおける各ステップのｔにより示されている時間のシーケンスを説明する時間図である。
【００４６】
図４は、システムの電源投入後全てがマスタストレージ装置の状態を有している幾つかのストレージ装置の中からマスタストレージ装置が選出されるマスタ／スレーブ選出プロトコルにおける各ステップのシーケンスを示している。この例では、３つの装置Ｄ１，Ｄ２，Ｄ３全てが最初にマスタストレージ装置の状態を有しており、上述した走査及びマスタ選出プロセスを開始する。Ｄ１は、Ｄ２からその状態及び空きスペースを要求する。Ｄ２はＤ１よりも多くの利用可能なストレージ容量を持っているので、その後、Ｄ１は状態をスレーブに切り替え、走査プロセスを終了する。一方、Ｄ２はＤ１からの状態の情報を要求し、Ｄ１がスレーブであることが分かり、Ｄ１に関する入力でそのスレーブのリストを補強する。次に、Ｄ２は、Ｄ３を検出し、Ｄ３からの状態及び空きスペースの情報を要求する。この場合も同様に、Ｄ３はＤ２よりも少ない空きストレージ容量しか持っておらず、Ｄ２はＤ３に関する入力でそのスレーブのリストを補強する。Ｄ２は、ネットワーク上において他のストレージ装置を発見せず、従ってその走査プロセスを終了し、マスタストレージ装置として動作を続ける。Ｄ３は依然としてネットワークを走査しており、Ｄ１を検出する。状態の情報に関する要求に応じて、Ｄ１は、現在は「スレーブ」であるその状態を呈示する。Ｄ３はこの情報でそのリストを補強し、Ｄ２からの状態の情報を要求し始める。Ｄ２は依然としてマスタであり、Ｄ３はパラメータの情報も要求せざるをえない。Ｄ２がＤ３自身よりも多くの空きストレージ容量を持っていることが分かると、Ｄ３はマスタの状態を譲らなければならないことを認識する。従って、Ｄ３は、そのスレーブのリストを消去し、マスタからスレーブの状態に切り換わり、走査プロセスを終了する。
【００４７】
図５は、上記図４において説明した３つのストレージ装置Ｄ１，Ｄ２，Ｄ３を有する分散ストレージシステムに他のストレージ装置Ｄｎを加えた効果を説明している。ストレージ装置Ｄ２がマスタとして動作しているが、新しく加わったストレージ装置Ｄｎもまたマスタの状態を有している。この新しい装置Ｄｎは、走査プロセスを自動的に開始し、最初にストレージ装置Ｄ３の所在を突き止め、ストレージ装置Ｄ３はストレージ装置Ｄｎからの要求に応じてその状態（スレーブ）を呈示し、ストレージ装置Ｄｎはその結果として入力の記述でそのスレーブのリストを更新する。次に、ストレージ装置Ｄｎは、ストレージ装置Ｄ２からの状態に関する要求を出す。このストレージ装置Ｄ２もマスタの状態を有していることが分かると、ストレージ装置Ｄｎはその空きストレージ容量を尋ねる。ストレージ装置Ｄ２はより少ない空きストレージ容量（２０ギガバイト）しか持っていないので、新しいストレージ装置Ｄｎはストレージ装置Ｄ２に関する入力でそのスレーブのリストを補強する。このやり取りは、空きストレージ容量を要求するストレージ装置Ｄ２からストレージ装置Ｄｎへの要求により続けられる。ストレージ装置Ｄｎがストレージ装置Ｄ２自身より多くの空きストレージ容量を持っていることが分かると、ストレージ装置Ｄ２はそのスレーブのリストを消去し、マスタの状態を明け渡してスレーブの状態に切り換わる。最後に、ストレージ装置Ｄｎは、ネットワーク上の最後の残りのストレージ装置Ｄ１の所在を突き止め、その状態を要求する。ストレージ装置Ｄ１はスレーブとして動作しているので、ストレージ装置Ｄｎは適切な入力でそのリストを補強し、走査プロセスを終了する。
【００４８】
図６は、同様の状況を示しているが、このケースでは、新しいストレージ装置Ｄｎがその時にマスタとして作用しているストレージ装置Ｄ２よりも少ないストレージ容量しか持っていない。上記図５において説明したように、新しいストレージ装置は、走査プロセスを開始して、最初にストレージ装置Ｄ３を検出し、ストレージ装置Ｄ３がスレーブであることが分かった後、このストレージ装置に関する入力を加える。次に、新しいストレージ装置Ｄｎは、同じくマスタの状態を有しているストレージ装置Ｄ２を検出する。上記マスタ／スレーブ選出プロトコルに従う情報のやり取りは、新しいストレージ装置Ｄｎに、ストレージ装置Ｄ２がマスタの状態を有し、ストレージ装置Ｄｎ自身よりも多くの空きストレージ容量を有していることを知らせる。従って、ストレージ装置Ｄ２は、そのスレーブのリストを消去し、マスタの状態を明け渡す。ストレージ装置Ｄ２は、利用可能なストレージ容量を表すストレージ装置Ｄｎからのパラメータ値を要求し、適切な入力でそのスレーブのリストを補強し、マスタとして動作し続ける。
【００４９】
既に述べたように、マスタストレージ装置は、ネットワーク上の全てのスレーブストレージ装置に時々ハートビートの要求を出す。各スレーブは、ある時間内にそのような要求に「生存」信号を返信することにより応答しなければならず、その応答はマスタストレージ装置により記録される。図７は、ハートビートの要求に応答しなかった結果を示している。ここでは、ストレージ装置Ｄ１がマスタであり、ネットワーク上の全てのスレーブストレージ装置にハートビートの要求を出しており、簡単にするためにそのうちのスレーブストレージ装置Ｄ２のみが示されている。ストレージ装置Ｄ２は、動作している限り、マスタストレージ装置Ｄ１からのハートビートの要求に応じて「生存」を返信する。ある時点において、ストレージ装置Ｄ２は、機能しなくなり、もはやマスタストレージ装置Ｄ１からのハートビートの要求に応答することができない。全く応答を受け取っていない状態における何度かの試みの後、ストレージ装置Ｄ１は、スレーブストレージ装置Ｄ２はもはや動作可能ではないと結論付け、そのスレーブのリストからストレージ装置Ｄ２を表す入力を削除する。
【００５０】
上記マスタストレージ装置もまた動作中のある時点において機能しなくなり得るので、スレーブストレージ装置はそのような機能停止に応答することが可能である。図８は、マスタストレージ装置Ｄ１とスレーブストレージ装置Ｄ２との間のハートビートの要求及び応答のやり取りを示している。ある時点において、何らかの理由のためにマスタストレージ装置Ｄ１が機能しなくなる。その結果、そのハートビートの要求はもはや出されない。スレーブストレージ装置Ｄ２はハートビートの要求を待ち続けている。所定の長さの時間の後、スレーブストレージ装置Ｄ２は、マスタストレージ装置Ｄ１はもはや動作可能ではないと結論付け、スレーブストレージ装置Ｄ２自身がマスタの状態になる。簡単にするために図には示されていない任意の他のスレーブストレージ装置もまた、マスタストレージ装置の状態になり得る。その後、マスタ／スレーブ選出サービスは、最終的に１つのマスタストレージ装置のみがマスタストレージ装置の状態を維持するように実行され、残りのストレージ装置はスレーブの状態を再開する。
【００５１】
本発明が好ましい実施の形態及びその変形の形で開示されたが、本発明の範囲から逸脱することなく本発明に対して多数の更なる改良及び変形がなされ得ることは理解されるであろう。はっきりさせるために、本出願全体を通して「a」又は「an」の使用は複数を排除するものではなく、「有する（comprising）」は他のステップ又は構成要素を排除するものではないことも理解されるであろう。「ユニット」は、単一の要素として明示的に記述されていない限り、幾つかのブロック又は装置を有し得る。
【図面の簡単な説明】
【００５２】
【図１】ブロック図の形態で本発明による分散ストレージシステムを示している。
【図２】本発明の一実施の形態によるストレージ装置の構成要素を示す模式的なブロック図である。
【図３】本発明による方法に関するマスタ／スレーブ選出プロトコルのステップを説明する流れ図を示している。
【図４】本発明の一実施の形態によるマスタストレージ装置の選出プロセスにおけるステップを説明する時間図である。
【図５】本発明の一実施の形態によるマスタストレージ装置の選出プロセスにおけるステップを説明する時間図である。
【図６】本発明の一実施の形態によるマスタストレージ装置の選出プロセスにおけるステップを説明する時間図である。
【図７】本発明の一実施の形態によるスレーブストレージ装置の機能停止の結果を説明する時間図である。
【図８】本発明の一実施の形態によるマスタストレージ装置の機能停止の結果を説明する時間図である。
【図１】
2008512759.tif 000003
【図２】
2008512759.tif 000004
【図３】
2008512759.tif 000005
【図４】
2008512759.tif 000006
【図５】
2008512759.tif 000007
【図６】
2008512759.tif 000008
【図７】
2008512759.tif 000009
【図８】
2008512759.tif 000010
【国際調査報告】
2008512759.tif 000011
2008512759.tif 000012
2008512759.tif 000013