(57)【要約】【課題】分割されたサブデータを各ノードから読み出してオリジナルデータを復元できる確率を従来よりも改善する。【解決手段】本発明は、例えば、ピア・ツー・ピア型のネットワークに接続された複数のノードにデータの分散格納または分散処理を実行させる分散システムにおいて実現される。本システムには、例えば、管理手段、抽出手段および依頼手段などを含む。管理手段は、複数のノードのうち、１以上のノードのオンライン率または通電率を管理する。また、抽出手段は、各ノードのオンライン率または通電率を比較することで、オンライン率または通電率が相対的に高い特定数のノードを抽出する。さらに、依頼手段は、抽出されたノードへデータの分散格納または分散処理を依頼する。【選択図】図１
2007304665.tif 000002
【特許請求の範囲】
【請求項１】
ピア・ツー・ピア型のネットワークに接続された複数の装置にデータの分散格納または分散処理を実行させる分散システムであって、
複数の前記装置のうち、１以上の装置のオンライン率または通電率を管理する管理手段と、
各装置のオンライン率または通電率を比較することで、該オンライン率または該通電率が相対的に高い特定数の装置を抽出する抽出手段と、
抽出された前記装置へデータの分散格納または分散処理を依頼する依頼手段と
を含むことを特徴とする分散システム。
【請求項２】
前記装置は、
前記ネットワークに対してオンライン状態になったか否かを判定する手段と、
前記ネットワークに対してオンライン状態になると、前記オンライン率、前記通電率または該オンライン率もしくは該通電率を算出するために必要となる情報の少なくとも１つと、装置を識別するための識別情報とを前記管理手段へ送信する送信手段と
を含むことを特徴とする請求項１に記載の分散システム。
【請求項３】
前記装置は、
前記管理手段から問い合せを受信する受信手段と、
前記問い合せに応じて、前記オンライン率、前記通電率または該オンライン率もしくは該通電率を算出するために必要となる情報の少なくとも１つと、装置を識別するための識別情報とを前記管理手段へ送信する送信手段と
を含むことを特徴とする請求項１に記載の分散システム。
【請求項４】
前記装置は、
前記オンライン率を算出するために必要となる情報の１つとして、該装置の総使用時間を計時する第１の計時手段と、
前記オンライン率を算出するために必要となる情報の１つとして、該装置の総オンライン時間を計時する第２の計時手段と
を含むことを特徴とする請求項３に記載の分散システム。
【請求項５】
前記装置は、
前記通電率を算出するために必要となる情報の１つとして、該装置の総使用時間を計時する第１の計時手段と、
前記通電率を算出するために必要となる情報の１つとして、該装置の総通電時間を計時する第３の計時手段と
を含むことを特徴とする請求項３に記載の分散システム。
【請求項６】
前記抽出手段は、
第１の数よりも少ない第２の数のサブデータが揃うとオリジナルのデータを復元できる分割手法を用いて、格納対象となるオリジナルデータを該第１の数のサブデータに分割する分割手段と、
複数の前記装置を、オンライン率または通電率の高い順にソートするソート手段と、
オンライン率または通電率が相対的に高い順番にしたがって、前記第１の数の装置を選択する選択手段と
を含むことを特徴とする請求項１ないし５のいずれかに記載の分散システム。
【請求項７】
ピア・ツー・ピア型のネットワークに接続される装置であって、
複数の前記装置のうち、１以上の装置のオンライン率または通電率を管理する管理手段と、
各装置のオンライン率または通電率を比較することで、相対的にオンライン率または通電率の高い特定数の装置を抽出する抽出手段と、
抽出された前記装置へデータの分散格納または分散処理を依頼する依頼手段と
を含むことを特徴とする装置。
【請求項８】
ピア・ツー・ピア型のネットワークに接続される装置であって、
前記ネットワークに対してオンライン状態になったか否かを判定する手段と、
前記ネットワークに対してオンライン状態になると、前記オンライン率、前記通電率または該オンライン率もしくは該通電率を算出するために必要となる情報の少なくとも１つと、装置を識別するための識別情報とを管理手段へ送信する送信手段と
を含むことを特徴とする装置。
【請求項９】
ピア・ツー・ピア型のネットワークに接続される装置であって、
複数の装置のうち、１以上の装置のオンライン率または通電率を管理する管理手段からの問い合せを受信する受信手段と、
前記問い合せに応じて、前記オンライン率、前記通電率または該オンライン率もしくは該通電率を算出するために必要となる情報の少なくとも１つと、装置を識別するための識別情報とを前記管理手段へ送信する送信手段と
を含むことを特徴とする装置。
【請求項１０】
ピア・ツー・ピア型のネットワークに接続された複数の装置にデータの分散格納または分散処理を実行させる方法であって、
複数の前記装置のうち、１以上の装置のオンライン率または通電率を管理する管理工程と、
各装置のオンライン率または通電率を比較することで、該オンライン率または該通電率が相対的に高い特定数の装置を抽出する抽出工程と、
抽出された前記装置へデータの分散格納または分散処理を依頼する依頼工程と
を含むことを特徴とする方法。
【請求項１１】
ピア・ツー・ピア型のネットワークに接続された複数の装置にデータの分散格納または分散処理を実行させるコンピュータプログラムであって、
複数の前記装置のうち、１以上の装置のオンライン率または通電率を管理する管理手段と、
各装置のオンライン率または通電率を比較することで、該オンライン率または該通電率が相対的に高い特定数の装置を抽出する抽出手段と、
抽出された前記装置へデータの分散格納または分散処理を依頼する依頼手段と
してコンピュータを機能させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ピア・ツー・ピア（Ｐ２Ｐ）型のネットワークにおいて、データの分散格納や分散処理に関する。
【背景技術】
【０００２】
任意のデータを複数の装置に分散して記憶させたり、任意の処理を複数の装置に分散して実行させたりすることは、処理効率の向上やリソースの有効活用の観点から望ましい。
【０００３】
特許文献１によれば、プリンタ装置などの周辺機器には、印刷を実行せずに待機している待機時間がかなり存在することが着目されている。具体的には、複数の周辺装置のうち電源が入れられているにもかかわらず、その時点で稼働率の低い周辺装置へ特定の処理を実行させる方法が開示されている。
【０００４】
特許文献２によれば、コンテンツマネージャというサーバを介して複数のユーザ端末がコンテンツを共有する方法が記載されている。具体的には、特定のコンテンツを保存しているユーザ端末のオンライ率（ネットワークへ接続する度合い）が低いときは、当該特定のコンテンツをコンテンツマネージャのキャッシュにも記憶する。これにより、所望のユーザ端末がネットワークに接続されていない場合、他のユーザ端末は、キャッシュから特定のコンテンツを取得できる。
【特許文献１】特開平０９−２５９０６５号公報、段落０００３、００１５
【特許文献２】特開２００３−２９６２７４号公報、段落００３６、００３７
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、Ｐ２Ｐネットワークに接続されているノード（コンピュータやハブ、ルータなど一台一台の装置）は、そのユーザの都合に応じて自由に電源がＯＦＦにされたり、ネットワークから切断されたりすることが多々ある。そのため、このような複数の装置にデータを分散して記憶しておく場合、そのうちのいくつかがオフラインになると、所望のデータを取得できなくなってしまう。
【０００６】
特許文献１や特許文献２によれば、そもそも１つのデータを複数の周辺機器に分散して格納することが考慮されていないので、この課題を解決できない。また、特許文献２によれば、大容量のキャッシュを備えたサーバが必要となるため好ましくない。
【０００７】
また、Ｐ２Ｐネットワークに接続されている装置に任意の処理を分散して実行させる場合にも、同様の問題が生じる。すなわち、分散処理を依頼された各装置は、各ユーザの都合で自由に電源がＯＦＦにされたり、ネットワークから切断されたりする。そのため、処理を依頼する時点では稼働率が低いために分散処理を依頼できたとしても、依頼された装置が分散処理中に電源がＯＦＦにされてしまえば、分散処理が強制的に終了されてしまう。
【０００８】
一方で、Ｐ２Ｐネットワークに接続されている装置のオンライン率や通電率（例：１日のうちで電源が投入されている時間）は、装置ごとに異なりうる。そのため、オンライン率や通電率が低い装置を避け、これらの率の高い装置にデータを分散格納したり、分散処理させたりすれば、上記の問題を緩和できると考えられる。
【０００９】
そこで、本発明は、このような課題および他の課題のうち、少なくとも１つを解決することを目的とする。なお、他の課題については明細書の全体を通して理解できよう。
【課題を解決するための手段】
【００１０】
本発明は、例えば、ピア・ツー・ピア型のネットワークに接続された複数の装置にデータの分散格納または分散処理を実行させる分散システムにおいて実現される。本システムには、例えば、管理手段、抽出手段および依頼手段などを含む。管理手段は、複数の装置のうち、１以上の装置のオンライン率または通電率を管理する。また、抽出手段は、各装置のオンライン率または通電率を比較することで、オンライン率または通電率が相対的に高い特定数の装置を抽出する。さらに、依頼手段は、抽出された装置へデータの分散格納または分散処理を依頼する。
【発明の効果】
【００１１】
本発明によれば、オンライン率または通電率が相対的に低い装置を分散可能や分散処理の対象から除外することができる。これにより、分散処理を最後まで実行できる確率が従来よりも改善される。また、分割されたサブデータを各装置から読み出してオリジナルデータを復元できる確率が従来よりも改善される。
【発明を実施するための最良の形態】
【００１２】
以下に本発明の一実施形態を示す。もちろん以下で説明される個別の実施形態は、本発明の上位概念、中位概念および下位概念など種々の概念を理解するために役立つであろう。また、本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の個別の実施形態によって限定されるわけではない。
【００１３】
＜実施形態１＞
図１は、実施形態に係る分散システムを構成するノード（コンピュータやハブ、ルータなど一台一台の装置）の構成を示す図である。図１には、便宜上、６つのノード１０１〜１０６がネットワーク１５０に接続されているが、本発明は、ノードの数が２以上であれば適用できる。ネットワーク１５０は、ＬＡＮ、ＷＡＮ、ＭＡＮまたはインターネットのいずれかであってもよいし、これらの組み合わせであってもよい。ただし、本実施形態に係るＰ２Ｐネットワークは、下位層のネットワーク上で実現される上位層のネットワーク（オーバーレイネットワーク）として実現される。ノード１０１〜１０６は、それぞれ一般的なＰＣであってもよいし、他の形態の情報処理装置であってもよい。なお、一般的に、Ｐ２Ｐネットワークにおいて、各ノードは、対等な関係にある。
【００１４】
図１によれば、ノード１０４がデータ送信装置および処理依頼装置として機能している。ノード１０４は、複数のノードのうち、１以上のノードのオンライン率または通電率を管理する。ノード１０４は、オンライン率または通電率が相対的に高い特定数のノードを抽出して、抽出されたノードへデータの分散格納または分散処理を依頼する。
【００１５】
ここで、オンライン率とは、ノードの総使用時間に対して、ネットワーク１５０に接続可能な時間が占める割合のことである。また、通電率は、単位期間（例：１日、１週間、１ヶ月、１年など）において電源がＯＮにされていた時間が占める割合のことである。
【００１６】
図１によれば、オリジナルデータを３つのサブデータに分割して３つのノードの記憶させる例が示されている。なお、図１によれば、３つのノードに分散処理を実行させる例が示されていると理解してもよい。
【００１７】
まず、ノード１０４は、分散格納または分散処理に必要なノードの数が３であることを認識する。次に、ノード１０４は、３つのノードを抽出する。図１によれば、ノード１０１、１０３および１０６のオンライン率や通電率は、ノード１０２および１０５のそれよりも高い。よって、ノード１０４は、３つのノードとして、ノード１０１、１０３および１０６を選択して、分散格納または分散処理を依頼する。
【００１８】
この際に、ノード１０４は、オリジナルのデータの識別情報（例：ファイル名）と、サブデータを格納しているノードの識別情報（例：ノードＩＤ）とを対応付けテーブルを作成して記憶しておいてもよい。ノード１０４または他のノードは、このテーブルを参照することで、所望のデータを復元するために必要となるサブデータを記憶しているノードを特定し、特定されたノードにサブデータを要求できるようになる。
【００１９】
図２は、実施形態に係るノードの構成例を示すブロック図である。ここでは、便宜上、各ノードのハードウエア構成は同一であるとして説明するが、本発明に影響がない範囲で異なるハードウエア構成が採用されてもよい。
【００２０】
ＣＰＵ２０１は、コンピュータプログラムに基づいて、コンピュータの各ユニットを統括的に制御する制御ユニットである。ＲＯＭ２０２は、ファームウエアなどの制御プログラムを記憶する不揮発性の記憶ユニットである。ＲＡＭ２０３は、ワークエリアとして機能する揮発性の記憶ユニットである。ハードディスクドライブ（ＨＤＤ）２０４は、大容量の記憶ユニットである。表示装置２０５は、ユーザに対して各種情報を表示するための表示ユニットである。操作部２０６は、ポインティングデバイスやキーボードなどの入力ユニットである。通信インターフェース２０７は、ネットワーク通信カードなどの通信ユニットである。
【００２１】
図３は、実施形態に係るノードにおいて実現されるデータ格納や分散処理の依頼機能の一例を示すブロック図である。ここでは、主に、データの格納を依頼する機能について説明する。各ブロックは、ソフトウエア、ハードウエアまたはこれらの組み合わせによって実現される。
【００２２】
ノード管理部３００は、複数あるノードのうち、１以上のノードのオンライン率または通電率を管理するモジュールである。問い合せ部３０１は、Ｐ２Ｐネットワークに参加している各ノードに問い合せを送信するモジュールである。この問い合せは、オンライン率、通電率、または、これらを算出するために必要な情報を問い合わせるために送信される。これらの情報を総称してオンライン情報と呼ぶことにする。なお、問い合せ部３０１は、サブデータを送信する直前にＰ２Ｐネットワークに接続している他のノードに対してオンライン情報を問い合わせることが望ましい。例えば、ノードが、一般消費者のユーザ端末であれば、時々刻々とオンライン状態とオフライン状態とが切り替わる可能性があるからである。
【００２３】
受信部３０２は、問い合わせに対する応答として、または自動的に各ノードから送信されてくるオンライン情報を受信するモジュールである。受信されたオンライン情報には、各ノードを識別するための識別情報が含まれている。記録部３０３は、受信されたオンライン情報をノード管理テーブル３３０に登録する。なお、オンライン情報に、オンライン率や通電率を算出するために必要な情報が含まれていた場合、記録部３０３は、この情報からオンライン率や通電率を算出する算出部として機能してもよい。あるいは、記録部３０６は、オンライン率や通電率を算出するために必要な情報をそのままノード管理テーブル３３０に登録してもよい。
【００２４】
ノード抽出部３１０は、各ノードのオンライン率または通電率を比較することで、オンライン率または通電率が相対的に高い特定数のノードを抽出するモジュールである。例えば、ノード抽出部３１０は、第１段階で、データを格納するために必要となるノードの数（必要ノード数）よりも十分に多い数のノードを抽出する。そして、ノード抽出部３１０は、第２段階で、そのうちさらに好適なノードを必要ノード数だけ抽出してもよい。
【００２５】
ソート部３１１は、ノード管理テーブル３３０に登録されているノードを、オンライン率または通電率が相対的に高い順にソートする。なお、低い順にソートが実行されてもよい。選択部３１２は、オンライン率または通電率が相対的に高い順から、分散格納または分散処理に必要となる数のノードを選択する。なお、選択部３１２は、オンライン率または通電率が相対的に低い順から、不適当なノードを除外する処理を実行してもよい。いずれの場合も抽出結果は同じだからである。
【００２６】
選択部３１２は、ノードを選択する際に、各ノードの現在の空き容量が、サブデータを格納するのに十分な容量であるかどうかを選択の基準とすることが望ましい。選択されたノードに、サブデータを格納できない場合、ノードの再選択が必要となってしまうからである。なお、選択部３１２は、選択時点で、オンライン率または通電率が相対的に高い順から、各ノードに現在の空き容量を問い合わせてもよい。また、各ノードから取得したオンライン情報に空き容量の情報が含まれている場合、この空き容量の情報を選択部３１２が参照してもよい。
【００２７】
依頼部３２０は、抽出されたノードへデータの分散格納または分散処理を依頼するモジュールである。分割部３２１は、第１の数よりも少ない第２の数のサブデータが揃うとオリジナルのデータを復元できる分割手法を用いて、格納対象となるオリジナルデータを第１の数のサブデータに分割する。
【００２８】
オリジナルデータを保全するためデータ分割手法は、どのようなものが採用されてもよい。例えば、（ｋ、Ｌ、ｎ）閾値分散法によれば、オリジナルデータ（例：１８ＭＢ）は、１つあたり２ＭＢとなる１８個のサブデータにほぼ均等に分割される。この場合、１８個のサブデータのうち、任意の１１個のサブデータを取得できれば、オリジナルデータを復元できる。
【００２９】
また、サブデータをどのように格納対象ノードに分散するかについては、オリジナルデータのデータＩＤからハッシュ値を算出し、そのハッシュ値をノードＩＤとする方法がある。この方法では、さらにそのノードＩＤのハッシュ値から次のノードＩＤを算出することを繰り返す。この方法の一例である分散ハッシュ法（ＤＨＴ：ｄｉｓｔｒｉｂｕｔｅｄ ｈａｓｈ ｔａｂｌｅ）によれば、このようなノードＩＤをもとに、そのノードＩＤを有する装置を高速に見つけだす（ルックアップする）ことができる。
【００３０】
依頼管理部３２２は、操作部２０６から、依頼要求やオリジナルデータの指定を受け付ける。依頼管理部３２２は、オリジナルデータを分割部３２１に渡し、その応答として、分割数を取得する。通常、分割数が、分散対象となるノードの数となる。依頼管理部３２２は、分割数（必要なノード数）として、ノード抽出部３１０に渡す。依頼送信部３２４は、ノード抽出部３１１から通知されたノードの情報にしたがって、抽出されたノードにサブデータを送信する。この際にまたは前もって、サブデータの格納依頼も送信されることになる。なお、サブデータとノードとの対応関係は、データ管理テーブル３４０に保持されてもよい。
【００３１】
図４は、実施形態に係るノードにおいて実現されるデータ格納機能や分散処理機能の一例を示すブロック図である。ここでは、データの格納を依頼されるノードの機能を説明する。なお、各ブロックは、ソフトウエア、ハードウエアまたはこれらの組み合わせによって実現される。
【００３２】
受信部４０１は、オンライン情報の問い合せなどを受信するモジュールである。送信部４０２は、他のノードからの問い合せを受信すると、オンライン情報を送信するモジュールである。オンライン判定部４０３は、ネットワークに対してオンライン状態になったか否かを判定するモジュールである。オンライン状態になると、オンライン判定部４０３は、オンライン情報を取得して他のノードに送信するよう送信部４０２へ指示する。このように、オンライン情報を通知するためのトリガーは２つあるが、少なくとも１つを備えていればよい。なお、本発明に係るオンライン情報の送信方法は、この２例にのみ限定されることはない。結果として、他のノードがオンライン情報を取得できるのであれば、どのような方法が採用されてもよい。
【００３３】
サブデータ格納部４０４は、受信部４０１を通じて受け取ったサブデータをＨＤＤ２０４などに記憶するモジュールである。また、サブデータ格納部４０４は、他のノードからの読み出し要求に応じてサブデータをＨＤＤ２０４から読み出して、送信部４０２を通じて当該サブデータを送信する。
【００３４】
分散処理部４０５は、受信部４０１を通じて他のノードからの分散処理の依頼を受信すると、割り当てられた分散処理を実行し、実行結果を、送信部４０２を通じて送信するモジュールである。なお、分散処理部４０５とサブデータ格納部４０４は、必ずしも両方が必要となるわけではない。ノードの用途に応じて、少なくとも一方のモジュールが含まれていればよい。
【００３５】
計時部４１０は、オンライン情報のうち、時間に関する情報を生成するモジュールである。総使用時間計時部４１１は、ノードの総使用時間を計時するタイマーモジュールである。総使用時間は、例えば、所定時期（例：工場出荷時またはタイマーのリセット時など）から現在時刻までのトータルの時間である。総オンライン時間計時部４１２は、ノードの総オンライン時間を計時するタイマーモジュールである。総オンライン時間は、例えば、所定時期（例：工場出荷時またはタイマーのリセット時など）から現在時刻までのうち、実際にノードがオンライン状態になっていたトータルの時間である。総通電時間計時部４１３は、ノードの総通電時間を計時するタイマーモジュールである。総通電時間は、例えば、所定時期（例：工場出荷時またはタイマーのリセット時など）から現在時刻までで、実際にノードの電源がＯＮになっていたトータルの時間である。
【００３６】
図５は、実施形態に係るノードにおいて実現されるデータ取得機能の一例を示すブロック図である。なお、各ブロックは、ソフトウエア、ハードウエアまたはこれらの組み合わせによって実現される。
【００３７】
ノード特定部５０１は、所望のオリジナルデータ（サブデータ）の取得要求が操作部２０６から入力されると、データ管理テーブル３０４を参照して、所望のデータを格納しているノードを特定するモジュールである。読み出し要求送信部５０２は、特定されたノードに対してサブデータを送信することを要求するための情報を送信するモジュールである。サブデータ受信部５０３は、特定されたノードから送信されてきたサブデータを受信するモジュールである。サブデータ復元部５０４は、受信されたサブデータからオリジナルデータを復元するモジュールである。
【００３８】
図６は、実施形態に係るオンライン情報の記録方法の一例を示すフローチャートである。以下では、上述した各モジュールをＣＰＵ２０１が実現するものとして説明する。
【００３９】
ステップＳ６０１において、ＣＰＵ２０１は、通信ＩＦ２０７を通じて、各ノードからオンライン情報６１０を受信する。なお、ＣＰＵ２０１は、通信ＩＦ２０７を通じて、オンライン情報の問い合せを各ノードに予め送信してもよい。あるいは、各ノードが、オンラインになったことに応じて、オンライン情報を送信してきてもよい。
【００４０】
ステップＳ６０２において、ＣＰＵ２０１は、受信したオンライン情報６１０をオンライン情報６２０としてＨＤＤ２０４に記憶する。受信したオンライン情報６１０と、記憶されるオンライン情報６２０とは同一であってもよいし、一部加工されたものであってもよい。上述したように、受信したオンライン情報６１０には、総使用時間や総オンライン時間が含まれていた場合、ＣＰＵ２０１は、オンライン率を算出して、算出したオンライン率をオンライン情報６２０としてＨＤＤ２０４に記憶する。例えば、オンライン率と、対応するノードＩＤとがノード管理テーブル３３０に記憶されることになる。なお、総使用時間や総オンライン時間がそのままノード管理テーブル３３０に記憶されてもよい。
【００４１】
図７は、実施形態に係るノードの抽出方法の一例を示すフローチャートである。以下では、上述した各モジュールをＣＰＵ２０１が実現するものとして説明する。
【００４２】
ステップＳ７０１において、ＣＰＵ２０１は、各ノードのオンライン率を参照し、オンライン率が高いものから各ノードが並ぶようソート処理を実行する。なお、ノード管理テーブル３３０に登録されているオンライン情報６２０が総使用時間と総オンライン時間であれば、この時点で、ＣＰＵ２０１は、オンライン率を算出する。（オンライン率＝総オンライン時間÷総使用時間）。なお、このようにソートされたオンライン情報と対応するノードＩＤは、ソート済みオンライン情報７１０として、ＲＡＭ２０３に書き出される。
【００４３】
ステップＳ７０２において、ＣＰＵ２０１は、ソート済みオンライン情報７１０において、ソートされた順番にしたがって、ノードＩＤを選択する。ステップＳ７０３において、ＣＰＵ２０１は、選択されたノードＩＤをリスト７２０に記録する。なお、この際に、ＣＰＵ２０１は、選択されたノードＩＤに対応するノードが、サブデータを格納するために十分な空き容量を有しているか否かを判定してもよい。もし、当該ノードが十分な空き容量を有していなければ、ＣＰＵ２０１は、当該ノードのノードＩＤをリスト７２０には記録しない。すなわち、当該ノードが除外されることになる。
【００４４】
ステップＳ７０４において、記録されたノードの数が、オリジナルデータを分散格納するために必要となるノード数に達したか否かを判定する。達してしなければ、ステップＳ７０２に戻る。達していれば、本処理を終了する。
【００４５】
図８は、実施形態に係るサブデータの送信方法の一例を示すフローチャートである。以下では、上述した各モジュールをＣＰＵ２０１が実現するものとして説明する。
【００４６】
ステップＳ８０１において、ＣＰＵ２０１は、オリジナルデータ８１０をＨＤＤ２０４から読み出して、複数のサブデータ８２０に分割する。ステップＳ８０２において、ＣＰＵ２０１は、リスト７２０に登録されているノードＩＤを１つ読み出すとともに、サブデータ８２０も１つ読み出し、ノードＩＤに対応するノードへサブデータを送信する。ステップＳ８０３において、ＣＰＵ２０１は、選択された全てのノードに対して、対応するサブデータ８２０を送信することが完了したか否かを判定する。完了していなければ、次のノードに次のサブデータを送信するために、ステップＳ８０１に戻る。完了していれば、本処理を終了する。
【００４７】
図９は、実施形態にか係るオンライン情報の取得処理および送信処理の一例を示すフローチャートである。本処理は、例えば、オンライン状態となったことをＣＰＵ２０１が認識したとき、あるいは、他のノードからオンライン情報の問い合せを受信したときに実行される。以下では、上述した各モジュールをＣＰＵ２０１が実現するものとして説明する。
【００４８】
ステップＳ９０１において、ＣＰＵ２０１は、ＲＯＭ２０２に記憶されている初期時刻と、タイマーから取得した現在時刻との差を算出する。この差が、総使用時間となる。初期時刻の設定方法は、種々考えられる。例えば、工場出荷時に、そのときの時刻をＲＯＭ２０２に書き込んだり、ユーザの下で最初に電源が投入された時刻をＲＯＭ２０２またはＨＤＤ２０４に書き込んだりする方法がある。
【００４９】
ステップＳ９０２において、ＣＰＵ２０１は、ＲＯＭ２０２またはＨＤＤ２０４から総オンライン時間を読み出す。なお、総オンライン時間は、ノードがオンライン状態になった時刻と、オフライン状態になった時刻との差の累積時間となる。すなわち、ＣＰＵ２０１は、オンライン状態になったときにタイマーの計時を開始し、オフライン状態になるとタイマーの計時を停止させる。そして、ＣＰＵ２０１は、タイマーにより計時された時間を、ＲＯＭ２０２またはＨＤＤ２０４に記憶されているこれまでの総オンライン時間に加算する。
【００５０】
ステップＳ９０３において、ＣＰＵ２０１は、総使用時間９１０、総オンライン時間９２０およびノードＩＤ９３０からオンライン情報を作成し、他のノードに送信する。ノードＩＤは、ノード固有の識別情報であり、ＩＰアドレスやＭＡＣアドレスおよびその他の固有情報である。
【００５１】
図１０は、実施形態に係るサブデータの格納方法の一例を示すフローチャートである。本フローチャートは、データ格納の依頼を受信すると開始されるものとする。以下では、上述した各モジュールをＣＰＵ２０１が実現するものとして説明する。
【００５２】
ステップＳ１００１において、ＣＰＵ２０１は、通信ＩＦ２０７を通じて格納対象のサブデータ１０１０を受信する。ステップＳ１００２において、ＣＰＵ２０１は、受信したサブデータ１０１０を格納データ１０２０としてＨＤＤ２０４に格納する。ここで、受信したサブデータ１０１０と格納データ１０２０は、同一であってもよいし、一部内容を追加または変更されてもよい。なお、サブデータが要求されたときは、ＣＰＵ２０１が、格納データ１０２０を元のサブデータ１０１０に復元してから送信することはいうまでもない。
【００５３】
図１１は、実施形態に係る空き容量情報の取得処理および送信処理の一例を示すフローチャートである。本処理は、他のノードから空き容量の確認依頼１０１０を受信したときに実行されるものとする。なお、本処理は、オンライン情報の送信処理（図９）と統合されてもよい。
【００５４】
ステップＳ１１０１において、ＣＰＵ２０１は、他のノードから空き容量の確認依頼１１１０を受信する。ステップＳ１１０２において、ＣＰＵ２０１は、ＨＤＤ２０４の格納領域における空き容量データ１１２０を取得すべく、ファイルシステムに空き容量を計算させる。ステップＳ１１０３において、ＣＰＵ２０１は、空き容量のデータと自己のノードＩＤとを含む空き容量データ１１３０を作成して、確認依頼を送信してきた他のノードに送信する。
【００５５】
本実施形態によれば、オンライン率または通電率が相対的に低いノードを分散可能や分散処理の対象から除外することができる。すなわち、オンライン率または通電率が相対的に高いノードへ分散可能や分散処理を依頼することができる。これにより、分散処理を最後まで実行できる確率が従来よりも改善される。あるいは、分割されたサブデータを各ノードから読み出してオリジナルデータを復元できる確率が従来よりも改善される。
【００５６】
また、ネットワークに対してオンライン状態になったことをトリガーとして、オンライン情報を送信することで、データの格納を依頼しようとするノードは、オンラインとなっているノードを簡単に識別できる。
【００５７】
あるいは、データの格納を依頼しようとするノードが、各ノードにオンライン情報を問い合わせることで、オンライン情報を取得してもよい。この場合は、問い合せを受信したノードだけがオンライン情報を送信してくることになるので、オンライン情報のリアルタイム性や信頼性が増すことになろう。
【００５８】
また、オンライン率を算出するために必要となる情報の１つである総使用時間や総オンライン時間を計時する計時部を設けることで、各ノードのオンライン率を正確に認識できるようになる。また、通電率を算出するために必要となる総使用時間や総通電時間を計時する計時部を設けることで、各ノードの通電率を正確に認識できるようになる。
【００５９】
また、データの分割方法として、オリジナルデータを第１の数のサブデータに分割し、第１の数よりも少ない第２の数のサブデータが揃えるだけでオリジナルのデータを復元できる分割方法を採用してもよい。オンライン率は、確率の一種である。そのため、オリジナルデータを復元する際に、対応する第１の数のノードが全てオンラインとなっているわけではない。よって、分割方法を工夫することで、一部のノードが、運悪く、オフラインであっても、オンラインとなっている残りのノードからサブデータを回収してオリジナルデータを復元できるようになる。
【００６０】
もちろん、複数あるノードのうち、オンライン率または通電率の高い順にソートしてノードを選択すれば、よりオリジナルデータを復元できる確率が高まることはいうまでもない。
【００６１】
なお、分散処理においてもオンライン率を使用して、分散処理を実行するノードを抽出してもよいが、可能であれば、通電率を使用してノードを抽出する方が望ましい。一般に、分散処理については、分散処理の実行中にオフラインとなるよりも、実行中に電源がＯＦＦにされたほうが、よりダメージが大きいからである。すなわち、オフラインとなっても分散処理を継続でき、その後、オンラインに復帰してから処理結果を取得できるからである。しかしながら、電源がＯＦＦにされてしまえば、他のノードに分散処理を実行するよう依頼しなおさせねばならない。さらに、電源がＯＦＦにされたことを検出するモジュールを依頼ノードに実装する必要もある。
【００６２】
そのため、分散処理を依頼するときは、ノード抽出部が、通電率に応じてノードを抽出することが望ましい。
【００６３】
＜実施形態２＞
実施形態１では、分散処理や分散格納を依頼するノードと、それを依頼されるノードとが直接的に情報を送受信する分散システムを説明した。ただし、これらのノード間に他のノードが介在してもよい。そこで、実施形態２では、中継ノードが介在する分散システムについて説明する。
【００６４】
図１２は、実施形態に係る中継ノード１２００と依頼ノード１２１０とにそれぞれ実装されるモジュールの一例を示す図である。なお、既に説明した個所には、同一の参照符号が付されている。
【００６５】
各ノードの送信部４０２は、オンライン状態となるかまたは問い合せを受信すると、オンライン情報を中継ノード１２００のノード管理部３００に送信する。ノード管理部３００は、取得したオンライン情報をノード管理テーブル３３０に登録する。
【００６６】
一方、データの分散格納を希望するノード（依頼ノード）１２１０の依頼部３２０は、データを分散格納することになる複数のノードについての問い合せを中継ノード１２００に送信する。中継ノード１２００のノード抽出部３１０はデータを分散格納するために必要となるノードを上述した抽出方法により抽出する。さらに、ノード抽出部３１０は、抽出されたノードのノードＩＤを依頼ノード１２１０に返信する。依頼ノード１２１０は、受信したノードＩＤに基づいて、対応するノードへサブデータを送信する。
【００６７】
このように、中継ノード１２００を設けることで、ノードを集中管理することが可能となる。この場合、ノード管理テーブル３３０は中継ノード１２００だけが保有すればよいので、ネットワーク全体でみれば、メモリに関するリソースを削減できる利点がある。また、中継ノード１２００以外のノードについては、ノード管理部３００やノード抽出部３１０が不要となるため、構成の簡略化を達成できる。
【００６８】
＜実施形態３＞
図１３は、実施形態に係る中継ノード１２００と依頼ノード１２１０とにそれぞれ実装されるモジュールの一例を示す図である。なお、既に説明した個所には、同一の参照符号が付されている。
【００６９】
実施形態３は、実施形態２をさらに改良したものである。実施形態３では、依頼部３２０の一部（依頼処理部１３３０）の機能をさらに中継ノード１３００に実装している。依頼ノード１３１０には、依頼部３２０のうち、操作部２０６からの依頼要求とオリジナルデータの指定を受け付けるユーザインタフェースと、依頼要求とオリジナルデータの指定を中継ノード１３００の依頼処理部１３３０へ転送する転送機能とが実装される。すなわち、依頼部１３４０には、ユーザインタフェースを実現する機能と転送機能とが実装されている。これによって、サブデータや格納依頼は、中継ノード１３００から各対象ノードへと送信されることになる。
【００７０】
実施形態３によれば、さらに、依頼ノード１３１０の構成を簡易化することが可能となる。なお、実施形態１や２で説明した効果も、実施形態３で奏されることはいうまでもない。
【００７１】
＜実施形態４＞
上述の実施形態では、オフライン率や通電率に基づいてノードを抽出していた。しかしながら、最近のＰＣ等は電源がＯＮにされていても省電力モードに移行している場合がある。一般に、省電力モードでは、ＣＰＵ２０１がデータの格納や分散処理を実行できない。
【００７２】
よって、オフライン率や通電率に代えて、あるいは、オフライン率や通電率とともに省電力モードでの動作率をノード抽出部が考慮してもよい。この場合、ノード抽出部は、省電力モードでの動作率を、省電力モードでの総動作時間を総使用時間で除算することを算出する。そして、ノード抽出部は、省電力モードでの動作率の高い順から、ノードを選択して行く。
【００７３】
このように、省電力モードでの動作率を考慮すれば、分散格納や分散処理を実行できる確率がさらに高まることになろう。
【００７４】
＜他の実施形態＞
本発明は、前述した実施形態の各機能を実現するソフトウェアプログラムを、システム若しくは装置に対して直接または遠隔から供給し、そのシステム等に含まれるコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される。
【００７５】
従って、本発明の機能・処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、上記機能・処理を実現するためのコンピュータプログラム自体も本発明の一つである。
【００７６】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【００７７】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷなどがある。また、記録媒体としては、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などもある。
【００７８】
また、プログラムは、クライアントコンピュータのブラウザを用いてインターネットのホームページからダウンロードしてもよい。すなわち、該ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードしてもよいのである。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明の構成要件となる場合がある。
【００７９】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布してもよい。この場合、所定条件をクリアしたユーザにのみ、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報で暗号化されたプログラムを復号して実行し、プログラムをコンピュータにインストールしてもよい。
【００８０】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現されてもよい。なお、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行ってもよい。もちろん、この場合も、前述した実施形態の機能が実現され得る。
【００８１】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれてもよい。そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行ってもよい。このようにして、前述した実施形態の機能が実現されることもある。
【図面の簡単な説明】
【００８２】
【図１】実施形態に係る分散システムを構成するノードの構成を示す図である。
【図２】実施形態に係るノードの構成例を示すブロック図である。
【図３】実施形態に係るノードにおいて実現されるデータ格納や分散処理の依頼機能の一例を示すブロック図である。
【図４】実施形態に係るノードにおいて実現されるデータ格納機能や分散処理機能の一例を示すブロック図である。
【図５】実施形態に係るノードにおいて実現されるデータ取得機能の一例を示すブロック図である。
【図６】実施形態に係るオンライン情報の記録方法の一例を示すフローチャートである。
【図７】実施形態に係るノードの抽出方法の一例を示すフローチャートである。
【図８】実施形態に係るサブデータの送信方法の一例を示すフローチャートである。
【図９】実施形態にか係るオンライン情報の取得処理および送信処理の一例を示すフローチャートである。
【図１０】実施形態に係るサブデータの格納方法の一例を示すフローチャートである。
【図１１】実施形態に係る空き容量情報の取得処理および送信処理の一例を示すフローチャートである。
【図１２】実施形態に係る中継ノードと依頼ノードとにそれぞれ実装されるモジュールの一例を示す図である。
【図１３】実施形態に係る中継ノードと依頼ノードとにそれぞれ実装されるモジュールの一例を示す図である。
【図１】
2007304665.tif 000003
【図２】
2007304665.tif 000004
【図３】
2007304665.tif 000005
【図４】
2007304665.tif 000006
【図５】
2007304665.tif 000007
【図６】
2007304665.tif 000008
【図７】
2007304665.tif 000009
【図８】
2007304665.tif 000010
【図９】
2007304665.tif 000011
【図１０】
2007304665.tif 000012
【図１１】
2007304665.tif 000013
【図１２】
2007304665.tif 000014
【図１３】
2007304665.tif 000015