(57)【特許請求の範囲】
【請求項１】
複数のデータストレージノードを含むデータストレージシステムにデータを書き込む方法において、前記方法は、前記データストレージシステムにおいてデータにアクセスするアプリケーションを起動するサーバにおいて用いられ、
複数の前記ストレージノードにマルチキャストストレージクエリーを送信するステップ（４１）と、
前記ストレージノードのサブセットから複数の応答を受信するステップ（４３）であって、前記応答は、各ストレージノードにそれぞれ関連するストレージノード情報を含むステップと、
冗長性を達成するために、前記応答に基づいて前記サブセット内の少なくとも２つのストレージノードを選択するステップ（４５）であって、
アルゴリズムに基づいて、前記サブセット中の各ストレージノードに関して、それぞれのストレージノード情報に基づいた確率係数を決定するステップと、
前記少なくとも２つのストレージノードを無作為に選択するステップであって、ストレージノードが選択される確率は、その確率係数によって決まるステップと、
を含む選択ステップと、
データ及び前記データに対応するデータ識別子を前記選択されたストレージノードに送信するステップ（４７）と、
を含んでおり、
前記無作為にストレージノードを選択するステップは、地理的分離に基づく第１の判断基準を満たす前記サブセット中のストレージノードに対して行われることを特徴とする方法。
【請求項２】
請求項１に記載の方法において、前記ストレージノード情報は、各ストレージノードの地理的な位置に関連する地理データを含むことを特徴とする方法。
【請求項３】
請求項２に記載の方法において、前記地理的な位置は、問題の前記ストレージノードの緯度及び経度を含むことを特徴とする方法。
【請求項４】
請求項１に記載の方法において、前記ストレージノード情報は、問題の前記ストレージノードのシステム年齢を含むことを特徴とする方法。
【請求項５】
請求項１乃至４の何れか１項に記載の方法において、前記ストレージノード情報は、問題の前記ストレージノードのシステム負荷を含むことを特徴とする方法。
【請求項６】
請求項１乃至５の何れか１項に記載の方法において、前記マルチキャストストレージクエリーは、保存されるデータを特定するデータ識別子を含むことを特徴とする方法。
【請求項７】
請求項１乃至６の何れか１項に記載の方法において、少なくとも３つのノードが選択されることを特徴とする方法。
【請求項８】
請求項１乃至７の何れか１項に記載の方法において、前記データの保存に成功したストレージノードのリストを前記選択されたストレージノードに送信することを特徴とする方法。
【請求項９】
請求項１乃至８の何れか１項に記載の方法において、前記無作為に選択するステップが、前記サブセット中の前記ノードの一部に対して行われ、この一部には、最も高い確率係数を有するストレージノードが含まれることを特徴とする方法。
【請求項１０】
複数のデータストレージノードを含むデータストレージシステムにデータを書き込むのに適したサーバにおいて、
複数の前記ストレージノードにマルチキャストストレージクエリーを送信する手段と、
前記ストレージノードのサブセットから複数の応答を受信する手段であって、前記応答は、各ストレージノードにそれぞれ関連するストレージノード情報を含む手段と、
冗長性を達成するために、前記応答に基づいて前記サブセット内の少なくとも２つのストレージノードを選択する手段であって、前記選択は、
アルゴリズムに基づいて、前記サブセット中の各ストレージノードに関して、それぞれのストレージノード情報に基づいた確率係数を決定するステップと、
前記少なくとも２つのストレージノードを無作為に選択するステップであって、ストレージノードが選択される確率は、その確率係数によって決まるステップと、
を含んでおり、前記無作為にストレージノードを選択するステップは、地理的分離に基づく第１の判断基準を満たす前記サブセット中のストレージノードに対して行われる、手段と、
データ及び前記データに対応するデータ識別子を前記選択されたストレージノードに送信する手段と、
を含むことを特徴とするサーバ。
【請求項１１】
請求項１０に記載のサーバにおいて、前記ストレージノード情報は、各ストレージノードの地理的な位置に関連する地理データを含むことを特徴とするサーバ。
【請求項１２】
請求項１１に記載のサーバにおいて、前記地理的な位置は、問題の前記ストレージノードの緯度及び経度を含むことを特徴とするサーバ。
【請求項１３】
請求項１０に記載のサーバにおいて、前記ストレージノード情報は、問題の前記ストレージノードのシステム年齢を含むことを特徴とするサーバ。
【請求項１４】
請求項１０乃至１３の何れか１項に記載のサーバにおいて、前記ストレージノード情報は、問題の前記ストレージノードのシステム負荷を含むことを特徴とするサーバ。
【請求項１５】
請求項１０乃至１４の何れか１項に記載のサーバにおいて、前記マルチキャストストレージクエリーは、保存されるデータを特定するデータ識別子を含むことを特徴とするサーバ。
【請求項１６】
請求項１０乃至１５の何れか１項に記載のサーバにおいて、少なくとも３つのノードが選択されることを特徴とするサーバ。
【請求項１７】
請求項１０乃至１６の何れか１項に記載のサーバにおいて、前記データの保存に成功したストレージノードのリストを前記選択されたストレージノードに送信することを特徴とするサーバ。
【請求項１８】
請求項１０乃至１７の何れか１項に記載のサーバにおいて、前記無作為に選択するステップが、前記サブセット中の前記ノードの一部に対して行われ、この一部には、最も高い確率係数を有するストレージノードが含まれることを特徴とするサーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、複数のデータストレージノードを含むデータストレージシステムにデータを書き込む方法に関し、この方法は、データストレージシステム中のサーバにおいて用いられる。本開示はさらに、この方法を実施可能なサーバに関する。
【背景技術】
【０００２】
このような方法は、例えば、米国特許出願公開第２００５／０２４６３９３Ａ１号明細書に開示されている。この方法は、地理的に異なる場所にある複数のストレージセンターを用いるシステムに関して開示されている。保存データに関する情報を保守するために、分散オブジェクトストレージマネージャが含まれている。
【０００３】
このようなシステムに関連する課題の１つは、単純でありながら、ロバストで信頼性のあるデータの書き込み並びに保守をいかに達成するかである。
【発明の概要】
【０００４】
従って、本開示の目的の１つは、分散ストレージシステムにおいてデータのロバストな書き込みを実現することである。
【０００５】
この目的は、データストレージシステムにおいてデータにアクセスするアプリケーションを起動するサーバにおいて達成される、初めに言及した種類のデータストレージシステムにデータを書き込む方法を用いることによっても達成される。この方法は、複数のストレージノードにマルチキャストストレージクエリーを送信するステップと、前記ストレージノードのサブセットから複数の応答を受信するステップにおいて、応答は、各ストレージノードにそれぞれ関連するストレージノード情報を含むステップと、前記応答に基づいてサブセット内の少なくとも２つのストレージノードを選択するステップとを含む。この選択ステップは、アルゴリズムに基づいて、サブセット中の各ストレージノードに関して、それぞれのストレージノード情報に基づいた確率係数を決定するステップと、前記少なくとも２つのストレージノードを無作為に選択するステップにおいて、ストレージノードが選択される確率は、その確率係数によって決まるステップとを含む。この方法は、データ及びそのデータに対応するデータ識別子を選択されたストレージノードに送信するステップをさらに伴う。
【０００６】
この方法は、たとえストレージノードがそれらの一時的な適性に応じて選択されるとしても、情報が、短期間でもある程度システム全体に分散されるので、データのロバストな書き込みを達成する。どのストレージノードが同じ情報を持っているかの相関をある程度減少させることができるので、このことは、ストレージシステムの保守の要求が低いことを意味する。これは、ストレージノードの故障の際に行われ得る複製プロセスを、より多くの他のストレージノードによって、結果的にずっと速く行うことができることを意味する。さらに、書き込みにより多くのストレージノードが使用され、使用されていないストレージノードがより少ないので、集中的な書き込み動作中に高位のストレージノードに過負荷をかける危険性が低下する。
【０００７】
ストレージノード情報は、緯度、経度、及び高度等の各ストレージノードの地理的な位置に関連する地理データを含み得る。これにより、サーバが、部屋、建物、国、あるいは世界中にさえも、情報を地理的に分散することが可能となる。
【０００８】
無作為にストレージノードを選択するステップを、地理的分離に基づく第１の判断基準を満たすサブセット中のストレージノードに対して行うことが可能である。なぜなら、これは冗長性の重要な特徴であるからである。
【０００９】
ストレージノード情報は、問題のストレージノードのシステム年齢及び／又はシステム負荷を含み得る。
【００１０】
マルチキャストストレージクエリーは、保存されるデータを特定するデータ識別子を含み得る。
【００１１】
少なくとも３つのノードが選択され、データの保存に成功したストレージノードのリストを選択されたストレージノードに送信し得る。
【００１２】
ストレージノードを無作為に選択するステップは、サブセット中のノードの一部に対して行われてもよく、この一部には、最も高い確率係数を有するストレージノードが含まれる。これによって、最も適性の低いストレージノードが除外され、書き込まれる情報の無作為な分散を継続しながら、より信頼性の高いストレージノードの選択が提供される。
【００１３】
本開示はさらに、この方法に対応した、データの書き込みを行うためのサーバに関する。このサーバは、通常、この方法の動作を実施するための手段を含む。
【図面の簡単な説明】
【００１４】
【図１】図１は、分散データストレージシステムを示す。
【図２】図２Ａは、データ読み出しプロセスを示す。図２Ｂは、データ読み出しプロセスを示す。図２Ｃは、データ読み出しプロセスを示す。
【図３】図３は、データ読み出しプロセスを示す。
【図４】図４Ａは、データ書き込みプロセスを示す。図４Ｂは、データ書き込みプロセスを示す。図４Ｃは、データ書き込みプロセスを示す。
【図５】図５は、データ書き込みプロセスを示す。
【図６】図６は、複数のデータストレージノード間で複数のファイルが保存される状況を模式的に示す。
【図７】図７は、ハートビート信号の送信を示す。
【図８】図８は、データ保守プロセスの概略である。
【発明を実施するための形態】
【００１５】
本開示は、複数のストレージノードを含む分散データストレージシステムに関する。このシステム及びそれが使用されるコンテキストの構造の概要を図１に示す。
【００１６】
ユーザコンピュータ１は、インターネット３を介して、サーバ７上で起動されているアプリケーション５にアクセスする。従って、ユーザコンテキストは、ここで図示されるように、それ自体よく知られた一般的なクライアント・サーバ構成である。しかしながら、開示されるデータストレージシステムが他の構成においても有用となり得ることに留意されたい。
【００１７】
図示されたケースでは、２つのアプリケーション５、９がサーバ７上で起動される。しかしながら、このアプリケーションの数はもちろん異なってもよい。各アプリケーションは、分散データストレージシステム１３に対してインタフェースを提供し、サーバ上で起動されているアプリケーションから、一般的には書き込み及び読み出し要求である要求を支援するＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）１１を有する。アプリケーションの観点からすれば、データストレージシステム１３からの情報の読み出し又はデータストレージシステム１３への情報の書き込みは、他のどの種類のストレージ解決法、例えば、ファイルサーバ又は単純にハードドライブを使用するものとも異なって見える必要はない。
【００１８】
各ＡＰＩ１１は、データストレージシステム１３のストレージノード１５と通信し、ストレージノードは、互いに通信する。これらの通信は、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）及びＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）に基づく。これらの概念は、当業者には周知のものであり、これ以上の説明は行わない。
【００１９】
同じサーバ７上の異なるＡＰＩ１１が、異なるストレージノード１５のセットにアクセスしてもよいことに留意されたい。さらに、各ストレージノード１５にアクセスするサーバ７が２つ以上存在し得ることにも留意されたい。しかしながら、これは、後に説明するように、ストレージノードの動作方法に大きく影響を与えるものではない。
【００２０】
分散データストレージシステムの構成要素は、ストレージノード１５と、ストレージノード１５にアクセスするサーバ７内のＡＰＩ１１とである。従って、本開示は、サーバ７及びストレージノード１５において実施される方法に関する。これらの方法は、主に、サーバ及びストレージノード上でそれぞれ起動されるソフトウェアの実行として具体化され、分散データストレージシステム全体の動作及び特性を共に決定する。
【００２１】
ストレージノード１５は、一般的に、複数の機能ブロックを備えたファイルサーバによって具体化され得る。従って、ストレージノードは、一般的に、任意選択的にＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋ）システムとして構成される複数のハードドライブから構成されるストレージ媒体１７を含み得る。しかしながら、他の種類のストレージ媒体も同様に考えられる。
【００２２】
ストレージノード１５は、後述のように、ホストリストとして、データ要素／ストレージノード関係のリストを含むディレクトリ１９をさらに含むようにしてもよい。
【００２３】
ホストリストに加えて、各ストレージノードは、そのストレージノードのセット又はグループ内の全てのストレージノードのＩＰアドレスを含むノードリストをさらに含む。１つのグループ内のストレージノードの数は、２〜３個のストレージノードから数百個のストレージノードまで様々となり得る。ノードリストはさらに、バージョン番号を備えていてもよい。
【００２４】
さらに、ストレージノード１５は、複製ブロック２１及びクラスタ監視ブロック２３を含み得る。複製ブロック２１は、ストレージノードＡＰＩ２５を含み、後に詳細に説明するように、複製プロセスの必要性を特定し、それを行うための機能を実行するように構成されている。複製プロセスが、説明される読み出し及び書き込み動作中にサーバ７によって行われる動作にかなり一致する動作を含むので、複製ブロック２１のストレージノードＡＰＩ２５は、サーバ７のストレージノードＡＰＩ１１のコードにかなり一致するコードを含み得る。例えば、複製中に行われる書き込み動作は、サーバ７によって行われる書き込み動作にかなり一致する。クラスタ監視ブロック２３は、後により詳細に説明されるように、データストレージシステム１３中の他のストレージノードの監視を行うように構成されている。
【００２５】
分散データストレージシステムのストレージノード１５は、同じ階層レベルに存在すると見なすことができる。保存データ要素のディレクトリの保守及びデータ整合性の監視等の責任を担ういかなるマスターストレージノードを指定する必要もない。その代わりに、ストレージノード１５は全て等しいと見なすことができ、時には、システム内の他のストレージノードに対してデータ管理動作を行ってもよい。この均等性により、システムのロバスト性が確実となる。１つのストレージノードが故障した場合には、システム内の他のノードが故障したノードをカバーし、信頼性のあるデータストレージが保証される。
【００２６】
このシステムの動作を、以下の、データの読み出し、データの書き込み、及びデータの保守の順に説明する。これらの方法が非常に上手く共に機能するとしても、原理上、これらは互いに独立して実行されてもよいことに留意されたい。すなわち、例えばデータの読み出し方法は、本開示のデータの書き込み方法が用いられないとしても、優れた特性を提供することができ、その逆もまた同様である。
【００２７】
これより、図２Ａ〜図２Ｃ及び図３を参照して、読み出し方法を説明する。図３は、この方法を示すフローチャートである。
【００２８】
読み出し並びにシステムの他の機能は、複数のストレージノードと同時に通信するためにマルチキャスト通信を利用する。ここでは、マルチキャスト又はＩＰマルチキャストは、マルチキャストアプリケーション用に用意されたＩＰアドレスにメッセージを送信することによって達成されるポイントツーマルチポイント通信を意味する。
【００２９】
例えば、一般的に要求であるメッセージは、このようなＩＰアドレス（例えば、２４４．０．０．１）に送信され、複数の受信サーバが、このＩＰアドレスへの加入者として登録される。各受信サーバは、独自のＩＰアドレスを有する。ネットワークの切替装置が２４４．０．０．１に向けられたメッセージを受信すると、切替装置は、加入者として登録された各サーバのＩＰアドレスへとメッセージを転送する。
【００３０】
原理上、１つのみのサーバをマルチキャストアドレスに対する加入者として登録してもよく、その場合には、ポイントツーポイント通信が達成される。しかしながら、本開示のコンテキストでは、このような通信は、マルチキャスト方式が用いられるので、やはりマルチキャスト通信と見なされる。
【００３１】
単一の受信者との通信に関して、ユニキャスト通信も用いられる。
【００３２】
図２Ａ及び図３を参照すると、データストレージシステムからデータを取り出す方法は、複数のストレージノード１５へのマルチキャストクエリーの送信（３１）を含む。図示したケースでは、各々がＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレス１９２．１６８．１．１、１９２．１６８．１．２等を有する５つのストレージノードが存在する。言うまでもなく、ストレージノードの数は一例に過ぎない。クエリーは、例えば、それ自体よく知られた汎用一意識別子（ＵＵＩＤ）でもよいデータ識別子「２Ｂ９Ｂ４Ａ９７−７６Ｅ５−４９９Ｅ−Ａ２１Ａ６Ｄ７９３２ＤＤ７９２７」を含む。
【００３３】
ストレージノードは、識別子に対応するデータを探して自身をスキャンする。そのようなデータが見つかると、ストレージノードは、サーバ７によって受信される応答（３３）を送信する（図２Ｂを参照）。図示されるように、応答は、ストレージノードが関連データのコピーを有する表示に加えて、さらなる情報を任意で含んでいてもよい。具体的には、応答は、データを含む他のストレージノードに関するストレージノードディレクトリからの情報、データのどのバージョンがストレージノードに含まれているかに関する情報、及び現在どの負荷をストレージノードが受けているかに関する情報を含み得る。
【００３４】
応答に基づいて、サーバは、そこからデータが取り出される１つ又は複数のストレージノードを選択し（３５）、その／それらのストレージノードにデータのユニキャスト要求を送信する（３７）（図２Ｃを参照）。
【００３５】
データの要求に応じて、１つ又は複数のストレージノードは、データを受信する（３９）サーバに対してユニキャストで関連データを送信する。図示したケースでは、たった１つのストレージノードが選択される。これで十分であるが、整合性チェックを可能にする２セットのデータを受信するために、２つ以上のストレージノードの選択も可能である。データの転送が失敗した場合、サーバは、取り出しのために別のストレージノードを選択することができる。
【００３６】
ストレージノードの選択は、良好なシステム全体の性能を達成するために幾つかの要素を考慮に入れたアルゴリズムに基づいてもよい。他の概念も十分に考えられるが、一般的に、最新のデータバージョン及び最低の負荷を有するストレージノードが選択される。
【００３７】
任意選択的に、関与する全てのストレージノードに対して、どのノードがデータ含み、それがどのバージョンであるかを示すリストをサーバが送信することによって、動作を終了してもよい。この情報に基づいて、ストレージノード自身が、説明する複製プロセスによってデータを適切に保守することができる。
【００３８】
図４Ａ〜４Ｃ及び図５は、分散データストレージシステムのためのデータ書き込みプロセスを示す。
【００３９】
図４Ａ及び図５を参照すると、この方法は、サーバが複数のストレージノードにマルチキャストストレージクエリーを送信する（４１）ことを含む。ストレージクエリーは、データ識別子を含み、基本的に、受信しているストレージノードがこのファイルを保存可能であるか否かの質問から構成される。任意で、ストレージノードは、この名前のファイルを既に有しているか否かに関して自身の内部ディレクトリをチェックし、万一その場合には、サーバがファイル名を変更し得ることをサーバ７に通知してもよい。
【００４０】
どのような場合でも、ストレージノードの少なくともサブセットが、ユニキャスト送信によりサーバ７に応答を提供する。一般的には、所定の最小限の空きディスク容量を有するストレージノードがクエリーに答える。サーバ７は、各サーバの地理的な位置に関する地理データ等の、各ストレージノードの特性に関するストレージノード情報を含む応答を受信する（４３）。例えば、図４Ｂに示すように、このような地理データは、各サーバの緯度、経度、及び高度を含み得る。しかしながら、郵便番号、ロケーションストリング（すなわち、建物、部屋、ラック行、ラック列）等の他の種類の地理データも考えられる。
【００４１】
代わりに、又は地理データに加えて、ストレージノード選択プロセスへの入力として機能するストレージノード特性に関係するさらなる情報が提供されてもよい。図示例においては、各ストレージノードの空き容量が、ストレージノードのシステム年齢の表示及びストレージノードが現在受けている負荷の表示と共に提供される。
【００４２】
受信した応答に基づいて、サーバは、データを保存するために、サブセット中の少なくとも２つ、典型的な実施形態では３つのストレージノードを選択する（４５）。ストレージノードの選択は、異なるデータを考慮に入れたアルゴリズムを用いて行われる。この選択は、何らかの地理的多様性を達成するために行われ得る。少なくとも、同じラックのファイルサーバのみをストレージノードとして選択することが好ましく回避できる。一般的に、大きな地理的多様性、異なる大陸のストレージノードの選択でさえ達成することができる。地理的多様性に加えて、選択アルゴリズムに他のパラメータを含むこともできる。以下に開示するように、選択プロセスに無作為化特性を有すると有利である。
【００４３】
一般的に、この選択は、地理的に十分離れた複数のストレージノードを選択することから開始されてもよい。これは、数多くの方法で行うことができる。例えば、複数のストレージノードグループを特定するアルゴリズムが存在してもよく、あるいは、ストレージノードは、各グループ内の１つのストレージノードを簡単に取り出すことができるように、グループ番号を有していてもよい。
【００４４】
次に、この選択は、各ノードのストレージノード情報（システム年齢、システム負荷等）に基づいて、ストレージノードの適性得点に対応する確率係数を計算することを含み得る。例えば、故障しにくいより若いシステムは、より高い得点を得る。従って、確率係数は、一方がストレージノード情報パラメータ（又は、可能であればそれらの逆数）を含み、他方が対応する重み付けパラメータを含む２つのベクトルのスカラー積として計算され得る。
【００４５】
次に、この選択は、無作為にストレージノードを選択することを含み、ある特定のストレージノードが選択される確率は、その確率係数によって決まる。一般的には、第１のサーバが第２のサーバの２倍の確率係数を有する場合には、第１のサーバが選択される可能性は２倍高い。
【００４６】
無作為の選択を行う前に、この選択が、最も高い確率係数を有するストレージノードを含むサブセット中のノードの一部に対して行われるように、最も低い確率係数を有するストレージノードの割合を除去することが可能である。これは、選択アルゴリズムの計算を時間のかかるものにし得る、利用可能なストレージノードが多数存在する場合に、特に有用である。
【００４７】
言うまでもなく、選択プロセスは、異なる方法で行うことができる。例えば、最初に、応答しているサブセット中の全てのストレージノードに関して確率係数を計算し、無作為選択を行うことが可能である。これが行われる場合、結果として生じる地理的多様性が十分であるかのチェックを行い、十分でない場合は、サブセットから除外された２つの最も近い選択されたストレージノードの一方を用いてこの選択を繰り返してもよい。最初の選択を地理的多様性に基づいて行い（例えば、各グループにおいて１つのストレージノードを取り出す）、次の選択をその他のパラメータに基づいて行うことは、再度、利用可能なストレージノードが複数存在する場合に特に有用である。これらの場合には、全ての利用可能なストレージノードのパラメータを用いて計算を行うことなく、良好な選択をそれでも行えるであろう。
【００４８】
ストレージノードの選択が終わると、一般的にユニキャスト送信を用いて、保存されるデータ及び対応するデータ識別子を各選択されたノードに送信する。
【００４９】
任意で、書き込み動作に成功した各ストレージノードがサーバに確認応答を送信することによって動作を終えてもよい。次に、サーバは、関与した全てのストレージノードに対して、どのノードがデータの書き込みに成功し、どのノードが成功していないのかを示すリストを送信する。この情報に基づいて、ストレージノード自身が、説明する複製プロセスによってデータを適切に保守できる。例えば、１つのストレージノードの書き込みが失敗した場合、そのファイルに関して所望の数の保存ストレージノードを達成するために、もう１つのストレージノードにそのファイルを複製する必要がある。
【００５０】
データ書き込み方法は、それ自体、優れた地理的多様性が提供され得るので、サーバ７中のＡＰＩが非常にロバストな方法でデータを保存することを可能にする。
【００５１】
書き込み及び読み出し動作に加えて、サーバ７中のＡＰＩは、ファイルを削除する及びファイルを更新する動作を行ってもよい。これらのプロセスを、以下のデータ保守プロセスに関連して説明する。
【００５２】
データ保守プロセスの目的は、妥当な数の故障していないストレージノードがそれぞれ最新バージョンの各ファイルを保存することを確認することである。さらに、削除されたファイルがいずれのストレージノードにも保存されない機能を提供することもできる。保守は、ストレージノード自身によって行われる。従って、データストレージの保守の責任を担う専用の「マスター」の必要性がない。「マスター」はさもなければシステムにおいて弱点となり得るので、これにより、信頼性の向上が確実となる。
【００５３】
図６は、複数のデータストレージノード中に複数のファイルが保存されている状況を模式的に示している。図示されたケースでは、１９２．１６８．１．１〜１９２．１６８．１．１２まで連続して番号を付けられたＩＰアドレスを有する１２個のノードが例示目的で描かれている。しかしながら、言うまでもなく、ＩＰアドレス番号は、同じ範囲にある必要は全くない。ノードは、説明を簡単にするためだけに、循環的順序で配置されており、すなわち、ノードはいかなる特定の順序も有する必要はない。各ノードは、単純化を目的として、文字Ａ〜Ｆによって識別される１つ又は２つのファイルを保存する。
【００５４】
図８を参照すると、データの保守方法は、データストレージシステム内のノード間のデータの複製の必要性を示唆するデータストレージシステムの状態を検出すること（５１）と、複製プロセス５３とを含む。検出プロセス５１の結果は、複製の必要性が特定されたファイルのリスト５５である。リストはさらに、様々な複製の必要性の優先度に関するデータを含み得る。このリストに基づいて、複製プロセス５３が行われる。
【００５５】
分散ストレージのロバスト性は、各ファイルの正しいバージョンの妥当な数のコピーがシステム中に保存されているかに依存する。図示されたケースでは、各ファイルにつき３つのコピーが保存されている。しかしながら、例えば、アドレス１９２．１６８．１．５を有するストレージノードが故障した場合には、ファイル「Ｂ」及び「Ｃ」に関して保存コピーの所望数が達成できない。
【００５６】
従って、複製の必要性をもたらす事象の１つは、システム中のストレージノードの故障である。
【００５７】
システム内の各ストレージノードは、システム内の他のストレージノードのステータスを監視することができる。これは、図７に示すように、一定の間隔で、いわゆるハートビート信号を各ストレージノードに出させることによって行うことができる。図示されたケースでは、アドレス１９２．１６８．１．７を有するストレージノードは、それが正常に機能していることを示すマルチキャスト信号５７をシステム内の他のストレージノードに対して発する。この信号は、ハートビート監視５９（図８を参照）を行っているシステム内の他の全ての機能しているストレージノード又はそのサブセットによって受信され得る。しかしながら、アドレス１９２．１６８．１．５を有するストレージノードの場合には、このノードは故障しており、いかなるハートビート信号も発することはない。従って、その他のストレージノードは、このノードが長期間ハートビート信号を発していないことに気付き、これは、問題のストレージノードが故障していることを示す。
【００５８】
ストレージノードのアドレスに加えて、ハートビート信号は、そのノードリストのバージョン番号を含んでいてもよい。ハートビート信号を聴き、送信しているストレージノードがより最新のバージョンのノードリストを有していることを発見した別のストレージノードは、送信しているストレージノードにそのノードリストを転送するように要求することができる。これは、単に、ストレージノードを追加又は除去し、新しいノードリストのバージョンを単一のストレージノードに送信することによって、ストレージノードの追加及び除去を行うことができることを意味している。次に、このノードリストは、システム内の他の全てのストレージノードに伝えられる。
【００５９】
再び図８を参照すると、各ストレージノードは、故障しているストレージノードによって保存されたファイルを探して、その内部ディレクトリを検索する（６１）。ファイル「Ｂ」及び「Ｃ」を自身で保存するストレージノードは、故障しているストレージノードを発見し、従って、該当するファイルをそれらのリスト５５上に追加することができる。
【００６０】
しかしながら、検出プロセスは、ファイルを複製する必要性を示唆する他の状態を明らかにすることもできる。一般的には、このような状態は、不一致、すなわち、１つ又は複数のストレージノードが旧式バージョンのファイルを有していることであり得る。削除動作は、このプロセスがファイルの実際の物理的削除を実行し得るので、複製プロセスも示唆する。次に、サーバの削除動作は、ストレージノードが問題のファイルに削除フラグを設定することを確認することのみを必要とする。従って、各ノードは、データストレージシステムにおいて行われる読み出し及び書き込み動作を監視することができる。読み出し及び書き込み動作の終わりにサーバ７によって提供される情報はそれぞれ、１つのストレージノードが旧式バージョンのファイルを含むこと（読み出し動作の場合）、又はストレージノードが書き込み動作に成功しなかったことを示し得る。どちらの場合も、保守プロセスの全体的な目的が達成されるように、複製によってデータを保守する必要性が存在する。
【００６１】
基本的な読み出し及び書き込み動作６３、６５に加えて、少なくとも２つの追加のプロセス、すなわち、これから簡単に説明する削除プロセス６７及び更新プロセス６９が、複製の必要性が存在するという指摘を提供することができる。
【００６２】
削除プロセスは、サーバ７（図１を参照）によって開始される。読み出しプロセスと同様に、サーバは、どのストレージノードが特定のデータ識別子を備えたデータを有するかを見つけ出すために、全てのストレージノードにクエリーをマルチキャスト送信する。ストレージノードは、関連の識別子を有するデータを探して自身をスキャンし、問題のデータを有する場合には、ユニキャスト送信によって応答する。応答は、ストレージノードディレクトリからの、そのデータを含む他のストレージノードのリストを含み得る。次に、サーバ７は、そのファイルを保存していると考えられるストレージノードに対して、ファイルを削除するユニキャスト要求を送信する。各ストレージノードは、ファイルに関連し、それが削除されるべきであることを示すフラグを設定する。次に、ファイルが複製リストに加えられ、確認応答がサーバに送信される。次に、後に説明するように、複製プロセスが物理的にファイルを削除する。
【００６３】
更新プロセスは、削除プロセスのものに類似した検索機能と、書き込みプロセスにおいて行われるものと類似した書き込み機能とを有する。サーバは、どのストレージノードが特定のデータ識別子を備えたデータを有するかを見つけ出すために、全てのストレージノードにクエリーをマルチキャスト送信する。ストレージノードは、関連の識別子を有するデータを探して自身をスキャンし、問題のデータを有する場合には、ユニキャスト送信によって応答する。応答は、ストレージノードディレクトリからの、そのデータを含む他のストレージノードのリストを含み得る。次に、サーバ７は、ユニキャスト要求を送信し、データを更新することをストレージノードに告げる。要求は、もちろん更新データを含んでいる。データを更新するストレージノードは、確認応答をサーバに送信し、サーバは、データの更新に成功したストレージノードと、成功しなかったストレージノードとのリストを含むユニキャスト送信を行うことによって応答する。再度、このリストは、保守プロセスによって使用することができる。
【００６４】
再度図８を参照して、読み出し動作６３、書き込み動作６５、削除動作６７、及び更新動作６９の全てが、複製の必要性が存在することを示すようにしてもよい。同じことが、ハートビート監視５９にも当てはまる。従って、検出プロセス５１全体は、どのファイルが複製される必要があるかに関するデータを生成する。例えば、読み出し又は更新動作は、特定のストレージノードが旧式バージョンのファイルを含むことを明らかにし得る。削除プロセスは、特定のファイルに削除フラグを設定することができる。ハートビート監視は、故障しているストレージノードに保存された複数のファイルが新しいストレージノードに複製される必要があることを明らかにすることができる。
【００６５】
各ストレージノードは、それが保存する全てのファイルに関して複製の必要性を監視し、複製リスト５５を保守する。従って、複製リスト５５は、複製される必要のある複数のファイルを含む。これらのファイルは、各複製の優先度と一致するように順序付けられてもよい。一般的には、３つの異なる優先レベルが存在し得る。最高レベルは、ストレージノードが最後のオンラインコピーを保持するファイルのために確保される。このようなファイルは、妥当なレベルの冗長性が達成できるように、他のストレージノードに素早く複製される必要がある。中間レベルの優先度は、ストレージノード間でバージョンの一貫性がないファイルに関連するものでもよい。より低いレベルの優先度は、故障しているストレージノードに保存されたファイルに関連するものでもよい。
【００６６】
ストレージノードは、複製リスト５５上のファイルをそれらの優先レベルに応じて取り扱う。本明細書において動作ストレージノードと呼ばれるストレージノードに関して複製プロセスを以下に説明するが、全てのストレージノードがこの様に動作してもよい。
【００６７】
保守プロセスの複製部分５３は、動作ストレージノードが複製を予定しているファイルのマスターとなるべく試みること（７１）で開始される。動作ストレージノードは、問題のファイルを保存していると分かっている他のストレージノードに対してマスターとなるためにユニキャスト要求を送信する。ディレクトリ１９（図１を参照）は、どのストレージノードに尋ねるべきかに関する情報を含むホストリストを提供する。ストレージノードの１つが肯定的に応答しない場合、例えば対立する要求の場合には、ファイルは、当分の間、リストに戻され、代わりに、リスト上の次のファイルに試みが行われる。そうでなければ、動作ストレージノードは、このファイルのマスターであると見なされ、その他のストレージノードは、動作ストレージノードが問題のファイルのマスターであることを示すフラグを設定する。
【００６８】
次のステップは、分散ストレージシステムにおいて、問題のファイルの全てのコピーを見つけ出すことである（７３）。これは、動作ストレージノードが全てのストレージノードにマルチキャストクエリーを送信し、それらの内のどれがファイルを有しているかを尋ねることによって行われてもよい。ファイルを有するストレージノードは、クエリーに対する応答を提示し、それには、それらが保持するファイルのバージョン並びにそれらのホストリスト、すなわち、各ストレージノードのディレクトリに保持される関連ファイルを含むストレージノードのリストが含まれる。次に、これらのホストリストは、取り出された全てのホストリストの融合に対応してマスターホストリストが形成されるように、動作ストレージノードによって統合される（７５）。動作ストレージノードがマスターとなる試みを行った際に尋ねられなかった追加のストレージノードが見つかった場合には、ここで、このステップを追加のストレージノードに関して繰り返してもよい。マスターホストリストは、どのバージョンのファイルを異なるストレージノードが保持し、ストレージシステム全体の中のファイルのステータスを示しているかに関する情報を含む。
【００６９】
動作ストレージノードが問題のファイルの最新バージョンを有していない場合には、最新バージョンを有するストレージノードの１つから、このファイルが取り出される（７７）。
【００７０】
次に、動作ストレージノードは、ホストリストが変更される必要があるか否か、一般的には、追加のストレージノードが加えられるべきか否かを決定する（７９）。その場合には、動作ストレージノードは、サーバによって実行され、図４Ａ〜４Ｃ及び図５に関連して説明したような書き込みプロセスに非常に類似したプロセスを行ってもよい。このプロセスの結果、ファイルが新しいストレージノードに書き込まれる。
【００７１】
バージョンが不一致の場合には、動作ストレージノードは、保存された全てのファイルが正しいバージョンを有するように、他のストレージノードに保存されたファイルのコピーを更新することができる（８１）。
【００７２】
保存されたファイルの余分なコピーは削除することができる（８３）。複製プロセスが削除動作によって開始されると、このプロセスは、このステップに直接ジャンプすることができる。次に、全てのストレージノードがファイルの削除を容認するとすぐに、動作ストレージノードは単に、ユニキャストを用いて、全てのストレージノードが問題のファイルを物理的に削除することを要求する。ストレージノードは、このファイルが削除されたことを確認応答する。
【００７３】
さらに、ファイルのステータス、すなわちマスターホストリストが更新される。次に、任意で、複製の必要性がもはや存在しないことを確認するために、ステップ７３〜８３を繰り返すことが可能である。この繰り返しの結果、ステップ８５で更新される必要のない一貫性のあるマスターホストリストが得られるものである。
【００７４】
その後、このファイルに関する複製プロセスが終了し、動作ストレージノードは、ホストリスト上の他の全てのストレージノードに対して対応メッセージを送信することによって、ファイルのマスターとしてのステータスを解除することができる（８７）。
【００７５】
各ストレージノードがストレージノードのセット全体を通して、それが保存する全てのファイルを保守する責任を担うこのシステムは、優れた信頼性を有する、自己修復し（ストレージノードの故障の場合）、自己浄化する（ファイルの不一致又はファイルが削除される場合）システムを提供する。それは簡単に拡大縮小が可能であり、同時に複数の異なるアプリケーションのファイルを保存することができる。
【００７６】
本発明は、特定の開示例に限定されず、添付の特許請求の範囲内で、様々な方法で変更及び改変を行うことができる。
【図１】
0005612195.tif 000002
【図２】
0005612195.tif 000003
【図３】
0005612195.tif 000004
【図４】
0005612195.tif 000005
【図５】
0005612195.tif 000006
【図６】
0005612195.tif 000007
【図７】
0005612195.tif 000008
【図８】
0005612195.tif 000009