説明

分散ファイル管理システム、分散ファイル配置方法及びプログラム

【課題】ファイルの耐障害性と書き込み効率や読み出し効率とのトレードオフを、アプリケーション開発者が選択でき、各ファイルの用途に応じてファイル単位に最適化する。
【解決手段】R個のレプリカのうちi個(0≦i≦R)のレプリカを配置する第1のマシンと、(R−i)個のレプリカのうちj個(0≦j≦(R−i))のレプリカを配置する第2のマシンとを、第1のマシンが、ブロック毎にファイルの書き込みを行うクライアントマシンを配下とするエッジスイッチ配下のマシンとなり、かつ、第2のマシンがファイル毎に特定のエッジスイッチの配下のマシンとなるように選択し、この選択された第1及び第2のマシンにレプリカを配置することによりファイルを書き込み、また、選択された第2のマシンを配下とする特定のエッジスイッチの配下のマシンをファイルの読み出しを行うクライアントマシンとしてファイルを読み出す。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ファイルを複数のブロックに分割して管理する分散ファイル管理システムに関し、特に、ブロックのレプリカを複数のマシンに分散配置する技術に関する。
【背景技術】
【0002】
耐障害性を備えた分散ファイル管理システムとして、Google File System(GFS)がある(例えば、非特許文献1参照)。このGFSでは、ファイルをチャンクと呼ばれる固定長(64MB)のブロックに分割するとともに、ブロックのレプリカを複数のマシンに分散させて管理する。
【0003】
図13は、ファイルとブロックとレプリカとの関係を説明するための図である。
【0004】
図13に示すように、例えば、ファイルを3つのブロックに分割するとともに、この3つのブロックそれぞれについて、レプリカを3台のマシンに分散させて管理する。この際、マシンレベルの障害だけでなく、マシン群を収容したエッジスイッチレベルの障害にも耐えるため、複数のレプリカを互いに異なるエッジスイッチ配下のマシンに配置する。これにより、1つのエッジスイッチに障害が発生しても、1つのブロックについて、失われるレプリカが1つのみとなり全てのレプリカが失われることが回避される。また、ブロックごとにレプリカの配置先を独立に決定することにより、1つのエッジスイッチに障害が発生しても、1つのファイルを構成する全てのブロックのレプリカ1個が一気に失われる確率も低くなる。
【先行技術文献】
【特許文献】
【0005】
【非特許文献1】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
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上述したようなGFSによるレプリカ配置方法においては、以下に記載するような問題点がある。
【0007】
ファイルの耐障害性は高いが、ファイルの書き込み効率や読み出し効率が悪い。
【0008】
図14は、GFSによるレプリカ配置方法におけるファイル書き込み時の問題点を説明するための図である。
【0009】
図14に示すように、GFSによるレプリカ配置方法においては、ファイルを分割したブロック毎の複数のレプリカを互いに異なるエッジスイッチ1−1〜1−9配下のマシン4に配置するため、ファイルを構成する各ブロックの書き込み時には、エッジスイッチ1−1〜1−9間を跨る回数が多く、それにより、ファイルの書き込み効率が悪くなってしまう。
【0010】
図15は、GFSによるレプリカ配置方法におけるファイル読み出し時の問題点を説明するための図である。
【0011】
図15に示すように、GFSによるレプリカ配置方法においては、ファイルを構成するブロック毎にレプリカの配置先のエッジスイッチ1−1〜1−9を独立に決定するため、ファイルを構成する全てのブロックの読み出し時には、エッジスイッチ1−1〜1−9間を跨る確率が高く、それにより、ファイルの読み出し効率が悪くなってしまう。
【0012】
そして、上述したようなGFSのレプリカ配置方法は、システムで固定であるため、ファイルの耐障害性をそれほど必要としない場合であっても、ファイルの書き込み効率や読み出し効率を犠牲にしなければならない。
【0013】
本発明は、上述したような従来の技術が有する問題点に鑑みてなされたものであって、ファイルの耐障害性とファイルの書き込み効率や読み出し効率とのトレードオフを、アプリケーション開発者が選択でき、各ファイルの用途に応じてファイル単位に最適化することができる、分散ファイル管理システム、分散ファイル配置方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0014】
上記目的を達成するために本発明は、
ファイルを複数のブロックに分割し、該複数のブロック毎にR個のレプリカを、複数のエッジスイッチ配下のマシンに配置する分散ファイル管理システムであって、
前記R個のレプリカのうちi個(0≦i≦R)のレプリカを配置する第1のマシンと、(R−i)個のレプリカのうちj個(0≦j≦(R−i))のレプリカを配置する第2のマシンとを、前記第1のマシンが、ブロック毎にファイルの書き込みを行うクライアントマシンを配下とするエッジスイッチ配下のマシンとなり、かつ、前記第2のマシンがファイル毎に特定のエッジスイッチの配下のマシンとなるように選択するブロック・レプリカ生成処理部と、
前記ブロック・レプリカ生成処理部にて選択された第1及び第2のマシンにレプリカを配置することによりファイルを書き込む処理を行うファイル書き込み処理部と、
前記ブロック・レプリカ生成処理部にて選択された第2のマシンを配下とする前記特定のエッジスイッチの配下のマシンをファイルの読み出しを行うクライアントマシンとしてファイルの読み出し処理を行うファイル読み出し処理部とを有する。
【0015】
また、ファイルを複数のブロックに分割し、該複数のブロック毎にR個のレプリカを、複数のエッジスイッチ配下のマシンに配置する分散ファイル配置方法であって、
前記R個のレプリカのうちi個(0≦i≦R)のレプリカを配置する第1のマシンと、(R−i)個のレプリカのうちj個(0≦j≦(R−i))のレプリカを配置する第2のマシンとを、前記第1のマシンが、ブロック毎にファイルの書き込みを行うクライアントマシンを配下とするエッジスイッチ配下のマシンとなり、かつ、前記第2のマシンがファイル毎に特定のエッジスイッチの配下のマシンとなるように選択するブロック・レプリカ生成処理と、
前記ブロック・レプリカ生成処理にて選択された第1及び第2のマシンにレプリカを配置することによりファイルを書き込む処理を行うファイル書き込み処理と、
前記ブロック・レプリカ生成処理にて選択された第2のマシンを配下とする前記特定のエッジスイッチの配下のマシンをファイルの読み出しを行うクライアントマシンとしてファイルの読み出し処理を行うファイル読み出し処理とを有する。
【0016】
また、ファイルを複数のブロックに分割し、該複数のブロック毎にR個のレプリカを、複数のエッジスイッチ配下のマシンに配置するためのコンピュータに、
前記R個のレプリカのうちi個(0≦i≦R)のレプリカを配置する第1のマシンと、(R−i)個のレプリカのうちj個(0≦j≦(R−i))のレプリカを配置する第2のマシンとを、前記第1のマシンが、ブロック毎にファイルの書き込みを行うクライアントマシンを配下とするエッジスイッチ配下のマシンとなり、かつ、前記第2のマシンがファイル毎に特定のエッジスイッチの配下のマシンとなるように選択するブロック・レプリカ生成手順と、
前記ブロック・レプリカ生成手順にて選択された第1及び第2のマシンにレプリカを配置することによりファイルを書き込む処理を行うファイル書き込み手順と、
前記ブロック・レプリカ生成手順にて選択された第2のマシンを配下とする前記特定のエッジスイッチの配下のマシンをファイルの読み出しを行うクライアントマシンとしてファイルの読み出し処理を行うファイル読み出し手順とを実行させるためのプログラム。
【発明の効果】
【0017】
本発明は、R個のレプリカのうちi個(0≦i≦R)のレプリカを配置する第1のマシンと、(R−i)個のレプリカのうちj個(0≦j≦(R−i))のレプリカを配置する第2のマシンとを、第1のマシンが、ブロック毎にファイルの書き込みを行うクライアントマシンを配下とするエッジスイッチ配下のマシンとなり、かつ、第2のマシンがファイル毎に特定のエッジスイッチの配下のマシンとなるように選択し、この選択された第1及び第2のマシンにレプリカを配置することによりファイルを書き込み、また、選択された第2のマシンを配下とする特定のエッジスイッチの配下のマシンをファイルの読み出しを行うクライアントマシンとしてファイルを読み出す構成としたため、ファイルの耐障害性とファイルの書き込み効率や読み出し効率とのトレードオフを、アプリケーション開発者が選択でき、各ファイルの用途に応じてファイル単位に最適化することができる。
【図面の簡単な説明】
【0018】
【図1】本発明の分散ファイル配置方法によるファイル書き込み時の効果を説明するための図である。
【図2】本発明の分散ファイル配置方法によるファイル読み出し時の効果を説明するための図である。
【図3】本発明の分散ファイル管理システムにて想定されるハードウェア構成の実施の一形態を示す図である。
【図4】本発明の分散ファイル管理システムにて想定されるソフトウェア構成の実施の一形態を示す図である。
【図5】図3及び図4に示した分散ファイル管理システムにおける分散ファイル配置方法を説明するための想定シナリオを示す図である。
【図6】図4に示したファイル・ブロック情報記憶部に登録されるファイル・ブロック情報(ファイル生成後)を示す図である。
【図7】図4に示したブロック・レプリカ生成処理部にて実行されるブロック・レプリカ生成処理を説明するためのフローチャートである。
【図8】図4に示したワーカマシン情報記憶部に登録されたワーカマシン情報の一例を示す図である。
【図9】図4に示したファイル・ブロック情報記憶部に登録されるファイル・ブロック情報(ブロック生成後)を示す図である。
【図10】図4に示したブロック情報記憶部に登録されるブロック情報を示す図である。
【図11】図4に示したクライアントマシン情報記憶部に登録されているクライアントマシン情報を示す図である。
【図12】本発明の分散ファイル管理システムにて想定されるハードウェア構成の他の実施の形態を示す図である。
【図13】ファイルとブロックとレプリカとの関係を説明するための図である。
【図14】GFSによるレプリカ配置方法におけるファイル書き込み時の問題点を説明するための図である。
【図15】GFSによるレプリカ配置方法におけるファイル読み出し時の問題点を説明するための図である。
【発明を実施するための形態】
【0019】
以下に、本発明の実施の形態について図面を参照して説明する。
【0020】
まず、本発明の概要について説明する。
【0021】
本発明では、ファイルを構成するブロックについて、下記{i,j}の組をレプリカ配置方法として定義する。
【0022】
R個のレプリカのうちi個(0≦i≦R)は、ファイルの書き手となるマシンを収容したローカルの1つのエッジスイッチ配下のマシン(第1のマシン)に配置する。
【0023】
また、(R−i)個のレプリカのうちj個(0≦j≦(R−i))は、各ファイルの生成時にシステムがファイル毎にランダムに決定する特定のエッジスイッチ配下のマシン(第2のマシン)にそれぞれ配置する。なお、(R−i−j)個のレプリカは、上記とは異なるエッジスイッチ配下のマシンにそれぞれ配置する。また、ファイル生成時にファイル毎に決定された特定のエッジスイッチ情報を取得する手段を提供するとともに、その特定のエッジスイッチ配下のマシンを当該ファイルの読み手とする。
【0024】
そして、上記のレプリカ配置方法{i,j}をファイル毎に保持し、当該のレプリカ配置方法{i,j}をファイル毎に適用する。
【0025】
以下に、上述した構成による効果について説明する。
【0026】
図1は、本発明の分散ファイル配置方法によるファイル書き込み時の効果を説明するための図であり、R=3,{i,j}={2,1}の場合を示す。
【0027】
図1に示したものにおいては、ファイルを構成する3つのブロックのそれぞれについて、3個のレプリカのうち2個のレプリカをファイルの書き手となるマシン4を収容したローカルのエッジスイッチ1−1,1−4,1−7配下のマシン4に配置し、1個のレプリカを特定のエッジスイッチ1−5配下のマシン4に配置している。
【0028】
このように、R個のレプリカのうちi個(0≦i≦R)を、ファイルの書き手となるマシン4を収容したローカルのエッジスイッチ1−1,1−4,1−7配下のマシン4に配置するとともに、(R−i)個のレプリカのうちj個(0≦j≦(R−i))を、各ファイルの生成時にシステムがファイル毎にランダムに決定する特定のエッジスイッチ1−5配下のマシン4にそれぞれ配置することにより、iを増やせば増やすほど、1つのエッジスイッチに障害が発生した場合に、あるブロックのレプリカが失われる最大個数は増えるが、ファイルを構成する各ブロックの書き込み時には、エッジスイッチ1−1〜1−9間を跨る回数が少なくなる分だけファイルの書き込み効率が良くなる。なお、iを0個から1個に増やすときには、失われるレプリカの最大個数は増えない。
【0029】
図2は、本発明の分散ファイル配置方法によるファイル読み出し時の効果を説明するための図であり、R=3,{i,j}={2,1}の場合を示す。
【0030】
図2に示したものにおいては、ファイルを構成する3つのブロックのそれぞれについて、3個のレプリカのうち2個のレプリカをエッジスイッチ1−1,1−4,1−7配下のマシン4に配置し、1個のレプリカを、後にファイルの読み手とされるエッジスイッチ1−5配下のマシン4に配置している。
【0031】
このように、R個のレプリカのうちi個(0≦i≦R)を、エッジスイッチ1−1,1−4,1−7配下のマシン4に配置するとともに、(R−i)個のレプリカのうちj個(0≦j≦(R−i))を、各ファイルの生成時にシステムがファイル毎にランダムに決定する特定のエッジスイッチ1−5配下のマシン4にそれぞれ配置し、その後、このマシン4を当該ファイルの読み手とすることで、jを増やせば増やすほど、1つのエッジスイッチに障害が発生したときに、あるファイルを構成する全ブロックのレプリカ1個が一気に失われる確率は高くなるが、ファイルの読み出しがエッジスイッチ内に閉じる分だけファイルの読み出し効率が良くなる。なお、jを2個以上に増やすときには、エッジスイッチ内に閉じたファイルの読み出しを2個以上に分散できる分だけファイルの読み出し効率が良くなる。
【0032】
図3は、本発明の分散ファイル管理システムにて想定されるハードウェア構成の実施の一形態を示す図である。
【0033】
本形態は図3に示すように、複数のマシン4群をエッジスイッチ1−1〜1−9が収容し、複数のエッジスイッチ1−1〜1−9群をコアスイッチ2が収容する。各マシン4のIPアドレスは、ある一定のマスク(マシングループマスクと呼ぶ)を適用することで、同一のエッジスイッチ配下に収容されているか否かがわかるように付与する。本形態では、例えば、マシン「192.168.1.1」とマシン「192.168.1.10」にマシングループマスク「255.255.255.0」を適用すると同一のマシングループ「192.168.1.*」になるので、マシン「192.168.1.1」とマシン「192.168.1.10」は同一のエッジスイッチ配下に収容されていることがわかる。
【0034】
図4は、本発明の分散ファイル管理システムにて想定されるソフトウェア構成の実施の一形態を示す図である。
【0035】
本形態は図4に示すように、クライアント機能10と、マスタ機能20と、ワーカ機能30とから構成されており、さらにクライアント機能10は、共通機能10aと、個別機能10bとから構成されている。マスタ機能20は、ある1台のマシン上だけで動作し、クライアント機能10とワーカ機能30は、複数台のマシン上で動作する。なお、これらクライアント機能10とマスタ機能20とワーカ機能30とは、同一のマシン上に共存させても構わない。
【0036】
クライアント機能10の個別機能10aは、クライアント処理部11と、クライアントマシン情報記憶部12とから構成されている。また、クライアント機能10の共通機能10bは、ファイル生成処理部13と、特定エッジスイッチ情報取得処理部14と、ファイル書き込み処理部15と、ファイル読み出し処理部16とから構成されている。
【0037】
マスタ機能20は、ファイル情報更新処理部21と、ファイル情報参照処理部22と、ファイル・ブロック情報記憶部23と、書き込み用ブロック情報取得処理部24と、読み出し用ブロック情報取得処理部25と、ブロック・レプリカ生成処理部26と、ワーカマシン情報記憶部20とから構成されている。
【0038】
ワーカ機能30は、ブロック生成処理部31と、ブロック書き込み処理部32と、ブロック読み出し処理部33と、ブロック情報記憶部34とから構成されている。
【0039】
以下に、上記のように構成された分散ファイル管理システムにおける分散ファイル配置方法について説明する。
【0040】
図5は、図3及び図4に示した分散ファイル管理システムにおける分散ファイル配置方法を説明するための想定シナリオを示す図である。
【0041】
図5に示す想定シナリオに基づいて、(1)ファイル生成処理、(2)ファイル書き込み処理、(3)特定エッジスイッチ情報取得処理、(4)ファイル読み出し処理に分けて説明する。特に、本発明のポイントであるブロック・レプリカ生成処理に関わるアルゴリズムやデータ構造について詳細に説明する。
【0042】
(1)ファイル生成処理
まず、この分散ファイル管理システムが提供するAPIを利用して、アプリケーション開発者が入力する値をプログラミングすることにより、クライアント処理部11が、生成するファイル名とレプリカ数とレプリカ配置方法とをファイル生成処理部13に入力する。
【0043】
すると、ファイル生成処理部13は、入力されたファイル名とレプリカ数とレプリカ配置方法とをファイル情報更新処理部21に送信する。
【0044】
ファイル情報更新処理部21は、ファイル生成処理部13から送信されてきたファイル名とレプリカ数とレプリカ配置方法とを受信し、これらファイル名とレプリカ数とレプリカ配置方法とをファイル・ブロック情報記憶部23に登録する。
【0045】
図6は、図4に示したファイル・ブロック情報記憶部23に登録されるファイル・ブロック情報(ファイル生成後)を示す図である。
【0046】
図6に示すように、ファイル生成後のファイル・ブロック情報記憶部23には、ファイル名とレプリカ数とレプリカ配置方法とが対応づけて登録されており、本形態においては、生成されたファイル名が「ファイル1」であり、当該ファイルを構成するブロックのレプリカ数は「3」、レプリカ配置方法は「{2,1}」となっている。
【0047】
(2)ファイル書き込み処理
まず、上記同様にして、クライアント処理部11が、書き込むファイル名と書き込みオフセットと書き込みサイズと書き込みデータとをファイル書き込み処理部15に入力する。
【0048】
すると、ファイル書き込み処理部15は、入力された書き込みオフセットと書き込みサイズとから書き込み対象となるブロックのインデックス(ファイルの先頭から何番目のブロックに書き込むか)を算出して、入力されたファイル名とともに、書き込み用ブロック情報取得処理部24に送信する。
【0049】
書き込み用ブロック情報取得処理部24は、ファイル・ブロック情報記憶部23を参照して、受信したファイル名とインデックスが示すブロックが未生成であれば、ブロック・レプリカ生成処理部26に、当該ブロックの生成を依頼し、ブロック・レプリカ生成処理部26にて生成されたブロックIDと当該ブロックのレプリカが配置されたワーカマシン情報(ワーカ機能が動作するマシン情報:IPアドレス)をファイル書き込み処理部15に返信する。また、受信したファイル名とインデックスが示すブロックが生成済みであれば、生成済みのブロックIDと当該ブロックのレプリカが配置されたワーカマシン情報をファイル書き込み処理部15に返信する。
【0050】
ここで、ブロック・レプリカ生成処理部26にて実行されるブロック・レプリカ生成処理について詳細に説明する。
【0051】
図7は、図4に示したブロック・レプリカ生成処理部26にて実行されるブロック・レプリカ生成処理を説明するためのフローチャートである。
【0052】
まず、ブロック・レプリカ生成処理部26は、ファイル・ブロック情報記憶部23を参照して、当該ファイル名のレプリカ数をR、レプリカ配置方法を{i,j}として取得する(ステップ1)。
【0053】
次に、ブロック・レプリカ生成処理部26は、当該クライアントマシンのIPアドレスにマシングループマスクを適用して、クライアントマシンが属するクライアントマシングループを取得する(ステップ2)。
【0054】
次に、ブロック・レプリカ生成処理部26は、ワーカマシン情報記憶部27に登録されているワーカマシン情報に記載された、全てのワーカマシンのIPアドレスにマシングループマスクを適用して、全てのワーカマシンが属するワーカマシングループの集合を取得する(ステップ3)。
【0055】
図8は、図4に示したワーカマシン情報記憶部27に登録されたワーカマシン情報の一例を示す図である。
【0056】
図8に示すように、ワーカマシン情報記憶部27には、ワーカ機能30が動作するマシン情報が登録されており、ブロック・レプリカ生成処理部26は、このマシン情報を用いて、全てのワーカマシンが属するワーカマシングループの集合を取得する。
【0057】
次に、ブロック・レプリカ生成処理部26は、ステップ3で取得したワーカマシングループの集合の中からステップ2で取得したクライアントマシングループと同一のワーカマシングループを選択し、そのワーカマシングループに属するワーカマシンの中からi台を選択する(ステップ4)。なお、ワーカマシンの選択にあたっては、クライアントマシンと同一のワーカマシンが存在すればそれを最優先で選択し、クライアントマシンと同一のワーカマシンが存在しなければランダムに選択する。
【0058】
次に、ブロック・レプリカ生成処理部26は、ファイル・ブロック情報記憶部23を参照して、当該ファイル名の特定エッジスイッチ情報が登録されているか否かを調査する(ステップ5)。
【0059】
そして、ステップ5の結果、当該ファイル名の特定エッジスイッチ情報が登録されていない場合は、ブロック・レプリカ生成処理部26は、ステップ3で取得したワーカマシングループの集合の中からステップ2で取得したクライアントマシングループと異なるワーカマシングループをランダムに(R−i)個選択し、(R−i)個のワーカマシングループに属する複数のワーカマシンの中から、ワーカマシングループそれぞれ1台のワーカマシンをランダムに選択する(ステップ6)。
【0060】
次に、ブロック・レプリカ生成処理部26は、ステップ6で選択した(R−i)個のワーカマシングループの中からj個をランダムに選択し、j個のワーカマシングループを当該ファイル名の特定エッジスイッチ情報としてファイル・ブロック情報記憶部23に登録する(ステップ7)。
【0061】
また、ステップ5の結果、当該ファイル名の特定エッジスイッチ情報が登録されている場合は、ブロック・レプリカ生成処理部26は、ファイル・ブロック情報記憶部23を参照して、当該ファイル名に対応する特定エッジスイッチ情報として登録されたj個のワーカマシングループを取得し、j個のワーカマシングループに属する複数のワーカマシン(ステップ4で選択したi台のワーカマシンを除く)の中から、ワーカマシングループそれぞれ1台のワーカマシンをランダムに選択する(ステップ8)。
【0062】
次に、ブロック・レプリカ生成処理部26は、ステップ3で取得したワーカマシングループの集合の中から、ステップ2で取得したクライアントマシングループともステップ8で取得したj個のワーカマシングループとも異なるワーカマシングループをランダムに(R−i−j)個選択し、(R−i−j)個のワーカマシングループに属する複数のワーカマシンの中から、ワーカマシングループそれぞれ1台のワーカマシンをランダムに選択する(ステップ9)。
【0063】
その後、ブロック・レプリカ生成処理部26は、ステップ4,6、またはステップ4,8,9で選択した合計R個のワーカマシン上のブロック生成処理部31に対し、当該ファイル名と当該インデックスに対応するブロックの生成をブロックID指定で依頼し、当該ブロックIDと選択されたR個のワーカマシン情報をファイル・ブロック情報記憶部23に登録する(ステップ10)。
【0064】
図9は、図4に示したファイル・ブロック情報記憶部23に登録されるファイル・ブロック情報(ブロック生成後)を示す図である。
【0065】
図9に示すように、ブロック生成後のファイル・ブロック情報記憶部23には、ファイル名とレプリカ数とレプリカ配置方法と特定エッジスイッチ情報とブロックIDとワーカマシン情報とが対応づけて登録されており、本形態においては、ファイル名「ファイル1」を構成するブロックID「ブロック1」の書き手クライアントマシンが「192.168.1.10」、同様に「ブロック2」の書き手クライアントマシンが「192.168.4.10」、「ブロック3」の書き手クライアントマシンが「192.168.7.10」となっている。各ブロックのレプリカ「3」個のうち「2」個は、各書き手クライアントマシンと同一のローカルのマシングループに属するワーカマシン(書き手クライアントマシンと同一のワーカマシンを含む)に配置されていることがわかる。また、各ブロックのレプリカ「3」個のうち「1」個は、特定のマシングループ「192.168.5.*」に属するワーカマシンに配置されていることがわかる。なお、各ワーカマシン上のブロック情報記憶部34には、ブロックIDとブロック実体の対応関係がブロック情報としてブロック生成処理部31により登録される。
【0066】
図10は、図4に示したブロック情報記憶部34に登録されるブロック情報を示す図である。
【0067】
図10に示すように、ワーカマシン上のブロック情報記憶部34には、ブロックIDとブロック実体の対応関係がブロック情報として登録されている。なお、ブロック実体とは、ブロックIDに対応するワーカマシン上の仮想的な記憶領域へのポインタであり、仮想的な記憶領域は、物理的にはディスクまたはメモリにマッピングされる。
【0068】
その後、ファイル書き込み処理部15は、受信したワーカマシン情報に記載された全てのワーカマシン上のブロック書き込み処理部32に対して、受信したブロックIDと当該ブロック内での書き込みオフセットと書き込みサイズと書き込みデータとを送信する。
【0069】
そして、ブロック書き込み処理部32は、ブロック情報記憶部34を参照して、受信したブロックIDのブロック実体について、受信した書き込みオフセットから、受信した書き込みサイズ分だけ受信した書き込みデータを書き込む。
【0070】
なお、複数のブロックに跨るファイル書き込みの場合は、書き込み対象となるブロックの数分だけ上記の処理を繰り返す。
【0071】
(3)特定エッジスイッチ情報取得処理
まず、上記同様にして、クライアント処理部11が、取得する特定エッジスイッチ情報に対応するファイル名を特定エッジスイッチ情報取得処理部14に入力する。
【0072】
すると、特定エッジスイッチ情報取得処理部14は、入力されたファイル名をファイル情報参照処理部22に送信する。
【0073】
ファイル情報参照処理部22は、ファイル・ブロック情報記憶部23を参照して、受信したファイル名に対応する特定エッジスイッチ情報を取得し、特定エッジスイッチ情報取得処理部14に返信する。なお、図9に示した例では、特定エッジスイッチ情報を取得するファイル名が「ファイル1」の場合は、特定エッジスイッチ情報としてマシングループ「192.168.5.*」が返信されることになる。
【0074】
特定エッジスイッチ情報処理部14は、受信した特定エッジスイッチ情報をクライアント処理部11に出力する。
【0075】
(4)ファイル読み出し処理
クライアント処理部11は、読み出すファイル名に対応する特定エッジスイッチ情報として出力されたマシングループのいずれにもクライアントマシンが属さない場合、後述するように、読み出すファイル名に対応する特定エッジスイッチ情報として出力されたマシングループのいずれかに属するクライアントマシンを1台選択し、当該選択されたクライアントマシン上のクライアント処理部11にファイル読み出しを指示する。
【0076】
ここで、マシングループのいずれかに属するクライアントマシンの選択方法について説明する。
【0077】
図11は、図4に示したクライアントマシン情報記憶部12に登録されているクライアントマシン情報を示す図である。
【0078】
クライアント処理部11は、図11に示すようなクライアントマシン情報に記載された、全てのクライアントマシン情報であるIPアドレスにマシングループマスクを適用して、全てのクライアントマシンに対するクライアントマシングループの集合を取得する。そして、そのクライアントマシングループの集合の中から、読み出すファイル名に対応する特定エッジスイッチ情報として出力されたマシングループのいずれかと同一のクライアントマシングループをランダムに1個選択し、さらに選択した当該クライアントマシングループに属するクライアントマシンの中から1台をランダムに選択する。
【0079】
読み出すファイル名「ファイル1」に対応する特定エッジスイッチ情報が「192.168.5.*」である場合、当該マシングループ「192.168.5.*」に属するクライアントマシンをランダムに1台選択することになる。図5に示したシナリオでは、「192.168.5.10」がクライアントマシンとして選択されている。
【0080】
ファイル読み出しを指示されたクライアント処理部11は、読み出すファイル名と読み出しオフセットと読み出しサイズをファイル読み出し処理部16に入力する。
【0081】
すると、ファイル読み出し処理部16は、入力された読み出しオフセットと読み出しサイズから読み出し対象となるブロックのインデックス(ファイルの先頭から何番目のブロックを読み出すか)を算出して、入力されたファイル名とともに、読み出し用ブロック情報取得処理部25に送信する。
【0082】
読み出し用ブロック情報取得処理部25は、受信したファイル名とインデックスに基づいて、ファイル・ブロック情報記憶部23を参照して、受信したファイル名とインデックスが示すブロックが生成済みの場合に限り、生成済みのブロックIDと当該ブロックのレプリカが配置されたワーカマシン情報を全て取得し、ファイル読み出し処理部16に返信する。
【0083】
ファイル読み出し処理部16は、受信した全てのワーカマシン情報が示す全てのワーカマシンの中から、後述する方法で1台選択し、選択したワーカマシン上のブロック読み出し処理部33に対して、受信したブロックIDと当該ブロック内での読み出しオフセットと読み出しサイズを送信する。
【0084】
なお、ワーカマシンの選択にあたっては、ファイルの読み出しを行うクライアントマシンとネットワーク的に最も近い(IPアドレスの排他的論理和が最も小さい)ワーカマシンを選択する。その結果、クライアントマシンと同一のワーカマシン、クライアントマシンと同一のマシングループに属するワーカマシン、クライアントマシンと異なるマシングループに属するワーカマシンの順に、優先的に選択されることになる。
【0085】
図5に示したシナリオでは、クライアントマシンが「192.168.5.10」であるため、「ファイル1」を構成する「ブロック1」の読み出し先ワーカマシンとして「192.168.5.1」、「ブロック2」の読み出し先ワーカマシンとして「192.168.5.10」、「ブロック3」の読み出し先ワーカマシンとして「192.168.5.20」が選択されている。
【0086】
ブロック読み出し処理部33は、ブロック情報記憶部34を参照して、受信したブロックIDのブロック実体を受信した読み出しオフセットから受信した読み出しサイズ分だけ読み出して、読み出したデータをファイル読み出し処理部16に返信する。
【0087】
なお、複数のブロックに跨るファイル読み出しの場合は、読み出し対象となるブロックの数分だけ上述した処理を繰り返す。
【0088】
ファイル読み出し処理部16は、受信した読み出しデータをクライアント処理部11に出力する。
【0089】
なお、上述した実施の形態においては、図3に示すようなコアスイッチ2配下に複数台のエッジスイッチ1−1〜1−9が存在し、各エッジスイッチ1−1〜1−9に複数のマシン4が接続されたシステムでのレプリカの配置の方法について説明したが、本発明を仮想マシン環境に適用することも考えられる。
【0090】
図12は、本発明の分散ファイル管理システムにて想定されるハードウェア構成の他の実施の形態を示す図である。
【0091】
図12に示すように、図3に示したコアスイッチ2をスイッチ102に置き換え、エッジスイッチ1−1〜1−9を物理マシン3−1〜3−9に置き換え、各物理マシン3−1〜3−9に接続するマシン4を仮想マシン5に置き換えることで、仮想マシンシステムでの使用形態とすることができる。
【0092】
このように、特定エッジスイッチの代わりに特定物理マシンとして管理を行うことで、1つの物理マシンに障害が発生したときに、あるブロックのレプリカが失われる最大個数は増えるものの、ファイルを構成する各ブロックの書き込み時には、物理マシン間を跨る回数が少なくなる分だけファイルの書き込み効率が良くなり、また、1つの物理マシンに障害が発生したときに、あるファイルを構成する全ブロックのレプリカ1個が一気に失われる確率は高くなるものの、ファイルを構成する全ブロックの読み出し時には、ファイルごとに決定された特定の物理マシン配下の仮想マシンを当該ファイルの読み手とすることで、ファイルの読み出しが物理マシン内に閉じる分だけファイルの読み出し効率が良くなる。つまり、図12に示した仮想マシンを用いたシステムでは、仮想マシンと物理マシンとの関係を管理することで、図3に示したシステム構成と同様のレプリカ配置に伴う効果が得られる。
【0093】
なお、上述した処理は、図4に示したソフトウェア構成によってプログラムで実現される以外にも、専用のハードウェアで実現することも考えられ、また、その機能を実現するためのプログラムをコンピュータにて読取可能な記録媒体に記録し、この記録媒体に記録されたプログラムをコンピュータに読み込ませ、実行するものであっても良い。コンピュータにて読取可能な記録媒体とは、ICカードやメモリカード、あるいは、フロッピーディスク(登録商標)、光磁気ディスク、DVD、CD等の移設可能な記録媒体の他、コンピュータに内蔵されたHDD等を指す。この記録媒体に記録されたプログラムは、例えば、制御ブロックにて読み込まれ、制御ブロックの制御によって、上述したものと同様の処理が行われる。
【符号の説明】
【0094】
1−1〜1−9 エッジスイッチ
2 コアスイッチ
3−1〜3−9 物理マシン
4 マシン
5 仮想マシン
10 クライアント機能
10a 個別機能
10b 共通機能
11 クライアント処理部
12 クライアントマシン情報記憶部
13 ファイル生成処理部
14 特定エッジスイッチ情報取得処理部
15 ファイル書き込み処理部
16 ファイル読み出し処理部
20 マスタ機能
21 ファイル情報更新処理部
22 ファイル情報参照処理部
23 ファイル・ブロック情報記憶部
24 書き込み用ブロック情報取得処理部
25 読み出し用ブロック情報取得処理部
26 ブロック・レプリカ生成処理部
27 ワーカマシン情報記憶部
30 ワーカ機能
31 ブロック生成処理部
32 ブロック書き込み処理部
33 ブロック読み出し処理部
34 ブロック情報記憶部
102 スイッチ

【特許請求の範囲】
【請求項1】
ファイルを複数のブロックに分割し、該複数のブロック毎にR個のレプリカを、複数のエッジスイッチ配下のマシンに配置する分散ファイル管理システムであって、
前記R個のレプリカのうちi個(0≦i≦R)のレプリカを配置する第1のマシンと、(R−i)個のレプリカのうちj個(0≦j≦(R−i))のレプリカを配置する第2のマシンとを、前記第1のマシンが、ブロック毎にファイルの書き込みを行うクライアントマシンを配下とするエッジスイッチ配下のマシンとなり、かつ、前記第2のマシンがファイル毎に特定のエッジスイッチの配下のマシンとなるように選択するブロック・レプリカ生成処理部と、
前記ブロック・レプリカ生成処理部にて選択された第1及び第2のマシンにレプリカを配置することによりファイルを書き込む処理を行うファイル書き込み処理部と、
前記ブロック・レプリカ生成処理部にて選択された第2のマシンを配下とする前記特定のエッジスイッチの配下のマシンをファイルの読み出しを行うクライアントマシンとしてファイルの読み出し処理を行うファイル読み出し処理部とを有する分散ファイル管理システム。
【請求項2】
ファイルを複数のブロックに分割し、該複数のブロック毎にR個のレプリカを、複数のエッジスイッチ配下のマシンに配置する分散ファイル配置方法であって、
前記R個のレプリカのうちi個(0≦i≦R)のレプリカを配置する第1のマシンと、(R−i)個のレプリカのうちj個(0≦j≦(R−i))のレプリカを配置する第2のマシンとを、前記第1のマシンが、ブロック毎にファイルの書き込みを行うクライアントマシンを配下とするエッジスイッチ配下のマシンとなり、かつ、前記第2のマシンがファイル毎に特定のエッジスイッチの配下のマシンとなるように選択するブロック・レプリカ生成処理と、
前記ブロック・レプリカ生成処理にて選択された第1及び第2のマシンにレプリカを配置することによりファイルを書き込む処理を行うファイル書き込み処理と、
前記ブロック・レプリカ生成処理にて選択された第2のマシンを配下とする前記特定のエッジスイッチの配下のマシンをファイルの読み出しを行うクライアントマシンとしてファイルの読み出し処理を行うファイル読み出し処理とを有する分散ファイル配置方法。
【請求項3】
ファイルを複数のブロックに分割し、該複数のブロック毎にR個のレプリカを、複数のエッジスイッチ配下のマシンに配置するためのコンピュータに、
前記R個のレプリカのうちi個(0≦i≦R)のレプリカを配置する第1のマシンと、(R−i)個のレプリカのうちj個(0≦j≦(R−i))のレプリカを配置する第2のマシンとを、前記第1のマシンが、ブロック毎にファイルの書き込みを行うクライアントマシンを配下とするエッジスイッチ配下のマシンとなり、かつ、前記第2のマシンがファイル毎に特定のエッジスイッチの配下のマシンとなるように選択するブロック・レプリカ生成手順と、
前記ブロック・レプリカ生成手順にて選択された第1及び第2のマシンにレプリカを配置することによりファイルを書き込む処理を行うファイル書き込み手順と、
前記ブロック・レプリカ生成手順にて選択された第2のマシンを配下とする前記特定のエッジスイッチの配下のマシンをファイルの読み出しを行うクライアントマシンとしてファイルの読み出し処理を行うファイル読み出し手順とを実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate