(57)【特許請求の範囲】
【請求項１】
ファイルを複数のブロックに分割し、該複数のブロック毎にＲ個のレプリカを、複数のエッジスイッチ配下のマシンに配置する分散ファイル管理システムであって、
前記Ｒ個のレプリカのうちｉ個（０≦ｉ≦Ｒ）のレプリカを配置する第１のマシンと、（Ｒ−ｉ）個のレプリカのうちｊ個（０≦ｊ≦（Ｒ−ｉ））のレプリカを配置する第２のマシンとを、前記第１のマシンが、ブロック毎にファイルの書き込みを行うクライアントマシンを配下とするエッジスイッチ配下のマシンとなり、かつ、前記第２のマシンがファイル毎に特定のエッジスイッチの配下のマシンとなるように選択するブロック・レプリカ生成処理部と、
前記ブロック・レプリカ生成処理部にて選択された第１及び第２のマシンにレプリカを配置することによりファイルを書き込む処理を行うファイル書き込み処理部と、
前記ブロック・レプリカ生成処理部にて選択された第２のマシンを配下とする前記特定のエッジスイッチの配下のマシンをファイルの読み出しを行うクライアントマシンとしてファイルの読み出し処理を行うファイル読み出し処理部とを有する分散ファイル管理システム。
【請求項２】
ファイルを複数のブロックに分割し、該複数のブロック毎にＲ個のレプリカを、複数のエッジスイッチ配下のマシンに配置する分散ファイル配置方法であって、
前記Ｒ個のレプリカのうちｉ個（０≦ｉ≦Ｒ）のレプリカを配置する第１のマシンと、（Ｒ−ｉ）個のレプリカのうちｊ個（０≦ｊ≦（Ｒ−ｉ））のレプリカを配置する第２のマシンとを、前記第１のマシンが、ブロック毎にファイルの書き込みを行うクライアントマシンを配下とするエッジスイッチ配下のマシンとなり、かつ、前記第２のマシンがファイル毎に特定のエッジスイッチの配下のマシンとなるように選択するブロック・レプリカ生成処理と、
前記ブロック・レプリカ生成処理にて選択された第１及び第２のマシンにレプリカを配置することによりファイルを書き込む処理を行うファイル書き込み処理と、
前記ブロック・レプリカ生成処理にて選択された第２のマシンを配下とする前記特定のエッジスイッチの配下のマシンをファイルの読み出しを行うクライアントマシンとしてファイルの読み出し処理を行うファイル読み出し処理とを有する分散ファイル配置方法。
【請求項３】
ファイルを複数のブロックに分割し、該複数のブロック毎にＲ個のレプリカを、複数のエッジスイッチ配下のマシンに配置するためのコンピュータに、
前記Ｒ個のレプリカのうちｉ個（０≦ｉ≦Ｒ）のレプリカを配置する第１のマシンと、（Ｒ−ｉ）個のレプリカのうちｊ個（０≦ｊ≦（Ｒ−ｉ））のレプリカを配置する第２のマシンとを、前記第１のマシンが、ブロック毎にファイルの書き込みを行うクライアントマシンを配下とするエッジスイッチ配下のマシンとなり、かつ、前記第２のマシンがファイル毎に特定のエッジスイッチの配下のマシンとなるように選択するブロック・レプリカ生成手順と、
前記ブロック・レプリカ生成手順にて選択された第１及び第２のマシンにレプリカを配置することによりファイルを書き込む処理を行うファイル書き込み手順と、
前記ブロック・レプリカ生成手順にて選択された第２のマシンを配下とする前記特定のエッジスイッチの配下のマシンをファイルの読み出しを行うクライアントマシンとしてファイルの読み出し処理を行うファイル読み出し手順とを実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイルを複数のブロックに分割して管理する分散ファイル管理システムに関し、特に、ブロックのレプリカを複数のマシンに分散配置する技術に関する。
【背景技術】
【０００２】
耐障害性を備えた分散ファイル管理システムとして、Google File System（ＧＦＳ）がある（例えば、非特許文献１参照）。このＧＦＳでは、ファイルをチャンクと呼ばれる固定長（６４ＭＢ）のブロックに分割するとともに、ブロックのレプリカを複数のマシンに分散させて管理する。
【０００３】
図１３は、ファイルとブロックとレプリカとの関係を説明するための図である。
【０００４】
図１３に示すように、例えば、ファイルを３つのブロックに分割するとともに、この３つのブロックそれぞれについて、レプリカを３台のマシンに分散させて管理する。この際、マシンレベルの障害だけでなく、マシン群を収容したエッジスイッチレベルの障害にも耐えるため、複数のレプリカを互いに異なるエッジスイッチ配下のマシンに配置する。これにより、１つのエッジスイッチに障害が発生しても、１つのブロックについて、失われるレプリカが１つのみとなり全てのレプリカが失われることが回避される。また、ブロックごとにレプリカの配置先を独立に決定することにより、１つのエッジスイッチに障害が発生しても、１つのファイルを構成する全てのブロックのレプリカ１個が一気に失われる確率も低くなる。
【先行技術文献】
【特許文献】
【０００５】
【非特許文献１】Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung. 2003. The Google file system. In Proceedings of the nineteenth ACM symposium on Operating systems principles (SOSP '03). ACM, New York, NY, USA, 29-43. DOI=10.1145/945445.945450 http://doi.acm.org/10.1145/945445.945450
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述したようなＧＦＳによるレプリカ配置方法においては、以下に記載するような問題点がある。
【０００７】
ファイルの耐障害性は高いが、ファイルの書き込み効率や読み出し効率が悪い。
【０００８】
図１４は、ＧＦＳによるレプリカ配置方法におけるファイル書き込み時の問題点を説明するための図である。
【０００９】
図１４に示すように、ＧＦＳによるレプリカ配置方法においては、ファイルを分割したブロック毎の複数のレプリカを互いに異なるエッジスイッチ１−１〜１−９配下のマシン４に配置するため、ファイルを構成する各ブロックの書き込み時には、エッジスイッチ１−１〜１−９間を跨る回数が多く、それにより、ファイルの書き込み効率が悪くなってしまう。
【００１０】
図１５は、ＧＦＳによるレプリカ配置方法におけるファイル読み出し時の問題点を説明するための図である。
【００１１】
図１５に示すように、ＧＦＳによるレプリカ配置方法においては、ファイルを構成するブロック毎にレプリカの配置先のエッジスイッチ１−１〜１−９を独立に決定するため、ファイルを構成する全てのブロックの読み出し時には、エッジスイッチ１−１〜１−９間を跨る確率が高く、それにより、ファイルの読み出し効率が悪くなってしまう。
【００１２】
そして、上述したようなＧＦＳのレプリカ配置方法は、システムで固定であるため、ファイルの耐障害性をそれほど必要としない場合であっても、ファイルの書き込み効率や読み出し効率を犠牲にしなければならない。
【００１３】
本発明は、上述したような従来の技術が有する問題点に鑑みてなされたものであって、ファイルの耐障害性とファイルの書き込み効率や読み出し効率とのトレードオフを、アプリケーション開発者が選択でき、各ファイルの用途に応じてファイル単位に最適化することができる、分散ファイル管理システム、分散ファイル配置方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
上記目的を達成するために本発明は、
ファイルを複数のブロックに分割し、該複数のブロック毎にＲ個のレプリカを、複数のエッジスイッチ配下のマシンに配置する分散ファイル管理システムであって、
前記Ｒ個のレプリカのうちｉ個（０≦ｉ≦Ｒ）のレプリカを配置する第１のマシンと、（Ｒ−ｉ）個のレプリカのうちｊ個（０≦ｊ≦（Ｒ−ｉ））のレプリカを配置する第２のマシンとを、前記第１のマシンが、ブロック毎にファイルの書き込みを行うクライアントマシンを配下とするエッジスイッチ配下のマシンとなり、かつ、前記第２のマシンがファイル毎に特定のエッジスイッチの配下のマシンとなるように選択するブロック・レプリカ生成処理部と、
前記ブロック・レプリカ生成処理部にて選択された第１及び第２のマシンにレプリカを配置することによりファイルを書き込む処理を行うファイル書き込み処理部と、
前記ブロック・レプリカ生成処理部にて選択された第２のマシンを配下とする前記特定のエッジスイッチの配下のマシンをファイルの読み出しを行うクライアントマシンとしてファイルの読み出し処理を行うファイル読み出し処理部とを有する。
【００１５】
また、ファイルを複数のブロックに分割し、該複数のブロック毎にＲ個のレプリカを、複数のエッジスイッチ配下のマシンに配置する分散ファイル配置方法であって、
前記Ｒ個のレプリカのうちｉ個（０≦ｉ≦Ｒ）のレプリカを配置する第１のマシンと、（Ｒ−ｉ）個のレプリカのうちｊ個（０≦ｊ≦（Ｒ−ｉ））のレプリカを配置する第２のマシンとを、前記第１のマシンが、ブロック毎にファイルの書き込みを行うクライアントマシンを配下とするエッジスイッチ配下のマシンとなり、かつ、前記第２のマシンがファイル毎に特定のエッジスイッチの配下のマシンとなるように選択するブロック・レプリカ生成処理と、
前記ブロック・レプリカ生成処理にて選択された第１及び第２のマシンにレプリカを配置することによりファイルを書き込む処理を行うファイル書き込み処理と、
前記ブロック・レプリカ生成処理にて選択された第２のマシンを配下とする前記特定のエッジスイッチの配下のマシンをファイルの読み出しを行うクライアントマシンとしてファイルの読み出し処理を行うファイル読み出し処理とを有する。
【００１６】
また、ファイルを複数のブロックに分割し、該複数のブロック毎にＲ個のレプリカを、複数のエッジスイッチ配下のマシンに配置するためのコンピュータに、
前記Ｒ個のレプリカのうちｉ個（０≦ｉ≦Ｒ）のレプリカを配置する第１のマシンと、（Ｒ−ｉ）個のレプリカのうちｊ個（０≦ｊ≦（Ｒ−ｉ））のレプリカを配置する第２のマシンとを、前記第１のマシンが、ブロック毎にファイルの書き込みを行うクライアントマシンを配下とするエッジスイッチ配下のマシンとなり、かつ、前記第２のマシンがファイル毎に特定のエッジスイッチの配下のマシンとなるように選択するブロック・レプリカ生成手順と、
前記ブロック・レプリカ生成手順にて選択された第１及び第２のマシンにレプリカを配置することによりファイルを書き込む処理を行うファイル書き込み手順と、
前記ブロック・レプリカ生成手順にて選択された第２のマシンを配下とする前記特定のエッジスイッチの配下のマシンをファイルの読み出しを行うクライアントマシンとしてファイルの読み出し処理を行うファイル読み出し手順とを実行させるためのプログラム。
【発明の効果】
【００１７】
本発明は、Ｒ個のレプリカのうちｉ個（０≦ｉ≦Ｒ）のレプリカを配置する第１のマシンと、（Ｒ−ｉ）個のレプリカのうちｊ個（０≦ｊ≦（Ｒ−ｉ））のレプリカを配置する第２のマシンとを、第１のマシンが、ブロック毎にファイルの書き込みを行うクライアントマシンを配下とするエッジスイッチ配下のマシンとなり、かつ、第２のマシンがファイル毎に特定のエッジスイッチの配下のマシンとなるように選択し、この選択された第１及び第２のマシンにレプリカを配置することによりファイルを書き込み、また、選択された第２のマシンを配下とする特定のエッジスイッチの配下のマシンをファイルの読み出しを行うクライアントマシンとしてファイルを読み出す構成としたため、ファイルの耐障害性とファイルの書き込み効率や読み出し効率とのトレードオフを、アプリケーション開発者が選択でき、各ファイルの用途に応じてファイル単位に最適化することができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の分散ファイル配置方法によるファイル書き込み時の効果を説明するための図である。
【図２】本発明の分散ファイル配置方法によるファイル読み出し時の効果を説明するための図である。
【図３】本発明の分散ファイル管理システムにて想定されるハードウェア構成の実施の一形態を示す図である。
【図４】本発明の分散ファイル管理システムにて想定されるソフトウェア構成の実施の一形態を示す図である。
【図５】図３及び図４に示した分散ファイル管理システムにおける分散ファイル配置方法を説明するための想定シナリオを示す図である。
【図６】図４に示したファイル・ブロック情報記憶部に登録されるファイル・ブロック情報（ファイル生成後）を示す図である。
【図７】図４に示したブロック・レプリカ生成処理部にて実行されるブロック・レプリカ生成処理を説明するためのフローチャートである。
【図８】図４に示したワーカマシン情報記憶部に登録されたワーカマシン情報の一例を示す図である。
【図９】図４に示したファイル・ブロック情報記憶部に登録されるファイル・ブロック情報（ブロック生成後）を示す図である。
【図１０】図４に示したブロック情報記憶部に登録されるブロック情報を示す図である。
【図１１】図４に示したクライアントマシン情報記憶部に登録されているクライアントマシン情報を示す図である。
【図１２】本発明の分散ファイル管理システムにて想定されるハードウェア構成の他の実施の形態を示す図である。
【図１３】ファイルとブロックとレプリカとの関係を説明するための図である。
【図１４】ＧＦＳによるレプリカ配置方法におけるファイル書き込み時の問題点を説明するための図である。
【図１５】ＧＦＳによるレプリカ配置方法におけるファイル読み出し時の問題点を説明するための図である。
【発明を実施するための形態】
【００１９】
以下に、本発明の実施の形態について図面を参照して説明する。
【００２０】
まず、本発明の概要について説明する。
【００２１】
本発明では、ファイルを構成するブロックについて、下記｛ｉ，ｊ｝の組をレプリカ配置方法として定義する。
【００２２】
Ｒ個のレプリカのうちｉ個（０≦ｉ≦Ｒ）は、ファイルの書き手となるマシンを収容したローカルの１つのエッジスイッチ配下のマシン（第１のマシン）に配置する。
【００２３】
また、（Ｒ−ｉ）個のレプリカのうちｊ個（０≦ｊ≦（Ｒ−ｉ））は、各ファイルの生成時にシステムがファイル毎にランダムに決定する特定のエッジスイッチ配下のマシン（第２のマシン）にそれぞれ配置する。なお、（Ｒ−ｉ−ｊ）個のレプリカは、上記とは異なるエッジスイッチ配下のマシンにそれぞれ配置する。また、ファイル生成時にファイル毎に決定された特定のエッジスイッチ情報を取得する手段を提供するとともに、その特定のエッジスイッチ配下のマシンを当該ファイルの読み手とする。
【００２４】
そして、上記のレプリカ配置方法｛ｉ，ｊ｝をファイル毎に保持し、当該のレプリカ配置方法｛ｉ，ｊ｝をファイル毎に適用する。
【００２５】
以下に、上述した構成による効果について説明する。
【００２６】
図１は、本発明の分散ファイル配置方法によるファイル書き込み時の効果を説明するための図であり、Ｒ＝３，｛ｉ，ｊ｝＝｛２，１｝の場合を示す。
【００２７】
図１に示したものにおいては、ファイルを構成する３つのブロックのそれぞれについて、３個のレプリカのうち２個のレプリカをファイルの書き手となるマシン４を収容したローカルのエッジスイッチ１−１，１−４，１−７配下のマシン４に配置し、１個のレプリカを特定のエッジスイッチ１−５配下のマシン４に配置している。
【００２８】
このように、Ｒ個のレプリカのうちｉ個（０≦ｉ≦Ｒ）を、ファイルの書き手となるマシン４を収容したローカルのエッジスイッチ１−１，１−４，１−７配下のマシン４に配置するとともに、（Ｒ−ｉ）個のレプリカのうちｊ個（０≦ｊ≦（Ｒ−ｉ））を、各ファイルの生成時にシステムがファイル毎にランダムに決定する特定のエッジスイッチ１−５配下のマシン４にそれぞれ配置することにより、ｉを増やせば増やすほど、１つのエッジスイッチに障害が発生した場合に、あるブロックのレプリカが失われる最大個数は増えるが、ファイルを構成する各ブロックの書き込み時には、エッジスイッチ１−１〜１−９間を跨る回数が少なくなる分だけファイルの書き込み効率が良くなる。なお、ｉを０個から１個に増やすときには、失われるレプリカの最大個数は増えない。
【００２９】
図２は、本発明の分散ファイル配置方法によるファイル読み出し時の効果を説明するための図であり、Ｒ＝３，｛ｉ，ｊ｝＝｛２，１｝の場合を示す。
【００３０】
図２に示したものにおいては、ファイルを構成する３つのブロックのそれぞれについて、３個のレプリカのうち２個のレプリカをエッジスイッチ１−１，１−４，１−７配下のマシン４に配置し、１個のレプリカを、後にファイルの読み手とされるエッジスイッチ１−５配下のマシン４に配置している。
【００３１】
このように、Ｒ個のレプリカのうちｉ個（０≦ｉ≦Ｒ）を、エッジスイッチ１−１，１−４，１−７配下のマシン４に配置するとともに、（Ｒ−ｉ）個のレプリカのうちｊ個（０≦ｊ≦（Ｒ−ｉ））を、各ファイルの生成時にシステムがファイル毎にランダムに決定する特定のエッジスイッチ１−５配下のマシン４にそれぞれ配置し、その後、このマシン４を当該ファイルの読み手とすることで、ｊを増やせば増やすほど、１つのエッジスイッチに障害が発生したときに、あるファイルを構成する全ブロックのレプリカ１個が一気に失われる確率は高くなるが、ファイルの読み出しがエッジスイッチ内に閉じる分だけファイルの読み出し効率が良くなる。なお、ｊを２個以上に増やすときには、エッジスイッチ内に閉じたファイルの読み出しを２個以上に分散できる分だけファイルの読み出し効率が良くなる。
【００３２】
図３は、本発明の分散ファイル管理システムにて想定されるハードウェア構成の実施の一形態を示す図である。
【００３３】
本形態は図３に示すように、複数のマシン４群をエッジスイッチ１−１〜１−９が収容し、複数のエッジスイッチ１−１〜１−９群をコアスイッチ２が収容する。各マシン４のＩＰアドレスは、ある一定のマスク（マシングループマスクと呼ぶ）を適用することで、同一のエッジスイッチ配下に収容されているか否かがわかるように付与する。本形態では、例えば、マシン「192.168.1.1」とマシン「192.168.1.10」にマシングループマスク「255.255.255.0」を適用すると同一のマシングループ「192.168.1.*」になるので、マシン「192.168.1.1」とマシン「192.168.1.10」は同一のエッジスイッチ配下に収容されていることがわかる。
【００３４】
図４は、本発明の分散ファイル管理システムにて想定されるソフトウェア構成の実施の一形態を示す図である。
【００３５】
本形態は図４に示すように、クライアント機能１０と、マスタ機能２０と、ワーカ機能３０とから構成されており、さらにクライアント機能１０は、共通機能１０ａと、個別機能１０ｂとから構成されている。マスタ機能２０は、ある１台のマシン上だけで動作し、クライアント機能１０とワーカ機能３０は、複数台のマシン上で動作する。なお、これらクライアント機能１０とマスタ機能２０とワーカ機能３０とは、同一のマシン上に共存させても構わない。
【００３６】
クライアント機能１０の個別機能１０ａは、クライアント処理部１１と、クライアントマシン情報記憶部１２とから構成されている。また、クライアント機能１０の共通機能１０ｂは、ファイル生成処理部１３と、特定エッジスイッチ情報取得処理部１４と、ファイル書き込み処理部１５と、ファイル読み出し処理部１６とから構成されている。
【００３７】
マスタ機能２０は、ファイル情報更新処理部２１と、ファイル情報参照処理部２２と、ファイル・ブロック情報記憶部２３と、書き込み用ブロック情報取得処理部２４と、読み出し用ブロック情報取得処理部２５と、ブロック・レプリカ生成処理部２６と、ワーカマシン情報記憶部２０とから構成されている。
【００３８】
ワーカ機能３０は、ブロック生成処理部３１と、ブロック書き込み処理部３２と、ブロック読み出し処理部３３と、ブロック情報記憶部３４とから構成されている。
【００３９】
以下に、上記のように構成された分散ファイル管理システムにおける分散ファイル配置方法について説明する。
【００４０】
図５は、図３及び図４に示した分散ファイル管理システムにおける分散ファイル配置方法を説明するための想定シナリオを示す図である。
【００４１】
図５に示す想定シナリオに基づいて、（１）ファイル生成処理、（２）ファイル書き込み処理、（３）特定エッジスイッチ情報取得処理、（４）ファイル読み出し処理に分けて説明する。特に、本発明のポイントであるブロック・レプリカ生成処理に関わるアルゴリズムやデータ構造について詳細に説明する。
【００４２】
（１）ファイル生成処理
まず、この分散ファイル管理システムが提供するＡＰＩを利用して、アプリケーション開発者が入力する値をプログラミングすることにより、クライアント処理部１１が、生成するファイル名とレプリカ数とレプリカ配置方法とをファイル生成処理部１３に入力する。
【００４３】
すると、ファイル生成処理部１３は、入力されたファイル名とレプリカ数とレプリカ配置方法とをファイル情報更新処理部２１に送信する。
【００４４】
ファイル情報更新処理部２１は、ファイル生成処理部１３から送信されてきたファイル名とレプリカ数とレプリカ配置方法とを受信し、これらファイル名とレプリカ数とレプリカ配置方法とをファイル・ブロック情報記憶部２３に登録する。
【００４５】
図６は、図４に示したファイル・ブロック情報記憶部２３に登録されるファイル・ブロック情報（ファイル生成後）を示す図である。
【００４６】
図６に示すように、ファイル生成後のファイル・ブロック情報記憶部２３には、ファイル名とレプリカ数とレプリカ配置方法とが対応づけて登録されており、本形態においては、生成されたファイル名が「ファイル１」であり、当該ファイルを構成するブロックのレプリカ数は「３」、レプリカ配置方法は「｛２，１｝」となっている。
【００４７】
（２）ファイル書き込み処理
まず、上記同様にして、クライアント処理部１１が、書き込むファイル名と書き込みオフセットと書き込みサイズと書き込みデータとをファイル書き込み処理部１５に入力する。
【００４８】
すると、ファイル書き込み処理部１５は、入力された書き込みオフセットと書き込みサイズとから書き込み対象となるブロックのインデックス（ファイルの先頭から何番目のブロックに書き込むか）を算出して、入力されたファイル名とともに、書き込み用ブロック情報取得処理部２４に送信する。
【００４９】
書き込み用ブロック情報取得処理部２４は、ファイル・ブロック情報記憶部２３を参照して、受信したファイル名とインデックスが示すブロックが未生成であれば、ブロック・レプリカ生成処理部２６に、当該ブロックの生成を依頼し、ブロック・レプリカ生成処理部２６にて生成されたブロックＩＤと当該ブロックのレプリカが配置されたワーカマシン情報（ワーカ機能が動作するマシン情報：ＩＰアドレス）をファイル書き込み処理部１５に返信する。また、受信したファイル名とインデックスが示すブロックが生成済みであれば、生成済みのブロックＩＤと当該ブロックのレプリカが配置されたワーカマシン情報をファイル書き込み処理部１５に返信する。
【００５０】
ここで、ブロック・レプリカ生成処理部２６にて実行されるブロック・レプリカ生成処理について詳細に説明する。
【００５１】
図７は、図４に示したブロック・レプリカ生成処理部２６にて実行されるブロック・レプリカ生成処理を説明するためのフローチャートである。
【００５２】
まず、ブロック・レプリカ生成処理部２６は、ファイル・ブロック情報記憶部２３を参照して、当該ファイル名のレプリカ数をＲ、レプリカ配置方法を｛ｉ，ｊ｝として取得する（ステップ１）。
【００５３】
次に、ブロック・レプリカ生成処理部２６は、当該クライアントマシンのＩＰアドレスにマシングループマスクを適用して、クライアントマシンが属するクライアントマシングループを取得する（ステップ２）。
【００５４】
次に、ブロック・レプリカ生成処理部２６は、ワーカマシン情報記憶部２７に登録されているワーカマシン情報に記載された、全てのワーカマシンのＩＰアドレスにマシングループマスクを適用して、全てのワーカマシンが属するワーカマシングループの集合を取得する（ステップ３）。
【００５５】
図８は、図４に示したワーカマシン情報記憶部２７に登録されたワーカマシン情報の一例を示す図である。
【００５６】
図８に示すように、ワーカマシン情報記憶部２７には、ワーカ機能３０が動作するマシン情報が登録されており、ブロック・レプリカ生成処理部２６は、このマシン情報を用いて、全てのワーカマシンが属するワーカマシングループの集合を取得する。
【００５７】
次に、ブロック・レプリカ生成処理部２６は、ステップ３で取得したワーカマシングループの集合の中からステップ２で取得したクライアントマシングループと同一のワーカマシングループを選択し、そのワーカマシングループに属するワーカマシンの中からｉ台を選択する（ステップ４）。なお、ワーカマシンの選択にあたっては、クライアントマシンと同一のワーカマシンが存在すればそれを最優先で選択し、クライアントマシンと同一のワーカマシンが存在しなければランダムに選択する。
【００５８】
次に、ブロック・レプリカ生成処理部２６は、ファイル・ブロック情報記憶部２３を参照して、当該ファイル名の特定エッジスイッチ情報が登録されているか否かを調査する（ステップ５）。
【００５９】
そして、ステップ５の結果、当該ファイル名の特定エッジスイッチ情報が登録されていない場合は、ブロック・レプリカ生成処理部２６は、ステップ３で取得したワーカマシングループの集合の中からステップ２で取得したクライアントマシングループと異なるワーカマシングループをランダムに（Ｒ−ｉ）個選択し、（Ｒ−ｉ）個のワーカマシングループに属する複数のワーカマシンの中から、ワーカマシングループそれぞれ１台のワーカマシンをランダムに選択する（ステップ６）。
【００６０】
次に、ブロック・レプリカ生成処理部２６は、ステップ６で選択した（Ｒ−ｉ）個のワーカマシングループの中からｊ個をランダムに選択し、ｊ個のワーカマシングループを当該ファイル名の特定エッジスイッチ情報としてファイル・ブロック情報記憶部２３に登録する（ステップ７）。
【００６１】
また、ステップ５の結果、当該ファイル名の特定エッジスイッチ情報が登録されている場合は、ブロック・レプリカ生成処理部２６は、ファイル・ブロック情報記憶部２３を参照して、当該ファイル名に対応する特定エッジスイッチ情報として登録されたｊ個のワーカマシングループを取得し、ｊ個のワーカマシングループに属する複数のワーカマシン（ステップ４で選択したｉ台のワーカマシンを除く）の中から、ワーカマシングループそれぞれ１台のワーカマシンをランダムに選択する（ステップ８）。
【００６２】
次に、ブロック・レプリカ生成処理部２６は、ステップ３で取得したワーカマシングループの集合の中から、ステップ２で取得したクライアントマシングループともステップ８で取得したｊ個のワーカマシングループとも異なるワーカマシングループをランダムに（Ｒ−ｉ−ｊ）個選択し、（Ｒ−ｉ−ｊ）個のワーカマシングループに属する複数のワーカマシンの中から、ワーカマシングループそれぞれ１台のワーカマシンをランダムに選択する（ステップ９）。
【００６３】
その後、ブロック・レプリカ生成処理部２６は、ステップ４，６、またはステップ４，８，９で選択した合計Ｒ個のワーカマシン上のブロック生成処理部３１に対し、当該ファイル名と当該インデックスに対応するブロックの生成をブロックＩＤ指定で依頼し、当該ブロックＩＤと選択されたＲ個のワーカマシン情報をファイル・ブロック情報記憶部２３に登録する（ステップ１０）。
【００６４】
図９は、図４に示したファイル・ブロック情報記憶部２３に登録されるファイル・ブロック情報（ブロック生成後）を示す図である。
【００６５】
図９に示すように、ブロック生成後のファイル・ブロック情報記憶部２３には、ファイル名とレプリカ数とレプリカ配置方法と特定エッジスイッチ情報とブロックＩＤとワーカマシン情報とが対応づけて登録されており、本形態においては、ファイル名「ファイル１」を構成するブロックＩＤ「ブロック１」の書き手クライアントマシンが「192.168.1.10」、同様に「ブロック２」の書き手クライアントマシンが「192.168.4.10」、「ブロック３」の書き手クライアントマシンが「192.168.7.10」となっている。各ブロックのレプリカ「３」個のうち「２」個は、各書き手クライアントマシンと同一のローカルのマシングループに属するワーカマシン（書き手クライアントマシンと同一のワーカマシンを含む）に配置されていることがわかる。また、各ブロックのレプリカ「３」個のうち「１」個は、特定のマシングループ「192.168.5.*」に属するワーカマシンに配置されていることがわかる。なお、各ワーカマシン上のブロック情報記憶部３４には、ブロックＩＤとブロック実体の対応関係がブロック情報としてブロック生成処理部３１により登録される。
【００６６】
図１０は、図４に示したブロック情報記憶部３４に登録されるブロック情報を示す図である。
【００６７】
図１０に示すように、ワーカマシン上のブロック情報記憶部３４には、ブロックＩＤとブロック実体の対応関係がブロック情報として登録されている。なお、ブロック実体とは、ブロックＩＤに対応するワーカマシン上の仮想的な記憶領域へのポインタであり、仮想的な記憶領域は、物理的にはディスクまたはメモリにマッピングされる。
【００６８】
その後、ファイル書き込み処理部１５は、受信したワーカマシン情報に記載された全てのワーカマシン上のブロック書き込み処理部３２に対して、受信したブロックＩＤと当該ブロック内での書き込みオフセットと書き込みサイズと書き込みデータとを送信する。
【００６９】
そして、ブロック書き込み処理部３２は、ブロック情報記憶部３４を参照して、受信したブロックＩＤのブロック実体について、受信した書き込みオフセットから、受信した書き込みサイズ分だけ受信した書き込みデータを書き込む。
【００７０】
なお、複数のブロックに跨るファイル書き込みの場合は、書き込み対象となるブロックの数分だけ上記の処理を繰り返す。
【００７１】
（３）特定エッジスイッチ情報取得処理
まず、上記同様にして、クライアント処理部１１が、取得する特定エッジスイッチ情報に対応するファイル名を特定エッジスイッチ情報取得処理部１４に入力する。
【００７２】
すると、特定エッジスイッチ情報取得処理部１４は、入力されたファイル名をファイル情報参照処理部２２に送信する。
【００７３】
ファイル情報参照処理部２２は、ファイル・ブロック情報記憶部２３を参照して、受信したファイル名に対応する特定エッジスイッチ情報を取得し、特定エッジスイッチ情報取得処理部１４に返信する。なお、図９に示した例では、特定エッジスイッチ情報を取得するファイル名が「ファイル１」の場合は、特定エッジスイッチ情報としてマシングループ「192.168.5.*」が返信されることになる。
【００７４】
特定エッジスイッチ情報処理部１４は、受信した特定エッジスイッチ情報をクライアント処理部１１に出力する。
【００７５】
（４）ファイル読み出し処理
クライアント処理部１１は、読み出すファイル名に対応する特定エッジスイッチ情報として出力されたマシングループのいずれにもクライアントマシンが属さない場合、後述するように、読み出すファイル名に対応する特定エッジスイッチ情報として出力されたマシングループのいずれかに属するクライアントマシンを１台選択し、当該選択されたクライアントマシン上のクライアント処理部１１にファイル読み出しを指示する。
【００７６】
ここで、マシングループのいずれかに属するクライアントマシンの選択方法について説明する。
【００７７】
図１１は、図４に示したクライアントマシン情報記憶部１２に登録されているクライアントマシン情報を示す図である。
【００７８】
クライアント処理部１１は、図１１に示すようなクライアントマシン情報に記載された、全てのクライアントマシン情報であるＩＰアドレスにマシングループマスクを適用して、全てのクライアントマシンに対するクライアントマシングループの集合を取得する。そして、そのクライアントマシングループの集合の中から、読み出すファイル名に対応する特定エッジスイッチ情報として出力されたマシングループのいずれかと同一のクライアントマシングループをランダムに１個選択し、さらに選択した当該クライアントマシングループに属するクライアントマシンの中から１台をランダムに選択する。
【００７９】
読み出すファイル名「ファイル１」に対応する特定エッジスイッチ情報が「192.168.5.*」である場合、当該マシングループ「192.168.5.*」に属するクライアントマシンをランダムに１台選択することになる。図５に示したシナリオでは、「192.168.5.10」がクライアントマシンとして選択されている。
【００８０】
ファイル読み出しを指示されたクライアント処理部１１は、読み出すファイル名と読み出しオフセットと読み出しサイズをファイル読み出し処理部１６に入力する。
【００８１】
すると、ファイル読み出し処理部１６は、入力された読み出しオフセットと読み出しサイズから読み出し対象となるブロックのインデックス（ファイルの先頭から何番目のブロックを読み出すか）を算出して、入力されたファイル名とともに、読み出し用ブロック情報取得処理部２５に送信する。
【００８２】
読み出し用ブロック情報取得処理部２５は、受信したファイル名とインデックスに基づいて、ファイル・ブロック情報記憶部２３を参照して、受信したファイル名とインデックスが示すブロックが生成済みの場合に限り、生成済みのブロックＩＤと当該ブロックのレプリカが配置されたワーカマシン情報を全て取得し、ファイル読み出し処理部１６に返信する。
【００８３】
ファイル読み出し処理部１６は、受信した全てのワーカマシン情報が示す全てのワーカマシンの中から、後述する方法で１台選択し、選択したワーカマシン上のブロック読み出し処理部３３に対して、受信したブロックＩＤと当該ブロック内での読み出しオフセットと読み出しサイズを送信する。
【００８４】
なお、ワーカマシンの選択にあたっては、ファイルの読み出しを行うクライアントマシンとネットワーク的に最も近い（ＩＰアドレスの排他的論理和が最も小さい）ワーカマシンを選択する。その結果、クライアントマシンと同一のワーカマシン、クライアントマシンと同一のマシングループに属するワーカマシン、クライアントマシンと異なるマシングループに属するワーカマシンの順に、優先的に選択されることになる。
【００８５】
図５に示したシナリオでは、クライアントマシンが「192.168.5.10」であるため、「ファイル１」を構成する「ブロック１」の読み出し先ワーカマシンとして「192.168.5.1」、「ブロック２」の読み出し先ワーカマシンとして「192.168.5.10」、「ブロック３」の読み出し先ワーカマシンとして「192.168.5.20」が選択されている。
【００８６】
ブロック読み出し処理部３３は、ブロック情報記憶部３４を参照して、受信したブロックＩＤのブロック実体を受信した読み出しオフセットから受信した読み出しサイズ分だけ読み出して、読み出したデータをファイル読み出し処理部１６に返信する。
【００８７】
なお、複数のブロックに跨るファイル読み出しの場合は、読み出し対象となるブロックの数分だけ上述した処理を繰り返す。
【００８８】
ファイル読み出し処理部１６は、受信した読み出しデータをクライアント処理部１１に出力する。
【００８９】
なお、上述した実施の形態においては、図３に示すようなコアスイッチ２配下に複数台のエッジスイッチ１−１〜１−９が存在し、各エッジスイッチ１−１〜１−９に複数のマシン４が接続されたシステムでのレプリカの配置の方法について説明したが、本発明を仮想マシン環境に適用することも考えられる。
【００９０】
図１２は、本発明の分散ファイル管理システムにて想定されるハードウェア構成の他の実施の形態を示す図である。
【００９１】
図１２に示すように、図３に示したコアスイッチ２をスイッチ１０２に置き換え、エッジスイッチ１−１〜１−９を物理マシン３−１〜３−９に置き換え、各物理マシン３−１〜３−９に接続するマシン４を仮想マシン５に置き換えることで、仮想マシンシステムでの使用形態とすることができる。
【００９２】
このように、特定エッジスイッチの代わりに特定物理マシンとして管理を行うことで、１つの物理マシンに障害が発生したときに、あるブロックのレプリカが失われる最大個数は増えるものの、ファイルを構成する各ブロックの書き込み時には、物理マシン間を跨る回数が少なくなる分だけファイルの書き込み効率が良くなり、また、１つの物理マシンに障害が発生したときに、あるファイルを構成する全ブロックのレプリカ１個が一気に失われる確率は高くなるものの、ファイルを構成する全ブロックの読み出し時には、ファイルごとに決定された特定の物理マシン配下の仮想マシンを当該ファイルの読み手とすることで、ファイルの読み出しが物理マシン内に閉じる分だけファイルの読み出し効率が良くなる。つまり、図１２に示した仮想マシンを用いたシステムでは、仮想マシンと物理マシンとの関係を管理することで、図３に示したシステム構成と同様のレプリカ配置に伴う効果が得られる。
【００９３】
なお、上述した処理は、図４に示したソフトウェア構成によってプログラムで実現される以外にも、専用のハードウェアで実現することも考えられ、また、その機能を実現するためのプログラムをコンピュータにて読取可能な記録媒体に記録し、この記録媒体に記録されたプログラムをコンピュータに読み込ませ、実行するものであっても良い。コンピュータにて読取可能な記録媒体とは、ＩＣカードやメモリカード、あるいは、フロッピーディスク（登録商標）、光磁気ディスク、ＤＶＤ、ＣＤ等の移設可能な記録媒体の他、コンピュータに内蔵されたＨＤＤ等を指す。この記録媒体に記録されたプログラムは、例えば、制御ブロックにて読み込まれ、制御ブロックの制御によって、上述したものと同様の処理が行われる。
【符号の説明】
【００９４】
１−１〜１−９    エッジスイッチ
２    コアスイッチ
３−１〜３−９    物理マシン
４    マシン
５    仮想マシン
１０    クライアント機能
１０ａ    個別機能
１０ｂ    共通機能
１１    クライアント処理部
１２    クライアントマシン情報記憶部
１３    ファイル生成処理部
１４    特定エッジスイッチ情報取得処理部
１５    ファイル書き込み処理部
１６    ファイル読み出し処理部
２０    マスタ機能
２１    ファイル情報更新処理部
２２    ファイル情報参照処理部
２３    ファイル・ブロック情報記憶部
２４    書き込み用ブロック情報取得処理部
２５    読み出し用ブロック情報取得処理部
２６    ブロック・レプリカ生成処理部
２７    ワーカマシン情報記憶部
３０    ワーカ機能
３１    ブロック生成処理部
３２    ブロック書き込み処理部
３３    ブロック読み出し処理部
３４    ブロック情報記憶部
１０２    スイッチ
【図１】
0005271392.tif 000002
【図２】
0005271392.tif 000003
【図３】
0005271392.tif 000004
【図４】
0005271392.tif 000005
【図５】
0005271392.tif 000006
【図６】
0005271392.tif 000007
【図７】
0005271392.tif 000008
【図８】
0005271392.tif 000009
【図９】
0005271392.tif 000010
【図１０】
0005271392.tif 000011
【図１１】
0005271392.tif 000012
【図１２】
0005271392.tif 000013
【図１３】
0005271392.tif 000014
【図１４】
0005271392.tif 000015
【図１５】
0005271392.tif 000016