(57)【特許請求の範囲】
【請求項１】
データファイルが格納された複数のデータブロックを有するノードを備えた分散ファイル管理装置であって、
前記複数のデータブロックに格納されたデータファイルの一部の割り当て先として、データ格納領域を有するノードを追加する構成変更部と、
前記追加されたノードにおいて、そのデータ格納領域を、必要な数のデータブロックに分割するデータブロック分割部と、
前記データファイルの一部を、前記追加されたノードのデータブロックに割り当てるマッピング関数を決定するマッピング関数制御部と、
前記マッピング関数に応じて、前記データファイルの一部を、前記追加されたノードに移動させるファイル管理部と、を有し、
前記マッピング関数制御部は、
前記ノードを追加した場合、前記ノードと複数の前記データブロックとの対応を表す複数のマッピング関数を生成する、マッピング関数生成部と、
前記複数のデータブロックに対するアクセス量及び前記複数のデータブロック内に格納されているデータファイル容量に基づいて標準偏差を算出し、前記複数のマッピング関数の中から、前記標準偏差がより最小となるマッピング関数を選択する、マッピング関数選択部と、を有する
ことを特徴とする分散ファイル管理装置。
【請求項２】
前記ノード及び前記追加されたノードにアクセス可能なクライアントに対し、前記マッピング関数を通知するマッピング関数通知部をさらに備える、請求項１に記載の分散ファイル管理装置。
【請求項３】
前記マッピング関数通知部は、前記マッピング関数のうち前記クライアントがすでに取得しているマッピング関数を除いて、前記クライアントに通知する、請求項２に記載の分散ファイル管理装置。
【請求項４】
データファイルが格納された複数のデータブロックを有するノードを備えた分散ファイル管理装置による分散ファイル管理方法であって、
前記複数のデータブロックに格納されたデータファイルの一部の割り当て先として、データ格納領域を有するノードを追加する構成変更ステップと、
前記追加されたノードにおいて、そのデータ格納領域を、必要な数のデータブロックに分割するデータブロック分割ステップと、
前記データファイルの一部を、前記追加されたノードのデータブロックに割り当てるマッピング関数を決定するマッピング関数制御ステップと、
前記マッピング関数に応じて、前記データファイルの一部を、前記追加されたノードに移動させるファイル管理ステップと、を有し、
前記マッピング関数制御ステップにおいて、
前記ノードを追加した場合、前記ノードと複数の前記データブロックとの対応を表す複数のマッピング関数を生成し、
前記複数のデータブロックに対するアクセス量及び前記複数のデータブロック内に格納されているデータファイル容量に基づいて標準偏差を算出し、
前記複数のマッピング関数の中から、前記標準偏差がより最小となるマッピング関数を選択する
ことを特徴とする分散ファイル管理方法。
【請求項５】
前記ノード及び前記追加されたノードにアクセス可能なクライアントに対し、前記マッピング関数を通知するマッピング関数通知ステップをさらに備える、請求項４に記載の分散ファイル管理方法。
【請求項６】
前記マッピング関数通知ステップは、前記マッピング関数のうち前記クライアントがすでに取得しているマッピング関数を除いて、前記クライアントに通知する、請求項５に記載の分散ファイル管理方法。
【請求項７】
データファイルが格納された複数のデータブロックを有するノードを備えた分散ファイル管理装置による分散ファイル管理方法を制御するためのプログラムであって、
コンピュータに、
前記複数のデータブロックに格納されたデータファイルの一部の割り当て先として、データ格納領域を有するノードを追加する構成変更ステップと、
前記追加されたノードにおいて、そのデータ格納領域を、必要な数のデータブロックに分割するデータブロック分割ステップと、
前記データファイルの一部を、前記追加されたノードのデータブロックに割り当てるマッピング関数を決定するマッピング関数制御ステップと、
前記マッピング関数に応じて、前記データファイルの一部を、前記追加されたノードに移動させるファイル管理ステップと、を実行させ
前記マッピング関数制御ステップにおいて、
前記ノードを追加した場合、前記ノードと複数の前記データブロックとの対応を表す複数のマッピング関数を生成し、
前記複数のデータブロックに対するアクセス量及び前記複数のデータブロック内に格納されているデータファイル容量に基づいて標準偏差を算出し、
前記複数のマッピング関数の中から、前記標準偏差がより最小となるマッピング関数を選択する
ことを特徴とするプログラム。
【請求項８】
前記コンピュータに、
前記ノード及び前記追加されたノードにアクセス可能なクライアントに対し、前記マッピング関数を通知するマッピング関数通知ステップをさらに実行させる、請求項７に記載のプログラム。
【請求項９】
前記マッピング関数通知ステップは、前記マッピング関数のうち前記クライアントがすでに取得しているマッピング関数を除いて、前記クライアントに通知する、請求項８に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイルデータが格納された複数のデータブロックをそれぞれ有する複数のノード備えた分散ファイル管理装置、分散ファイル管理方法、及びこれらを実現するためのプログラムに関する。
【背景技術】
【０００２】
従来の分散ファイル管理装置として、ファイル名等のハッシュ値をノード間のデータ分散に用いるシステムが知られている。このようなシステムでは、既存のノードに新たなノードを追加した場合、ハッシュレンジの再割り当てが行われる。そのため、ハッシュ値によって、各ノードに割り当てられるデータブロックが分かる。
【０００３】
一方、特許文献１には、新たなノードが追加された場合に、ノードに対応する関数に応じて、データを複数のノード間で移動させる構成が開示されている。この特許文献１に開示されている構成では、前記関数によって、データを、追加された新たなノードに移動させるかどうかを決定している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１８４８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、上述のような従来の分散ファイル管理装置では、既存のノード及び新たに追加されたノードの間で、ハッシュレンジの再割り当てを行うため、既存のノード間でもデータファイルの移動が生じる。そのため、データ処理の負荷が大きくなって、処理時間が長くなる。よって、クライアントがノード内のデータファイルにアクセスする際には、時間がかかってしまうなどの問題が生じる。
【０００６】
一方、上述の特許文献１に開示されている構成では、上述のようなハッシュレンジの再割り当てを行わないため、データ処理の負荷は軽減されるが、ノード間での負荷バランスは考慮されていない。
【０００７】
本発明の目的は、新たなノードが追加された場合に、クライアントから複数のノードに対するアクセス性能を悪化させることなく、該複数のノードにファイルデータをバランス良く分散して格納可能な構成を得ることにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本発明の一側面における分散ファイル管理装置は、データファイルが格納された複数のデータブロックを有するノードを備えた分散ファイルシステムである。この分散ファイル管理装置は、前記複数のデータブロックに格納されたデータファイルの一部の割り当て先として、データ格納領域を有するノードを追加する構成変更部と、前記追加されたノードにおいて、そのデータ格納領域を、必要な数のデータブロックに分割するデータブロック分割部と、前記データファイルの一部を、前記追加されたノードのデータブロックに割り当てるマッピング関数を決定するマッピング関数決定部と、前記マッピング関数に応じて、前記データファイルの一部を、前記追加されたノードに移動させるファイル管理部とを備える。
【０００９】
また、上記目的を達成するため、本発明の一側面における分散ファイル管理方法は、データファイルが格納された複数のデータブロックを有するノードを備えた分散ファイル管理装置による分散ファイル管理方法である。この分散ファイル管理方法は、前記複数のデータブロックに格納されたデータファイルの一部の割り当て先として、データ格納領域を有するノードを追加する構成変更ステップと、前記追加されたノードにおいて、そのデータ格納領域を、必要な数のデータブロックに分割するデータブロック分割ステップと、前記データファイルの一部を、前記追加されたノードのデータブロックに割り当てるマッピング関数を決定するマッピング関数制御ステップと、前記マッピング関数に応じて、前記データファイルの一部を、前記追加されたノードに移動させるファイル管理ステップとを備える。
【００１０】
更に、上記目的を達成するため、本発明の一側面におけるプログラムは、データファイルが格納された複数のデータブロックを有するノードを備えた分散ファイル管理装置による分散ファイル管理方法を制御するためのプログラムである。このプログラムは、コンピュータに、前記複数のデータブロックに格納されたデータファイルの一部の割り当て先として、データ格納領域を有するノードを追加する構成変更ステップと、前記追加されたノードにおいて、そのデータ格納領域を、必要な数のデータブロックに分割するデータブロック分割ステップと、前記データファイルの一部を、前記追加されたノードのデータブロックに割り当てるマッピング関数を決定するマッピング関数制御ステップと、前記マッピング関数に応じて、前記データファイルの一部を、前記追加されたノードに移動させるファイル管理ステップとを実行させる。
【発明の効果】
【００１１】
以上のように本発明の構成によれば、新たなノードが追加された場合に、クライアントから複数のノードに対するアクセス性能を悪化させることなく、該複数のノードにデータをバランス良く分散して格納することができる。
【図面の簡単な説明】
【００１２】
【図１】分散ファイル管理装置の概略構成を示すブロック図である。
【図２】ノードを追加した際のリバランス処理を模式的に示す図である。
【図３】分散ファイル管理装置の構成を示すブロック図である。
【図４】ノードの構成を示すブロック図である。
【図５】クライアントの構成を示すブロック図である。
【図６】クライアントが分散ファイル管理装置に格納されたデータファイルにアクセスする際のクライアント及び分散ファイル管理装置の動作を示すフローである。
【図７】分散ファイル管理装置にノードが追加された際の分散ファイル管理装置の動作を示すフローである。
【図８】クライアントが分散ファイル管理装置に格納されたデータファイルにアクセスする際のクライアント及び分散ファイル管理装置の動作を示すフローである。
【図９】（ａ）ノード追加前の各ノードにおけるデータブロックの状態、（ｂ）ノード追加後にリバランス処理を行った場合の各ノードにおけるデータブロックの状態をそれぞれ模式的に示す図である。
【図１０】ノードが追加されていない場合に、クライアントが分散ファイル管理装置に格納されたデータファイルにアクセスする際のクライアント及び分散ファイル管理装置の動作の様子を示す図である。
【図１１】ノードが追加された場合に、クライアントが分散ファイル管理装置に格納されたデータファイルにアクセスする際のクライアント及び分散ファイル管理装置の動作の様子を示す図である。
【図１２】コンピュータの構成の一例を示す図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態に係る分散ファイル管理装置、分散ファイル管理方法及びプログラムについて、図１から図１２を参照しながら説明する。
【００１４】
図１は、本発明の実施形態に係る分散ファイル管理装置１の全体構成の一例を示すブロック図である。分散ファイル管理装置１は、複数のノードを含む。分散ファイル管理装置１は、データファイルが格納された複数のデータブロックを有するノードに対し、新たにノードを追加した場合に、前記データファイルの一部を前記追加したノードに割り当てるようにマッピング関数を生成する。
【００１５】
分散ファイル管理装置１は、構成変更部２と、データブロック分割部３と、マッピング関数制御部４と、ファイル管理部５とを備える。構成変更部２は、分散ファイル管理装置１を構成する複数のノードが有する複数のデータブロックに格納されたデータファイルの一部の割り当て先として、データ格納領域を有する新たなノードを追加する。
【００１６】
データブロック分割部３は、構成変更部２によって追加されたノードのデータ格納領域を、必要な数のデータブロックに分割する。
【００１７】
マッピング関数制御部４は、前記データファイルの一部を、前記追加されたノードのデータブロックに割り当てるマッピング関数を決定する。
【００１８】
ファイル管理部５は、前記マッピング関数に応じて、前記データファイルの一部を、前記追加されたノードに移動させる。
【００１９】
これにより、新たに追加されたノードに、既存のノードのデータブロックに格納されていたデータファイルを移動させることができるとともに、その割り当てをマッピング関数によって規定することができる。
【００２０】
分散ファイル管理装置１にノードが追加された場合に行われるリバランス処理について、図２を用いて説明する。なお、分散ファイル管理装置１の詳しい構成及び動作は後述する。
【００２１】
図２（ａ）は、分散ファイル管理装置１にノード５０を追加する前の状態を示す。図２（ａ）に示すように、分散ファイル管理装置１は、複数のノード１０，２０，３０，４０を有し（図２（ａ）の例では、４つのノード）、各ノードは複数のデータブロックＢを有する。図２（ａ）に示す例では、分散ファイル管理装置１の複数のノード１０，２０，３０，４０は、それぞれ、１０個のデータブロックＢを有する。なお、図２では、四角内に数値が記載されたものが、ファイルデータを示す。
【００２２】
図２（ｂ）は、分散ファイル管理装置１にノード５０を追加してリバランス処理を行った後の状態を示す。図２（ｂ）に示すように、ノード５０内に複数のデータブロックＢが形成されるとともに、それらのデータブロックには、既存のノード１０，２０，３０，４０のデータブロックからファイルデータが移動している。既存のノード１０，２０，３０，４０の間ではデータファイルの移動はない。なお、図２（ｂ）において、太線枠はファイルデータがノード５０に移動したデータブロックを示す。
【００２３】
すなわち、本発明の分散ファイル管理装置１では、新しくノード５０が追加された場合、既存のノード１０，２０，３０，４０間ではデータファイルを移動することなく、該既存のノード１０，２０，３０，４０から追加されたノード５０に対してのみデータファイルを移動する。
【００２４】
これにより、既存のノード間でのデータ移動による通信量の増大を抑制することができ、ノードの増加によって、分散ファイル管理装置へのアクセス性能に悪影響が及ぶことを防止できる。
【００２５】
次に、分散ファイル管理装置１のより具体的な構成を、図３から図５を用いて詳細に説明する。
【００２６】
分散ファイル管理装置１は、複数の既存のノード１０，２０，・・・と、分散ファイル制御部６０と、アクセス統計処理部７０と、マッピング関数制御部４とを有する。なお、以下の説明では、既存のノードを４つとし、新たに追加するノード５０を１つとする。しかしながら、この限りではなく、既存のノードはいくつであってもよいし、追加するノードは２つ以上であってもよい。
【００２７】
複数のノード１０，２０，・・・，５０は、それぞれ、例えば、記憶装置を有するサーバやＰＣ等のコンピュータによって構成される。分散ファイル管理装置１は、複数のノード１０，２０，・・・，５０に対するデータファイルの格納を制御可能なように、複数のノード１０，２０，・・・，５０間で通信可能に構成されている。
【００２８】
ノード１０は、分散ファイルシステム部１１０と、ファイルシステム部１２０と、データブロック１３０と、アクセス統計処理部１４０と、マッピング関数制御部１５０と、マッピングテーブル１６０とを有する。なお、ノード２０を含む他の既存のノード及び追加するノード５０も、ノード１０と同様の構成を有する。よって、以下の説明では、ノード１０の構成についてのみ説明し、他のノードの構成については説明を省略する。また、図１において、ノード２０，５０以外のノードの構成についても図示を省略する。
【００２９】
なお、ノード２０、５０において、符号２１０，５１０は分散ファイルシステム部を、符号２２０，５２０はファイルシステム部を、符号２３０，５３０はデータブロックを、符号２４０，５４０はアクセス統計処理部を、符号２５０，５５０はマッピング関数制御部を、符号２６０，５６０はマッピングテーブルをそれぞれ示す。
【００３０】
分散ファイルシステム部１１０は、ノード１０に割り当てられているデータブロック１３０へのアクセスを管理する。詳しくは、図４に示すように、分散ファイルシステム部１１０は、データアクセス部１１１を有する。
【００３１】
データアクセス部１１１は、クライアント１０００から分散ファイル管理装置１の分散ファイル制御部６０に対し、あるデータファイルへのアクセスがあった場合に、データブロック１３０へのファイルアクセスを可能にする。なお、後述するように、分散ファイル制御部６０は、各ノードの分散ファイルシステム部を含む。
【００３２】
データアクセス部１１１は、クライアント１０００からノード１０，２０，・・・に対してデータファイルへのアクセスがあった場合、ノード１０，２０，・・・のうち前記データファイルを格納しているデータブロックが割り当てられているノードを検出する。そして、データアクセス部１１１は、クライアント１０００を、検出したノードにアクセスさせる。
【００３３】
ファイルシステム部１２０は、データブロック１３０に格納されたデータファイルを管理（複製や削除等を含む）する。また、ファイルシステム部１２０は、データブロック１３０への分割や該データブロック１３０の削除も管理する。ファイルシステム部１２０は、一般的な記憶装置が有するファイル管理システムの機能と同じ機能を有するため、構成の詳しい説明を省略する。
【００３４】
なお、分散ファイルシステム部１１０及びファイルシステム部１２０が、マッピング関数に応じて、既存のノード１０，２０，・・・のデータファイルの一部を、追加されたノード５０に移動させるファイル管理部に対応する。
【００３５】
また、ノード５０におけるファイルシステム部５２０が、ノード５０のデータ格納領域を、必要な数のデータブロックに分割するデータブロック分割部に対応する。
【００３６】
データブロック１３０は、例えばハードディスクなどの物理的な記憶装置を複数、接続することによって構成された仮想的なデータ格納領域を分割することにより、構成されている。なお、本実施形態では、説明のために、ノード１０のデータブロック１３０の数を１０個とするが、この限りではなく、データブロック１３０の数はいくつであってもよい。
【００３７】
アクセス統計処理部１４０は、複数のデータブロック１３０に格納されたデータファイルに対するアクセス量や該データファイルのファイル容量など、データファイルに関する統計処理を行う。詳しくは、図４に示すように、アクセス統計処理部１４０は、アクセス量検出部１４１と、ファイル容量算出部１４２とを有する。
【００３８】
アクセス量検出部１４１は、複数のデータブロック１３０に格納されたデータファイルに対するアクセス量を計測する。詳しくは、アクセス量検出部１４１は、複数のデータブロック１３０に格納された各データファイルに対するアクセス量の統計情報を、ファイルのメタデータなどに記録する。また、アクセス量検出部１４１は、必要に応じて、現在のアクセス量の取得やアクセス量のリセット、データブロック毎の総アクセス量（アクセス量の累積値）の算出等を行う。
【００３９】
ファイル容量算出部１４２は、前記データファイルのファイル容量を計測する。このファイル容量算出部１４２は、一般的なファイルシステムにおけるｄｆコマンドなどを実行する構成に相当する。ファイル容量算出部１４２は、必要に応じて、データブロック毎の総ファイル量を算出する。
【００４０】
マッピング関数制御部１５０は、ノード１０，２０，・・・に対するデータブロックの割り当てを決めるためのマッピング関数の管理を行う。詳しくは、図４に示すように、マッピング関数制御部１５０は、マッピング関数生成部１５１と、マッピング関数選択部１５２と、マッピング関数記憶部１５３と、マッピングテーブル更新部１５４と、マッピング関数通知部１５５とを有する。
【００４１】
マッピング関数生成部１５１は、ノード５０を追加した際に、ノード１０，２０，３０，４０，５０に対する複数のデータブロックの割り当てを変更するための移動対象のデータブロックを示す関数式（マッピング関数）を生成する。なお、マッピング関数生成部１５１は、前記関数式を少なくとも一つ生成する。
【００４２】
詳しくは、マッピング関数生成部１５１は、ノード１０，２０，・・・とデータブロック１３０，２３０，・・・との対応を表す関係式を生成する。マッピング関数生成部１５１は、分散ファイル管理装置１が例えば４つのノードを含む場合には、線形分割となるようにＱＵＯＴＩＥＮＴ（）を用いて全てのデータブロック１３０，２３０，・・・を等分し、それらを各ノードに割り当てる関数式を生成する。そして、ノード５０が追加された場合には、マッピング関数生成部１５１は、例えば、ノード１０，２０，・・・のデータブロック数に応じて、例えば剰余から移動させるデータブロックを求めるＭＯＤ（）等の関数式を生成する。なお、マッピング関数生成部１５１は、追加したノード５０に移動させるデータブロックの数の分だけ、データブロックを切り分けることができる関数を、一般的な関数の組み合わせによって生成する。
【００４３】
マッピング関数選択部１５２は、マッピング関数生成部１５１によって生成されたマッピング関数の関数式の中から、ノード１０，２０，・・・，５０におけるファイルアクセス量及びファイル容量のばらつきが小さくなるようにデータブロックを移動させる関数式を選択する。
【００４４】
詳しくは、マッピング関数選択部１５２は、アクセス量検出部１４１及びファイル容量算出部１４２によってそれぞれ算出された各データブロックにおける総アクセス量及び総ファイル容量を用いて、マッピング関数生成部１５１によって生成された関数式において、ノード５０にデータブロックを移動させた場合の各ノード１０，２０，・・・，５０の総アクセス量及び総ファイル容量の標準偏差を算出する。そして、マッピング関数選択部１５２は、マッピング関数生成部１５１によって生成された関数式の中から、前記標準偏差がより小さくなる関数式を選択する。
【００４５】
マッピング関数記憶部１５３は、マッピング関数選択部１５２によって選択された関数式を記憶するとともに、後述するマッピング関数通知部１５５によってクライアント１０００に通知された関数式も記憶する。
【００４６】
マッピングテーブル更新部１５４は、マッピング関数記憶部１５３に記憶されている関数式を用いて、後述のマッピングテーブル１６０を更新する。詳しくは、マッピングテーブル更新部１５４は、マッピングテーブル１６０において、マッピング関数記憶部１５３に新たに追加された関数式に応じて、追加したノード５０に割り当てられたデータブロックに関する情報を更新する。
【００４７】
マッピング関数通知部１５５は、マッピング関数記憶部１５３に記憶されている関数式を、クライアント１０００に通知する。詳しくは、マッピング関数通知部１５５は、マッピング関数選択部１５２で選択された関数式を、マッピング関数記憶部１５３に通知するとともに、クライアント１０００の後述するマッピング関数取得部１０２３にも通知する。また、マッピング関数通知部１５５は、クライアント１０００の後述するマッピング関数取得部１０２３から取得済みと通知された関数式以外の関数式を、クライアント１０００のマッピング関数取得部１０２３に通知する。例えば、マッピング関数通知部１５５は、クライアント１０００のマッピング関数取得部１０２３から、Ｎ番までの関数式を取得していると通知された場合には、Ｎ+１番以降に追加された関数式を全てクライアント１０００のマッピング関数取得部１０２３に通知する。
【００４８】
マッピングテーブル１６０は、各ノード１０，２０，・・・，５０に対して割り当てられているデータブロックに関する情報が記憶されている。
【００４９】
分散ファイル管理装置１における分散ファイル制御部６０は、ノード１０の分散ファイルシステム部１１０及び他の既存のノード２０，３０，４０における分散ファイルシステム部を含む。また、分散ファイル制御部６０は、構成変更部２を含む。この構成変更部２は、分散ファイル管理装置１に対するノードの追加・削除を行う。
【００５０】
分散ファイル管理装置１におけるアクセス統計処理部７０は、ノード１０のアクセス統計処理部１４０及び他の既存のノード２０，３０，４０におけるアクセス統計処理部を含む。
【００５１】
分散ファイル管理装置１におけるマッピング関数制御部４は、ノード１０，２０のマッピング関数制御部１５０，２５０及び他の既存のノードにおけるマッピング関数制御部を含む。
【００５２】
クライアント１０００は、分散ファイル管理装置１に格納されたデータファイルにアクセスする。なお、以下では、説明のために、クライアント１０００が一つであるが、クライアント１０００は複数であってもよい。
【００５３】
クライアント１０００は、図３及び図５に示すように、分散ファイルアクセス部１０１０と、マッピング関数制御部１０２０と、マッピングテーブル１０３０とを備える。
【００５４】
分散ファイルアクセス部１０１０は、分散ファイル管理装置１に格納されているデータファイルにアクセスする機能を有する。分散ファイルアクセス部１０１０は、クライアント１０００の図示しない制御部から、分散ファイル管理装置１に格納されているデータファイルに対するアクセス要求が入力された場合、そのファイル名のハッシュ値及びマッピングテーブル１０３０からデータファイルが格納されているノードを判断し、そのノードの分散ファイルシステム部にアクセス要求を通知する。なお、本実施形態では、分散ファイルアクセス部１０１０は、ノード１０の分散ファイルシステム部１１０に対してアクセス要求を行うものとし、その具体的な動作についての説明は後述する。
【００５５】
マッピング関数制御部１０２０は、クライアント１０００において関数式（マッピング関数）を制御する。マッピング関数制御部１０２０は、マッピング関数記憶部１０２１と、マッピングテーブル更新部１０２２と、マッピング関数取得部１０２３とを有する。
【００５６】
マッピング関数記憶部１０２１は、分散ファイル管理装置１から通知された関数式（マッピング関数）を記憶する。すなわち、マッピング関数記憶部１０２１は、後述するマッピング関数取得部１０２３によって、分散ファイル管理装置１の各ノードから関数式を新たに取得した場合には、取得した関数式を記憶する。
【００５７】
マッピングテーブル更新部１０２２は、マッピング関数記憶部１０２１に記憶された関数式を用いて、クライアント１０００内のマッピングテーブル１０３０の情報を更新する。すなわち、マッピングテーブル更新部１０２２は、マッピング関数記憶部１０２１に新たな関数式が記憶された場合に、マッピングテーブル１０３０の情報を更新する。
【００５８】
マッピング関数取得部１０２３は、分散ファイル管理装置１のマッピング関数通知部１５５に、マッピング関数記憶部１０２１に記憶されている関数式を通知する。また、マッピング関数取得部１０２３は、マッピング関数記憶部１０２１に記憶されている関数式以外の関数式が、分散ファイル管理装置１の各ノードにおけるマッピング関数選択部で選択された場合には、その関数式を取得するように、各ノードのマッピング関数通知部に通知する。
【００５９】
詳しくは、マッピング関数取得部１０２３は、クライアント１０００が分散ファイルアクセス部１０１０によって、分散ファイル管理装置１のノード（例えばノード１０）にアクセスした際に、他のノードからアクセス結果が送信された場合、現在のマッピングテーブル１０３０に更新が必要と判断する。マッピング関数取得部１０２３は、現時点のマッピング関数記憶部１０２１で記憶されている最新のマッピング関数が何番目の関数式であるかを、ノード１０，２０，・・・のうちのいずれかのマッピング関数通知部に伝えるとともに、それ以降に分散ファイル管理装置１で追加して選択されたマッピング関数を取得する。
【００６０】
マッピングテーブル１０３０には、各ノード１０，２０，・・・，５０に対して割り当てられているデータブロックに関する情報のうち、クライアント１０００が分散ファイル管理装置１から取得した情報が記憶されている。
【００６１】
次に、本発明の実施形態に係る分散ファイル管理装置１の動作について図６から図８を用いて説明する。図６から図８は、分散ファイル管理装置１の動作を示すフロー図である。以下の説明において、図３から図５を適宜、参酌する。また、本実施形態では、分散ファイル管理装置１を動作させることによって、分散ファイル管理方法が実施される。よって、本実施形態における分散ファイル管理方法の説明は、以下の分散ファイル管理装置１の動作説明に代える。
【００６２】
まず、図６を用いて、ノード４０を追加する前の分散ファイル管理装置１の動作について説明する。すなわち、以下では、クライアント１０００の分散ファイル管理装置１に対するアクセスによって、分散ファイル管理装置１からクライアント１０００に対してサービスを提供する動作について説明する。
【００６３】
なお、以下では、分散ファイル管理装置１が、４つのノード１０，２０，３０，４０を有する場合について説明する。
【００６４】
図９（ａ）に示すように、ノード１０，２０，３０，４０は、それぞれ、データ格納領域が１０分割されることにより、１０個のデータブロック１３０，２３０，３３０，４３０を有する。ノード１０，２０，３０，４０のデータブロック１３０，２３０，３３０，４３０には、Ｂ０〜Ｂ３９までの通し番号が割り当てられている。
【００６５】
すなわち、分散ファイル管理装置１では、データブロックの初期の割り当てが行われている。具体的には、ノード１０のマッピング関数生成部１５１によって、図９（ａ）に示すように、例えば、計４０個のデータブロックがノード１０，２０，３０，４０に１０ブロックずつに割り当てられている。そのため、マッピング関数Ｆ（１）は、Ｎ＝ＱＵＯＴＩＥＮＴ（Ｂ，１０）である。このマッピング関数Ｆ（１）において、Ｎはノードの番号であり、Ｂはデータブロックの番号である。各データブロックは、マッピング関数Ｆ（１）：Ｎから算出される番号のノードに割り当てられる。すなわち、このマッピング関数Ｆ（１）：Ｎを用いて、ノード１０，２０，３０，４０に対する割り当てが算出される。
【００６６】
なお、上述のマッピング関数Ｆ（１）：Ｎによって得られた情報は、分散ファイル管理装置１のマッピング関数制御部４によって、他のノード２０，３０，４０に通知される。各ノードでは、マッピング関数記憶部でマッピング関数Ｆ（１）：Ｎを記憶するとともに、これに従って、マッピングテーブル更新部でマッピングテーブルを更新する。また、１８個のファイルｆ１〜ｆ１８が、ファイル名のハッシュ値に従って、該当するデータブロックに格納されているものとする。
【００６７】
上述のような構成を有する分散ファイル管理装置１において、クライアント１０００が例えばファイルｆ９にアクセスする場合のクライアント１０００及び分散ファイル管理装置１の動作を、図６に示すフロー及び図１０に示す図を用いて説明する。なお、図１０において、符号３６０，４６０は、それぞれ、ノード３０，４０のマッピングテーブルを示す。
【００６８】
まず、ステップＳＡ１で、クライアント１０００のマッピング関数取得部２２３が、マウント先のノード１０，２０，３０，４０に対して、マッピング関数の取得を行う。なお、この時点では、ノード１０，２０，３０，４０のマッピング関数記憶部には、一つもマッピング関数が記憶されていない状態のため、クライアント１０００のマッピング関数取得部１０２３は、マッピング関数Ｆ（０）：Ｎまで取得済みの状態となる。
【００６９】
上述のようにクライアント１０００が取得済みのマッピング関数はＦ（０）：Ｎであるため、続くステップＳＡ２では、マウント先のノード（例えばノード１０）において、マッピング関数制御部１５０が、マッピング関数記憶部１５３に記憶されているＦ（１）：Ｎ以降のマッピング関数を、マッピング関数通知部１５５によって、クライアント１０００に通知する。
【００７０】
ステップＳＡ３では、クライアント１０００のマッピング関数取得部１０２３がマッピング関数通知部１５５によって通知されたマッピング関数Ｆ（１）：Ｎを取得し、マッピング関数記憶部１０２１が、取得したマッピング関数Ｆ（１）：Ｎを記憶する。そして、クライアント１０００のマッピングテーブル更新部１０２２が、マッピングテーブル２３０を更新する。
【００７１】
ステップＳＡ４において、クライアント１０００の分散ファイルアクセス部１０１０が分散ファイル管理装置１に格納されたファイルｆ９にアクセスする際に、分散ファイルアクセス部１０１０は、ファイルｆ９のハッシュ値からデータブロックＢ７に格納されていることを把握する（従来技術の構成と同様なので詳しい説明を省略）。そして、分散ファイルアクセス部１０１０は、マッピングテーブル１０３０の情報に基づいてデータブロックＢ７がノード１０にあると判断する。これにより、クライアント１０００は、ノード１０の分散ファイルシステム部１１０を経由して、ファイルｆ９にアクセスすることができる。その後、このフローを終了する（Ｅｎｄ）。
【００７２】
次に、ノード５０を追加した場合におけるクライアント１０００及び分散ファイル管理装置１の動作について、図７、図８、図１１を用いて説明する。以下の説明では、ノード５０を分散ファイル管理装置１に追加して、各ノードのデータをリバランスした後、クライアント１０００が分散ファイル管理装置１内に格納されているファイルｆ９にアクセスする例について説明する。なお、図１１において、符号３５０，４５０は、それぞれ、ノード３０，４０のマッピング関数制御部を示す。
【００７３】
まず、ステップＳＢ１において、ノード５０を分散ファイル管理装置１に追加する際には、分散ファイル管理装置１の既存のノード（例えばノード１０）によってノード追加のコマンドが実行される。これにより、分散ファイル管理装置１における分散ファイル制御部６０の構成変更部２によって、ノード５０が分散ファイル管理装置１に追加される。
【００７４】
このとき、ノード５０のファイルシステム部５２０は、既存のノード１０，２０，３０，４０にデータブロックが１０個ずつ用意されていることを検出する。ステップＳＢ２で、ファイルシステム部５２０は、（総データブロック数）／（追加後のノード数）の計算に基づいて、必要なデータブロック数を８と判断し、データブロック数が８個になるように、自身のデータ格納領域を分割する。ノード５０のデータ格納領域の分割後の状態を、図９（ｂ）に示す。
【００７５】
次に、ステップＳＢ３において、既存ノード１０，２０，３０，４０のアクセス統計処理部が、それぞれ、各ノードにおけるデータブロック毎のアクセス量及びファイル容量を求めて、その結果を他のノードと共有する。
【００７６】
その後、ステップＳＢ４で、ノード１０のマッピング関数生成部１５０が、既存ノード１０，２０，３０，４０から追加したノード５０へのデータブロックの移動を示すマッピング関数を生成する。
【００７７】
具体的には、マッピング関数生成部１５０は、以下のようにしてマッピング関数を生成する。例えば、図９に示すように、既存のノード１０，２０，３０，４０における１０個のデータブロックからデータブロックを２個ずつ、追加したノード５０に移動させる場合、マッピング関数生成部１５０は、ＭＯＤ関数を用いて、基数が１０で剰余が０〜９の場合の関数を１０種類、生成する。
【００７８】
次に、ステップＳＢ５において、マッピング関数選択部１５２が、マッピング関数生成部１５０によって生成された関数式のうち２つを選ぶ。このとき、マッピング関数選択部１５２は、データブロックを再割り当てした場合のノード毎のアクセス量及びファイル容量を比較して、各ノードのばらつきが一番小さくなるような関数式を２つ選択する。
【００７９】
前記ステップＳＢ５において、追加したノード５０へのデータブロックの再割り当てを示すマッピング関数Ｆ（２）が、剰余１及び７に等しいものに決まったとすると、続くステップＳＢ６では、マッピング関数通知部１５５が、ノード１０，２０，３０，４０，５０のマッピング関数記憶部に前記マッピング関数Ｆ（２）を通知する。そうすると、ステップＳＢ７で、各ノードのマッピングテーブル更新部が、マッピングテーブルを更新する。
【００８０】
各ノードでは、ステップＳＢ７でマッピングテーブルの情報が更新されると、分散ファイルシステム部及びファイルシステム部が、既存のノード１０、２０，３０，４０に割り当てられていたデータブロックに格納されていたデータの一部を、追加したノード５０のデータブロックに割り当て直して、前記一部のデータをノード５０のデータブロック５３０にコピーする（ステップＳＢ８）。
【００８１】
なお、上述のコピーが完了すると、既存のノード１０、２０，３０，４０において、追加したノード５０のデータブロック５３０にデータがコピーされたデータブロックは削除され、該データブロックに割り当てられていた論理ボリュームは開放される。
【００８２】
次に、ステップＳＢ９以降で、クライアント１０００が分散ファイル管理装置１に格納されたファイルデータにアクセスする場合について説明する。ここでは、一例として、クライアント１０００から分散ファイル管理装置１に格納されたデータブロック７のデータファイルｆ９にアクセスする場合について説明する。
【００８３】
まず、ステップＳＢ９では、クライアント１０００の分散ファイルアクセス部１０１０は、ノード２０にアクセスする。本実施形態の場合、ノード２０にはデータブロック７が存在しない。ノード２０の分散ファイルシステム部２１０は、自身に存在しないデータブロック７へのアクセスを検出すると、マッピングテーブル２６０から、データブブロック７がノード５０に再割り当てされている情報を読み込むことにより、ノード５０にリダイレクトする。
【００８４】
その結果、ステップＳＢ１０では、ノード５０からファイルｆ９へのアクセス結果がクライアント１０００に返される。クライアント１０００では、分散ファイルアクセス部１０１０がリダイレクトを検出するため、マッピング関数取得部１０２３が、マッピング関数記憶部１０２１にＦ（１）までマッピング関数が記憶されていることを、ノード５０のマッピング関数通知部に通知する（ステップＳＢ１１）。
【００８５】
続いてステップＳＢ１２において、ノード５０のマッピング関数通知部では、ノード５０のマッピング関数記憶部にＦ（１）、Ｆ（２）のマッピング関数が記憶されていることを検出すると、マッピング関数Ｆ（２）をクライアント１０００に通知する。
【００８６】
クライアント１０００では、ノード５０から通知されたマッピング関数Ｆ（２）をマッピング関数記憶部１０２１が記憶し、マッピングテーブル更新部１０２２がマッピング関数Ｆ（２）によってマッピングテーブル１０３０を更新する。
【００８７】
その後、クライアント１０００は、データブロック７のデータファイルｆ９へのアクセスを、ノード５０に対して行う（ステップＳＢ９）。なお、このデータファイルｆ９へのアクセスは、図６に示すフローのステップＳＡ４と同様なので、詳しい説明を省略する。
【００８８】
ここで、ステップＳＢ１が構成変更ステップに対応し、ステップＳＢ２がデータブロック分割ステップに対応する。また、ステップＳＢ４及びＳＢ５がマッピング関数制御ステップに対応し、ステップＳＢ８がファイル管理ステップに対応する。さらに、ステップＳＢ６がマッピング関数通知ステップに対応し、ステップＳＢ４がマッピング関数生成ステップに対応し、ステップＳＢ５がマッピング関数選択ステップに対応する。
【００８９】
従来の構成の場合には、既存のノード間でもデータファイルの移動が発生していたが、上述のような本実施形態の構成により、図２に示すように、ノード５０を追加した際に、ノード５０に対してデータファイルを移動するようにリバランス処理を行うことにより、ノード間のデータ移動量を減らすことができる。
【００９０】
したがって、本実施形態の構成により、ノード１０，２０，３０，４０，５０とクライアント１０００との間でのマッピングテーブルの通知に関し、通信量を減らすことが可能となる。これにより、分散ファイル管理装置１に性能及び容量の拡大を目的としたノード５０の追加によるクライアント１０００と分散ファイル管理装置１とのアクセス性能への悪影響を低減することができる。
【００９１】
また、クラウド環境のように多数のクライアント１０００が存在している状況においてノードの追加を行った場合、ハッシュレンジや各ノードのデータブロックの割り当て情報をマッピングテーブルとしてクライアント１０００に伝える代わりに、通信量が少なく且つマッピングテーブルを算出可能なマッピング関数を用いるとともに、クライアント１０００側で取得していないマッピング関数のみを該クライアント１０００に通知することにより、クライアント１０００との間の通信量を削減できる。
【００９２】
本発明の実施形態におけるプログラムは、コンピュータに、図７に示すステップＳＢ１からＳＢ８を実行させるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行することによって、本実施形態における分散ファイル管理装置１と分散ファイル管理方法とを実現することができる。この場合、コンピュータのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）は、分散ファイル制御部６０、アクセス処理統計部７０及びマッピング関数制御部４として機能し、処理を行なう。また、前記ＣＰＵと同一または異なるＣＰＵは、各ノードの分散ファイルシステム部、ファイルシステム部、アクセス統計処理部及びマッピング関数制御部として機能し、処理を行う。
【００９３】
また、本実施形態では、データブロック１３０，２３０，・・・は、コンピュータに備えられたハードディスク等の記憶装置に、これらを構成するデータファイルを格納することによって、又はこのデータファイルが格納された記録媒体をコンピュータと接続された読取装置に搭載することによって実現されている。
【００９４】
ここで、本実施形態におけるプログラムを実行することによって、分散ファイル管理装置１を実現するコンピュータについて図１２を用いて説明する。図１２は、本発明の実施形態における分散ファイル管理装置１を実現するコンピュータの一例を示すブロック図である。
【００９５】
図１２に示すように、コンピュータ２０００は、ＣＰＵ２００１と、メインメモリ２００２と、記憶装置２００３と、入力インターフェイス２００４と、表示コントローラ２００５と、データリーダ／ライタ２００６と、通信インターフェイス２００７とを備える。これらの各部は、バス２０１１を介して、互いにデータ通信可能に接続される。
【００９６】
ＣＰＵ２００１は、記憶装置２００３に格納された、本実施の形態におけるプログラム（コード）をメインメモリ２００２に展開し、これらを所定順序で実行することにより、各種の演算を実施する。メインメモリ２００２は、典型的には、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等の揮発性の記憶装置である。また、本実施の形態におけるプログラムは、コンピュータ読み取り可能な記録媒体２０１０に格納された状態で提供される。なお、本実施の形態におけるプログラムは、通信インターフェイス２００７を介して接続されたインターネット上で流通するものであっても良い。
【００９７】
また、記憶装置２００３の具体例としては、ハードディスクドライブの他、フラッシュメモリ等の半導体記憶装置が挙げられる。入力インターフェイス２００４は、ＣＰＵ２００１と、キーボード及びマウスといった入力機器２００８との間のデータ伝送を仲介する。表示コントローラ２００５は、ディスプレイ装置２００９と接続され、ディスプレイ装置１１９での表示を制御する。
【００９８】
データリーダ／ライタ２００６は、ＣＰＵ２００１と記録媒体２０１０との間のデータ伝送を仲介し、記録媒体２０１０からのプログラムの読み出し、及びコンピュータ２０００における処理結果の記録媒体２０１０への書き込みを実行する。通信インターフェイス２００７は、ＣＰＵ２００１と、他のコンピュータとの間のデータ伝送を仲介する。
【００９９】
また、記録媒体２０１０の具体例としては、ＣＦ（Ｃｏｍｐａｃｔ  Ｆｌａｓｈ（登録商標））及びＳＤ（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）等の汎用的な半導体記憶デバイス、フレキシブルディスク（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ）等の磁気記憶媒体、又はＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）などの光学記憶媒体が挙げられる。
【０１００】
なお、本実施の形態におけるプログラムは、複数のコンピュータによって構築されたコンピュータシステムによって実行されても良い。この場合は、例えば、各コンピュータが、それぞれ、分散ファイル制御部６０、アクセス処理統計部７０、マッピング関数制御部４、及び、各ノードの分散ファイルシステム部、ファイルシステム部、アクセス統計処理部及びマッピング関数制御部のいずれかとして機能しても良い。また、各ノードのデータブロックは、本実施の形態におけるプログラムを実行するコンピュータとは別のコンピュータ上に構築されていても良い。
【０１０１】
上述した実施の形態の一部または全部は、以下に記載する（付記１）〜（付記１２）によって表現することができるが、以下の記載に限定されるものではない。
【０１０２】
（付記１）
データファイルが格納された複数のデータブロックを有するノードを備えた分散ファイル管理装置であって、
前記複数のデータブロックに格納されたデータファイルの一部の割り当て先として、データ格納領域を有するノードを追加する構成変更部と、
前記追加されたノードにおいて、そのデータ格納領域を、必要な数のデータブロックに分割するデータブロック分割部と、
前記データファイルの一部を、前記追加されたノードのデータブロックに割り当てるマッピング関数を決定するマッピング関数制御部と、
前記マッピング関数に応じて、前記データファイルの一部を、前記追加されたノードに移動させるファイル管理部とを備える、分散ファイル管理装置。
【０１０３】
（付記２）
前記ノード及び前記追加されたノードにアクセス可能なクライアントに対し、前記マッピング関数を通知するマッピング関数通知部をさらに備える、付記１に記載の分散ファイル管理装置。
【０１０４】
（付記３）
前記マッピング関数通知部は、前記マッピング関数のうち前記クライアントがすでに取得しているマッピング関数を除いて、前記クライアントに通知する、付記２に記載の分散ファイル管理装置。
【０１０５】
（付記４）
マッピング関数制御部は、
複数のマッピング関数を生成するマッピング関数生成部と、
前記複数のデータブロックに対するアクセス量及び前記複数のデータブロック内に格納されているデータファイル容量に基づいて、前記複数のマッピング関数の中から最適なマッピング関数を選択するマッピング関数選択部とを有する、付記１から３のいずれか一つに記載の分散ファイル管理装置。
【０１０６】
（付記５）
データファイルが格納された複数のデータブロックを有するノードを備えた分散ファイル管理装置による分散ファイル管理方法であって、
前記複数のデータブロックに格納されたデータファイルの一部の割り当て先として、データ格納領域を有するノードを追加する構成変更ステップと、
前記追加されたノードにおいて、そのデータ格納領域を、必要な数のデータブロックに分割するデータブロック分割ステップと、
前記データファイルの一部を、前記追加されたノードのデータブロックに割り当てるマッピング関数を決定するマッピング関数制御ステップと、
前記マッピング関数に応じて、前記データファイルの一部を、前記追加されたノードに移動させるファイル管理ステップとを備える、分散ファイル管理方法。
【０１０７】
（付記６）
前記ノード及び前記追加されたノードにアクセス可能なクライアントに対し、前記マッピング関数を通知するマッピング関数通知ステップをさらに備える、付記５に記載の分散ファイル管理方法。
【０１０８】
（付記７）
前記マッピング関数通知ステップは、前記マッピング関数のうち前記クライアントがすでに取得しているマッピング関数を除いて、前記クライアントに通知する、付記６に記載の分散ファイル管理方法。
【０１０９】
（付記８）
前記マッピング関数制御ステップは、
複数のマッピング関数を生成するマッピング関数生成ステップと、
前記複数のデータブロックに対するアクセス量及び前記複数のデータブロック内に格納されているデータファイル容量に基づいて、前記複数のマッピング関数の中から最適なマッピング関数を選択するマッピング関数選択ステップとを有する、付記５から７のいずれか一つに記載の分散ファイル管理方法。
【０１１０】
（付記９）
データファイルが格納された複数のデータブロックを有するノードを備えた分散ファイル管理装置による分散ファイル管理方法を制御するためのプログラムであって、
コンピュータに、
前記複数のデータブロックに格納されたデータファイルの一部の割り当て先として、データ格納領域を有するノードを追加する構成変更ステップと、
前記追加されたノードにおいて、そのデータ格納領域を、必要な数のデータブロックに分割するデータブロック分割ステップと、
前記データファイルの一部を、前記追加されたノードのデータブロックに割り当てるマッピング関数を決定するマッピング関数制御ステップと、
前記マッピング関数に応じて、前記データファイルの一部を、前記追加されたノードに移動させるファイル管理ステップとを実行させる、プログラム。
【０１１１】
（付記１０）
前記コンピュータに、前記ノード及び前記追加されたノードにアクセス可能なクライアントに対し、前記マッピング関数を通知するマッピング関数通知ステップをさらに実行させる、付記９に記載のプログラム。
【０１１２】
（付記１１）
前記マッピング関数通知ステップは、前記マッピング関数のうち前記クライアントがすでに取得しているマッピング関数を除いて、前記クライアントに通知する、付記１０に記載のプログラム。
【０１１３】
（付記１２）
前記マッピング関数制御ステップは、
複数のマッピング関数を生成するマッピング関数生成ステップと、
前記複数のデータブロックに対するアクセス量及び前記複数のデータブロック内に格納されているデータファイル容量に基づいて、前記複数のマッピング関数の中から最適なマッピング関数を選択するマッピング関数選択ステップとを有する、付記９から１１のいずれか一つに記載のプログラム。
【０１１４】
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記実施の形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【産業上の利用可能性】
【０１１５】
本発明は、データファイルが格納された複数のデータブロックを有するノードを備えた分散ファイル管理装置に利用可能である。
【符号の説明】
【０１１６】
１  分散ファイル管理装置
２  構成変更部
３  データブロック分割部
４  マッピング関数制御部
５  ファイル管理部
１０、２０、３０、４０、５０  ノード
６０  分散ファイル制御部
７０  アクセス統計処理部
１１０、２１０、５１０  分散ファイルシステム部
１１１  データアクセス部
１２０、２２０、５２０  ファイルシステム部
１３０、２３０、３３０、４３０、５３０  データブロック
１４０、２４０、５４０  アクセス統計処理部
１４１  アクセス量検出部
１４２  ファイル容量算出部
１５０、２５０、３５０、４５０、５５０  マッピング関数制御部
１５１  マッピング関数生成部
１５２  マッピング関数選択部
１５３  マッピング関数記憶部
１５４  マッピングテーブル更新部
１５５  マッピング関数通知部
１６０、２６０、３６０、４６０、５６０  マッピングテーブル
１０００  クライアント
１０１０  分散ファイルアクセス部
１０２０  マッピング関数制御部
１０２１  マッピング関数記憶部
１０２２  マッピングテーブル更新部
１０２３  マッピング関数取得部
１０３０  マッピングテーブル
２０００  コンピュータ
２００１  ＣＰＵ
２００２  メインメモリ
２００３  記憶装置
２００４  入力インターフェイス
２００５  表示コントローラ
２００６  データリーダ／ライタ
２００７  通信インターフェイス
２００８  入力機器
２００９  ディスプレイ装置
２０１０  記録媒体
２０１１  バス
【図１】
0006701890.tif 000002
【図２】
0006701890.tif 000003
【図３】
0006701890.tif 000004
【図４】
0006701890.tif 000005
【図５】
0006701890.tif 000006
【図６】
0006701890.tif 000007
【図７】
0006701890.tif 000008
【図８】
0006701890.tif 000009
【図９】
0006701890.tif 000010
【図１０】
0006701890.tif 000011
【図１１】
0006701890.tif 000012
【図１２】
0006701890.tif 000013