(57)【要約】【課題】管理工数の増加を最低限に抑えつつ、信頼性および連続可動性を向上させることができる、分散ストレージシステムを提供する。【解決手段】分散ストレージシステム１００は、データを格納するストレージデバイス３１〜３９と、ユーザ端末１０からの要求に従ってストレージデバイス３１〜３９を制御するインタフェースプロセッサ２１〜２５とを含む。これらはそれぞれ、ストレージデバイス３１〜３９のうち少なくとも１つのＩＰアドレスを含む、ノードリストを格納する。インタフェースプロセッサ２１〜２９は、このノードリストに応じてストレージデバイス３１〜３９を制御する。ストレージデバイス３１〜３９は毎回異なるインタフェースプロセッサにノードリストを要求し、要求を受けたインタフェースプロセッサは、要求してきたストレージデバイスのＩＰアドレスを自身のノードリストに追加する。【選択図】図１
2008250767.tif 000002
【特許請求の範囲】
【請求項１】
データを格納する、複数のストレージデバイスと、
前記ストレージデバイスの制御を行う、複数のインタフェースプロセッサと
を含み、
前記インタフェースプロセッサおよび前記ストレージデバイスは、通信ネットワークを介して、ＩＰプロトコルに従って互いに通信可能であり、
前記インタフェースプロセッサは、それぞれ、前記通信ネットワークにおける前記ストレージデバイスの少なくとも１つのＩＰアドレスを含む、ノードリストを格納し、
前記ストレージデバイスは、複数の異なる前記インタフェースプロセッサに対して、前記ノードリストを要求し、
前記要求されたインタフェースプロセッサは、前記要求したストレージデバイスに、前記ノードリストを送信するとともに、前記要求したストレージデバイスの前記ＩＰアドレスを前記ノードリストに追加する
分散ストレージシステム。
【請求項２】
前記分散ストレージシステムは、さらに、前記通信ネットワークに接続されたＤＮＳサーバを含み、
前記ＤＮＳサーバは、所定のホスト名と、前記複数のインタフェースプロセッサのそれぞれのＩＰアドレスとを関連付けて記憶するとともに、前記所定のホスト名の照会に対し、前記複数のインタフェースプロセッサの前記ＩＰアドレスの１つを巡回的に通知し、
前記ストレージデバイスは、前記ＤＮＳサーバに対して前記所定のホスト名の照会を行い、前記通知されたインタフェースプロセッサの前記ＩＰアドレスに基づいて、前記ノードリストの前記要求を行う
請求項１に記載の分散ストレージシステム。
【請求項３】
前記インタフェースプロセッサは、前記ノードリストに含まれる前記ストレージデバイスの前記ＩＰアドレスと、時刻を表す情報とを関連付けて格納するとともに、
所定の条件に応じて、最も古い時刻を表す情報が関連付けられた前記ストレージデバイスの前記ＩＰアドレスを、前記ノードリストから削除する
請求項１または２に記載の分散ストレージシステム。
【請求項４】
前記複数のストレージデバイスのそれぞれは、他の前記ストレージデバイスの少なくとも１つのＩＰアドレスを含む、ノードリストを格納し、
前記インタフェースプロセッサおよび前記ストレージデバイスは、それぞれ自身のノードリストに含まれる前記ストレージデバイスに対して、前記ストレージデバイスの前記制御に関する情報の送信を行う
請求項１〜３のいずれか一項に記載の分散ストレージシステム。
【請求項５】
１つの前記ストレージデバイスと、前記１つのストレージデバイスのノードリストに含まれる別の前記ストレージデバイスとにおいて、
前記１つのストレージデバイスは、自身のノードリストから前記別のストレージデバイスを削除し、
前記別のストレージデバイスは、自身のノードリストに前記１つのストレージデバイスを追加し、
前記１つのストレージデバイスおよび前記別のストレージデバイスは、それぞれのノードリストに含まれる、前記１つのストレージデバイスおよび前記別のストレージデバイスを除くすべてのストレージデバイスを交換する
請求項４に記載の分散ストレージシステム。
【請求項６】
前記ストレージデバイスは、前記インタフェースプロセッサから前記送信されたノードリストに応じて、自身のノードリストを更新する
請求項１〜５のいずれか一項に記載の分散ストレージシステム。
【請求項７】
前記インタフェースプロセッサは、外部からの前記データの書込要求を受信すると、他の前記インタフェースプロセッサとの間で、そのデータの書込許可に関する情報の送受信を行い、
前記書込要求を受信した前記インタフェースプロセッサは、前記書込許可に関する前記情報の前記送受信の結果に応じて、前記ストレージデバイスに対して前記データの格納を指示し、あるいは指示しない
請求項１〜６のいずれか一項に記載の分散ストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散ストレージシステムに関する。
【背景技術】
【０００２】
ネットワーク上でデータを管理するストレージシステムとして、一括管理型ネットワークファイルシステムが従来から知られている。図１０に、従来から利用されてきた一括管理型ネットワークファイルシステムの概略図を示す。一括管理型ネットワークファイルシステムとは、複数のユーザ端末（クライアント）２０２とは別個にデータを保管するファイルサーバ２０１を設け、各ユーザ端末２０２はこのファイルサーバ２０１内のファイルを利用する方式である。管理機能、管理情報はファイルサーバ２０１が保有する。ファイルサーバ２０１とユーザ端末２０２とは通信ネットワーク２０３を介して接続される。
【０００３】
このような構成では、ファイルサーバ２０１に障害が発生した場合、復旧まであらゆるリソースにアクセスができず、障害に対して非常に脆くシステムとしての信頼性が低いといった問題がある。
【０００４】
このような問題を回避するためのシステムとして、分散ストレージシステムが知られている。分散ストレージシステムの例は、特許文献１に示される。図１１にその構成例を示す。分散管理型ネットワークファイルシステムは、ネットワーク３０２とそれに接続する複数のユーザ端末（クライアント）３０１から構成される。
【０００５】
各ユーザ端末３０１は、自己のストレージ内にファイル共有領域３０１ａを設け、当該ユーザ端末３０１が管理するマスターファイル、他のユーザ端末３０１が管理するマスターファイルのコピーであるキャッシュファイル、通信ネットワーク３０２上に点在する各々のファイルの情報を把握するために必要な管理情報が入っている管理情報テーブルを有する。各々のユーザ端末３０１は、他のユーザ端末３０１と少なくとも１つ以上の参照関係を結び、この参照関係を通し、管理情報を交換、修正を行なう。これらの作業をネットワーク上の全てのユーザ端末３０１が同様に行ない、情報が順次伝播することで時間が経てば収束し、全てのユーザ端末３０１が同じ管理情報を保持することができる。ユーザが実際にファイルにアクセスする際には、自己が保持している管理情報テーブルから管理情報を取得し、アクセスしたいファイルを所有しているユーザ端末３０１（キャッシュクライアント）を選択する。次に、マスタクライアントとなるユーザ端末３０１およびキャッシュクライアントからファイル情報を入手、比較し、一致すれば選択したユーザ端末から、不一致ならマスタクライアントから、当該ファイルを入手する。また、不一致の場合には、キャッシュクライアントに不一致であることを通知する。通知を受けたキャッシュクライアントは、当該ファイルの削除、マスタクライアントから当該ファイルの入手、管理情報テーブルの変更等の処理を行なう。
【０００６】
【特許文献１】特開２００２−３２４００４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来の分散ストレージシステムでは、信頼性の向上と引き換えに管理が複雑となり、これに伴って様々な問題が発生していた。
たとえば、特許文献１のような構成では、信頼性向上のためファイルのコピーを複数格納しておく必要があることから、大容量ストレージを構築するためには多数のユーザ端末３０１が必要となり、ユーザ端末３０１の数が増えれば増えるほど管理情報が収束するまでの時間が増大する。また、各ユーザ端末３０１間で管理情報および実体ファイルのやり取りが発生するため、ユーザ端末３０１のハードウエアリソースを消費するとともに、ネットワーク負荷の増大となる。
【０００８】
この発明は、このような問題点を解決するためになされたものであり、管理工数の増加を最低限に抑えつつ、信頼性および連続可動性を向上させることができる分散ストレージシステムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述の問題点を解決するため、この発明に係る分散ストレージシステムは、データを格納する、複数のストレージデバイスと、ストレージデバイスの制御を行う、複数のインタフェースプロセッサとを含み、インタフェースプロセッサおよびストレージデバイスは、通信ネットワークを介して、ＩＰプロトコルに従って互いに通信可能であり、インタフェースプロセッサは、それぞれ、通信ネットワークにおけるストレージデバイスの少なくとも１つのＩＰアドレスを含む、ノードリストを格納し、ストレージデバイスは、複数の異なるインタフェースプロセッサに対して、ノードリストを要求し、要求されたインタフェースプロセッサは、要求したストレージデバイスに、ノードリストを送信するとともに、要求したストレージデバイスのＩＰアドレスをノードリストに追加する。
【００１０】
分散ストレージシステムは、さらに、通信ネットワークに接続されたＤＮＳサーバを含み、ＤＮＳサーバは、所定のホスト名と、複数のインタフェースプロセッサのそれぞれのＩＰアドレスとを関連付けて記憶するとともに、所定のホスト名の照会に対し、複数のインタフェースプロセッサのＩＰアドレスの１つを巡回的に通知し、ストレージデバイスは、ＤＮＳサーバに対して所定のホスト名の照会を行い、通知されたインタフェースプロセッサのＩＰアドレスに基づいて、ノードリストの要求を行ってもよい。
インタフェースプロセッサは、ノードリストに含まれるストレージデバイスのＩＰアドレスと、時刻を表す情報とを関連付けて格納するとともに、所定の条件に応じて、最も古い時刻を表す情報が関連付けられたストレージデバイスのＩＰアドレスを、ノードリストから削除してもよい。
複数のストレージデバイスのそれぞれは、他のストレージデバイスの少なくとも１つのＩＰアドレスを含む、ノードリストを格納し、インタフェースプロセッサおよびストレージデバイスは、それぞれ自身のノードリストに含まれるストレージデバイスに対して、ストレージデバイスの制御に関する情報の送信を行ってもよい。
１つのストレージデバイスと、１つのストレージデバイスのノードリストに含まれる別のストレージデバイスとにおいて、１つのストレージデバイスは、自身のノードリストから別のストレージデバイスを削除し、別のストレージデバイスは、自身のノードリストに１つのストレージデバイスを追加し、１つのストレージデバイスおよび別のストレージデバイスは、それぞれのノードリストに含まれる、１つのストレージデバイスおよび別のストレージデバイスを除くすべてのストレージデバイスを交換してもよい。
ストレージデバイスは、インタフェースプロセッサから送信されたノードリストに応じて、自身のノードリストを更新してもよい。
インタフェースプロセッサは、外部からのデータの書込要求を受信すると、他のインタフェースプロセッサとの間で、そのデータの書込許可に関する情報の送受信を行い、書込要求を受信したインタフェースプロセッサは、書込許可に関する情報の送受信の結果に応じて、ストレージデバイスに対してデータの格納を指示し、あるいは指示しなくてもよい。
【発明の効果】
【００１１】
この発明に係る分散ストレージシステムによれば、各ストレージデバイスのＩＰアドレスが、それぞれ複数のインタフェースプロセッサのノードリストに含まれるので、インタフェースプロセッサのいずれかが稼動していない状態であっても、残りのインタフェースプロセッサを使用して、ファイルの書き込みおよび読み込みを行うことができ、管理工数の増加を最低限に抑えつつ信頼性および連続可動性を向上させることができる。
【発明を実施するための最良の形態】
【００１２】
以下、この発明の実施の形態を添付図面に基づいて説明する。
実施の形態１．
図１に、本発明に係る分散ストレージシステム１００を含む構成を示す。分散ストレージシステム１００は、公衆通信ネットワークであるインターネット５１を介して、分散ストレージシステム１００の利用者が使用するコンピュータであるユーザ端末１０と通信可能に接続されている。
分散ストレージシステム１００は、データを格納するストレージデバイス群３０と、ユーザ端末１０からの要求に従ってストレージデバイス群３０を制御するインタフェースプロセッサ群２０とを含む。インタフェースプロセッサ群２０およびストレージデバイス群３０は、通信ネットワークであるＬＡＮ（ローカルエリアネットワーク）５２を介して、互いに通信可能に接続される。
【００１３】
インタフェースプロセッサ群２０は、複数のインタフェースプロセッサを含む。本実施の形態では５台のインタフェースプロセッサ２１〜２５が図示されているが、これとは異なる数であってもよい。
ストレージデバイス群３０は、複数のストレージデバイスを含む。ストレージデバイスの数はたとえば１０００台であるが、簡明のため本実施の形態では９台のストレージデバイス３１〜３９のみを使用して説明する。
【００１４】
ユーザ端末１０、インタフェースプロセッサ２１〜２５、およびストレージデバイス３１〜３９は、それぞれ周知のコンピュータとしての構成を有し、外部からの入力を受け取る入力手段と、外部への出力を行う出力手段と、演算を行う演算手段と、情報を格納する記憶手段とを備える。入力手段はキーボードおよびマウスを含み、出力手段はディスプレイおよびプリンタを含み、演算手段はＣＰＵ（中央処理装置）を含み、記憶手段はメモリおよびＨＤＤ（ハードディスクドライブ）を含む。また、これらのコンピュータは、それぞれの記憶手段に格納されたプログラムを実行することによって、本明細書に説明される機能を実現する。
【００１５】
ユーザ端末１０は、インターネット５１に対する入出力手段であるネットワークカードを備える。ストレージデバイス３１〜３９は、それぞれ、ＬＡＮ５２に対する入出力手段であるネットワークカードを備える。インタフェースプロセッサ２１〜２５は、それぞれ２つのネットワークカードを備え、このうち一方はインターネット５１に対する入出力手段であり、他方はＬＡＮ５２に対する入出力手段である。
【００１６】
ユーザ端末１０、インタフェースプロセッサ２１〜２５、およびストレージデバイス３１〜３９は、それぞれ、ネットワークカードに対応するＩＰアドレスを付与される。
例として、ＬＡＮ５２に対して、インタフェースプロセッサ２１〜２５およびストレージデバイス３１〜３９のＩＰアドレスは、次のように指定されている。
インタフェースプロセッサ２１：  １９２．１６８．１０．２１
インタフェースプロセッサ２２：  １９２．１６８．１０．２２
インタフェースプロセッサ２３：  １９２．１６８．１０．２３
インタフェースプロセッサ２４：  １９２．１６８．１０．２４
インタフェースプロセッサ２５：  １９２．１６８．１０．２５
ストレージデバイス３１：    １９２．１６８．１０．３１
ストレージデバイス３２：    １９２．１６８．１０．３２
ストレージデバイス３３：    １９２．１６８．１０．３３
ストレージデバイス３４：    １９２．１６８．１０．３４
ストレージデバイス３５：    １９２．１６８．１０．３５
ストレージデバイス３６：    １９２．１６８．１０．３６
ストレージデバイス３７：    １９２．１６８．１０．３７
ストレージデバイス３８：    １９２．１６８．１０．３８
ストレージデバイス３９：    １９２．１６８．１０．３９
同様に、インターネット５１に対して、ユーザ端末１０およびインタフェースプロセッサ２１〜２５にＩＰアドレスが指定される。具体例は省略するが、これらは互いに異なるものであればよい。
【００１７】
インターネット５１には、周知の構成を有するＤＮＳサーバであるＤＮＳサーバ４１が通信可能に接続される。ＤＮＳサーバ４１は、単一のホスト名と、インタフェースプロセッサ２１〜２５それぞれのインターネット５１におけるＩＰアドレスとを関連付けて記憶し、いわゆるラウンドロビンＤＮＳ方式に従って動作する。すなわち、ユーザ端末１０からの、この単一のホスト名に関する照会に対し、インタフェースプロセッサ２１〜２５にそれぞれ対応する合計５つのＩＰアドレスを、順番に、巡回的に通知する。
【００１８】
同様に、ＬＡＮ５２には、周知の構成を有するＤＮＳサーバであるＤＮＳサーバ４２が通信可能に接続される。ＤＮＳサーバ４２は、単一のホスト名と、インタフェースプロセッサ２１〜２５それぞれのＬＡＮ５２におけるＩＰアドレスとを関連付けて記憶する。ＤＮＳサーバ４２は、ストレージデバイス３１〜３９からの、この単一のホスト名に関する照会に対し、ラウンドロビンＤＮＳ方式に従ってインタフェースプロセッサ２１〜２５のＩＰアドレスを順番に通知する。
【００１９】
図２は、図１のインタフェースプロセッサ２１〜２５およびストレージデバイス３１〜３９の論理的な接続状態を説明するグラフである。この論理的な接続状態は、インタフェースプロセッサ２１〜２５およびストレージデバイス３１〜３９を表すノードと、ノード間を連結する、向きを持った辺とからなる有向グラフとして示される。なお、簡明のため図２にはインタフェースプロセッサとしてインタフェースプロセッサ２１のみを示すが、実際には他のインタフェースプロセッサ２２〜２５もこのグラフに含まれる。
このグラフは、インタフェースプロセッサ２１（２２〜２５も同様である）から、ストレージデバイス３１〜３９の少なくとも１つ、たとえばストレージデバイス３１、３６、３７、および３８に向かう辺を持つ。一方、その逆、すなわちストレージデバイス３１〜３９からインタフェースプロセッサ２１（２２〜２５も同様である）へと向かう辺は持たない。また、各ストレージデバイス間では、辺を持たない場合もあり、一方向のみの辺を持つ場合もあり、双方向の辺を持つ場合もある。
なお、このグラフは固定されたものではなく、分散ストレージシステム１００の動作に従って変化するが、これについては後述する。
【００２０】
分散ストレージシステム１００において、論理的な接続状態は、ノードごとに作成されるノードリストの集合として表される。
図３は、図２のグラフを表すノードリストの例である。あるノードから他のノードへと向かう辺が存在する場合、辺の始点となるノードのノードリストは、辺の終点となるノードを表す情報、たとえばＬＡＮ５２におけるＩＰアドレスを含む。
図３（ａ）は、図２におけるインタフェースプロセッサ２１（ＩＰアドレス１９２．１６８．１０．２１を有する）について作成されたノードリストを示す。このノードリストは、インタフェースプロセッサ２１の記憶手段に格納される。このノードリストには、ストレージデバイス３１、３６、３７、および３８を表すＩＰアドレスが含まれる。
同様に、図３（ｂ）は、図２におけるストレージデバイス３１（ＩＰアドレス１９２．１６８．１０．３１を有する）について作成されたノードリストを示す。このノードリストは、ストレージデバイス３１の記憶手段に格納される。このノードリストには、ストレージデバイス３２、３４、および３５を表すＩＰアドレスが含まれる。
【００２１】
インタフェースプロセッサ２１〜２５は、それぞれ、周知の方法でデータを消失訂正符号化する機能を有する。
図４は、インタフェースプロセッサ２１（２２〜２５も同様）がデータを消失訂正符号化する手順を示す。（ａ）は元データを表し、情報が１つのまとまりとして与えられた状態を示す。インタフェースプロセッサ２１は、元データを分割して、複数の情報パケットを作成する。（ｂ）はたとえば１００個の情報パケットが作成された状態を示す。さらに、インタフェースプロセッサ２１は、情報パケットを冗長化して、より多数の符号化データファイルを作成する。（ｃ）は、たとえば１５０個の符号化データファイルが作成された状態を示す。
この１５０個の符号化データファイルは、たとえばそのうち任意の１０５個が収集されれば元データが復元可能となるように構成される。このような符号化および復号化の方法は、周知の消失訂正符号または誤り訂正符号等の技術に基づくものであり、符号化データファイルの数や、元データの復元に必要となる符号化データファイルの最小個数は適宜変更可能である。
インタフェースプロセッサ２１は、その記憶手段に、このような符号化および復号化を行うためのプログラムを格納し、これを実行することによって符号化手段および復号化手段として機能する。
【００２２】
分散ストレージシステム１００は、図２に例示される論理的な接続状態を、動的に更新する機能を有する。
図５および図６は、ストレージデバイス３１〜３９およびインタフェースプロセッサ２１〜２５が、それぞれのノードリストを更新する際の処理の流れを説明する図である。
各ストレージデバイス、以下例としてストレージデバイス３１は、所定のタイミングで、たとえば２分おきに、図５のフローチャートの実行を開始する。この実行を開始したストレージデバイスが、更新処理を開始したストレージデバイスとなる。
まず、ストレージデバイス３１は、自身のノードリストに存在するノードのうち１つを、更新処理の対象として選択する（ステップＳ１０１ａ）。ここでは、過去に一度も選択されていないノードまたは最も長時間選択されていないノードが１つ選択される。条件に適合するノードが複数存在する場合は、それらのうちからランダムに選択される。図示しないが、選択されたノードのＩＰアドレスは、その時点の時刻のタイムスタンプと関連付けて記憶され、次回の処理における選択基準として参照される。なお、変形例として、ＩＰアドレスとタイムスタンプとの関連付けを行わない構成としてもよい。その場合は、ステップＳ１０１ａにおけるノードの選択において、ノードリストに含まれるノードのうちからランダムに１つのノードが選択される。
ここでは、例として、ストレージデバイス３２が選択されたものとする。
次に、ストレージデバイス３１は、選択されたノードに、そのノードが更新処理の対象として選択されたことを示す、ノード交換メッセージを送信する（ステップＳ１０２ａ）。ストレージデバイス３２はこのノード交換メッセージを受信し（ステップＳ１０２ｂ）、ストレージデバイス３１による更新処理の対象として選択されたことを認識する。
【００２３】
次に、ストレージデバイス３１および３２は、相互接続情報の刈り込みを実行して、ノードリストを更新する（ステップＳ１０３ａおよびＳ１０３ｂ）。
図６は、ステップＳ１０３ａおよびＳ１０３ｂにおける更新処理を説明する図である。（ｘ）は、これらのステップが開始される前の、ストレージデバイス３１および３２のノードリストを示す。これは図２の接続状態に対応する。ストレージデバイス３１のノードリストにはストレージデバイス３２、３４、および３５が含まれており、ストレージデバイス３２のノードリストにはストレージデバイス３３のみが含まれている。
ステップＳ１０３ａおよびＳ１０３ｂにおいて、まずストレージデバイス３１および３２は、更新処理を開始したストレージデバイス３１から、更新処理の対象として選択されたストレージデバイス３２へと向かう辺の向きを逆転する。すなわち、ストレージデバイス３１のノードリストからはストレージデバイス３２が削除され、かつ、ストレージデバイス３２のノードリストにはストレージデバイス３１が追加される（ストレージデバイス３１が以前から存在していた場合は変更されない）。この時点でノードリストは図６（ｙ）に示す内容となる。
さらに、ストレージデバイス３１および３２は、ノードリストの他のノードを交換する。ストレージデバイス３１のノードリストからはストレージデバイス３４および３５が削除され、これらはストレージデバイス３２のノードリストに追加される。また、ストレージデバイス３２のノードリストからはストレージデバイス３３が削除され、これはストレージデバイス３１のノードリストに追加される。この時点でノードリストは図６（ｚ）に示す内容となる。
なお、ステップＳ１０３ａおよびＳ１０３ｂにおける相互接続情報の刈り込みでは、全ストレージデバイスのノードリストに含まれるノードの総数、すなわち図２のグラフに示されるストレージデバイス間の辺の総数は、変化しない場合もあり、減少する場合もあるが、増加する場合はない。これは、更新処理を開始したストレージデバイスから、更新処理の対象として選択されたストレージデバイスへと向かう辺は必ず削除されるが、その逆の辺は追加される場合もあれば追加されない場合（すなわちそれ以前から存在している場合）もあるからである。
以上のようにして、ストレージデバイス３１および３２は、ステップＳ１０３ａおよびＳ１０３ｂの相互接続情報の刈り込みを実行する。その後、選択されたストレージデバイス３２はその処理を終了する。
【００２４】
次に、ストレージデバイス３１は、自身のノードリストに含まれるノード数が、一定数以下、たとえば４以下となったかどうかを判定する（図５のステップＳ１０４ａ）。ノード数が一定数を超えている場合、ストレージデバイス３１は処理を終了する。
ノード数が一定数以下である場合、ストレージデバイス３１は、インタフェースプロセッサ２１〜２５のいずれかにノード情報すなわちノードリストの送信を要求してこれを取得し、これに含まれるノードを自身のノードリストに追加する（ステップＳ１０５ａ）。要求の対象となったインタフェースプロセッサは、この要求に応じ、自身のノードリストをストレージデバイス３１に送信する（ステップＳ１０５ｃ）。このノードリストは、図３（ａ）に示すように、ストレージデバイス３１〜３９のうち少なくとも１つのＩＰアドレスを含む。
【００２５】
ここで、ストレージデバイス３１は、所定のホスト名を使用してＤＮＳサーバ４２に照会を行い、得られたＩＰアドレスを有するインタフェースプロセッサからノード情報を取得する。ＤＮＳサーバ４２は上述のようにラウンドロビン方式に従って通知を行うので、ストレージデバイス３１は、ステップＳ１０５ａが実行されるごとに異なるインタフェースプロセッサからノード情報を取得することになる。ここでは例として、ＤＮＳサーバ４２はインタフェースプロセッサ２１のＩＰアドレスを通知したとする。
【００２６】
次に、ストレージデバイス３１およびインタフェースプロセッサ２１は、ステップＳ１０５ａおよびＳ１０５ｃの結果に応じ、それぞれのノードリストを更新する（ステップＳ１０６ａおよびＳ１０６ｂ）。
ここで、ストレージデバイス３１は、取得したノードのうち、ノードリストに存在しないノード（自分自身を除く）を、自身のノードリストに追加する。
また、インタフェースプロセッサ２１は、要求元のノードであるストレージデバイス３１を、自身のノードリストに追加する。ここで、インタフェースプロセッサ２１は、追加されたノードに、それが追加された時刻を表す情報、たとえばタイムスタンプを関連付けて記憶する。そして、所定の条件が満たされると、たとえばノードリストのノードが一定数以上になると、最も古いタイムスタンプが関連付けられたものから順にノードリストから削除する。なお、変形例として、インタフェースプロセッサ２１はノードとタイムスタンプとの関連付けを行わない構成としてもよい。その場合、ノードリストから削除されるべきノードの選択では、ノードリストに含まれるノードのうちからランダムに１つのノードが選択される。また、インタフェースプロセッサ２１は、ノードリストを、順序を有するリストとして記憶してもよい。すなわち、各ノードがノードリストに追加された順序を判定できる構成としてもよい。その場合、ノードリストから削除されるべきノードの選択は、ノードリストに追加された順序に従って古いものから順に、すなわちＦＩＦＯ方式で、行われてもよい。
このようにして、分散ストレージシステム１００は、ノード間の論理的な接続状態を動的に更新する。
【００２７】
なお、図１に含まれない新たなストレージデバイスが分散ストレージシステム１００に追加される場合、このストレージデバイスはまずインタフェースプロセッサのいずれかからノードリストを取得し、これを初期のノードリストとする。すなわち、この場合、追加されたストレージデバイスはノードリストが空であるために、ステップＳ１０１ａ、Ｓ１０２ａ、Ｓ１０２ｂ、Ｓ１０３ａ、Ｓ１０３ｂは実行されず、ステップＳ１０４ａにおいてはノード情報は０で、当然に一定数以下であるから、図５のステップＳ１０５ａおよびＳ１０５ｃと、Ｓ１０６ａおよびＳ１０６ｃが実行されることになる。
このように、図５および図６で説明したノードリストの更新を、各ストレージデバイスで所定のタイミングで繰り返して実行することにより、追加したばかりのストレージデバイスは辺を持たないが、やがて、一方向のみの辺を持つ場合、双方向の辺を持つ場合など、様々なパターンの有向グラフが構築される。
【００２８】
図７は、分散ストレージシステム１００が、ユーザ端末１０からファイルを受信して格納する際の動作を含む、処理の流れを説明するフローチャートである。
まず、ユーザ端末１０が、ユーザの指示に応じて、分散ストレージシステム１００に格納されるべき書込ファイルを分散ストレージシステム１００に送信する（ステップＳ２０１ａ）。
ここで、ユーザ端末１０は、所定のホスト名を使用してＤＮＳサーバ４１に照会を行い、得られたＩＰアドレスを有するインタフェースプロセッサに書込ファイルを送信する。ＤＮＳサーバ４１は上述のようにラウンドロビン方式に従って通知を行うので、ユーザ端末１０は、毎回異なるインタフェースプロセッサに書込ファイルを送信することになる。ここでは、例としてインタフェースプロセッサ２１に書込ファイルが送信されたとする。
【００２９】
なお、ここで、当該ファイルの書き込み処理を担当すべきインタフェースプロセッサがすでに決定されており、ユーザ端末１０がそのＩＰアドレスを記憶している場合は、ユーザ端末１０はＤＮＳサーバ４１への照会を行わず、ＩＰアドレスを直接使用して送信を行う。たとえば、排他制御処理（図９を使用して後述する）の結果、そのファイルの書き込みを許可するトークンを特定のインタフェースプロセッサが取得している状態がそのようなケースに相当する。
【００３０】
インタフェースプロセッサ２１は、書込ファイルを受信すると（ステップＳ２０１ｂ）、これを分割し、消失訂正符号化を行って、複数のサブファイルを作成する（ステップＳ２０２ｂ）。これは図４を用いて説明した方法で行われる。
次に、インタフェースプロセッサ２１は、ストレージデバイス３１〜３９に書込要求を送信し（ステップＳ２０３ｂ）、ストレージデバイス３１〜３９はこれを受信する（ステップＳ２０３ｃ）。この書込要求は、図２に示されるグラフに従って、インタフェースプロセッサ２１からそのノードリストに示されるストレージデバイスに送信され、さらにそのストレージデバイスのノードリストに示されるノードリストに送信され、これを繰り返して、ストレージデバイス間で転送される。
【００３１】
この書込要求は、次のデータを含む。
‐その書込要求を送信したインタフェースプロセッサのＩＰアドレス
‐その書込要求を一意に識別するためのメッセージＩＤ
‐その書込要求が転送された回数を表すホップ数
‐各ストレージデバイスがその書込要求に応答すべき確率を表す応答確率
ここで、ホップ数の初期値はたとえば１である。また、応答確率は、インタフェースプロセッサ２１が、全ストレージデバイスの数と、サブファイルの数とに基づいて、応答するストレージデバイスの数がサブファイルの数以上となる確率が十分高くなるように決定される。たとえば、ストレージデバイスの数（あらかじめ指定され、インタフェースプロセッサ２１の記憶手段に格納されている）が１０００台であり、サブファイルの数が１５０個である場合、応答するストレージデバイスの数の期待値がサブファイルの数に等しくなるようにするには、応答確率を１５０／１０００＝０．１５とすればよいが、応答するストレージデバイスの数がサブファイルの数以上となる確率が十分高くなるようにするには、たとえば２０％の余裕度を持ち、応答確率を０．１５×１．２＝０．１８とすればよい。
なお、変形例として、書込要求はホップ数を含まないものであってもよい。
【００３２】
書込要求の送受信は、具体的には、たとえば次のようなアルゴリズムが使用される。
（１）送信ノード、たとえばインタフェースプロセッサ２１は、自身のノードリストに含まれる全ノードに書込要求を送信する。
（２）受信ノード、たとえばストレージデバイス３１は、受信した書込要求のメッセージＩＤを参照し、その書込要求が既知であるかどうか、すなわち既に受信されたものであるかどうかを判定する。
（３）受信ノードは、その書込要求が既知である場合、処理を終了する。
（４）受信ノードは、その書込要求が既知でない場合、送信ノードとして上記（１）と同様にその書込要求を送信する。なお、この際、書込要求のホップ数を１だけ増加させる。
以上のようにして、有向グラフで繋がったすべてのストレージデバイス３１〜３９が書込要求を受信する。
【００３３】
次に、ストレージデバイス３１〜３９は、それぞれ、受信した書込要求に応答するかどうかを決定する（ステップＳ２０４ｃ）。この決定は応答確率に従ってランダムになされ、たとえば応答確率が０．１８であれば、０．１８の確率で応答すると決定し、１−０．１８＝０．８２の確率で応答しないと決定する。
【００３４】
応答しないと決定した場合、そのストレージデバイスは、処理を終了する。
応答すると決定した場合、そのストレージデバイスは、書込要求に含まれているインタフェースプロセッサのＩＰアドレス、ここでは１９２．１６８．１０．２１に対して、応答を送信する（ステップＳ２０５ｃ）。この応答は、そのストレージデバイスのＩＰアドレスを含む。
【００３５】
書込要求の送信元であるインタフェースプロセッサ２１は、この応答を受信し（ステップＳ２０５ｂ）、応答に含まれるＩＰアドレスに対して、すなわち応答したストレージデバイスに対して、サブファイルを送信する（ステップＳ２０６ｂ）。ここで、１つのストレージデバイスに対しては１つのサブファイルが送信される。
応答したストレージデバイスの数がサブファイルの数よりも多い場合、インタフェースプロセッサ２１は、所定の基準に従ってストレージデバイスを選択する。この基準は、たとえばデータがなるべく地理的に分散するように、すなわち同一の拠点に含まれるストレージデバイスの最大数を少なくするように設定される。
【００３６】
書込要求に応答したストレージデバイスは、サブファイルを受信する（ステップＳ２０６ｃ）。図７には示されないが、応答したにもかかわらずサブファイルを受信しなかったストレージデバイスは、その処理を終了する。
サブファイルを受信したストレージデバイスは、そのサブファイルを自身の記憶手段に格納する（ステップＳ２０７ｃ）。これによって、そのサブファイルは分散ストレージシステム１００に書き込まれたことになる。
その後、各ストレージデバイスは、サブファイル書込終了通知をインタフェースプロセッサ２１に送信する（ステップＳ２０８ｃ）。インタフェースプロセッサ２１は、サブファイルを送信したストレージデバイスのすべてからこれを受信する（ステップＳ２０８ｂ）。これによって、元データの全量が、分散ストレージシステム１００に書き込まれたことになる。
その後、インタフェースプロセッサ２１は、ユーザ端末１０にファイル書込終了通知を送信し（ステップＳ２０９ｂ）、ユーザ端末１０はこれを受信して（ステップＳ２０９ａ）、ファイル書込処理を終了する（ステップＳ２１０ａ）。
【００３７】
図８は、分散ストレージシステム１００が、ユーザ端末１０からファイル読込要求を受信してファイルを送信する際の動作を含む、処理の流れを説明するフローチャートである。
まず、ユーザ端末１０が、特定のファイルを読み込む指示をユーザから受け取り、これに応じて、分散ストレージシステム１００にファイル読込要求を送信する（ステップＳ３０１ａ）。
ここで、図７のステップＳ２０１ａと同様に、ラウンドロビン方式のＤＮＳ照会が行われる。すなわち、ユーザ端末１０は、毎回異なるインタフェースプロセッサにファイル読込要求を送信することになる。ここでは、例としてインタフェースプロセッサ２１にファイル読込要求が送信されたとする。
【００３８】
インタフェースプロセッサ２１は、ファイル読込要求を受信すると（ステップＳ３０１ｂ）、ストレージデバイス３１〜３９にファイル存在確認要求を送信し（ステップＳ３０２ｂ）、ストレージデバイス３１〜３９はこれを受信する（ステップＳ３０２ｃ）。このファイル存在確認要求は、図７のステップＳ２０３ｂにおける書込要求と同様の方法で送受信される。すなわち、図２に示されるグラフに従って、インタフェースプロセッサ２１からそのノードリストに示されるストレージデバイスに送信され、さらにそのストレージデバイスのノードリストに示されるノードリストに送信され、これを繰り返してストレージデバイス間で転送される。
【００３９】
このファイル存在確認要求は、次のデータを含む。
‐ファイル読込要求の対象となるファイルを特定する情報、たとえばファイル名
‐そのファイル存在確認要求を送信したインタフェースプロセッサのＩＰアドレス
‐そのファイル存在確認要求を一意に識別するためのメッセージＩＤ
‐そのファイル存在確認要求が転送された回数を表すホップ数
ここで、ホップ数の初期値はたとえば１である。なお、変形例として、ファイル存在確認要求はホップ数を含まないものであってもよい。
【００４０】
次に、ストレージデバイス３１〜３９は、それぞれ、該当するファイルのサブファイルを格納しているかどうかを判定する（ステップＳ３０３ｃ）。
格納していない場合、そのストレージデバイスは、処理を終了する。
格納している場合、そのストレージデバイスは、ファイル存在確認要求に含まれているインタフェースプロセッサのＩＰアドレス、ここでは１９２．１６８．１０．２１に対して、ファイルが存在することを示す存在応答を送信する（ステップＳ３０４ｃ）。この応答は、そのストレージデバイスのＩＰアドレスを含む。
【００４１】
ファイル存在確認要求の送信元であるインタフェースプロセッサ２１は、この存在応答を受信し（ステップＳ３０４ｂ）、存在応答に含まれるＩＰアドレスに対して、すなわち応答したストレージデバイスに対して、サブファイル読込要求を送信する（ステップＳ３０５ｂ）。
【００４２】
存在応答を送信したストレージデバイスは、サブファイル読込要求を受信すると（ステップＳ３０５ｃ）、そのサブファイルを自身の記憶手段から読み込み（ステップＳ３０６ｃ）、インタフェースプロセッサ２１に送信する（ステップＳ３０７ｃ）。
インタフェースプロセッサ２１は、サブファイルを送信したストレージデバイスの少なくとも一部からこれを受信する（ステップＳ３０７ｂ）。さらに、受信した複数のサブファイルに基づいて、消失訂正符号の復号化を行って、ユーザ端末１０から要求されているファイルを再構築する（ステップＳ３０８ｂ）。この復号化は、図４を用いて説明した符号化方法に対応して、周知の方法で行われる。なお、この際、サブファイルは冗長化されているので、すべてのサブファイルが揃わなくても元ファイルを正確に復元することができる。
その後、インタフェースプロセッサ２１は、ユーザ端末１０に復号化されたファイルを送信し（ステップＳ３０９ｂ）、ユーザ端末１０はこれを受信して（ステップＳ３０９ａ）、ファイル読込処理を終了する（ステップＳ３１０ａ）。
【００４３】
図９は、分散ストレージシステム１００が、ユーザ端末１０からファイルを受信して格納する際に行う、排他制御処理の流れを説明するフローチャートである。この排他制御処理は、複数のインタフェースプロセッサが、同時に同一のファイルを書き込むことを防止するためのものである。
この制御では、各ファイルに関連付けられ、そのファイルの書込許可の状態を表すトークンを使用する。１つのファイルにつき、最大１台のインタフェースプロセッサがそのトークンを記憶手段に格納し、トークンを格納しているインタフェースプロセッサのみがそのファイルの書き込み（新規ファイルの格納および既存ファイルの更新を含む）を行うことができる。
【００４４】
まず、ユーザ端末１０が、ユーザの指示に応じて、ファイルを書き込むための書込要求を分散ストレージシステム１００に送信する（ステップＳ４０１ａ）。
ここで、図７のステップＳ２０３ａと同様に、ラウンドロビン方式のＤＮＳ照会が行われる。ここでは、例としてインタフェースプロセッサ２１にファイル書込要求が送信されたとする。
【００４５】
インタフェースプロセッサ２１は、書込要求を受信すると（ステップＳ４０１ｂ）、他のインタフェースプロセッサ２２〜２５に排他制御用のトークン取得要求を送信する（ステップＳ４０２ｂ）。このトークン取得要求は、次のデータを含む。
‐そのトークン取得要求を送信したインタフェースプロセッサのＩＰアドレス
‐そのトークン取得要求の対象となるファイルを特定する情報、たとえばファイル名
‐そのトークン取得要求が作成された時刻を表すタイムスタンプ
【００４６】
他のインタフェースプロセッサ２２〜２５は、このトークン取得要求を受信し（ステップＳ４０２ｃ）、自分自身が該当ファイルに対するトークンを取得しているかどうかを判定する（ステップＳ４０３ｃ）。
他のインタフェースプロセッサ２２〜２５は、該当ファイルに対するトークンを取得していないと判定した場合、処理を終了する。
該当ファイルに対するトークンを取得していると判定した場合、トークン取得要求を送信してきたインタフェースプロセッサ２１に対し、トークンが取得済みであることを表すトークン取得拒否応答を送信する（ステップＳ４０４ｃ）。
【００４７】
インタフェースプロセッサ２１は、トークン取得拒否応答を待ち、送信されたものがあれば受信する（ステップＳ４０４ｂ）。ここで、インタフェースプロセッサ２１は、ステップＳ４０２ｂの実行後所定時間、たとえば１００ｍｓだけ待ち、その間にトークン取得拒否応答を受け付ける。
次に、インタフェースプロセッサ２１は、ステップＳ４０４ｂにおいてトークン取得拒否応答を受信したかどうかを判定する（ステップＳ４０５ｂ）。トークン取得拒否応答を受信したと判定された場合、ユーザ端末１０に書込不可通知を送信し（ステップＳ４１１ｂ）、ユーザ端末１０はこの書込不可通知を受信する（ステップＳ４１１ａ）。この場合、ユーザ端末１０はファイルの書き込みを実行せず、ユーザに対して周知の方法で書込不可の通知を行う。すなわち、ユーザ端末１０は図７のステップＳ２０１ａを実行しない。
【００４８】
ステップＳ４０５ｂにおいて、トークン取得拒否応答を受信していないと判定された場合、インタフェースプロセッサ２１は、ステップＳ４０１ｂの実行開始からステップＳ４０５ｂの実行完了までの間に、他のインタフェースプロセッサ２２〜２５からトークン取得要求を受信していたかどうかを判定する（ステップＳ４０６ｂ）。
他のインタフェースプロセッサ２２〜２５からトークン取得要求を受信していなかった場合、インタフェースプロセッサ２１は、そのファイルに対するトークンを取得する（ステップＳ４０８ｂ）。すなわち、トークンを作成して記憶手段に格納する。
【００４９】
他のインタフェースプロセッサ２２〜２５からトークン取得要求を受信していた場合、インタフェースプロセッサ２１は、自身が送信したトークン取得要求と、他から受信したトークン取得要求すべてとの間で、時刻判定を行う（ステップＳ４０７ｂ）。この判定は、各トークン取得要求に含まれるタイムスタンプを比較することによって行われる。
ステップＳ４０７ｂにおいて、自身のトークン取得要求が最も早いものであった場合、すなわちタイムスタンプが最も古いものであった場合、インタフェースプロセッサ２１はステップＳ４０８ｂに進み、上述のようにトークンを取得する。そうでない場合、インタフェースプロセッサ２１はステップＳ４１１ｂに進み、上述のように書込不可通知を送信する。
【００５０】
ステップＳ４０８ｂにおいてトークンを取得した後、インタフェースプロセッサ２１は、ユーザ端末１０に書き込み可能通知を送信し（ステップＳ４０９ｂ）、ユーザ端末１０はこの書込可能通知を受信する（ステップＳ４０９ａ）。この後ユーザ端末１０は書込動作を実行する（ステップＳ４１０ａ）。すなわち、ユーザ端末１０は図７のステップＳ２０１ａを実行し、これに伴って図７のフローチャートが実行される。
なお、ステップＳ４０８ｂにおいて取得されたトークンは、たとえば図７のステップＳ２０８ｂが完了した時点で解放され、インタフェースプロセッサ２１はその記憶手段からトークンを消去する。
【００５１】
以上のように動作する分散ストレージシステム１００の処理の流れの例を、以下に説明する。
分散ストレージシステム１００が構成され作動するに伴って、インタフェースプロセッサ２１〜２５およびストレージデバイス３１〜３９の間には図２に示す論理的な接続状態が形成される。この接続状態は、ユーザ端末１０からの指示に関わらず、自動的に、随時、図５に示す処理によって動的に更新される。これによって、ノードのいずれかまたはノード間の通信経路に障害が発生した場合であっても、その障害を迂回するパスが生成でき、耐障害性の高いシステムとなる。
【００５２】
時間の経過に伴って図５の処理が繰り返され、従ってステップＳ１０３ａおよびＳ１０３ｂにおける相互接続情報の刈り込みが繰り返されると、各ストレージデバイスのノードリストに含まれるノードの数は次第に減少する。すなわち、図２のグラフは次第に辺の数が減少して疎なものとなる。ここで、図５のステップＳ１０５ａにおいて、各ストレージデバイスのノードリストに含まれるノード情報の数がある閾値（たとえば４）以下になると、ノード情報を追加取得してこれを増加させる。この閾値の設定によって、図２のグラフの平均最短パス長、すなわちインタフェースプロセッサ２１〜２５からストレージデバイス３１〜３９にメッセージが送信される際の平均ホップ数を調整することができる。この平均最短パス長は、
［｛ｌｎ（Ｎ）−γ｝／ｌｎ（<ｋ>）］＋１／２
で表される。ここで、Ｎはノード数、γはオイラー定数（約０．５７７２）、<ｋ>はノードリストに含まれるノード情報の数の平均値であり、ｌｎは自然対数を表す。
なお、平均最短パス長が測定によって求まる場合、上式をＮについて解くことにより、ストレージデバイスの数を逆算して求めることができる。図７のステップＳ２０３ｂでは、書込要求に含まれる応答確率を決定するために、インタフェースプロセッサ２１はストレージデバイスの数をあらかじめ記憶しているが、変形例としてこのような逆算によってストレージデバイスの数を求める構成としてもよい。なお、その場合は、図７のステップＳ２０３ｂにおける書込要求および図８のステップＳ３０２ｂにおけるファイル存在確認要求を転送する際に、各ストレージデバイスはインタフェースプロセッサ２１にホップ数を通知し、インタフェースプロセッサ２１はこのホップ数を全ストレージデバイスについて平均することによって平均最短パス長の実測値を得る。
【００５３】
また、ストレージデバイス３１〜３９が上述のようにノードリストを要求すると、要求を受けたインタフェースプロセッサは、ノードリストを送信するとともに、送信を要求してきたストレージデバイスのＩＰアドレスを自身のノードリストに追加する（ステップＳ１０６ｃ）。ここで、ストレージデバイス３１〜３９からのインタフェースプロセッサのＩＰアドレスの照会に対し、ＤＮＳサーバ４２は毎回異なるインタフェースプロセッサのＩＰアドレスを通知するので、ストレージデバイス３１〜３９は毎回異なるインタフェースプロセッサにノードリストを要求することになる。これによって、ストレージデバイス３１〜３９それぞれのＩＰアドレスは、それぞれ複数のインタフェースプロセッサのノードリストに含まれることになる。
【００５４】
ここで、たとえば、分散ストレージシステム１００のユーザが、ユーザ端末１０を介して、ファイル名「ＡＢＣＤ」を有するファイルを分散ストレージシステム１００に格納することを指示したとする。これに応じて分散ストレージシステム１００は図９に示す排他制御処理を実行し、たとえばインタフェースプロセッサ２１がファイルＡＢＣＤのトークンを取得する。ここで、インタフェースプロセッサ２１〜２５のそれぞれが自立的にトークン取得動作を行い、別個にトークンを管理する機構を持たない仕組みのため、一括管理機構を持たずに分散ストレージシステム１００が構築できる。
【００５５】
インタフェースプロセッサ２１がトークンを取得すると、これに続いて、ユーザ端末１０および分散ストレージシステム１００は、図７に示す書き込み処理を実行する。ここで、インタフェースプロセッサ２１はファイルＡＢＣＤを分割して１００個の情報パケットとし、さらに冗長化して１５０個のサブファイルとする（ステップＳ２０２ｂ）。さらに、インタフェースプロセッサ２１は、応答確率として０．１８を指定した書込要求を全ストレージデバイスに送信する（ステップＳ２０３ｂ）。この書込要求は図２に示すようなグラフに従ってバケツリレー方式で転送される。ストレージデバイスは、それぞれ、指定された０．１８の確率で応答を送信する（ステップＳ２０５ｃ）。この際、インタフェースプロセッサ２１のＩＰアドレスは書込要求に含まれているため、ストレージデバイスはインタフェースプロセッサ２１（および他のインタフェースプロセッサ２２〜２５）のＩＰアドレスを事前に知っている必要がない。
【００５６】
インタフェースプロセッサ２１は、受信した応答に従ってサブファイルの送信を行い、各ストレージデバイスは記憶手段にサブファイルを格納する（ステップＳ２０７ｃ）。
ここで、インタフェースプロセッサ２１〜２５は、ファイルＡＢＣＤのサブファイルがどのストレージデバイスに格納されているかという管理を行う必要がないため、一括管理機構を持たずに分散ストレージシステム１００を構築することができる。
また、個々のストレージデバイスの故障、電源断、メンテナンス、ネットワーク回線の断線等の要因で、ストレージデバイスの一部が正常に稼動していない場合であっても、消失訂正符号化技術によって、稼動している残りのストレージデバイスから必要数のサブファイルを取得することができる。したがって、元ファイルを正確に復号化して生成することができ、高い信頼性および連続可動性を達成することができる。
【００５７】
また、分散ストレージシステム１００のユーザは、所望の時点で、分散ストレージシステム１００に格納したファイルＡＢＣＤの読み込みを、ユーザ端末１０を介して、分散ストレージシステム１００に指示する。これに応じて、たとえばインタフェースプロセッサ２１は、図８に示すようにファイル存在確認を送信し（ステップＳ３０２ｂ）、応答があったストレージデバイスからサブファイルを受信する（ステップＳ３０７ｂ）。ここで、書き込み処理時と同様に、インタフェースプロセッサ２１のＩＰアドレスはファイル存在確認要求に含まれているため、ストレージデバイスはこれを事前に知っている必要がない。また、インタフェースプロセッサ２１は、ファイルＡＢＣＤのサブファイルがどのストレージデバイスに格納されているかという管理を行う必要がないため、一括管理機構を持たずに分散ストレージシステム１００を構築することができる。
インタフェースプロセッサ２１は、受信したサブファイルに基づいてファイルＡＢＣＤを再構築し（ステップＳ３０８ｂ）、これをユーザ端末１０に送信する。
【００５８】
以上説明されるように、本発明に係る分散ストレージシステム１００によれば、インタフェースプロセッサ２１〜２５およびストレージデバイス３１〜３９は、それぞれストレージデバイス３１〜３９のうち少なくとも１つのＩＰアドレスを含む、ノードリストを格納する。インタフェースプロセッサ２１〜２９は、このノードリストに応じてストレージデバイス３１〜３９を制御する。
ここで、ストレージデバイス３１〜３９は毎回異なるインタフェースプロセッサにノードリストを要求するので、ストレージデバイス３１〜３９それぞれのＩＰアドレスは、それぞれ複数のインタフェースプロセッサのノードリストに含まれることになる。よって、インタフェースプロセッサ２１〜２５のいずれかが稼動していない状態であっても、残りのインタフェースプロセッサを使用して、ファイルの書き込みおよび読み込みを行うことができ、管理工数の増加を最低限に抑えつつ信頼性および連続可動性を向上させることができる。
【００５９】
また、ＤＮＳラウンドロビン方式によって複数のインタフェースプロセッサ２１〜２５に負荷を分散させることができるので、特定のインタフェースプロセッサやその周辺のネットワークの負荷が突出して増大する事態を回避できる。
また、インタフェースプロセッサ２１〜２５が消失訂正符号化技術を用いて複数のサブファイルを作成し、複数のストレージデバイスが１つずつサブファイルを格納するので、ストレージデバイス３１〜３９のいずれかが稼動していない状態であっても、残りのストレージデバイスを使用してファイルの読み込みを行うことができ、信頼性および連続可動性をさらに向上させることができる。
【００６０】
また、ストレージデバイス３１〜３９および新たに追加されるストレージデバイスは、インタフェースプロセッサ２１〜２５のノードリストを要求して、これに従って自身のノードリストを自動的に更新または作成するので、新たなストレージデバイスの追加に伴う設定変更作業が不要となり、構成変更の工数を低減することができる。とくに、新たに追加されるストレージデバイスにはＤＮＳサーバ４２のＩＰアドレスとインタフェースプロセッサ２１〜２５が共有する単一のホスト名のみを記憶させておけばよく、インタフェースプロセッサ２１〜２５それぞれの異なるＩＰアドレスを記憶させる必要がない。
【００６１】
また、本発明に係る分散ストレージシステム１００によれば、従来の分散ストレージシステムと比較して、以下のような効果を得ることができる。
サブファイルは、ユーザ端末からは独立した分散ストレージシステム１００の内部に格納されるので、ユーザの悪意または誤操作による影響を抑えることができる。また、格納できるファイルの容量を大きくするにはストレージデバイスを追加すればよく、多数のユーザ端末を準備する必要がない。また、ストレージデバイス間で管理情報のような情報の伝播が収束するのを待つ必要がない。さらに、インタフェースプロセッサ２１〜２５は、ファイル存在確認要求（図８のステップＳ３０２ｂ）によってどのストレージデバイスが該当するサブファイルを格納しているかを知ることができるので、ファイル（およびサブファイル）とストレージデバイスとの対応関係を管理する必要がない。
【００６２】
また、ユーザ端末１０およびインターネット５１は分散ストレージシステム１００の外部にあるので、分散ストレージシステム１００内部での情報の送受信によるネットワーク負荷の増大の影響を受けない。さらに、ユーザ端末１０はストレージデバイス３１〜３９とは異なるハードウエアで構成されるので、ファイルやサブファイルの送受信がユーザ端末１０のハードウエアリソースを奪ってしまうことがない。
また、インタフェースプロセッサ２１〜２５がトークンによる排他制御処理を行うので、同一のファイルについて二者以上が同時に書き込み処理を要求した場合でも、書き込まれるファイルの整合性を保つことができる。
【００６３】
上述の実施の形態１では、ＬＡＮ５２にはＤＮＳサーバ４２が接続され、ストレージデバイス３１〜３９はＤＮＳサーバ４２への照会によってインタフェースプロセッサ２１〜２９のＩＰアドレスを取得している。変形例として、ＤＮＳサーバ４２を設けず、各ストレージデバイス３１〜３９が全インタフェースプロセッサ２１〜２５のＩＰアドレスを記憶していてもよい。また、インタフェースプロセッサ２１〜２５のＩＰアドレスの範囲、たとえば「１９２．１６８．１０．２１〜１９２．１６８．１０．２５」を表す情報を記憶していてもよい。この場合、各ストレージデバイス３１〜３９は、図５のステップＳ１０５ａにおけるインタフェースプロセッサへの要求の際、インタフェースプロセッサ２１〜２５を巡回的に選択してもよい。このような構成であっても、ストレージデバイス３１〜３９それぞれのＩＰアドレスは、それぞれ複数のインタフェースプロセッサのノードリストに含まれるので、実施の形態１と同様に信頼性および連続可動性を向上させることができる。
【図面の簡単な説明】
【００６４】
【図１】本発明に係る分散ストレージシステムを含む構成を示す図である。
【図２】図１のインタフェースプロセッサおよびストレージデバイスの論理的な接続状態を説明するグラフである。
【図３】図２のグラフを表すノードリストの例である。
【図４】インタフェースプロセッサがデータを消失訂正符号化する手順を示す図である。
【図５】ストレージデバイスおよびインタフェースプロセッサが、それぞれのノードリストを更新する際の処理の流れを示すフローチャートである。
【図６】図５のステップＳ１０３ａおよびＳ１０３ｂにおける更新処理を説明する図である。
【図７】図１の分散ストレージシステムが、ユーザ端末からファイルを受信して格納する際の動作を含む、処理の流れを示すフローチャートである。
【図８】図１の分散ストレージシステムが、ユーザ端末からファイル読込要求を受信してファイルを送信する際の動作を含む、処理の流れを示すフローチャートである。
【図９】図１の分散ストレージシステムが、ユーザ端末からファイルを受信して格納する際に行う、排他制御処理の流れを示すフローチャートである。
【図１０】従来の一括管理型ネットワークファイルシステムの概略図である。
【図１１】従来の分散管理型ネットワークファイルシステムの概略図である。
【符号の説明】
【００６５】
２１〜２５  インタフェースプロセッサ、３１〜３９  ストレージデバイス、４２  ＤＮＳサーバ、５２  ＬＡＮ（通信ネットワーク）、１００  分散ストレージシステム。
【図１】
2008250767.tif 000003
【図２】
2008250767.tif 000004
【図３】
2008250767.tif 000005
【図４】
2008250767.tif 000006
【図５】
2008250767.tif 000007
【図６】
2008250767.tif 000008
【図７】
2008250767.tif 000009
【図８】
2008250767.tif 000010
【図９】
2008250767.tif 000011
【図１０】
2008250767.tif 000012
【図１１】
2008250767.tif 000013