(57)【要約】【課題】バックアップデータが取得できない状況の発生を抑制するとともに、バックアップデータを取得するために要する時間を短縮する。【解決手段】クライアントのデータを分割した複数の分割データそれぞれを複数の各サーバに送信し、各サーバからクライアントへのデータ転送速度に応じて、各サーバのそれぞれが保存すべき、分割データのデータ量を決定し、決定されたデータ量のデータを保存するように、各サーバが保存した分割データの再配置先のサーバを、複数のサーバの中から決定し、決定された再配置先のサーバに分割データを送信させる指示を、各サーバに送信する。【選択図】図８
2016126702.tif 000002
【特許請求の範囲】
【請求項１】
クライアントと、該クライアントとアクセス可能な複数のサーバと、を有するデータ分散保存システムにおいて、
前記クライアントは、前記クライアントのデータを分割した複数の分割データそれぞれを、複数の各サーバに分割して送信し、
前記各サーバは、前記送信された分割データを保存し、
前記クライアントは、前記各サーバから前記クライアントへのデータ転送速度に応じて、前記各サーバが保存すべき、分割データのデータ量を決定し、
前記クライアントは、前記決定されたデータ量のデータを各サーバが保存するように、各サーバが保存した分割データの再配置先のサーバを、前記複数のサーバの中から決定し、
前記クライアントは、決定された再配置先のサーバに分割データを送信させる指示を、前記各サーバに送信し、
前記指示を受信した各サーバは、前記決定した再配置先のサーバに分割データを送信し、
前記送信された指示を受信した各サーバは、受信した分割データを保存する、
データ分散保存システム。
【請求項２】
クライアントのデータを分割した複数の分割データそれぞれを、該クライアントとアクセス可能な複数の各サーバに送信し、
前記各サーバから前記クライアントへのデータ転送速度に応じて、前記各サーバが保存すべき、分割データのデータ量を決定し、
前記決定されたデータ量のデータを保存するように、各サーバが保存した分割データの再配置先のサーバを、前記複数のサーバの中から決定し、
前記決定された再配置先のサーバに分割データを送信させる指示を、前記各サーバに送信する、
処理を前記クライアントのコンピュータに実行させるデータ分散保存プログラム。
【請求項３】
請求項１において、
前記再配置先のサーバを決定する処理では、
前記各サーバに保存されるべき分割データのデータ量の比が各データ転送速度の比に一致するように、前記各サーバに保存された分割データを前記複数のサーバに含まれる他のサーバに再配置させる指示を、前記各サーバに送信し、
前記各サーバが、各サーバに保存される分割データの二重化データを前記比で保存するように、二重化データを保存するサーバを決定する、
データ分散保存プログラム。
【請求項４】
請求項１において、
前記再配置先のサーバを決定する処理では、
前記各サーバに保存されるべき分割データのデータ量の比が各データ転送速度の比に一致するように、前記複数のサーバに含まれる正サーバから副サーバに再配置すべき分割データを決定し、
前記正サーバに、前記副サーバに対して、前記再配置すべき分割データの二重化データの送信を指示し、
前記再配置すべき分割データを、前記正サーバから前記副サーバに送信することなく、前記副サーバから前記正サーバに対して送信された二重化データとし、前記副サーバへの送信を指示した二重化データを、前記副サーバに保存された分割データとした場合において、前記各サーバが、各サーバに保存した前記分割データと同じデータ量の二重化データを保存するように、前記再配置すべき分割データ以外の分割データに対応する二重化データを保存するサーバを決定し、
前記二重化データを保存させる処理では、前記再配置すべき分割データ以外の分割データに対応する二重化データを送信させて保存させる、
データ分散保存プログラム。
【請求項５】
プロセッサが、
クライアントのデータを分割した複数の分割データそれぞれを、該クライアントとアクセス可能な複数の各サーバに送信し、
前記各サーバから前記クライアントへのデータ転送速度に応じて、前記各サーバが保存すべき、分割データのデータ量を決定し、
前記決定されたデータ量のデータを保存するように、各サーバが保存した分割データの再配置先のサーバを、前記複数のサーバの中から決定し、
前記決定された再配置先のサーバに分割データを送信させる指示を、前記各サーバに送信する、
データ分散保存方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ分散保存システム、データ分散保存プログラム及びデータ分散保存方法に関する。
【背景技術】
【０００２】
利用者に対してサービスを提供する事業者（以下、サービス事業者とも呼ぶ）は、例えば、サービスの提供を実現するために業務システムを構築する。この業務システムは、例えば、利用者に対するサービスの提供に伴い、各種データ（各利用者を識別するためのデータや、商品の販売状況に関するデータ等）を記憶装置に蓄積する。そして、業務システムは、記憶装置に適宜アクセスし、蓄積したデータを参照しながら利用者に対するサービスの提供を行う。
【０００３】
上記のような業務システムにおいて、サービス事業者は、災害対策等の観点から、サービスを提供するために必要なデータ（記憶装置に蓄積されたデータ）のバックアップデータを保存する。具体的に、サービス事業者は、業務システムが構築されたデータセンターとは異なるデータセンター（例えば、業務システムが構築されたデータセンターから１００（ｋｍ）程度離れた場所にあるデータセンター）に、バックアップデータを保存する。これにより、災害の発生等によって業務システムが記憶装置にアクセスできなくなった場合であっても、業務システムは、バックアップデータにアクセスして利用者に対するサービスを継続することが可能になる。
【０００４】
また、サービス事業者は、例えば、バックアップデータを複数のデータセンターに分散させて保存する。これにより、サービス事業者は、バックアップデータを保存するための管理コストを抑えることが可能になる（例えば、特許文献１から４参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２０１２−５２４９４７号公報
【特許文献２】特開２０１０−９７５３３号公報
【特許文献３】特開２０１２−２３８１３３号公報
【特許文献４】特開平２−１３０６５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
サービス事業者は、災害発生時における迅速な対応を可能にするため、業務システムがバックアップデータを取得するために要する時間を可能な限り短縮させるように、バックアップデータの保存を行う必要がある。そのため、サービス事業者は、例えば、バックアップデータを複数のデータセンターに分散して保存する場合、業務システムを構築したデータセンターとの間の転送性能（例えば、データ転送速度）が高いデータセンターほど、多くのバックアップデータを保存する。
【０００７】
しかしながら、業務システムからバックアップデータを保存するデータセンターに対する転送性能は、バックアップデータを保存するデータセンターから業務システムに対する転送性能と異なる場合がある。そのため、サービス事業者は、業務システムから各データセンターに対する転送性能に応じてバックアップデータの配分を行った場合であっても、業務システムがバックアップデータを取得するために要する時間を短縮できない場合がある。
【０００８】
また、業務システムが各データセンターからバックアップデータを取得する場合に、メンテナンス等によってバックアップデータを業務システムに送信することができないデータセンターが存在する場合がある。そのため、単にバックアップデータを複数のデータセンターに分散させて保存させただけでは、業務システムが必要なバックアップデータの全てを取得することができなくなる可能性は高くなる。
【０００９】
そこで、一つの実施の形態の目的は、バックアップデータが取得できない状況の発生を抑制するとともに、バックアップデータを取得するために要する時間を短縮するデータ分散保存システム、データ分散保存プログラム及びデータ分散保存方法を提供することにある。
【課題を解決するための手段】
【００１０】
実施の形態の一つの側面によれば、クライアントと、該クライアントとアクセス可能な複数のサーバと、を有するデータ分散保存システムにおいて、
前記クライアントは、前記クライアントのデータを分割した複数の分割データそれぞれを、複数の各サーバに分割して送信し、
前記各サーバは、前記送信された分割データを保存し、
前記クライアントは、前記各サーバから前記クライアントへのデータ転送速度に応じて、前記各サーバが保存すべき、分割データのデータ量を決定し、
前記クライアントは、前記決定されたデータ量のデータを各サーバが保存するように、各サーバが保存した分割データの再配置先のサーバを、前記複数のサーバの中から決定し、
前記クライアントは、決定された再配置先のサーバに分割データを送信させる指示を、前記各サーバに送信し、
前記指示を受信した各サーバ装置は、決定した再配置先のサーバに分割データを送信し、
前記送信された指示を受信した各サーバは、受信した分割データを保存する。
【発明の効果】
【００１１】
一つの側面によれば、バックアップデータが取得できない状況の発生を抑制するとともに、バックアップデータを取得するために要する時間を短縮する。
【図面の簡単な説明】
【００１２】
【図１】情報処理システム１０の全体構成を示す図である。
【図２】バックアップデータの保存を説明する図である。
【図３】バックアップデータの保存を説明する図である。
【図４】バックアップデータの保存を説明する図である。
【図５】情報処理システム１０のハードウエア構成を示す図である。
【図６】図５のクライアント装置１の機能ブロック図である。
【図７】図５のサーバ装置２の機能ブロック図である。
【図８】第１の実施の形態におけるデータ分散保存処理の概略を示すシーケンスチャート図である。
【図９】Ｓ１におけるデータの流れを説明する図である。
【図１０】Ｓ４におけるデータの流れを説明する図である。
【図１１】Ｓ４におけるデータの流れを説明する図である。
【図１２】Ｓ４におけるデータの流れを説明する図である。
【図１３】クライアント装置１におけるＳ１の処理の詳細を説明するフローチャートである。
【図１４】サーバ装置２におけるＳ１の処理の詳細を説明するフローチャートである。
【図１５】クライアント装置１におけるＳ２からＳ４の処理の詳細を説明するフローチャートである。
【図１６】Ｓ３６の処理の詳細を説明するフローチャートである。
【図１７】Ｓ３６の処理の詳細を説明するフローチャートである。
【図１８】サーバ装置２におけるＳ４の処理の詳細を説明するフローチャートである。
【図１９】クライアント装置１におけるデータ復元処理を説明するフローチャートである。
【図２０】サーバ装置２におけるデータ復元処理を説明するフローチャートである。
【図２１】保存情報１３１の具体例を説明する図である。
【図２２】保存情報１３１の具体例を説明する図である。
【図２３】初期送信情報１３２の具体例を説明する図である。
【図２４】最終送信情報１３３の具体例を説明する図である。
【図２５】Ｓ４１の処理を実行した後の保存情報１３１の具体例を説明する図である。
【図２６】ブロック送受信情報１３４の具体例を説明する図である。
【図２７】サーバ装置２が作成した副分割データを他のサーバ装置に保存した後の保存情報１３１の具体例を説明する図である。
【図２８】サーバ装置３が作成した副分割データを他のサーバ装置に保存した後の保存情報１３１の具体例を説明する図である。
【図２９】サーバ装置４が作成した副分割データを他のサーバ装置に保存した後の保存情報１３１の具体例を説明する図である。
【図３０】Ｓ５２の処理を行った後の保存情報１３１の具体例を説明する図である。
【図３１】Ｓ５３の処理を行った後の保存情報１３１の具体例を説明する図である。
【図３２】サーバ装置２が作成した副分割データを他のサーバ装置に保存した後の保存情報１３１の具体例を説明する図である。
【図３３】サーバ装置３が作成した副分割データを他のサーバ装置に保存した後の保存情報１３１の具体例を説明する図である。
【図３４】サーバ装置４が作成した副分割データを他のサーバ装置に保存した後の保存情報１３１の具体例を説明する図である。
【図３５】最終送信情報１３３の具体例を説明する図である。
【発明を実施するための形態】
【００１３】
［情報処理システムの構成］
図１は、情報処理システム１０の全体構成を示す図である。図１に示す情報処理システム１０（以下、データ分散保存システム１０とも呼ぶ）は、クライアント装置１（以下、単にクライアント１とも呼ぶ）を有する。また、図１に示す情報処理システム１０は、クライアント装置１とネットワークＮＷを介してアクセス可能なサーバ装置２、３、４（以下、単にサーバ２、３、４とも呼ぶ）とを有する。ネットワークＮＷは、例えば、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）やＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）である。
【００１４】
クライアント装置１は、利用者に提供するサービスを提供するための業務システムが構築された物理マシンまたは仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）である。
【００１５】
サーバ装置２、３、４は、クライアント装置１がサービスを提供するために必要なデータ（各利用者を識別するためのデータや、商品の販売状況に関するデータ等）のバックアップデータを分散して保存する物理マシンまたは仮想マシンである。サービス事業者は、例えば、Ｉａａｓ（Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）等のクラウドサービスを提供している事業者（以下、クラウド事業者とも呼ぶ）が提供しているクラウドサービスを利用するものであってよい。すなわち、サービス事業者は、クラウド事業者が管理するサーバ装置２、３、４に、バックアップデータを保存するものであってよい。
【００１６】
なお、以下、クライアント装置１が３台のサーバ装置（サーバ装置２、３、４）にバックアップデータを保存する場合について説明するが、クライアント装置１は、これ以外の台数のサーバ装置にバックアップデータを保存するものであってもよい。
【００１７】
［バックアップデータの保存］
次に、バックアップデータを保存する際の処理について説明する。図２から図４は、バックアップデータの保存を説明する図である。図２に示す例において、クライアント装置１は、記憶装置１１を有している。記憶装置１１には、バックアップ対象のデータ１１ａ（以下、元データ１１ａとも呼ぶ）が記憶されている。また、図２に示す例において、サーバ装置２、３、４は、それぞれ記憶装置２１、３１、４１を有している。
【００１８】
図２に示すクライアント装置１は、例えば、所定のタイミング（例えば、１日１回）で、記憶装置１１に記憶されている元データ１１ａを所定のブロックサイズ（例えば、６４（ＫＢ））に分割したデータ（以下、分割データとも呼ぶ）をサーバ装置２、３、４に送信する。具体的に、クライアント装置１は、例えば、サーバ装置２、３、４のうち、分割データの送信が可能であるサーバ装置（例えば、分割データの送信を行っていないサーバ装置）を順次検索し、検索したサーバ装置に対して分割データを１ブロックずつ送信する。
【００１９】
そして、図３は、図２に示す状態の後、クライアント装置１から元データ１１ａの分割データが送信された場合を説明する図である。図３に示す例において、記憶装置２１、３１、４１には、クライアント装置１から送信された分割データがバックアップデータ２１ａ、３１ａ、４１ａとしてそれぞれ保存されている。
【００２０】
図３に示す例において、クライアント装置１からサーバ装置２、３、４へのデータ転送速度（以下、保存方向のデータ転送速度とも呼ぶ）は、それぞれ７５（Ｍｂｐｓ（Ｍｅｇａ  Ｂｙｔｅ  Ｐｅｒ  Ｓｅｃｏｎｄ））、４５（Ｍｂｐｓ）、３０（Ｍｂｐｓ）である。ここで、クライアント装置１からのデータ転送速度が速いサーバ装置は、分割データの転送に要する時間が短くなる。そのため、クライアント装置１からのデータ転送速度が速いサーバ装置は、クライアント装置１からのデータ転送速度が遅いサーバ装置と比較して、多くの分割データを受信して保存することが可能になる。その結果、サーバ装置２、３、４が保存する分割データの比は、例えば、クライアント装置１からサーバ装置２、３、４へのそれぞれのデータ転送速度の比に近似する。
【００２１】
したがって、図３に示す例において、クライアント装置１からサーバ装置２、３、４に送信されるデータ量の比は、クライアント装置１からサーバ装置２、３、４へのデータ転送速度の比である７５：４５：３０に近似する。そのため、例えば、クライアント装置１の元データ１１ａから作成された分割データが１０（ブロック）である場合、サーバ装置２、３、４は、それぞれ５（ブロック）、３（ブロック）、２（ブロック）の分割データを受信する。そして、サーバ装置２、３、４は、それぞれ受信した分割データをバックアップデータ２１ａ、３１ａ、４１ａとして保存する。
【００２２】
ここで、サービス事業者は、例えば、将来クライアント装置１による元データ１１ａへのアクセスができなくなった場合に、サービスへの影響を最小限にするために、クライアント装置１が分割データを取得するために要する時間を可能な限り短くする必要がある。
【００２３】
しかしながら、クライアント装置１から各サーバ装置へのデータ転送速度は、各サーバ装置からクライアント装置１へのデータ転送速度（以下、復元方向のデータ転送速度とも呼ぶ）とは異なる場合がある。具体的に、図３で説明した例に対して、図４に示すように、サーバ装置２、３、４からクライアント装置１へのデータ転送速度が、それぞれ４５（Ｍｂｐｓ）、６０（Ｍｂｐｓ）、４５（Ｍｂｐｓ）である場合がこれに該当する。この場合、各サーバ装置に保存する分割データのデータ量の比と、クライアント装置１から各サーバ装置へのデータ転送速度の比とを合わせても、サービス事業者は、元データ１１ａの復元に要する全ての分割データを取得するための時間を最短にすることができない。
【００２４】
また、災害の発生等に伴って、クライアント装置１が分割データを取得する必要が生じる場合に、メンテナンス等によって分割データを送信できないサーバ装置が存在する場合がある。この場合、クライアント装置１は、全ての分割データの取得を行うことができないため、利用者に対するサービスを継続することができないという状況に陥る。
【００２５】
そこで、本実施の形態では、クライアント装置１は、元データ１１ａを分割して各サーバ装置に送信する。そして、クライアント装置１は、各サーバ装置からクライアント装置１への転送速度に応じて、各サーバ装置が保存すべき分割データのデータ量に基づき、送信した分割データの二重化用のデータを保存するサーバ装置を決定する。さらに、各サーバ装置は、決定したサーバ装置に対して、二重化用のデータを送信する。
【００２６】
これにより、クライアント装置１は、各サーバ装置から分割データを取得する際のデータ転送速度に応じて、分割データの配分を決定することが可能になる。そのため、クライアント装置１は、元データ１１ａの復元に要する全ての分割データを取得するための時間を最短にすることが可能になる。また、クライアント装置１は、元データ１１ａを二重化して保存することが可能になる。そのため、クライアント装置１は、分割データを送信することができないサーバ装置が存在する場合であっても、元データ１１ａの復元に要する全ての分割データを取得することが可能になる。
【００２７】
［情報処理システムのハードウエア構成］
次に、情報処理システム１０のハードウエア構成について説明する。図５は、情報処理システム１０のハードウエア構成を示す図である。クライアント装置１は、プロセッサであるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等のメモリ１０２とを有する。また、クライアント装置１は、サーバ装置２、３、４とネットワークＮＷを介してアクセスするための通信装置１０３と、記憶領域を有するストレージ装置１０４とを有する。各部は、バス１０５を介して互いに接続される。ストレージ装置１０４は、例えば、ハードディスクドライブ（ＨＤＤ：Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）や、ソリッドステートドライブ（ＳＤＤ：Ｓｏｌｉｄ  ｓｔａｔｅ  Ｄｒｉｖｅ）等の大容量記憶装置である。
【００２８】
ストレージ装置１０４は、ストレージ装置１０４内のプログラム格納領域（図示しない）に、元データ１１ａを分散して保存する処理（以下、データ分散保存処理とも呼ぶ）を行うためのプログラム（以下、データ分散保存プログラムとも呼ぶ）を記憶する。そして、ＣＰＵ１０１は、データ分散保存プログラムをストレージ装置１０４からメモリ１０２にロードし、データ分散保存プログラムと協働してデータ分散保存処理を行う。また、ストレージ装置１０４は、データ分散保存処理を行う際に用いられる各種情報を記憶する。データ分散保存処理を行う際に用いられる各種情報の具体例については後述する。
【００２９】
なお、ストレージ装置１０４は、例えば、図２で説明した記憶装置１１に対応するものであってよい。すなわち、ストレージ装置１０４は、クライアント装置１が利用者にサービスを提供するためのデータ（元データ１１ａ）を保存するものであってよい。また、以下、クライアント装置１がデータ分散保存処理を行う場合について説明するが、例えば、クライアント装置１とは別の物理マシン（例えば、管理サーバ）がデータ分散保存処理を実行するものであってもよい。
【００３０】
また、サーバ装置２は、プロセッサであるＣＰＵ２０１と、ＲＡＭ等のメモリ２０２とを有する。また、サーバ装置２は、クライアント装置１とネットワークＮＷを介してアクセスするための通信装置２０３と、記憶領域を有するストレージ装置２０４とを有する。各部は、バス２０５を介して互いに接続される。ストレージ装置２０４は、例えば、ＨＤＤやＳＤＤ等の大容量記憶装置である。
【００３１】
ストレージ装置２０４は、ストレージ装置２０４内のプログラム格納領域（図示しない）に、分割データの保存を行うための処理（以下、分割データ保存処理とも呼ぶ）を行うための分割データ保存プログラムを記憶する。そして、ＣＰＵ２０１は、分割データ保存プログラムをストレージ装置２０４からメモリ２０２にロードし、分割データ保存プログラムと協働して分割データ保存処理を行う。
【００３２】
なお、ストレージ装置２０４は、例えば、図３で説明した記憶装置２１に対応するものであってよい。すなわち、ストレージ装置２０４は、クライアント装置１から送信された分割データをバックアップデータ２１ａとして保存するものであってよい。また、サーバ装置３及びサーバ装置４については、サーバ装置２と同じハードウエア構成であるため、説明を省略する。
【００３３】
［情報処理システムの機能］
図６は、図５のクライアント装置１の機能ブロック図である。また、図７は、図５のサーバ装置２の機能ブロック図である。
【００３４】
クライアント装置１のＣＰＵ１０１は、データ分散保存プログラムと協働することにより、分割データ作成部１１１と、分割データ送信部１１２と、保存先管理部１１３と、転送速度計測部１１４と、データ量決定部１１５として動作する。また、クライアント装置１のＣＰＵ１０１は、データ分散保存プログラムと協働することにより、サーバ決定部１１６と、データ送信指示部１１７と、データ復元部１１８と、エージェント管理部１１９として動作する。
【００３５】
また、サーバ装置２のＣＰＵ２０１は、分割データ保存プログラムと協働することにより、分割データ受信部２１１と、分割データ保存部２１２と、データ送信指示受信部２１３と、分割データ送信部２１４として動作する。
【００３６】
［クライアント装置の機能］
初めに、クライアント装置１の機能について説明する。
【００３７】
クライアント装置１の分割データ作成部１１１は、クライアント装置１の元データ１１ａを所定のブロックサイズ（例えば、６４（ＫＢ））に分割し、１つ以上の分割データ（以下、正分割データとも呼ぶ）を作成する。そして、分割データ送信部１１２は、クライアント装置１の分割データ作成部１１１が作成した正分割データのそれぞれを、サーバ装置２、３、４のいずれかに送信する。
【００３８】
クライアント装置１の保存先管理部１１３は、分割データ送信部１１２が正分割データのそれぞれを送信したサーバ装置に関する情報である保存情報の作成及び更新を行う。保存情報の具体例については後述する。
【００３９】
クライアント装置１の転送速度計測部１１４は、サーバ装置２、３、４からクライアント装置１へのデータ転送速度をそれぞれ計測する。データ転送速度を計測する場合の具体例については後述する。
【００４０】
クライアント装置１のデータ量決定部１１５は、転送速度計測部１１４が計測した転送速度に応じて、サーバ装置２、３、４のそれぞれが保存すべきデータ量を決定する。具体的に、データ量決定部１１５は、サーバ装置２、３、４のそれぞれが保存すべき、分割データ（正分割データと正分割データを複製して作成する二重化用の分割データとを含む）のデータ量を決定する。二重化用の分割データ（以下、副分割データとも呼ぶ）は、サーバ装置２、３、４がそれぞれ正分割データを複製することにより作成する。データ量を決定する場合の具体例については後述する。
【００４１】
クライアント装置１のサーバ決定部１１６は、サーバ装置２、３、４のそれぞれが、決定したデータ量に対応するデータを保存するように、副分割データを保存するサーバ装置（以下、保存先サーバ装置または再配置先サーバ装置とも呼ぶ）を決定する。具体的に、サーバ決定部１１６は、サーバ装置２、３、４のそれぞれが保存した正分割データに対応する副分割データを保存する再配置先サーバ装置を決定する。そして、サーバ決定部１１６は、対応する正分割データと副分割データとが異なるサーバ装置に保存されるように、副分割データの再配置先サーバ装置を決定する。副分割データの再配置先サーバ装置を決定する場合の具体例については後述する。
【００４２】
クライアント装置１のデータ送信指示部１１７は、サーバ装置２、３、４のそれぞれに、データ送信指示を送信する。具体的に、データ送信指示部１１７は、例えば、サーバ装置２、３、４のそれぞれにデータ送信指示を送信することにより、各サーバ装置が保存している正分割データに対応する副分割データの作成をあわせて指示する。さらに、データ送信指示部１１７は、各サーバ装置２、３、４に、サーバ決定部１１６が決定した再配置先サーバ装置に対して、作成させた副分割データの送信をあわせて指示する。
【００４３】
クライアント装置１のデータ復元部１１８は、各サーバ２、３、４が副分割データを保存した後であって、サービス事業者が提供するサービスの利用者から元データ１１ａの復元を行う旨の入力があった場合に、元データ１１ａの復元を行う。具体的に、データ復元部１１８は、例えば、サーバ装置２、３、４のそれぞれに保存された正分割データ毎に、対応する正分割データ及び副分割データのうちのいずれかを取得する。そして、データ復元部１１８は、取得した分割データのそれぞれを結合することにより、元データ１１ａを復元する。
【００４４】
クライアント装置１のエージェント管理部１１９は、分割データを送信する前に、サーバ装置２、３、４に対してエージェントソフトウエア（図示せず）を送信し、送信したエージェントソフトウエアのインストールを指示する。そして、エージェントソフトウエアは、サーバ装置２のＣＰＵ２０１と協働することにより、後述する分割データ受信部２１１と、分割データ保存部２１２と、データ送信指示受信部２１３と、分割データ送信部２１４として機能するものであってよい。この場合、サービス事業者は、データ分散保存処理を実行するための設定等を、予めサーバ装置２、３、４に行う必要がなくなる。
【００４５】
［サーバ装置の機能］
次に、サーバ装置２の機能について説明する。
【００４６】
サーバ装置２の分割データ受信部２１１は、クライアント装置１または他のサーバ装置（サーバ装置３、４）が送信した分割データを受信する。そして、サーバ装置２の分割データ保存部２１２は、分割データ受信部２１１が受信した分割データをストレージ装置２０４に保存する。
【００４７】
サーバ装置２のデータ送信指示受信部２１３は、クライアント装置１から送信されたデータ送信指示を受信する。
【００４８】
サーバ装置２の分割データ送信部２１４は、クライアント装置１からデータ送信指示を受信したことに応じて、ストレージ装置２０４に保存している正分割データに対応する副分割データを作成する。そして、分割データ送信部２１４は、クライアント装置１から受信したデータ送信指示の内容に応じて、サーバ装置２、３、４に、他のサーバ装置（副分割データの再配置先サーバ装置）に対し、作成した副分割データを送信し、送信した副分割データの保存を指示する。
【００４９】
なお、サーバ装置３及びサーバ装置４については、サーバ装置２と同じ機能を有しているため、説明を省略する。
【００５０】
［第１の実施の形態］
次に、第１の実施の形態について説明する。図８は、第１の実施の形態におけるデータ分散保存処理の概略を示すシーケンスチャート図である。また、図９から図１２は、第１の実施の形態におけるデータ分散保存処理の概略を説明する図である。図９から図１２を参照しながら図８のデータ分散保存処理の概略について説明する。なお、図９から図１２は、図２から図４と異なる点についてのみ説明を行う。
【００５１】
初めに、クライアント装置１は、図８に示すように、クライアント装置１が利用者に対してサービスを提供するために用いる元データ１１ａを分割して正分割データを作成する。そして、クライアント装置１は、作成した正分割データを、サーバ装置２、３、４に送信する（Ｓ１）。クライアント装置１は、例えば、サーバ装置２、３、４のうち、正分割データを受信することができるサーバ装置を検索し、１ブロックずつ分割データを送信するものであってよい。この場合、図３で説明したように、クライアント装置１からのデータ転送速度が速いサーバ装置は、正分割データの転送に要する時間が短くなる。そのため、クライアント装置１からのデータ転送速度が速いサーバ装置は、クライアント装置１からのデータ転送速度が遅いサーバ装置と比較して、多くの正分割データを保存することになる。その結果、サーバ装置２、３、４が保存する正分割データの比は、クライアント装置１からサーバ装置２、３、４へのそれぞれのデータ転送速度の比に近似する。
【００５２】
図９は、Ｓ１におけるデータの流れを説明する図である。図９に示すように、クライアント装置１は、元データ１１ａから作成した正分割データをサーバ装置２、３、４に送信する（Ｓ１）。そして、サーバ装置２、３、４は、それぞれ受信した正分割データをバックアップデータ２１ａ、３１ａ、４１ａとして保存する。図９に示すように、元データ１１ａから作成された分割データが１０（ブロック）である場合、サーバ装置２、３、４は、それぞれ５（ブロック）、３（ブロック）、２（ブロック）の分割データを、バックアップデータ２１ａ、３１ａ、４１ａとして保存する。
【００５３】
図８に戻り、クライアント装置１は、各サーバ装置２、３、４からクライアント装置１へのデータ転送速度に応じて、各サーバ装置２、３、４が保存すべき、正分割データと副分割データとのデータ量を決定する（Ｓ２）。すなわち、クライアント装置１からサーバ装置２、３、４への各データ転送速度は、サーバ装置２、３、４からのクライアント装置１への各データ転送速度と異なる場合がある。そのため、Ｓ１で行ったように、クライアント装置１からサーバ装置２、３、４へのデータ転送速度に応じて正分割データの配分を決定する場合、クライアント装置１は、元データ１１ａを復元するために要する時間を最短にすることができない場合がある。したがって、クライアント装置１は、元データ１１ａを復元するために要する時間を最短にするために、サーバ装置２、３、４からクライアント装置１へのデータ転送速度に応じて、サーバ装置２、３、４のそれぞれに保存すべき分割データのデータ量を決定する。
【００５４】
また、クライアント装置１は、あるサーバ装置から分割データを取得できないことにより、元データ１１ａを復元できないという事態の発生を抑制するために、正分割データの保存と併せて副分割データの保存の指示を行う。そのため、クライアント装置１は、Ｓ２において、副分割データをサーバ装置２、３、４に保存することを考慮して、サーバ装置２、３、４のそれぞれに保存すべきデータ量を決定する。サーバ装置２、３、４のそれぞれに保存すべきデータ量を決定する場合の具体例については後述する。
【００５５】
続いて、クライアント装置１は、各サーバ装置２、３、４が、決定したデータ量に対応するデータを保存するように、副分割データを保存する再配置先サーバ装置を決定する（Ｓ３）。ここで、クライアント装置１は、対応する正分割データと副分割データとが異なるサーバ装置に保存されるように、副分割データのそれぞれを保存するサーバ装置を決定する。すなわち、クライアント装置１は、同一の内容の分割データを同じサーバ装置が保存することがないように、副分割データのそれぞれを保存するサーバ装置を決定する。これにより、クライアント装置１は、あるサーバ装置に保存された分割データを取得できない場合であっても、その分割データと同じ内容の分割データを、他のサーバ装置から取得することが可能になる。そのため、クライアント装置１は、元データ１１ａを復元できない状況の発生を抑制することが可能になる。副分割データの再配置先サーバ装置を決定する場合の具体例については後述する。
【００５６】
次に、クライアント装置１は、各サーバ装置２、３、４に、Ｓ３で決定した再配置先サーバ装置に対して、各サーバ装置２、３、４が保存している正分割データに対応する副分割データのデータ送信指示を送信する（Ｓ４）。そして、各サーバ装置２、３、４は、Ｓ３で決定した再配置先サーバ装置に対して、副分割データを送信する（Ｓ４）。すなわち、クライアント装置１は、データ分散保存処理の実行時において、正分割データのみをサーバ装置２、３、４に対して送信する。そして、サーバ装置２、３、４は、Ｓ３で決定した再配置先サーバ装置に対して、副分割データの送信を行う。これにより、クライアント装置１は、利用者が管理するネットワーク（クライアント装置１の周辺のネットワーク）のデータ転送速度が十分でない場合であっても、効率的に正分割データ及び副分割データの保存を行うことが可能になる。
【００５７】
図１０から図１２は、Ｓ４におけるデータの流れを説明する図である。図１０は、図９の状態の後、クライアント装置１がサーバ装置２、３、４にデータ送信指示を行う場合の状態を説明する図であり、図１１は、サーバ装置２、３、４の間において副分割データの送受信を行う場合の状態を説明する図である。また、図１２は、サーバ装置２、３、４の間において副分割データの送受信を行った後の状態を説明する図である。
【００５８】
図１０に示すように、クライアント装置１は、Ｓ２及びＳ３の後、サーバ装置２、３、４に対して、副分割データのデータ送信指示を送信する（Ｓ４）。このデータ送信指示は、例えば、各サーバ装置が保存している正分割データを複製することにより副分割データを作成する旨の指示と、作成した副分割データを送信すべき再配置先サーバ装置を特定する情報を含むものであってよい。
【００５９】
そして、図１１に示すように、サーバ装置２、３、４は、受信したデータ送信指示の内容に応じて、副分割データの送受信を行う。これにより、サーバ装置２、３、４には、図１２に示すように、サーバ装置２、３、４からクライアント装置１へのデータ転送速度に応じたデータ量の副分割データが保存される。具体的に、図１２に示す例において、サーバ装置２、３、４は、正分割データに加えて、それぞれ１（ブロック）、５（ブロック）、４（ブロック）の副分割データ（網掛け部分）を保存する。そのため、図１２に示すサーバ装置２、３、４は、それぞれ６（ブロック）、８（ブロック）、６（ブロック）の正分割データまたは副分割データを保存する。
【００６０】
なお、各サーバ装置２、３、４は、副分割データのみでなく正分割データの再配置を行うことにより、サーバ装置２、３、４からクライアント装置１へのデータ転送速度に応じたデータ量の分割データを、各サーバ装置２、３、４に保存するものであってもよい。副分割データのみでなく正分割データの再配置を行う場合の具体例については後述する。
【００６１】
このように、第１の実施の形態によれば、クライアント装置１は、クライアント装置１の元データ１１ａをサーバ装置２、３、４に分割して送信する。そして、クライアント装置１は、サーバ装置２、３、４からクライアント装置１へのデータ転送速度に応じて、各サーバ装置２、３、４が保存すべき、分割データのデータ量を決定する。さらに、クライアント装置１は、各サーバ装置２、３、４が、決定したデータ量に対応するデータを保存するように、各サーバ装置２、３、４が保存した分割データの再配置先のサーバ装置を決定する。そして、クライアント装置１は、各サーバ装置２、３、４に、決定した再配置先のサーバ装置に対して、分割データを送信させる指示を、各サーバ装置２、３、４に送信する。
【００６２】
これにより、クライアント装置１は、元データ１１ａを復元する必要が生じた場合に、全ての分割データを取得するために要する時間を最短にすることが可能になる。また、クライアント装置１は、元データ１１ａを二重化して保存することが可能になる。そのため、クライアント装置１は、分割データを送信することができないサーバ装置が存在する場合であっても、元データ１１ａの復元に要する全ての分割データを取得することが可能になる。
【００６３】
［第１の実施の形態の詳細］
次に、第１の実施の形態の詳細について説明する。図１３から図２０は、第１の実施の形態におけるデータ分散保存処理の詳細を示すフローチャート図である。また、図２１から図３５は、第１の実施の形態におけるデータ分散保存処理の詳細を説明する図である。図２１から図３５を参照しながら、図１３から図２０のデータ分散保存処理の詳細を説明する。
【００６４】
[Ｓ１の詳細（クライアント装置）]
初めに、図８のＳ１の処理の詳細を説明する。図１３は、クライアント装置１におけるＳ１の処理の詳細を説明するフローチャートである。
【００６５】
クライアント装置１の分割データ作成部１１１は、図１３に示すように、データ保存タイミングになるまで待機する（Ｓ１１のＮＯ）。データ保存タイミングは、例えば、１日１回等、定期的なタイミングであってよい。また、データ保存タイミングは、サービス事業者が提供するサービスの利用者が、データ保存を行う旨の入力をクライアント装置１に行ったタイミングであってもよい。そして、データ保存タイミングになった場合（Ｓ１１のＹＥＳ）、分割データ作成部１１１は、クライアント装置１のデータ１１ａを分割して正分割データを作成する（Ｓ１２）。
【００６６】
続いて、クライアント装置１の分割データ送信部１１２は、サーバ装置２、３、４に対して、分割データ作成部１１１が作成した正分割データの送信を行う（Ｓ１３、Ｓ１４）。分割データ送信部１１２は、例えば、分割データ作成部１１１が作成した正分割データについて、１ブロックずつ送信先のサーバ装置を決定して送信する。具体的に、分割データ送信部１１２は、例えば、サーバ装置２、３、４のうち、正分割データを受信できるサーバ装置が存在するか否かを判定する（Ｓ１３）。正分割データを受信できるサーバ装置は、例えば、クライアント装置１から他の正分割データの受信を行っていないサーバ装置であってよい。
【００６７】
ここで、クライアント装置１は、サーバ装置２、３、４のそれぞれに対して、正分割データを送信中であるか否かを管理する情報を有するものであってよい。そして、分割データ送信部１１２は、Ｓ１３において、正分割データを送信中であるか否かを管理する情報を参照することにより、正分割データを送信すべきサーバ装置が存在するか否かを判定するものであってよい。
【００６８】
Ｓ１３の結果、正分割データを受信できるサーバ装置が存在しない場合（Ｓ１３のＮＯ）、分割データ送信部１１２は、サーバ装置２、３、４のうちいずれかのサーバ装置が、正分割データを受信できるようになるまで待機する。一方、正分割データを受信できるサーバ装置が存在する場合（Ｓ１３のＹＥＳ）、クライアント装置１の分割データ送信部１１２は、第１の分割データを受信できるサーバ装置に第１の分割データを送信する（Ｓ１４）。
【００６９】
次に、クライアント装置１の保存先管理部１１３は、正分割データを送信したサーバ装置に関する情報に基づき、保存情報１３１を更新する（Ｓ１５）。以下、保存情報１３１の具体例を説明する。
【００７０】
図２１及び図２２は、保存情報１３１の具体例を説明する図である。図２１に示す保存情報１３１は、分割データを識別する「ブロック番号」と、正分割データを保存するサーバ装置を示す「正サーバ装置（以下、単に正サーバとも呼ぶ）」とを有する。また、図２１に示す保存情報１３１は、副分割データを保存するサーバ装置を示す「副サーバ装置（以下、単に副サーバとも呼ぶ）」を有する。なお、以下、分割データ作成部１１１は、元データ１１ａを１０ブロックに分割するものとして説明する。
【００７１】
具体的に、図２１に示す保存情報１３１において、「ブロック番号」が「１」の行には、「正サーバ装置」として「サーバ２」が設定されており、「副サーバ装置」としてサーバ名が設定されていない。また、図２１に示す保存情報１３１において、「ブロック番号」が「２」の行には、「正サーバ装置」として「サーバ３」が設定されており、「副サーバ装置」としてサーバ名が設定されていない。すなわち、図２１に示す保存情報１３１は、「ブロック番号」が「１」である分割データがサーバ装置２にのみ保存されていることを示している。また、図２１に示す保存情報１３１は、「ブロック番号」が「２」である分割データがサーバ装置３にのみ保存されていることを示している。さらに、図２１に示す保存情報１３１には、「ブロック番号」が「１」から「８」までの情報に対応する「正サーバ装置」の情報のみが設定されている。そのため、図２１に示す保存情報１３１は、「ブロック番号」が「９」及び「１０」である分割データの保存がまだ行われていないことを示している。図２１のその他の情報については説明を省略する。
【００７２】
そして、分割データ送信部１１２が、「ブロック番号」が「９」である分割データをサーバ装置３に送信した場合、保存先管理部１１３は、図２１の保存情報１３１に対し、図２２に示すように、「ブロック番号」が「９」の行に対応する「正サーバ装置」に「サーバ３」を設定する。また、分割データ送信部１１２が、「ブロック番号」が「１０」である分割データをサーバ装置２に送信した場合、保存先管理部１１３は、図２２に示すように、「ブロック番号」が「１０」の行に対応する「正サーバ装置」に「サーバ２」を設定する。
【００７３】
これにより、クライアント装置１は、既に送信した分割データと、その分割データが保存されたサーバ装置とを対応させて管理することが可能になる。
【００７４】
図１３に戻り、分割データ作成部１１１が作成した正分割データの全ての送信が完了した場合（Ｓ１６のＹＥＳ）、分割データ作成部１１１は、次のデータ保存タイミングになるまで待機する。一方、正分割データの全ての送信が完了していない場合（Ｓ１６のＮＯ）、分割データ作成部１１１は、分割データ作成部１１１が作成した正分割データのうち、次の正分割データについてＳ１３以降の処理を行う。
【００７５】
[Ｓ１の詳細（サーバ装置）]
図１４は、サーバ装置２におけるＳ１の処理の詳細を説明するフローチャートである。サーバ装置２の分割データ受信部２１１は、図１４に示すように、クライアント装置１の分割データ送信部１１２から正分割データを受信するまで待機する（Ｓ２１のＮＯ）。そして、正分割データを受信した場合（Ｓ２１のＹＥＳ）、分割データ保存部２１２は、受信した正分割データをストレージ装置２０４に保存する（Ｓ２２）。その後、分割データ受信部２１１は、次の正分割データを受信するまで待機する（Ｓ２１）。これにより、サーバ装置２、３、４は、クライアント装置１から受信した正分割データを保存することが可能になる。
【００７６】
[Ｓ２からＳ４の詳細（クライアント装置）]
次に、図８のＳ２からＳ４の処理の詳細を説明する。図１５は、クライアント装置１におけるＳ２からＳ４の処理の詳細を説明するフローチャートである。
【００７７】
クライアント装置１の保存先管理部１１３は、図１５に示すように、保存サーバ決定タイミングになるまで待機する（Ｓ３１のＮＯ）。保存サーバ決定タイミングは、例えば、正分割データの全ての送信が完了したタイミング（図１３のＳ１６のＹＥＳ）であってよい。そして、保存サーバ決定タイミングになった場合（Ｓ３１のＹＥＳ）、保存先管理部１１３は、クライアント装置１が各サーバ装置にそれぞれ送信した正分割データのブロック数に関する情報である初期送信情報１３２を作成する（Ｓ３２）。以下、初期送信情報１３２の具体例を説明する。
【００７８】
図２３は、初期送信情報１３２の具体例を説明する図である。図２３に示す初期送信情報１３２は、分割データの送信先のサーバ装置を識別する「送信先」と、送信先のサーバ装置が保存している分割データのブロック数を示す「保存ブロック数」を有している。すなわち、保存先管理部１１３は、保存情報１３１を参照し、クライアント装置１が分割データを送信したサーバ装置２、３、４と、各サーバ装置のそれぞれに送信した分割データのブロック数とを対応させることにより、初期送信情報１３２を作成する。これにより、保存先管理部１１３は、後述するように、最終送信情報１３３の「差分ブロック数」に設定すべき値を算出することが可能になる。
【００７９】
具体的に、図２２の保存情報１３１に示すように、クライアント装置１から各サーバ装置に正分割データが送信された場合、保存先管理部１１３は、図２３に示すように、「送信先」が「サーバ２」の行に「保存ブロック数」として「５」が設定する。同様に、保存先管理部１１３は、「送信先」が「サーバ３」の行に「保存ブロック数」として「３」が設定し、「送信先」が「サーバ４」の行に「保存ブロック数」として「２」が設定する。
【００８０】
図１５に戻り、クライアント装置１の転送速度計測部１１４は、サーバ装置２、３、４からクライアント装置１へのデータ転送速度をそれぞれ計測する（Ｓ３３）。具体的に、転送速度計測部１１４は、例えば、サーバ装置２、３、４に、サーバ装置２、３、４がそれぞれ保存した正分割データ（例えば、１ブロック）を、クライアント装置１に送信するように指示する。そして、転送速度計測部１１４は、サーバ装置２、３、４に送信させた正分割データの転送速度を計測することにより、サーバ装置２、３、４からクライアント装置１へのデータ転送速度をそれぞれ計測するものであってよい。
【００８１】
また、転送速度計測部１１４は、分割データ送信部１１２が正分割データをサーバ装置２、３、４に送信する前に、データ転送速度を計測するためのデータ（以下、ダミーデータとも呼ぶ）を送信する。そして、転送速度計測部１１４は、サーバ装置２、３、４がクライアント装置１に対してダミーデータを送信することにより、サーバ装置２、３、４からクライアント装置１へのデータ転送速度を計測するものであってよい。さらに、転送速度計測部１１４は、分割データ送信部１１２が正分割データをサーバ装置２、３、４に送信する前に、サーバ装置２、３、４に送信する予定の正分割データ（例えば、１ブロック）をサーバ装置２、３、４にそれぞれ送信する。そして、転送速度計測部１１４は、サーバ装置２、３、４がクライアント装置１に対して正分割データを送信することにより、サーバ装置２、３、４からクライアント装置１へのデータ転送速度を計測するものであってよい。
【００８２】
次に、データ量決定部１１５は、サーバ装置２、３、４からクライアント装置１へのデータ転送速度に応じて、サーバ装置２、３、４のそれぞれが保存すべきデータ量（分割データのブロック数）を決定する（Ｓ３４）。以下、図４に示す場合と同様に、サーバ装置２、３、４からクライアント装置１へのデータ転送速度が、それぞれ４５（Ｍｂｐｓ）、６０（Ｍｂｐｓ）、４５（Ｍｂｐｓ）である場合を例にして説明を行う。
【００８３】
この場合、データ量決定部１１５は、サーバ装置２、３、４が保存するデータ量の比が４５：６０：４５になるように、各サーバが保存すべきデータ量を決定する。これにより、クライアント装置１は、サーバ装置２から分割データを取得するために要する時間と、サーバ装置３から分割データを取得するために要する時間と、サーバ装置４から分割データを取得するために要する時間とを一定にすることが可能になる。そのため、クライアント装置１は、元データ１１ａを復元するために要する時間を最短にすることが可能になる。
【００８４】
具体的に、元データ１１ａから作成された正分割データが１０（ブロック）である場合、サーバ装置２、３、４に保存される正分割データと副分割データのブロック数の合計は２０（ブロック）である。そのため、この場合、サーバ装置２、３、４にそれぞれ保存すべき分割データのブロック数は、サーバ装置２、３、４からクライアント装置１へのデータ転送速度に応じて、それぞれ６（ブロック）、８（ブロック）、６（ブロック）になる。
【００８５】
続いて、保存先管理部１１３は、Ｓ３４で決定した各サーバ装置に保存すべきデータ量（分割データのブロック数）に基づき、最終的に各サーバ装置が保存すべき分割データに関する情報である最終送信情報１３３を作成する（Ｓ３５）。以下、最終送信情報１３３の具体例を説明する。
【００８６】
図２４は、最終送信情報１３３の具体例を説明する図である。図２４に示す最終送信情報１３３は、クライアント装置１が元データ１１ａを復元する場合に分割データを送信するサーバ装置を識別する「送信元」と、各サーバ装置からクライアント装置１へのデータ転送速度である「転送速度」とを有している。また、図２４に示す最終送信情報１３３は、クライアント装置１が元データ１１ａを復元するために要する時間を最短にするために、各サーバ装置に保存すべきであった正分割データのブロック数である「保存ブロック数」を有している。すなわち、図２４に示す例において、「保存ブロック数」には、Ｓ３４で決定した各サーバ装置に保存すべきデータ量（分割データのブロック数）のブロック数の半数が設定される。また、図２４に示す最終送信情報１３３は、各サーバ装置に実際に保存された正分割データのブロック数と、最終送信情報１３３の「保存ブロック数」に設定されたブロック数との差分である「差分ブロック数」を有している。
【００８７】
図２４に示す最終送信情報１３３において、保存先管理部１１３は、転送速度計測部１１４が計測した各データ転送速度を「転送速度」に設定する。また、保存先管理部１１３は、「転送速度」に設定した各データ転送速度に基づき、クライアント装置１が本来サーバ装置２、３、４のそれぞれに保存すべきであった正分割データのブロック数を算出して「保存ブロック数」に設定する。具体的に、図２４に示す最終送信情報１３３において、保存先管理部１１３は、「送信元」が「サーバ２」の行には、「転送速度」として「４５（Ｍｂｐｓ）」を設定し、「送信元」が「サーバ３」の行には、「転送速度」として「６０（Ｍｂｐｓ）」を設定する。また、図２４に示す最終送信情報１３３において、「送信元」が「サーバ４」の行には、「転送速度」として「４５（Ｍｂｐｓ）」を設定する。そして、保存先管理部１１３は、「転送速度」に設定した各データ転送速度の比（４５：６０：４５）と、「保存ブロック数」に設定するブロック数の比とが等しくなるように、「保存ブロック数」を設定する。すなわち、保存先管理部１１３は、「保存ブロック数」にそれぞれ「３」、「４」、「３」を設定する。
【００８８】
次に、保存先管理部１１３は、図２３の初期送信情報１３２の「保存ブロック数」と、図２４の最終送信情報１３３の「保存ブロック数」との差分を算出して「差分ブロック数」に設定する。具体的に、図２３に示す最終送信情報１３３において、「送信元」が「サーバ２」の行には、「保存ブロック数」として「５」が設定され、「送信元」が「サーバ３」の行には、「保存ブロック数」として「３」が設定されている。さらに、図２３に示す最終送信情報１３３において、「送信元」が「サーバ４」の行には、「保存ブロック数」として「２」が設定されている。そのため、保存先管理部１１３は、図２４の最終送信情報１３３の「差分ブロック数」に、それぞれ「＋２」、「−１」、「−１」を設定する。
【００８９】
これにより、サーバ決定部１１６は、最終送信情報１３３を参照することにより、「差分ブロック数」に設定された情報を取得することが可能になる。そのため、サーバ決定部１１６は、後述するように、各サーバ装置からクライアント装置１へのデータ転送速度に応じて、サーバ装置のそれぞれに保存された正分割データを再配置することが可能になる。
【００９０】
図１５に戻り、サーバ決定部１１６は、サーバ装置２、３、４のそれぞれが、Ｓ３４で決定したデータ量に対応するデータを保存するように、副分割データのそれぞれを保存するサーバ装置を決定する（Ｓ３６）。以下、副分割データを保存するサーバ装置を決定する場合の具体例を説明する。
【００９１】
[Ｓ３６の処理の詳細（１）]
図１６は、Ｓ３６の処理の詳細を説明するフローチャートである。
【００９２】
初めに、サーバ決定部１１６は、サーバ装置２、３、４に保存された正分割データのデータ量の比が、サーバ装置２、３、４に対応するデータ転送速度の比と対応するように、サーバ装置２、３、４が保存された正分割データを再配置するための指示を各サーバ装置２、３、４に送信する（Ｓ４１）。
【００９３】
すなわち、サーバ決定部１１６は、サーバ装置２、３、４に保存された正分割データのデータ量の比が、サーバ装置２、３、４に対応するデータ転送速度の比と対応するように、サーバ装置２、３、４で送受信する必要がある正分割データを決定する。そして、サーバ装置２、３、４は、決定した正分割データを送受信する。この場合、サーバ装置２、３、４から送信された正分割データは削除される。
【００９４】
これにより、サーバ決定部１１６は、副分割データを保存するサーバ装置を決定する前に、サーバ装置２、３、４のそれぞれが保存する第１の分割データのデータ量の比と、各サーバ装置からクライアント装置１へのデータ転送速度の比とを等しくすることが可能になる。そのため、サーバ装置２、３、４は、後述するように、それぞれが保存した正分割データと同じデータ量の副分割データを保存することが可能になる。以下、Ｓ４１の処理の具体例を説明する。
【００９５】
図２４に示す最終送信情報１３３において、「送信元」が「サーバ２」の行の「差分ブロック数」は「＋２（ブロック）」である。同様に、「送信元」が「サーバ３」の行の「差分ブロック数」は「−１（ブロック）」であり、「送信元」が「サーバ４」の行の「差分ブロック数」は「−１（ブロック）」である。そのため、サーバ決定部１１６は、サーバ装置２に保存されている正分割データのうちの２ブロックを、それぞれサーバ装置３とサーバ装置４に対して１ブロックずつ送信するように指示を行う。これにより、サーバ決定部１１６は、サーバ装置２、３、４に保存された正分割データのブロック数を、それぞれ３（ブロック）、４（ブロック）、３（ブロック）にすることが可能になる。すなわち、サーバ決定部１１６は、サーバ装置２、３、４に保存された正分割データのデータ量の比を、サーバ装置２、３、４に対応するデータ転送速度の比に対応させることが可能になる。
【００９６】
そして、サーバ決定部１１６は、再配置した正分割データに関する情報に基づき、保存情報１３１を更新する。
【００９７】
図２５は、Ｓ４１の処理を実行した後の保存情報１３１の具体例を説明する図である。具体的に、サーバ決定部１１６は、例えば、図２５に示すように、図２２の状態の保存情報１３１における「ブロック番号」が「１」の行に対応する「正サーバ装置」を「サーバ２」から「サーバ３」に更新する。また、サーバ決定部１１６は、「ブロック番号」が「４」の行に対応する「正サーバ装置」を「サーバ２」から「サーバ４」に更新する。これにより、サーバ決定部１１６は、Ｓ４１において送信した正分割データに関する情報を保存情報１３１の反映することが可能になる。
【００９８】
図１６に戻り、サーバ決定部１１６は、サーバ装置２、３、４のそれぞれが、それぞれサーバ装置２、３、４に保存した正分割データのデータ量と同じデータ量の副分割データを保存するように、副分割データを保存するサーバ装置を決定する（Ｓ４２）。
【００９９】
具体的に、サーバ決定部１１６は、例えば、図２４に示す最終送信情報１３３の「保存ブロック数」を参照し、Ｓ４１の後、サーバ装置２、３、４が保存した正分割データのブロック数の情報として、それぞれ３（ブロック）、４（ブロック）、３（ブロック）を取得する。これにより、サーバ決定部１１６は、サーバ装置２、３、４が保存すべき副分割データのブロック数が、それぞれ３（ブロック）、４（ブロック）、３（ブロック）であると判定する。
【０１００】
そして、サーバ決定部１１６は、サーバ装置２、３、４が保存する副分割データのブロック数が、それぞれ３（ブロック）、４（ブロック）、３（ブロック）になるように、副分割データを保存するサーバ装置を決定する。
【０１０１】
ここで、サーバ決定部１１６は、それぞれ対応する正分割データと副分割データとが異なるサーバ装置に保存されるように、副分割データを保存するサーバ装置を決定する。これにより、クライアント装置１は、正分割データを保存するサーバ装置がクライアント装置１に対して正分割データを送信できない場合であっても、正分割データを保存する他のサーバ装置から正分割データを取得することが可能になる。
【０１０２】
次に、図２５の保存情報１３１に示す状態を例にして、副分割データを保存するサーバ装置を決定するための式の具体例について説明する。
【０１０３】
サーバ決定部１１６は、以下の式１から式６による連立一次方程式の解を求めることにより、副分割データを保存するサーバ装置を決定することが可能になる。以下、サーバ装置２からサーバ装置３、４にそれぞれ送信する副分割データのブロック数をｂ２３、ｂ２４とも呼び、サーバ装置３からサーバ装置２、４にそれぞれ送信する副分割データのブロック数をｂ３２、ｂ３４とも呼ぶ。また、以下、サーバ装置４からサーバ装置２、３にそれぞれ送信する副分割データのブロック数をｂ４２、ｂ４３とも呼ぶ。なお、以下、ｂ２３、ｂ２４、ｂ３２、ｂ３４、ｂ４２及びｂ４３は、０以上の値であるものとする。
【０１０４】
ｂ２３＋ｂ２４＝３  ・・・  式（１）
ｂ３２＋ｂ３４＝４  ・・・  式（２）
ｂ４２＋ｂ４３＝３  ・・・  式（３）
ｂ３２＋ｂ４２＝３  ・・・  式（４）
ｂ２３＋ｂ４３＝４  ・・・  式（５）
ｂ２４＋ｂ３４＝３  ・・・  式（６）
すなわち、式１は、サーバ装置２からサーバ装置３、４に送信する副分割データのブロック数の和が３（ブロック）であることを示している。同様に、式２は、サーバ装置３からサーバ装置２、４に送信する副分割データのブロック数の和が４（ブロック）であることを示しており、式３は、サーバ装置４からサーバ装置２、３に送信する副分割データのブロック数の和が３（ブロック）であることを示している。
【０１０５】
また、式４は、サーバ装置３、４からサーバ装置２に送信する副分割データのブロック数の和が３（ブロック）であることを示している。同様に、式５は、サーバ装置２、４からサーバ装置３に送信する副分割データのブロック数の和が４（ブロック）であることを示しており、式６は、サーバ装置２、３からサーバ装置４に送信する副分割データのブロック数の和が３（ブロック）であることを示している。
【０１０６】
そして、サーバ決定部１１６は、式１から式６による連立一次方程式の解を求めることにより、ｂ２３＝３、ｂ２４＝０、ｂ３２＝１、ｂ３４＝３、ｂ４２＝２、ｂ４３＝１を得ることが可能になる。これにより、サーバ決定部１１６は、サーバ装置２が作成した副分割データの全て（３（ブロック））をサーバ装置４に保存することを決定することが可能になる。また、サーバ決定部１１６は、サーバ装置３が作成した副分割データのうち、１（ブロック）をサーバ装置２に保存し、３（ブロック）をサーバ装置４に保存することを決定することが可能になる。また、サーバ決定部１１６は、サーバ装置４が作成した副分割データのうち、２（ブロック）をサーバ装置２に保存し、１（ブロック）をサーバ装置３に保存することを決定することが可能になる。
【０１０７】
ここで、サーバ決定部１１６は、例えば、副分割データを保存するサーバ装置に関する情報を管理するためのブロック送受信情報１３４を作成するものであってもよい。以下、ブロック送受信情報１３４の具体例を説明する。
【０１０８】
図２６は、ブロック送受信情報１３４の具体例を説明する図である。図２６に示すブロック送受信情報１３４は、副分割データの送信元のサーバ装置である「送信元」と、副分割データの送信先のサーバ装置である「送信先」とを有する。また、図２６に示すブロック送受信情報１３４は、送信元のサーバ装置から送信先のサーバ装置に送信する必要がある副分割データのブロックの数を示す「送信ブロック数」を有する。
【０１０９】
具体的に、サーバ決定部１１６は、図２６に示すように、「送信元」が「サーバ２」であり、「送信先」が「サーバ３」の行に、「送信ブロック数」として「３（ブロック）」を設定する。図２６のその他の情報については説明を省略する。
【０１１０】
これにより、データ送信指示部１１７は、後述するように、各サーバ装置に副分割データのデータ送信指示を送信する場合に、ブロック送受信情報１３４を参照してデータ送信指示を送信することが可能になる。
【０１１１】
図２７は、サーバ装置２が作成した副分割データを他のサーバ装置に保存した後の保存情報１３１の具体例を説明する図である。サーバ決定部１１６は、ブロック送受信情報１３４を参照し、サーバ装置２で作成した副分割データの全て（３（ブロック））をサーバ装置３に送信すべき旨の情報を取得する。そして、保存先管理部１１３は、図２７に示すように、「正サーバ装置」が「サーバ２」の行（「ブロック番号」が「６」、「７」及び「１０」の行）に対する「副サーバ装置」に「サーバ３」を設定する。
【０１１２】
次に、図２８は、サーバ装置３が作成した副分割データを他のサーバ装置に保存した後の保存情報１３１の具体例を説明する図である。サーバ決定部１１６は、ブロック送受信情報１３４を参照し、サーバ装置３で作成した副分割データのうち、１（ブロック）をサーバ装置２に保存し、３（ブロック）をサーバ装置４に保存すべき旨の情報を取得する。そして、保存先管理部１１３は、「正サーバ装置」が「サーバ３」の行のうち、「ブロック番号」が「１」、「２」及び「９」の行に対応する「副サーバ装置」に、「サーバ４」を設定する。また、保存先管理部１１３は、「正サーバ装置」が「サーバ３」の行のうち、「ブロック番号」が「５」の行に対応する「副サーバ装置」に「サーバ２」を設定する。
【０１１３】
さらに、図２９は、図２８の状態の保存情報１３１の後、サーバ装置４が作成した副分割データを他のサーバ装置に保存した場合の保存情報１３１の具体例を説明する図である。サーバ決定部１１６は、ブロック送受信情報１３４を参照し、サーバ装置４で作成した副分割データのうち、２（ブロック）をサーバ装置２に保存し、１（ブロック）をサーバ装置３に保存すべき旨の情報を取得する。そして、保存先管理部１１３は、この場合、「正サーバ装置」が「サーバ４」の行のうち、「ブロック番号」が「３」及び「４」の行に対応する「副サーバ装置」に「サーバ２」を設定する。また、保存先管理部１１３は、「正サーバ装置」が「サーバ４」の行のうち、「ブロック番号」が「８」の行に対応する「副サーバ装置」に「サーバ３」を設定する。
【０１１４】
これにより、クライアント装置１は、サーバ装置２、３、４にそれぞれ保存された正分割データ及び副分割データを管理することが可能になる。
【０１１５】
図１５に戻り、データ送信指示部１１７は、二重化実行タイミングになるまで待機する（Ｓ３７のＮＯ）。二重化実行タイミングは、例えば、副分割データの全てを保存するサーバ装置が決定したタイミングであってよい。そして、二重化実行タイミングになった場合（Ｓ３７のＹＥＳ）、データ送信指示部１１７は、サーバ装置２、３、４のそれぞれに、Ｓ３６で決定したサーバ装置に対して、副分割データの送信を指示する（Ｓ３８）。そして、保存先管理部１１３は、次の保存先決定タイミングになるまで待機する（Ｓ３１）。
【０１１６】
これにより、クライアント装置１は、サーバ装置２、３、４に、正分割データ及び副分割データの全てを保存させることが可能になる。
【０１１７】
[Ｓ３６の処理の詳細（２）]
次に、副分割データを保存するサーバ装置を決定する場合の別の具体例を説明する。図１６のＳ３６の処理において、各サーバ装置が保存する正分割データのデータ量の比と、各サーバ装置からクライアント装置１へのデータ転送速度の比とを合わせるために、正分割データの再配置を行う場合を説明した（図１６のＳ４１）。ここで、各サーバ装置は、図１６のＳ４１の処理において他のサーバ装置に一度送信した正分割データと同じ内容の副分割データを、図１５のＳ３８の処理において他のサーバ装置から受信する場合がある。具体的に、例えば、サーバ装置２がサーバ装置３に正分割データを送信し、その後、送信した正分割データに対応する副分割データを、サーバ装置２がサーバ装置３から受信する場合がこれに該当する（以下、これを分割データの循環とも呼ぶ）。すなわち、この分割データの循環は、本来送信する必要がなかった分割データを送信した場合に発生するものである。
【０１１８】
したがって、サーバ決定部１１６及びデータ送信指示部１１７は、分割データの循環の発生を抑制することにより、データ分散保存処理を効率的に実行することが可能になる。そこで、以下に説明するサーバ決定部１１６及びデータ送信指示部１１７では、分割データの循環の発生を抑制しながら、サーバ装置２、３、４に分割データの送信を行わせる。以下、この場合のＳ３６の処理の詳細を説明する。
【０１１９】
図１７は、Ｓ３６の処理の詳細を説明するフローチャートである。初めに、サーバ決定部１１６は、サーバ装置２、３、４に保存された正分割データのデータ量の比が、サーバ装置２、３、４に対応するデータ転送速度の比に対応するように、再配置すべき正分割データを決定する（Ｓ５１）。すなわち、サーバ決定部１１６は、図１６で説明した場合と異なり、ここでは再配置すべき正分割データの決定のみを行う。
【０１２０】
次に、サーバ決定部１１６は、再配置を行う場合に正分割データの送信元となる正サーバ装置に、正分割データの送信先となる副サーバ装置に対して再配置すべき正分割データに対応する副分割データを送信させるための指示を送信する（Ｓ５２）。すなわち、サーバ決定部１１６は、図１６で説明した場合と異なり、正分割データの実体の再配置を行わず、その正分割データに対応する副分割データの送受信を行う。そのため、この場合、図１６で説明した場合と異なり、正サーバ装置に保存された正分割データは削除されない。以下、Ｓ５２の処理の具体例を説明する。
【０１２１】
図３０は、Ｓ５２の処理を行った後の保存情報１３１の具体例を説明する図である。保存先管理部１１３は、図３０に示すように、「ブロック番号」が「１」の行に対応する「副サーバ装置」に、「サーバ３」を設定し、「ブロック番号」が「４」の行に対応する「副サーバ装置」に、「サーバ４」を設定する。
【０１２２】
そして、サーバ決定部１１６は、Ｓ５１で決定した再配置すべき正分割データを、副サーバ装置から正サーバ装置に対して送信された副分割データとして仮定（管理）し、Ｓ５２で副サーバ装置への送信を指示した副分割データを、副サーバ装置に元々保存された正分割データとして仮定（管理）する（Ｓ５３）。ここでいう「仮定」については後述する。以下、Ｓ５３の処理の具体例を説明する。
【０１２３】
図３１は、Ｓ５３の処理を行った後の保存情報１３１の具体例を説明する図である。保存先管理部１１３は、図３１に示すように、「ブロック番号」が「１」の行に対応する「正サーバ装置」を「サーバ２」から「サーバ３」に更新し、「副サーバ装置」を「サーバ３」から「サーバ２」に更新する。また、保存先管理部１１３は、「ブロック番号」が「４」の行に対応する「正サーバ装置」を「サーバ２」から「サーバ４」に更新し、「副サーバ装置」を「サーバ４」から「サーバ２」に更新する。すなわち、図３１に示す保存情報１３１は、図３０に示す保存情報１３１に対して、Ｓ５２で送信した副分割データに対応する「正サーバ装置」と「副サーバ装置」とを入れ替えたものである。なお、正分割データの実体及び副分割データの実体は同じものなので、正分割データの実体及び副分割データの実体を正サーバ装置と副サーバ装置との間で入れ替えず、保存情報１３１上の入れ替えに留まる。このことを「仮定」と言う。
【０１２４】
これにより、図３１に示す保存情報１３１は、「ブロック番号」が「１」である分割データが元々サーバ装置３に保存されていた分割データであり、その後、サーバ装置２に送信されて保存された分割データであるとして管理することが可能になる。また、図３１に示す保存情報１３１は、「ブロック番号」が「４」である分割データが元々サーバ装置４に保存されていた分割データであり、その後、サーバ装置２に送信されて保存された分割データであるとして管理することが可能になる。
【０１２５】
すなわち、図１６で説明したＳ３６の処理では、サーバ決定部１１６及びデータ送信指示部１１７は、実際に正分割データの再配置を行い（図１６のＳ４１）、さらに、副分割データの送信を行う（図１５のＳ３８）。そのため、正サーバ装置は、正サーバ装置から副サーバ装置に送信した正分割データを送信した後、その送信した正分割データに対応する副分割データを副サーバ装置から受信する場合があり、分割データの循環が発生する場合がある。
【０１２６】
これに対し、図１７のＳ３６の処理におけるサーバ決定部１１６は、再配置すべき正分割データを正サーバ装置から削除することなく、かつ、正分割データの実体を移動することなく、その正分割データに対応する副分割データを副サーバ装置に送信する（Ｓ５２）。さらに、サーバ決定部１１６は、Ｓ５２において削除しなかった正サーバ装置の正分割データを、正サーバ装置と異なる副サーバ装置から送信された副分割データと仮定して管理する。また、サーバ決定部１１６は、Ｓ５２において正サーバ装置が副サーバ装置に送信した副分割データを、副サーバ装置に元々保存されていた副サーバ装置の正分割データと仮定して管理する（Ｓ５３）。
【０１２７】
すなわち、サーバ決定部１１６は、各分割データについてクライアント装置１から１回の送信を行うだけで、正サーバ装置に保存された正分割データを再配置して、さらに、副サーバ装置で作成された副分割データを正サーバ装置に送信した図１６の場合と同じ効果を得ることが可能になる。そのため、図１７で説明するサーバ決定部１１６は、図１６のＳ３６の処理と比較して、データ分散保存処理の実行に伴う分割データの送受信を抑制することが可能になる。
【０１２８】
次に、図３２は、サーバ装置２が作成した副分割データを他のサーバ装置に保存した後の保存情報１３１の具体例を説明する図である。サーバ決定部１１６は、図２６に示すブロック送受信情報１３４を参照し、サーバ装置２で作成した副分割データの全て（３（ブロック））をサーバ装置３に送信すべき旨の情報を取得する。そして、保存先管理部１１３は、図３２に示すように、「正サーバ装置」が「サーバ２」の行（「ブロック番号」が「６」、「７」及び「１０」の行）に対する「副サーバ装置」に、「サーバ３」を設定する。
【０１２９】
そして、図３３は、サーバ装置３が作成した副分割データを他のサーバ装置に保存した後の保存情報１３１の具体例を説明する図である。保存先管理部１１３は、図２６に示すブロック送受信情報１３４を参照し、サーバ装置３で作成した副分割データのうち、１（ブロック）をサーバ装置２に保存し、３（ブロック）をサーバ装置４に保存すべき旨の情報を取得する。ここで、図３３に示す保存情報１３１において、Ｓ５２及びＳ５３の処理により、「正サーバ装置」が「サーバ３」の行のうち、「ブロック番号」が「１」の行に対応する「副サーバ装置」には、既に「サーバ２」が設定されている。そのため、保存先管理部１１３は、「正サーバ装置」が「サーバ３」の行のうち、「ブロック番号」が「２」、「５」及び「９」の行に対応する「副サーバ装置」に、「サーバ３」を設定する。
【０１３０】
さらに、図３４は、サーバ装置４が作成した副分割データを他のサーバ装置に保存した後の保存情報１３１の具体例を説明する図である。保存先管理部１１３は、図２６に示すブロック送受信情報１３４を参照し、サーバ装置４で作成した副分割データのうち、２（ブロック）をサーバ装置２に保存し、１（ブロック）をサーバ装置３に保存すべき旨の情報を取得する。ここで、図３４に示す保存情報１３１において、Ｓ５２及びＳ５３の処理により、「正サーバ装置」が「サーバ４」の行のうち、「ブロック番号」が「４」の行に対応する「副サーバ装置」には、既に「サーバ２」が設定されている。そのため、保存先管理部１１３は、「正サーバ装置」が「サーバ４」の行のうち、「ブロック番号」が「３」及び「８」の行に対応する「副サーバ装置」に、「サーバ２」及び「サーバ３」をそれぞれ設定する。
【０１３１】
図１７に戻り、サーバ決定部１１６は、サーバ装置２、３、４のそれぞれが、それぞれのサーバ装置２、３、４に保存した正分割データのデータ量に対応する副分割データを保存するように、副分割データを保存するサーバ装置を決定する（Ｓ５４）。具体的に、サーバ決定部１１６は、例えば、図１６で説明した式１から式６による連立一次方程式の解を求めることにより、副分割データを保存するサーバ装置を決定するものであってよい。
【０１３２】
なお、Ｓ５２において送信された副分割データは、既に保存するサーバ装置が決定している状態である。そのため、サーバ決定部１１６は、Ｓ５４において、Ｓ５２において送信されていない副分割データ（Ｓ５１で再配置すべきと決定した正分割データ以外の正分割データに対応する副分割データ）についてのみ、保存すべきサーバ装置を決定するものであってよい。この場合、データ送信指示部１１７は、サーバ装置２、３、４のそれぞれに、Ｓ５２において送信されていない副分割データのみの送信を指示するものであってよい（図１５のＳ３８）。
【０１３３】
[サーバ装置からクライアント装置へのデータ転送速度に偏りがある場合の処理]
あるサーバ装置からクライアント装置１へのデータ転送速度が、各サーバ装置からクライアント装置１へのデータ転送速度の総和の５０％以上を占める場合がある。具体的に、図３５の最終送信情報１３３に示すように、サーバ装置２、３、４からクライアント装置１へのデータ転送速度が、それぞれ８０（Ｍｂｐｓ）、１０（Ｍｂｐｓ）、１０（Ｍｂｐｓ）である場合がこれに該当する。図３５に示す例において、サーバ装置２からクライアント装置１へのデータ転送速度は、各サーバ装置からクライアント装置１へのデータ転送速度の総和の５０％以上（８０％）になっている。図３５のその他の情報については説明を省略する。
【０１３４】
この場合において、各サーバ装置に保存するデータ量の比と、各サーバ装置に対応するデータ転送速度の比とを合わせるように副分割データの送受信を行う場合、サーバ装置３、４は、サーバ装置２が作成した副分割データの全てを保存することができない。
【０１３５】
そこで、データ量決定部１１５は、この場合、各サーバ装置に保存すべきデータ量が、正分割データ及び副分割データの総データ量の５０％以下になるように、各サーバ装置に保存すべきデータ量を決定するものであってよい。具体的に、図３５に示す例において、各サーバ装置の「保存ブロック数」は、それぞれ５（ブロック）、３（ブロック）、２（ブロック）に設定されている。これにより、サーバ装置３、４は、サーバ装置２が作成した副分割データの全てを保存することが可能になる。
【０１３６】
[クライアント装置からサーバ装置へのデータ転送速度に偏りがある場合の処理]
図１７で説明したＳ３６の処理では、正分割データの送信を行わず、副分割データの送信のみを行うことにより、各サーバ装置に対して正分割データ及び副分割データの保存を行う。ここで、クライアント装置１からサーバ装置２、３、４へのデータ転送速度に偏りがある場合、副分割データだけでなく、正分割データの送信を行う必要がある場合がある。
【０１３７】
具体的に、サーバ装置２に保存した正分割データが５（ブロック）であった場合において、データ量決定部１１５が、サーバ装置２に保存すべき正分割データ及び副分割データのブロック数を４（ブロック）と決定した場合がこれに該当する（Ｓ２２、Ｓ３４）。すなわち、この場合、サーバ装置２に保存された正分割データのブロック数は、最終的にサーバ装置２に保存すべき分割データのブロック数よりも多い。そのため、この場合、サーバ装置２に保存されるデータ量を、データ量決定部１１５が決定したデータ量に合わせるためには、サーバ装置２は、保存している正分割データを他のサーバ装置（サーバ装置３、４）に送信する必要がある。
【０１３８】
そこで、データ量決定部１１５は、この場合、正分割データの送信を行う必要がないように、各サーバ装置に保存すべきデータ量を決定するものであってもよい。すなわち、データ量決定部１１５は、各サーバ装置に保存すべき正分割データ及び副分割データのブロック数が、各サーバ装置に既に保存されている正分割データのブロック数以上になるように決定する。具体的に、データ量決定部１１５は、サーバ装置２に既に保存されている正分割データが５（ブロック）であった場合、サーバ装置２に保存すべき正分割データ及び副分割データのブロック数が５（ブロック）以上になるように決定する。
【０１３９】
これにより、クライアント装置１は、サーバ装置間で正分割データを送受信させることなく、正分割データ及び副分割データの保存を行うことが可能になる。
【０１４０】
[Ｓ４の詳細（サーバ装置）]
図１８は、サーバ装置２におけるＳ４の処理の詳細を説明するフローチャートである。サーバ装置２のデータ送信指示受信部２１３は、図１８に示すように、クライアント装置１から副分割データのデータ送信指示を受信するまで待機する（Ｓ６１のＮＯ）。そして、副分割データのデータ送信指示を受信した場合（Ｓ６１のＹＥＳ）、サーバ装置の分割データ送信部２１４は、受信したデータ送信指示の内容に基づき、他のサーバ装置に副分割データを送信する（Ｓ６２）。
【０１４１】
また、サーバ装置２の分割データ受信部２１１は、クライアント装置１から副分割データを受信するまで待機する（Ｓ７１のＮＯ）。そして、副分割データを受信した場合（Ｓ７１のＹＥＳ）、サーバ装置の分割データ保存部２１２は、受信した副分割データをストレージ装置２０４に保存する（Ｓ７２）。
【０１４２】
[データ復元処理（クライアント装置）]
次に、クライアント装置１がサーバ装置２、３、４に保存した分割データを取得し、データ１１ａを復元する処理（以下、データ復元処理とも呼ぶ）を説明する。図１９は、クライアント装置１におけるデータ復元処理を説明するフローチャートである。なお、以下、正分割データと副分割データとを総称して単に分割データとも呼ぶ。
【０１４３】
クライアント装置１のデータ復元部１１８は、データ復元タイミングになるまで待機する（Ｓ８１のＮＯ）。データ復元タイミングは、例えば、利用者がデータ１１ａの復元を行う旨の入力をクライアント装置１に行ったタイミングであってもよい。
【０１４４】
そして、データ復元タイミングになった場合（Ｓ８１のＹＥＳ）、データ復元部１１８は、保存情報１３１を検索し、分割データに関する情報を取得する（Ｓ８２）。具体的に、図２９に示す保存情報１３１において、「ブロック番号」が「１」である分割データが保存されたサーバ装置は、「サーバ３」と「サーバ４」である。したがって、この場合、データ復元部１１８は、「ブロック番号」が「１」である分割データが保存されたサーバ装置が、サーバ装置３及びサーバ装置４である旨の情報を取得する。なお、データ復元部１１８は、保存情報１３１を検索することにより、１ブロックずつ分割データに関する情報を取得するものであってよい。以下、データ復元部１１８は、１ブロックずつ分割データに関する情報を取得するものとして説明を行う。
【０１４５】
次に、データ復元部１１８は、Ｓ８２で検索したサーバ装置のいずれかが、分割データを送信することが可能であるか否かを判定する（Ｓ８３）。データ復元部１１８は、サーバ装置２、３、４がクライアント装置１に対して分割データを送信中であるか否かを管理する情報を参照し、Ｓ８２で検索したサーバ装置が分割データを送信可能であるか否かを判定するものであってよい。具体的に、図２９に示す保存情報１３１の場合において、データ復元部１１８が「ブロック番号」が「１」である分割データを取得する場合、データ復元部１１８は、「サーバ３」及び「サーバ４」が分割データを送信可能であるか否かを判定する。
【０１４６】
そして、Ｓ８２で検索したサーバ装置の全てが分割データを送信することができない場合（Ｓ８３のＮＯ）、データ復元部１１８は、Ｓ８２で検索したサーバ装置のうちのいずれかが、分割データの送信ができるようになるまで待機する。
【０１４７】
一方、Ｓ８２で検索したサーバ装置に分割データを送信可能なサーバ装置が存在する場合（Ｓ８３のＹＥＳ）、データ復元部１１８は、Ｓ８２で検索したサーバ装置に、分割データのデータ送信指示を送信する（Ｓ８４）。なお、データ復元部１１８は、分割データを送信することができるサーバ装置が複数ある場合、いずれかのサーバ装置のみに対して分割データの送信指示を送信するものであってよい。
【０１４８】
続いて、データ復元部１１８は、Ｓ８４で分割データのデータ送信指示を送信したサーバ装置から、分割データを受信するまで待機する（Ｓ８５のＮＯ）。そして、データ送信指示を送信したサーバ装置から分割データを受信した場合（Ｓ８５のＹＥＳ）、データ復元部１１８は、データ１１ａを復元するために必要な分割データの全ての受信が完了しているか否かを判定する（Ｓ８６）。そして、必要な分割データの全ての受信が完了していない場合（Ｓ８６のＮＯ）、まだ受信していない分割データについて、Ｓ８２以降の処理を行う。
【０１４９】
一方、必要な分割データの全ての受信が完了した場合（Ｓ８６のＹＥＳ）、データ復元部１１８は、受信した分割データの全てから元データ１１ａの復元を行う（Ｓ８７）。その後、データ復元部１１８は、次のデータ復元タイミングまで待機する（Ｓ８１）。
【０１５０】
[データ復元処理（サーバ装置）]
図２０は、サーバ装置２におけるデータ復元処理を説明するフローチャートである。サーバ装置２のデータ送信指示受信部２１３は、図２０に示すように、クライアント装置１から副分割データのデータ送信指示を受信するまで待機する（Ｓ９１のＮＯ）。そして、副分割データのデータ送信指示を受信した場合（Ｓ９１のＹＥＳ）、サーバ装置２の分割データ送信部２１４は、受信したデータ送信指示の内容に基づき、クライアント装置１に副分割データを送信する（Ｓ９２）。
【０１５１】
このように、第１の実施の形態によれば、クライアント装置１は、サーバ装置２、３、４からクライアント装置１へのデータ転送速度に応じて、サーバ装置２、３、４のそれぞれが保存すべき、分割データのデータ量を決定する。そして、クライアント装置１は、サーバ装置２、３、４のそれぞれが、決定したデータ量に対応するデータを保存するように、分割データの再配置先のサーバ装置を決定する。
【０１５２】
これにより、クライアント装置１は、各サーバ装置２、３、４に復元方向の速度に合わせた分割データが保存されるため、全ての分割データを取得するために要する時間を最短にすることが可能になる。
【０１５３】
また、クライアント装置１は、元データ１１ａを二重化して保存することが可能になる。そのため、クライアント装置１は、分割データを送信することができないサーバ装置が存在する場合であっても、元データ１１ａを復元するために必要な全ての分割データを取得することが可能になる。
【０１５４】
以上の実施の形態をまとめると、以下の付記のとおりである。
【０１５５】
（付記１）
クライアントのデータを分割した複数の分割データそれぞれを、該クライアントとアクセス可能な複数の各サーバに送信し、
前記各サーバから前記クライアントへのデータ転送速度に応じて、前記各サーバが保存すべき、分割データのデータ量を決定し、
前記決定されたデータ量のデータを保存するように、各サーバが保存した分割データの再配置先のサーバを、前記複数のサーバの中から決定し、
前記決定された再配置先のサーバに分割データを送信させる指示を、前記各サーバに送信する、
処理を前記クライアントのコンピュータに実行させるデータ分散保存プログラム。
【０１５６】
（付記２）
付記１において、
前記再配置先のサーバを決定する処理では、
前記各サーバに保存されるべき分割データのデータ量の比が各データ転送速度の比に一致するように、前記各サーバに保存された分割データを前記複数のサーバに含まれる他のサーバに再配置させる指示を、前記各サーバに送信し、
前記各サーバが、各サーバに保存される分割データの二重化データを前記比で保存するように、二重化データを保存するサーバを決定する、
データ分散保存プログラム。
【０１５７】
（付記３）
付記１において、
前記再配置先のサーバを決定する処理では、
前記各サーバに保存されるべき分割データのデータ量の比が各データ転送速度の比に一致するように、前記複数のサーバに含まれる正サーバから副サーバに再配置すべき分割データを決定し、
前記正サーバに、前記副サーバに対して、前記再配置すべき分割データの二重化データの送信を指示し、
前記再配置すべき分割データを、前記正サーバから前記副サーバに送信することなく、前記副サーバから前記正サーバに対して送信された二重化データとし、前記副サーバへの送信を指示した二重化データを、前記副サーバに保存された分割データとした場合において、前記各サーバが、各サーバに保存した前記分割データと同じデータ量の二重化データを保存するように、前記再配置すべき分割データ以外の分割データに対応する二重化データを保存するサーバを決定し、
前記二重化データを保存させる処理では、前記再配置すべき分割データ以外の分割データに対応する二重化データを送信させて保存させる、
データ分散保存プログラム。
【０１５８】
（付記４）
付記１において、
前記データ量を決定する処理の前に、前記各サーバに保存した前記分割データについて、前記クライアントへの送信を指示することにより、前記各サーバから前記クライアントへのデータ転送速度を計測する、
処理を前記クライアントのコンピュータに実行させるデータ分散保存プログラム。
【０１５９】
（付記５）
付記１において、
前記分割データを送信する処理の前に、前記データ転送速度を計測するためのダミーデータまたは前記分割データを前記各サーバに送信し、送信された前記ダミーデータまたは前記分割データについて、前記クライアントへの送信を指示することにより、前記各サーバから前記クライアントへのデータ転送速度を計測する、
処理を前記クライアントのコンピュータに実行させるデータ分散保存プログラム。
【０１６０】
（付記６）
付記１において、
前記分割データの送信を指示する処理の後、対応する前記分割データと前記二重化データとのうちのいずれかを取得し、取得した前記分割データと前記二重化データとを結合することにより、前記クライアントのデータを復元する、
処理を前記クライアントのコンピュータに実行させるデータ分散保存プログラム。
【０１６１】
（付記７）
プロセッサが、
クライアントのデータを分割した複数の分割データそれぞれを、該クライアントとアクセス可能な複数の各サーバに送信し、
前記各サーバから前記クライアントへのデータ転送速度に応じて、前記各サーバが保存すべき、分割データのデータ量を決定し、
前記決定されたデータ量のデータを保存するように、各サーバが保存した分割データの再配置先のサーバを、前記複数のサーバの中から決定し、
前記決定された再配置先のサーバに分割データを送信させる指示を、前記各サーバに送信する、
データ分散保存方法。
【０１６２】
（付記８）
クライアントと、該クライアントとアクセス可能な複数のサーバと、を有するデータ分散保存システムにおいて、
前記クライアントは、前記クライアントのデータを分割した複数の分割データそれぞれを、複数の各サーバに分割して送信し、
前記各サーバは、前記送信された分割データを保存し、
前記クライアントは、前記各サーバから前記クライアントへのデータ転送速度に応じて、前記各サーバが保存すべき、分割データのデータ量を決定し、
前記クライアントは、前記決定されたデータ量のデータを各サーバが保存するように、各サーバが保存した分割データの再配置先のサーバを、前記複数のサーバの中から決定し、
前記クライアントは、前記決定された再配置先のサーバに分割データを送信させる指示を、前記各サーバに送信し、
前記指示を受信した各サーバは、決定した再配置先のサーバに分割データを送信し、
前記送信された指示を受信した各サーバは、受信した分割データを保存する、
データ分散保存システム。
【符号の説明】
【０１６３】
１：クライアント装置
２、３、４：サーバ装置
１０：情報処理システム
１１、２１、３１、４１：記憶装置
１１ａ：元データ
２１ａ、３１ａ、４１ａ：バックアップデータ  
【図１】
2016126702.tif 000003
【図２】
2016126702.tif 000004
【図３】
2016126702.tif 000005
【図４】
2016126702.tif 000006
【図５】
2016126702.tif 000007
【図６】
2016126702.tif 000008
【図７】
2016126702.tif 000009
【図８】
2016126702.tif 000010
【図９】
2016126702.tif 000011
【図１０】
2016126702.tif 000012
【図１１】
2016126702.tif 000013
【図１２】
2016126702.tif 000014
【図１３】
2016126702.tif 000015
【図１４】
2016126702.tif 000016
【図１５】
2016126702.tif 000017
【図１６】
2016126702.tif 000018
【図１７】
2016126702.tif 000019
【図１８】
2016126702.tif 000020
【図１９】
2016126702.tif 000021
【図２０】
2016126702.tif 000022
【図２１】
2016126702.tif 000023
【図２２】
2016126702.tif 000024
【図２３】
2016126702.tif 000025
【図２４】
2016126702.tif 000026
【図２５】
2016126702.tif 000027
【図２６】
2016126702.tif 000028
【図２７】
2016126702.tif 000029
【図２８】
2016126702.tif 000030
【図２９】
2016126702.tif 000031
【図３０】
2016126702.tif 000032
【図３１】
2016126702.tif 000033
【図３２】
2016126702.tif 000034
【図３３】
2016126702.tif 000035
【図３４】
2016126702.tif 000036
【図３５】
2016126702.tif 000037