(57)【要約】  分散ファイルシステムにおけるデータの格納場所を、そのデータの使用に先だって新たに格納する際においても決定可能な情報処理装置であって、当該情報処理装置は、  データが生成された過程に関する生成情報を記憶する生成情報記憶部と、前記データと他のデータとが同一処理においてアクセスされる関連性を表す関連性情報を記憶する関連性情報記憶部とを有し、  対象データの前記分散ファイルシステムにおける配置先を決定する際、前記分散ファイルシステムに格納済みの他のデータのうち、前記生成情報が前記対象データの前記生成情報と類似する類似データを、前記対象データの前記生成情報と前記生成情報記憶部の情報とに基づいて習得し、取得した前記類似データとの間に前記関連性を有する関連データを、前記関連性情報記憶部を参照することによって習得し、  前記関連データの前記格納場所に基づいて、前記対象データの配置先を決定することを特徴とする。
2012127988.tif 000002
【特許請求の範囲】
【請求項１】
分散ファイルシステムに格納される各データの格納場所を表す情報を記憶する格納場所記憶部と、
前記データが生成された過程に関する生成情報を記憶する生成情報記憶部と、
前記データと他の前記データとが同一処理においてアクセスされる関連性を表す関連性情報を記憶する関連性情報記憶部と、
前記分散ファイルシステムにおける配置先を決定する対象となる対象データについての前記生成情報を取得すると共に、前記分散ファイルシステムに格納済みの他のデータのうち、前記対象データについて取得した前記生成情報と類似する類似データを前記生成情報記憶部から取得し、取得した前記類似データとの間に前記関連性を有する関連データを、前記関連性情報記憶部から取得する関連データ取得部と、
前記関連データの前記格納場所に基づいて、前記対象データの配置先となる格納場所を決定する配置先決定部と、
前記配置先決定部によって決定された格納場所への前記対象データの格納に応じて、前記格納場所記憶部および前記生成情報記憶部が記憶している情報を更新する情報更新部と、
を備えた情報処理装置。
【請求項２】
前記対象データが複製されることにより得られる複数の同一の各対象データの配置先に関する条件を表す配置ポリシーを記憶した配置ポリシー記憶部をさらに備え、
前記配置先決定部は、
前記複数の同一の各対象データに対して、前記配置ポリシーおよび前記関連データの格納場所に基づいて、配置先の格納場所をそれぞれ決定する請求項１に記載の情報処理装置。
【請求項３】
前記格納場所が１つ以上のノードによって構成される場合に、
前記各ノードの残り記憶容量を記憶する残り容量記憶部をさらに有し、
前記配置先決定部は、
前記関連データの格納場所および該格納場所を構成するノードの残り記憶容量に基づいて、配置先のノードを決定する請求項１または請求項２に記載の情報処理装置。
【請求項４】
前記生成情報記憶部は、
前記分散ファイルシステムに格納済みの各データについて、該各データが生成される際に適用されたデータ形式を表すデータ形式情報を前記生成情報として格納する請求項１から請求項３のいずれかに記載の情報処理装置。
【請求項５】
前記関連データ取得部は、
前記類似データについて、前記対象データに対する前記生成情報の類似の程度を表す類似度を算出し、前記類似データに対する前記関連データの関連性の程度を表す関連度を算出し、算出した前記類似度および前記関連度に基づいて前記関連データのスコアを算出し、
前記配置先決定部は、
前記関連データが格納されている各格納場所について、格納している前記関連データの前記スコアに基づき格納場所スコアを算出し、算出した格納場所スコアに基づいて、前記対象データの配置先となる格納場所を決定する請求項１から請求項４のいずれかに記載の情報処理装置。
【請求項６】
請求項１から請求項５のいずれかに記載の情報処理装置としてのマスター装置と、
グループ化された１つ以上のスレーブ装置と、を含み、
前記マスター装置の格納場所記憶部は、前記データの格納場所として前記データを格納する前記スレーブ装置およびその所属するグループを表す情報を記憶し、
前記マスター装置の関連データ取得部は、外部のクライアント装置からの前記対象データの配置先の問い合わせに応じて前記関連データを取得し、
前記配置先決定部は、前記関連データが格納されるスレーブ装置が所属するグループに基づいて、前記対象データの配置先のスレーブ装置を決定し、決定したスレーブ装置を表す情報を前記配置先として前記クライアント装置に送信し、
前記スレーブ装置は、
前記クライアント装置からの書き込み要求に応じて前記対象データを格納する
分散ファイルシステム。
【請求項７】
請求項６に記載の分散ファイルシステムに含まれるマスター装置に対して、前記対象データの配置先を問い合わせる配置先要求部と、
前記マスター装置から受信する配置先としてのスレーブ装置に対して、前記対象データの書き込みを要求する書き込み要求部と、
前記対象データの書き込み完了に伴い、前記対象データに関する情報を前記マスター装置に送信する書き込み完了通知部と、
を備えたクライアント装置。
【請求項８】
分散ファイルシステムに格納される各データの格納場所を表す情報を第１記憶装置に記憶し、
前記データが生成された過程に関する生成情報を第２記憶装置に記憶し、
前記データと他の前記データとが同一処理においてアクセスされる関連性を表す関連性情報を第３記憶装置に記憶し、
前記分散ファイルシステムにおいて配置先を決定する対象となる対象データについての前記生成情報を取得すると共に、前記分散ファイルシステムに格納済みの他のデータのうち、前記対象データについて取得した前記生成情報と類似する類似データを前記第２記憶装置から取得し、
前記分散ファイルシステムに格納済みの他のデータのうち前記類似データとの間に前記関連性を有する関連データを前記第３記憶装置から取得し、
前記関連データの前記格納場所に基づいて、前記対象データの配置先としての格納場所を決定し、
決定した格納場所への前記対象データの格納に応じて、前記第１及び第２記憶装置が記憶している情報を更新する、
情報処理方法。
【請求項９】
マスター装置が、
分散ファイルシステムに格納される各データの格納場所を表す情報を記憶し、
前記データが生成された過程に関する生成情報を記憶し、
前記データと他の前記データとが同一処理においてアクセスされる関連性を表す関連性情報を記憶しており、
クライアント装置が、前記マスター装置に対して対象データの配置先を問い合わせ、
前記マスター装置が、
前記対象データの前記生成情報を取得することにより、前記分散ファイルシステムに格納済みの他のデータのうち前記対象データに対して前記生成情報が類似する類似データを取得し、
前記分散ファイルシステムに格納済みの他のデータのうち前記類似データとの間に前記関連性を有する関連データを取得し、
前記関連データの前記格納場所に基づいて、前記対象データの配置先としての格納場所を決定し、
決定した格納場所を前記クライアント装置に返却し、
前記クライアント装置が、返却された前記格納場所に所属するスレーブ装置に対して、前記対象データの格納を要求し、
前記スレーブ装置が、前記対象データを格納し、
前記マスター装置が、前記対象データの格納場所および生成情報を追加して記憶する、
情報処理方法。
【請求項１０】
分散ファイルシステムに格納される各データの格納場所を表す情報を、第１記憶装置に記憶する格納場所記憶機能と、
前記データが生成された過程に関する生成情報を、第２記憶装置に記憶する生成情報記憶機能と、
前記データと他の前記データとが同一処理においてアクセスされる関連性を表す関連性情報を、第３記憶装置に記憶する関連性情報記憶機能と、
前記分散ファイルシステムにおいて前記配置先を決定する対象となる対象データについての前記生成情報を取得すると共に、前記分散ファイルシステムに格納済みの他のデータのうち前記対象データについて取得した前記生成情報と類似する類似データを前記第２記憶装置から取得する類似データ取得機能と、
前記分散ファイルシステムに格納済みの他のデータのうち前記類似データとの間に前記関連性を有する関連データを、前記第３記憶装置から取得する関連データ取得機能と、
前記関連データの前記格納場所に基づいて、前記対象データの配置先となる格納場所を決定する配置先決定機能と、
前記配置先決定機能によって決定された格納場所への前記対象データの格納に応じて、前記第１及び第２記憶装置が記憶している情報を更新する情報更新機能とを、
コンピュータに実行させるコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散ファイルシステムにおいてデータの配置先を決定する技術分野に関する。
【背景技術】
【０００２】
近年、情報処理装置で処理するデータ量の増加に伴い、分散した複数の情報処理装置を用いてデータを保存する分散ファイルシステムがよく知られている。例えば、Ｇｏｏｇｌｅ社（但しＧｏｏｇｌｅは登録商標）のＧＦＳ（Ｇｏｏｇｌｅ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）や、オープンソースのＨＤＦＳ（Ｈａｄｏｏｐ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）は、複数の情報処理装置を組み合わせることにより、１ＰＢ（ペタバイト）以上の容量をもつストレージを実現している。このような分散ファイルシステムは、ウェブページやログデータなどの日々増大するデータを格納することができる。また、このような分散ファイルシステムに格納されるデータは、それぞれ、ＭａｐＲｅｄｕｃｅやＨａｄｏｏｐなどの分散処理フレームワークによって効率的に分散処理される。
このような分散ファイルシステムは、一般に、格納するデータ（対象データ）の複製を作る機能を備えている。対象データの複製を作る目的には、主に、以下に説明する通り２つある。
即ち、１つ目の目的は、ファイルシステムの耐故障性を確保することである。分散ファイルシステムは、複数の情報処理装置によって構成されるため、いずれかの情報処理装置が故障する可能性がある。そのため、分散ファイルシステムは、対象データの複製を作成し、複製された対象データを、異なる情報処理装置に格納する。これにより、分散ファイルシステムは、係る対象データが常にバックアップされている状態を担保する。もし、ある情報処理装置が故障した場合でも、係る対象データの複製が別の情報処理装置に保存されているため、分散ファイルシステム全体としては、その対象データを失うことはない。
そして、２つ目の目的は、同一データへのアクセスが集中することを緩和することである。即ち、分散ファイルシステムは、頻繁にアクセスされる特定の対象データを複製し、複製した対象データを、その分散ファイルシステムを構成する複数の情報処理装置に個別に格納する。これにより、係る特定の対象データに対して多くのプログラムから同時に読み込み要求が発生したような場合でも、分散ファイルシステムを構成する個々の情報処理装置の負荷を分散することが可能となる。これにより、このような分散ファイルシステムは、ボトルネックのないデータアクセスを提供することができる。
ここで、このような分散ファイルシステムにおいて、格納する対象データの配置先の決定に関する関連技術の一例について説明する。以下では、分散ファイルシステムを構成する情報処理装置は、データセンター等に設置されたラック（サーバ・ラック）内に収納されているとする。また、ラック内に収納された複数の情報処理装置は、通信ネットワーク（以下、「ネットワーク」と略称する）によって互いに通信可能に接続されているとする。更に、複数のラック間においても、異なるラックに収納されている複数の情報処理装置は、ネットワークによって互いに通信可能に接続されているとする。一般に、同一ラック内の個々の情報処理装置同士のネットワーク通信と比較して、異なるラック間における複数の情報処理装置同士のネットワーク通信は帯域が狭い。
例えば、このような分散ファイルシステムは、まず、１つの対象データを、３つ（＝（本体１個）＋（複製２個））の対象データに複製する。そして、分散ファイルシステムは、あるラック内の１つの情報処理装置に１つ目の対象データを配置し、同一のラック内の異なる情報処理装置に２つ目の対象データを配置し、そして、そのラックとは異なるラックに収納されている情報処理装置に３つ目の対象データを配置する。これにより、係る対象データは、複数のラックを利用して保存される。したがって、１つのラックに障害が発生した場合でも、対象データへのアクセスが保証される。また、前述した例では、２つのラックを用いているので、対象データの書き込みや更新に要するコストは、係る３つの対象データをすべて異なるラックに配置する場合に比べると小さい。そのため、このように対象データの配置先を決定する分散ファイルシステムは、格納する対象データの信頼性を保ちつつ、書き込みや更新のパフォーマンスを改善する。
また、このような分散ファイルシステムにおいて、対象データの配置先を決定する他の技術には、非特許文献１に記載された技術を適用可能である。非特許文献１は、データベースの行を複製する技術に関する。但し、非特許文献１に記載された技術において、行を対象データと読み替えれば、係る技術は、分散ファイルシステムに適用可能である。このような非特許文献１に記載された技術を適用した分散ファイルシステムは、データ同士の関連性に基づいて、複製した複数の対象データの配置先を決定する。ここで、“互いに関連のある複数のデータ”とは、同一アプリケーションによって同一処理において読み込まれるデータを意味する。以降、本願では、複数のデータが同一アプリケーションによって同一の処理においてアクセスされることを、“複数のデータが同時に使用される”と記載することもある。このような分散ファイルシステムは、同一アプリケーションにより同時に使用される可能性の高い複数のデータを、同一ラック内に配置する。
具体的には、非特許文献１に記載された技術を適用した分散ファイルシステムは、格納すべき対象データ同士の関連性をグラフで表現することによってグラフ分割を行う。このグラフでは、データ（またはデータの集合であるデータセット）がノードとして表される。そして、係るグラフにおいて、対象データ同士の関連性は、ノード間の辺で表される。また、グラフ分割は、分割ごとのノード数をできるだけ均等に、かつ分割をまたぐ辺の数をできるだけ小さくするという既知の問題である。このように、非特許文献１に記載された技術を適用した場合、分散ファイルシステムは、対象データの配置先の決定を、グラフ分割問題に帰着させることができる。なお、グラフ分割の最適解を求めることはＮＰ困難（Ｎｏｎ−ｄｅｔｅｒｍｉｎｉｓｔｉｃ  Ｐｏｌｙｎｏｍｉａｌ  ｔａｍｅ−Ｈａｒｄ）であるため、一般には、ヒューリスティックや近似アルゴリズムが適用される。これにより、このような分散ファイルシステムは、ラック間のデータ通信量にできるだけ偏りがなく、かつ関連するデータを同一ノードまたは同一ラックに配置するように、個々のデータの配置先を決定することができる。
このようにして、非特許文献１に記載された技術を適用した分散ファイルシステムは、複数の対象データを同時に使用する処理に伴うデータ転送を、一つのラック内で完結することができる。結果として、このような分散ファイルシステムは、複数の対象データを同時に使用する処理をより高速化することができる。
また、非特許文献１に記載された技術を適用した分散ファイルシステムは、複製された複数のデータの関連性をグラフ表現するため、係る複製された個々のデータ間の関連性を表す情報をあらかじめ必要とする。このような分散ファイルシステムは、一旦配置したデータに対する外部からのアクセス特性に基づいて、データ間の関連を表す情報を取得する。したがって、このように対象データの配置先を決定する技術は、主に、一旦データを配置した後に、そのアクセス特性に応じて配置先を適切に変更するために用いられる。
また、このようなデータ間の関連性を取得する他の技術が、特許文献１に記載されている。特許文献１に記載された技術においては、文書間の引用関係やキーワードの共有関係に基づいて、文書間の関連度を取得する。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Ｃａｒｌｏ  Ｃｕｒｉｎｏ，Ｅｖａｎ  Ｊｏｎｅｓ，Ｙａｎｇ  Ｚｈａｎｇ，Ｓａｍ  Ｍａｄｄｅｎ，“Ｓｃｈｉｓｍ：ａ  Ｗｏｒｋｌｏａｄ−Ｄｒｉｖｅｎ  Ａｐｐｒｏａｃｈ  ｔｏ  Ｄａｔａｂａｓｅ  Ｒｅｐｌｉｃａｔｉｏｎ  ａｎｄ  Ｐａｒｔｉｔｉｏｎｉｎｇ”，Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ＶＬＤＢ  Ｅｎｄｏｗｍｅｎｔ，Ｖｏｌ．３，Ｎｏ．１
【特許文献】
【０００４】
【特許文献１】特開２０００−６７０８２号公報
【０００５】
［発明が解決しようとする課題］
しかしながら、上述のような、１つの対象データを３つに複製すると共にそれらの配置先を決定する関連技術では、アプリケーションによって同時に使用される複数のデータが、異なるラックに配置されている場合も想定される。このため、分散ファイルシステムに保存された複数のデータを同時に使用する処理の高速化が望めないという課題がある。
また、非特許文献１に記載された技術を適用した分散ファイルシステムでは、データの関連性を表す情報を、一旦配置した後のデータに対するアクセス特性を基に取得することになる。このため、非特許文献１に記載された技術は、分散ファイルシステムに新たに格納されるデータの配置先を決定することができないという課題がある。
また、特許文献１に記載された技術においては、文書の引用関係やキーワードの共有といったデータ内容の類似性に基づいて文書間の関連性を取得している。ところが、アプリケーションによって同時に使用される可能性のある複数のデータは、必ずしもそのデータ内容に類似性があるわけではない。したがって、特許文献１に記載された技術を用いてデータ間の関連性を取得し、その後、非特許文献１に記載された技術を分散ファイルシステムに適用したとしても、保存された複数のデータを同時に使用する処理を高速化することは難しい。
本発明は、上述の課題を鑑みてなされた。本発明は、分散ファイルシステムにおける対象データの配置先として、その対象データを含む複数のデータを同時に使用する将来の処理をより高速化するために最適な格納場所を、その対象データの使用に先立て新たに格納する際においても決定することが可能な情報処理装置等を提供することを主たる目的とする。
【発明の概要】
【０００６】
上記の目的を達成すべく、本発明に係る情報処理装置は、以下の構成を備えることを特徴とする。
即ち、本発明の情報処理装置は、
分散ファイルシステムに格納される各データの格納場所を表す情報を記憶する格納場所記憶部と、
前記データが生成された過程に関する生成情報を記憶する生成情報記憶部と、
前記データと他の前記データとが同一処理においてアクセスされる関連性を表す関連性情報を記憶する関連性情報記憶部と、
前記分散ファイルシステムにおける配置先を決定する対象となる対象データについての前記生成情報を取得すると共に、前記分散ファイルシステムに格納済みの他のデータのうち、前記対象データについて取得した前記生成情報と類似する類似データを前記生成情報記憶部から取得し、取得した前記類似データとの間に前記関連性を有する関連データを、前記関連性情報記憶部から取得する関連データ取得部と、
前記関連データの前記格納場所に基づいて、前記対象データの配置先となる格納場所を決定する配置先決定部と、前記配置先決定部によって決定された格納場所への前記対象データの格納に応じて、前記格納場所記憶部および前記生成情報記憶部を更新する情報更新部と、を備える。
また、本発明の異なる見地としての分散ファイルシステムは、
上記情報処理装置としてのマスター装置と、グループ化された１つ以上のスレーブ装置と、を含み、前記マスター装置の格納場所記憶部は、前記データの格納場所として前記データを格納する前記スレーブ装置およびその所属するグループを表す情報を記憶し、前記マスター装置の関連データ取得部は、外部のクライアント装置からの前記対象データの配置先の問い合わせに応じて前記関連データを取得し、前記配置先決定部は、前記関連データが格納されるスレーブ装置が所属するグループに基づいて、前記対象データの配置先のスレーブ装置を決定し、決定したスレーブ装置を表す情報を前記配置先として前記クライアント装置に送信し、前記スレーブ装置は、前記クライアント装置からの書き込み要求に応じて前記対象データを格納する。
また、本発明の更なる見地としてのクライアント装置は、
上記マスター装置に対して、前記対象データの配置先を問い合わせる配置先要求部と、前記マスター装置から受信する配置先としてのスレーブ装置に対して、前記対象データの書き込みを要求する書き込み要求部と、前記対象データの書き込み完了に伴い、前記対象データに関する情報を前記マスター装置に送信する書き込み完了通知部と、を備える。
また、本発明の更なる見地としての情報処理方法は、
分散ファイルシステムに格納される各データの格納場所を表す情報を第１記憶装置に記憶し、
前記データが生成された過程に関する生成情報を第２記憶装置に記憶し、
前記データと他の前記データとが同一処理においてアクセスされる関連性を表す関連性情報を第３記憶装置に記憶し、
前記分散ファイルシステムにおいて配置先を決定する対象となる対象データについての前記生成情報を取得すると共に、前記分散ファイルシステムに格納済みの他のデータのうち、前記対象データについて取得した前記生成情報と類似する類似データを前記第２記憶装置から取得し、
前記分散ファイルシステムに格納済みの他のデータのうち前記類似データとの間に前記関連性を有する関連データを前記第２記憶装置に取得し、
前記関連データの前記格納場所に基づいて、前記対象データの配置先としての格納場所を決定し、
決定した格納場所への前記対象データの格納に応じて、前記第１及び第２記憶装置が記憶している情報を更新する。
また、本発明の更なる見地としての情報処理方法は、
マスター装置が、
分散ファイルシステムに格納される各データの格納場所を表す情報を記憶しておき、前記データが生成された過程に関する生成情報を記憶し、
前記データと他の前記データとが同一処理においてアクセスされる関連性を表す関連性情報を記憶し、
クライアント装置が、前記マスター装置に対して対象データの配置先を問い合わせ、
前記マスター装置が、
前記対象データの前記生成情報を取得することにより、前記分散ファイルシステムに格納済みの他のデータのうち前記対象データに対して前記生成情報が類似する類似データを取得し、
前記分散ファイルシステムに格納済みの他のデータのうち前記類似データとの間に前記関連性を有する関連データを取得し、
前記関連データの前記格納場所に基づいて、前記対象データの配置先としての格納場所を決定し、
決定した格納場所を前記クライアント装置に返却し、
前記クライアント装置が、返却された前記格納場所に所属するスレーブ装置に対して、前記対象データの格納を要求し、
前記スレーブ装置が、前記対象データを格納し、前記マスター装置が、前記対象データの格納場所および生成情報を追加して記憶する。
また、本発明の更なる見地としてのコンピュータ・プログラムは、
分散ファイルシステムに格納される各データの格納場所を表す情報を、第１記憶装置に記憶する格納場所記憶機能と、
前記データが生成された過程に関する生成情報を、第２記憶装置に記憶する生成情報記憶機能と、
前記データと他の前記データとが同一処理においてアクセスされる関連性を表す関連性情報を、第３記憶装置に記憶する関連性情報記憶機能と、
前記分散ファイルシステムにおいて前記配置先を決定する対象となる対象データについての前記生成情報を取得すると共に、前記分散ファイルシステムに格納済みの他のデータのうち前記対象データについて取得した前記生成情報と類似する類似データを前記第２記憶装置から取得する類似データ取得機能と、
前記分散ファイルシステムに格納済みの他のデータのうち前記類似データとの間に前記関連性を有する関連データを、前記第３記憶装置から取得する関連データ取得機能と、
前記関連データの前記格納場所に基づいて、前記対象データの配置先となる格納場所を決定する配置先決定機能と、
前記配置先決定機能によって決定された格納場所への前記対象データの格納に応じて、前記第１及び第２記憶装置が記憶している情報を更新する情報更新機能とを、コンピュータに実行させる。
また、同目的は、上記構成を有する情報提供装置、情報提供装置、或いはクライアント装置を、コンピュータによって実現するコンピュータ・プログラムが格納されている、コンピュータ読み取り可能な記憶媒体によっても達成される。
本発明によれば、分散ファイルシステムにおいて、対象データの配置先として、その対象データを含む複数のデータを同時に使用する将来の処理を、より高速化する格納場所を、その対象データを新たに格納する際にも決定可能な情報処理装置等を提供することができる。
【図面の簡単な説明】
【０００７】
【図１】本発明の第１の実施の形態としての分散ファイルシステムの構成を示すブロック図である。
【図２】本発明の第１の実施の形態としての分散ファイルシステムを構成する各装置のハードウェア構成図である。
【図３】本発明の第１の実施の形態におけるマスター装置の機能ブロック図である。
【図４】本発明の第１の実施の形態におけるクライアント装置の機能ブロック図である。
【図５】本発明の第１の実施の形態におけるスレーブ装置の機能ブロック図である。
【図６】本発明の第１の実施の形態におけるマスター装置の動作を説明するフローチャートである。
【図７】本発明の第１の実施の形態としての分散ファイルシステムの動作を説明するシーケンス図である。
【図８】本発明の第２の実施の形態としての分散ファイルシステムの構成を示すブロック図である。
【図９】本発明の第２の実施の形態としての分散ファイルシステムのネットワーク構成を説明する概念図である。
【図１０】本発明の第２の実施の形態におけるマスター装置の機能ブロック図である。
【図１１】本発明の第２の実施の形態におけるデータの生成の過程を説明するための概念図である。
【図１２】本発明の第２の実施の形態における生成情報記憶部に格納される情報の一例を示す図である。
【図１３】本発明の第２の実施の形態における関連性情報記憶部に格納される情報の一例を示す図である。
【図１４】本発明の第２の実施の形態としての分散ファイルシステムに格納される各データの格納場所の一例を示す図である。
【図１５】本発明の第２の実施の形態における格納場所記憶部に格納される情報の一例を示す図である。
【図１６】本発明の第２の実施の形態における残り容量記憶部に格納される情報の一例を示す図である。
【図１７】本発明の第２の実施の形態におけるクライアント装置の機能ブロック図である。
【図１８】本発明の第２の実施の形態におけるスレーブ装置の機能ブロック図である。
【図１９】本発明の第２の実施の形態におけるマスター装置の動作を説明するフローチャートである。
【図２０】本発明の第２の実施の形態における各データの生成の過程および関連性の一例を説明する図である。
【図２１】本発明の第２の実施の形態としての分散ファイルシステムの動作を説明するシーケンス図である。
【図２２】本発明の第３の実施の形態におけるマスター装置の機能ブロック図である。
【図２３】本発明の第３の実施の形態における生成情報記憶部に格納される情報の一例を示す図である。
【図２４】本発明の第３の実施の形態におけるクライアント装置の機能ブロック図である。
【図２５】本発明の第３の実施の形態におけるマスター装置の動作を説明するフローチャートである。
【図２６】本発明の第３の実施の形態としての分散ファイルシステムの動作を説明するシーケンス図である。
【発明を実施するための形態】
【０００８】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
（第１の実施の形態）
本発明の第１の実施の形態としての分散ファイルシステム１の構成を図１に例示する。図１において、分散ファイルシステム１は、マスター装置（以下、単に｛マスター｝と称する場合がある）１０と、複数のスレーブ装置（以下、単に「スレーブ」と称する場合がある）３０とによって構成される。マスター１０および各スレーブ３０は、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、公衆回線網、無線通信網、またはこれらの組合せ等によって構成されるネットワーク４００１を介して互いに通信可能に接続されている。また、スレーブ３０は、図１に例示的に一点鎖線にて囲ったブロックの如く、グループ化されている。同一グループを構成する複数のスレーブ３０の間は、そのグループの外部との通信回線に比較して広い通信帯域を有する別系統のネットワークで接続されている。例えば、スレーブ３０がラックマウント型のサーバ装置で構成される場合、１つのラックが１つのグループに相当する。
なお、図１には、それぞれ２つずつのスレーブ３０を含む２つのグループを例示している。しかしながら、図１に例示するシステム構成は、本発明の分散ファイルシステムが備えるグループ数およびスレーブ数を限定することはない。
また、分散ファイルシステム１は、クライアント装置（以下、単にクライアントともいう）２０と通信可能に上述のネットワーク４００１に接続されている。
次に、マスター１０、クライアント２０、および、スレーブ３０のハードウェア構成を図２に例示する。即ち、図２は、後述するマスター１０、クライアント２０、および、スレーブ３０が有する各機能ブロック（処理）を実現可能なソフトウェア・プログラム（コンピュータ・プログラム）を実行するハードウェア資源の構成例を示す。
図２において、マスター１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１００１と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１００２と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１００３と、ハードディスク等の記憶装置１００４と、ネットワークインタフェース１００５とを備えた情報処理装置によって構成されている。
また、クライアント２０は、ＣＰＵ２００１と、ＲＡＭ２００２と、ＲＯＭ２００３と、ハードディスク等の記憶装置２００４と、ネットワークインタフェース２００５とを備えた情報処理装置によって構成されている。
そして、スレーブ３０は、ＣＰＵ３００１と、ＲＡＭ３００２と、ＲＯＭ３００３と、ハードディスク等の記憶装置３００４と、ネットワークインタフェース３００５とを備えた情報処理装置によって構成されている。
次に、マスター１０の機能ブロック構成を図３に例示する。図３において、マスター１０は、格納場所記憶部１１と、生成情報記憶部１２と、関連性情報記憶部１３と、関連データ取得部１４と、配置先決定部１５と、情報更新部１６と、を備えている。ここで、図３に機能的に示した格納場所記憶部１１と、生成情報記憶部１２と、関連性情報記憶部１３とは、図２に示したハードウェア構成においては記憶装置１００４を用いて構成される。
また、関連データ取得部１４は、記憶装置１００４またはＲＯＭ１００３に記憶されたコンピュータ・プログラムモジュールをＲＡＭ１００２に読み込んで実行するＣＰＵ１００１によって構成される。また、配置先決定部１５および情報更新部１６は、記憶装置１００４またはＲＯＭ１００３に記憶されたコンピュータ・プログラムモジュールをＲＡＭ１００２に読み込んで実行するＣＰＵ１００１や実行に際してクライアント２０と適宜通信を行うネットワークインタフェース１００５等によって構成される。
但し本発明は、図３を例に説明したマスター装置のハードウェア構成には限定されない。
格納場所記憶部１１は、分散ファイルシステム１に格納される各データの格納場所を表す情報を記憶している。格納場所を表す情報とは、例えば、データを識別する情報と、そのデータがどのグループ内の何れのスレーブ３０に格納されているかを表す情報とを関連付けた情報であってもよい。
生成情報記憶部１２は、データが生成された過程に関する生成情報ＧＩを記憶している。生成情報ＧＩとは、例えば、そのデータが出力された処理において入力として用いられた１つ以上のデータを表す入力データ情報であってもよい。例えば、データＡおよびデータＢが、ある同一の処理において読み込まれ、その結果、データＣが出力された場合、そのデータＣの生成情報ＧＩは、係るデータＡおよびデータＢで表される。
なお、生成情報記憶部１２は、前述した生成情報ＧＩとして、クライアント２０から通知された情報を記憶してもよい。あるいは、このような生成情報ＧＩは、分散ファイルシステム１に格納されるデータに対するデータアクセス履歴の解析により取得された情報であってもよい。このようなデータアクセス履歴は、マスター１０に蓄積すればよい。例えば、データアクセス履歴に、アクセス元のクライアント２０のＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレス、プロセス識別子（以下、識別子を「ＩＤ」と称する場合がある）、アクセスしたデータの識別情報、および、リードまたはライトを表す情報が含まれていたと仮定する。この場合、ＩＰアドレスおよびプロセスＩＤが一致する履歴において、リードされたデータは、ライトされたデータの生成情報ＧＩであるとみなすことができる。あるいは、データアクセス履歴は、ＩＰアドレスおよびプロセスＩＤの代わりに、分散アプリケーションプログラムのジョブＩＤを記録したものであってもよい。このように、生成情報記憶部１２は、データアクセス履歴の解析により取得された生成情報ＧＩを格納してもよい。
関連性情報記憶部１３は、分散ファイルシステム１に格納されるデータ同士が同一処理においてアクセスされる関連性を表す関連性情報を記憶している。ここで、関連性情報は、データの内容の関連性を表すのではなく、データが他のデータと同一処理においてアクセスされる関連性を表す。例えば、データＡおよびデータＢが、同一の処理において読み込まれた場合、データＡおよびデータＢは、関連性を有する。
なお、このような関連性を表す関連性情報は、あらかじめ外部で定義された情報であってもよい。あるいは、このような関連性情報は、前述のデータアクセス履歴の解析により取得されたものであってもよい。例えば、データアクセス履歴においてＩＰアドレスおよびプロセスＩＤが一致するデータ同士は、関連性を有するとみなすことができる。また、関連性情報記憶部１３は、データアクセス履歴の定期的な解析に応じて更新されてもよい。また、このような関連性情報記憶部１３の更新は、後述の情報更新部１６が実行してもよい。
関連データ取得部１４は、分散ファイルシステム１において配置先を決定する対象となる対象データについて、対象データに生成情報ＧＩが類似する類似データを取得する。そして、関連データ取得部１４は、取得した類似データとの間に前述の関連性を有する関連データを取得する。
具体的には、関連データ取得部１４は、クライアント２０によって新たに生成されるファイルの分散ファイルシステム１における配置先の問い合わせをクライアント２０から受ける。そして、関連データ取得部１４は、対象データであるそのファイルの生成情報ＧＩを取得する。このとき、関連データ取得部１４は、クライアント２０から対象データと共にその生成情報ＧＩを取得してもよい。あるいは、関連データ取得部１４は、前述のデータアクセス履歴を解析することによりその生成情報ＧＩを取得してもよい。
そして、関連データ取得部１４は、分散ファイルシステム１に格納済みの他のデータのうち、対象データに対して生成情報ＧＩが類似する類似データを、生成情報記憶部１２に基づいて取得する。例えば、関連データ取得部１４は、対象データの生成処理において入力となった他のデータと同一のデータを入力として生成されたデータを、類似データとして取得してもよい。さらに、関連データ取得部１４は、取得した類似データとの間に関連性を有する関連データを関連性情報記憶部１３に基づいて取得する。
配置先決定部１５は、関連データの格納場所に基づいて、対象データの配置先となる格納場所を決定する。具体的には、配置先決定部１５は、関連データが格納されるスレーブ３０およびそのグループを表す情報を格納場所記憶部１１から取得する。そして、配置先決定部１５は、取得したグループ内のいずれかのスレーブ３０を、対象データの配置先として決定してもよい。そして、配置先決定部１５は、決定したスレーブ３０を表す情報をクライアント２０に送信する。
情報更新部１６は、配置先決定部１５によって決定された格納場所への対象データの格納に応じて、格納場所記憶部１１および生成情報記憶部１２を更新する。具体的には、情報更新部１６は、クライアント２０から、対象データの配置先、生成情報ＧＩおよびデータサイズ等の情報を含む書き込み完了通知を受けることにより、これらの情報を更新する。
また、情報更新部１６は、関連性情報記憶部１３の内容を定期的に更新してもよい。例えば、情報更新部１６は、前述のデータアクセス履歴を定期的に解析することによりデータ間の関連性情報を更新してもよい。
次に、クライアント２０の各機能ブロックについて、図４を参照して説明する。
図４において、クライアント２０は、配置先要求部２１と、書き込み要求部２２と、書き込み完了通知部２３とを備える。ここで、配置先要求部２１と、書き込み要求部２２と、書き込み完了通知部２３とは、記憶装置２００４またはＲＯＭ２００３に記憶されたコンピュータ・プログラムモジュールを、ＲＡＭ２００２に読み込んで実行するＣＰＵ２００１や、実行に際してマスター１０及びスレーブ３０と適宜通信を行うネットワークインタフェース２００５等によって構成される。
配置先要求部２１は、マスター１０に対して、対象データの配置先を問い合わせる。この対象データは、例えば、クライアント２０で新たに生成中のデータである。生成中の対象データは、まだ分散ファイルシステム１における配置先が決まっていない。そこで、配置先要求部２１は、マスター１０に対して対象データの配置先を問い合わせる。このとき、配置先要求部２１は、対象データを生成中の処理でアクセス中の入力データ情報（生成情報ＧＩ）を、配置先を要求する配置先要求情報に含めてマスター１０に対して送信してもよい。ここでは、一例として、クライアント２０上で動作するアプリケーションが、分散ファイルシステム１からデータＡおよびデータＢを読み込み、読み込んだこれらのデータを用いて対象データＣを生成する途中に、その対象データＣの配置先を問い合わせる場合を想定する。このとき、配置先要求部２１は、係る対象データＣの生成情報ＧＩとして、データＡおよびデータＢを表す情報を配置先要求情報に含めて、それらの情報をマスター１０に対して送信してもよい。
書き込み要求部２２は、分散ファイルシステム１の配置先決定部１５によって決定された特定の格納場所を表す情報を、マスター１０から受信する。そして、書き込み要求部２２は、受信した情報が表すスレーブ３０に対して、当該対象データの書き込み要求を送信する。
書き込み完了通知部２３は、当該対象データの特定の格納場所への書き込み完了に伴い、その対象データに関する情報を、マスター１０に送信する。係る対象データに関する情報とは、例えば、当該対象データの配置先を表す情報、当該対象データのサイズ、および、当該対象データの生成情報ＧＩ等であってもよい。
次に、スレーブ３０の機能ブロックについて図５を参照して説明する。図５において、スレーブ３０は、データ読み書き部３１と、データ記憶部３２とを備えている。ここで、データ読み書き部３１は、記憶装置３００４またはＲＯＭ３００３に記憶されたコンピュータ・プログラムモジュールをＲＡＭ３００２に読み込んで実行するＣＰＵ３００１や、実行に際してクライアント２０と適宜通信を行うネットワークインタフェース３００５等によって構成される。また、データ記憶部３２は、記憶部３００４によって構成される。
データ読み書き部３１は、クライアント２０からのデータの書き込み要求に応じて、データ記憶部３２へのデータの書き込みを行う。また、データ読み書き部３１は、クライアント２０からのデータの読み出し要求に応じて、データ記憶部３２からのデータの読み出しを行う。データ記憶部３２は、クライアント２０から送信されたデータを格納する。
以上のように構成された分散ファイルシステム１の動作について、図６及び図７を参照して説明する。
まず、マスター１０が、対象データの配置先を決定する動作について、図６に示すフローチャートを参照して説明する。
ここでは、まず、関連データ取得部１４は、対象データに生成情報ＧＩが類似する類似データを、その対象データの生成情報ＧＩと生成情報記憶部１２とに基づいて取得する（ステップＳ１）。
次に、関連データ取得部１４は、ステップＳ１で取得した類似データとの間に関連性を有する関連データを、関連性情報記憶部１３を参照することにより取得する（ステップＳ２）。
次に、配置先決定部１５は、ステップＳ２で取得した関連データの格納場所に基づいて、当該対象データの配置先となる格納場所を決定する（ステップＳ３）。
例えば、配置先決定部１５は、関連データが格納されるスレーブ３０が含まれるグループを表す情報を、格納場所記憶部１１から取得する。そして、当該対象データの配置先としてそのグループを決定する。さらに、配置先決定部１５は、そのグループ内のいずれかのスレーブ３０に配置先を決定する。
以上で、マスター１０は動作を終了する。
次に、クライアント２０が分散ファイルシステム１に新たにデータを格納する際の分散ファイルシステム１の動作について、図７に示すシーケンス図を参照して説明する。
まず、クライアント２０は、生成中の対象データの配置先要求情報を、マスター１０に送信する（ステップＳ１１）。
このとき、上述のように、クライアント２０は、当該対象データの生成情報ＧＩを、配置先要求情報に含めて送信してもよい。
次に、この配置先要求情報を受信したマスター１０の関連データ取得部１４は、受信した対象データの生成情報ＧＩに類似する類似データを取得し、取得した類似データとの間に関連性を有する関連データを取得する。そして、配置先決定部１５は、係る関連データの格納場所に基づいて、当該対象データの配置先となる格納場所を決定する。（ステップＳ１〜Ｓ３）。そして、配置先決定部１５は、決定した格納場所を表す情報を、クライアント２０に送信する。
次に、格納場所を受信したクライアント２０の書き込み要求部２２は、返却された情報が表すスレーブ３０に、対象データの書き込み要求を送信する（ステップＳ１２）。
書き込み要求を受信したスレーブ３０のデータ読み書き部３１は、対象データをデータ記憶部３２に格納する（ステップＳ１３）。そして、書き込みが完了したことを、クライアント２０に通知する。
次に、クライアント２０の書き込み完了通知部２３は、当該対象データに関する情報を、マスター１０に送信する（ステップＳ１４）。
このとき、書き込み完了通知部２３は、当該対象データに関する情報として、その対象データを格納したスレーブ３０およびそのグループを表す情報および当該対象データの生成情報ＧＩ等を、マスター１０に送信する。
書き込み完了通知を受信したマスター１０の情報更新部１６は、当該対象データの格納場所を、格納場所記憶部１１に追加する。さらに、情報更新部１６は、当該対象データの生成情報ＧＩを、生成情報記憶部１２に追加する。
以上で、分散ファイルシステム１は、動作を終了する。
次に、上述した第１の実施の形態の効果について説明する。
第１の実施の形態における分散ファイルシステムおよびマスター装置は、対象データの配置先として、その対象データを含む複数のデータを同時に使用する将来の処理をより高速化するために最適な格納場所を、その対象データの使用に先だって新たに格納する際においても決定することができる。
その理由は、本実施形態において、分散ファイルシステムに格納するデータの生成情報ＧＩを生成情報記憶部１２に記憶しておき、データ間の関連性情報を関連性情報記憶部１３に記憶しておく。そして、配置先決定部１５は、対象データに生成情報ＧＩが類似する類似データに関連する関連データを取得し、取得した関連データの格納場所に基づいて係る対象データの配置先を決定するからである。
これにより、第１の実施の形態における分散ファイルシステムおよびマスター装置は、新たに生成されるファイルのように、過去のアクセス特性を有さない等のために関連性のあるデータを得ることができないデータであっても、そのようなデータに関する生成情報ＧＩを参照することにより、その生成情報ＧＩが類似する類似データに関連する関連データを特定することが可能となる。このような関連データと対象データとは、将来の処理において同時に使用される（すなわち、クライアントが実行する同一の処理においてアクセスされる）可能性が高いと考えられる。したがって、当該関連データの格納場所に基づいて当該対象データを配置しておくことにより、ＭａｐＲｅｄｕｃｅなどによる分散データ処理に際して同一ラック内において処理が完結する可能性が高まる。このため、係る対象データを含む複数のデータを同時に使用する将来の処理の高速化が期待することができる。
（第２の実施の形態）
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第１の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
まず、本発明の第２の実施の形態としての分散ファイルシステム２の構成を図８に示す。図８において、分散ファイルシステム２は、マスター１００と、１つ以上のラックにそれぞれ配置されることによりグループ化されたスレーブ３００とによって構成される。マスター１００および各スレーブ３００は、ネットワーク４００２を介して互いに通信可能に接続されている。なお、図８に示す構成例では、２つのラックに２つずつ配置されたスレーブ３００を示している。しかしながら、本実施形態を例に説明する本発明は、分散ファイルシステムが管理するラック数およびスレーブ数は係る構成例には限定されない。
また、分散ファイルシステム２は、クライアント２００と通信可能に上述のネットワーク４００２に接続されている。
また、本実施の形態では、マスター１００およびスレーブ３００は、ラックを基本単位としたネットワーク４００２によって接続されている。例えば、図９に概念的に例示するように、ラックＲ１〜ＲＭは、それぞれ任意数のノードを含んでいる。各ノードＮ１＿１〜ＮＭ＿６には、コンピュータ装置が配置される。これらのノード間は、ラック内スイッチ（ＳＷ１，ＳＷ２，ＳＷ３）によりネットワーク接続されている。また、ラック間は、中央のスイッチＭＳで互いにネットワーク接続されている。これにより、任意のノードに配置された装置間は、互いに通信可能である。なお、このようなラックを単位とするネットワーク構成において、一般に、同一ラック内のノード間の通信にくらべ、異なるラック間の通信帯域は狭い。このようなラックを単位とするネットワーク構成において、マスター１００は任意のノードに配置され、それ以外のノードにスレーブ３００が配置される。クライアント２００は、このようなラックを単位とするネットワークに接続可能な外部のノードであってもよいが、本実施の形態では、分散ファイルシステム２が管理するいずれかのラックの任意のノードに配置されていると仮定して説明を行う。
また、マスター１００、クライアント２００、および、スレーブ３００のハードウェア構成は、図２を参照して説明した本発明の第１の実施の形態としてのマスター１０、クライアント２０およびスレーブ３０と同様であるため、本実施の形態における説明を省略する。
次に、マスター１００の機能ブロック構成について、図１０を参照して説明する。図１０において、マスター１００は、配置ポリシー記憶部１１０と、配置ポリシー展開部１２０と、生成情報記憶部１３０と、関連性情報記憶部１３５と、関連データ取得部１４０と、格納場所記憶部１５０と、残り容量記憶部１６０と、関連ラック計算部１５５と、最大容量ノード取得部１６５と、書き込みノード決定部１７０とを備える。
ここで、配置ポリシー記憶部１１０と、生成情報記憶部１３０と、関連性情報記憶部１３５と、格納場所記憶部１５０と、残り容量記憶部１６０とは、記憶装置１００４によって構成される。また、配置ポリシー展開部１２０と、書き込みノード決定部１７０と、情報更新部１８０とは、記憶装置１００４またはＲＯＭ１００３に記憶されたコンピュータ・プログラムモジュールをＲＡＭ１００２に読み込んで実行するＣＰＵ１００１や、実行に際してクライアント２００と適宜通信を行うネットワークインタフェース１００５等によって構成される。また、関連データ取得部１４０と、関連ラック計算部１５５と、最大容量ノード取得部１６５とは、記憶装置１００４またはＲＯＭ１００３に記憶されたコンピュータ・プログラムモジュールをＲＡＭ１００２に読み込んで実行するＣＰＵ１００１によって構成される。なお、配置ポリシー展開部１２０と、関連ラック計算部１５５と、最大容量ノード取得部１６５と、書き込みノード決定部１７０とは、本発明の第１の実施形態における配置先決定部１５の一実施形態を構成している。
配置ポリシー記憶部１１０は、対象データが複製されることにより得られる複数の同一の各対象データの配置先に関する条件を表す配置ポリシーを保存している。例えば、配置ポリシーは、以下のような表記法（記載ルール）で記述されてもよい。
＜配置ポリシーの表記法の一例＞
−  Ｐｏｌｉｃｙ：＝Ｐ＿＜Ｎｏ＞ＰｌａｃｅＴｏＳｔｏｒｅ，
−  ＰｌａｃｅＴｏＳｔｏｒｅ：＝Ｒａｃｋ．Ｎｏｄｅ，
この例では、Ｐ＿＜Ｎｏ＞は、ポリシー番号を表す。＜Ｎｏ＞は、ポリシーの適用順序を表す数値である。また、Ｒａｃｋ．Ｎｏｄｅは、ラックを識別する情報とそのラック内のノードを識別する情報を表している。本実施の形態では、対象データが複製されることにより得られる複数の同一の各対象データの配置先は、このような配置ポリシーを満たすものの中から決定される。上述の表記法に基づく、ラックの指定方法およびノードの指定方法の一例を以下に示す。
＜ラック指定に関する表記法の一例＞
−  Ｒ＿＜ｎ＞：識別番号ｎのラック，
−  Ｒ＿ｃｕｒ：クライアント２００が配置されたノードを含むラック，
−  Ｒ＿Ｐ＜ｎ＞：ポリシーｎで決定したラック，
−  〜Ｒ：ラックＲ以外のラック，
−  ＊：任意のラック，
＜ノード指定に関する表記法の一例＞
−  Ｎ＿＜ｎ＞：識別番号ｎのノード（ラックがＲ＿＜ｎ＞で表されている場合に指定可），
−  Ｎ＿ｃｕｒ：クライアント２００が配置されたノード（ラックがＲ＿ｃｕｒで表されている場合に指定可），
−  Ｎ＿Ｐ＜ｎ＞：ポリシーｎで決定したノード（ラックがＲ＿Ｐ＜ｎ＞のみ指定可），
−  〜Ｎ：ノードＮ以外のノード，
−  ＊：任意のノード，
このような表記法を用いた配置ポリシーの一例を次に示す。
＜配置ポリシーの一例＞
−  ポリシーＰ１：Ｐ１  Ｒ＿ｃｕｒ．＊，
−  ポリシーＰ２：Ｐ２  〜Ｒ＿Ｐ１．＊，
この場合、ポリシーＰ１は、同一の複数の対象データのうち１つ目の対象データを表すと共に、この１つ目の対象データを、クライアント２００が配置されたノードを含むラック内の任意ノードに配置することを表している。
また、ポリシーＰ２は、同一の複数の対象データのうち２つ目の対象データを表すと共に、この２つ目の対象データを、上記ポリシーＰ１が表すラック以外のラック内の任意ノードに配置することを表している。
なお、配置ポリシー記憶部１１０は、このような表記法に基づく配置ポリシーに限らず、他の表記法による配置ポリシーを記憶していてもよい。
配置ポリシー展開部１２０は、配置ポリシー記憶部１１０からポリシーを１つずつ取り出し、取り出したポリシーに含まれるラック指定に関する表記部分を、そのラック指定に対応するラックに展開する。ポリシー展開部１２０は、ラックを決定後、ノード指定に関する表記部分を、そのノード指定に対応するノードに展開する。
なお、配置ポリシー展開部１２０は、クライアント２００が配置されているラックおよびノードを表す情報を、クライアント２００から取得してもよい。あるいは、ポリシー展開部１２０は、クライアント２００が配置されているラックおよびノードを表す情報を、マスター１００があらかじめ記憶している各ノードのネットワーク上のアドレスと、クライアント２００のアドレスとを比較することにより取得してもよい。
分散ファイルシステム２に格納済みの各データを対象として、生成情報記憶部１３０は、当該各データが出力された処理において入力となった他のデータを表す入力データ情報を、生成情報ＧＩとして格納する。ここで、例えば、図１１に例示するようなデータの入出力関係を想定する。図１１に例示した入出力関係は、データＤ１が、データＤ５およびデータＤ６を入力とした処理において生成されたことを表している。また、図１１は、データＤ２が、データＤ６を入力とした処理において生成されたことを表している。
そして図１１に示す場合に、生成情報記憶部１３０が記憶する情報の一例を図１２に示す。図１２において、各データの生成情報ＧＩは、各行で表されている。また、各データの生成情報ＧＩは、その生成処理において読み込まれた他のデータを１で表した特徴ベクトルと、それ以外のデータを０で表した特徴ベクトルとして表される。なお、生成情報記憶部１３０は、図１２に示す形式の他、その他の形式によって表された生成情報ＧＩを記憶してもよい。
関連性情報記憶部１３５は、第２の実施形態に係る分散ファイルシステム２に格納済みのデータ間の関連性を表す関連性情報として、関連性の程度を表す関連度を記憶する。ここで、上述した第１の実施の形態と同様に、複数のデータ間に関連性があるとは、クライアント２００が実行する同一の処理においてアクセスされること（すなわち、同時に使用されること）を表す。そして、様々な処理において同時に使用されるデータ間の関連度は大きくなる。
また、関連性情報記憶部１３５は、あらかじめ外部で定義された関連度を記憶してもよい。また、関連性情報記憶部１３５は、マスター１００に蓄積されるデータアクセス履歴に基づき算出される関連度を記憶してもよい。
関連性情報記憶部１３５が記憶する情報の一例を図１３に示す。図１３において１行目は、データＤ１と他のデータとの間の関連度を表している。より具体的に１行目に注目した場合、この例では、データＤ１およびデータＤ８間の関連度は０．８である。同様に、２行目のデータＤ２に注目した場合、データＤ２およびデータＤ９間の関連度は０．６である。
尚、例えば、データアクセス履歴に、クライアント２００のＩＰアドレス、プロセスＩＤおよびアクセスされたデータの識別情報が含まれるとする。この場合、データＤ１およびデータＤ８間の関連度は、データアクセス履歴において、データＤ１およびデータＤ８に対するアクセスのうち、ＩＰアドレスおよびプロセスＩＤの両方が一致する数を、所定の母数で割った値であってもよい。このようなデータアクセス履歴は、ＩＰアドレスおよびプロセスＩＤに限らず、分散アプリケーションプログラムのジョブＩＤを含むものであってもよい。なお、関連性情報記憶部１３５は、図１３に示す形式の他、その他の形式によって表された関連性情報を記憶してもよい。
関連データ取得部１４０は、対象データに生成情報ＧＩが類似する類似データとの間に関連性を有する各関連データについてスコアを算出する。このスコアは、関連データが対象データと同時に使用される可能性の高さを表す。なお、関連データ取得部１４０は、配置ポリシー展開部１２０によって展開されたラックおよびノードが一意に決定していない場合に、これらの関連データのスコアを算出する。例えば、関連データ取得部１４０は、対象データの生成情報ＧＩを表す特徴ベクトルと、生成情報記憶部１３０に格納された他のデータの生成情報ＧＩを表す特徴ベクトルとのコサイン距離により類似度を算出してもよい。
そして、関連データ取得部１４０は、類似度を算出した類似データおよび関連データ間の関連度を、関連性情報記憶部１３５から取得する。そして、関連データ取得部１４０は、当該類似データの類似度と、その関連データの関連度とに基づいて、当該関連データのスコアを算出する。例えば、関連データ取得部１４０は、類似度および関連度の積を求めることによって当該関連データのスコアを算出してもよい。
格納場所記憶部１５０は、分散ファイルシステム２が保存する各データの格納場所として、各データを格納するスレーブ３００が配置されたラックおよびノードを表す情報を格納する。例えば、図１４に示すように、データＤ１、Ｄ２、Ｄ８およびＤ９が、各ラックのノードに配置されたスレーブ３００に格納されていることを想定する。そしてこの場合に、格納場所記憶部１５０に格納される情報の一例を、図１５に示す。図１５は、例えば、データＤ２が、ラックＲ２のノードＮ２＿１およびラックＲ１３のノードＮ１３＿１に格納されていることを表している。なお、格納場所記憶部１５０は、図１５に示す形式の他、その他の形式によって表された格納場所を記憶してもよい。
関連ラック計算部１５５は、関連データ取得部１４０において算出された関連データのスコア、および、格納場所記憶部１５０の情報を用いて、関連データが格納されているラック（以下、関連ラックともいう）をランキングするための格納場所スコアを算出する。具体的には、関連ラック計算部１５５は、関連データ取得部１４０によってスコアが算出された各関連データが格納されている関連ラックを特定する。そして、特定した関連ラックに含まれる関連データのスコアに基づいて、その関連ラックの格納場所スコアを算出する。
ここで、関連ラック計算部１５５は、同一の関連ラックに複数の関連データが格納されている場合、その関連ラックの格納場所スコアを、複数の関連データの各スコアに基づいて算出する。例えば、関連ラック計算部１５５は、同一の関連ラックに含まれる関連データの各スコアの和を、その関連ラックの格納場所スコアとして算出してもよい。
残り容量記憶部１６０は、分散ファイルシステム２に含まれる各スレーブ３００が格納可能な残り記憶容量を表す情報を記憶する。残り容量記憶部１６０に記憶される情報の一例を図１６に示す。図１６は、例えば、ラックＲ１のノードＮ１＿２の残り記憶容量が、８０ＧＢ（ギガバイト）であることを表している。なお、残り容量記憶部１６０は、図１６に示す形式の他、その他の形式によって表された残り記憶容量を記憶してもよい。
最大容量ノード取得部１６５は、関連ラック計算部１５５によって算出された関連ラックの格納場所スコアと、残り容量記憶部１６０とに基づいて、関連ラックごとに最も残り記憶容量が大きいノードを選択する。なお、最大容量ノード取得部１６５は、残り記憶容量が最大のノードに限らず、閾値以上の残り記憶容量を有する任意のノードを選択してもよい。
書き込みノード決定部１７０は、関連ラック計算部１５５で得られた関連ラックの格納場所スコアおよび最大容量ノード取得部１６５で得られたノードの情報を用いて、対象データの配置先となるラックおよびノードを決定する。そして、書き込みノード決定部１７０は、クライアント２００に対して、決定したラックおよびノードを送信する。
このように、上述の配置ポリシー展開部１２０、関連ラック計算部１５５、残り容量記憶部１６０および書き込みノード決定部１７０によって構成される本実施形態における配置先決定部１５は、対象データに対して、配置ポリシーおよび関連データの格納場所に基づいて、所定の複製数の配置先を決定する。
情報更新部１８０は、対象データの書き込み完了に応じて、マスター１００が記憶する各種情報を更新する。具体的には、情報更新部１８０は、生成情報記憶部１３０に、新たに格納した対象データの生成情報ＧＩを追加する。また、情報更新部１８０は、格納場所記憶部１５０に、新たに格納した対象データの格納場所を追加する。また、情報更新部１８０は、残り容量記憶部１６０において、新たに対象データを格納したノードの残り記憶容量を更新する。なお、情報更新部１８０は、対象データの生成情報ＧＩ、格納場所およびデータサイズを含む書き込み完了の通知を、クライアント２００から受信することにより、これらの情報更新を行う。
次に、クライアント２００の機能ブロック構成ついて、図１７を参照して説明する。図１７において、クライアント２００は、配置先要求部２１０と、書き込み要求部２２０と、書き込み完了通知部２３０と、を備えている。
配置先要求部２１０は、クライアント２００が実行中の処理において生成中の対象データについて、分散ファイルシステム２における配置先をマスター１００に対して問い合わせる。具体的には、配置先要求部２１０は、対象データを生成中の処理においてアクセス中の他のデータを表す入力データ情報（対象データの生成情報ＧＩ）を配置先要求情報に含めて、マスター１００に対して送信する。そして、配置先要求部２１０は、マスター１００から、所定の複製数の配置先を表す情報を受信する。
書き込み要求部２２０は、配置先要求部２１０によって受信された各配置先であるスレーブ３００に対して、対象データの書き込みを要求する。このとき、書き込み要求部２２０は、配置先の各スレーブ３００に対してそれぞれ対象データを送信することにより、その書き込みを要求してもよい。あるいは、書き込み要求部２２０は、配置先のスレーブ３００のいずれかに対して対象データおよび各配置先を表す情報を送信してもよい。この場合、対象データを受信したスレーブ３００は、対象データを格納するとともに、残りの配置先であるスレーブ３００のいずれかに、対象データおよび残りの配置先を表す情報を送信してもよい。このように、対象データの格納はバケツリレー式にデータが転送されることにより実行されてもよい。
書き込み完了通知部２３０は、対象データの書き込み完了に伴い、対象データに関する情報をマスター１００に対して送信する。このとき、書き込み完了通知部２３０は、対象データに関する情報として、対象データの識別情報、データサイズ、配置先のラックおよびノードの情報、および、生成情報ＧＩを送信してもよい。なお、書き込み完了通知部２３０が対象データに関する情報をマスター１００に送信する代わりに、スレーブ３００がこれらの情報を含む書き込み完了通知をマスター１００に対して送信してもよい。この場合、例えば、スレーブ３００は、データ書き込み後のタイミングで対象データに関して保持している情報をマスター１００に送信すればよい。
次に、スレーブ３００の機能ブロック構成ついて、図１８を参照して説明する。図１８において、スレーブ３００は、データ読み書き部３１０と、データ記憶部３２０とを備えている。
データ読み書き部３１０は、クライアント２００からのデータの書き込み要求に対して、データ記憶部３２０へのデータの書き込みを行う。また、データ読み書き部３１０は、クライアント２００からのデータの読み出し要求に対して、データ記憶部３２０からのデータの読み出しを行う。データ記憶部３２０は、クライアント２００から送信されたデータを格納する。
以上のように構成された分散ファイルシステム２の動作について、図面を参照して説明する。
まず、マスター１００が、対象データの配置先を決定する動作について、図１９を参照して説明する。なお、生成情報記憶部１３０および関連性情報記憶部１３５には、既に分散ファイルシステム２に格納されている各データの生成情報ＧＩおよび関連性情報が記憶されているとする。また、分散ファイルシステム２において、各データの複製を保存する際の複製数があらかじめ定められているとする。
マスター１００は、クライアント２００から、対象データの配置先要求情報を受信すると、図１９に示すフローチャートに記載した各ステップの動作を開始する。このとき、配置先要求情報には、対象データの入力データ情報（生成情報ＧＩ）が含まれているとする。
ここでは、まず、書き込みノード決定部１７０は、カウンター変数ｉを０に初期化する（ステップＳ１００）。次に、書き込みノード決定部１７０は、カウンター変数ｉが所定の複製数より小さいか否かを判断する（ステップＳ１１０）。
ここで、カウンター変数ｉが複製数以上であれば、書き込みノード決定部１７０は、複製数分の配置先は既に決定しているため、各配置先を表す情報をクライアント２００に対して送信し、動作を終了する。
一方、カウンター変数ｉが複製数より小さい場合、配置ポリシー展開部１２０は、配置ポリシー記憶部１１０から配置ポリシーを１つ取得してその展開を行う（ステップＳ１２０）。
このとき、配置ポリシー展開部１２０は、マスター１００があらかじめ記憶している各ノードのＩＰアドレスに対応するラックの情報を用いて、クライアント２００が配置されているノードおよびラックの情報を取得する。
次に、書き込みノード決定部１７０は、展開された配置ポリシーにおいて、ノードが一意に確定済みであるか否かを判断する（ステップＳ１３０）。
ここで、ノードが確定済みであると判断した場合、マスター１００の動作はステップＳ１９０に進み、カウンター変数ｉをインクリメントして、再度ステップＳ１１０からの処理を繰り返す。
一方、ステップＳ１３０で、ノードが確定していないと判断した場合、関連ラック計算部１５５は、展開された配置ポリシーにおいて、ラックが一意に確定済みであるか否かを判断する（ステップＳ１４０）。
ここで、ラックが確定済みであると判断した場合、マスター１００の動作は、ステップＳ１７０に進む。
一方、ステップＳ１４０でラックが確定済みでないと判断した場合、関連ラック計算部１５５は、対象データの類似データの類似度を、生成情報記憶部１３０に基づいて算出する（ステップＳ１５０）。
例えば、関連ラック計算部１５５は、配置先要求情報に含まれていた対象データの生成情報ＧＩと、分散ファイルシステム２に既に格納されている各データの生成情報ＧＩとのコサイン距離を類似度として算出する。このとき、関連ラック計算部１５５は、閾値以上の類似度が算出されたデータを類似データとしてもよい。
次に、関連ラック計算部１５５は、類似度を算出した類似データとの間に関連性を有する関連データの関連度を、関連性情報記憶部１３５から取得する（ステップＳ１５１）。
このとき、関連ラック計算部１５５は、各類似データとの間に閾値以上の関連度を有するデータを関連データとしてもよい。
次に、関連ラック計算部１５５は、各関連データについて、類似度および関連度に基づいてスコアを算出する（ステップＳ１５２）。
例えば、関連ラック計算部１５５は、対象データおよびその類似データの類似度と、その類似データに関連する関連データの関連度との積を、その関連データのスコアとしてもよい。
次に、関連ラック計算部１５５は、ステップＳ１５２で算出した関連データのスコアに基づいて、関連データを格納する各関連ラックの格納場所スコアを算出する（ステップＳ１６０）。例えば、関連ラック計算部１５５は、関連データを格納する各関連ラックについて、そのラックに格納される関連データのスコアの和を格納場所スコアとして算出してもよい。
次に、最大容量ノード取得部１６５は、各関連ラックに含まれるノードの最大の残り記憶容量を、残り容量記憶部１６０に基づいて取得する（ステップＳ１７０）。
次に、書き込みノード決定部１７０は、関連ラックの格納場所スコアと、最大の残り記憶容量とに基づいて、配置先となるラックおよびノードの決定を行う（ステップＳ１８０）。
例えば、書き込みノード決定部１７０は、候補となる関連ラックを格納場所スコアでランキングし、格納場所スコアが最も高いラックを配置先のラックとしてもよい。ここで、同じ格納場所スコアの他の関連ラックがある場合には、書き込みノード決定部１７０は、最大残り記憶容量が大きいほうのラックを配置先として決定するようにしてもよい。あるいは、書き込みノード決定部１７０は、最大残り記憶容量が最も大きい関連ラックを配置先として決定してもよい。ここで、同じ残り記憶容量の他のラックがある場合には、書き込みノード決定部１７０は、格納場所スコアが高いほうのラックを配置先として決定するようにしてもよい。そして、書き込みノード決定部１７０は、配置先として決定したラックのうち、残り記憶容量が最も大きいノードを配置先のノードとして決定する。
次に、書き込みノード決定部１７０は、カウンター変数ｉをインクリメントする（ステップＳ１９０）。そして、マスター１００の動作はステップＳ１１０に戻る。
以上で、マスター１００は、対象データの配置先を複製数分だけ決定する動作を終了する。
次に、マスター１００が、対象データの配置先を決定する動作の一例について説明する。ここでは、クライアント２００は、ラックＲ１のノードＮ１＿１に配置されているものとして説明を行う。図２０は、本発明の第２の実施の形態における各データの生成の過程および関連性の一例を説明する図である。クライアント２００は、図２０に概念的に示すように、データＤを作成中であり、データＤを作成中の処理において、データＤ５およびＤ６を読み込み中であるものとする（図２０ではデータ作成中であることを破線で表している）。
また、この分散ファイルシステム２に既に格納されているデータＤ１は、図２０において、データＤ５およびデータＤ６を入力として生成されたとする。同様に、既に格納されているデータＤ２は、データＤ６を入力として生成されたとする。また、これらの各データの生成情報ＧＩは、図１２を用いて説明したように、生成情報記憶部１３０に記憶されているとする。また、この分散ファイルシステム２に既に格納されているデータＤ１およびＤ８は、過去に同時に使用されたことがあり、関連性を有するものとする。また、データＤ２およびデータＤ９も、同様に関連性を有するものとする。また、これらのデータ間の関連度は、図１３を用いて説明したように関連性情報記憶部１３５に記憶されているとする。また、分散ファイルシステム２においてあらかじめ定められた各データの複製数は２であるとする。
このようなケースにおけるマスター４００の動作について説明する。マスター１００は、クライアント２００から対象データの配置先要求情報を受信すると、まず、書き込みノード決定部１７０は、カウンター変数ｉを０に初期化する（ステップＳ１００）。次に、カウンター変数ｉが複製数２より小さいので（ステップＳ１１０でＹｅｓ）、配置ポリシー展開部１２０は、配置ポリシー記憶部１１０から配置ポリシーを１つ取得してその展開を行う（ステップＳ１２０）。
ここでは、以下のような２つの配置ポリシーが配置ポリシー記憶部１１０に保存されていたものとする。係る２つの配置ポリシーの表記法は、上述した表記法と同様である。
−  ポリシー１：Ｐ１  Ｒ＿ｃｕｒ．＊，
−  ポリシー２：Ｐ２  〜Ｒ＿Ｐ１．＊，
この場合、配置ポリシー展開部１２０は、１つ目の配置ポリシーとして、「Ｐ１  Ｒ＿ｃｕｒ．＊」を取得する。「Ｒ＿ｃｕｒ」は、クライアント２００が配置されているラックを表す。そこで、配置ポリシー展開部１２０は、あらかじめ記憶している各ノードのＩＰアドレスとラックとの対応情報に基づいて、「Ｒ＿ｃｕｒ」を「Ｒ１」に展開する。また、「＊」は任意のノードを表す。ここで、ラックＲ１が３つのノードによって構成されていたとすると、配置ポリシー展開部１２０は、「＊」を「Ｎ１＿１，Ｎ１＿２，Ｎ１＿３」に展開する。すなわち、配置ポリシー展開部１２０は、ポリシーＰ１を次のように展開する。
Ｒ１．｛Ｎ１＿１，Ｎ１＿２，Ｎ１＿３｝
次に、書き込みノード決定部１７０は、展開された配置ポリシーにおいてノードが複数の選択肢に展開されているため、配置先のノードが未だ確定していないと判断する（ステップＳ１３０でＮｏ）。
次に、関連ラック計算部１５５は、ラックがＲ１に確定済みであると判断する（ステップＳ１４０でＹｅｓ）。
次に、最大容量ノード取得部１６５は、確定したラックＲ１において、残り記憶容量が最大となるノードを、図１６に示した残り容量記憶部１６０に基づいて取得する（ステップＳ１７０）。ここでは、最大容量ノード取得部１６５は、ラックＲ１に含まれるノードの中で最も大きい残り記憶容量１００ＧＢをもつＮ１＿１を取得する。次に、書き込みノード決定部１７０は、配置先となるラックおよびノードとして、ステップＳ１４０およびＳ１７０で取得したラックＲ１のノードＮ１＿１を決定する（ステップＳ１８０）。
次に、書き込みノード決定部１７０は、カウンター変数ｉをインクリメントして１とし、ステップＳ１１０からの動作を繰り返す。カウンター変数ｉ＝１となり、複製数２より小さいので（ステップＳ１１０でＹｅｓ）、配置ポリシー展開部１２０は、配置ポリシー記憶部１１０から次のポリシーを取得して展開する。
上述の例では、配置ポリシー展開部１２０は、「〜Ｒ＿ｃｕｒ．＊」を取得する。ここで、Ｒ＿ｃｕｒはＲ１であるため、〜Ｒ＿ｃｕｒはラックＲ１以外のラックを表す。したがって、配置ポリシー１２０は、取得した配置ポリシーを次のように展開する（ステップＳ１２０）。なお、ここでは、分散ファイルシステム２が管理するラックはＲ１〜Ｒ２０までであるものとする。
｛Ｒ２，Ｒ３，．．．，Ｒ１９，Ｒ２０｝．＊
次に、書き込みノード決定部１７０は、ノードが確定していないと判断する（ステップＳ１３０）。
次に、関連ラック計算部１５５は、ラックが確定していないと判断する（ステップＳ１４０）。
次に、関連ラック計算部１５５は、分散ファイルシステム２に既に格納されている他のデータのうち、対象データであるデータＤの生成情報ＧＩ（入力データがＤ５およびＤ６）に類似する類似データＤ１（入力データがＤ５およびＤ６）および類似データＤ２（入力データがＤ６）について、それぞれ類似度を算出する。（ステップＳ１５０）。
具体的には、関連ラック計算部１５５は、対象データＤの生成情報ＧＩを表す特徴ベクトルと、既存データの生成情報ＧＩを表す特徴ベクトルとのコサイン距離を算出する。ここで、コサイン距離は、ＣＯＳ（ＤＸ，ＤＹ）＝ＶＸ・ＶＹ／（｜ＶＸ｜×｜ＶＹ｜）と定義される。ここで、ＤＸおよびＤＹはそれぞれデータを表し、ＶＸおよびＶＹは、それぞれデータＤＸおよびＤＹの生成情報ＧＩの特徴ベクトルを表す。そして、ＶＸ・ＶＹは、２つの特徴ベクトルＶＸおよびＶＹの内積を表す。｜ＶＸ｜は、特徴ベクトルＶＸの長さを表す。｜ＶＹ｜は、特徴ベクトルＶＹの長さを表す。
関連ラック計算部１５５は、対象データＤの特徴ベクトルと、図１２に示したデータＤ１およびＤ２の特徴ベクトルとのコサイン距離を次のように算出する。
＜対象データＤと類似データＤ１の類似度＞
ＣＯＳ（Ｄ，Ｄ１）＝１
＜対象データＤと類似データＤ２の類似度＞
ＣＯＳ（Ｄ，Ｄ２）＝１／√２≒０．７０７
なお、関連データのスコアを算出する関数としては、コサイン距離の他にベクトルの内積やその他の間数も適用可能である。
次に、関連ラック計算部１５５は、類似度を算出した類似データＤ１およびＤ２との間に関連性を有する関連データの関連度を、関連性情報記憶部１３５から取得する（ステップＳ１５１）。
ここでは、関連ラック計算部１５５は、図１３に示した関連性情報記憶部１３５に基づいて、類似データＤ１との間に関連性を有する関連データとして、データＤ８を取得する。同様に、関連ラック計算部１５５は、類似データＤ２との間に関連性を有する関連データとして、データＤ９を取得する。そして、関連ラック計算部１５５は、それぞれの関連度として次の値を取得する。
＜類似データＤ１と関連データＤ８の関連度＞
０．８
＜類似データＤ２と関連データＤ９の関連度＞
０．６
次に、関連ラック計算部１５５は、関連データＤ８およびＤ９のスコアを、類似度および関連度に基づいて算出する（ステップＳ１５２）。ここでは、類似度と関連度との積をスコアとして用いるとする。
＜関連データのスコアによるランキング＞
Ｄ８  ０．８＝１×０．８，
Ｄ９  ０．４２４＝０．７０７×０．６，
このように、ステップＳ１５０〜Ｓ１５２の動作（処理）により、対象データＤに生成情報ＧＩが類似する類似データに関連する関連データが、スコアに基づきランキングされた。すなわち、生成中の対象データＤが将来同時に使用される可能性が高い関連データがランキングされたとみなすことができる。
次に、関連ラック計算部１５５は、関連データＤ８およびＤ９の格納場所を格納場所記憶部１５０から取得する。
＜関連データＤ８の格納場所＞
Ｒ１１，Ｒ１２
＜関連データＤ９の格納場所＞
Ｒ１１，Ｒ１３
そして、関連ラック計算部１５５は、これらの関連ラックＲ１１、Ｒ１２、Ｒ１３について、格納されている関連データのスコアに基づいて格納場所スコアを算出する（ステップＳ１６０）。ここでは、格納されている関連データのスコアの和をその関連ラックの格納場所スコアとして用いることにする。
＜ラックＲ１１の格納場所スコア＝関連データＤ８のスコア＋関連データＤ９のスコア＞
０．８＋０．４２４＝１．２２４
＜ラックＲ１２の格納場所スコア＝関連データＤ８のスコア＞
Ｒ１２：０．８
＜ラックＲ１３の格納場所スコア＝関連データＤ９のスコア＞
Ｒ１３：０．４２４
そして、関連ラック計算部１５５は、上述のように格納場所スコアでランキングしたラックから、ステップＳ１２０で展開した配置ポリシーを満たさないものを除外する。ここでは、ステップＳ１２０で展開した配置ポリシーは｛Ｒ２，…，Ｒ２０｝．＊であるため、除外するラックはない。
次に、最大容量ノード取得部１６５は、候補のラックＲ１１、Ｒ１２、Ｒ１３について、残り記憶容量が最大のノードを、図１６に示した残り容量記憶部１６０から次のように取得する（ステップＳ１６０）。以下では、各ノードを含むラックの格納場所スコアも併記している。
＜ラックＲ１１の格納場所スコアと最大の残り記憶容量＞
Ｒ１１．Ｎ１１＿２（１．２２４、９０ＧＢ）
＜ラックＲ１２の格納場所スコアと最大の残り記憶容量＞
Ｒ１２．Ｎ１２＿３（０．８、１２０ＧＢ）
＜ラックＲ１３の格納場所スコアと最大の残り記憶容量＞
Ｒ１３．Ｎ１３＿３（０．４２４、１００ＧＢ）
次に、書き込みノード決定部１７０は、ステップＳ１６０でランキングした各格納場所のうちのいずれかを、格納場所スコアおよび残り記憶容量に基づいて配置先として決定する（ステップＳ１８０）。
例えば、格納場所スコアを重視する場合には、書き込みノード決定部１７０は、上述のランキングデータを、格納場所スコアで降順にソートし、さらに同一の格納場所スコアの場合は最大残り記憶容量で降順にソートすることにより、最も上にくるラックおよびノードを配置先として決定する。あるいは、残り記憶容量を重視する場合に、書き込みノード決定部１７０は、残り記憶容量で降順にソートし、さらに同一容量の場合は、スコアで降順にソートすることにより、最も上にくるラックおよびノードを配置先として決定する。あるいは、書き込みノード決定部１７０は、候補となるラックに含まれるノードのうち、残り記憶容量が閾値を超えるものの中から最も格納場所スコアが高いラックおよびノードを配置先として決定してもよい。即ち、配置先は、格納場所スコアおよび残り記憶容量に基づくその他のアルゴリズムにより決定してもよい。なお、ここでは、書き込みノード決定部１７０は、最も格納場所スコアの大きいＲ１１．Ｎ１１＿２を配置先として決定する。
次に、書き込みノード決定部１７０は、カウンター変数ｉをインクリメントして２とする。（ステップＳ１９０）。次に、書き込みノード決定部１７０は、カウンター変数ｉが複製数２より小さくないので（ステップＳ１１０でＮｏ）、以下の２つの配置先をクライアント２００に返却する。
Ｒ１．Ｎ１＿１，
Ｒ１１．Ｎ１１＿２，
以上で、マスター１００が対象データの配置先を決定する動作例の説明を終了する。
次に、クライアント２００が分散ファイルシステム２に新たに対象データを格納する際の分散ファイルシステム２の動作について、図２１を参照して説明する。
まず、クライアント２００は、新たに生成中の対象データの配置先要求情報をマスター１００に送信する（ステップＳ２００）。このとき、クライアント２００は、対象データを生成中の処理において読み込み中のデータを表す情報を配置先要求情報に含めて送信してもよい。
上述の例では、クライアント２００の配置先要求部２１０は、現在読み込み中のデータＤ５およびＤ６を表す情報を含む配置先要求情報をマスター１００に送信する。
次に、問い合わせを受けたマスター１００は、あらかじめ定められた複製数の回数だけ、ステップＳ１１０〜Ｓ１８０を繰り返すことにより、複製数の配置先を決定し、クライアント２００に返却する（ステップＳ１９１）。
上述の例では、マスター１００は、複製数２の配置先として、Ｒ１．Ｎ１＿１およびＲ１１．Ｎ１１＿２をクライアント２００に返却する。
次に、クライアント２００の書き込み要求部２２０は、返却された各配置先に対象データの書き込み要求を送信する（ステップＳ２１０）。次に、スレーブ３００のデータ読み書き部３１０は、書き込み要求を受信し、対象データをデータ記憶部３２０に記憶させる（ステップＳ１３）。そして、スレーブ３００は、書き込んだことをクライアント２００に通知する。
次に、クライアント２００の書き込み完了通知部２３０は、マスター１００に対して対象データに関する情報を送信する（ステップＳ２２０）。例えば、書き込み完了通知部２３０は、対象データの生成情報ＧＩ、配置先のラックおよびノードを表す情報、および、対象データサイズ等を、マスター１００に対して送信してもよい。
上述の例では、クライアント２００は、対象データＤの生成情報ＧＩとしてＤ５およびＤ６を表す情報Ｄ、配置先情報としてＲ１．Ｎ１＿１およびＲ１１．Ｎ１１＿２を表す情報と、対象データＤのサイズを表す情報とを送信する。
次に、書き込み完了通知を受信したマスター１００の情報更新部１８０は、生成情報記憶部１３０、格納場所記憶部１５０、および、残り容量記憶部１６０を更新する（ステップＳ１９２）。
上述の例では、情報更新部１８０は、生成情報記憶部１３０にデータＤに関する行を追加するとともに、その行のＤ５およびＤ６に関する列に１を格納する。また、情報更新部１８０は、格納場所記憶部１５０にデータＤに関する行を追加するとともに、その格納場所としてＲ１．Ｎ１＿１およびＲ１１．Ｎ１１＿２を格納する。また、情報更新部１８０は、残り容量記憶部１６０に記憶されたＲ１．Ｎ１＿１およびＲ１１．Ｎ１１＿２の残り記憶容量を、データＤのサイズに基づいて更新する。
次に、上述した本発明の第２の実施の形態の効果について説明する。
第２の実施の形態としての分散ファイルシステムおよびマスター装置は、対象データおよびその複製の配置先として、対象データを含む複数のデータを同時に使用する将来の処理をより高速化するために最適な格納場所を、その対象データの使用に先だって新たに格納する際においても決定することができる。
その理由は、以下の通りである。即ち、
−  関連データ取得部１４０が、対象データの生成に用いられたデータと同様なデータを入力として生成された類似データに関連する関連データのスコアを算出し、
−  算出したスコアに基づいて関連ラック計算部１５５が格納場所スコアを算出し、
−  書き込みノード決定部１７０が、配置ポリシーの条件を満たし、かつ、算出した格納場所スコアの高い格納場所を、各複製の配置先として決定する、
からである。
ここで、対象データに生成過程が類似するデータと同時に利用される関連データは、対象データとも同時に利用される可能性が高いとみなすことができる。これにより、第２の実施の形態は、対象データを新規に分散ファイルシステムに格納する場合であっても、その対象データと同時に利用される可能性の高い関連データが既に格納されているいくつかのラックに、対象データの複製を分散配置することができる。そのため、本実施形態によれば、対象データを含む複数のデータを将来同時に利用する処理において、ラック内で処理が完結する可能性が高まり、そのような処理をより高速化することができる。
さらに、本実施形態によれば、格納場所スコアの高い格納場所に含まれるノードのうち、残り記憶容量の大きいノードを各複製の配置先として決定することにより、対象データを含む複数のデータを同時に利用する将来の処理を高速化しつつ、ラック間の負荷のバランスを保つことができる。
（第３の実施の形態）
次に、本発明の第３の実施の形態について図面を参照して詳細に説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第２の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
第３の実施の形態における分散ファイルシステム３は、上述した第２の実施の形態における分散ファイルシステム２に対して、マスター１００に替えてマスター４００と、クライアント２００に替えてクライアント５００とを備える点が異なる。マスター４００、クライアント５００およびスレーブ３００は、図８および図９を参照して上述した第２の実施の形態と同様に、ラックを基本単位としたネットワーク構成により互いに通信可能に接続されている。
また、マスター４００およびクライアント５００のハードウェア構成は、図２を参照して説明した本発明の第１の実施の形態としてのマスター１０およびクライアント２０と同様であるため、本実施の形態における説明を省略する。
次に、マスター４００の機能ブロック構成について、図２２を参照して説明する。図２２において、マスター４００は、上述した第２の実施の形態としてのマスター１００に対して、生成情報記憶部１３０に替えて生成情報記憶部４３０と、関連データ取得部１４０に替えて関連データ取得部４４０と、情報更新部１８０に替えて情報更新部４８０とを備える点が異なる。
生成情報記憶部４３０は、分散ファイルシステム３に格納済みの各データについて、各データを生成したアプリケーションプログラムを表す生成プログラム情報を生成情報ＧＩとして格納する。この場合に生成情報記憶部４３０が記憶する情報の一例を、図２３に示す。
関連データ取得部４４０は、上述した第２の実施の形態における関連データ取得部１４０と略同様に構成される。但し、第３の実施形態において、関連データ取得部４４０は、対象データに類似する類似データとして、その対象データが生成されたアプリケーションプログラムと同一のアプリケーションプログラムによって生成されたデータを取得する処理構成が第２の実施形態と異なる。
また、関連データ取得部４４０は、対象データと同一のアプリケーションプログラムによって生成された各類似データの類似度が同一であると仮定して、関連データのスコアリングを行う。例えば、関連データ取得部４４０は、対象データと同一のアプリケーションプログラムによって生成された各類似データと関連性のある関連データのスコアとして、類似データおよび関連データ間の関連度をそのまま用いてもよい。
情報更新部４８０は、書き込みが完了した対象データの生成プログラム情報を用いて、生成情報記憶部４３０の情報を更新する処理構成が、上述した第２の実施の形態における情報更新部１８０と異なる。なお、情報更新部４８０は、対象データの生成プログラム情報をクライアント５００より受信することにより、これらの更新を行ってもよい。あるいは、情報更新部４８０は、対象データの生成プログラム情報を、データアクセス履歴を解析することにより取得してこれらの更新を行ってもよい。
次に、第３の実施形態に係るクライアント５００の機能ブロック構成について、図２４を参照して説明する。図２４において、クライアント５００は、第２の実施の形態におけるクライアント２００に対して、配置先要求部２１０に替えて配置先要求部５１０と、書き込み完了通知部２３０に替えて書き込み完了通知部５３０とを備える点が異なる。
即ち、上述した第２の実施の形態における配置先要求部２１０と比較すると、第３の実施形態に係る配置先要求部５１０は、生成中の対象データの配置先をマスター４００に対して問い合わせる際にマスター４００に送信する情報の内容が異なる。具体的には、配置先要求部５１０は、対象データの配置先要求情報に、対象データの生成プログラム情報（すなわち、対象データの生成情報ＧＩ）を含めてマスター４００に対して送信する。
次に、書き込み完了通知部５３０は、上述した第２の実施の形態における書き込み完了通知部２３０と比較すると、マスター４００に送信する情報の内容が異なる。具体的には、書き込み完了通知部５３０は、対象データの書き込みの完了に伴い、対象データの生成プログラム情報をさらにマスター４００に送信する。
以上のように構成された分散ファイルシステム３の動作について説明する。
まず、マスター４００が、対象データの配置先を決定する動作について、図２５を参照して説明する。なお、生成情報記憶部４３０および関連性情報記憶部１３５には、既に分散ファイルシステム３に格納されている各データの生成プログラム情報および関連性情報が記憶されているとする。また、分散ファイルシステム３において、各データの複製を保存する際の複製数があらかじめ定められているとする。
マスター４００は、クライアント５００から、対象データの配置先要求情報を受信すると、図２５に示すフローチャートの動作（処理）を開始する。このとき、クライアント５００から受信する配置先要求情報には、クライアント５００において対象データを生成中の生成プログラム情報が含まれているとする。
図２５において、マスター４００が配置先を決定する動作は、図１９を参照して上述した第２の実施の形態におけるマスター１００の動作に対して、ステップＳ１５０の代わりにステップＳ６５０を実行し、ステップＳ１５２の代わりにステップＳ６５２を実行する点が異なる。
ステップＳ６５０において、関連ラック計算部１５５は、対象データの類似データとして、対象データと生成プログラム情報が同一のデータを、生成情報記憶部４３０に基づいて取得する。
また、ステップＳ６５２において、関連データ取得部４４０は、ステップＳ６５０で取得した各類似データの類似度を同一（例えば１）であるものとして、各関連データのスコアを算出する。
以上で、マスター４００が配置先を決定する動作の説明を終了する。
次に、クライアント５００が分散ファイルシステム３に新たに対象データを格納する際の分散ファイルシステム３の動作について、図２６を参照して説明する。
まず、クライアント５００は、新たに生成中の対象データの配置先要求情報をマスター４００に送信する（ステップＳ７００）。このとき、クライアント５００は、配置先要求情報に、対象データを生成中の生成プログラム情報を含めて送信してもよい。
次に、問い合わせを受けたマスター４００は、あらかじめ定められた複製数の回数だけ、ステップＳ１１０〜Ｓ１４０、Ｓ６５０〜Ｓ６５２、Ｓ１６０〜Ｓ１８０を繰り返すことにより、複製数の配置先を決定し、決定した結果をクライアント５００に返却する（ステップＳ１９１）。
次に、クライアント５００の書き込み要求部２２０は、返却された各配置先のスレーブ３００に対して、対象データの書き込み要求を送信する（ステップＳ２１０）。次に、スレーブ３００のデータ読み書き部３１０は、書き込み要求を受信し、対象データをデータ記憶部３２０が記憶するように指示する（ステップＳ１３）。そして、スレーブ３００は、当該対象データを書き込んだことを、クライアント５００に通知する。
次に、クライアント５００は、マスター４００に対して、対象データに関する情報を送信する（ステップＳ７２０）。このとき、クライアント５００は、対象データの生成プログラム情報、配置先のラックおよびノードを表す情報、および、対象データサイズを送信してもよい。
次に、書き込み完了通知を受信したマスター４００の情報更新部４８０は、生成情報記憶部４３０、格納場所記憶部１５０、および、残り容量記憶部１６０を更新する（ステップＳ６９２）。
次に、本発明の第３の実施の形態の効果について述べる。
上述した第３の実施の形態としての分散ファイルシステムおよびマスター装置は、分散ファイルシステムに格納される他のデータの生成に際して入力として読み込まれたことがないデータを入力として対象データを生成する場合であっても、その対象データを含む複数のデータを同時に使用する将来の処理をより高速化するよう、当該対象データの配置先を決定することができる。
その理由は、以下の通りである。即ち、
−  生成情報記憶部４３０が、各データの生成情報ＧＩとして、各データの生成プログラム情報を記憶しておき、
−  関連データ取得部４４０が、対象データと同一のアプリケーションプログラムによって生成された類似データと同時に使用されたことのある関連データを取得し、
−  関連データ取得部４４０が、係る関連データを格納する格納場所のうち、格納場所スコアが高い格納場所を当該対象データの配置先として決定する、
からである。
より具体的には、例えば、クライアントにおいて、アプリケーションプログラムＡが、データＢおよびデータＣを用いてデータＤを新たに生成し、その配置先をマスターに問い合わせたことを想定する。この場合、本実施形態によれば、データＢおよびデータＣを用いて生成された他のデータが分散ファイルシステムに格納されていなくても、マスター４００の関連データ取得部４４０は、係るアプリケーションプログラムＡによって過去に作成された類似データと同時に使用されたことがある関連データを、係る対象データＤが、将来関連する可能性のある関連データであろうと類推することが可能だからである。
なお、第３の実施の形態は、第２の実施の形態と組み合わせて実施されてもよい。この場合、上述した第３の実施の形態における生成情報記憶部４３０は、分散ファイルシステム３に格納される各データについて、入力データ情報および生成プログラム情報のうち、少なくとも１つを生成情報ＧＩとして記憶しておく。そして、クライアント５００は、対象データの配置先要求情報に、その対象データに関する入力データ情報および生成プログラム情報のうち、少なくともいずれか１つを含めて送信する処理構成とする。そして、マスター４００の関連データ取得部４４０は、当該対象データに対して入力データ情報および生成プログラム情報の少なくともいずれか１つが類似する類似データに関連する関連データを取得する。
このような装置構成（処理構成）を採用することにより、本発明の第３の実施の形態は、他のデータの生成過程で入力データとして用いられたことのないデータを読み込んで対象データを生成する場合、あるいは、過去に他のデータの生成に用いられたことのないアプリケーションプログラムによって対象データを生成する場合であっても、いずれかの情報を用いて対象データの類似データに関連する関連データを類推することできる。これにより、本実施の形態によれば、係るいずれの場合であっても、当該対象データの配置先を決定することができる。
さらに、第３の実施の形態において、生成情報記憶部４３０は、対象データが生成される際に適用されたデータ形式を生成情報ＧＩとして記憶してもよい。ここで、データ形式の一例を以下に示す。この例は、テキストで表されたデータのフォーマット（データ形式）を表している。
（例１）ＵｓｅｒＩＤ［単語  Ｓｏｃｒｅ］＋
（例２）ＩＮＴ［ＳＴＲＩＮＧ  ＤＯＵＢＬＥ］＋
なお、上述の例では、“［Ｘ］＋”は、“Ｘ”が任意数繰り返されることを表している。
このように構成することにより、上述した第３の実施の形態によれば、対象データを生成する処理において用いられた入力データと同様な入力データを用いて生成された既存の他のデータが分散ファイルシステムに格納されておらず、かつ、対象データを生成中のアプリケーションプログラムによって生成された既存の他のデータが分散ファイルシステムに格納されていない場合への適切な対応が実現する。
即ち、本実施形態によれば、係る場合であっても、係る対象データと同一のデータ形式で生成された既存の他のデータが存在すれば、当該対象データにデータ形式が類似する類似データの関連データを類推することができるので、当該対象データの配置先を決定することができる。
なお、上述した各実施の形態においては、マスター装置（１０，１００，４００）が、対象データの配置先を決定するために必要となる対象データの生成情報ＧＩを、クライアント装置から受信する例を中心に説明した。しかしながら、係る各実施の形態のマスター装置は、対象データの生成情報ＧＩを、必ずしもクライアント装置から受信しなくてもよい。例えば、係る各実施の形態のマスター装置は、分散ファイルシステムに対するデータアクセス履歴を解析することにより、対象データに関する入力データ情報（生成情報ＧＩ）を取得してもよい。あるいは、係る各実施の形態のマスター装置は、当該対象データの内容を解析することにより、そのデータ形式（生成情報ＧＩ）を取得することも可能である。
また、上述した第２および第３の実施の形態においては、マスター装置（１００，４００）が、配置ポリシーを展開するために必要となるクライアント装置のラックおよびノードを表す情報を、あらかじめ記憶している各ノードのＩＰアドレスおよびラックの対応情報から取得する構成例を中心に説明した。しかしながら、第２および第３の実施の形態を例に説明した本発明は、係る構成には限定されず、このような構成例の他、第２および第３の実施の形態におけるマスター装置は、クライアント装置のラックおよびノードを表す情報を、配置先要求情報とともにクライアント装置から受信してもよい。
また、上述の第２および第３の実施の形態において、クライアント装置は、分散ファイルシステムが管理するいずれかのラックのいずれかのノードに配置されているものとして説明した。しかしながら、第２および第３の実施の形態におけるクライアント装置は、分散ファイルシステムの外部に接続された装置であってもよい。その場合、マスター装置の配置ポリシー展開部は、展開に必要となるクライアント装置のラックおよびノードを表す情報として、任意のラックおよびノードを選択すればよい。
また、上述した各実施の形態において、マスター装置は、対象データ格納後に行う情報更新のために必要となる情報を、クライアント装置から受信する構成例を中心に説明した。しかしながら、各実施の形態のマスター装置は、情報更新のために必要となる情報を、必ずしもクライアント装置から受信しなくてもよい。例えば、各実施の形態のマスター装置は、対象データの書き込みを完了したスレーブ装置から、その格納場所や残り記憶容量に関する情報を取得可能である。
また、上述した各実施の形態において、対象データは、クライアント装置において実行中の処理において新たに生成されたデータである場合を例に説明した。しかしながら、本発明は、係る例には限定されず、その他の構成例として、対象データは、分散ファイルシステムに既に格納されているデータがユーザ操作によって複製されたデータである場合であってもよい。その場合、マスター装置は、対象データの生成情報ＧＩおよび関連性情報として、複製元のデータの生成情報ＧＩおよび関連性情報を複製することにより、対象データの配置先を決定可能である。
また、上述した各実施の形態において、対象データは、分散ファイルシステムに既に格納済みのデータであってもよい。このような場合、対象データが前回マスター装置によって決定された配置先に格納された時点から、各データの生成情報ＧＩおよび関連性情報、ならびに、各ノードの残り記憶容量が変化している可能性がある。そこで、このような場合、係る各実施の形態のマスター装置は、対象データが更新されたタイミングや、定期的なタイミングで、新たに配置先を決定してもよい。これにより、係るマスター装置は、対象データを含む将来の処理をより高速化するための配置先を適切に更新することができる。
また、上述した各実施の形態において、対象データは、論理的に１つのファイルが内部的に複数のブロックに分割されたものであってもよい。この場合、各ブロックを異なるスレーブ装置が格納することになる。このような場合、各実施の形態のマスター装置は、各ブロックの配置先の決定に適用することが可能である。また、このような場合、各実施の形態のマスター装置は、対象となるファイルがユーザ操作によって更新されたタイミングで各ブロックの配置先を新たに決定してもよい。これにより、各実施の形態のマスター装置は、対象となるファイルのサイズ変動に伴い分割ブロック数に変動が生じる場合にも、新たなブロックの配置先の決定に対応することが可能である。
また、上述した各実施の形態において説明したクライアント装置及びスレーブ装置の動作、並びに、フローチャート（図６，図１９，図２５）を参照して説明したマスター装置の動作は、コンピュータ・プログラムとして情報処理装置（１０，２０，３０）の記憶装置（記憶媒体）に格納しておき、係るコンピュータ・プログラムを当該ＣＰＵ（１００１，２００１，３００１）が読み出して実行することによって実現してもよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムのコード或いは、そのコードを格納したコンピュータ読み取り可能な記憶媒体によって構成される、と捉えることができる。
更に、上述した各実施の形態において説明した装置の機能ブロックは、説明の便宜上から、単体の装置（情報処理装置）において実行される場合を例に説明した。しかしながら、上述した各実施の形態を例に説明した本発明は、係る装置構成には限定されず、例えば、上述した各実施形態において単体の装置において実現されていた各種の機能を、通信可能な複数の情報処理装置に分散して実現してもよい。そしてこの場合、係る複数の情報処理装置には、所謂、仮想マシンを採用してもよい。
また、上述した各実施の形態は、適宜組み合わせて実施されることが可能である。
また、本発明は、上述した各実施の形態に限定されず、様々な態様で実施されることが可能である。
また、上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）
分散ファイルシステムに格納される各データの格納場所を表す情報を記憶する格納場所記憶部と、
前記データが生成された過程に関する生成情報を記憶する生成情報記憶部と、
前記データと他の前記データとが同一処理においてアクセスされる関連性を表す関連性情報を記憶する関連性情報記憶部と、
前記分散ファイルシステムにおける配置先を決定する対象となる対象データについての前記生成情報を取得すると共に、前記分散ファイルシステムに格納済みの他のデータのうち、前記対象データについて取得した前記生成情報と類似する類似データを前記生成情報記憶部から取得し、取得した類似データとの間に前記関連性を有する関連データを、前記関連性情報記憶部から取得する関連データ取得部と、
前記関連データの前記格納場所に基づいて、前記対象データの配置先となる格納場所を決定する配置先決定部と、
前記配置先決定部によって決定された格納場所への前記対象データの格納に応じて、前記格納場所記憶部および前記生成情報記憶部が記憶している情報を更新する情報更新部と、
を備えた情報処理装置。
（付記２）
前記対象データが複製されることにより得られる複数の同一の各対象データの配置先に関する条件を表す配置ポリシーを記憶した配置ポリシー記憶部をさらに備え、
前記配置先決定部は、前記複数の同一の各対象データに対して、前記配置ポリシーおよび前記関連データの格納場所に基づいて、配置先の格納場所をそれぞれ決定する付記１に記載の情報処理装置。
（付記３）
前記格納場所が１つ以上のノードによって構成される場合に、
前記各ノードの残り記憶容量を記憶する残り容量記憶部をさらに有し、
前記配置先決定部は、前記関連データの格納場所および該格納場所を構成するノードの残り記憶容量に基づいて、配置先のノードを決定する付記１または付記２に記載の情報処理装置。
（付記４）
前記生成情報記憶部は、前記分散ファイルシステムに格納済みの各データについて、該各データが生成された処理においてアクセスされた他のデータを表す入力データ情報を、前記生成情報として格納する付記１から付記３のいずれかに記載の情報処理装置。
（付記５）
前記生成情報記憶部は、前記分散ファイルシステムに格納済みの各データについて、該各データを生成したアプリケーションプログラムを表す生成プログラム情報を、前記生成情報として格納する付記１から付記４のいずれかに記載の情報処理装置。
（付記６）
前記生成情報記憶部は、前記分散ファイルシステムに格納済みの各データについて、該各データが生成される際に適用されたデータ形式を表すデータ形式情報を前記生成情報として格納する付記１から付記５のいずれかに記載の情報処理装置。
（付記７）
前記関連データ取得部は、前記類似データについて、前記対象データに対する前記生成情報の類似の程度を表す類似度を算出し、前記類似データに対する前記関連データの関連性の程度を表す関連度を算出し、算出した前記類似度および前記関連度に基づいて前記関連データのスコアを算出し、
前記配置先決定部は、前記関連データが格納されている各格納場所について、格納している前記関連データの前記スコアに基づき格納場所スコアを算出し、算出した格納場所スコアに基づいて、前記対象データの配置先となる格納場所を決定する付記１から付記６のいずれかに記載の情報処理装置。
（付記８）
付記１から付記７のいずれかに記載の情報処理装置としてのマスター装置と、
グループ化された１つ以上のスレーブ装置と、を含み、
前記マスター装置の格納場所記憶部は、前記データの格納場所として前記データを格納する前記スレーブ装置およびその所属するグループを表す情報を記憶し、
前記マスター装置の関連データ取得部は、外部のクライアント装置からの前記対象データの配置先の問い合わせに応じて前記関連データを取得し、
前記配置先決定部は、前記関連データが格納されるスレーブ装置が所属するグループに基づいて、前記対象データの配置先のスレーブ装置を決定し、決定したスレーブ装置を表す情報を前記配置先として前記クライアント装置に送信し、
前記スレーブ装置は、
前記クライアント装置からの書き込み要求に応じて前記対象データを格納する、
分散ファイルシステム。
（付記９）
前記マスター装置は、
前記対象データが複製されることにより得られる複数の同一の各対象データの配置先に関する条件を表す配置ポリシーを記憶した配置ポリシー記憶部をさらに備え、
前記マスター装置の前記配置先決定部は、前記複数の同一の各対象データに対して、前記配置ポリシーおよび前記関連データの格納場所に基づいて、配置先となるスレーブ装置をそれぞれ決定し、決定した結果を前記クライアント装置に送信する付記８に記載の分散ファイルシステム。
（付記１０）
付記８または付記９に記載の分散ファイルシステムに含まれるマスター装置に対して、前記対象データの配置先を問い合わせる配置先要求部と、
前記マスター装置から受信する配置先としてのスレーブ装置に対して、前記対象データの書き込みを要求する書き込み要求部と、
前記対象データの書き込み完了に伴い、前記対象データに関する情報を前記マスター装置に送信する書き込み完了通知部と、
を備えたクライアント装置。
（付記１１）
分散ファイルシステムに格納される各データの格納場所を表す情報を第１記憶装置に記憶し、
前記データが生成された過程に関する生成情報を第２記憶装置に記憶し、
前記データと他の前記データとが同一処理においてアクセスされる関連性を表す関連性情報を第３記憶装置に記憶し、
前記分散ファイルシステムにおいて配置先を決定する対象となる対象データについての前記生成情報を取得すると共に、前記分散ファイルシステムに格納済みの他のデータのうち、前記対象データについて取得した前記生成情報と類似する類似データを前記第２記憶装置から取得し、
前記分散ファイルシステムに格納済みの他のデータのうち、前記類似データとの間に前記関連性を有する関連データを前記第３記憶装置から取得し、
前記関連データの前記格納場所に基づいて、前記対象データの配置先としての格納場所を決定し、
決定した格納場所への前記対象データの格納に応じて、前記第１及び第２記憶装置が記憶している情報を更新する、
情報処理方法。
（付記１２）
前記対象データが複製されることにより得られる複数の同一の各対象データの配置先に関する条件を表す配置ポリシーを第４記憶装置に記憶し、
前記複数の同一の各対象データに対して、前記配置ポリシーおよび前記関連データの格納場所に基づいて、配置先の格納場所をそれぞれ決定する付記１１に記載の情報処理方法。
（付記１３）
マスター装置が、
分散ファイルシステムに格納される各データの格納場所を表す情報を記憶し、
前記データが生成された過程に関する生成情報を記憶し、
前記データと他の前記データとが同一処理においてアクセスされる関連性を表す関連性情報を記憶しており、
クライアント装置が、前記マスター装置に対して対象データの配置先を問い合わせ、
前記マスター装置が、
前記対象データの前記生成情報を取得することにより、前記分散ファイルシステムに格納済みの他のデータのうち前記対象データに対して前記生成情報が類似する類似データを取得し、
前記分散ファイルシステムに格納済みの他のデータのうち前記類似データとの間に前記関連性を有する関連データを取得し、
前記関連データの前記格納場所に基づいて、前記対象データの配置先としての格納場所を決定し、
決定した格納場所を前記クライアント装置に返却し、
前記クライアント装置が、返却された前記格納場所に所属するスレーブ装置に対して、前記対象データの格納を要求し、
前記スレーブ装置が、前記対象データを格納し、
前記マスター装置が、前記対象データの格納場所および生成情報を追加して記憶する、
情報処理方法。
（付記１４）
前記マスター装置は、
前記対象データが複製されることにより得られる複数の同一の各対象データの配置先に関する条件を表す配置ポリシーをさらに記憶し、
前記クライアント装置からの前記対象データの配置先の問い合わせに応じて、前記複数の同一の各対象データに対して、前記配置ポリシーおよび前記関連データの格納場所に基づいて、配置先となるスレーブ装置をそれぞれ決定して前記クライアント装置に送信し、
前記クライアント装置は、複数の配置先としての前記スレーブ装置に対して前記対象データの格納をそれぞれ要求する付記１３に記載の情報処理方法。
（付記１５）
分散ファイルシステムに格納される各データの格納場所を表す情報を、第１記憶装置に記憶する格納場所記憶機能と、
前記データが生成された過程に関する生成情報を、第２記憶装置に記憶する生成情報記憶機能と、
前記データと他の前記データとが同一処理においてアクセスされる関連性を表す関連性情報を、第３記憶装置に記憶する関連性情報記憶機能と、
前記分散ファイルシステムにおいて前記配置先を決定する対象となる対象データについての前記生成情報を取得すると共に、前記分散ファイルシステムに格納済みの他のデータのうち、前記対象データについて取得した前記生成情報と類似する類似データを前記第２記憶装置から取得する類似データ取得機能と、
前記分散ファイルシステムに格納済みの他のデータのうち、前記類似データとの間に前記関連性を有する関連データを、前記第３記憶装置から取得する関連データ取得機能と、
前記関連データの前記格納場所に基づいて、前記対象データの配置先となる格納場所を決定する配置先決定機能と、
前記配置先決定機能によって決定された格納場所への前記対象データの格納に応じて、第１及び第２記憶装置が記憶している情報を更新する情報更新機能とを、
コンピュータに実行させるコンピュータ・プログラム。
（付記１６）
前記対象データが複製されることにより得られる複数の同一の各対象データの配置先に関する条件を表す配置ポリシーを、第４記憶装置に記憶する配置ポリシー記憶機能をさらに前記コンピュータに実行させ、
前記配置先決定機能の実行に際して、前記複数の同一の各対象データに対して、前記配置ポリシーおよび前記関連データの格納場所に基づいて、配置先となるスレーブ装置をそれぞれ決定する付記１５に記載のコンピュータ・プログラム。
以上、上述した実施形態を模範的な例として本発明を説明した。しかしながら、本発明は、上述した実施形態には限定されない。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
この出願は、２０１１年３月１８日に出願された日本出願特願２０１１−０６１０４５を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０００９】
１、２、３    分散ファイルシステム
１０、１００、４００    マスター
２０、２００、５００    クライアント
３０、３００  スレーブ
１１、１５０    格納場所記憶部
１２、１３０、４３０    生成情報記憶部
１３、１３５    関連性情報記憶部
１４、１４０、４４０    関連データ取得部
１５    配置先決定部
１６、１８０、４８０    情報更新部
２１、２１０、５１０    配置先要求部
２２、２２０    書き込み要求部
２３、２３０、５３０    書き込み完了通知部
３１、３１０    データ読み書き部
３２、３２０    データ記憶部
１１０    配置ポリシー記憶部
１２０    配置ポリシー展開部
１５５    関連ラック計算部
１６０    残り容量記憶部
１６５    最大容量ノード取得部
１７０    書き込みノード決定部
１００１、２００１、３００１    ＣＰＵ
１００２、２００２、３００２    ＲＡＭ
１００３、２００３、３００３    ＲＯＭ
１００４、２００４、３００４    記憶装置
１００５、２００５、３００５    ネットワークインタフェース
４００１、４００２    ネットワーク（通信ネットワーク）
【図１】
2012127988.tif 000003
【図２】
2012127988.tif 000004
【図３】
2012127988.tif 000005
【図４】
2012127988.tif 000006
【図５】
2012127988.tif 000007
【図６】
2012127988.tif 000008
【図７】
2012127988.tif 000009
【図８】
2012127988.tif 000010
【図９】
2012127988.tif 000011
【図１０】
2012127988.tif 000012
【図１１】
2012127988.tif 000013
【図１２】
2012127988.tif 000014
【図１３】
2012127988.tif 000015
【図１４】
2012127988.tif 000016
【図１５】
2012127988.tif 000017
【図１６】
2012127988.tif 000018
【図１７】
2012127988.tif 000019
【図１８】
2012127988.tif 000020
【図１９】
2012127988.tif 000021
【図２０】
2012127988.tif 000022
【図２１】
2012127988.tif 000023
【図２２】
2012127988.tif 000024
【図２３】
2012127988.tif 000025
【図２４】
2012127988.tif 000026
【図２５】
2012127988.tif 000027
【図２６】
2012127988.tif 000028
【手続補正書】
【提出日】平成25年9月13日(2013.9.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
分散ファイルシステムに格納されるデータが生成された過程を表す生成情報を記憶する生成情報記憶部と、
前記データと他の前記データとが同一処理においてアクセスされる関連性を表す関連性情報を記憶する関連性情報記憶部と、
前記分散ファイルシステムにおける配置先を決定する対象となる対象データについての前記生成情報を取得し、前記分散ファイルシステムに格納済みの他のデータから、取得した前記生成情報が表す前記対象データの生成過程と生成過程が類似する類似データを前記生成情報を用いて求め、求めた前記類似データとの間に前記関連性を有する関連データを前記関連性情報を用いて求め、求めた前記関連データが格納される格納場所に基づいて、前記対象データの配置先となる格納場所を決定する配置先決定部と、
を備えた情報処理システム。
【請求項２】
前記対象データが複製されることにより得られる複数の同一の各対象データの配置先に関する条件を表す配置ポリシーを記憶した配置ポリシー記憶部をさらに備え、
前記配置先決定部は、
前記複数の同一の各対象データに対して、前記配置ポリシーおよび前記関連データの格納場所に基づいて、配置先の格納場所をそれぞれ決定する請求項１に記載の情報処理システム。
【請求項３】
前記格納場所が１つ以上のノードによって構成される場合に、
前記各ノードの残り記憶容量を記憶する残り容量記憶部をさらに有し、
前記配置先決定部は、
前記関連データの格納場所および該格納場所を構成するノードの残り記憶容量に基づいて、配置先のノードを決定する請求項１または請求項２に記載の情報処理システム。
【請求項４】
前記生成情報記憶部は、
前記分散ファイルシステムに格納済みの各データについて、該各データが生成される際に適用されたデータ形式を表すデータ形式情報を前記生成情報として格納する請求項１から請求項３のいずれかに記載の情報処理システム。
【請求項５】
前記関連データ取得部は、
前記類似データについて、前記対象データに対する前記生成情報の類似の程度を表す類似度を算出し、前記類似データに対する前記関連データの関連性の程度を表す関連度を算出し、算出した前記類似度および前記関連度に基づいて前記関連データのスコアを算出し、
前記配置先決定部は、
前記関連データが格納されている各格納場所について、格納している前記関連データの前記スコアに基づき格納場所スコアを算出し、算出した格納場所スコアに基づいて、前記対象データの配置先となる格納場所を決定する請求項１から請求項４のいずれかに記載の情報処理システム。
【請求項６】
前記格納場所を表す情報を記憶する格納場所記憶部を更に備える請求項１から請求項５のいずれかに記載の情報処理システム。
【請求項７】
前記配置先決定部によって決定された格納場所への前記対象データの格納に応じて、前記格納場所記憶部および前記生成情報記憶部が記憶している情報を更新する情報更新部を更に備える請求項１から請求項６のいずれかに記載の情報処理システム。
【請求項８】
請求項１から請求項７のいずれかに記載の情報処理システムとしてのマスター装置と、
グループ化された１つ以上のスレーブ装置と、を含み、
前記マスター装置は、前記データの格納場所として前記データを格納する前記スレーブ装置およびその所属するグループを表す情報を記憶し、
前記マスター装置の関連データ取得部は、外部のクライアント装置からの前記対象データの配置先の問い合わせに応じて前記関連データを取得し、
前記配置先決定部は、前記関連データが格納されるスレーブ装置が所属するグループに基づいて、前記対象データの配置先のスレーブ装置を決定し、決定したスレーブ装置を表す情報を前記配置先として前記クライアント装置に送信し、
前記スレーブ装置は、
前記クライアント装置からの書き込み要求に応じて前記対象データを格納する
分散ファイルシステム。
【請求項９】
請求項８に記載の分散ファイルシステムに含まれるマスター装置に対して、前記対象データの配置先を問い合わせる配置先要求部と、
前記マスター装置から受信する配置先としてのスレーブ装置に対して、前記対象データの書き込みを要求する書き込み要求部と、
前記対象データの書き込み完了に伴い、前記対象データに関する情報を前記マスター装置に送信する書き込み完了通知部と、
を備えたクライアント装置。
【請求項１０】
分散ファイルシステムに格納されるデータが生成された過程を表す生成情報を第１記憶装置に記憶し、
前記データと他の前記データとが同一処理においてアクセスされる関連性を表す関連性情報を第２記憶装置に記憶し、
前記分散ファイルシステムにおいて配置先を決定する対象となる対象データについての前記生成情報を前記第１記憶装置から取得すると共に、前記分散ファイルシステムに格納済みの他のデータから、取得した前記生成情報が表す前記対象データの生成過程と生成過程が類似する類似データを前記生成情報を用いて求め、
求めた前記類似データとの間に前記関連性を有する関連データを前記関連性情報を用いて求め、
求めた前記関連データが格納される格納場所に基づいて、前記対象データの配置先としての格納場所を決定する、
情報処理方法。
【請求項１１】
マスター装置が、
分散ファイルシステムに格納されるデータが生成された過程を表す生成情報を記憶し、
前記データと他の前記データとが同一処理においてアクセスされる関連性を表す関連性情報を記憶しており、
クライアント装置が、前記マスター装置に対して対象データの配置先を問い合わせ、
前記マスター装置が、
前記対象データの前記生成情報を取得することにより、前記分散ファイルシステムに格納済みの他のデータから、取得した前記生成情報が表す前記対象データの生成過程と生成過程が類似する類似データを前記関連性情報を用いて求め、求めた前記類似データとの間に前記関連性を有する関連データを前記関連性情報を用いて求め、
求めた前記関連データが格納される格納場所に基づいて、前記対象データの配置先としての格納場所を決定する、
情報処理方法。
【請求項１２】
分散ファイルシステムに格納されるデータが生成された過程を表す生成情報を、第１記憶装置に記憶する生成情報記憶機能と、
前記データと他の前記データとが同一処理においてアクセスされる関連性を表す関連性情報を、第２記憶装置に記憶する関連性情報記憶機能と、
前記分散ファイルシステムにおいて前記配置先を決定する対象となる対象データについての前記生成情報を前記第１記憶装置から取得すると共に、前記分散ファイルシステムに格納済みの他のデータから、取得した前記生成情報を表す前記対象データの生成過程と生成過程が類似する類似データを前記生成情報を用いて求め、求めた前記類似データとの間に前記関連性を有する関連データを、前記関連性情報を用いて求め、求めた前記関連データが格納される格納場所に基づいて、前記対象データの配置先となる格納場所を決定する配置先決定機能とを、
コンピュータに実行させるコンピュータ・プログラム。
【国際調査報告】
2012127988.tif 000029
2012127988.tif 000030
2012127988.tif 000031
2012127988.tif 000032
2012127988.tif 000033
2012127988.tif 000034
2012127988.tif 000035