(57)【要約】【課題】外部アプリケーションの読み出し性能の低下を防止する。【解決手段】外部アプリケーションが書き込むファイルデータを固定長のブロックに分割して予め定められた冗長度の数のサーバに格納する分割ファイルシステムにおけるデータ再配置装置、方法およびプログラムを提供する。サーバのストレージ使用率を平準化するためのデータ再配置処理における優先度を示す再配置優先度をブロック各々に付与しておき、データ再配置処理を行う際に、付与されている再配置優先度に基づいて、データ再配置処理を実行する対象となるブロックを選択する。【選択図】図１
2015022327.tif 000002
【特許請求の範囲】
【請求項１】
外部アプリケーションが書き込むファイルデータを固定長のブロックに分割して予め定められた冗長度の数のサーバに格納する際に、各サーバに格納されるブロック各々について、データ再配置処理の優先度を示す再配置優先度を付与する再配置優先度付与部と、
前記再配置優先度に基づいて、前記ブロックのデータ再配置処理を実行するデータ再配置実行部と、
を備えることを特徴とするデータ再配置装置。
【請求項２】
前記再配置優先度付与部は、前記外部アプリケーションが書き込むファイルデータを固定長に分割して得られたブロックのうち、前記外部アプリケーションが動作するサーバと同一のサーバが保持するブロックには低い再配置優先度、前記外部アプリケーションが動作するサーバとは異なるサーバが保持するブロックには高い再配置優先度を付与し、
前記データ再配置実行部は、前記再配置優先度が高いブロックから前記データ再配置処理を実行することを特徴とする請求項１に記載のデータ再配置装置。
【請求項３】
外部アプリケーションが書き込むファイルデータを固定長のブロックに分割して予め定められた冗長度の数のサーバに格納する際に、各サーバに格納されるブロック各々について、データ再配置処理の優先度を示す再配置優先度を付与する再配置優先度付与工程と、
前記再配置優先度に基づいて、前記ブロックのデータ再配置処理を実行するデータ再配置実行工程と、
を含むことを特徴とするデータ再配置方法。
【請求項４】
前記再配置優先度付与工程は、前記外部アプリケーションが書き込むファイルデータを固定長に分割して得られるブロックのうち、前記外部アプリケーションが動作するサーバと同一のサーバが保持するブロックには低い再配置優先度、前記外部アプリケーションが動作するサーバとは異なるサーバが保持するブロックには高い再配置優先度を付与し、
前記データ再配置実行工程は、前記再配置優先度が高いブロックから前記データ再配置処理を実行することを特徴とする請求項３に記載のデータ再配置方法。
【請求項５】
コンピュータを請求項１または２のいずれか１つに記載のデータ再配置装置として機能させるためのデータ再配置プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ再配置装置、方法およびプログラムに関する。
【背景技術】
【０００２】
近年、分散ファイルシステム（Distributed  File  System）が広く利用されるようになっている。分散ファイルシステムは、ネットワークで接続された多数のサーバで構成され、巨大な記憶装置を実現する。典型的には、分散ファイルシステムは、複数のラックにまたがる数十台から数百台、それ以上のサーバを接続することで構成される。
【０００３】
このような分散ファイルシステムの例としては、Google  File  System（以下、ＧＦＳ、非特許文献１参照）やHadoop  Distributed  File  System（以下、ＨＤＦＳ、非特許文献２参照）が知られている。これらのシステムでは、ファイルを固定長のブロックに分割して、分散ファイルシステムを構成する各サーバに格納する。可用性や耐障害性を高めるために、各ブロックは定められた冗長度の数のサーバに複製して格納される。これにより、あるサーバに障害が発生しても、他のサーバに格納されているブロックを用いて処理を継続することができる。また、ブロックをサーバに格納するときは、可用性や耐障害性、読み書き性能が最大になるように格納先のサーバを決定する。
【０００４】
従来の分散ファイルシステムにおいては、外部アプリケーションがデータを読み出す場合、当該外部アプリケーションが動作しているサーバ（動作サーバとも呼ぶ。）に対して、ネットワークトポロジ的に最も距離の近いサーバからブロックを読み出す。これによって、ブロックのネットワーク転送にかかる時間や処理量を抑制する。
【０００５】
しかし、分散ファイルシステムを長期間にわたって運用すると、サーバ間のストレージ使用が不均等になり、読み書きの処理負荷に偏りが生じる可能性がある。そこで、データ格納量が多いサーバから少ないサーバへとデータを移動させ、分散ファイルシステム全体としてサーバのストレージ使用を平準化するデータ再配置技術が提案されている。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Sanjay  Ghemawat,  Howard  Gobioff,  Shun-Tak  Leung,  The  Google  File  System,  Proceedings  of  the  19th  ACM  Symposium  on  Operating  Systems  Principles,  pages  29-43,  October,  2003.
【非特許文献２】Konstantin  Shvachko,  Hairong  Kuang,  Sanjay  Radia,  Robert  Chansler,  The  Hadoop  Distributed  File  System,  Proceedings  of  the  26th  IEEE  Symposium  on  Mass  Storage  Systems  and  Technologies,  pages  1-10,  May,  2010.
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来のデータ再配置技術においては、処理の結果として動作サーバに格納されていたブロックが他のサーバに移動する場合がある。その結果、外部アプリケーションがブロックを読み出そうとすると、動作サーバ以外のサーバからブロック転送を実行することになる。このため、読み出し性能が低下する。
【０００８】
開示の技術は、上記に鑑みてなされたものであって、外部アプリケーションの読み出し性能の低下を防止することができる分散ファイルシステムのデータ再配置装置、方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、実施形態に係るデータ再配置装置、方法およびプログラムは、外部アプリケーションが書き込むファイルデータを固定長のブロックに分割して予め定められた冗長度の数のサーバに格納する際に、各サーバに格納されるブロック各々について、データ再配置処理の優先度を示す再配置優先度を付与し、再配置優先度に基づいて、ブロックのデータ再配置処理を実行することを特徴とする。
【発明の効果】
【００１０】
開示するデータ再配置装置、方法およびプログラムは、外部アプリケーションの読み出し性能の低下を防止することができるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】図１は、第１の実施形態に係るデータ再配置システムの構成例を示す図である。
【図２】図２は、第１の実施形態におけるファイルデータと固定長のブロックの関係を示す図である。
【図３】図３は、第１の実施形態におけるマスタサーバの構成例を示す図である。
【図４】図４は、第１の実施形態におけるブロック位置管理テーブルの構成例を示す図である。
【図５】図５は、第１の実施形態におけるデータサーバ状態管理テーブルの構成例を示す図である。
【図６】図６は、第１の実施形態における再配置元ブロック情報テーブルの構成例を示す図である。
【図７】図７は、第１の実施形態における再配置先データサーバ識別子リストの構成例を示す図である。
【図８】図８は、第１の実施形態におけるデータサーバの構成例を示す図である。
【図９】図９は、第１の実施形態におけるブロック情報テーブルの構成例を示す図である。
【図１０】図１０は、第１の実施形態におけるブロック生成処理において、マスタサーバのブロック位置管理部が外部アプリケーションからブロック生成要求を受信したときの動作の一例を示すフローチャートである。
【図１１】図１１は、第１の実施形態におけるブロック生成処理において、データサーバのデータアクセス部がブロック生成要求を受信したときの動作の一例を示すフローチャートである。
【図１２】図１２は、第１の実施形態におけるデータ再配置実行処理でのマスタサーバのデータ再配置制御部の動作の一例を示すフローチャートである。
【図１３】図１３は、第１の実施形態におけるデータ再配置実行処理での再配置元データサーバのデータ再配置実行部がブロック情報テーブル取得要求を受信したときの動作の一例を示すフローチャートである。
【図１４】図１４は、第１の実施形態におけるデータ再配置実行処理での再配置先データサーバのデータ再配置実行部がデータ再配置要求を受信したときの動作の一例を示すフローチャートである。
【図１５】図１５は、第１の実施形態におけるデータ再配置実行処理でのブロックコピー元データサーバのデータアクセス部がブロックコピー要求を受信したときの動作の一例を示すフローチャートである。
【図１６】図１６は、第１の実施形態におけるデータ再配置実行処理でのマスタサーバのブロック位置管理部がブロック登録要求を受信したときの動作の一例を示すフローチャートである。
【図１７】図１７は、第１の実施形態におけるデータ再配置実行処理での再配置元データサーバのデータアクセス部がブロック削除要求を受信したときの動作の一例を示すフローチャートである。
【図１８】図１８は、データ再配置装置による一連の処理を実行するプログラムであるデータ再配置プログラムによる情報処理が、コンピュータを用いて具体的に実現されることを示す図である。
【発明を実施するための形態】
【００１２】
以下に、開示するデータ再配置装置、方法およびプログラムの実施形態を図面に基づいて詳細に説明する。なお、実施形態は開示の技術を限定するものではない。また、各実施形態は、適宜組み合わせることができる。
【００１３】
［ＧＦＳおよびＨＤＦＳにおけるブロックの格納処理］
まず、実施形態の前提として、ＧＦＳおよびＨＤＦＳにおけるブロックの格納処理の一例について説明する。
【００１４】
ＧＦＳでは、どのサーバにブロックを格納するか決定する場合、以下のように処理を行う。
（１）ブロックは、ストレージ使用率が低いサーバに作成する。
（２）特定のサーバに負荷が偏らないようにするために、各サーバにおける最近のブロック生成の数に上限を設ける。
（３）ブロックは、ラック間をまたがり複数のサーバに作成する。
【００１５】
また、ＨＤＦＳでは、例えば、冗長度が３の場合、ブロックを作成するサーバは次のように選択する。まず、１つ目のブロックは書き込みを要求した外部アプリケーションが動作しているサーバと同一のサーバに作成する。そして、２つ目のブロックは１つ目のサーバとは異なるラックの任意のサーバに作成する。さらに、３つ目のブロックは２つ目のサーバと同じラックに存在するサーバだが２つ目のサーバとは異なる任意のサーバに作成する。
【００１６】
［外部アプリケーションによるデータ読み出し処理］
ＧＦＳやＨＤＦＳでは、外部アプリケーションがデータを読み出すとき、ブロックのネットワーク転送を抑制するために、外部アプリケーションが動作しているサーバに対してネットワークトポロジ的に最も距離の近いサーバからブロックを読み出す。
【００１７】
例えば、ＨＤＦＳでは、外部アプリケーションがデータを書き込み、その後、当該データを読み出す場合、当該データの１つ目のブロックは外部アプリケーションが動作するサーバと同一のサーバに格納されている。このため、データ読み出し時にブロックのネットワーク転送が発生しない。したがって、外部アプリケーションが動作しているサーバとは異なるサーバからネットワークを介してブロックを読み出す場合と比べて高速な読み出しが可能である。
【００１８】
このようにブロックを効率的に格納し読み出すように処理が行われるが、他方、分散ファイルシステムの長期間運用によって、ファイルの生成や削除、サーバの追加や削除が行われる。すると、サーバ間でストレージ使用が不均等になり、サーバによって読み書きの負荷に偏りが生じることがある。そこで、分散ファイルシステムでは、負荷を平準化するためにデータの再配置を実行する。すなわち、大量のデータを格納しているサーバから少量のデータしか格納していないサーバにデータを移動させ、分散ファイルシステム全体でサーバのストレージ使用を平準化するデータ再配置処理を実行する。ＧＦＳでは、自動的にデータ再配置処理が実行される。ＨＤＦＳでは、データ再配置処理を実行するためのコマンドが提供されている。
【００１９】
（第１の実施形態）
図１は、第１の実施形態に係るデータ再配置システムの構成例を示す図である。第１の実施形態では、分散ファイルシステムにおけるマスタサーバおよびデータサーバとしてデータ再配置装置を説明する。
【００２０】
［第１の実施形態のデータ再配置システムの構成の一例］
図１に示すように、第１の実施形態のデータ再配置装置は、分散ファイルシステムすなわちデータ再配置システムを構成するマスタサーバ１００と、複数のデータサーバ２００、３００、４００、５００、６００として構成される。図１では、例として、５つのデータサーバを示しているが、データサーバの数は５つに限定されない。外部アプリケーション７００はファイルの読み出しや書き込みを要求する。
【００２１】
データサーバ２００〜６００には各データサーバを一意に識別するためのデータサーバ識別子（ＩＤ：Identifier）が割り当てられる。例えば、データサーバ２００〜６００が動作するサーバに割り当てられたＩＰアドレスをデータサーバ識別子とする。図１の例では、データサーバ２００、３００、４００、５００、６００にはそれぞれデータサーバ識別子ｄｓ２、ｄｓ３、ｄｓ４、ｄｓ５、ｄｓ６が割り当てられている。
【００２２】
外部アプリケーション７００がデータサーバに書き込むファイルデータは固定長のブロックに分割され、各ブロックに当該ブロックを一意に識別するためのブロック識別子が割り当てられる。各ブロックはそれぞれ定められた冗長度の数のデータサーバに格納される。
【００２３】
ファイルデータの例を図２に示す。図２は、第１の実施形態におけるファイルデータと固定長のブロックの関係を示す図である。図２の例では、ファイルデータ７１０は固定長のブロック７１１、７１２、７１３に分割される。ブロック７１１、７１２、７１３にはそれぞれブロック識別子ｂ１、ｂ２、ｂ３が割り当てられる。なお、ファイルのサイズが固定長の倍数でない場合、末尾ブロック７１３のサイズは固定長よりも小さくなる。また、ファイル中にデータが存在しない区間がある場合、固定長よりも小さいブロックとなることがある。
【００２４】
［第１の実施形態のマスタサーバ１００の構成の一例］
図３は、第１の実施形態におけるマスタサーバ１００の構成例を示す図である。マスタサーバ１００は、ブロック位置管理部１１０、データサーバ状態管理部１２０、再配置優先度付与部１３０およびデータ再配置制御部１４０を備える。ブロック位置管理部１１０は、ブロック位置管理テーブル１１１を保持する。データサーバ状態管理部１２０は、データサーバ状態管理テーブル１２１を保持する。データ再配置制御部１４０は、再配置元ブロック情報テーブル１４１および再配置先データサーバ識別子リスト１４２を備える。なお、再配置元ブロック情報テーブル１４１および再配置先データサーバ識別子リスト１４２はデータ再配置実行処理時に作成され、それ以外のときには格納されないものとする。
【００２５】
以下、マスタサーバ１００による処理および格納される情報の詳細につき説明する。
【００２６】
ブロック位置管理部１１０は、データサーバ２００〜６００へのブロックの割り当てを管理する。ブロック位置管理部１１０は、データサーバ２００〜６００へのブロックの割り当てを管理するための情報を記憶するブロック位置管理テーブル１１１を管理する。
【００２７】
図４は、第１の実施形態におけるブロック位置管理テーブル１１１の構成例を示す図である。ブロック位置管理テーブル１１１は、各ブロックに対応付けて、当該ブロックを一意に識別するためのブロック識別子と、当該ブロックを格納する複数のデータサーバ各々を一意に識別するためのデータサーバ識別子のリストであるデータサーバ識別子リストと、を保持する。例えば、図４の例では、ブロック識別子「ｂ１」で識別されるブロックは、データサーバ識別子「ｄｓ２」、「ｄｓ４」、「ｄｓ５」で識別される３つのデータサーバに格納されていることが示されている。また、ブロック識別子「ｂ２」で識別されるブロックは、データサーバ識別子「ｄｓ２」、「ｄｓ４」、「ｄｓ６」で識別される３つのデータサーバに格納されていることが示されている。また、ブロック識別子「ｂ３」で識別されるブロックは、データサーバ識別子「ｄｓ２」、「ｄｓ３」、「ｄｓ６」で識別される３つのデータサーバに格納されていることが示されている。また、ブロック識別子「ｂ４」で識別されるブロックは、データサーバ識別子「ｄｓ２」、「ｄｓ４」、「ｄｓ５」で識別される３つのデータサーバに格納されていることが示されている。
【００２８】
データサーバ状態管理部１２０は、データサーバ２００〜６００の状態を管理する。データサーバ状態管理部１２０は、データサーバ２００〜６００の状態に関する情報を格納するデータサーバ状態管理テーブル１２１を管理する。
【００２９】
図５は、第１の実施形態におけるデータサーバ状態管理テーブル１２１の構成例を示す図である。データサーバ状態管理テーブル１２１は、各データサーバのデータサーバ識別子に対応付けて、当該データサーバのデータ記憶部（後述）に格納可能なデータの最大容量と、データ記憶部の空き容量と、を保持する。図５の例では、データサーバ識別子「ｄｓ２」で識別されるデータサーバのデータ記憶部に格納可能なデータの最大容量は２．０テラバイト（ＴＢ）であり、現在の空き容量は１．０テラバイト（ＴＢ）であることが示されている。
【００３０】
再配置優先度付与部１３０は、各ブロックに再配置優先度を付与する。再配置優先度は後述するデータサーバのブロック情報テーブルに格納される（図９）。再配置優先度付与部１３０による再配置優先度付与処理の詳細については後述する。
【００３１】
データ再配置制御部１４０は、再配置元データサーバと再配置先データサーバを選択し、ブロックに付与された再配置優先度に基づいて、再配置元データサーバから再配置先データサーバへのブロックの再配置を制御する。
【００３２】
また、データ再配置制御部１４０は、データ再配置実行処理の実行時に、データ再配置実行処理の対象となるブロックについての情報を格納する再配置元ブロック情報テーブル１４１を管理する。また、データ再配置制御部１４０は、データ再配置実行処理の対象であるブロックの再配置先候補である再配置先データサーバのリストである再配置先データサーバ識別子リスト１４２を管理する。図６は、第１の実施形態における再配置元ブロック情報テーブル１４１の構成例を示す図である。図７は、第１の実施形態における再配置先データサーバ識別子リスト１４２の構成例を示す図である。再配置元ブロック情報テーブル１４１の構成は、後述するブロック情報テーブル（図９）と同様である。データ再配置制御部１４０によるデータ再配置実行処理、再配置元ブロック情報テーブル１４１および再配置先データサーバ識別子リスト１４２に関連する処理の詳細については後述する。
【００３３】
［第１の実施形態のデータサーバの構成例］
図８は、第１の実施形態におけるデータサーバの構成例を示す図である。なお、データサーバ２００〜６００の構成はいずれも同様であるものとし、以下、データサーバ２００を代表例として説明する。以下の説明では、必要に応じて対応する他のデータサーバ３００〜６００の構成要素の参照符号を、括弧を付して併記する。
【００３４】
データサーバ２００（３００，４００，５００，６００）は、データ記憶部２１０（３１０，４１０，５１０，６１０）、データアクセス部２２０（３２０，４２０，５２０，６２０）、データ再配置実行部２３０（３３０，４３０，５３０，６３０）および状態通知部２４０（３４０，４４０，５４０，６４０）を備える。
【００３５】
データ記憶部２１０（３１０，４１０，５１０，６１０）はデータサーバ２００（３００，４００，５００，６００）が格納するすべてのブロック、および当該ブロックに対応するブロック情報テーブル２１１（３１１，４１１，５１１，６１１）を保持する。
【００３６】
図９は、第１の実施形態におけるブロック情報テーブル２１１（３１１，４１１，５１１，６１１）の構成例を示す図である。第１の実施形態に係るブロック情報テーブル２１１（３１１，４１１，５１１，６１１）は、格納する各ブロックについて、当該ブロックを一意に識別するためのブロック識別子と、データ記憶部２１０（３１０，４１０，５１０，６１０）内での当該ブロックの格納場所と、を対応付けて保持する。また、ブロック情報テーブル２１１（３１１，４１１，５１１，６１１）はさらに、各ブロックについて、当該ブロックのサイズと、当該ブロックに付与される再配置優先度と、を保持する。例えば、図９の例では、ブロック識別子「ｂ１」で識別されるブロックは、データ記憶部２１０内の「ｐ１」で識別される位置に格納されていることが示されている。また、当該ブロックのサイズは、６４メガバイト（ＭＢ）であること、付与される再配置優先度は「低」であることが示されている。
【００３７】
データアクセス部２２０（３２０，４２０，５２０，６２０）は、データ記憶部２１０（３１０，４１０，５１０，６１０）から当該データ記憶部２１０（３１０，４１０，５１０，６１０）に存在するブロックの読み出しを実行する。また、データアクセス部２２０（３２０，４２０，５２０，６２０）は、ブロック情報テーブル２１１（３１１，４１１，５１１，６１１）からの情報の読み出しを実行する。さらに、データアクセス部２２０（３２０，４２０，５２０，６２０）は、データ記憶部２１０（３１０，４１０，５１０，６１０）へのブロックの書き込みやブロック情報テーブル２１１（３１１，４１１，５１１，６１１）への情報の書き込みを行う。
【００３８】
データ再配置実行部２３０（３３０，４３０，５３０，６３０）は、当該データサーバ２００（３００，４００，５００，６００）に係るデータ再配置実行処理を実行する。データ再配置実行部２３０（３３０，４３０，５３０，６３０）によるデータ再配置実行処理の詳細については後述する。
【００３９】
状態通知部２４０（３４０，４４０，５４０，６４０）は、データ記憶部２１０（３１０，４１０，５１０，６１０）の状態を監視し、マスタサーバ１００に通知する。具体的には、状態通知部２４０（３４０，４４０，５４０，６４０）は、データ記憶部２１０（３１０，４１０，５１０，６１０）に格納可能な最大容量とデータ記憶部２１０（３１０，４１０，５１０，６１０）の空き容量とを定期的に検知する。そして、状態通知部２４０（３４０，４４０，５４０，６４０）は、検知した最大容量と空き容量とを定期的にマスタサーバ１００のデータサーバ状態管理部１２０へ通知する。なお、ここでは定期的に状態を検知し通知するものとするが、なんらかのイベントの発生に応じて、またはオペレータの入力等に応じて検知および通知を実行するものとしてもよい。
【００４０】
［第１の実施形態におけるデータ再配置処理の流れの一例］
第１の実施形態に係るデータ再配置装置によるデータ再配置処理につき説明する。第１の実施形態におけるデータ再配置処理は、再配置優先度付与処理とデータ再配置実行処理とを含む。
【００４１】
再配置優先度付与処理とは、データサーバに格納する各ブロックに対して、当該ブロックに対するデータ再配置処理の優先度を示す再配置優先度を付与する処理である。以下に説明する例において、再配置優先度付与処理は、ブロック生成処理の一部として実行される。ブロック生成処理は、マスタサーバ１００のブロック位置管理部１１０によるブロックの登録と、再配置優先度付与部１３０による前記ブロックへの再配置優先度の付与と、データサーバによるブロックの生成処理と、を含む。
【００４２】
データ再配置実行処理は、各ブロックに付与された再配置優先度に基づいて当該ブロックの再配置を実行する処理である。以下に説明する例において、データ再配置実行処理は、マスタサーバ１００のデータ再配置制御部１４０によるデータ再配置の制御と、データサーバ２００（３００，４００，５００，６００）のデータ再配置実行部２３０（３３０，４３０，５３０，６３０）によるデータ再配置の実行と、を含む。
【００４３】
［ブロック生成処理の流れ］
ブロック生成処理についてさらに詳細に説明する。
【００４４】
［マスタサーバ１００における処理］
図１０は、第１の実施形態におけるブロック生成処理において、マスタサーバ１００のブロック位置管理部１１０が外部アプリケーション７００からブロック生成要求を受信したときの動作の一例を示すフローチャートである。まず、ブロック生成処理においてマスタサーバ１００が実行する処理について、図１０を参照して説明する。
【００４５】
ブロック生成処理においては、まず外部アプリケーション７００は、ファイルデータの書き込み時にマスタサーバ１００のブロック位置管理部１１０へブロック生成要求を送信する。ブロック位置管理部１１０はブロック生成要求を受信すると、冗長度の数のデータサーバにブロックを生成し、当該ブロックのブロック識別子と当該ブロックを格納するデータサーバのデータサーバ識別子リストをブロック位置管理テーブル１１１に登録する。
【００４６】
以下、図１０に即して、ブロック生成処理においてマスタサーバ１００のブロック位置管理部１１０が外部アプリケーション７００からブロック生成要求を受信したときの動作を説明する。
【００４７】
まず、外部アプリケーション７００は、マスタサーバ１００に対してブロック生成要求を送信する。マスタサーバ１００はブロック生成要求を受信する（ステップＳ１２０１）と当該ブロック生成要求をブロック位置管理部１１０に送る。
【００４８】
そして、ブロック位置管理部１１０は、データサーバ状態管理部１２０のデータサーバ状態管理テーブル１２１から各データサーバにおけるデータ記憶部の空き容量を取得する。そして、ブロック位置管理部１１０は、データ記憶部の空き容量が定められた閾値以上のデータサーバの中から予め定められた冗長度の数のデータサーバを選択する（ステップＳ１２０２）。
【００４９】
ブロック位置管理部１１０は、各データサーバの空き容量と当該データサーバが配置されるラックに基づいて、ブロックの格納先となるサーバを選択する。すなわち、ブロック位置管理部１１０は、データ記憶部の空き容量が予め定められた閾値以上のデータサーバを選択する。また、ブロック位置管理部１１０は、ブロックを格納するデータサーバが複数のラックにまたがるようにデータサーバを選択する。
【００５０】
例えば、予め定められた冗長度が３であり、ブロックをそれぞれ異なるラックに配置されるサーバで動作するデータサーバに格納するものとする。この場合、ブロック位置管理部１１０は、１つ目のデータサーバとして、ブロック生成要求を送信した外部アプリケーション７００が動作しているサーバと同一のサーバで動作しているデータサーバを選択する。そしてブロック位置管理部１１０は、２つ目のデータサーバとして、１つ目のデータサーバとは異なるラックのサーバで動作しているデータサーバを選択する。さらに、ブロック位置管理部１１０は、３つ目のデータサーバとして１つ目のラックと２つ目のラックとは異なるラックのサーバで動作しているデータサーバを選択する。
【００５１】
そして、ブロック位置管理部１１０は、ブロックを格納するデータサーバのデータサーバ識別子リストを生成する。なお、ブロック位置管理部１１０は、空き容量不足等により予め定められた冗長度の数のデータサーバを選択できない場合は、外部アプリケーション７００へブロック生成失敗を送信する。
【００５２】
次に、ブロック位置管理部１１０は、格納するブロックのブロック識別子を生成し（ステップＳ１２０３）、再配置優先度付与部１３０に対して再配置優先度の算出を指示する。
【００５３】
再配置優先度付与部１３０は、指示に応じて、再配置優先度を算出する（ステップＳ１２０４）。例えば、再配置優先度付与部１３０は、ブロック生成要求を送信した外部アプリケーションが動作しているサーバと同一のサーバで動作しているデータサーバに保持させるブロックには低い再配置優先度を算出し付与する。また、再配置優先度付与部１３０は、その他のサーバで動作しているデータサーバに保持させるブロックには高い再配置優先度を算出し付与する。
【００５４】
再配置優先度の算出が終わると、マスタサーバ１００は、ブロック位置管理部１１０が生成したデータサーバ識別子リストにある各データサーバ識別子が示すデータサーバのデータアクセス部へブロック生成要求を送信する（ステップＳ１２０５）。このとき、マスタサーバ１００は、ブロック生成要求とともに、ステップＳ１２０３で生成したブロック識別子と、ステップＳ１２０４で算出した再配置優先度と、を送信する。
【００５５】
上述の通り、第１の実施形態では、データサーバ識別子として、データサーバのＩＰアドレスを用いる。このため、マスタサーバ１００は、データサーバ識別子に基づいて、当該ＩＰアドレスが示すデータサーバのデータアクセス部にアクセス可能である。しかし、ＩＰアドレス以外の情報をデータサーバ識別子としている場合は、別途、データサーバ識別子とＩＰアドレスとの対応付けを行うための機構を用意する。
【００５６】
マスタサーバ１００は、該当するデータサーバにブロック生成要求を送信した後、それぞれのデータサーバからブロック生成応答を受信する（ステップＳ１２０６）。ブロック生成応答を受信すると、マスタサーバ１００は、生成されたブロックを識別するブロック識別子と当該ブロックを生成し格納した複数のデータサーバを示すデータサーバ識別子リストとをブロック位置管理テーブル１１１に登録する（ステップＳ１２０７）。そして、マスタサーバ１００は、外部アプリケーション７００へ生成されたブロックを識別するブロック識別子と当該ブロックを生成し格納した複数のデータサーバを示すデータサーバ識別子リストとを送信する（ステップＳ１２０８）。
【００５７】
外部アプリケーション７００は、ブロック識別子とデータサーバ識別子リストとを受信すると、当該データサーバ識別子リストのデータサーバが保持している、当該ブロック識別子で識別されるブロックへデータを書き込む。これでマスタサーバ１００での処理が終了する。
【００５８】
［データサーバ２００における処理］
次に、ブロック生成処理におけるデータサーバ側の処理について説明する。図１１は、第１の実施形態におけるブロック生成処理において、データサーバのデータアクセス部がブロック生成要求を受信したときの動作の一例を示すフローチャートである。ここでは、データサーバ２００がブロック生成要求を受信したとして説明する。
【００５９】
まず、データサーバ２００は、マスタサーバ１００のブロック位置管理部１１０からブロック生成要求、ブロック識別子、再配置優先度を受信する（ステップＳ１３０１）。すると、データアクセス部２２０は、空のブロックを生成し、データ記憶部２１０に格納する（ステップＳ１３０２）。データアクセス部２２０はまた、マスタサーバ１００から受信したブロック識別子と再配置優先度、ブロックのサイズ（この時点では０）をブロック情報テーブル２１１に登録する（ステップＳ１３０２）。
【００６０】
そして、データサーバ２００は、マスタサーバ１００のブロック位置管理部１１０へブロック生成応答を送信し（ステップＳ１３０３）、処理を終了する。
【００６１】
［データ再配置実行処理の流れ］
次に、データ再配置実行処理について説明する。第１の実施形態のデータ再配置装置においては、データ再配置実行処理は定期的に行われる。
【００６２】
［マスタサーバ１００における処理］
図１２は、第１の実施形態におけるデータ再配置実行処理でのマスタサーバ１００のデータ再配置制御部１４０の動作の一例を示すフローチャートである。図１２を参照して、マスタサーバ１００における処理について説明する。
【００６３】
まず、マスタサーバ１００のデータ再配置制御部１４０は、データ再配置実行処理が必要かどうかを判定する（ステップＳ１４０１）。データ再配置制御部１４０は、データ再配置実行処理が必要と判定した場合（ステップＳ１４０１、肯定）、ステップＳ１４０２へ遷移する。他方、データ再配置制御部１４０は、データ再配置実行処理が必要ではないと判定した場合（ステップＳ１４０１、否定）、処理を終了する。
【００６４】
例えば、データ再配置制御部１４０は、データサーバ状態管理部１２０からデータサーバ状態管理テーブル１２１を取得し、以下の条件（１）および（２）を満たす場合、データ再配置実行処理が必要であると判定する。
【００６５】
（１）個々のデータサーバにおけるデータ記憶部の空き容量を、全データサーバについて合計した値が、予め定められた一定容量とデータサーバ数の積よりも大きい。
（２）前記データサーバ状態管理テーブル１２１の値を基に各データサーバにおけるデータ記憶部の使用率を算出し、データ記憶部の使用率が予め定められた閾値以上になっているデータサーバが１つ以上存在する、かつ、当該データサーバのデータ記憶部の空き容量と予め定められた空き容量の余裕値との合計よりもデータ記憶部の空き容量が大きいデータサーバが１つ以上存在する。
【００６６】
データ再配置実行処理が必要と判定した場合（ステップＳ１４０１、肯定）、次に、データ再配置制御部１４０は、再配置元データサーバを選択する（ステップＳ１４０２）。例えば、データ再配置制御部１４０は、データサーバ状態管理部１２０からデータサーバ状態管理テーブル１２１を取得する。そして、データ再配置制御部１４０は、データサーバ状態管理テーブル１２１の値を基に各データサーバにおけるデータ記憶部の使用率を算出する。データ再配置制御部１４０は、算出した使用率が予め定められた閾値以上となるデータサーバのなかからランダムに１つのデータサーバを選択する。そして、データ再配置制御部１４０は、選択したデータサーバを、再配置元データサーバとする。例として、ここでは、データサーバ２００を再配置元データサーバとして選択したとする。
【００６７】
次に、データ再配置制御部１４０は、最大再配置量を設定し、累積再配置量をゼロに初期化する（ステップＳ１４０３）。ここで、最大再配置量とは、一度のデータ再配置実行処理で再配置するデータ量である。最大再配置量は、予め決定しておいてもよく、データ再配置実行処理を実行するごとに決定するものとしてもよい。また、累積再配置量とは、一度のデータ再配置実行処理において、それまでに再配置を完了したデータ量を指す。
【００６８】
そして、データ再配置制御部１４０は、再配置元データサーバ２００のデータ再配置実行部２３０へブロック情報テーブル取得要求を送信する（ステップＳ１４０４）。データ再配置制御部１４０は、再配置元データサーバ２００のデータ再配置実行部２３０からブロック情報テーブル２１１を受信する（ステップＳ１４０５）。
【００６９】
データ再配置制御部１４０は、再配置元データサーバ２００のブロック情報テーブル２１１の各エントリを再配置優先度の降順にソートし、再配置元ブロック情報テーブル１４１（図６）とする（ステップＳ１４０６）。
【００７０】
次に、データ再配置制御部１４０は、再配置元ブロック情報テーブル１４１の最後のエントリの処理が完了しているか否かを判定する（ステップＳ１４０７）。最後のエントリの処理が完了していると判定した場合（ステップＳ１４０７、肯定）、データ再配置制御部１４０は、処理を終了する。データ再配置制御部１４０が最後のエントリの処理が完了していないと判定した場合（ステップＳ１４０７、否定）、ステップＳ１４０８へ遷移する。なお、データ再配置制御部１４０は、再配置元ブロック情報テーブル１４１の先頭のエントリに設定されたブロックから順にデータ再配置処理を実行する。
【００７１】
データ再配置制御部１４０は、再配置元ブロック情報テーブル１４１の現在のエントリのブロックについて再配置先データサーバ識別子リスト１４２（図７）を作成し、当該リストが空か否かを判定する（ステップＳ１４０８）。
【００７２】
データ再配置制御部１４０が、再配置先データサーバ識別子リスト１４２は空であると判定した場合（ステップＳ１４０８、肯定）、処理はステップＳ１４１４へ遷移する。
【００７３】
他方、データ再配置制御部１４０が、再配置先データサーバ識別子リスト１４２は空でないと判定した場合（ステップＳ１４０８、否定）、処理はステップＳ１４０９に遷移する。
【００７４】
再配置先データサーバ識別子リスト１４２は、所定のブロックの再配置先となりうる再配置先データサーバのリストである。データ再配置制御部１４０は、例えば、以下の条件に従い、再配置先データサーバ識別子リスト１４２を作成する。
【００７５】
例えば、ブロックをそれぞれ別々のラックのサーバで動作するデータサーバに格納すると仮定する。この場合、データ再配置実行処理の対象であるブロックに対して、以下の条件をすべて満たすデータサーバを再配置先データサーバ識別子リスト１４２に登録する。
【００７６】
（１）当該データサーバは、データ再配置実行処理の対象であるブロックを保持していないデータサーバである。
（２）当該データサーバのデータ記憶部の空き容量は、再配置元データサーバのデータ記憶部の空き容量と予め定められた空き容量の余裕値との合計よりも大きい。
（３）当該データサーバが動作しているサーバのラックは、当該ブロックを保持しているデータサーバのうち、再配置元データサーバを除いたデータサーバが動作しているサーバを含まない。
【００７７】
ステップＳ１４０９において、データ再配置制御部１４０は、再配置先データサーバ識別子リスト１４２にデータサーバ識別子が登録されているデータサーバの中から再配置先データサーバを選択する。
【００７８】
例えば、データ再配置制御部１４０は、再配置先データサーバ識別子リスト１４２のデータサーバから再配置コストが最も低いデータサーバを再配置先データサーバとする。再配置コストとは、データ再配置実行処理に要する処理負荷を示すパラメータである。
【００７９】
例えば、再配置コストは以下のように算出する。再配置先データサーバ識別子リスト１４２にあるデータサーバ識別子が示すデータサーバの数が２以上であるとする。このとき、データサーバｄｓの再配置コストＣｄｓは次式により算出される。
Ｃｄｓ＝Ｆｄｓ＋Ｗ×Ｄｄｓ
ここで、Ｆｄｓは空き容量コスト、Ｄｄｓは距離コスト、Ｗは予め定められた重み係数である。
【００８０】
空き容量コストＦｄｓは次式により算出される。
Ｆｄｓ＝（Ｆｍａｘ−ｆｄｓ＋１）／（Ｆｍａｘ−Ｆｍｉｎ＋１）
ここで、ＦｍａｘとＦｍｉｎはそれぞれすべてのデータサーバの空き容量の最大値と最小値、ｆｄｓは当該データサーバの空き容量である。
【００８１】
距離コストＤｄｓは次式により算出される。
Ｄｄｓ＝（１．０−ｃｏｓ（π×ｉ／（ｎ−１）））／２
ここで、ｎは再配置先データサーバ識別子リスト１４２のデータサーバの数、ｉは再配置元データサーバからの距離を用いて再配置先データサーバ識別子リスト１４２の各データサーバ識別子が示すデータサーバを昇順にソートしたときの０から始まる順番である。２つのデータサーバ間の距離は、当該２つのデータサーバに割り当てられているそれぞれのＩＰアドレスの排他的論理和の自然対数に１を加算した値とする。
【００８２】
例として、ここでは、データサーバ３００を再配置先データサーバとして選択したとする。
【００８３】
データ再配置制御部１４０は次に、累積再配置量と現在のエントリのブロックのサイズの合計が最大再配置量以下であるか否かを判定する（ステップＳ１４１０）。データ再配置制御部１４０は合計が最大再配置量より大きいと判定した場合（ステップＳ１４１０、否定）、処理を終了する。合計が最大配置量以下であると判定した場合（ステップＳ１４１０、肯定）、データ再配置制御部１４０は、ステップＳ１４１１の処理へ進む。
【００８４】
ステップＳ１４１１において、データ再配置制御部１４０は、累積再配置量に現在のエントリのブロックサイズを加算する。そして、データ再配置制御部１４０は、ブロック位置管理部１１０のブロック位置管理テーブル１１１から、現在のエントリのブロック識別子が付与されたブロックを格納しているデータサーバのデータサーバ識別子リストを取得し、ブロックコピー元データサーバ識別子リストとする（ステップＳ１４１２）。
【００８５】
そして、データ再配置制御部１４０は、再配置先データサーバ３００のデータ再配置実行部３３０へデータ再配置要求、現在のエントリのブロック識別子、再配置元データサーバ識別子、ブロックコピー元データサーバ識別子リストを送信する（ステップＳ１４１３）。次に、データ再配置制御部１４０は、再配置元ブロック情報テーブル１４１の次のエントリの処理へ進む（ステップＳ１４１４）。そして、処理はステップＳ１４０７に戻り、最後のエントリの処理が完了していなければ（ステップＳ１４０７、否定）、データ再配置制御部１４０は、ステップＳ１４０８からステップＳ１４１４の処理を繰り返す。最後のエントリの処理が完了したとき（ステップＳ１４０７、肯定）、処理は終了する。
【００８６】
［再配置元データサーバ２００における処理］
図１３は、第１の実施形態におけるデータ再配置実行処理での再配置元データサーバ２００のデータ再配置実行部２３０がブロック情報テーブル取得要求を受信したときの動作の一例を示すフローチャートである。図１３を参照し、データ再配置実行処理での再配置元データサーバ２００のデータ再配置実行部２３０がブロック情報テーブル取得要求を受信したときの動作の一例につき説明する。
【００８７】
まず、再配置元データサーバ２００のデータ再配置実行部２３０は、マスタサーバ１００のデータ再配置制御部１４０からブロック情報テーブル取得要求を受信する（ステップＳ１５０１、図１２のステップＳ１４０４、Ｓ１４０５参照）。
【００８８】
ブロック情報テーブル取得要求に応じて、データ再配置実行部２３０は、データアクセス部２２０に指示し、データ記憶部２１０からブロック情報テーブル２１１を取得する（ステップＳ１５０２）。そして、データ再配置実行部２３０は、マスタサーバ１００のデータ再配置制御部１４０へブロック情報テーブル２１１を送信し（ステップＳ１５０３）、処理を終了する。
【００８９】
［再配置先データサーバ３００における処理］
図１４は、第１の実施形態におけるデータ再配置実行処理での再配置先データサーバ３００のデータ再配置実行部３３０がデータ再配置要求を受信したときの動作の一例を示すフローチャートである。図１４を参照し、データ再配置実行処理において再配置先データサーバ３００のデータ再配置実行部３３０がデータ再配置要求を受信したときの動作の一例を説明する。
【００９０】
まず、再配置先データサーバ３００のデータ再配置実行部３３０は、マスタサーバ１００のデータ再配置制御部１４０からデータ再配置要求、再配置の対象となるブロックのブロック識別子、再配置元データサーバ識別子、ブロックコピー元データサーバ識別子リストを受信する（ステップＳ１６０１、図１２のステップＳ１４１３参照）。
【００９１】
データ再配置実行部３３０は、受信したブロックコピー元データサーバ識別子リストに含まれるデータサーバの中からブロックコピー元データサーバ、すなわち、ブロックのコピー元とするデータサーバを選択する（ステップＳ１６０２）。例えば、再配置先データサーバ３００から最も距離の近いデータサーバをブロックコピー元データサーバとする。
【００９２】
ここで、例えば、２つのデータサーバ間の距離は、当該２つのデータサーバに割り当てられているそれぞれのＩＰアドレスの排他的論理和の自然対数に１を加算した値とする。なお、ブロックコピー元データサーバは必ずしも再配置元データサーバと同一である必要はない。例として、ここでは、データサーバ４００をブロックコピー元データサーバとして選択したとする。このように、ブロックコピー元データサーバと再配置先データサーバとの距離を最短とすることで、効率的なブロックコピーを実現し処理を高速化することができる。ただし、別の基準に基づいてブロックコピー元データサーバを選択することもできる。
【００９３】
データ再配置実行部３３０は、ブロックコピー元データサーバ４００のデータアクセス部４２０へブロックコピー要求と再配置の対象となるブロックのブロック識別子とを送信する（ステップＳ１６０３）。そして、データ再配置実行部３３０は、ブロックコピー元データサーバ４００のデータアクセス部４２０からブロックを受信する（ステップＳ１６０４）。データ再配置実行部３３０は、データアクセス部３２０に指示し、受信したブロックをブロック記憶部３１０に格納する（ステップＳ１６０５）。また、データ再配置実行部３３０は、データアクセス部３２０に指示し、格納したブロックに対応するエントリをブロック情報テーブル３１１に追加して、ブロック情報テーブル３１１を更新する（ステップＳ１６０５）。データ再配置実行部３３０は、当該ブロックのサイズとして、受信したブロックのサイズを登録し、再配置優先度は「高」とする。
【００９４】
データ再配置実行部３３０は、マスタサーバ１００のブロック位置管理部１１０へブロック登録要求、格納したブロックのブロック識別子、再配置元データサーバ２００のデータサーバ識別子を送信する（ステップＳ１６０６）。これで、再配置先データサーバ３００での処理が終了する。
【００９５】
［ブロックコピー元データサーバ４００における処理］
図１５は、第１の実施形態におけるデータ再配置実行処理でのブロックコピー元データサーバ４００のデータアクセス部４２０がブロックコピー要求を受信したときの動作の一例を示すフローチャートである。図１５を参照し、データ再配置実行処理でのブロックコピー元データサーバ４００のデータアクセス部４２０がブロックコピー要求を受信したときの動作の一例につき説明する。
【００９６】
ブロックコピー元データサーバ４００のデータアクセス部４２０はまず、再配置先データサーバ３００のデータ再配置実行部３３０からブロックコピー要求とブロック識別子とを受信する（ステップＳ１７０１、図１４のステップＳ１６０３参照）。そして、データアクセス部４２０は、受信したブロック識別子が付与されたブロックをデータ記憶部４１０から読み出す（ステップＳ１７０２）。データアクセス部４２０は、読み出したブロックを再配置先データサーバ３００のデータ再配置実行部３３０へ送信する（ステップＳ１７０３）。これで、ブロックコピー元データサーバ４００における処理が終了する。
【００９７】
［マスタサーバ１００におけるブロック登録要求に対する処理］
図１６は、第１の実施形態におけるデータ再配置実行処理でのマスタサーバ１００のブロック位置管理部１１０がブロック登録要求を受信したときの動作の一例を示すフローチャートである。図１６を参照し、データ再配置実行処理でのマスタサーバ１００のブロック位置管理部１１０がブロック登録要求を受信したときの動作の一例を説明する。
【００９８】
まず、マスタサーバ１００のブロック位置管理部１１０は、再配置先データサーバ３００のデータ再配置実行部３３０からブロック登録要求、ブロック識別子、再配置元データサーバ識別子を受信する（ステップＳ１８０１、図１４のステップＳ１６０６参照）。ブロック位置管理部１１０は、ブロック位置管理テーブル１１１中、受信したブロック識別子に対応付けられるデータサーバ識別子リストに再配置先データサーバ３００のデータサーバ識別子を追加する（ステップＳ１８０２）。また、ブロック位置管理部１１０は、データサーバ識別子リストから再配置元データサーバ２００のデータサーバ識別子を削除する（ステップＳ１８０２）。
【００９９】
そして、ブロック位置管理部１１０は、再配置元データサーバ２００のデータアクセス部２２０へブロック削除要求と、再配置先データサーバ３００から受信したブロック識別子を送信する（ステップＳ１８０３）。ブロック位置管理部１１０は、再配置元データサーバ２００のデータアクセス部２２０からブロック削除応答を受信する（ステップＳ１８０４）。これによって、ブロック登録要求に対応するマスタサーバ１００での処理が終了する。
【０１００】
［再配置元データサーバでのブロック削除要求に対する処理］
図１７は、第１の実施形態におけるデータ再配置実行処理での再配置元データサーバ２００のデータアクセス部２２０がブロック削除要求を受信したときの動作の一例を示すフローチャートである。図１７を参照し、データ再配置実行処理での再配置元データサーバ２００のデータアクセス部２２０がブロック削除要求を受信したときの動作の一例につき説明する。
【０１０１】
まず、再配置元データサーバ２００のデータアクセス部２２０は、マスタサーバ１００のデータ再配置制御部１４０からブロック削除要求、ブロック識別子を受信する（ステップＳ１９０１、図１６のステップＳ１８０３参照）。そして、データアクセス部２２０は、受信したブロック識別子に対応するエントリをブロック情報テーブル２１１から削除する（ステップＳ１９０２）。また、データアクセス部２２０は、受信したブロック識別子が付与されたブロックをブロック記憶部２１０から削除する（ステップＳ１９０２）。そして、データアクセス部２２０は、マスタサーバ１００のデータ再配置制御部１４０へブロック削除応答を送信する（ステップＳ１９０３）。これによって、再配置元データサーバ２００におけるブロック削除要求に対応した処理が終了する。
【０１０２】
［第１の実施形態の効果］
このように、第１の実施形態のデータ再配置装置は、外部アプリケーションが書き込むファイルデータを固定長のブロックに分割して予め定められた冗長度の数のサーバに格納する際に、各サーバに格納されるブロック各々について、データ再配置処理の優先度を示す再配置優先度を付与する再配置優先度付与部と、再配置優先度に基づいて、ブロックのデータ再配置処理を実行するデータ再配置実行部と、を備える。このため、再配置優先度に基づいて再配置が好ましくないブロックの移動を抑制することができ、外部アプリケーションの読み出し性能の低下を防止することができる。
【０１０３】
また、第１の実施形態に係るデータ再配置装置１によれば、再配置優先度付与部は、外部アプリケーションが書き込むファイルデータを固定長に分割して得られたブロックのうち、外部アプリケーションが動作するサーバと同一のサーバが保持するブロックには低い再配置優先度、外部アプリケーションが動作するサーバとは異なるサーバが保持するブロックには高い再配置優先度を付与する。そして、データ再配置実行部は、再配置優先度が高いブロックからデータ再配置処理を実行する。
【０１０４】
このため、外部アプリケーションが動作するサーバと同一のサーバに格納されるブロックは、データ再配置処理を実施しても同一のサーバにとどまりやすくなる。したがって、外部アプリケーションは、データを読み出す際に自身が動作するサーバと同一のサーバからブロックを読み出す確率が、他のサーバからブロックを読み出す確率よりも高くなり、再配置優先度に基づかないでデータ再配置処理を実行する場合と比較して、外部アプリケーションによる読み出しを高速化することができる。
【０１０５】
（第２の実施形態）
これまで本発明の実施形態について説明したが、本発明は上述した実施形態以外にも、その他の実施形態にて実施されてもよい。以下に、その他の実施形態を説明する。
【０１０６】
［他の分散ファイルシステムへの応用］
上記実施形態は、ＧＦＳおよびＨＤＦＳのように、ブロックの位置を管理するマスタサーバとブロックを保持するデータサーバとで構成される分散ファイルシステムにおける処理を前提として説明した。しかし、本発明はこれに限定されず、データの格納位置が予め限定されているような記憶システムや分散ファイルシステムでなければ任意の記憶システムまたは分散ファイルシステムに適用することができる。
【０１０７】
［システム構成］
また、本実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上述文書中や図面中に示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１０８】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。例えば、図９に示す例では、再配置優先度はブロック情報テーブル２１１（３１１，４１１，５１１，６１１）に格納するものとして説明したが、再配置優先度をマスタサーバ１００側で管理するように構成してもよい。
【０１０９】
［プログラム］
図１８は、データ再配置装置による一連の処理を実行するプログラムであるデータ再配置プログラムによる情報処理が、コンピュータを用いて具体的に実現されることを示す図である。図１８に例示するように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ（Central  Processing  Unit）１０２０と、ハードディスクドライブ１０８０と、ネットワークインタフェース１０７０とを有する。コンピュータ１０００の各部はバス１１００によって接続される。
【０１１０】
メモリ１０１０は、図１８に例示するように、ＲＯＭ１０１１およびＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。
【０１１１】
ここで、図１８に例示するように、ハードディスクドライブ１０８０は、例えば、ＯＳ１０８１、アプリケーションプログラム１０８２、プログラムモジュール１０８３、プログラムデータ１０８４を記憶する。すなわち、開示の技術に係るデータ再配置プログラムは、コンピュータによって実行される指令が記述されたプログラムモジュール１０８３として、例えばハードディスクドライブ１０８０に記憶される。例えば、マスタサーバ１００、データサーバ２００〜６００の各部と同様の情報処理を実行する手順各々が記述されたプログラムモジュール１０８３が、ハードディスクドライブ１０８０に記憶される。
【０１１２】
また、マスタサーバ１００、データサーバ２００〜６００に記憶されるデータのように、データ再配置プログラムによる情報処理に用いられるデータは、プログラムデータ１０８４として、例えばハードディスクドライブ１０８０に記憶される。そして、ＣＰＵ１０２０が、ハードディスクドライブ１０８０に記憶されたプログラムモジュール１０８３やプログラムデータ１０８４を必要に応じてＲＡＭ１０１２に読み出し、各種の手順を実行する。
【０１１３】
なお、データ再配置プログラムに係るプログラムモジュール１０８３やプログラムデータ１０８４は、ハードディスクドライブ１０８０に記憶される場合に限られない。例えば、プログラムモジュール１０８３やプログラムデータ１０８４は、着脱可能な記憶媒体に記憶されてもよい。この場合、ＣＰＵ１０２０は、ディスクドライブなどの着脱可能な記憶媒体を介してデータを読み出す。また、同様に、更新プログラムに係るプログラムモジュール１０８３やプログラムデータ１０８４は、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶されてもよい。この場合、ＣＰＵ１０２０は、ネットワークインタフェース１０７０を介して他のコンピュータにアクセスすることで各種データを読み出す。
【０１１４】
［その他］
なお、本実施例で説明したデータ再配置プログラムは、インターネット等のネットワークを介して配布することができる。また、データ再配置プログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読取可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【符号の説明】
【０１１５】
１００  マスタサーバ
１１０  ブロック位置管理部
１１１  ブロック位置管理テーブル
１２０  データサーバ状態管理部
１２１  データサーバ状態管理テーブル
１３０  再配置優先度付与部
１４０  データ再配置制御部
１４１  再配置元ブロック情報テーブル
１４２  再配置先データサーバ識別子リスト
２００，３００，４００，５００，６００  データサーバ
２１０，３１０，４１０，５１０，６１０  データ記憶部
２１１，３１１，４１１，５１１，６１１  ブロック情報テーブル
２２０，３２０，４２０，５２０，６２０  データアクセス部
２３０，３３０，４３０，５３０，６３０  データ再配置実行部
２４０，３４０，４４０，５４０，６４０  状態通知部
７００  外部アプリケーション
７１０  ファイルデータ
７１１，７１２，７１３  ブロック
１０００  コンピュータ
１０１０  メモリ
１０１１  ＲＯＭ
１０１２  ＲＡＭ
１０２０  ＣＰＵ
１０７０  ネットワークインタフェース
１０８０  ハードディスクドライブ
１０８１  ＯＳ
１０８２  アプリケーションプログラム
１０８３  プログラムモジュール
１０８４  プログラムデータ
１１００  バス
【図１】
2015022327.tif 000003
【図２】
2015022327.tif 000004
【図３】
2015022327.tif 000005
【図４】
2015022327.tif 000006
【図５】
2015022327.tif 000007
【図６】
2015022327.tif 000008
【図７】
2015022327.tif 000009
【図８】
2015022327.tif 000010
【図９】
2015022327.tif 000011
【図１０】
2015022327.tif 000012
【図１１】
2015022327.tif 000013
【図１２】
2015022327.tif 000014
【図１３】
2015022327.tif 000015
【図１４】
2015022327.tif 000016
【図１５】
2015022327.tif 000017
【図１６】
2015022327.tif 000018
【図１７】
2015022327.tif 000019
【図１８】
2015022327.tif 000020