複数のデータストレージノードを含むデータストレージシステムにデータを書き込む方法において、前記方法は、前記データストレージシステムにおいてデータにアクセスするアプリケーションを起動するサーバにおいて用いられ、複数の前記ストレージノードにマルチキャストストレージクエリーを送信するステップ41と、前記ストレージノードのサブセットから複数の応答を受信するステップ43であって、前記応答は、各ストレージノードにそれぞれ関連するストレージノード情報を含むステップと、前記応答に基づいて前記サブセット内の少なくとも2つのストレージノードを選択するステップ45であって、アルゴリズムに基づいて、前記サブセット中の各ストレージノードに関して、それぞれのストレージノード情報に基づいた確率係数を決定するステップと、前記少なくとも2つのストレージノードを無作為に選択するステップであって、ストレージノードが選択される確率は、その確率係数によって決まるステップと、を含む選択ステップと、データ及び前記データに対応するデータ識別子を前記選択されたストレージノードに送信するステップ47と、を含むことを特徴とする方法。請求項1に記載の方法において、前記ストレージノード情報は、各ストレージノードの地理的な位置に関連する地理データを含むことを特徴とする方法。請求項2に記載の方法において、前記地理的な位置は、問題の前記ストレージノードの緯度及び経度を含むことを特徴とする方法。請求項2又は3に記載の方法において、前記無作為にストレージノードを選択するステップは、地理的分離に基づく第1の判断基準を満たす前記サブセット中のストレージノードに対して行われることを特徴とする方法。請求項1に記載の方法において、前記ストレージノード情報は、問題の前記ストレージノードのシステム年齢を含むことを特徴とする方法。請求項1乃至5の何れか1項に記載の方法において、前記ストレージノード情報は、問題の前記ストレージノードのシステム負荷を含むことを特徴とする方法。請求項1乃至6の何れか1項に記載の方法において、前記マルチキャストストレージクエリーは、保存されるデータを特定するデータ識別子を含むことを特徴とする方法。請求項1乃至7の何れか1項に記載の方法において、少なくとも3つのノードが選択されることを特徴とする方法。請求項1乃至8の何れか1項に記載の方法において、前記データの保存に成功したストレージノードのリストを前記選択されたストレージノードに送信することを特徴とする方法。請求項1乃至9の何れか1項に記載の方法において、前記無作為に選択するステップが、前記サブセット中の前記ノードの一部に対して行われ、この一部には、最も高い確率係数を有するストレージノードが含まれることを特徴とする方法。複数のデータストレージノードを含むデータストレージシステムにデータを書き込むのに適したサーバにおいて、複数の前記ストレージノードにマルチキャストストレージクエリーを送信する手段と、前記ストレージノードのサブセットから複数の応答を受信する手段であって、前記応答は、各ストレージノードにそれぞれ関連するストレージノード情報を含む手段と、前記応答に基づいて前記サブセット内の少なくとも2つのストレージノードを選択する手段であって、前記選択は、アルゴリズムに基づいて、前記サブセット中の各ストレージノードに関して、それぞれのストレージノード情報に基づいた確率係数を決定するステップと、前記少なくとも2つのストレージノードを無作為に選択するステップであって、ストレージノードが選択される確率は、その確率係数によって決まるステップと、を含む、手段と、データ及び前記データに対応するデータ識別子を前記選択されたストレージノードに送信する手段と、を含むことを特徴とするサーバ。本開示は、複数のストレージノードを含む分散データストレージシステムに関する。このシステム及びそれが使用されるコンテキストの構造の概要を図1に示す。ユーザコンピュータ1は、インターネット3を介して、サーバ7上で起動されているアプリケーション5にアクセスする。従って、ユーザコンテキストは、ここで図示されるように、それ自体よく知られた一般的なクライアントサーバ構成である。しかしながら、開示されるデータストレージシステムが他の構成においても有用となり得ることに留意されたい。図示されたケースでは、2つのアプリケーション5、9がサーバ7上で起動される。しかしながら、このアプリケーションの数はもちろん異なってもよい。各アプリケーションは、分散データストレージシステム13に対してインタフェースを提供し、サーバ上で起動されているアプリケーションから、一般的には書き込み及び読み出し要求である要求を支援するAPIApplicationProgrammingInterface11を有する。アプリケーションの観点からすれば、データストレージシステム13からの情報の読み出し又はデータストレージシステム13への情報の書き込みは、他のどの種類のストレージ解決法、例えば、ファイルサーバ又は単純にハードドライブを使用するものとも異なって見える必要はない。各API11は、データストレージシステム13のストレージノード15と通信し、ストレージノードは、互いに通信する。これらの通信は、TCPTransmissionControlProtocol及びUDPUserDatagramProtocolに基づく。これらの概念は、当業者には周知のものであり、これ以上の説明は行わない。同じサーバ7上の異なるAPI11が、異なるストレージノード15のセットにアクセスしてもよいことに留意されたい。さらに、各ストレージノード15にアクセスするサーバ7が2つ以上存在し得ることにも留意されたい。しかしながら、これは、後に説明するように、ストレージノードの動作方法に大きく影響を与えるものではない。分散データストレージシステムの構成要素は、ストレージノード15と、ストレージノード15にアクセスするサーバ7内のAPI11とである。従って、本開示は、サーバ7及びストレージノード15において実施される方法に関する。これらの方法は、主に、サーバ及びストレージノード上でそれぞれ起動されるソフトウェアの実行として具体化され、分散データストレージシステム全体の動作及び特性を共に決定する。ストレージノード15は、一般的に、複数の機能ブロックを備えたファイルサーバによって具体化され得る。従って、ストレージノードは、一般的に、任意選択的にRAIDRedundantArrayofIndependentDiskシステムとして構成される複数のハードドライブから構成されるストレージ媒体17を含み得る。しかしながら、他の種類のストレージ媒体も同様に考えられる。ストレージノード15は、後述のように、ホストリストとして、データ要素/ストレージノード関係のリストを含むディレクトリ19をさらに含むようにしてもよい。ホストリストに加えて、各ストレージノードは、そのストレージノードのセット又はグループ内の全てのストレージノードのIPアドレスを含むノードリストをさらに含む。1つのグループ内のストレージノードの数は、2~3個のストレージノードから数百個のストレージノードまで様々となり得る。ノードリストはさらに、バージョン番号を備えていてもよい。さらに、ストレージノード15は、複製ブロック21及びクラスタ監視ブロック23を含み得る。複製ブロック21は、ストレージノードAPI25を含み、後に詳細に説明するように、複製プロセスの必要性を特定し、それを行うための機能を実行するように構成されている。複製プロセスが、説明される読み出し及び書き込み動作中にサーバ7によって行われる動作にかなり一致する動作を含むので、複製ブロック21のストレージノードAPI25は、サーバ7のストレージノードAPI11のコードにかなり一致するコードを含み得る。例えば、複製中に行われる書き込み動作は、サーバ7によって行われる書き込み動作にかなり一致する。クラスタ監視ブロック23は、後により詳細に説明されるように、データストレージシステム13中の他のストレージノードの監視を行うように構成されている。分散データストレージシステムのストレージノード15は、同じ階層レベルに存在すると見なすことができる。保存データ要素のディレクトリの保守及びデータ整合性の監視等の責任を担ういかなるマスターストレージノードを指定する必要もない。その代わりに、ストレージノード15は全て等しいと見なすことができ、時には、システム内の他のストレージノードに対してデータ管理動作を行ってもよい。この均等性により、システムのロバスト性が確実となる。1つのストレージノードが故障した場合には、システム内の他のノードが故障したノードをカバーし、信頼性のあるデータストレージが保証される。このシステムの動作を、以下の、データの読み出し、データの書き込み、及びデータの保守の順に説明する。これらの方法が非常に上手く共に機能するとしても、原理上、これらは互いに独立して実行されてもよいことに留意されたい。すなわち、例えばデータの読み出し方法は、本開示のデータの書き込み方法が用いられないとしても、優れた特性を提供することができ、その逆もまた同様である。これより、図2A~図2C及び図3を参照して、読み出し方法を説明する。図3は、この方法を示すフローチャートである。読み出し並びにシステムの他の機能は、複数のストレージノードと同時に通信するためにマルチキャスト通信を利用する。ここでは、マルチキャスト又はIPマルチキャストは、マルチキャストアプリケーション用に用意されたIPアドレスにメッセージを送信することによって達成されるポイントツーマルチポイント通信を意味する。例えば、一般的に要求であるメッセージは、このようなIPアドレス例えば、244.0.0.1に送信され、複数の受信サーバが、このIPアドレスへの加入者として登録される。各受信サーバは、独自のIPアドレスを有する。ネットワークの切替装置が244.0.0.1に向けられたメッセージを受信すると、切替装置は、加入者として登録された各サーバのIPアドレスへとメッセージを転送する。原理上、1つのみのサーバをマルチキャストアドレスに対する加入者として登録してもよく、その場合には、ポイントツーポイント通信が達成される。しかしながら、本開示のコンテキストでは、このような通信は、マルチキャスト方式が用いられるので、やはりマルチキャスト通信と見なされる。単一の受信者との通信に関して、ユニキャスト通信も用いられる。図2A及び図3を参照すると、データストレージシステムからデータを取り出す方法は、複数のストレージノード15へのマルチキャストクエリーの送信31を含む。図示したケースでは、各々がIPInternetProtocolアドレス192.168.1.1、192.168.1.2等を有する5つのストレージノードが存在する。言うまでもなく、ストレージノードの数は一例に過ぎない。クエリーは、例えば、それ自体よく知られた汎用一意識別子UUIDでもよいデータ識別子2B9B4A97-76E5-499E-A21A6D7932DD7927を含む。ストレージノードは、識別子に対応するデータを探して自身をスキャンする。そのようなデータが見つかると、ストレージノードは、サーバ7によって受信される応答33を送信する図2Bを参照。図示されるように、応答は、ストレージノードが関連データのコピーを有する表示に加えて、さらなる情報を任意で含んでいてもよい。具体的には、応答は、データを含む他のストレージノードに関するストレージノードディレクトリからの情報、データのどのバージョンがストレージノードに含まれているかに関する情報、及び現在どの負荷をストレージノードが受けているかに関する情報を含み得る。応答に基づいて、サーバは、そこからデータが取り出される1つ又は複数のストレージノードを選択し35、その/それらのストレージノードにデータのユニキャスト要求を送信する37図2Cを参照。データの要求に応じて、1つ又は複数のストレージノードは、データを受信する39サーバに対してユニキャストで関連データを送信する。図示したケースでは、たった1つのストレージノードが選択される。これで十分であるが、整合性チェックを可能にする2セットのデータを受信するために、2つ以上のストレージノードの選択も可能である。データの転送が失敗した場合、サーバは、取り出しのために別のストレージノードを選択することができる。ストレージノードの選択は、良好なシステム全体の性能を達成するために幾つかの要素を考慮に入れたアルゴリズムに基づいてもよい。他の概念も十分に考えられるが、一般的に、最新のデータバージョン及び最低の負荷を有するストレージノードが選択される。任意選択的に、関与する全てのストレージノードに対して、どのノードがデータ含み、それがどのバージョンであるかを示すリストをサーバが送信することによって、動作を終了してもよい。この情報に基づいて、ストレージノード自身が、説明する複製プロセスによってデータを適切に保守することができる。図4A~4C及び図5は、分散データストレージシステムのためのデータ書き込みプロセスを示す。図4A及び図5を参照すると、この方法は、サーバが複数のストレージノードにマルチキャストストレージクエリーを送信する41ことを含む。ストレージクエリーは、データ識別子を含み、基本的に、受信しているストレージノードがこのファイルを保存可能であるか否かの質問から構成される。任意で、ストレージノードは、この名前のファイルを既に有しているか否かに関して自身の内部ディレクトリをチェックし、万一その場合には、サーバがファイル名を変更し得ることをサーバ7に通知してもよい。どのような場合でも、ストレージノードの少なくともサブセットが、ユニキャスト送信によりサーバ7に応答を提供する。一般的には、所定の最小限の空きディスク容量を有するストレージノードがクエリーに答える。サーバ7は、各サーバの地理的な位置に関する地理データ等の、各ストレージノードの特性に関するストレージノード情報を含む応答を受信する43。例えば、図4Bに示すように、このような地理データは、各サーバの緯度、経度、及び高度を含み得る。しかしながら、郵便番号、ロケーションストリングすなわち、建物、部屋、ラック行、ラック列等の他の種類の地理データも考えられる。代わりに、又は地理データに加えて、ストレージノード選択プロセスへの入力として機能するストレージノード特性に関係するさらなる情報が提供されてもよい。図示例においては、各ストレージノードの空き容量が、ストレージノードのシステム年齢の表示及びストレージノードが現在受けている負荷の表示と共に提供される。受信した応答に基づいて、サーバは、データを保存するために、サブセット中の少なくとも2つ、典型的な実施形態では3つのストレージノードを選択する45。ストレージノードの選択は、異なるデータを考慮に入れたアルゴリズムを用いて行われる。この選択は、何らかの地理的多様性を達成するために行われ得る。少なくとも、同じラックのファイルサーバのみをストレージノードとして選択することが好ましく回避できる。一般的に、大きな地理的多様性、異なる大陸のストレージノードの選択でさえ達成することができる。地理的多様性に加えて、選択アルゴリズムに他のパラメータを含むこともできる。以下に開示するように、選択プロセスに無作為化特性を有すると有利である。一般的に、この選択は、地理的に十分離れた複数のストレージノードを選択することから開始されてもよい。これは、数多くの方法で行うことができる。例えば、複数のストレージノードグループを特定するアルゴリズムが存在してもよく、あるいは、ストレージノードは、各グループ内の1つのストレージノードを簡単に取り出すことができるように、グループ番号を有していてもよい。次に、この選択は、各ノードのストレージノード情報システム年齢、システム負荷等に基づいて、ストレージノードの適性得点に対応する確率係数を計算することを含み得る。例えば、故障しにくいより若いシステムは、より高い得点を得る。従って、確率係数は、一方がストレージノード情報パラメータ又は、可能であればそれらの逆数を含み、他方が対応する重み付けパラメータを含む2つのベクトルのスカラー積として計算され得る。次に、この選択は、無作為にストレージノードを選択することを含み、ある特定のストレージノードが選択される確率は、その確率係数によって決まる。一般的には、第1のサーバが第2のサーバの2倍の確率係数を有する場合には、第1のサーバが選択される可能性は2倍高い。無作為の選択を行う前に、この選択が、最も高い確率係数を有するストレージノードを含むサブセット中のノードの一部に対して行われるように、最も低い確率係数を有するストレージノードの割合を除去することが可能である。これは、選択アルゴリズムの計算を時間のかかるものにし得る、利用可能なストレージノードが多数存在する場合に、特に有用である。言うまでもなく、選択プロセスは、異なる方法で行うことができる。例えば、最初に、応答しているサブセット中の全てのストレージノードに関して確率係数を計算し、無作為選択を行うことが可能である。これが行われる場合、結果として生じる地理的多様性が十分であるかのチェックを行い、十分でない場合は、サブセットから除外された2つの最も近い選択されたストレージノードの一方を用いてこの選択を繰り返してもよい。最初の選択を地理的多様性に基づいて行い例えば、各グループにおいて1つのストレージノードを取り出す、次の選択をその他のパラメータに基づいて行うことは、再度、利用可能なストレージノードが複数存在する場合に特に有用である。これらの場合には、全ての利用可能なストレージノードのパラメータを用いて計算を行うことなく、良好な選択をそれでも行えるであろう。ストレージノードの選択が終わると、一般的にユニキャスト送信を用いて、保存されるデータ及び対応するデータ識別子を各選択されたノードに送信する。任意で、書き込み動作に成功した各ストレージノードがサーバに確認応答を送信することによって動作を終えてもよい。次に、サーバは、関与した全てのストレージノードに対して、どのノードがデータの書き込みに成功し、どのノードが成功していないのかを示すリストを送信する。この情報に基づいて、ストレージノード自身が、説明する複製プロセスによってデータを適切に保守できる。例えば、1つのストレージノードの書き込みが失敗した場合、そのファイルに関して所望の数の保存ストレージノードを達成するために、もう1つのストレージノードにそのファイルを複製する必要がある。データ書き込み方法は、それ自体、優れた地理的多様性が提供され得るので、サーバ7中のAPIが非常にロバストな方法でデータを保存することを可能にする。書き込み及び読み出し動作に加えて、サーバ7中のAPIは、ファイルを削除する及びファイルを更新する動作を行ってもよい。これらのプロセスを、以下のデータ保守プロセスに関連して説明する。データ保守プロセスの目的は、妥当な数の故障していないストレージノードがそれぞれ最新バージョンの各ファイルを保存することを確認することである。さらに、削除されたファイルがいずれのストレージノードにも保存されない機能を提供することもできる。保守は、ストレージノード自身によって行われる。従って、データストレージの保守の責任を担う専用のマスターの必要性がない。マスターはさもなければシステムにおいて弱点となり得るので、これにより、信頼性の向上が確実となる。図6は、複数のデータストレージノード中に複数のファイルが保存されている状況を模式的に示している。図示されたケースでは、192.168.1.1~192.168.1.12まで連続して番号を付けられたIPアドレスを有する12個のノードが例示目的で描かれている。しかしながら、言うまでもなく、IPアドレス番号は、同じ範囲にある必要は全くない。ノードは、説明を簡単にするためだけに、循環的順序で配置されており、すなわち、ノードはいかなる特定の順序も有する必要はない。各ノードは、単純化を目的として、文字A~Fによって識別される1つ又は2つのファイルを保存する。図8を参照すると、データの保守方法は、データストレージシステム内のノード間のデータの複製の必要性を示唆するデータストレージシステムの状態を検出すること51と、複製プロセス53とを含む。検出プロセス51の結果は、複製の必要性が特定されたファイルのリスト55である。リストはさらに、様々な複製の必要性の優先度に関するデータを含み得る。このリストに基づいて、複製プロセス53が行われる。分散ストレージのロバスト性は、各ファイルの正しいバージョンの妥当な数のコピーがシステム中に保存されているかに依存する。図示されたケースでは、各ファイルにつき3つのコピーが保存されている。しかしながら、例えば、アドレス192.168.1.5を有するストレージノードが故障した場合には、ファイルB及びCに関して保存コピーの所望数が達成できない。従って、複製の必要性をもたらす事象の1つは、システム中のストレージノードの故障である。システム内の各ストレージノードは、システム内の他のストレージノードのステータスを監視することができる。これは、図7に示すように、一定の間隔で、いわゆるハートビート信号を各ストレージノードに出させることによって行うことができる。図示されたケースでは、アドレス192.168.1.7を有するストレージノードは、それが正常に機能していることを示すマルチキャスト信号57をシステム内の他のストレージノードに対して発する。この信号は、ハートビート監視59図8を参照を行っているシステム内の他の全ての機能しているストレージノード又はそのサブセットによって受信され得る。しかしながら、アドレス192.168.1.5を有するストレージノードの場合には、このノードは故障しており、いかなるハートビート信号も発することはない。従って、その他のストレージノードは、このノードが長期間ハートビート信号を発していないことに気付き、これは、問題のストレージノードが故障していることを示す。ストレージノードのアドレスに加えて、ハートビート信号は、そのノードリストのバージョン番号を含んでいてもよい。ハートビート信号を聴き、送信しているストレージノードがより最新のバージョンのノードリストを有していることを発見した別のストレージノードは、送信しているストレージノードにそのノードリストを転送するように要求することができる。これは、単に、ストレージノードを追加又は除去し、新しいノードリストのバージョンを単一のストレージノードに送信することによって、ストレージノードの追加及び除去を行うことができることを意味している。次に、このノードリストは、システム内の他の全てのストレージノードに伝えられる。再び図8を参照すると、各ストレージノードは、故障しているストレージノードによって保存されたファイルを探して、その内部ディレクトリを検索する61。ファイルB及びCを自身で保存するストレージノードは、故障しているストレージノードを発見し、従って、該当するファイルをそれらのリスト55上に追加することができる。しかしながら、検出プロセスは、ファイルを複製する必要性を示唆する他の状態を明らかにすることもできる。一般的には、このような状態は、不一致、すなわち、1つ又は複数のストレージノードが旧式バージョンのファイルを有していることであり得る。削除動作は、このプロセスがファイルの実際の物理的削除を実行し得るので、複製プロセスも示唆する。次に、サーバの削除動作は、ストレージノードが問題のファイルに削除フラグを設定することを確認することのみを必要とする。従って、各ノードは、データストレージシステムにおいて行われる読み出し及び書き込み動作を監視することができる。読み出し及び書き込み動作の終わりにサーバ7によって提供される情報はそれぞれ、1つのストレージノードが旧式バージョンのファイルを含むこと読み出し動作の場合、又はストレージノードが書き込み動作に成功しなかったことを示し得る。どちらの場合も、保守プロセスの全体的な目的が達成されるように、複製によってデータを保守する必要性が存在する。基本的な読み出し及び書き込み動作63、65に加えて、少なくとも2つの追加のプロセス、すなわち、これから簡単に説明する削除プロセス67及び更新プロセス69が、複製の必要性が存在するという指摘を提供することができる。削除プロセスは、サーバ7図1を参照によって開始される。読み出しプロセスと同様に、サーバは、どのストレージノードが特定のデータ識別子を備えたデータを有するかを見つけ出すために、全てのストレージノードにクエリーをマルチキャスト送信する。ストレージノードは、関連の識別子を有するデータを探して自身をスキャンし、問題のデータを有する場合には、ユニキャスト送信によって応答する。応答は、ストレージノードディレクトリからの、そのデータを含む他のストレージノードのリストを含み得る。次に、サーバ7は、そのファイルを保存していると考えられるストレージノードに対して、ファイルを削除するユニキャスト要求を送信する。各ストレージノードは、ファイルに関連し、それが削除されるべきであることを示すフラグを設定する。次に、ファイルが複製リストに加えられ、確認応答がサーバに送信される。次に、後に説明するように、複製プロセスが物理的にファイルを削除する。更新プロセスは、削除プロセスのものに類似した検索機能と、書き込みプロセスにおいて行われるものと類似した書き込み機能とを有する。サーバは、どのストレージノードが特定のデータ識別子を備えたデータを有するかを見つけ出すために、全てのストレージノードにクエリーをマルチキャスト送信する。ストレージノードは、関連の識別子を有するデータを探して自身をスキャンし、問題のデータを有する場合には、ユニキャスト送信によって応答する。応答は、ストレージノードディレクトリからの、そのデータを含む他のストレージノードのリストを含み得る。次に、サーバ7は、ユニキャスト要求を送信し、データを更新することをストレージノードに告げる。要求は、もちろん更新データを含んでいる。データを更新するストレージノードは、確認応答をサーバに送信し、サーバは、データの更新に成功したストレージノードと、成功しなかったストレージノードとのリストを含むユニキャスト送信を行うことによって応答する。再度、このリストは、保守プロセスによって使用することができる。再度図8を参照して、読み出し動作63、書き込み動作65、削除動作67、及び更新動作69の全てが、複製の必要性が存在することを示すようにしてもよい。同じことが、ハートビート監視59にも当てはまる。従って、検出プロセス51全体は、どのファイルが複製される必要があるかに関するデータを生成する。例えば、読み出し又は更新動作は、特定のストレージノードが旧式バージョンのファイルを含むことを明らかにし得る。削除プロセスは、特定のファイルに削除フラグを設定することができる。ハートビート監視は、故障しているストレージノードに保存された複数のファイルが新しいストレージノードに複製される必要があることを明らかにすることができる。各ストレージノードは、それが保存する全てのファイルに関して複製の必要性を監視し、複製リスト55を保守する。従って、複製リスト55は、複製される必要のある複数のファイルを含む。これらのファイルは、各複製の優先度と一致するように順序付けられてもよい。一般的には、3つの異なる優先レベルが存在し得る。最高レベルは、ストレージノードが最後のオンラインコピーを保持するファイルのために確保される。このようなファイルは、妥当なレベルの冗長性が達成できるように、他のストレージノードに素早く複製される必要がある。中間レベルの優先度は、ストレージノード間でバージョンの一貫性がないファイルに関連するものでもよい。より低いレベルの優先度は、故障しているストレージノードに保存されたファイルに関連するものでもよい。ストレージノードは、複製リスト55上のファイルをそれらの優先レベルに応じて取り扱う。本明細書において動作ストレージノードと呼ばれるストレージノードに関して複製プロセスを以下に説明するが、全てのストレージノードがこの様に動作してもよい。保守プロセスの複製部分53は、動作ストレージノードが複製を予定しているファイルのマスターとなるべく試みること71で開始される。動作ストレージノードは、問題のファイルを保存していると分かっている他のストレージノードに対してマスターとなるためにユニキャスト要求を送信する。ディレクトリ19図1を参照は、どのストレージノードに尋ねるべきかに関する情報を含むホストリストを提供する。ストレージノードの1つが肯定的に応答しない場合、例えば対立する要求の場合には、ファイルは、当分の間、リストに戻され、代わりに、リスト上の次のファイルに試みが行われる。そうでなければ、動作ストレージノードは、このファイルのマスターであると見なされ、その他のストレージノードは、動作ストレージノードが問題のファイルのマスターであることを示すフラグを設定する。次のステップは、分散ストレージシステムにおいて、問題のファイルの全てのコピーを見つけ出すことである73。これは、動作ストレージノードが全てのストレージノードにマルチキャストクエリーを送信し、それらの内のどれがファイルを有しているかを尋ねることによって行われてもよい。ファイルを有するストレージノードは、クエリーに対する応答を提示し、それには、それらが保持するファイルのバージョン並びにそれらのホストリスト、すなわち、各ストレージノードのディレクトリに保持される関連ファイルを含むストレージノードのリストが含まれる。次に、これらのホストリストは、取り出された全てのホストリストの融合に対応してマスターホストリストが形成されるように、動作ストレージノードによって統合される75。動作ストレージノードがマスターとなる試みを行った際に尋ねられなかった追加のストレージノードが見つかった場合には、ここで、このステップを追加のストレージノードに関して繰り返してもよい。マスターホストリストは、どのバージョンのファイルを異なるストレージノードが保持し、ストレージシステム全体の中のファイルのステータスを示しているかに関する情報を含む。動作ストレージノードが問題のファイルの最新バージョンを有していない場合には、最新バージョンを有するストレージノードの1つから、このファイルが取り出される77。次に、動作ストレージノードは、ホストリストが変更される必要があるか否か、一般的には、追加のストレージノードが加えられるべきか否かを決定する79。その場合には、動作ストレージノードは、サーバによって実行され、図4A~4C及び図5に関連して説明したような書き込みプロセスに非常に類似したプロセスを行ってもよい。このプロセスの結果、ファイルが新しいストレージノードに書き込まれる。バージョンが不一致の場合には、動作ストレージノードは、保存された全てのファイルが正しいバージョンを有するように、他のストレージノードに保存されたファイルのコピーを更新することができる81。保存されたファイルの余分なコピーは削除することができる83。複製プロセスが削除動作によって開始されると、このプロセスは、このステップに直接ジャンプすることができる。次に、全てのストレージノードがファイルの削除を容認するとすぐに、動作ストレージノードは単に、ユニキャストを用いて、全てのストレージノードが問題のファイルを物理的に削除することを要求する。ストレージノードは、このファイルが削除されたことを確認応答する。さらに、ファイルのステータス、すなわちマスターホストリストが更新される。次に、任意で、複製の必要性がもはや存在しないことを確認するために、ステップ73~83を繰り返すことが可能である。この繰り返しの結果、ステップ85で更新される必要のない一貫性のあるマスターホストリストが得られるものである。その後、このファイルに関する複製プロセスが終了し、動作ストレージノードは、ホストリスト上の他の全てのストレージノードに対して対応メッセージを送信することによって、ファイルのマスターとしてのステータスを解除することができる87。各ストレージノードがストレージノードのセット全体を通して、それが保存する全てのファイルを保守する責任を担うこのシステムは、優れた信頼性を有する、自己修復しストレージノードの故障の場合、自己浄化するファイルの不一致又はファイルが削除される場合システムを提供する。それは簡単に拡大縮小が可能であり、同時に複数の異なるアプリケーションのファイルを保存することができる。本発明は、特定の開示例に限定されず、添付の特許請求の範囲内で、様々な方法で変更及び改変を行うことができる。