(57)【要約】      （修正有）【課題】分散処理システムの再構築に伴って生じるデータ退避に要する時間を短縮する。【解決手段】データ退避制御装置は、冗長化データブロックが分散格納された複数の装置のうち、退避対象のデータブロックを格納する退避元装置と退避対象のデータブロックの退避先である複数の退避先装置の各々との装置ペア毎に、データブロックの重複度合いを求め、装置ペアの各々のうち重複度合いがより小さい装置ペアから順に選択し、選択した装置ペアにおける退避元装置のデータブロックを、選択した装置ペアにおける退避先装置のデータブロックと重複しないように、退避先装置へ転送する。【選択図】図６
2016130962.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
冗長化されたデータブロックが分散して格納された複数の装置のうち、退避対象のデータブロックを格納する退避元装置と、前記退避対象のデータブロックの退避先となる複数の退避先装置の各々との装置ペア毎に、前記退避元装置に含まれるデータブロックと、前記退避先装置に含まれるデータブロックとの重複度合いを求め、
前記装置ペアの各々のうち前記重複度合いがより小さい装置ペアから順に選択し、
前記選択された装置ペアにおける前記退避元装置のデータブロックを、前記選択された装置ペアにおける前記退避先装置のデータブロックと重複しないように前記選択された装置ペアにおける前記退避先装置へ転送させる
ことを含む処理を実行させるデータ退避制御方法。
【請求項２】
前記重複度合いをスコアとして数値化し、
前記スコアの大小関係に基づいて、前記装置ペアの各々のうち前記重複度合いがより小さい装置ペアを選択する
請求項１記載のデータ退避制御方法。
【請求項３】
前記スコアは前記重複度合いが小さくなるに従って大きい値を取り、
前記装置ペアの各々のうち、前記スコアのより大きい装置ペアを前記重複度合いがより小さい装置ペアとして選択する
請求項２記載のデータ退避制御方法。
【請求項４】
前記複数の装置に含まれる各々のデータブロックについて、前記退避元装置に含まれるデータブロックであるか否かを表す情報、及び前記複数の退避先装置に含まれるデータブロックであるか否かを表す情報の各々を行列で表し、
前記行列を含む行列演算によって前記スコアを算出すると共に、前記行列を含む行列演算によって前記選択された装置ペアにおける前記退避元装置から、前記選択された装置ペアにおける前記退避先装置へ転送するデータブロックを選択する
請求項２又は請求項３記載のデータ退避制御方法。
【請求項５】
前記スコアが同じ装置ペアが複数存在する場合、前記スコアが同じ装置ペアの各々のうち、前記退避元装置と前記退避先装置とを接続する通信経路長がより短い装置ペアを選択する
請求項２〜請求項４の何れか１項に記載のデータ退避制御方法。
【請求項６】
コンピュータに、
冗長化されたデータブロックが分散して格納された複数の装置のうち、退避対象のデータブロックを格納する退避元装置と、前記退避対象のデータブロックの退避先となる複数の退避先装置の各々との装置ペア毎に、前記退避元装置に含まれるデータブロックと、前記退避先装置に含まれるデータブロックとの重複度合いを求め、
前記装置ペアの各々のうち前記重複度合いがより小さい装置ペアから順に選択し、
前記選択された装置ペアにおける前記退避元装置のデータブロックを、前記選択された装置ペアにおける前記退避先装置のデータブロックと重複しないように前記選択された装置ペアにおける前記退避先装置へ転送させる
ことを含む処理を実行させるためのデータ退避制御プログラム。
【請求項７】
冗長化されたデータブロックが分散して格納された複数の装置のうち、退避対象のデータブロックを格納する退避元装置と、前記退避対象のデータブロックの退避先となる複数の退避先装置の各々との装置ペア毎に、前記退避元装置に含まれるデータブロックと、前記退避先装置に含まれるデータブロックとの重複度合いを算出する算出部と、
前記装置ペアの各々のうち、前記算出部により算出された前記重複度合いがより小さい装置ペアから順に選択する選択部と、
前記選択部により選択された装置ペアにおける前記退避元装置のデータブロックを、前記選択された装置ペアにおける前記退避先装置のデータブロックと重複しないように前記選択された装置ペアにおける前記退避先装置へ転送させる指示を出す指示部と、
を備えたデータ退避制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ退避制御方法、データ退避制御プログラム、及びデータ退避制御装置に関する。
【背景技術】
【０００２】
コンピュータ性能の向上と共に、コンピュータでビッグデータ等に代表される多量のデータを処理する機会が増えつつある。コンピュータで多量のデータを処理する場合、単体のコンピュータで全てのデータを処理するよりも、複数のコンピュータにデータを分散して格納し、各々のコンピュータでデータを処理する分散処理を用いた方が、より短期間にデータを処理できる場合が多い。従って、近年、例えばコンピュータ等のように、データを記憶及び処理すると共に、ネットワークを介して他の装置と接続する複数の装置を含む分散処理システムを用いたデータ処理が注目されている。
【０００３】
分散処理システムでは、複数の装置にデータが分散して格納される。従って、分散処理システムでは、例えば装置等の故障によるデータ損失を防止するため、同一のデータを複数の装置に分散して格納する、いわゆるデータの冗長格納が行われる場合がある。
【０００４】
そして、分散処理システムでは例えば装置が故障した際等に、データの冗長性を維持するため、分散処理システム内の装置間でデータを移動させる場合がある。
【０００５】
また、分散処理システムでは、装置での処理過程で必要となるデータが必ずしも処理を実行する装置が管理する記憶装置に記憶されているとは限られず、他の装置が管理する記憶装置に記憶されている場合がある。この場合にも、分散処理システム内の装置間でデータを移動させる必要がある。
【０００６】
従って、従来から分散処理システム内に分散したデータの移動に関する手法が提案されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００９−５９３５７号公報
【特許文献２】特開２０１０−２３１５７６号公報
【特許文献３】特開２０１２−２２１４１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
また、分散処理システム構成の見直しに伴い、分散処理システムの規模を縮小する必要がある場合、削減対象である装置(使用を停止する装置)に含まれるデータを削減対象でない使用を継続する装置へ移動させる必要がある。そして、データの移動の際には、データの冗長性を維持するため、使用を継続する同じ装置内に同じデータが重複して格納されないようにデータを移動する必要がある。
【０００９】
しかしながら、削減対象である装置に含まれるデータを使用を継続する何れの装置へ移動すれば、より短時間に効率よく移動させることができるかの検討は進んでいない。
【００１０】
一つの側面として、本発明は、分散処理システムの再構築に伴って生じるデータ退避に要する時間を短縮することを目的とする。
【課題を解決するための手段】
【００１１】
一つの態様では、コンピュータに、冗長化データブロックが分散格納された複数の装置のうち、データブロックを格納する退避元装置と前記データブロックの退避先である複数の退避先装置の各々との装置ペア毎に、データブロックの重複度合いを求めさせる。そして、コンピュータに、前記装置ペアの各々のうち前記重複度合いがより小さい装置ペアから順に選択させる。そして、コンピュータに、前記選択された装置ペアにおける前記退避元装置のデータブロックを、前記選択された装置ペアにおける前記退避先装置のデータブロックと重複しないように、前記選択された装置ペアにおける前記退避先装置へ転送させる。
【発明の効果】
【００１２】
一つの側面として、分散処理システムの再構築に伴って生じるデータ退避に要する時間を短縮することができる、という効果を有する。
【図面の簡単な説明】
【００１３】
【図１】分散処理システムの一例を示す図である。
【図２】ノードにおけるブロックの格納状況の一例を示す図である。
【図３】スコア表の一例を示す図である。
【図４】更新後のスコア表の一例を示す図である。
【図５】コンピュータで実現する分散処理システムの一例を示す図である。
【図６】データ退避制御処理の流れの一例を示すフローチャートである。
【図７】行列Ｄｄ’の演算の一例を説明する図である。
【図８】行列Ｄｓ’の演算の一例を説明する図である。
【図９】転送指示リストの一例を示す図である。
【図１０】ブロック転送後のノードにおけるブロックの格納状況の一例を示す図である。
【図１１】スコアの算出式の例を示す図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照して本発明の実施形態の一例を詳細に説明する。
【００１５】
図１は、本実施形態に係る分散処理システム１０の一例を示した図である。
【００１６】
分散処理システム１０は、例えばユーザ端末２０、複数のノード３０、データブロック情報管理装置４０、及びデータ退避制御装置５０が通信回線６０により接続されたシステムである。ここで、ノードとは、例えばコンピュータ等のように、ユーザ端末２０から送信されたデータを記憶及び処理すると共に、ネットワークを介して他の装置と接続する装置のことである。本実施形態に係る通信回線６０をインターネット回線として説明するが、通信回線６０の種別はこれに限定されるものではない。例えば、通信回線６０は専用回線であっても、社内ＬＡＮ等のイントラネットであってもよい。また、通信回線６０は有線、無線、又は有線と無線との混在の何れの形態であってもよい。
【００１７】
分散処理システム１０では、ノード３０、データブロック情報管理装置４０、及びデータ退避制御装置５０を含むクラウドシステムにより、ユーザ端末２０のユーザにクラウドサービスを提供する。
【００１８】
クラウドサービスとは、通信回線６０上にソフトウエア及び当該ソフトウエアを実行するためのコンピュータ等を含むクラウドシステムを構築し、ユーザの契約内容に応じて、通信回線６０を介してクラウドシステムの処理能力をユーザに提供するサービスである。
【００１９】
ユーザ端末２０は、ユーザが業務等に用いるデータを後述するノード３０に送信すると共に、クラウドシステムで実行されたデータの処理結果を受信し、例えばユーザ端末２０の図示しないディスプレイ等に表示する。また、ユーザ端末２０は、クラウドシステムに含まれるノード３０の数を変更する等のシステム設定に関する指示を、例えば後述するデータ退避制御装置５０へ送信する。
【００２０】
ノード３０は、ユーザ端末２０から受信したデータを複数のノード３０に分散させて格納する。この際、ノード３０は、格納するデータの信頼性を向上させるため、データを複数のデータブロックに分割した上で各データブロックを複製し、複数のノード３０のうち予め定めた数のノードに同じデータブロックが重複しないように分散して格納する。なお、以下では「データブロック」のことを単に「ブロック」と称し、各ブロックには、ブロックを識別するためのブロック番号が付される。また、ブロック番号が同じブロックには、同じデータが含まれるものとする。
【００２１】
図２は、ノード３０におけるブロックの格納状況の一例を示した図である。ブロックの格納状況とは、どのブロック番号のブロックが複数あるノード３０のうち、何れのノード３０に格納されているかの状況をいう。
【００２２】
図２では、データがブロック番号ｂ１〜ｂ３、及びｂ１００００の４ブロックに分割され、各々のブロックが複製された上で、ブロック毎に６台のノード３０のうち何れか３台のノードに分散して格納されている状況を表している。なお、説明上、６台のノード３０には、各々のノードを識別するためｄ１、ｄ２、ｓ１、ｓ２、ｓ３、及びｓ４のノード番号が付されているものとする。ここでノード番号とは、複数のノード３０の各々を一意に識別するための番号である。
【００２３】
各ブロックをノード３０に分散して格納する場合、同じブロック番号のブロックが同じノード番号のノードに重複して格納されないようにすることで、同じブロック番号のブロックが異なる複数のノード３０に格納される。これは、何れかのノード３０が故障した場合であっても、データが復旧できるようにするためである。
【００２４】
なお、ブロックの冗長化数（図２の例では“３”）は一例であり、ブロックの冗長化数は、クラウドサービスにおいて実現すべきデータ保証に対する信頼性の度合いが高くなるに従って、大きな値に設定されることがある。
【００２５】
また、ノード３０は、ユーザ端末２０から受信したデータを格納する場合、ノード３０におけるブロックの格納状況が変化するため、ブロックの格納状況が変化したことを示す状変通知を後述するデータブロック情報管理装置４０へ送信する。
【００２６】
データブロック情報管理装置４０は、ノード３０から状変通知を受信した場合、ノード３０におけるブロックの格納状況を収集する。そして、データブロック情報管理装置４０は、ノード３０におけるブロックの格納状況を表すブロック存在情報５７を生成及び更新する。
【００２７】
また、データブロック情報管理装置４０は、後述するデータ退避制御装置５０からブロック存在情報更新指示を受信すると、自発的にノード３０におけるブロックの格納状況を収集し、ブロック存在情報５７を更新する。
【００２８】
更に、データブロック情報管理装置４０は、例えば、後述するデータ退避制御装置５０からブロック存在情報要求指示を受信すると、ブロック存在情報５７をデータ退避制御装置５０へ送信する。
【００２９】
一方、データ退避制御装置５０は、ユーザ端末２０からクラウドサービスの契約内容に基づいてユーザに割り当てられているノード３０の削減指示を受け付けると、削減ノードに格納されるブロックを使用継続ノードへ転送するようにノード３０へ指示する。ここで削減ノードとは、削減の対象となったノードであり、使用継続ノードとは、削減されずに使用を継続するノードのことをいう。
【００３０】
クラウドサービスでは、ユーザが要求する処理能力に応じた数のノード３０をユーザに割り当てる。そして、ユーザは、割り当てられたノード３０の数に応じた利用料をクラウドサービスのプロバイダへ支払う仕組みがとられる。すなわち、ユーザは、業務の負荷に応じて、自分に割り当てられるノード３０の数を増減させることができる。
【００３１】
従って、ユーザは業務の繁忙期にはノード３０の数を増加させて対応し、業務の閑散期にはクラウドサービスの利用料低減のため、ノード３０の数を削減させる等の対応が可能である。
【００３２】
データ退避制御装置５０は、ユーザに割り当てられているノード３０の数を削減させる際に、ノード３０に対して、できる限り短期間で削減ノードに含まれるブロックを使用継続ノードに転送させるための制御を行う装置である。
【００３３】
また一般に分散処理システム１０は、サービス品質保証（ＳＬＡ）の契約に従って、「３秒以内に処理結果をシステム利用者に回答する」などのレスポンス性能と「年間のべ１０分以上のシステム停止をしない」などの可用性を保証する必要がある。ＳＬＡを満たしてサービスを継続したままノード３０の数を削減するため、例えば一部のノード３０を利用不可として分散処理システム１０のユーザ端末からの処理リクエストを受け付けない状態にして、その状態のノード間でブロックを転送させる場合がある。こうすることで、残りのノードでユーザ端末からの処理リクエストに対応して可用性を保ち、ブロックの転送に伴うディスク処理負荷の影響をレスポンス時間に与えない状態を保ちながら、ノードの削減を行える。ただし、ノード３０を、処理リクエストを受け付けない状態に切り替え、転送後受け付ける状態に切り替える処理は、分散処理システム１０全体に負荷を与え処理性能低下につながる。そのためこの切り替えは可能な限り少ない回数と少ない切り替え対象ノード数で行うことが望ましい。
【００３４】
データ退避制御装置５０は、ユーザに割り当てられているノード３０の数を削減させる際に、できる限り一度に多くのブロックを転送させることで切り替え回数を削減し、切り替えに伴う処理性能低下を防ぐための制御を行う装置でもある。
【００３５】
こうした役割を持つデータ退避制御装置５０は、通信部５１、算出部５２、選択部５３、及び指示部５４の各機能部を有する。また、指示部５４は、転送更新指示部５５及びモード指示部５６を含む。また、データ退避制御装置５０は、ブロック存在情報５７、スコア表５８、及び転送指示リスト５９の各種情報を有する。
【００３６】
通信部５１は通信回線６０に接続され、ユーザ端末２０、ノード３０、及びデータブロック情報管理装置４０との間で、相互にノード数削減の処理に必要な情報及び指示を送受信する。
【００３７】
具体的には、通信部５１は、ユーザ端末２０からノード３０の削減指示を受信すると、ノード３０の削減指示を算出部５２及び選択部５３へ通知する。
【００３８】
そして、通信部５１は、選択部５３からブロック存在情報要求指示を受け付けると、データブロック情報管理装置４０に対してブロック存在情報要求指示を送信して、データブロック情報管理装置４０が管理するブロック存在情報５７を要求する。そして、通信部５１は、データブロック情報管理装置４０からブロック存在情報５７を受信すると選択部５３へ送信する。
【００３９】
また、通信部５１は、後述する指示部５４からブロック転送指示を受け付けると、ブロック転送指示をノード３０へ送信する。また、通信部５１は、後述する指示部５４から、データブロック情報管理装置４０で管理されるブロック存在情報５７の更新を要求する指示であるブロック存在情報更新指示を受け付けると、ブロック存在情報更新指示をデータブロック情報管理装置４０へ送信する。
【００４０】
なお、通信部５１は、各種指示等の送信先であるユーザ端末２０、ノード３０、及びデータブロック情報管理装置４０の宛先情報を予め有している。
【００４１】
算出部５２は、通信部５１からノード３０の削減指示を受け付けると、削減指示に含まれるノード３０の削減リストを取得する。この削減リストには、例えば削減指示の送信前にユーザに割り当てられているノード３０のノード番号と、ユーザが削減したいノード番号と、が含まれる。
【００４２】
そして、算出部５２は、ユーザに割り当てられている複数のノード３０のうち、ユーザが削減したいノード番号に対応するノードを削減ノード、削減ノード以外のノードを使用継続ノードとして、ユーザに割り当てられている複数のノード３０を分類する。
【００４３】
そして、算出部５２は、ブロック存在情報５７を参照して削減ノードと使用継続ノードとの全ての組み合わせ毎に、削減ノードに格納されているブロックと、使用継続ノードに格納されているブロックと、の重複度合いをスコアＳｃとして算出する。なお、削減ノードと使用継続ノードとの組み合わせをノードペアという。
【００４４】
スコアＳｃは、ノードペアにおけるブロックの重複度合いが小さくなるに従って、より大きな値に設定される。例えば、算出部５２は、各ノードペアにおいて、削減ノードに格納されるブロックのうち使用継続ノードに格納されていないブロックの数から、削減ノードに格納されるブロックのうち使用継続ノードに格納されているブロックの数を減じた値を算出する。そして、算出部５２は、この減算値を削減ノードに格納されているブロックの数で除した値を、ノードペアに対応したスコアＳｃとして設定する。すなわち、前述したスコアＳｃの算出式は（１）式として表される。
【００４５】
【数１】
2016130962.tif 000003
【００４６】
ここで、ｅは削減ノードに格納されるブロックのうち使用継続ノードに格納されていないブロックの数、ｕは削減ノードに格納されるブロックのうち使用継続ノードに格納されているブロックの数、ｔは削減ノードに格納されているブロックの数を表す。
【００４７】
算出部５２は、全てのノードペアの各々に対してスコアＳｃを算出し、スコア表５８を生成する。なお、スコアＳｃの算出に用いた（１）式は一例であり、スコアＳｃの算出式は（１）式に限定されないことは言うまでもない。
【００４８】
図３は、図２に示した６台のノード３０におけるブロック存在情報５７に基づいて算出部５２で生成されたスコア表５８の一例である。スコア表５８の左端の列には削減ノードのノード番号ｄ１、ｄ２が配置され、スコア表５８の上端の行には使用継続ノードのノード番号ｓ１、ｓ２、ｓ３、及びｓ４が配置されている。
【００４９】
そして、削減ノードのノード番号を含む行と使用継続ノードのノード番号を含む列とが交差する欄には、対応するノードペアのスコアが記載される。例えば、ｉ、ｊを自然数とし、Ｓｃ（ｄｉ、ｓｊ）を削減ノードｄｉ、使用継続ノードｓｊのノードペアにおけるスコアとすれば、ｉ＝１、ｊ＝４の場合、図３に示すスコア表５８からＳｃ（ｄ１、ｓ４）＝１を得ることができる。
【００５０】
選択部５３は、通信部５１からノード３０の削減指示を受け付けると、算出部５２と同様に、削減指示に含まれる削減リストを取得し、ユーザに割り当てられている複数のノード３０を削減ノード及び使用継続ノードに分類する。そして、選択部５３は、通信部５１へブロック存在情報要求指示を通知して、データブロック情報管理装置４０からブロック存在情報５７を取得する。
【００５１】
また、選択部５３は、算出部５２で算出されたスコア表５８を取得して、スコア表５８においてスコアの最も大きいノードペアを選択する。そして、選択部５３は、選択したノードペアの削減ノードに格納されるブロックで、且つ、選択されたノードペアの使用継続ノードに格納されていないブロックを転送対象ブロックとして特定する。更に、選択部５３は、選択したノードペアの削減ノードのノード番号、選択したノードペアの使用継続ノードのノード番号、及び特定した転送対象ブロックのブロック番号を組にした転送情報を生成する。
【００５２】
そして、選択部５３は、選択したノードペアに対応する行及び列に含まれるスコア表５８のスコアを全て負の無限大（−∞）に更新する。
【００５３】
図４は、スコア更新後のスコア表５８の一例を示した図である。図４は、図３で示したスコア表５８において、ノードペア＜ｄ１、ｓ４＞を選択した後に更新したスコア表５８を示している。なお、＜ｄｉ、ｓｊ＞は削減ノードｄｉと使用継続ノードｓｊとのノードペアを示す表記である。
【００５４】
選択部５３は、更新したスコア表５８から、再度スコアの最も大きいノードペアを選択して、選択したノードペアから転送情報を生成し、スコア表５８を更新する処理を、更新したスコア表５８から選択可能な全ての削減ノードが選択されるまで繰り返す。
【００５５】
そして、選択部５３は生成した転送情報に従って削減ノードから使用継続ノードへ転送対象ブロックを転送した後の、ノード３０におけるブロックの格納状況に基づいて、ブロック存在情報５７を更新する。
【００５６】
そして、選択部５３は、更新したブロック存在情報５７を参照し、まだ削減ノードにブロックが存在する場合には、更新したブロック存在情報５７を用いて算出部５２が新たに算出したスコア表５８を取得する。そして、選択部５３は、削減ノードにブロックが存在しなくなるまで、スコア表５８において最大のスコアを有するノードペアの選択、選択したノードペアにおける転送情報の生成、及びスコア表５８の更新の各処理を繰り返す。そして、選択部５３は、最終的に生成した全ての転送情報を含んだ転送指示リスト５９を生成し、ノード３０が転送指示リスト５９に従ってブロックの転送を開始するよう指示部５４に転送指示を通知する。
【００５７】
指示部５４は、選択部５３から転送指示を受け付けると、ブロック転送処理を開始するため、モード指示部５６へブロック転送の開始を通知する。
【００５８】
この場合、モード指示部５６は、転送指示リスト５９からブロック転送処理の対象である転送情報を１つ取得して、転送情報から削減ノードのノード番号及び使用継続ノードのノード番号を取得する。
【００５９】
そしてモード指示部５６は、削減ノードのノード番号及び使用継続ノードのノード番号と共に、クラウドサービスを停止させるサービス停止指示を通信部５１へ通知する。サービス停止指示は、当該指示を受信したノードでブロック転送以外のクラウドサービス処理、例えばユーザ端末２０から受信したデータの格納処理等を停止させるための指示である。
【００６０】
通信部５１は、ノード３０のうちモード指示部５６で指定されたノード番号を有する削減ノード及び使用継続ノードにサービス停止指示を送信し、指定されたノード番号を有する削減ノード及び使用継続ノードのクラウドサービスを停止させる。
【００６１】
モード指示部５６は、指定した削減ノード及び使用継続ノードのクラウドサービスを停止させた後、取得した転送情報を転送更新指示部５５へ通知する。
【００６２】
転送更新指示部５５は、モード指示部５６から受け付けた転送情報を参照し、削減ノードのノード番号及び使用継続ノードのノード番号と共に、転送情報に含まれる転送対象ブロックの転送を開始させるブロック転送指示を通信部５１へ通知する。
【００６３】
通信部５１は、ノード３０のうち転送更新指示部５５で指定されたノード番号を有する削減ノード及び使用継続ノードにブロック転送指示を送信し、指定した削減ノードから使用継続ノードへ転送対象ブロックを転送させる。
【００６４】
転送更新指示部５５は、ノード３０の指定した削減ノードから使用継続ノードへ転送対象ブロックを転送させた後、ブロックの転送が終了したことをモード指示部５６へ通知する。
【００６５】
モード指示部５６ではブロックの転送終了の通知を受け付けると、サービス停止指示で停止させた使用継続ノードのクラウドサービスを再開させるため、通信部５１へ使用継続ノードのノード番号と共にサービス再開指示を通知する。通信部５１は、ノード３０のうち、モード指示部５６で指定されたノード番号を有するノードにサービス再開指示を送信し、クラウドサービスを再開させる。
【００６６】
更に、モード指示部５６は転送指示リスト５９を参照し、まだ取得していない転送情報を取得する。そして、転送更新指示部５５、及びモード指示部５６は、取得した転送情報毎に、上述したブロック転送処理を繰り返し、転送指示リスト５９に含まれる全ての転送情報に従ったブロック転送をノード３０に実行させる。以上により、削減ノードに格納される全てのブロックが使用継続ノードに退避され、削減ノードには何れのブロックも含まれていない状態となる。
【００６７】
そして、転送更新指示部５５は、削減ノードに格納されていた全てのブロックが使用継続ノードに転送された後、データブロック情報管理装置４０が管理するノード３０のブロック存在情報５７を更新させるためのブロック情報更新指示を通信部５１へ通知する。
【００６８】
通信部５１は、データブロック情報管理装置４０にブロック存在情報更新指示を送信し、削減ノードに格納されていた全てのブロックが使用継続ノードに転送された後のノード３０におけるブロックの格納状況に基づいて、ブロック存在情報５７を更新させる。
【００６９】
次に、図５に、分散処理システム１０に含まれるユーザ端末２０、複数のノード３０、データブロック情報管理装置４０、及びデータ退避制御装置５０を、コンピュータで実現可能な一例としてのコンピュータシステム１００を示す。
【００７０】
分散処理システム１０としての図５に示すコンピュータシステム１００は、ユーザ端末２０としてのコンピュータ２００、複数のノード３０としての複数のコンピュータ３００、及びデータブロック情報管理装置４０としてのコンピュータ４００を含む。また、コンピュータシステム１００は、データ退避制御装置５０としてのコンピュータ５００を含む。
【００７１】
コンピュータ５００は、ＣＰＵ５０２、メモリ５０４、及び不揮発性の記憶部５０６を含む。ＣＰＵ５０２、メモリ５０４、及び不揮発性の記憶部５０６は、バス５０８を介して互いに接続される。また、コンピュータ５００は、キーボード及びマウス等の入力部５１０、並びにディスプレイ等の表示部５１２を備え、入力部５１０及び表示部５１２はバス５０８に接続される。またコンピュータ５００は、記録媒体に対して読み書きするためのＩ／Ｏ５１４がバス５０８に接続される。更に、コンピュータ５００は、通信回線６０に接続するためのインタフェースを含む通信ＩＦ（Interface）５１６を備え、通信ＩＦ５１６もバス５０８に接続される。なお、記憶部５０６はＨＤＤ(Hard Disk Drive)やフラッシュメモリ等によって実現できる。また、入力部５１０、表示部５１２、及びＩ／Ｏ５１４は必ずしもコンピュータ５００に必須ではない。
【００７２】
記憶部５０６には、コンピュータ５００を図１に示すデータ退避制御装置５０として機能させるためのデータ退避制御プログラム５１８が記憶される。記憶部５０６に記憶されたデータ退避制御プログラム５１８は、通信プロセス５２０、算出プロセス５２２、選択プロセス５２４、指示プロセス５２６を含む。
【００７３】
ＣＰＵ５０２は、データ退避制御プログラム５１８を記憶部５０６から読み出してメモリ５０４に展開し、データ退避制御プログラム５１８が有する各プロセスを実行する。
【００７４】
ＣＰＵ５０２がデータ退避制御プログラム５１８を記憶部５０６から読み出してメモリ５０４に展開し、データ退避制御プログラム５１８を実行することで、コンピュータ５００が図１に示すデータ退避制御装置５０として動作する。また、ＣＰＵ５０２が通信プロセス５２０を実行することで、コンピュータ５００が図１に示す通信部５１として動作する。また、ＣＰＵ５０２が算出プロセス５２２を実行することで、コンピュータ５００が図１に示す算出部５２として動作する。また、ＣＰＵ５０２が選択プロセス５２４を実行することで、コンピュータ５００が図１に示す選択部５３として動作する。更に、ＣＰＵ５０２が指示プロセス５２６を実行することで、コンピュータ５００が図１に示す転送更新指示部５５及びモード指示部５６を含む指示部５４として動作する。
【００７５】
なお、データ退避制御装置５０は、例えば半導体集積回路、より詳しくはＡＳＩＣ（Application Specific Integrated Circuit)等で実現することも可能である。
【００７６】
次に、本実施形態に係るデータ退避制御装置５０の作用を説明する。本実施形態に係るデータ退避制御装置５０は、例えばユーザ端末２０からノード３０の削減指示を受信した場合に、データ退避制御処理を実行する。
【００７７】
図６は、本実施形態に係るデータ退避制御処理の流れの一例を示したフローチャートである。なお、図６に示すフローチャートは、ユーザ端末２０から受信したノード３０の削減指示に対して、データブロック情報管理装置４０へブロック存在情報要求指示を送信した後のデータ退避制御処理の流れを示している。また、算出部５２及び選択部５３は、ノード３０の削減指示から、ノード３０の削減リストを予め取得しているものとする。また、ここでは、図２に示したノード３０におけるブロックの格納状況の例を用いて、本実施形態に係るデータ退避制御処理の流れを説明する。
【００７８】
まず、ステップＳ１０では、通信部５１は通信回線６０を介して何らかのデータを受信したか否かを判定する。そして、否定判定の場合には、通信回線６０を介して何らかのデータを受信するまでステップＳ１０の処理を繰り返す。肯定判定の場合にはステップＳ２０へ移行する。
【００７９】
ステップＳ２０では、通信部５１は、ステップＳ１０の処理で受信したデータの種別を取得して、データがブロック存在情報５７か否かを判定する。データの種別は、例えば受信したデータのヘッダに含まれており、通信部５１は受信したデータのヘッダを参照することでデータの種別を判別することができる。そして、ステップＳ２０の判定が否定判定の場合、すなわち受信したデータがブロック存在情報５７ではない場合には、データ退避制御処理を終了する。一方、肯定判定の場合には、ステップＳ３０へ移行する。
【００８０】
ステップＳ３０では、選択部５３は、ステップＳ１０の処理でデータブロック情報管理装置４０から受信したブロック存在情報５７を、メモリ５０４の予め定めた領域に保存する。この際、選択部５３はノード３０の削減リストを参照し、ブロック存在情報５７を削減ノードのブロック存在情報と、使用継続ノードのブロック存在情報と、に分割して、各々のブロック存在情報を行列形式でメモリ５０４の予め定めた領域に保存する。
【００８１】
ここで、図２に示したノード３０におけるブロックの格納状況の例において、ノード番号ｄ１、ｄ２のノードを削減ノード、ノード番号ｓ１、ｓ２、ｓ３、及びｓ４のノードを使用継続ノードとする。この場合、削減ノードのブロック存在情報を表す行列Ｄｄは（２）式、使用継続ノードのブロック存在情報を表す行列Ｄｓは（３）式で表される。
【００８２】
【数２】
2016130962.tif 000004
2016130962.tif 000005
【００８３】
ここで、行列Ｄｄの１列目は削減ノードｄ１におけるブロックの格納状況を表し、行列Ｄｄの２列目は削減ノードｄ２におけるブロックの格納状況を表す。
【００８４】
また、行列Ｄｄの１行目は、各削減ノードにおけるブロック番号ｂ１のブロックの格納状況を表し、行列Ｄｄの２行目は、各削減ノードにおけるブロック番号ｂ２のブロックの格納状況を表す。更に、行列Ｄｄの３行目は、各削減ノードにおけるブロック番号ｂ３のブロックの格納状況を表し、行列Ｄｄの４行目は、各削減ノードにおけるブロック番号ｂ１００００のブロックの格納状況を表す。
【００８５】
行列Ｄｄの各要素には“１”又は“０”の値が設定され、要素値が“１”の場合には、対応するブロック番号のブロックが存在することを表し、要素値が“０”の場合には、対応するブロック番号のブロックが存在しないことを表す。
【００８６】
例えば、（２）式の行列Ｄｄは、削減ノードｄ１にブロック番号ｂ１及びｂ１００００のブロックが存在し、削減ノードｄ２にブロック番号ｂ１、ｂ２、及びｂ３のブロックが存在することを表している。
【００８７】
一方、行列Ｄｓの１列目は使用継続ノードｓ１におけるブロックの格納状況を表し、行列Ｄｓの２列目は使用継続ノードｓ２におけるブロックの格納状況を表す。更に、行列Ｄｓの３列目は使用継続ノードｓ３におけるブロックの格納状況を表し、行列Ｄｓの４列目は使用継続ノードｓ４におけるブロックの格納状況を表す。
【００８８】
また、行列Ｄｓの１行目は、各使用継続ノードにおけるブロック番号ｂ１のブロックの格納状況を表し、行列Ｄｓの２行目は、各使用継続ノードにおけるブロック番号ｂ２のブロックの格納状況を表す。更に、行列Ｄｓの３行目は、各使用継続ノードにおけるブロック番号ｂ３のブロックの格納状況を表し、行列Ｄｓの４行目は、各使用継続ノードにおけるブロック番号ｂ１００００のブロックの格納状況を表す。
【００８９】
行列Ｄｓの各要素には“１”又は“０”の値が設定され、値の意味は行列Ｄｄの要素値の説明と同様である。
【００９０】
従って、（３）式の行列Ｄｓは、使用継続ノードｓ１にブロック番号ｂ１及びｂ２のブロックが存在し、使用継続ノードｓ２にブロック番号ｂ３及びｂ１００００のブロックが存在することを表している。また、（３）式の行列Ｄｓは、使用継続ノードｓ３にブロック番号ｂ２及びｂ１００００のブロックが存在し、使用継続ノードｓ４にブロック番号ｂ３のブロックが存在することを表している。
【００９１】
なお、行列Ｄｄと行列Ｄｓとでは、行とブロック番号との対応付けを同じにする。例えば、行列Ｄｄの１行目がブロック番号ｂ１に対応する場合、行列Ｄｓの１行目もブロック番号ｂ１に対応させる。
【００９２】
ステップＳ４０では、算出部５２は、削減ノードと使用継続ノードとの組み合わせである全てのノードペアの各々に対して、（１）式に従ってスコアＳｃを算出し、スコア表５８を生成する。
【００９３】
この際、算出部５２はステップＳ３０の処理でメモリ５０４に保存された行列Ｄｄ及び行列Ｄｓを用いて、行列演算を行うことでスコア表５８のスコアＳｃを生成する。
【００９４】
具体的には、各ノードペアにおける（１）式のｅ、すなわち、削減ノードに格納されるブロックのうち使用継続ノードに格納されていないブロックの数は、（４）式で表される。
【００９５】
【数３】
2016130962.tif 000006
【００９６】
ここで、Ｄｅは、各ノードペアにおけるｅの値を行列で表したものである。行列Ｄｅのｉ行ｊ列（ｉ，ｊは自然数：１≦ｉ≦|ｄ|、１≦ｊ≦|ｓ|）の要素は、削減ノードｄｉと使用継続ノードｓｊとのノードペア＜ｄｉ、ｓｊ＞におけるｅを表す。なお、｜ｄ｜は削減ノードの数を表し、｜ｓ｜は使用継続ノードの数を表す。更に、“Ｔ”は行列の転置、“×”は行列の積、“ｂａｒ”はｂａｒが付された行列と行数及び列数が等しく全ての要素値が“１”の行列から、ｂａｒが付された行列を引いた行列を表す。
【００９７】
また、各ノードペアにおける（１）式のｕ、すなわち、削減ノードに格納されるブロックのうち使用継続ノードに格納されているブロックの数は、（５）式で表される。
【００９８】
【数４】
2016130962.tif 000007
【００９９】
ここで、Ｄｕは、各ノードペアにおけるｕの値を行列で表したものである。行列Ｄｕのｉ行ｊ列の要素は、削減ノードｄｉと使用継続ノードｓｊとのノードペア＜ｄｉ、ｓｊ＞におけるｕを表す。
【０１００】
また、各ノードペアにおける（１）式のｔ、すなわち、削減ノードに格納されているブロックの数は、（６）式で表される。
【０１０１】
【数５】
2016130962.tif 000008
【０１０２】
ここで、Ｄｔは、各ノードペアにおけるｔの値を行列で表したものである。行列Ｄｔのｉ行目の要素は、削減ノードｄｉにおけるｔを表す。更に、｜ｂ｜は冗長化前のブロック数、すなわち行列Ｄｄ又は行列Ｄｓの行数、１ｎ×ｍは全ての要素値が“１”であるｎ行ｍ列の行列を表す。なお、ｎ、ｍは自然数を表す。従って、本実施形態の例、すなわち、行列Ｄｄが（２）式、行列Ｄｓが（３）式で表される場合、｜ｂ｜はブロック番号ｂ１、ｂ２、ｂ３、及びｂ１００００の“４”となる。
【０１０３】
従って、スコア表５８は（７）式で表される。
【０１０４】
【数６】
2016130962.tif 000009
【０１０５】
ここで、Ｄｓｃは、各ノードペアにおけるスコアＳｃの値を行列で表したものである。行列Ｄｓｃのｉ行ｊ列の要素Ｄｓｃ（ｉ，ｊ）は、削減ノードｄｉと使用継続ノードｓｊとのノードペア＜ｄｉ、ｓｊ＞におけるスコアＳｃを表す。すなわち、Ｄｓｃは図３に示したスコア表５８を表す。また、演算子“／”は対応する要素同士の除算を表す。ただし、“０”で除した場合の演算結果は“−∞”とする。なお、実際の演算では、“−∞”として、各要素Ｄｓｃ（ｉ，ｊ）が取りうる最小の値に比べて十分に小さい値を設定するようにしてもよい。また、｜ｓ｜は既に説明したように使用継続ノードの数を表し、本実施形態の例では“４”になる。
【０１０６】
（７）式に基づいて行列Ｄｓｃを演算した結果を（８）式に示す。
【０１０７】
【数７】
2016130962.tif 000010
【０１０８】
算出部５２は、算出した行列Ｄｓｃをメモリ５０４の予め定めた領域に保存する。
【０１０９】
ステップＳ５０では、選択部５３は、メモリ５０４から行列Ｄｓｃを取得し、行列ＤｓｃにおいてスコアＳｃが最も大きいノードペアを選択する。従って、本実施形態の例の場合、選択部５３によってノードペア＜ｄ１，ｓ４＞が選択される。
【０１１０】
ステップＳ６０では、ステップＳ５０の処理で選択したノードペア＜ｄｉ，ｓｊ＞に対応した転送情報を生成する。行列Ｄｂを、ステップＳ５０の処理で選択したノードペア＜ｄｉ，ｓｊ＞における転送対象ブロックを表す行列とすれば、行列Ｄｂは（９）式で表される。
【０１１１】
【数８】
2016130962.tif 000011
【０１１２】
ここで、行列Ｄｄ[,(ｄｉ)]は、削減ノードｄｉにおけるブロックの格納状況を表す行列Ｄｄのｉ列目の列ベクトルを並べた行列である。また、行列Ｄｓ[,(ｓｊ)]は、使用継続ノードｓｊにおけるブロックの格納状況を表す行列Ｄｓのｊ列目の列ベクトルを並べた行列である。また、演算子“＆”は、真であれば“１”、偽であれば“０”の値をとる行列要素同士の論理積を表す。
【０１１３】
行列Ｄｂは｜ｂ｜行１列の行列となり、行とブロック番号との対応付けは、行列Ｄｄ及び行列Ｄｓと同じ対応付けが行われる。（１０）式にノードペア＜ｄ１、ｓ４＞を選択した場合の行列Ｄｂを示す。
【０１１４】
【数９】
2016130962.tif 000012
【０１１５】
選択部５３は、要素が“１”となる行に対応したブロック番号のブロックを、選択したノードペアの削減ノードから使用継続ノードへ転送する転送対象ブロックとして特定する。従って（９）式の演算結果が（１０）式で表される場合、選択部５３は、ブロック番号ｂ１及びブロック番号ｂ１００００のブロックを、削減ノードｄ１から使用継続ノードｓ４へ転送する転送対象ブロックとして特定する。
【０１１６】
そして、選択部５３は、ステップＳ５０の処理で選択したノードペアのノード番号、すなわち削減ノード及び使用継続ノードのノード番号と、行列Ｄｂと、を１組とした転送情報を生成し、メモリ５０４の予め定めた領域に保存する。従って、本実施形態の例では、（ｄ１、ｓ４、（１，０，０，１）Ｔ）の転送情報が生成される。
【０１１７】
ステップＳ７０では、選択部５３は行列Ｄｓｃのうち、ステップＳ５０の処理で選択したノードペアに対応する行及び列に含まれる全ての要素を“−∞”に設定する。行列Ｄｓｃの該当する要素を“−∞”にする理由は、ステップＳ５０の処理において、一度選択したノードペアが選択されないようにするためである。
【０１１８】
本実施形態の例では、ステップＳ５０においてノードペア＜ｄ１，ｓ４＞が選択されているため、ステップＳ７０の処理を実行した後の行列Ｄｓｃは（１１）式のように更新される。
【０１１９】
【数１０】
2016130962.tif 000013
【０１２０】
ステップＳ８０では、選択部５３はステップＳ５０の処理で、選択可能な全ての削減ノードを含むノードペアを選択したか否かを判定する。ここで、選択可能な削減ノードとは、行列Ｄｓｃにおいて−∞でない要素を含む行ベクトルに対応する削減ノードをいう。
【０１２１】
選択可能な全ての削減ノードが選択されたか否かの判定は、行列Ｄｓｃの全ての要素が“−∞”であるか否かによって判定することができる。否定判定の場合にはステップＳ５０へ移行し、選択可能な全ての削減ノードが選択されるまで、ステップＳ５０〜Ｓ８０の処理を繰り返す。
【０１２２】
本実施形態の例では、ステップＳ７０の処理で行列Ｄｓｃが（１１）式のように更新されている。従って、選択部５３は、２度目のステップＳ５０の処理で、共にスコアＳｃが“１／３”であるノードペア＜ｄ２、ｓ２＞、又はノードペア＜ｄ２、ｓ３＞の何れかのノードペアを選択する。
【０１２３】
この様に、行列ＤｓｃにスコアＳｃが同じノードペアが複数存在する場合は、何れのノードペアを選択してもよい。ここでは一例としてノードペア＜ｄ２，ｓ２＞を選択する。しかし、スコアＳｃが同じ場合のノードペアの選択方法はこれに限定されない。例えば、削減ノードと使用継続ノードとの通信経路長がより短いノードペアを選択するようにしてもよい。この場合、ブロックを表す信号の伝送距離がより短くなるため、削減ノードと使用継続ノードとの間で実行されるブロック転送が終了するまでの時間をより短縮することができる。
【０１２４】
そして、選択部５３は、２度目のステップＳ６０の処理で、（９）式に従って行列Ｄｂを演算し、ノードペア＜ｄ２，ｓ２＞における転送対象ブロックを特定し、転送情報を生成する。従って、本実施形態の例では、（ｄ２、ｓ２、（１，１，０，０）Ｔ）の転送情報が生成される。
【０１２５】
そして、選択部５３は２度目のステップＳ７０の処理で、（１１）式で表される行列Ｄｓｃに対して、ノードペア＜ｄ２，ｓ２＞に対応する行及び列に含まれる全ての要素を“−∞”に設定し、行列Ｄｓｃを更新する。更新後の行列Ｄｓｃを（１２）式に示す。
【０１２６】
【数１１】
2016130962.tif 000014
【０１２７】
一方、ステップＳ８０の判定処理が肯定判定の場合、ステップＳ９０へ移行する。従って、本実施形態の例では、２度目のステップＳ７０の処理が終了した後、ステップＳ８０の判定処理により、ステップＳ９０へ移行する。
【０１２８】
ステップＳ９０では、選択部５３は、ステップＳ６０の処理で生成した転送情報に従って各転送情報に含まれるノードペア間で転送対象ブロックを転送した後の、ノード３０のブロックの格納状況に基づいて、ブロック存在情報５７を更新する。具体的には、選択部５３は、ステップＳ５０の処理で選択したノードペアの集合と、行列Ｄｄ及び行列Ｄｓとを用いた行列演算により、行列Ｄｄ及び行列Ｄｓを更新する。
【０１２９】
今、ステップＳ５０の処理で選択したノードペアの集合を、｛＜ｄ１，ｓｊ１＞，＜ｄ２，ｓｊ２＞，・・・，＜ｄ｜ｄ｜，ｓｊ｜ｄ｜＞｝とする。この場合、行列Ｄｄの更新後の行列Ｄｄ’は（１３）式で表され、行列Ｄｓの更新後の行列Ｄｓ’は（１４）式で表される。
【０１３０】
【数１２】
2016130962.tif 000015
2016130962.tif 000016
【０１３１】
ここで、関数ｆ１(ｄｉ)は、削減ノードｄｉに対してノードペアとなる使用継続ノードを表す行列Ｄｓの列番号を出力する関数である。もし削減ノードｄｉに対してノードペアとなる使用継続ノードｓｊが存在しない場合には、関数ｆ１(ｄｉ)は値“＃”を出力する。また、Ｄｓ[,(ｃ１，ｃ２，・・・，ｃｎ)]は、行列Ｄｓのうち（  ）内に列記されたｃｎ列目の列ベクトルを、列記順に並べた行列を表す。ただし、Ｄｓ[,(ｃ１，ｃ２，・・・，ｃｎ)]は、ｃｎの値が“＃”の場合には、要素が全て１の列ベクトルを並べる。
【０１３２】
また、関数ｆ２(ｓｊ)は、使用継続ノードｓｊに対してノードペアとなる削減ノードを表す行列Ｄｄの列番号を出力する関数である。もし使用継続ノードｓｊに対してノードペアとなる削減ノードが存在しない場合には、関数ｆ２(ｓｊ)は値“＊”を出力する。
【０１３３】
また、Ｄｄ[,(ｃ１，ｃ２，・・・，ｃｎ)]は、行列Ｄｄのうち（  ）内に列記されたｃｎ列目の列ベクトルを、列記順に並べた行列を表す。ただし、Ｄｄ[,(ｃ１，ｃ２，・・・，ｃｎ)]は、ｃｎの値が“＊”の場合には、要素が全て０の列ベクトルを並べる。また、演算子“｜”は対応する要素同士の論理和を表す。
【０１３４】
図７はＤｄ’の演算の一例を説明した図であり、図８はＤｓ’の演算の一例を説明した図である。まず、図７を用いて、行列Ｄｄ’の具体的な演算を説明する。
【０１３５】
まず、ｆ１(ｄｉ)を計算する。本実施形態の例では、ステップＳ５０の処理においてノードペア＜ｄ１，ｓ４＞及び＜ｄ２，ｓ２＞が選択される。従って、各々の削減ノードに対してノードペアとなる使用継続ノードを表す行列Ｄｓの列番号は、ｆ１(ｄ１)＝４、ｆ１(ｄ２)＝２となる。従って、行列Ｄｄ’はＤｄ’＝Ｄｄ＆Ｄｓ[,(４，２)]として求められる。ここで、Ｄｓ[,(４，２)]は、行列Ｄｓの４列目と２列目の列ベクトルを、（  ）内の列記順に並べた行列である。
【０１３６】
次に、図８を用いて、行列Ｄｓ’の具体的な演算を説明する。
【０１３７】
まず、ｆ２(ｓｊ)を計算する。本実施形態の例では、使用継続ノードはｓ１〜ｓ４の４台であり、使用継続ノードｓ１及びｓ３に対してノードペアとなる削減ノードは存在しない。
【０１３８】
従って、各々の使用継続ノードに対してノードペアとなる削減ノードを表す行列Ｄｄの列番号は、ｆ２(ｓ１)＝＊、ｆ２(ｓ２)＝２、ｆ２(ｓ３)＝＊、ｆ２(ｓ４)＝１となる。従って、行列Ｄｓ’はＤｓ’＝Ｄｓ｜Ｄｄ[,(＊，２，＊，１)]として求められる。ここで、Ｄｄ[,(＊，２，＊，１)]は、要素が全て０の列ベクトルと、行列Ｄｄの１列目及び２列目を（  ）内の列記順に並べた行列である。
【０１３９】
以上により求められた本実施形態の例における行列Ｄｄ’を（１５）式、行列Ｄｓ’を（１６）式に示す。
【０１４０】
【数１３】
2016130962.tif 000017
2016130962.tif 000018
【０１４１】
そして、ステップＳ１００では、選択部５３は、ステップＳ９０の処理で更新した行列Ｄｄ’を参照して、削減ノードに何れかのブロックが存在するか否かを判定する。肯定判定の場合、すなわち行列Ｄｄ’が零行列でない場合にはステップＳ４０の処理に移行し、行列Ｄｄ’が零行列になるまでステップＳ４０〜Ｓ１００の処理を繰り返し実行する。
【０１４２】
本実施形態の例では、（１５）式に示すように行列Ｄｄ’は零行列ではないため、選択部５３は、ステップＳ４０〜Ｓ１００の処理を繰り返し実行する。この繰り返し実行のステップＳ４０の処理では、算出部５２は、ステップＳ９０の処理で更新された行列Ｄｄ’及び行列Ｄｓ’を用いてスコアＳｃを算出し、新たなスコア表５８である行列Ｄｓｃ’を生成する。
【０１４３】
本実施形態の例において、算出部５２が生成する行列Ｄｓｃ’を（１７）式に示す。
【０１４４】
【数１４】
2016130962.tif 000019
【０１４５】
更に、選択部５３は、ステップＳ５０の処理で行列Ｄｓｃ’を参照し、行列Ｄｓｃ’においてスコアＳｃが最も大きいノードペアを選択する。この場合、ノードペア＜ｄ２，ｓ１＞とノードペア＜ｄ２，ｓ３＞のスコアＳｃが共に“１”となるが、既に説明したようにスコアＳｃが同じ場合、何れのノードペアを選択してもよいため、ここでは、選択部５３はノードペア＜ｄ２，ｓ１＞を選択するものとする。
【０１４６】
そして、ステップＳ６０の処理において、選択部５３は（９）式に従ってノードペア＜ｄ２，ｓ１＞における転送対象ブロックを表す行列Ｄｂ’を算出する。この場合の行列Ｄｂ’を（１８）式に示す。
【０１４７】
【数１５】
2016130962.tif 000020
【０１４８】
このようにして、選択部５３は（ｄ２、ｓ１、（０，０，１，０）Ｔ）を転送情報として生成する。
【０１４９】
以上により本実施形態の例では、選択部５３は図９に示すように、転送情報１、転送情報２、及び転送情報３を含む転送指示リスト５９を生成し、メモリ５０４の予め定めた領域に保存する。
【０１５０】
一方、ステップＳ１００の判定処理において否定判定となった場合には、データ退避制御処理を終了する。
【０１５１】
指示部５４は、上記に説明したデータ退避制御処理によって生成された転送指示リスト５９を参照し、転送情報に指定されたノードペア間で転送対象ブロックを転送するよう、ノード３０に対してブロック転送指示を送信する。
【０１５２】
図１０は、本実施形態の例において生成された転送指示リスト５９に従って、ノード３０にブロックを転送させた後のノード３０のブロックの格納状況を示す図である。
【０１５３】
図１０に示すように、図９に示した転送情報１に従って、削減ノードｄ１から使用継続ノードｓ４へ、ブロック番号ｂ１及びｂ１００００のブロックが移動される。また、図９に示した転送情報２に従って、削減ノードｄ２から使用継続ノードｓ２へ、ブロック番号ｂ１及びｂ２のブロックが移動される。更に、図９に示した転送情報３に従って、削減ノードｄ２から使用継続ノードｓ１へ、ブロック番号ｂ３のブロックが移動される。
【０１５４】
そして、転送更新指示部５５は、通信部５１を介してデータブロック情報管理装置４０へブロック存在情報更新指示を送信し、データブロック情報管理装置４０に対して、データブロック情報管理装置４０が管理するブロック存在情報５７の更新を要求する。これにより、データブロック情報管理装置４０が管理するブロック存在情報５７は、削減ノードｄｉに含まれる全てのブロックを使用継続ノードｓｊへ退避させた後のノード３０のブロックの格納状況を反映したものとなる。
【０１５５】
このように、本実施形態に係るデータ退避制御装置５０は、削減ノードｄｉと使用継続ノードｓｊとの組み合わせであるノードペア毎に、削減ノードに含まれるブロックと、使用継続ノードに含まれるブロックとの重複度合いを求める。そして、データ退避制御装置５０は、重複度合いがより小さいノードペアから順に選択し、選択したノードペアの使用継続ノードでブロックが重複しないように、削減ノードのブロックを使用継続ノードへ転送させるブロック転送指示をノード３０へ出す。
【０１５６】
一方、削減ノードに含まれる全てのブロックを使用継続ノードへ転送する場合に、本実施形態で説明したデータ退避制御処理の他、例えば、単に記憶装置の空き容量が大きい使用継続ノードから順に転送する方法等が考えられる。しかし、ノード３０では各ブロックは冗長化され、複数の使用継続ノードに分散して格納されている。
【０１５７】
従って、使用継続ノードに含まれるブロックのブロック番号を考慮せずに、削減ノードから指定した使用継続ノードへブロックを転送する場合、指定した使用継続ノードに重複するブロックが確率的に存在し、転送できないブロックが削減ノードに残ることがある。
【０１５８】
この場合、削減ノードに含まれる全てのブロックが使用継続ノードに転送されるまで、次々に使用継続ノードを変えながら、削減ノードに含まれるブロックの転送を実行する必要がある。
【０１５９】
しかし、ブロックの転送の前後には、削減ノードと使用継続ノードとの間でブロックの転送に係る事前手続き及び事後手続きが必要となる。これらの手続きが行われる期間は、ブロックの転送が行われていない期間であり、すなわち、ブロックの転送に対するオーバーヘッドとなる。
【０１６０】
従って、できるだけ短時間で削減ノードに含まれる全てのブロックの転送を完了させるためには、できるだけブロックの転送を行うノードペアの数を少なくした方がよい。
【０１６１】
本実施形態に係るデータ退避制御装置５０は、全てのノードペアの中から、重複せずに転送できるブロックの数がより多いノードペアを優先して選択するため、より少ないノードペアの数で、削減ノードに含まれる全てのブロックの転送を完了させることができる。
【０１６２】
また、本実施形態に係るデータ退避制御装置５０は、行列演算によりブロック存在情報５７の更新、スコア表５８の更新、及び転送対象ブロックの特定を行う。従って、本実施形態に係るデータ退避制御装置５０は、例えばStrassenのアルゴリズム等、行列演算に関する公知の高速演算アルゴリズムを利用することができる。従って、高速演算アルゴリズムが利用できない他の演算方法と比較して、より短時間に転送指示リスト５９を生成することができる。
【０１６３】
なお、本実施形態に係るデータ退避制御装置５０では、一例として、ノードペアにおけるブロックの重複度合いを示すスコアＳｃを（１）式を用いて算出したが、スコアＳｃの算出方法はこれに限られない。
【０１６４】
図１１は、スコアＳｃの算出式の例を示した図である。
【０１６５】
番号（１）の算出式は、より多い転送数、すなわち、使用継続ノードへ転送可能なブロック数がより多い場合に、より大きな値となる算出式である。また、番号（２）の算出式は、より少ない重複数、すなわち、削減ノードと使用継続ノードとの間で重複するブロック数がより少ない場合に、より大きな値となる算出式である。また、番号（３）の算出式は、より少ない転送不必要数、すなわち、使用継続ノードへ転送できないブロック数がより少ない場合に、より大きな値となる算出式である。また、番号（４）の算出式は、より多い転送割合、すなわち、削減ノードに含まれるブロックのうち、使用継続ノードへ転送可能なブロックの割合がより大きい場合に、より大きな値となる算出式である。また、番号（５）の算出式は、削減ノードに含まれるブロックのうち、削減ノードと使用継続ノードとの間で重複するブロックの割合がより小さい場合に、より大きな値となる算出式である。なお、番号（４）の算出式は（１）式と同じ算出式である。また、番号（６）の算出式は、削減ノードに含まれるブロックのうち、使用継続ノードへ転送できないブロックの割合がより小さい場合に、より大きな値となる算出式である。
【０１６６】
以上、実施形態を用いて開示の技術を説明したが、開示の技術は上記実施形態に記載の範囲には限定されない。開示の技術の要旨を逸脱しない範囲で上記実施形態に多様な変更または改良を加えることができ、当該変更または改良を加えた形態も開示の技術の技術的範囲に含まれる。例えば、開示の技術の要旨を逸脱しない範囲で処理の順序を変更してもよい。
【０１６７】
また、実施形態では、データ退避制御プログラム５１８が記憶部５０６に予め記憶（インストール）されている態様を説明したが、これに限定されるものではない。開示の技術に係るデータ退避制御プログラムは、コンピュータ読取可能な記録媒体に記録されている形態で提供することも可能である。例えば、開示の技術に係るデータ退避制御プログラムは、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、及びＵＳＢメモリ等の可搬型記録媒体に記録されている形態で提供することも可能である。また、開示の技術に係るデータ退避制御プログラムは、フラッシュメモリ等の半導体メモリ等に記録されている形態で提供することも可能である。
【０１６８】
なお、本実施形態に係るデータ退避制御装置５０では、一例として、ノードペアにおけるブロックの重複度合いが小さくなるに従って、より大きな値に設定されるスコアを用いて、複数のノードペアの中からデータの転送を実行するノードペアを選択した。
【０１６９】
しかし、ノードペアにおけるブロックの重複度合いが小さくなるに従って、より小さい値に設定されるスコアを用いて、複数のノードペアの中からデータの転送を実行するノードペアを選択してもよいことは言うまでもない。
【０１７０】
この場合、図６に示したステップＳ５０の処理において、選択部５３は、メモリ５０４から行列Ｄｓｃを取得し、行列ＤｓｃにおいてスコアＳｃが最も小さいノードペアを選択する。そして、ステップＳ７０の処理において、選択部５３は行列Ｄｓｃのうち、ステップＳ５０の処理で選択したノードペアに対応する行及び列に含まれる全ての要素を無限大に設定すればよい。そして、ステップＳ８０の処理において、選択部５３は、行列Ｄｓｃの全ての要素が無限大であるか否かによって、選択可能な全ての削減ノードがステップＳ５０の処理で選択されたか否かを判定すればよい。また、単にノードペアにおけるブロックの重複度合いと、重複度合いに対応するスコアの大小関係が逆転しただけであるため、図６における各ステップで説明した演算処理をそのまま適用することができる。
【０１７１】
また、本実施形態に係るデータ退避制御装置５０では、ユーザ端末２０から受信したノード３０の削減指示からノード３０の削減リストを取得したが、データ退避制御装置５０の管理者が入力部５１０から入力するようにしてもよい。また、データ退避制御装置５０は、ノード３０の削減指示をユーザ端末２０から直接受信するのではなく、例えばデータブロック情報管理装置４０等のクラウドシステムに含まれる他の装置を介して受信するようにしてもよい。
【０１７２】
以上の実施形態に関し、更に以下の付記を開示する。
【０１７３】
（付記１）
コンピュータに、
冗長化されたデータブロックが分散して格納された複数の装置のうち、退避対象のデータブロックを格納する退避元装置と、前記退避対象のデータブロックの退避先となる複数の退避先装置の各々との装置ペア毎に、前記退避元装置に含まれるデータブロックと、前記退避先装置に含まれるデータブロックとの重複度合いを求め、
前記装置ペアの各々のうち前記重複度合いがより小さい装置ペアから順に選択し、
前記選択された装置ペアにおける前記退避元装置のデータブロックを、前記選択された装置ペアにおける前記退避先装置のデータブロックと重複しないように前記選択された装置ペアにおける前記退避先装置へ転送させる
ことを含む処理を実行させるデータ退避制御方法。
【０１７４】
（付記２）
前記重複度合いをスコアとして数値化し、
前記スコアの大小関係に基づいて、前記装置ペアの各々のうち前記重複度合いがより小さい装置ペアを選択する
付記１記載のデータ退避制御方法。
【０１７５】
（付記３）
前記スコアは前記重複度合いが小さくなるに従って大きい値を取り、
前記装置ペアの各々のうち、前記スコアのより大きい装置ペアを前記重複度合いがより小さい装置ペアとして選択する
付記２記載のデータ退避制御方法。
【０１７６】
（付記４）
前記複数の装置に含まれる各々のデータブロックについて、前記退避元装置に含まれるデータブロックであるか否かを表す情報、及び前記複数の退避先装置に含まれるデータブロックであるか否かを表す情報の各々を行列で表し、
前記行列を含む行列演算によって前記スコアを算出すると共に、前記行列を含む行列演算によって前記選択された装置ペアにおける前記退避元装置から、前記選択された装置ペアにおける前記退避先装置へ転送するデータブロックを選択する
付記２又は付記３記載のデータ退避制御方法。
【０１７７】
（付記５）
前記スコアが同じ装置ペアが複数存在する場合、前記スコアが同じ装置ペアの各々のうち、前記退避元装置と前記退避先装置とを接続する通信経路長がより短い装置ペアを選択する
付記２〜付記４の何れか１項に記載のデータ退避制御方法。
【０１７８】
（付記６）
コンピュータに、
冗長化されたデータブロックが分散して格納された複数の装置のうち、退避対象のデータブロックを格納する退避元装置と、前記退避対象のデータブロックの退避先となる複数の退避先装置の各々との装置ペア毎に、前記退避元装置に含まれるデータブロックと、前記退避先装置に含まれるデータブロックとの重複度合いを求め、
前記装置ペアの各々のうち前記重複度合いがより小さい装置ペアから順に選択し、
前記選択された装置ペアにおける前記退避元装置のデータブロックを、前記選択された装置ペアにおける前記退避先装置のデータブロックと重複しないように前記選択された装置ペアにおける前記退避先装置へ転送させる
ことを含む処理を実行させるためのデータ退避制御プログラム。
【０１７９】
（付記７）
前記重複度合いをスコアとして数値化し、
前記スコアの大小関係に基づいて、前記装置ペアの各々のうち前記重複度合いがより小さい装置ペアを選択する
付記６記載のデータ退避制御プログラム。
【０１８０】
（付記８）
前記スコアは前記重複度合いが小さくなるに従って大きい値を取り、
前記装置ペアの各々のうち、前記スコアのより大きい装置ペアを前記重複度合いがより小さい装置ペアとして選択する
付記７記載のデータ退避制御プログラム。
【０１８１】
（付記９）
前記複数の装置に含まれる各々のデータブロックについて、前記退避元装置に含まれるデータブロックであるか否かを表す情報、及び前記複数の退避先装置に含まれるデータブロックであるか否かを表す情報の各々を行列で表し、
前記行列を含む行列演算によって前記スコアを算出すると共に、前記行列を含む行列演算によって前記選択された装置ペアにおける前記退避元装置から、前記選択された装置ペアにおける前記退避先装置へ転送するデータブロックを選択する
付記７又は付記８記載のデータ退避制御プログラム。
【０１８２】
（付記１０）
前記スコアが同じ装置ペアが複数存在する場合、前記スコアが同じ装置ペアの各々のうち、前記退避元装置と前記退避先装置とを接続する通信経路長がより短い装置ペアを選択する
付記７〜付記９の何れか１項に記載のデータ退避制御プログラム。
【０１８３】
（付記１１）
冗長化されたデータブロックが分散して格納された複数の装置のうち、退避対象のデータブロックを格納する退避元装置と、前記退避対象のデータブロックの退避先となる複数の退避先装置の各々との装置ペア毎に、前記退避元装置に含まれるデータブロックと、前記退避先装置に含まれるデータブロックとの重複度合いを算出する算出部と、
前記装置ペアの各々のうち、前記算出部により算出された前記重複度合いがより小さい装置ペアから順に選択する選択部と、
前記選択部により選択された装置ペアにおける前記退避元装置のデータブロックを、前記選択された装置ペアにおける前記退避先装置のデータブロックと重複しないように前記選択された装置ペアにおける前記退避先装置へ転送させる指示を出す指示部と、
を備えたデータ退避制御装置。
【０１８４】
（付記１２）
前記算出部は、前記重複度合いをスコアとして数値化し、
前記選択部は、前記算出部で算出した前記スコアの大小関係に基づいて、前記装置ペアの各々のうち前記重複度合いがより小さい装置ペアを選択する
付記１１記載のデータ退避制御装置。
【０１８５】
（付記１３）
前記算出部は、前記重複度合いが小さくなるに従って大きい値を取るように前記スコアを算出し、
前記選択部は、前記装置ペアの各々のうち、前記算出部で算出された前記スコアのより大きい装置ペアを前記重複度合いがより小さい装置ペアとして選択する
付記１２記載のデータ退避制御装置。
【０１８６】
（付記１４）
前記複数の装置に含まれる各々のデータブロックについて、前記退避元装置に含まれるデータブロックであるか否かを表す情報、及び前記複数の退避先装置に含まれるデータブロックであるか否かを表す情報の各々を行列で表し、
前記算出部は、前記スコアを前記行列を含む行列演算によって算出すると共に、
前記選択部は、前記行列を含む行列演算によって前記選択された装置ペアにおける前記退避元装置から、前記選択された装置ペアにおける前記退避先装置へ転送するデータブロックを選択する
付記１２又は付記１３記載のデータ退避制御装置。
【０１８７】
（付記１５）
前記選択部は、前記スコアが同じ装置ペアが複数存在する場合、前記スコアが同じ装置ペアの各々のうち、前記退避元装置と前記退避先装置とを接続する通信経路長がより短い装置ペアを選択する
付記１２〜付記１４の何れか１項に記載のデータ退避制御装置。
【０１８８】
（付記１６）
コンピュータに、
冗長化されたデータブロックが分散して格納された複数の装置のうち、退避対象のデータブロックを格納する退避元装置と、前記退避対象のデータブロックの退避先となる複数の退避先装置の各々との装置ペア毎に、前記退避元装置に含まれるデータブロックと、前記退避先装置に含まれるデータブロックとの重複度合いを求め、
前記装置ペアの各々のうち前記重複度合いがより小さい装置ペアから順に選択し、
前記選択された装置ペアにおける前記退避元装置のデータブロックを、前記選択された装置ペアにおける前記退避先装置のデータブロックと重複しないように前記選択された装置ペアにおける前記退避先装置へ転送させる
ことを含む処理を実行させるためのデータ退避制御プログラムを記録したコンピュータ読み取り可能な記録媒体。
【符号の説明】
【０１８９】
１０  分散処理システム
２０  ユーザ端末
３０  ノード
４０  データブロック情報管理装置
５０  データ退避制御装置
５１  通信部
５２  算出部
５３  選択部
５４  指示部
５５  転送更新指示部
５６  モード指示部
５７  ブロック存在情報
５８  スコア表
５９  転送指示リスト
６０  通信回線
１００  コンピュータシステム
２００、３００、４００、５００  コンピュータ
５０２  ＣＰＵ
５０４  メモリ
５０６  記憶部
５１６  通信ＩＦ
５１８  データ退避制御プログラム
ｄ１、ｄ２  削減ノード
ｓ１〜ｓ４  使用継続ノード
【図１】
2016130962.tif 000021
【図２】
2016130962.tif 000022
【図３】
2016130962.tif 000023
【図４】
2016130962.tif 000024
【図５】
2016130962.tif 000025
【図６】
2016130962.tif 000026
【図７】
2016130962.tif 000027
【図８】
2016130962.tif 000028
【図９】
2016130962.tif 000029
【図１１】
2016130962.tif 000030
【図１０】
2016130962.tif 000031