(57)【特許請求の範囲】
【請求項１】
ネットワークに接続された複数の計算機ノードに夫々設けられる記憶手段と、
第１の計算機ノードが有する前記記憶手段にキャッシュ領域を設定し、前記ネットワークを介して前記第１の計算機ノード以外の他の計算機ノードが有する記憶手段に設定されているマスター領域からマスターファイルを読出して、読出した前記マスターファイルをキャッシュするキャッシュ手段と、
前記第１の計算機ノードに設定された前記キャッシュ領域中の更新されたデータ部分で前記他の計算機ノードに設定された前記マスター領域のマスターファイルを更新する転送手段と、
前記ネットワークに接続された複数の計算機ノードの各記憶手段に前記マスター領域に記憶されているマスターファイルと同一内容の複製ファイルを格納する複製領域を設定するものであって、既存の複製領域が前記第１の計算機ノード以外に設定されている場合でも、前記第１の計算機ノードに設定された前記キャッシュ領域を前記複製領域に設定する多重化手段とを具備したことを特徴とする分散ファイルシステム。
【請求項２】
前記転送手段は、転送するファイルを所定のデータ単位に分割して転送し、
前記多重化手段は、前記所定のデータ単位で複製領域を設定することを特徴とする請求項１に記載の分散ファイルシステム。
【請求項３】
前記多重化手段は、複製領域をデータ単位で設定する場合には、前記転送手段によって転送されたデータ部分については前記マスター領域と前記キャッシュ領域とでデータの多重化を行い、前記転送手段によって転送されていないデータ部分については前記既存の複製領域とマスター領域とでデータの多重化を行うことを特徴とする請求項２に記載の分散ファイルシステム。
【請求項４】
前記多重化手段は、キャッシュ手段が設定したキャッシュ領域を順次複製領域に設定することにより、マスター領域と複数の複製領域とでファイル全体のデータの多重化を行うことを特徴とする請求項２に記載の分散ファイルシステム。
【請求項５】
前記多重化手段は、前記転送手段によって転送されたデータ部分については前記マスター領域と前記キャッシュ領域とでデータの多重化を行い、前記転送手段によって転送されていないデータ部分については前記既存の複製領域とマスター領域とでデータの多重化を行った後、前記転送手段によって転送されたデータ部分を前記既存の複製領域に転送するか又は前記転送手段によって転送されていないデータ部分を前記既存の複製領域から前記キャッシュ領域に転送することにより前記複製領域を統合することを特徴とする請求項３に記載の分散ファイルシステム。
【請求項６】
前記多重化手段は、前記転送手段によって転送されているデータ部分と転送されていないデータ部分とのデータ量を比較して、データ転送量が少なくなるように前記複製領域の統合を行うことを特徴とする請求項５に記載の分散ファイルシステム。
【請求項７】
ネットワークに接続された複数の計算機ノードに夫々設けられた記憶手段にアクセスする処理と、
第１の計算機ノードが有する前記記憶手段にキャッシュ領域を設定し、前記ネットワークを介して前記第１の計算機ノード以外の他の計算機ノードが有する記憶手段に設定されているマスター領域からマスターファイルを読出して、読出した前記マスターファイルをキャッシュする処理と、
前記第１の計算機ノードに設定された前記キャッシュ領域中の更新されたデータ部分で前記マスター領域のマスターファイルを更新する処理と、
前記ネットワークに接続された複数の計算機ノードの各記憶手段に前記マスター領域に記憶されているマスターファイルと同一内容の複製ファイルを格納する複製領域を設定するものであって、既存の複製領域が前記第１の計算機ノード以外に設定されている場合でも、前記第１の計算機ノードに設定された前記キャッシュ領域を前記複製領域に設定する多重化処理とを具備したことを特徴とする分散ファイルシステムのデータ多重化方法。
【請求項８】
ネットワークに接続された複数の計算機ノードに夫々設けられた記憶手段のうちの所定の記憶手段に設定されたマスター領域からマスターファイルを読出し、前記マスター領域が設定された計算機ノード以外の第１の計算機ノードが有する前記記憶手段に設定したキャッシュ領域に読出した前記マスターファイルをキャッシュするステップと、
前記第１の計算機ノードに設定された前記キャッシュ領域中の更新されたデータ部分で前記第１の計算機ノード以外の他の計算機ノードに設定された前記マスター領域のマスターファイルを更新する転送ステップと、
前記ネットワークに接続された複数の計算機ノードの各記憶手段に前記マスター領域に記憶されているマスターファイルと同一内容の複製ファイルを格納する複製領域を設定するものであって、既存の複製領域が前記第１の計算機ノード以外に設定されている場合でも、前記第１の計算機ノードに設定された前記キャッシュ領域を前記複製領域に設定する多重化ステップとを具備したことを特徴とする分散ファイルシステムのデータ多重化方法。
【請求項９】
前記多重化ステップは、１ファイルを分割した所定のデータ単位で複製領域を設定可能であり、前記転送ステップにおいて転送されたデータ部分については前記マスター領域と前記キャッシュ領域とでデータの多重化を行い、前記転送ステップにおいて転送されていないデータ部分については前記既存の複製領域とマスター領域とでデータの多重化を行うことを特徴とする請求項８に記載の分散ファイルシステムのデータ多重化方法。
【請求項１０】
前記多重化ステップは、前記転送ステップにおいて転送されたデータ部分については前記マスター領域と前記キャッシュ領域とでデータの多重化を行い、前記転送ステップにおいて転送されていないデータ部分については前記既存の複製領域とマスター領域とでデータの多重化を行った後、前記転送ステップにおいて転送されたデータ部分を前記既存の複製領域に転送するか又は前記転送ステップにおいて転送されていないデータ部分を前記既存の複製領域から前記キャッシュ領域に転送することにより前記複製領域を統合することを特徴とする請求項９に記載の分散ファイルシステムのデータ多重化方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数の計算機ノードで構成される計算機クラスタシステムに好適な分散ファイルシステム及びそのデータ多重化方法に関する。
【０００２】
【従来の技術】
従来、複数台のコンピュータを連携して使用して、１台のコンピュータと同様の使用を可能にする計算機クラスタシステムが採用されることがある。計算機クラスタシステムは、比較的安価なコンピュータを用いた場合でも、高度な業務処理が可能であり、しかも、システムの拡張が極めて容易である。
【０００３】
計算機クラスタシステムでは、複数の独立した計算機ノードを組み合わせてプログラムを動作させる。この場合において、各コンピュータで扱うファイルを格納する手段としては、大きく分類して、共有ディスクを使用する場合としない場合の２種類がある。
【０００４】
共有ディスクを備えない計算機クラスタシステムでは、ファイルを計算機ノード間で分散して保持する。このようなシステムにおいて、プロセスがどの計算機ノードで動作していても、全てのファイルへのアクセスを同様に可能とするために、分散ファイルシステムが用いられる。
【０００５】
分散ファイルシステムを使用すると、全ての計算機ノードの全プロセスが、クラスタシステム内の計算機ノードに分散して格納されているファイルを一意に指定することができる。分散ファイルシステムの代表例としては、ＡＦＳ（Ａｎｄｒｅｗ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）がある。分散ファイルシステムは、ファイルの実体であるマスターファイルをシステム内のいずれかの計算機ノード上の記憶装置に格納し、ファイルがどの計算機ノードに格納されているかという情報をシステム内のデータベースに登録する。ファイルを使用する場合には、システム内のデータベースからマスターファイルが実際に格納されている計算機ノードを検索し、この検索結果を利用することで、いずれの計算機ノードにおいてもマスターファイルの読み出しを可能にしている。
【０００６】
なお、分散ファイルシステムでは、ファイルアクセスの高速化のために、プロセスが動作している計算機ノードに作業用のキャッシュファイルを作成し、ファイル中の参照したことがある領域をキャッシュして、以降の読み出しをキャッシュファイルから行うようにする手法が採用されることがある。キャッシュファイルを用いたこのような高速化処理においては、ファイルの内容の更新はキャッシュファイルに対して行い、一定のタイミングでキャッシュファイルに対する更新をマスターファイルに対してまとめて行うようになっている。
【０００７】
ところで、計算機クラスタシステムには、大きく２つに分けて、科学技術計算等の高速化を目的とした計算・解析クラスタシステムと、システムの高信頼化を目的とした高信頼クラスタシステムとがある。
【０００８】
高信頼計算機クラスタシステムは、計算機ノードを複数にすることにより、システムの冗長度を向上させるものである。即ち、システムを構成する計算機ノードの一部が故障等の理由によるシステムダウンで使用不能となった場合でも、計算機クラスタシステムを構成する他の計算機ノードがシステムダウンした計算機ノードの代替となることで、システム全体を停止させることなく動作の継続を可能にする。
【０００９】
特に、計算機システムで記憶装置として用いられることが多いハードディスクは、機械的に稼動する部品等を用いていることから、計算機システムを構成する他の部品と比べて故障する可能性が高い。しかも、一般的な情報システムにおいては、システム内の情報データ、つまりファイルの内容は極めて重要で、これを失うことは避けなくてはならない。
【００１０】
一般的には、システム内のファイルを保護するために、ディスクアレイを利用したＲｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｃｖｅ  Ｄｉｓｋｓ（ＲＡＩＤ）という方式が多く採用されている。ＲＡＩＤはディスクアレイの各ディスクに重複してデータを記録するものである。
【００１１】
これに対し、分散ファイルシステムを用いた計算機クラスタシステムにおいては、ファイルの実体であるマスターファイルと同一の内容を持った複製ファイルを作成し、マスターファイルが格納されている計算機ノードとは別の計算機ノードに複製ファイルを格納する多重化が採用される。このような高信頼型の分散ファイルシステムでは、ファイルに対する更新は、マスターファイルに行うと同時に逐一複製ファイルに対しても行い、ファイルの多重度を維持する。この方法によれば、マスターファイル及び複製ファイルのいずれか一方が壊れた場合でも、ファイルの内容を他方から復元することができる。
【００１２】
このように、高信頼計算機クラスタシステムは、分散ファイルシステムにおいてデータを多重記録することにより、データ保存の高い信頼性を確保している。なお、このような分散ファイルシステムの一例としては、特開２００１−１６００３９号公報等に記載されたものがある。
【００１３】
【発明が解決しようとする課題】
ところで、計算機システムにおいて、ファイルアクセスは、頻繁に発生する動作であり、システム全体の性能のボトルネックになりやすい項目である。一般的に、計算機ノード間の通信帯域は単一の計算機内のデバイス間の通信帯域に比べて狭い。従って、計算機ノード間の通信を伴う処理は、計算機ノード内で閉じた処理に比べて極めて低速である。このため、ファイルアクセスのたびに発生する計算機ノード間のデータ通信量の多さはシステム全体の性能を低下させる要因となる。
【００１４】
ところが、高信頼計算機クラスタシステムにおいては、高信頼化した分散ファイルシステムを用いて、ファイルの冗長度を維持するために、ファイルに対する更新をマスターファイルと複製ファイルの双方に対して行う必要があり、計算機ノード間のデータ通信量は、マスターファイルに対してのみ更新を行う高信頼化されていない分散ファイルシステムに比較して、２倍以上の量になってしまい、性能が著しく低下するという問題点があった。
【００１５】
本発明は、ファイルの冗長度を損なうことなく性能を向上させた高信頼計算機クラスタシステムを可能にすることができる分散ファイルシステム及び分散ファイルシステムのデータ多重化方法を提供することを目的とする。
【００１６】
【課題を解決するための手段】
本発明に係る分散ファイルシステムは、ネットワークに接続された複数の計算機ノードに夫々設けられる記憶手段と、第１の計算機ノードが有する前記記憶手段にキャッシュ領域を設定し、前記ネットワークを介して前記第１の計算機ノード以外の他の計算機ノードが有する記憶手段に設定されているマスター領域からマスターファイルを読出して、読出した前記マスターファイルをキャッシュするキャッシュ手段と、前記第１の計算機ノードに設定された前記キャッシュ領域中の更新されたデータ部分で前記他の計算機ノードに設定された前記マスター領域のマスターファイルを更新する転送手段と、前記ネットワークに接続された複数の計算機ノードの各記憶手段に前記マスター領域に記憶されているマスターファイルと同一内容の複製ファイルを格納する複製領域を設定するものであって、既存の複製領域が前記第１の計算機ノード以外に設定されている場合でも、前記第１の計算機ノードに設定された前記キャッシュ領域を前記複製領域に設定する多重化手段とを具備したことを特徴とするものである。
【００１７】
本発明においては、ネットワークには複数の計算機ノードが接続されており、各計算機ノードには夫々記憶手段が設けられる。所定の２つ以上の計算機ノードの各記憶手段に、マスター領域又は複製領域が設定されてマスターファイル及び複製ファイルが格納される。キャッシュ手段は、自計算機ノードの記憶手段にキャッシュ領域を設定し、読み込んだマスターファイルをキャッシュする。転送手段は、キャッシュ領域中の更新されたデータ部分をマスター領域の対応する領域に転送する。多重化手段はキャッシュ領域を複製領域に設定する。これにより、キャッシュ領域とマスター領域とで多重化が行われる。この多重化に際して、転送手段は変更されたデータをマスター領域にのみ転送すればよく、既存の複製領域への転送は不要であるので転送データ量が削減され、データ転送による性能低下が抑制される。
【００１８】
なお、装置に係る本発明は方法に係る発明としても成立する。
【００１９】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態について詳細に説明する。図１は本発明の一実施の形態に係る分散ファイルシステムのデータ多重化方法を示す説明図である。図１（ａ１）〜図１（ａ４）は従来における高信頼化された分散ファイルシステムにおけるファイルの記憶方法を示し、図１（ｂ１）〜（ｂ４）は本実施の形態の高信頼化された分散ファイルシステムにおけるファイルの記憶方法を示している。
【００２０】
本実施の形態は高信頼計算機クラスタシステムに採用される高信頼化された分散ファイルシステムに適用したものである。
【００２１】
図１（ａ１）〜（ａ４）及び図１（ｂ１）〜（ｂ４）において、Ｃ，Ｍ，Ｒは夫々高信頼計算機クラスタシステムにおけるクライアント（コンピュータ）が備えるキャッシュ領域、高信頼計算機クラスタシステムにおける任意のコンピュータが備えるマスターファイルを記憶する記憶領域（以下、マスター領域ともいう）及び高信頼計算機クラスタシステムにおける任意のコンピュータが備える複製（リプリカ）ファイルを記憶する記憶領域（以下、複製領域ともいう）を示している。
【００２２】
図１において、Ｃ，Ｍ，Ｒの各記憶領域を示す枠内の四角枠は、１つのファイルに対する記憶領域を示している。また、斜線部分は更新前のデータ領域を示し、梨地部分は使用されたキャッシュ領域のうち更新されていない部分又は複製領域のうち有効でない（使用しない）データ部分を示し、塗り潰し部分は、更新されたデータ領域を示している。
【００２３】
先ず、図１（ａ１）〜（ａ４）を参照して、従来例における高信頼化された分散ファイルシステムのデータ伝送について説明する。
【００２４】
高信頼計算機クラスタシステムにおける高信頼化された分散ファイルシステムでは、データをファイル単位で扱うようになっており、また、キャッシュ領域はファイル毎に設けられる。
【００２５】
いま、図１（ａ１）に示すように、所定の２台のコンピュータの各記憶領域Ｍ，Ｒに、夫々マスターファイル及び複製ファイルが記憶されているものとする。ここで、所定のクライアントが通信回線を介してマスター領域Ｍからデータを読出すものとする。マスター領域Ｍから読出された１ファイル分のデータは、クライアントのキャッシュ領域（以下、キャッシュ領域Ｃという）に記憶される。クライアントにおいてマスターファイルを使用する場合には、図１（ａ２）に示すように、キャッシュ領域Ｃ中に記憶されているデータ、例えば斜線部分に示すデータが読出される。
【００２６】
マスターファイルに対するアクセスを、クライアント内部のキャッシュ領域Ｃに対して行うことにより、高速処理が可能である。
【００２７】
次に、キャッシュ領域Ｃに記憶されているマスターファイルに対して更新を行うものとする。図１（ａ３）の塗り潰し部分は、更新したファイルが記憶されている領域を示している。
【００２８】
図１（ａ３）の状態は、更新されたマスターファイルがキャッシュ領域Ｃのみに記憶されている状態を示している。即ち、この状態ではデータは多重化されていない。そこで、更新されたデータに応じてマスターファイル及び複製ファイルを更新する。
【００２９】
即ち、クライアントのキャッシュ領域Ｃの更新された部分（塗り潰し部分）のデータを、所定の通信回線を介して、所定の２台のコンピュータのマスター領域Ｍ及び複製領域Ｒに転送する。図１（ａ４）はこの状態を示している。マスター領域Ｍと複製領域Ｒには、斜線部分及び塗り潰し部分において同一のデータが記憶されている。こうして、マスターファイルと複製ファイルとで多重度が維持される。
【００３０】
次に、本実施の形態におけるマスターファイル及び複製ファイルの伝送について説明する。
【００３１】
いま、図１（ａ１）と同様に、所定の２台のコンピュータの各記憶領域Ｍ，Ｒに、夫々マスターファイル及び複製ファイルが記憶されているものとする。本実施の形態においては、ファイルを所定のデータ単位で扱うようになっている。なお、キャッシュ領域Ｃはファイル毎に設けられる。
【００３２】
図１（ｂ２）に示すように、マスター領域からのマスターファイルの読出し及びキャッシュ領域への格納、クライアントにおいて使用するためのマスターファイル中のデータの読出しは、従来と同様である。
【００３３】
本実施の形態においても、マスターファイルに対するアクセスを、クライアント内部のキャッシュ領域Ｃに対して行うことにより、高速処理が可能である。
【００３４】
次に、キャッシュ領域Ｃに記憶されているマスターファイルに対して更新を行うものとする。この処理も従来と同様であり、図１（ｂ２）の塗り潰し部分は、キャッシュ領域Ｃ中の更新したファイルが記憶されている領域を示している。
【００３５】
次に、データは多重化するために、更新されたデータを転送する。本実施の形態においては、更新されたデータの転送は、マスター領域Ｍに対してのみ行うようになっている。
【００３６】
図１（ｂ３）はこの状態を示している。キャッシュ領域Ｃに記憶されたマスターファイル中の更新された部分（塗り潰し部分）は、所定の通信回線を介して、所定のコンピュータ内のマスター領域Ｍに転送され、マスター領域Ｍ中のマスターファイルは、キャッシュ領域Ｃ中の更新されたデータによって更新される。
【００３７】
本実施の形態においては、更新されたデータはマスター領域Ｍにのみ転送し、複製領域Ｒには転送しない。この場合でも、図１（ｂ３）に示すように、キャッシュ領域Ｃにおいて更新されたデータ部分は、マスター領域Ｍの塗り潰し部分とキャッシュ領域Ｃの塗り潰し部分に示すように、マスター領域Ｍとキャッシュ領域Ｃとで多重化されている。
【００３８】
一方、複製領域Ｒは更新されていないので、マスター領域Ｍ中の更新されていないデータ部分（斜線部）は、複製領域Ｒ中の対応する領域にも存在する。即ち、更新されていない部分についても、マスター領域Ｍと複製領域Ｒとで多重化されている。
【００３９】
つまり、本実施の形態においては、更新されたデータ部分は、マスター領域Ｍとキャッシュ領域Ｃとで多重化され、更新されていないデータ部分は、マスター領域Ｍと複製領域Ｒとの間で多重化される。
【００４０】
即ち、キャッシュ領域Ｃを複製領域としても用いることによって、マスター領域Ｍへの転送だけの少ない転送量で、データの多重化が可能である。各ファイルについて、複製領域としていずれの領域を用いるかを示すテーブルを設けることで、少ないデータ転送量で、データを多重化するのである。
【００４１】
しかし、図１（ｂ３）の状態では、複製領域が２つの領域に分割されて存在する。そうすると、領域の管理が煩雑になってしまうことが考えられる。そこで、２つに分かれて存在する２台のコンピュータ上の２つの複製領域の一方を他方に転送して、複製領域を１つにする。図１（ｂ４）はこの状態を示している。
【００４２】
この場合には、図１（ｂ４）のキャッシュ領域Ｃを複製領域としてもよく、また、複製領域Ｒを複製領域としてもよい。データの転送量が少なくなるように複製領域を選択すればよい。図１（ｂ３）の場合には、塗り潰し部分のデータ量と斜線部分のデータ量とでは、塗り潰し部分のデータ量の方が大きいので、斜線部分に相当するデータを転送する。即ち、マスター領域Ｍの斜線部分に相当するデータを、キャッシュ領域Ｃの対応する領域に転送して記憶させる。
【００４３】
図２は図１の分散ファイルシステムのデータ多重化方法を実現する分散ファイルシステムを示すブロック図である。図２は本実施の形態の分散ファイルシステムを高信頼計算機クラスタシステムに適用したものである。
【００４４】
図２は複数台の計算機ノードによって計算機クラスタシステムが構成されたネットワーク１２０を示している。図２では３台の計算機ノード１０１、１０８、１１４のみを示しているが、計算機ノードは３台よりも多くてもよい。各計算機ノードには、夫々通信装置、リソース管理部、制御ソフトウェア、記憶装置が含まれる。これらによって、クラスタシステム上の分散ファイルシステムが構成される。
【００４５】
図２はクラスタシステム内のプロセス１０２が、計算機ノード１０１で動作しており、プロセス１０２によって、分散ファイルシステム上のファイルに対してファイルアクセスする例を示している。
【００４６】
各計算機ノード１０１，１０３，１１４の通信装置１０３，１０９，１１５は、ネットワーク１２０を介して他の計算機ノードとの間で通信が可能である。制御ソフトフェア１０５，１１１，１１７は、記憶装置１０６，１１２，１１８にデータの書き込み行うと共に、記憶装置１０６，１１２，１１８から読み出したデータをリソース管理部１０４に出力する。リソース管理部１０４，１１０，１１６は、夫々、制御ソフトフェア１０５，１１１，１１７を駆動して、記憶装置１０５，１１２，１１８に対するアクセスを行う。プロセス１０２は、リソース管理部１０４と連携して、ネットワーク１０２上の各記憶装置１０６，１１２，１１８に対するアクセスを行う。
【００４７】
なお、ネットワーク１２０及び、ネットワーク１２０を使って通信を行うことができる通信装置１０３、１０９、１１５はイーサネット（Ｒ）をはじめとする、何らかのネットワーク通信装置であり、計算機ノード間で通信を行うことができれば種類は問わない。
【００４８】
記憶装置１０６，１１２，１１８は、複数のファイルを記憶する領域を有しており、各領域は１つのファイルを１つ以上の管理単位（データ単位）に分割した場合の各管理単位を記憶する複数の領域を有している。各ファイルは管理情報を有しており、管理情報は各管理単位がマスターファイルであるか複製ファイルであるかの情報を有する。
【００４９】
なお、各計算機ノードにある記憶装置１０６、１１２、１１８と、その制御ソフトウェア１０５、１１１、１１７は、ファイルの識別子からハードディスク等の記憶装置のどの位置にファイルが格納しているかを調べ、データを読み書きすることができる一般的なファイルシステムであり、同様の機能を有すれば、どのような形態でもかまわない。
【００５０】
本実施の形態においては、ファイルは所定の管理単位（データ単位）に分割して転送可能である。従って、図１（ｂ４）に示す１つの複製ファイルへの統合を行わずに、図１（ｂ３）の状態のままの場合には、そのファイルに対するファイルアクセス毎に、ファイルが分割されて格納される可能性がある。即ち、各ファイルは、１つ以上の領域に分割されて各管理単位毎に格納され、必ず、各格納単位はマスターと複製とを有する。
【００５１】
リソース管理部１０４，１１０，１１６は、テーブルを用いて、マスターファイルとその複製ファイルの組について、格納する記憶装置及び記憶装置内の記憶領域の位置を管理するようになっている。
【００５２】
図３はリソース管理部において管理するテーブル６０１を示す説明図である。テーブル６０１は、分散ファイルシステム上のファイルの識別子及びデータ領域がどの計算機ノードのどのファイルと対応するかを検索するためのものである。図３のテーブルは、ネットワーク１２０上の全ての計算機ノードのリソース管理部が有していてもよく、また、いずれか１つのリソース管理部が有していてもよく、更に、ネットワーク１２０上の読出し可能な任意の位置に格納するようにしてもよい。
【００５３】
図３の例は、ファイル識別子がＦ００１〜Ｆ００３の３つのファイルの格納状態を示している。ファイルＦ００１は、０−９９９のデータ領域を有しており、ファイルＦ００２は０−２９９のデータ領域を有しており、ファイルＦ００３は０−２９９９のデータ領域を有している。本実施の形態においては、ファイルＦ００２は、データ領域０−９９，１００−１９９，２００−２９９の３つのデータ単位に分割されている。
【００５４】
そして、各ファイル（データ単位）は、マスターファイルと複製ファイルとを有している。例えば、Ｆ００１は、その実体が計算機ノード１０８中の記憶装置１０６中のファイル１１３として格納され、その複製が計算機ノード１１４の記憶装置１１８中のファイル１１９として格納されている。また、例えば、ファイルＦ００２のデータ領域１００−１９９のデータ単位は、図示しない計算機ノード１００１の記憶装置１０１０にマスターファイルが記憶され、図示しない計算機ノード２３００の記憶装置２３０８に複製ファイルが記憶されている。
【００５５】
なお、テーブル６０１においては、データ領域の情報を有する例を示しているが、このデータ領域の情報は省略可能である。また、表６０１と同様の機能を有すれば、リソース管理部が持つ検索のための表は、表６０１の構成でなくともよい。
【００５６】
次に、高信頼計算機クラスタシステムの高信頼化された分散ファイルシステムにおけるファイルのアクセスについて図４及び図５のフローチャートを参照して説明する。
【００５７】
先ず、図４を参照して、計算機ノード１０１で動作しているプロセス１０２が、分散ファイルシステム上のファイルＦ００１を参照する（更新を伴わない）場合の例について説明する。
【００５８】
先ず、プロセス１０２は、参照したいファイルの識別子Ｆ００１と要求するデータをリソース管理部１０４に渡す（ステップ２０２）。リソース管理部１０４は、リソース管理部の管理している表６０１を用いて要求されたファイルがどの計算機ノードに格納されているかを調べる。図３の例では、リソース管理部１０４において、参照要求されたファイルＦ００１は、計算機ノード１０８のファイル１１３及び計算機ノード１１４のファイル１１９であることを示す情報が得られる（ステップ２０３）。
【００５９】
更新を伴わない参照の動作なので、マスターファイルであるファイル１１３を参照しても、また、複製ファイルであるファイル１１９を参照してもよい。リソース管理部１０４は、いずれのファイルからデータを取得するかを決定する。いずれのファイルにアクセスするかについては、データ転送速度や、計算機ノードの負荷等によってリソース管理部１０４において決定してもよい。
【００６０】
リソース管理部１０４は、通信装置１０３、ネットワーク１２０を介して計算機ノード１０８、又は計算機ノード１１４にデータの取得の要求を出す（ステップ２０４，２０５）。作業用のキャッシュファイル１０７が既に作成されており、要求するデータがすでに作業用のキャッシュファイル１０７に存在するか否かを制御ソフトウェア１０５に確認する。参照要求したファイルＦ００１のキャッシュファイルが存在する場合には、作業用のキャッシュファイル１０７からデータを読み込んで（ステップ２０８，２０９）、ステップ２１１に処理を移行する。
【００６１】
作業用のキャッシュファイルに要求するデータが存在しない場合は、ステップ２０６，２０７において、要求を受けた計算機ノードのリソース管理部１１０またはリソース管理部１１６は格納しているファイル１１３、１１９からデータを取得し、計算機ノード１０１のリソース管理部１０４に渡す。
【００６２】
作業用のキャッシュファイルが未作成の場合、リソース管理部１０４は以後のファイルアクセスを高速にするために、制御ソフトウェア１０５を介してローカルの記憶装置１０６内に作業用のキャッシュファイル１０７を作成する。次に作業用のキャッシュファイル１０７の管理情報を更新し、取得したデータを格納する（ステップ２１０）。更に、リソース管理部１０４はプロセス１０２に取得したデータを渡す（ステップ２１１）。
【００６３】
次に、図５を参照して、計算機ノード１０１で動作しているプロセス１０２が、ファイルＦ００１を更新する場合の動作を説明する。
【００６４】
先ず、プロセス１０２は更新したいファイルの識別子Ｆ００１と更新するデータ単位をリソース管理部１０４に渡す（ステップ３０２）。リソース管理部１０４は、リソース管理部が管理している表６０１を用いて要求されたファイルの全体がどの計算機ノードにあるかを調べる。この場合には、計算機ノード１０８のファイル１１３が得られる（ステップ３０３）。
【００６５】
リソース管理部１０４は制御ソフトウェア１０５を介してローカルの記憶装置１０６内の作業用のキャッシュファイル１０７にファイルの管理情報と更新するデータを書き込む（ステップ３０４）。
【００６６】
次に、本実施の形態においては、キャッシュ領域内の更新したデータ単位について、マスターファイルの対応するデータ単位の更新を行う。即ち、リソース管理部１０４は、通信装置１０３、ネットワーク１２０を通して計算機ノード１０８にファイル１１３の更新を要求する（ステップ３０５）。計算機ノード１０８のリソース管理部１１０は、要求に従ってファイル１１３の管理情報及びデータを制御ソフトウェア１１１を介して更新する（ステップ３０６）。
【００６７】
これにより、図１（ｂ３）と同様の状態が得られる。即ち、ファイルＦ００１のデータのうち、プロセス１０２によって更新されていない領域に関しては、ファイル１１３、１１９によって多重化され、プロセス１０２によって更新された領域に関しては、ファイル１０７、１１３によって多重化される。つまり、ファイルＦ００１全体でファイルの実体が多重化されることになる。
【００６８】
ファイル全体で多重化されていれば、各ファイルが複数のデータ単位に分割されていても特には問題はない。従って、１つの複製ファイルに統合することなく、分割された状態でファイルアクセスを行うことも考えられる。図６はこの場合において、計算機ノード１０１で動作しているプロセス１０２のファイルＦ００１への更新が終了したときの動作を示している。
【００６９】
プロセス１０２は、作業用キャッシュファイル１０７の更新した領域を新たな複製ファイルとして用いることを、ファイル識別子Ｆ００１と更新した領域をリソース管理部１０４に渡す（ステップ４０２）。リソース管理部１０４は、リソース管理部１０４を含め、計算機クラスタシステムを構成するすべての計算機ノードのリソース管理部に対して、作業用のキャッシュファイル１０７のプロセス１０２によって更新された領域をファイルＦ００１の新たな複製ファイルとして使用することを要求する（ステップ４０３）。
【００７０】
リソース管理部１０４から要求を受け取った各ノードのリソース管理部は、ファイルがどのノードに格納されているかという情報を示す表６０１の内容を、ファイル１０７のうち、プロセス１０２によって更新された領域を、ファイルＦ００１の複製ファイルとし、ファイル１１９を同じ領域の複製ファイルとして扱わないように、書き換える（ステップ４０４）。
【００７１】
図７は複数に分割された複製ファイルを１つの統合する場合の動作について、計算機ノード１０１で動作しているプロセス１０２のファイルＦ００１への更新が終了した場合を例に示すフローチャートである。
【００７２】
図７のステップ５０２において、プロセス１０２はファイルＦ００１の更新が終了したことをファイルの識別子Ｆ００１と共にリソース管理部１０４に渡す。リソース管理部１０４は、リソース管理部が管理している表６０１を用いて要求されたファイルの実体がどの計算機ノードにあるかを調べる。この場合には、計算機ノード１０８のファイル１１３が得られる（ステップ５０３）。
【００７３】
リソース管理部１０４は、プロセス１０２によって更新された領域の大きさＳ１と、未参照等の理由でファイルの実体から作業用のキャッシュファイル１０７にデータが取得されていない領域の大きさＳ２を、制御ソフトウェア１０５を介して、ファイル１０６の管理情報から取得する（ステップ５０４）。Ｓ１とＳ２の値を比較し、Ｓ１の方が大きければ、リソース管理部１０４はプロセス１０２によって更新された領域の内容を通信装置１０３、ネットワーク１２０を通して計算機ノード１１４のリソース管理部１１６に渡す（ステップ５０５）。更新データを受け取ったリソース管理部１１６は、制御ソフトウェア１１７を通してファイル１１９のデータ及び管理情報を更新する（ステップ５０６）。
【００７４】
ステップ５０３において、Ｓ２の方がＳ１よりも大きかった場合には、リソース管理部１０４は作業用のキャッシュファイル１０７にデータが取得されていない領域のデータを通信装置１０３、ネットワーク１２０を介して、計算機ノード１０７のリソース管理部１１０に要求する（ステップ５０７）。リソース管理部１１０は、要求に従ってファイル１１３からデータを読み出し、計算機ノード１０１のリソース管理部１０４に渡す（ステップ５０８）。計算機ノード１０７からデータを受け取ったリソース管理部１０４は制御ソフトウェア１０５を通して受け取ったデータでファイル１０７のデータ及び管理情報を更新する。次に、リソース管理部１０４は、計算機クラスタシステムを構成する全ての計算機ノードのリソース管理部に対して、ファイルＦ００１の実体が、計算機ノード１０８のファイル１１３と計算機ノード１０１のファイル１０７であるとリソース管理部の管理する表を書き換えるように要求する。（ステップ５０９）各リソース管理部はリソース管理部１０４の要求どおりに表を書き換え、ファイルＦ００１の実体を安定した状態にする（ステップ５１０）。
【００７５】
このように、本実施の形態においては、複数の計算機ノードから構成される計算機クラスタシステム上の高信頼分散ファイルシステムにおいて、更新を分散ファイルシステム上のファイルの実体のひとつと、作業用のキャッシュファイルに対してのみ行うことで、分散ファイルシステム上のファイルの実体の多重度を保ちつつ、計算機ノード間の通信量を削減することができる。更に、ファイルの更新終了後にファイルの多重度を保つために必要なデータ転送量に応じて、従来どおり分散ファイルシステム上のファイルの複製ファイルを更新するか、作業用のキャッシュファイルを新たに分散ファイルシステム上のファイルの複製ファイルとするかを決定して、計算機ノード間でデータ転送を行う。これにより、分散ファイルシステム上のファイルの多重度を保ちつつ計算機ノード間の通信量を削減することが可能である。
【００７６】
【発明の効果】
以上説明したように本発明によれば、ファイルの冗長度を損なうことなく性能を向上させた高信頼計算機クラスタシステムを可能にすることができる分散ファイルシステム及び分散ファイルシステムのデータ多重化方法を提供することを目的とする。
【図面の簡単な説明】
【図１】本発明の一実施の形態に係る分散ファイルシステムのデータ多重化方法を示す説明図。
【図２】図１の分散ファイルシステムのデータ多重化方法を実現する分散ファイルシステムを示すブロック図。
【図３】リソース管理部において管理するテーブル６０１を示す説明図。
【図４】計算機ノード１０１で動作しているプロセス１０２が、分散ファイルシステム上のファイルＦ００１を参照する（更新を伴わない）場合の例を示すフローチャート。
【図５】計算機ノード１０１で動作しているプロセス１０２が、ファイルＦ００１を更新する場合の動作を説明するためのフローチャート。
【図６】計算機ノード１０１で動作しているプロセス１０２のファイルＦ００１への更新が終了したときの動作を説明するためのフローチャート。
【図７】複数に分割された複製ファイルを１つの統合する場合の動作について、計算機ノード１０１で動作しているプロセス１０２のファイルＦ００１への更新が終了した場合を例に示すフローチャート。
【符号の説明】
１０１，１０８，１１４…計算機ノード、１０４，１１０，１１６…リソース管理部、１０６，１１２，１１８…記憶装置、１２０…ネットワーク。
【図１】
0004148698.tif 000002
【図２】
0004148698.tif 000003
【図３】
0004148698.tif 000004
【図４】
0004148698.tif 000005
【図５】
0004148698.tif 000006
【図６】
0004148698.tif 000007
【図７】
0004148698.tif 000008