(57)【特許請求の範囲】
【請求項１】
ファイルを格納したストレージ装置と、
前記ファイルのデータを用いて処理を行うアプリケーションプログラムと、前記アプリケーションプログラムから前記ファイルのデータへのアクセス要求を受け付け前記ファイルのデータへアクセスするアクセス管理プログラムとを実行するプロセッサ、及び前記プロセッサによって参照される記憶装置を有する複数の計算機と、
前記ストレージ装置に格納された前記ファイルを分割し、分割されたファイルの各々を前記複数の計算機の前記記憶装置内に確保された記憶領域を統合して構成される分散メモリストレージに配置する管理プログラムを実行するプロセッサ、及び前記プロセッサにより参照される記憶装置を有する管理計算機を備え、
前記管理プログラムは、前記分散メモリストレージを構成する前記記憶領域の各々への前記ファイルデータの配置の方法を定義した断片化定義情報と、前記分散メモリストレージへの前記ファイルデータの配置状態を管理するファイル管理情報とを保持し、前記管理プログラムにより、前記断片化定義情報に従って前記ストレージ装置に格納された前記ファイルのデータを前記分散メモリストレージ上に配置し、
前記複数の計算機の各々において、前記アプリケーションプログラムを実行し、前記アクセス管理プログラムにより、前記アプリケーションプログラムから前記ファイルのデータへのアクセスを受け付け、前記管理プログラムから前記アクセスの対象とされたファイルに関する前記ファイル管理情報を取得し、該ファイル管理情報に基づいて前記分散メモリストレージに配置されたデータへアクセスする計算機システム。
【請求項２】
前記断片化定義情報は、前記分散メモリストレージへの前記ファイルのデータの分割ポリシーを示す配置ポリシー情報、分割されたファイルのデータを配置する前記記憶領域の数を示す記憶領域数情報、及び前記記憶領域ごとに配置される前記ファイルのデータの範囲を示すキーレンジ情報を含むことを特徴とする請求項１記載の計算機システム。
【請求項３】
前記ファイル管理情報は、前記ファイルのデータが前記分散メモリストレージに分割されて配置されるか否かを示す配置方法情報と、前記ファイルのデータが配置される前記分散メモリストレージを構成する前記記憶領域内のブロックを識別する識別情報とを含むことを特徴とする請求項１記載の計算機システム。
【請求項４】
前記ファイル管理情報は、前記配置方法情報によって前記ファイルのデータが前記分散メモリストレージに分割されて配置されることが示される場合、前記ファイルのデータが分割されて配置される前記記憶領域ごとに前記記憶領域を有する前記複数の計算機を識別する計算機ＩＤと前記識別情報とを保持することを特徴とする請求項３記載の計算機システム。
【請求項５】
前記アクセス管理プログラムは、前記分散メモリストレージに分割されて配置されたファイルへのアクセスを行うか分割されずに配置されたファイルへのアクセスを行うかを示すアクセスモードと、前記アプリケーションプログラムからのアクセス要求に応じてアクセスすべき前記分散メモリストレージを構成する前記記憶装置内の記憶領域を指し示すポインタ情報とを保持するファイル情報含むことを特徴とする請求項４記載の計算機システム。
【請求項６】
前記ファイルが前記分散メモリストレージに分割されて配置される場合、前記複数の計算機の各々で実行される前記アクセス管理プログラムが有する前記ファイル情報は、それぞれ前記アクセス管理プログラムが動作する計算機の記憶装置に配置されたファイルの断片内のアクセス位置を指し示すポインタ情報を有することを特徴とする請求項５記載の計算機システム。
【請求項７】
前記管理プログラムは、さらに、前記ストレージ装置に格納される前記ファイルと前記分散メモリストレージとを対応づける対応付け情報を保持し、前記対応付け情報に基づいて前記ファイルのデータを前記分散メモリストレージに配置する処理を行うか否か決定することを特徴とする請求項１記載の計算機システム。
【請求項８】
ファイルを格納したストレージ装置と、前記ファイルのデータを用いて処理を行うアプリケーションプログラム及び前記アプリケーションプログラムから前記ファイルのデータへのアクセス要求を受け付け前記ファイルのデータへアクセスするアクセス管理プログラムを実行するプロセッサと、前記プロセッサによって参照される記憶装置とを有する複数の計算機と、前記ストレージ装置に格納された前記ファイルを分割し、分割されたファイルの各々を前記複数の計算機の前記記憶装置内に確保された記憶領域を統合して構成される分散メモリストレージに配置する管理プログラムを実行するプロセッサ、及び前記プロセッサにより参照される記憶装置を有する管理計算機とを備えた計算機システムにおける前記アプリケーションプログラムの実行方法であって、
前記管理計算機に予め設定され、前記分散メモリストレージを構成する前記記憶領域の各々への前記ファイルデータの配置の方法を定義した断片化定義情報に従って、前記ストレージ装置に格納された前記ファイルのデータを前記分散メモリストレージを構成する前記記憶領域に配置し、
前記複数の計算機の各々において、前記アプリケーションプログラムを実行し、
前記アクセスプログラムにより、前記アプリケーションプログラムから前記ファイルのデータへのアクセスを受け付け、
前記アクセスプログラムにより、前記管理プログラムから前記アクセスの対象とされたファイルに関する前記ファイル管理情報を取得し、
前記アクセスプログラムにより、前記ファイル管理情報に基づいて前記分散メモリストレージに配置されたデータへアクセスするアプリケーションプログラムの実行方法。
【請求項９】
前記配置するステップは、
前記アプリケーションプログラムから前記ファイルのオープン要求を受け付け、
前記ストレージ装置内に格納されたファイルと前記分散メモリストレージとを対応づける対応付け情報を参照して、前記オープン要求で指定されたファイルが前記分散メモリストレージに配置されるべきか否かを判別し、
前記オープン要求で指定されたファイルが前記分散メモリストレージに配置されるものであると判別されたとき、前記断片化定義情報に従って前記オープン要求で指定されたファイルを断片化して、前記分散メモリストレージを構成する前記物理メモリ領域に配置することを特徴とする請求項８記載のアプリケーションプログラムの実行方法。
【請求項１０】
前記配置するステップは、前記オープン要求で指定されたファイルが前記ストレージ装置に存在しない場合、前記オープン要求で指定されたファイルに関連する前記断片化定義情報を参照して前記オープン要求で指定されたファイルを作成するステップを含むことを特徴とする請求項９記載のアプリケーションプログラムの実行方法。
【請求項１１】
前記ファイル管理情報は、関係するファイルを分割して格納する前記複数の計算機の各々が有する前記記憶領域に対応して、前記関係するファイルを格納する前記記憶領域内のブロックの識別子が設定された断片化構成情報を含み、
前記アクセスするステップは、前記断片化構成情報に基づいて、アクセスの対象とする前記記憶領域内のブロックを判別することを特徴とする請求項８記載のアプリケーションプログラムの実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システム及びそのアプリケーションプログラムの実行方法に係り、特に、アプリケーションプログラムを高速に実行するための方法及び計算機システムに関する。
【背景技術】
【０００２】
近年、計算機システムにおいてアプリケーションプログラムが処理すべきデータ量は爆発的に増えてきている。計算機システムが扱うデータ量の増大に伴い、その処理時間が増加し、バッチジョブなどの処理が、所定の時間内に終わらないといった問題が生じてきている。このため、例えば、大量のデータを多数のサーバでデータを並列に処理して処理の高速化を図ることの要求が増大してきている。
【０００３】
従来のアプリケーションプログラムでは、一般に、データをファイル形式で扱っている。ファイルの使い方はアプリケーションプログラム毎に様々である。特に、メインフレームが使われるような基幹業務処理では、プログラミング言語としてＣＯＢＯＬを用いて、アプリケーションプログラムが作成され、このようなアプリケーションプログラムでは、ファイルをレコードの集合として利用している。
【０００４】
レコードは、アプリケーションプログラムで処理するデータの基本単位であり、アプリケーションプログラムは、レコード単位でデータの入出力を行う。１件のレコードには、一連の関連する情報が格納されており、その情報の各項目はフィールドと呼ばれる。金融機関で扱われる類の情報を例にすると、１件の取引情報がレコードに、口座番号／店番号／商品コードといったひとつひとつの項目がフィールドに相当する。アプリケーションプログラムは、ファイルからレコードを１件ずつ順次読み出して処理を行う。このような形式のデータを従来のプログラムで並列して処理させることを考えた場合、データをレコード単位で分割して処理することが考えられる。このように、データを分割するのは、アプリケーションプログラムは、レコードを一件ずつ読み出して処理するため、単にデータの複製を作成し、複数のサーバで処理するだけでは、各サーバでの処理量が変わらないためである。
【０００５】
レコード単位のデータの分割という観点では、データベースをキーによってレコード単位で分割する分散データベース技術がある。例えば、特許文献１には、キーレンジによってデータベースのデータをレコードごとに分割し、処理の並列化を図ることが開示されている。
【０００６】
また、データの並列処理に関する技術として、大量のデータを多数のコンピューティングノードで処理することにより高速化を図る並列計算機技術が知られている。例えば、特許文献２には、大量のデータを、メッシュ状や一定間隔など規則的に分割して、各コンピューティングノードで並列に処理を行うことにより、処理の高速化を実現するための技術が開示されている。
【０００７】
一方、大量のデータを、多数のサーバを使って高速に処理するための基盤として、例えば、非特許文献１に示されるような分散メモリ技術（分散キャッシング技術）が提案されている。分散メモリ技術は、複数のサーバのメモリを統合して、大量のデータを格納するメモリ空間を構成する技術である。データの分割配置による処理の並列化と、データのメモリ内保持とにより入出力の高速化を狙うものである。
【０００８】
分散メモリ技術では、大量のデータを複数のＰＣサーバに分散させるために、キー・バリュー型データ形式が採用されている。キー・バリュー型データは、データの識別子であるキーと、データの本体であるバリュー(値)を対応づけたデータ構造で、［キー、バリュー］の組み合わせで管理される。キー・バリュー型データの実体は、オブジェクト指向におけるオブジェクトであり、分散メモリ技術を利用する場合、アプリケーションは基本的にオブジェクト指向言語で開発される。
【０００９】
分散メモリ技術では、キー・バリュー型データにより、キーの範囲（キーレンジ）に応じてデータを複数のサーバに分割配置し、分割配置されたデータを各サーバでアプリケーションが並列に処理することで処理を高速化する。
【００１０】
なお、データのインメモリ化に関しては、例えば、複数のサーバのメモリを統合して、一つの共有デバイスを作成し、ディスクなど通常のストレージと同様にデータの入出力を行うことを可能とする技術が知られている。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開平５−３３４１６５号公報
【特許文献２】特開平７−２１９９０５号公報
【非特許文献】
【００１２】
【非特許文献１】“ＧｅｍＦｉｒｅ  Ｅｎｔｅｒｐｒｉｓｅ”  Ｔｅｃｈｎｉｃａｌ  Ｗｈｉｔｅ  Ｐａｐｅｒ  ２００７ＧｅｍＳｔｏｎｅ  Ｓｙｓｔｅｍｓ  Ｉｎｃ．
【発明の概要】
【発明が解決しようとする課題】
【００１３】
上述したような従来技術を適用して、処理の対象となるデータを分割し、例えば、プログラム言語としてＣＯＢＯＬを用いて作成された従来のアプリケーションプログラムにより、分割されたデータを並列処理することを考えた場合、もともと存在した巨大なデータを分割することになるため、例えば、元の巨大なデータと分割後のデータの対応付けを管理する必要があるなど、データの使い勝手が悪くなるという問題がある。
【００１４】
さらに、複数のサーバからなるシステムでは、いずれのサーバからも、ある一つデータに対して一意に決まる名前でアクセスできるように、共有ファイルシステムを利用してファイルシステム空間を共有することで使い勝手のよさを確保するケースが多い。この場合、分割後のデータには、それぞれ一意に決まる名前をつける必要があり、アプリケーションプログラムの実行環境では、分割後のファイル名が変更されることを意識してアプリケーションプログラムを実行する必要がある。
【００１５】
また、分散メモリ技術を利用する場合は、レコードを単位にデータの入出力を行う従来のアプリケーションプログラムをそのまま用いることができず、キー・バリュー型データ（オブジェクト）に対応したアプリケーションプログラムを新規に開発する必要がある。
【００１６】
以上のように、上述した従来技術では、従来のアプリケーションプログラムをそのまま用いて処理を並列化し、処理の高速化を図ることは困難であった。
【課題を解決するための手段】
【００１７】
上述した従来技術における課題を解決するために、本発明による計算機システムは、その好ましい態様において、ファイルを格納したストレージ装置と、ファイルのデータを用いて処理を行うアプリケーションプログラムと、アプリケーションプログラムからファイルのデータへのアクセス要求を受け付けてファイルのデータへアクセスするアクセス管理プログラムとを実行するプロセッサ、及びプロセッサによって参照される記憶装置を有する複数の計算機と、ストレージ装置に格納されたファイルを分割し、されたファイルの各々を複数の計算機の記憶装置内に確保された記憶領域を統合して構成される分散メモリストレージに配置する管理プログラムを実行するプロセッサ、及びプロセッサにより参照される記憶装置を有する管理計算機とを備える。
【００１８】
管理プログラムは、分散メモリストレージを構成する記憶領域の各々へのファイルデータの配置の方法を定義した断片化定義情報と、分散メモリストレージへのファイルデータの配置状態を管理するファイル管理情報とを保持し、管理プログラムにより、断片化定義情報に従ってストレージ装置に格納されたファイルのデータを分散メモリストレージ上に配置する。
【００１９】
アプリケーションプログラムは、複数の計算機の各々において実行され、アプリケーションプログラムからファイルのデータへのアクセスは、アクセス管理プログラムにより受け付けられる。アクセス管理プログラムは、管理プログラムからアクセスの対象とされたファイルに関するファイル管理情報を取得し、該ファイル管理情報に基づいて分散メモリストレージに配置されたデータへアクセスする。
【発明の効果】
【００２０】
本発明によれば、複数のホストコンピュータを有して構成されるコンピュータシステムにおいて、従来のアプリケーションプログラムを改変することなく用いて処理の並列化を実現し、処理の高速化を図ることが可能になる。
【図面の簡単な説明】
【００２１】
【図１】本発明が適用された計算機システムの一実施形態における簡略化されたシステム構成を示すブロック図である。
【図２】レコード定義情報１３３の構成を示す概念図である。
【図３】アプリケーションプログラムの一例を示すプログラムソースコードの説明図である。
【図４】断片化定義情報の構成を示す概念図である。
【図５】永続ストレージ−分散メモリストレージ対応付け情報の構成を示す概念図である。
【図６】分散メモリストレージ構成情報の構成を示す概念図である。
【図７】分散メモリストレージ管理情報の構成を示す概念図である。
【図８】分散メモリストレージ上のファイル管理情報の構成を示す概念図である。
【図９】分散メモリストレージ上にファイルが断片化されずに配置されている場合の割り当て情報を示す概念図である。
【図１０】分散メモリストレージ上にファイル断片が分散して配置されている場合の割り当て情報を示す概念図である。
【図１１】断片構成情報の構成を示す概念図である。
【図１２】オープンファイル情報の構成を示す概念図である。
【図１３】プル型のファイルロード方式におけるファイルのロード処理を示すフローチャートである。
【図１４】プッシュ型のファイルロード方式におけるファイルのロード処理を示すフローチャートである。
【図１５】ロード方式がプッシュ型に指定されているときのファイルのオープン処理を示すフローチャートである。
【図１６】分散メモリストレージ上に配置されたファイルへの入出力処理を示すフローチャートである。
【図１７】分散メモリストレージ上に断片化配置されたファイルからのデータの読み出し処理を示すフローチャートである。
【図１８】分散メモリストレージ上に断片化配置されたファイルへのデータの書き込み処理を示すフローチャートである。
【図１９】分散メモリストレージに断片化配置されたファイルのアンロード処理を示すフローチャートである。
【図２０】入出力処理の対象とされるファイルの構成例を示す概念図である。
【発明を実施するための形態】
【００２２】
図１は、本発明が適用された計算機システムの一実施形態における簡略化されたシステム構成を示すブロック図である。
【００２３】
本実施形態の計算機システムは、ホストコンピュータ１０１、複数のホストコンピュータ１０２及びストレージ装置１０３を備える。ホストコンピュータ１０１は、ネットワーク１０４を介してホストコンピュータ１０２と接続される。本実施形態では、処理の対象とされるファイルを永続的に保持するストレージ装置としてストレージ装置１０３を使用するものとして説明するが、記憶媒体としてフラッシュメモリを用いた半導体ディスク装置や、光ディスク装置など、永続的にデータを保持することのできる記憶装置であればどのようなものをストレージ装置として用いてもかまわない。
【００２４】
ホストコンピュータ１０１は、相互に接続されたプロセッサ１１１、メモリ１１３、インタフェース（Ｉ／Ｆ）１１５を備える。ホストコンピュータ１０１は、Ｉ／Ｆ１１５ａを介してストレージ装置１０３と、また、Ｉ／Ｆ１１５ｂを介してホストコンピュータ１０２と相互に接続される。
【００２５】
メモリ１１３には、ファイルシステムプログラム１２１、分散メモリストレージ管理プログラム１２２が格納されている。ファイルシステムプログラム１２１は、ストレージ装置１０３に格納されたデータであるファイル１８１を管理し、必要に応じてファイル１８１に対するデータの入出力処理を実行する。本実施形態では、システム全体で、ファイル名前空間が共有され、ファイル１８１に対して、システム全体で一意に決まる名前でアクセスする機能がファイルシステムプログラム１２１により提供される。ホストコンピュータ１０１及びホストコンピュータ１０２上で動作する各種プログラムからストレージ装置１０３に格納されたファイル１８１へのアクセスは、ファイルシステムプログラム１２１を介して行われる。
【００２６】
分散メモリストレージ管理プログラム１２２は、後述する分散メモリストレージを管理するプログラムである。分散メモリストレージ管理プログラム１２２は、分散メモリストレージの管理機能を実現するプログラムの本体である分散メモリ管理部１３１と、分散メモリ管理部１３１が利用する情報である分散メモリストレージ構成情報１３２、レコード定義情報１３３、断片化定義情報１３４、分散メモリストレージ管理情報１３５、永続ストレージ−分散メモリストレージ対応付け情報１３６、及び分散メモリストレージ上ファイル管理情報１３７を含んでいる。
【００２７】
本実施形態において、後述するホストコンピュータ１０１の機能は、プロセッサ１１１が、メモリ１１３に格納されたこれらのプログラムを実行することにより実現される。メモリ１１３は、たとえば、ＤＲＡＭのような半導体メモリであって、ストレージ装置１０３に比べプロセッサ１１１からより高速にアクセスすることができる。ファイルシステムプログラム１２１、分散メモリストレージ管理プログラム１２２、及びその他のプログラムやデータは、常にメモリ１１３上に配置されている必要はなく、ストレージ装置１０３、あるいは図示しない外部記憶装置等に格納され、必要に応じてそれらの全体、あるいは一部がメモリ１１３上にコピーされてもよい。
【００２８】
ホストコンピュータ１０２は、相互に接続されたプロセッサ１１２、メモリ１１４、インタフェース（Ｉ／Ｆ）１１６を備える。ホストコンピュータ１０２は、Ｉ／Ｆ１１６を介してホストコンピュータ１０１、及び他のホストコンピュータ１０２と相互に接続される。ここでは、ホストコンピュータ１０２は同一の構成を持つものとして説明するが、以下に説明する機能、あるいは処理を実現できるものであれば、必ずしも同一の構成を有している必要はない。
【００２９】
メモリ１１４には、分散メモリストレージアクセスプログラム１４１、及びファイル１８１に保持されているデータを用いて処理を行うアプリケーションプログラム（ＵＡＰ）１６１が格納される。ホストコンピュータ１０１と同様に、プロセッサ１１２がこれらプログラムを実行することにより、後述するホストコンピュータ１０２の機能が実現される。また、メモリ１１４は、メモリ１１３と同様、たとえば、ＤＲＡＭのような半導体メモリであって、ストレージ装置１０３に比べプロセッサ１１１からより高速にアクセスすることができる。メモリ１１４に保持されるプログラムやデータも、常にメモリ１１４上に配置されている必要はなく、図示しないディスク装置等の外部記憶装置に格納され、必要に応じてそれらの全体、あるいは一部がメモリ１１４上にコピーされてもよい。また、メモリ１１４には、分散メモリストレージの記憶領域の一部を構成する物理メモリ領域１７１が確保される。
【００３０】
分散メモリストレージアクセスプログラム１４１は、物理メモリ領域１７１を管理し、自ホストコンピュータ及び他のホストコンピュータのメモリ１１４に確保された物理メモリ領域１７１によって構成される分散メモリストレージへのアクセスを制御する。分散メモリストレージアクセスプログラム１４１は、分散メモリストレージへのアクセスを制御するプログラムの本体である分散メモリアクセス部１５１、分散メモリストレージをアクセスするために分散メモリアクセス部１５１が利用する管理情報であるオープンファイル情報１５２、を含む。
【００３１】
物理メモリ領域１７１には、分散メモリストレージに格納されたファイル（図示せず）を構成するデータの断片１９１が格納される。本実施形態において、分散メモリストレージは、各ホストコンピュータ１０２が有する物理メモリ領域１７１を統合して構成される。分散メモリストレージは、ホストコンピュータ１０１、１０２からは、共有デバイスと同様にアクセスすることが可能である。処理に必要なデータを分散メモリストレージ上において利用することによって、ストレージ装置１０３に格納されたデータを利用するよりも入出力処理が高速化される。
【００３２】
上述したファイルシステムプログラム１２１、および、分散メモリストレージ管理プログラム１２２は、図示しないオペレーティングシステム（ＯＳ）の一部として、あるいは、図示しないユーザアプリケーションプログラムによって使用される入出力ライブラリとして提供されてもよい。分散メモリストレージ管理プログラム１２２は、各ホストコンピュータ１０２の分散メモリストレージアクセスプログラム１４１と協調して分散メモリストレージの構成や使用状況を管理し、ストレージ装置１０３から分散メモリストレージへのデータのロード、分散メモリストレージからストレージ装置１０３へのデータのアンロードなどを制御する。
【００３３】
図２０は、本実施形態で処理の対象とされるファイルの構成例を示す概念図である。
【００３４】
ファイルァイル１８１は、ＵＡＰ１６１により処理されるデータの基本単位となる複数のレコード２００１、２００２、２００３、２００４・・・を有して構成される。各レコード２００１、２００２、２００３、２００４・・・には、一連の関連する情報を格納した複数のフィールド２０１１、２０１２、２０１３・・・が含まれている。図２０では、４つのレコードが図示されているが、一般に、システムの制約の範囲内において、１つのファイルは、任意の数のレコードを含むことができ、１つのレコードも、任意の数のレコードを含むことができる。たとえば、商品取引業務で用いられるようなデータの場合、１件の取引における取引情報によりレコードが構成され、口座番号、店番号、商品コード等の個々の情報（データ）がフィールドに記録される。
【００３５】
ＵＡＰ１６１は、レコードを単位としてＩ／Ｏを行い、ファイルに対しレコードをファイルの先頭から１件ずつ順次入出力して処理を行う。本実施形態において、ファイル１８１は、レコード中の１つのフィールドをキーとして、ＵＡＰ１６１により実施される処理に適合するようにレコード単位で分割される。分割されたファイル１８１は、複数のホストコンピュータ１０２上のＵＡＰ１６１にそれぞれ割り当てられ、複数のＵＡＰにより並行して処理される。このように、１つのＵＡＰ１６１が処理するデータ量を削減して、複数のＵＡＰ１６１を並列実行することで、処理の高速化を図ることが可能となる。
【００３６】
図２は、レコード定義情報１３３の構成を示す概念図である。レコード定義情報１３３は、ファイルのレコードを認識し、ファイルをレコード単位で分割するために利用される情報である。レコード定義情報１３３は、レコード構成２０１、フィールド構成２０２、キー・フィールド番号２０３を含む。本実施形態において、レコード定義情報はストレージ装置１０３に格納されるファイルごとに設定される。
【００３７】
レコード構成２０１は、ファイル１８１内のレコード構成を識別するための情報であり、レコード種別２１１とレコード長２１２とを含む。レコード種別２１１は、ファイル１８１内のレコードが固定長レコードであるか可変長レコードであるかを示す情報である。レコード種別２１１が固定長レコードを示す場合、ファイル１８１は、それぞれ等しい所定の長さを持つレコードで構成される。レコード種別２１１が可変長レコードを示す場合、ファイル１８１を構成するレコードの長さがレコードにより異なる。レコード長２１２は、レコード種別２１１が固定長レコードを示す場合に、１つのレコードの長さを示す情報である。フィールド構成２０２は、レコード内のフィールドを識別するための情報であり、１つのレコードに含まれるフィールドの数を示すフィールド数２２１と、各フィールドに対応したフィールド情報２２２を含む。フィールド情報２２２は、対応するフィールドに記録されるデータに関する情報であり、フィールド種別２３０、サイズ２３１と記述形式２３２を含む。フィールド種別２３０は、レコード種別２１１が可変長レコードの場合に、対応するフィールドが可変長フィールドか固定長フィールドかを示す情報である。サイズ２３１は、フィールド種別２３１が固定長の場合には対応するフィールドのフィールド長を示し、可変長の場合は対応するフィールドの“フィールド長”を示す情報を格納したレコード内の領域のサイズを示す。記述形式２３２は、ＡＳＣＩＩ、バイナリ等、対応するフィールドに記録されたデータの記述形式を示す。キー・フィールド番号２０３は、ファイル１８１を分割する際に、レコード中のどのフィールドをキーとして使うかを示す情報である。
【００３８】
ファイル１８１が固定長レコードで構成される場合、レコード長２１２に設定された値によって個々のレコードを認識することができる。一方、ファイル１８１が可変長レコードで構成される場合、各レコードの先頭には、そのレコードの大きさを記録するフィールドが設けられ、この情報によりレコードの区切りを判別することができる。可変長レコードである場合、フィールド構成２０２に設定されている情報から最初のフィールドを識別し、レコードサイズが求められる。レコードが認識された後は、フィールド構成２０２のフィールド数２２１、フィールドサイズ２２２を参照してフィールドが識別される。
【００３９】
図３は、本実施形態ＵＡＰ１６１のソースプログラムの一例を示すプログラムソースコードの説明図である。
【００４０】
本実施形態において、ＵＡＰ１６１は、ＣＯＢＯＬ言語により記述される。ＣＯＢＯＬプログラムでは、プログラム中でファイルのレコード構造が定義される。図３に示すソースプログラム３０１はＣＯＢＯＬ言語で記述されたプログラムの一例であり、ＤＡＴＡ  ＤＩＶＩＳＩＯＮのＦＩＬＥ  ＳＥＣＴＩＯＮ３０２においてデータファイルの構造が定義される。プログラムによって利用される各ファイルは、一つのファイル記述項（ＦＤ）とそれに続く一つ以上のレコード記述項によって定義される。本実施形態において、レコード定義情報１３３のレコード構造２０１およびフィールド構造２０２は、ＦＩＬＥ  ＳＥＣＴＩＯＮ３０２に記述された情報を用いて設定することができる。
【００４１】
図４は、断片化定義情報１３４の構成を示す概念図である。断片化定義情報１３４は、後述するように、ファイル１８１を分割し、分散メモリストレージを構成する各ホストコンピュータ１０２の物理メモリ領域１７１に断片化して配置する場合に、分割された各断片をどのように配置するかを決める際に用いられる。断片化定義情報１３４は、配置ポリシー４０１、配置領域数４０２、キーレンジ指定情報４０３などの情報を含む。
【００４２】
配置ポリシー４０１は、例えば「キーレンジ指定」や「ソートあり利用量平準化」「ソートなし利用量平準化」など、ファイル１８１の分割ポリシーを指定する情報である。「キーレンジ指定」は、後述するキーレンジ指定情報４０３に設定された情報に従ってファイル１８１を分割し、分割されたファイル１８１の各部分のレコードを分散メモリストレージに配置することを示す。「ソートあり利用量平準化」は、ファイル１８１を分割して分散メモリストレージに配置する際に、キー・フィールド番号２０３で指定されたフィールドのデータによりレコードの順番をソートするとともに、レコードの数が分散メモリストレージを構成する各物理メモリ領域１７１間で平準化して配置されるようにレコードを振り分けることを示す。「ソートなし利用量平準化」は、「ソートあり利用量平準化」のようにレコード順のソートを行わずにレコードの配置を行うことを示す。
【００４３】
配置領域数４０２は、ファイル１８１を断片化して配置する際に、ファイルの断片が配置される物理メモリ領域１７１の数をいくつにするかを示す情報である。
【００４４】
キーレンジ指定情報４０３は、複数のキーレンジ情報４１１を含む。各キーレンジ情報４１１は、キーの始端４２１、終端４２２、および、物理メモリ領域ＩＤ４２３を含む。キーレンジ情報４１１は、始端４２１と終端４２２で特定される範囲に属するレコードを、どの物理メモリ領域１７１に配置するかを示す情報である。
【００４５】
図５は、永続ストレージ−分散メモリストレージ対応付け情報１３６の構成を示す概念図である。永続ストレージ−分散メモリストレージ対応付け情報１３６は、ストレージ装置１０３に格納されているファイル１８１と分散メモリストレージ上のファイルとを対応付けるための情報である。永続ストレージ−分散メモリストレージ対応付け情報１３６は、キャッシュポイント５０１、分散メモリストレージＩＤ５０２、及びロード方式５０３を含む。
【００４６】
キャッシュポイント５０１は、ファイルシステム１２１によって提供されるシステム全体のファイル名前空間上で、キャッシュ、すなわち、分散メモリストレージに配置するディレクトリ、または、ファイルを指定するための情報である。キャッシュポイント５０１にディレクトリが指定された場合は、指定されたディレクトリ下にあるファイルがキャッシュの対象となる。分散メモリストレージＩＤ５０２は、キャッシュポイント５０１で指定ディレクトリ、または、ファイルを配置する分散メモリストレージを指定する情報である。
【００４７】
ロード方式５０３は、キャッシュポイント５０１で指定されたディレクトリ、または、ファイルを分散メモリストレージＩＤ５０２で指定される分散メモリストレージにロードする契機を示す情報である。ロード方式５０３には、「プッシュ」または「プル」が設定される。ロード方式５０３に「プッシュ」が設定されている場合、そのファイルを使用するアプリケーションプログラムの実行前に、ファイルの使用を宣言することによって、あらかじめ、分散メモリストレージにファイルがロードされる。ロード方式５０３に「プル」が設定されている場合、対象のファイルがオープンされたときに、そのファイルが分散メモリストレージにロードされる。
【００４８】
図６は、分散メモリストレージ構成情報１３２の構成を示す概念図である。分散メモリストレージ構成情報１３２は、分散メモリストレージとそれを構成する物理メモリ領域１７１との関係を示す情報である。分散メモリストレージ構成情報１３２は、分散メモリストレージを識別するための分散メモリストレージＩＤ６０１、領域数６０２、及び物理メモリ領域情報６０３を含む。
【００４９】
領域数６０２は、分散メモリストレージを構成する物理メモリ領域１７１の数を示す情報である。物理メモリ領域情報６０３は、分散メモリストレージを構成する物理メモリ領域１７１を識別するための情報、物理メモリ領域１７１のサイズなど、分散メモリストレージを構成する物理メモリ領域に関する情報である。物理メモリ領域情報６０３は、ホストコンピュータＩＤ６１１、物理メモリ領域ＩＤ６１２、及び物理メモリ領域のサイズ６１３を含む。ホストコンピュータＩＤ６１１は、分散メモリストレージを構成する物理メモリ領域１７１を有するホストコンピュータ１０２を識別する情報である。システム内で個々のホストコンピュータ１０２を識別できればどのような情報を用いてもよく、システム内で一意に付与されるホスト名や、ホストコンピュータ１０２のネットワークＩ／Ｆに付随するＩＰアドレスなどを使うことができる。領域ＩＤ６１２は、ホストコンピュータ１０２内に複数の物理メモリ領域が確保されている場合に、分散メモリストレージＩＤ６０１で識別される分散メモリストレージを構成するために割り当てられている物理メモリ領域１７１を識別するための情報である。領域ＩＤ６１２は、物理メモリ領域を一意に識別できればどのような情報であってもよいが、ここでは物理アドレス用いるものとする。
【００５０】
図７は、分散メモリストレージ管理情報１３５の構成を示す概念図である。分散メモリストレージ管理情報１３５は、分散メモリストレージの使用状況など動的に変動する情報を管理するために用いられる。分散メモリストレージ管理情報１３５は、分散メモリストレージを識別するための分散メモリストレージＩＤ７０１、領域数７０２、及び物理メモリ領域情報７０３を含む。
【００５１】
領域数７０２は、分散メモリストレージＩＤ７０１で識別される分散メモリストレージを構成する物理メモリ領域１７１の数を示す情報である。物理メモリ領域情報７０３は、メモリストレージ構成情報１３２内で対応する位置にある物理メモリ領域情報６０３に設定された情報で識別される物理メモリ領域の使用状況を示す情報である。物理メモリ領域情報７０３は、総ブロック数７１１、割り当て済みブロック数７１２などの情報を含む。ここでブロックとは、物理メモリ領域、および、分散メモリストレージ領域の管理単位となる所定のサイズの記憶領域である。分散メモリストレージ管理部１３１は、分散メモリストレージに配置されたファイルをブロック単位で管理する。総ブロック数７１１は、それを含む物理領域情報７０３に対応する物理領域情報６０３で識別される物理メモリ領域１７１に含まれるブロックの総数を示す。割り当て済みブロック数７１２は、それを含む物理領域情報７０３に対応する物理領域情報６０３で識別される物理メモリ領域１７１に含まれるブロックのうち、実際に使われているブロックの数を示す。
【００５２】
図８は、分散メモリストレージ上のファイル管理情報１３７の構成を示す概念図である。分散メモリストレージ上ファイル管理情報１３７は、分散メモリストレージ上に存在するファイルに対して作成される情報で、分散ストレージ上に配置されたファイルを管理するための情報である。分散メモリストレージ上ファイル管理情報１３７は、ファイルのアクセス権限を表すパーミッション情報１３１１、ファイルを所有するユーザを示すオーナー情報１３１２、ファイルのサイズを示すサイズ１３１３、分散メモリへのファイルの配置方法を示す配置方法１３１４、分散メモリストレージの管理単位であるブロックのファイルへの割り当てを示す割り当て情報１３１５などを含む。これらの情報は、後述する分散メモリストレージ上へのファイルのロード時に設定される。
【００５３】
配置方法１３１４には、分散メモリストレージ上に配置されているファイルの配置方法が設定される。本実施形態では、ファイルの配置方法として、ファイルが複数の断片に分割され、複数のホストコンピュータ１０２の物理メモリ領域１７１に分散して配置される「断片化」（以下このようなファイルの配置を“断片化配置”という）と、ファイルが複数の断片に分割されることなく複数のホストコンピュータ１０２の物理メモリ領域１７１に配置される「通常」（以下、このようなファイルの配置を“通常配置”という）とがある。配置方法１３１４には、配置方法に応じて「断片化」あるいは「通常」を示す情報が設定される。割り当て情報１３１５には、分散メモリストレージ上にファイルが「断片化」により配置されるか否かによって設定される情報が異なる。以下、割り当て情報１３１５について説明する。
【００５４】
図９は、分散メモリストレージ上にファイルが通常配置されている場合の割り当て情報１３１５を示す概念図である。通常配置では、複数の物理メモリ領域で構成される分散メモリストレージがあたかも１つのメモリ領域であるかのように扱われる。
【００５５】
本実施形態において、物理メモリ領域１７１は、その管理を容易なものとするため所定の大きさのブロックを単位に管理される。ファイルが断片化されない場合、ファイルは、ストレージ装置１０３上へのファイルの一般的な格納の場合と同様、ファイルのオフセットに対して、１対１で決まるブロックが割り当てられる。割り当て情報１３１５には、ファイルを格納するために割り当てられたブロックを識別するインデックス１５０１が、ファイルの先頭を格納したブロックから順に設定される。この他、オフセット＋サイズのエクステントでファイルのデータが記憶される領域を管理するようにしてもよい。
【００５６】
図１０は、分散メモリストレージ上にファイルが断片化配置されている場合の割り当て情報１３１５を示す概念図である。
【００５７】
断片化されたファイルの割り当て情報１３１６は、分散メモリストレージに断片化配置されたファイルに対するブロックの割り当てを示す情報である。
【００５８】
断片数１４０１は、ファイルがいくつの断片に分割されているかを示す情報である。この数は図４で説明した断片化定義情報１３４の配置領域数４０２で指定された数と同じになる。  ファイルが分割されて、複数のホストコンピュータ１０２の物理メモリ領域１７１に分散して配置される場合、ファイル内のデータは、まず、分割された断片に関連付けることができ、さらに、その断片に割り当てられた物理メモリ領域１７１のブロックに関連付けることができる。つまり、ファイル内のデータを記憶する物理メモリ領域１７１のブロックは、２段階でファイル内のデータのために割り当てられることになる。断片構成情報１４０３は、分割されたファイルの各断片について、それぞれ断片に割り当てられる物理メモリ領域１７１のブロックに関する情報を保持する。
【００５９】
図１１は、断片構成情報１４０３の構成を示す概念図である。断片構成情報１４０３は、ホストコンピュータＩＤ１６０１、使用ブロック数１６０２、断片サイズ１６０３、及び複数組のブロックのインデックス１６０４とブロックの未使用サイズ１６０５を含む。
【００６０】
ホストコンピュータＩＤ１６０１は、断片構成情報１４０３が対応するファイル断片を記憶するために割り当てられた物理メモリ領域１７１を有するホストコンピュータ１０２を識別するための情報である。使用ブロック数１６０２は、対応するファイル断片を記憶するために割り当てられている物理メモリ領域１７１のブロックの数を示す情報である。断片サイズ１６０３は、対応するファイル断片の大きさを示す情報である。ブロックインデックス１６０１は、断片構成情報１４０３が対応するファイル断片を保持するために割り当てられているブロックを識別する情報であり、未使用サイズ１６０５は、そのブロックでファイルのレコードを記憶するために利用されていない未使用の領域の大きさを示す情報である。
【００６１】
分散メモリストレージに配置されたファイルは、レコード単位で利用されるため、図１１に示すように、物理メモリ領域１７１内のブロック１６１１上にレコード１６２１を単位として保持される。通常、ブロック１６１１とレコード１６２１の境界は一致しないため、ブロック１６１１内に１つのレコード１６２１よりも小さい未使用の領域が生じる。この未使用の領域のサイズが未使用サイズ１６０５としてブロックごとに保持される。また、ファイル断片の終端でも同様の未使用領域１６２３が発生する。ファイル断片の終端に生じる未使用領域１６２３についても同様にブロックの未使用サイズ１６０５として管理される。ただし、このような断片構成情報１４０３は、分散メモリストレージアクセス部１５１が、レコード単位の入出力要求を直接受ける環境における場合に必要となるものである。分散メモリストレージアクセス部１５１が受ける入出力要求が、途中のライブラリレイヤの処理で、バッファリングされる場合は、未使用領域サイズの管理は不要であり、１つのレコードを構成するデータが異なるブロックに跨っているかどうかを意識する必要はない。このような場合は、断片構成情報１４０３内のブロックの未使用サイズ１６０５は不要となる。
【００６２】
図１２は、オープンファイル情報１５２の構成を示す概念図である。オープンファイル情報１５２は、分散メモリストレージアクセスプログラム１４１が有する情報であり、ホストコンピュータ１０２上でオープンされ分散メモリストレージ上のファイルに関して保持される情報である。オープンファイル情報１５２は、ファイルアクセスモード８０１とファイルポインタ８０２を含む。
【００６３】
ファイルアクセスモード８０１には、分散メモリストレージアクセスプログラム１４１によるオープン処理時に、分散メモリストレージ上へのファイルの配置の仕方に応じて決定されるアクセスモードが設定される。すなわち、ファイルの配置が断片化配置の場合「断片化」が、通常配置の場合「通常」がファイルアクセスモード８０１として設定される。ファイルアクセスモード８０１が「通常」の場合、ＵＡＰ１６１によるファイルの入出力は、ファイルの先頭のレコードから順次行われる。一方、ファイルアクセスモード８０１が「断片化」の場合、各ＵＡＰ１６１によるファイルの入出力は、それぞれが実行されるホストコンピュータ１０２の物理メモリ領域１７１に保持されたファイル断片の先頭のレコードから順次行われる。
【００６４】
ファイルポインタ８０２は、ファイルアクセスにより読み書きの対象となるレコードの先頭位置を示す情報である。ファイルアクセスモード８０１が「通常」の場合、ファイルポインタ８０２には、ファイルの入出力の際に、読み出し、あるいは書き込みが行われたレコードの次のレコードの先頭を示す情報が設定される。また、ファイルアクセスモード８０１が「断片化」の場合は、後述するレコード先頭への位置づけ処理によって次のファイルアクセスにより読み書きされるレコードの先頭を示す情報が設定される。
【００６５】
断片化定義情報１３４、ファイル管理情報１３７、及びオープンファイル情報１５２は、利用されるファイルごとに保持される。特に図示していないが、これらの情報には、どのファイルに関係する情報であるかを識別可能とするために、関係するファイルのファイル名、あるいはファイルＩＤ等、関係するファイルを識別するための情報を含んでよい。
【００６６】
図１３は、プル型のファイルロード方式におけるファイルのロード処理を示すフローチャートである。ロード処理は、ホストコンピュータ１０２において、ＵＡＰ１６１からファイルのオープン要求が発行されることを契機に、分散メモリストレージアクセスプログラム１４１の分散メモリストレージアクセス部１５１、及び分散メモリストレージ管理部１３１において実行される。
【００６７】
ホストコンピュータ１０２上のＵＡＰ１６１がファイルを指定してオープン要求を発行すると、その要求は、分散メモリストレージアクセス部１５１により受け付けられる。分散メモリストレージアクセス部１５１により受け付けられたオープン要求は、ホストコンピュータ１０１の分散メモリストレージ管理部１３１に送られる（ステップ９００）。
【００６８】
分散メモリストレージ管理部１３１は、オープン要求を受け取ると、永続ストレージ−分散メモリストレージ対応付け情報１３６のロード方式５０３に、設定されているロード方式が「プル」であるか「プッシュ」であるか判定する。設定されたロード方式が「プッシュ」である場合は、図１５に示すオープン処理が実施される（ステップ９０１）。
【００６９】
永続ストレージ−分散メモリストレージ対応付け情報１３６のロード方式５０３に、設定されているロード方式が「プル」である場合、分散メモリストレージ管理部１３１は、さらに、永続ストレージ−分散メモリストレージ対応付け情報１３６を参照し、オープン要求で指定されたファイルが分散メモリストレージ上にキャッシュすべきファイルか否か判別する。この判断は、オープン要求で指定されたファイルが、永続ストレージ−分散メモリストレージ対応付け情報１３６のキャッシュポイント５０１により、キャッシュするファイルとして指定されているか否かを調べることにより行われる（ステップ９０２）。
【００７０】
ステップ９０２において、オープン要求で指定されたファイルが、キャッシュの対象として指定されていると判定された場合、分散メモリストレージ管理部１３１は、ＵＡＰより受け付けたオープン要求で指定されたファイルのオープン処理をファイルシステム１２１に要求する（ステップ９０３）。オープン処理の要求に対する応答をファイルシステム１２１から受け取ると、分散メモリストレージ管理部１３１は、ファイルシステム１２１からの応答に基づいて、指定されたファイルがストレージ装置１０３に存在するか否か判定する（ステップ９０４）。ステップ９０４で、ファイルがストレージ装置１０３に存在すると判定された場合、分散メモリストレージ管理部１３１は、さらに、オープン要求で指定されたファイルに関するレコード定義情報１３３、および、断片化定義情報１３４が存在するかどうか判定する（ステップ９０５）。
【００７１】
ステップ９０５で、オープン要求で指定されたファイルのレコード定義情報１３３、および、断片化定義情報１３４が存在すると判定された場合、分散メモリストレージ管理部１３１は、レコード定義情報１３３を参照してファイルのレコード構成を把握し、ファイルシステム１２１を介してファイルのデータをストレージ装置１０３から読み出す。分散メモリストレージ管理部１３１は、断片化定義情報１３４の定義に従って読み出したファイルを分割し、分散メモリストレージアクセス部１５１を介して、分割されたファイル断片のデータを分散メモリストレージ上に分散させて配置する。また、分散メモリストレージ管理部１３１は、ファイル管理情報１３７を作成し、配置方法１３１４に「断片化」を設定するとともに、ファイルデータの配置に合わせて割り当て情報１３１５を設定する（ステップ９０６）。
【００７２】
ステップ９０５において、オープン要求で指定されたファイルのレコード定義情報１３３、および、断片化定義情報１３４が存在しないと判定された場合、分散メモリストレージ管理部１３１は、ファイルを分割せずに、「通常」モードで分散メモリストレージへ配置する。具体的に、分散メモリストレージ管理部１３１は、分散メモリストレージ構成情報１３２を参照して分散メモリストレージを構成する物理メモリ領域に、その物理メモリ領域が存在するホストコンピュータ１０２の分散メモリストレージアクセス部１５１を介して順次データを配置する。このとき、分散メモリストレージ管理部１３１は、ファイル管理情報１３７を作成し、配置方法１３１４に「通常」を設定するとともに、ファイルデータの配置に合わせて割り当て情報１３１５を設定する（ステップ９０７）。
【００７３】
一方、ステップ９０４で指定されたファイルがストレージ装置１０３に存在しないと判定された場合、分散メモリストレージ管理部１３１は、新たなファイルの作成が指定されているかどうかを判定する（ステップ９０８）。ファイルの作成が指定されていない場合、分散メモリストレージ管理部１３１は、オープン処理の要求元に「オープンエラー」通知し、処理を終了する（ステップ９０９）。
【００７４】
ステップ９０８で、ファイル作成が指定されていると判定された場合、分散メモリストレージ管理部１３１は、指定されたファイルのレコード定義情報１３３、および、断片化定義情報１３４が存在するかどうかを判定する（ステップ９１０）。レコード定義情報１３３、および、断片化定義情報１３４が存在すると判定された場合、分散メモリストレージ管理部１３１は、ファイル管理情報１３７を作成してその配置方法１３１４に「断片化」を設定する（ステップ９１１）ステップ９１０で、レコード定義情報１３３、および、断片化定義情報１３４が存在しないと判定された場合、分散メモリストレージ管理部１３１は、配置方法１３１４に「通常」を設定したファイル管理情報１３７を作成する（ステップ９１２）。
【００７５】
ステップ９０６、９０７、９１１、及び９１２の処理の後、分散メモリストレージアクセス部１５１は、オープンファイル情報１５２を初期化する。ファイルが断片化配置された場合、ファイルアクセスモード８０１には「断片化」が、ファイルが通常配置された場合は、「通常」がそれぞれ設定される。ファイルポインタには、ファイルが断片化配置された場合は、それぞれのホストコンピュータが有する物理メモリ領域内のファイル断片の先頭を指し示す情報が設定され、ファイルが通常配置された場合は、分散メモリストレージ内のファイルの先頭を指し示す情報が設定される。なお、ここで設定される情報は、例えば、ステップ９０６、９０７、９１１、及び９１２において、データの配置とともに分散メモリストレージ管理部１３１から通知される情報を用いるようにすることができる（ステップ９１３）。
【００７６】
ステップ９０２で、オープン要求で指定されたファイルが、キャッシュの対象として指定されていないと判定された場合、分散メモリストレージ管理部１３１は、ファイルシステムプログラム１２１を介して、ストレージ装置１０３に格納されているファイルに対する通常のオープン処理を行なう（ステップ９１４）。
【００７７】
以上の処理を終えた後、分散メモリストレージ管理部１３１は、分散メモリストレージアクセス部１５１を介して処理を要求したＵＡＰ１６１に処理の狩猟を報告する（ステップ９１５）。
【００７８】
図１４は、プッシュ型のファイルロード方式におけるファイルのロード処理を示すフローチャートである。この処理は、永続ストレージ−分散メモリストレージ対応付け情報１３６のロード方式５０３に、「プッシュ」が指定されている場合に、分散メモリストレージ管理部１３１、及び、分散メモリストレージアクセス部１５１により実行される。プッシュ型のファイルロード形式では、ホストコンピュータ１０２上でのＵＡＰ１６１の実行前に、ＵＡＰ１６１により使用されるファイルが予め分散メモリストレージにロードされる。この処理は、例えば、ユーザにより入力され、あるいはジョブ制御プログラムやＵＡＰにより発行される専用のコマンドを用いたファイルの使用開始宣言を契機に実行される。
【００７９】
ＵＡＰ１６１の実行開始に先立ってファイルを指定した使用開始宣言が発行されると、この使用開始宣言は、分散メモリストレージアクセス部１５１、または、分散メモリストレージ管理部１３１により受け付けられる。分散メモリストレージアクセス部１５１が使用開始宣言を受け付けた場合、その使用開始宣言は、分散メモリストレージアクセス部１５１から分散メモリストレージ管理部１３１に送られる（ステップ１０００）。分散メモリストレージ管理部１３１は、使用開始宣言を受け付けると、ステップ９０２と同様にして、指定されたファイルが分散メモリストレージ上にキャッシュすべきファイルかどうかを判定する（ステップ１００１）。
【００８０】
指定されたファイルが分散メモリストレージ上にキャッシュすべきファイルであると判定された場合、分散メモリストレージ管理部１３１は、ストレージ装置１０３に格納されているファイルを読み出し、分散メモリストレージ上に配置するため、ファイルシステム１２１に対して、使用開始宣言で指定されたファイルのオープン処理を要求する（ステップ１００２）。ファイルシステム１２１から要求に対する応答があると、分散メモリストレージ管理部１３１は、指定されたファイルに関するレコード定義情報１３３、および、断片化定義情報１３４が存在するかどうか判定する（ステップ１００３）。指定されたファイルに関するレコード定義情報１３３、及び断片化定義情報１３４が存在すると判定された場合、分散メモリストレージ管理部１３１は、ステップ９０６と同様にして、指定されたファイルを分散メモリストレージ上に断片化配置し、ファイル管理情報１３７を作成する（ステップ１００４）。一方、ステップ１００３で指定されたファイルに関するレコード定義情報１３３と断片化定義情報１３４が存在しないと判定された場合、分散メモリストレージ管理部１３１は、ステップ９０７と同様に、指定されたファイルを通常モードでファイルを分散メモリへ配置し、ファイル管理情報１３７を作成する（ステップ１００５）。
【００８１】
ステップ１００１において、ファイルがキャッシュの対象として指定されていないと判定された場合、分散メモリストレージ管理部１３１は、使用開始宣言をストレージ装置１０３上のファイルに対する通常のアクセスとして処理する（ステップ１００７）。
【００８２】
上述したロード処理により、ストレージ装置１０３に格納されているファイルのうち、指定されたファイルをＵＡＰ１６１からの要求に応じて、あるいは、ＵＡＰ１６１の実行に先行して分散メモリストレージに配置することが可能となる
図１５は、ロード方式がプッシュ型に指定されているときのファイルのオープン処理を示すフローチャートである。この処理は、図１３に示すオープン処理のステップ９０１において、永続ストレージ−分散メモリストレージ対応付け情報１３６のロード方式５０３に、「プッシュ」が指定されていると判定された場合に実行される。
【００８３】
分散メモリストレージ管理部１３１は、受け取ったオープン要求で指定されたファイルが分散メモリストレージに存在するかどうか判定する。この判定は、指定されたファイルに関するファイル管理情報１３７が作成されているか否かにより行うことができる。ファイル管理情報１３７が作成されている場合、上述したプッシュ型のロード処理により、ファイルのデータが分散メモリストレージ上に配置されていることになる（ステップ１１０２）。指定されたファイルが分散メモリストレージ上に存在する場合、分散メモリストレージ管理部１３１は、分散メモリストレージアクセス部を介して処理の完了をＵＡＰに返し処理を終了する（ステップ１１０８）。
【００８４】
一方、ステップ１１０２で指定されたファイルが分散メモリストレージに存在しないと判定された場合、分散メモリストレージ管理部１３１は、ファイルの作成が指定されているかどうか判定する（ステップ１１０３）。ファイルの作成が指定されていない場合、分散メモリストレージ管理部１３１は、分散メモリストレージアクセス部１５１を介してＵＡＰ１６１に「オープンエラー」を通知して処理を終了する（ステップ１１０８）。
【００８５】
ステップ１１０３で、ファイル作成が指定されていると判定された場合、分散メモリストレージ管理部１３１は、指定されたファイルのレコード定義情報１３３と断片化定義情報１３４が存在するかどうか判定する（ステップ１１０４）。指定されたファイルのレコード定義情報１３３と断片化定義情報１３４が存在すると判定された場合、分散メモリストレージ管理部１３１は、ステップ９１１と同様に、ファイル管理情報１３７を作成し、その配置方法１３１４に「断片化」を設定する（ステップ１１０５）。ステップ１１０４で、指定されたファイルのレコード定義情報１３３と断片化定義情報１３４が存在しないと判定された場合、分散メモリストレージ管理部１３１は、ステップ９１２と同様に、分散メモリストレージ上のファイル管理情報１３７を作成し、配置方法１３１４に「通常」を設定する（ステップ１１０６）。これらの処理の後、分散メモリストレージアクセス部１５１により、ステップ９１３と同様に、オープンファイル情報１５２が初期化される（ステップ１１０７）。この後、ステップ１１０８の処理が実行され、ＵＡＰ１６１に処理の完了が報告される。
【００８６】
このファイルオープン処理により、予め分散メモリストレージ上に配置されたファイルのオープン処理をすることが可能になる。
【００８７】
図１６は、分散メモリストレージ上に配置されたファイルへの入出力処理を示すフローチャートである。この処理は、ホストコンピュータ１０２において、ＵＡＰ１６１から発行されたファイルのオープン要求に対する処理が完了した後、ＵＡＰ１６１から入出力要求が発行されることを契機に実行される。
【００８８】
分散メモリストレージアクセス部１５１は、ＵＡＰ１６１からの入出力要求を受け取ると（ステップ１２０１）、分散メモリストレージ管理部１３１にアクセス対象のファイルに関するファイル管理情報１３７を要求し、ファイル管理情報１３７を取得する。なお、ファイル管理情報１３７は、先行する入出力要求の処理の際に取得したものをメモリ１１４に保持しておいてもよく、あるいは、オープン処理の際に分散メモリストレージ管理部１３１から分散メモリアクセス部１５１にその写しを予め転送しておき、メモリ１１４に保持しておくようにしてもよい。（ステップ１２０２）。
【００８９】
分散メモリストレージアクセス部１５１は、入出力要求の対象となるファイルが分散メモリストレージ上に断片化されて配置されているかどうか判定する。この判定は、ファイル管理情報１３７の配置方法１３１４に設定されている情報が「断片化」であるか「通常」であるかにより行われる（ステップ１２０３）。
【００９０】
入出力要求の対象ファイルが分散メモリストレージに断片化されて配置されている場合、分散メモリストレージアクセス部１５１は、後述するように、分散メモリストレージ上に断片化されて配置されたファイル対する入出力処理を行う（ステップ１２０４）。一方、入出力要求の対象ファイルが断片化されずに分散メモリストレージに通常モードで配置されている場合、分散メモリストレージアクセス部１５１は、分散メモリストレージ上に通常配置されたファイルに対する入出力処理を行う。この場合に行われる入出力処理は通常のファイルシステムの入出力処理と同様の処理となるので、ここではその説明を省略する（ステップ１２０５）。
【００９１】
図１７は、分散メモリストレージ上に断片化配置されたファイルからのデータの読み出し処理を示すフローチャートである。この処理は、ＵＡＰ１６１から発行された入出力要求が分散メモリストレージ上に断片化配置されたファイルを対象とした読み出し要求である場合に、図１６のステップ１２０２で実施される処理である。
【００９２】
分散メモリストレージアクセス部１５１は、ＵＡＰ１６１から発行された入出力要求が分散メモリストレージに断片化配置されたファイルを対象とするものである場合、その入出力要求がファイルからのデータの読み出し要求であるか書き込み要求か判定し、書き込み要求であれば後述する書き込み処理を実行する（ステップ１７０１）。
【００９３】
入出力要求が読み出し要求である場合、分散メモリストレージアクセス部１５１は、ファイル管理情報１３７の断片構成情報１４０３に設定されているホストコンピュータＩＤ１６０１を参照して、自ホストコンピュータ（処理を実行しているホストコンピュータ１０２）のホストコンピュータＩＤ１６０１が設定された断片構成情報１４０３が存在するか判定する。該当する断片構成情報１４０３が存在する場合、自ホストコンピュータにアクセス対象とされているファイルの断片を記憶した物理メモリ領域１７１が存在し、自ホストコンピュータに読み出しの対象となるファイル断片が存在することになる。該当する断片構成情報１４０３が存在しない場合、分散メモリストレージアクセス部１５１はそのまま処理を終了する（ステップ１７０２）。
【００９４】
該当する断片構成情報１４０３が存在する場合、分散メモリストレージアクセス部１５１は、その断片構成情報１４０３を取得する（ステップ１７０３）。分散メモリストレージアクセス部１５１は、オープンファイル情報１４２のファイルポインタ８０２の値と、アクセス要求で指定された読み出しサイズから読み出しの対象となるデータを格納しているブロックを判別し、そのブロックからデータを読み出す（ステップ１７０４）。この後、分散メモリストレージアクセス部１５１は、オープンファイル情報１４２のファイルポインタ８０２を更新して読み出し処理を終了する。このとき、データを読み出したブロックの残りサイズが、そのブロックについて未使用サイズ１６０５に設定されているサイズ以下であれば、分散メモリストレージアクセス部１５１は、ファイルポインタ８０２を次のブロックの先頭を指すように更新する（ステップ１７０５）。
【００９５】
図１８は、分散メモリストレージ上に断片化配置されたファイルへのデータの書き込み処理を示すフローチャートである。この処理は、ＵＡＰ１６１から発行された入出力要求が分散メモリストレージ上に断片化配置されたファイルに対する書き込み要求である場合に、図１６のステップ１２０２で実施される処理であり、図１７のステップ１７０１でアクセス要求が読み出し要求であると判別されたときに実行される。
【００９６】
分散メモリストレージアクセス部１５１は、ＵＡＰ１６１から発行された入出力要求が、分散メモリストレージに断片化配置されたファイルへの書き込み要求である場合、ファイル管理情報１３７の断片構成情報１４０３に設定されているホストコンピュータＩＤ１６０１を参照して、自ホストコンピュータ（処理を実行しているホストコンピュータ１０２）のホストコンピュータＩＤ１６０１が設定された断片構成情報１４０３が存在するか判定する。該当する断片構成情報１４０３が存在する場合、自ホストコンピュータにアクセス対象とされているファイルの断片を記憶した物理メモリ領域１７１が存在し、自ホストコンピュータに読み出しの対象となるファイル断片が存在することになる（ステップ１８０１）。該当する断片構成情報１４０３が存在する場合、分散メモリストレージアクセス部１５１は、その断片構成情報を取得する（ステップ１８０２）。該当する断片構成情報１４０３が存在しなかった場合、分散メモリストレージアクセス部１５１は、データを書き込むために対象ファイルのファイル断片を記憶する物理メモリ領域１７１を確保して、断片構成情報１４０３を新たに作成する。このとき、ホストコンピュータＩＤ１６０１には、処理を行っているホストコンピュータ１０２の識別情報が設定される。分散メモリストレージアクセス部１５１は、また、アクセス対象のファイルについてのオープンファイル情報１４２を作成し、ファイルポインタ８０２が最初のブロックの先頭を指すように値を設定する（ステップ１８０３）。
【００９７】
次に、分散メモリストレージアクセス部１５１は、オープンファイル情報１４２のファイルポインタ８０２の値と書き込みが要求されたレコードのサイズから現在利用しているブロック内にレコードを書き込めるか否か評価する。ファイルポインタ８０２によりポイントされた位置以降のブロック内にレコードが収まらない場合、分散メモリストレージアクセス部１５１は、ブロックの未使用サイズ１６０５にブロックの残りの量を登録し、ファイルポインタ８０２が次のブロックの先頭を指すようにファイルポインタの値を更新する（ステップ１８０４）。その後、分散メモリストレージアクセス部１５１は、ファイルポインタ８０２で指示される位置からレコードのデータを書き込み、ファイルポインタ８０２を次のレコードの先頭位置を指し示すように更新して書き込み処理を終了する。なお、ファイル管理情報１３７に変更があった場合、分散メモリストレージアクセス部１５１は、その変更内容を分散メモリストレージ管理部１３１に通知し、分散メモリストレージアクセス部１５１が有するファイル管理情報１３７にその変更を反映させる（ステップ１８０５）。
【００９８】
図１９は、分散メモリストレージに断片化配置されたファイルのアンロード処理を示すフローチャートである。この処理はファイルの使用が終了したときに実行される。例えば、ＵＡＰ１６１によるファイルのクローズ要求や、プッシュ型のファイルロード方式における使用開始宣言と対をなす使用終了宣言を契機として、または、分散メモリストレージのＬＲＵ管理等によりファイルが分散メモリストレージ上から追い出される際に、分散メモリストレージ管理部１３１により実行される。
【００９９】
分散メモリストレージ管理部１３１は、アンロードの対象となるファイルに関するファイル管理情報１３７を参照して（ステップ１９０１）、割り当て情報１３１６に設定されている断片数１４０１を取得する（ステップ１９０２）。そして、分割されたファイルの各断片についての断片構成情報１４０３を取得するため、ループ変数ｎに０をセットする（ステップ１９０３）。
【０１００】
その後、分散メモリストレージ管理部１３１は、割り当て情報１３１６からｎ番目の断片構成情報１４０３を取得する（ステップ１９０４）。分散メモリストレージ管理部１３１は、取得した断片構成情報１４０３のホストコンピュータＩＤ１６０１で識別されるホストコンピュータ１０２の分散メモリストレージアクセス部１５１を介して、そのホストコンピュータ１０２の物理メモリ領域１７１に記憶されているファイル断片を取得する（ステップ１９０５）。ホストコンピュータ１０２から取得されたファイル断片は、永続ストレージ−分散メモリストレージ対応付け情報１３６から求まるストレージ装置１０３上のファイルに順次書き込まれる（ステップ１９０６）。
【０１０１】
次に、分散メモリストレージ管理部１３１は、ループ変数ｎに１加算する（ステップ１９０７）。分散メモリストレージ管理部１３１は、ループ変数ｎとステップ１９０２で取得した断片数とを比較し、両者が等しければ処理を終了する。ループ変数ｎが断片数に達していなければ、分散メモリストレージ管理部１３１は、ステップ１９０４の処理に戻り、次のファイル断片について同様に処理を行う（ステップ１９０８）。
【０１０２】
以上説明した実施形態によれば、複数のホストコンピュータを有して構成されるコンピュータシステムにおいて、複数ホストコンピュータ各々が有するメモリを統合した分散メモリストレージにファイルをキャッシュする際、ファイルに含まれるレコードのキーに従ってファイルが断片化され、分散メモリストレージを構成する各ホストコンピュータのメモリにキーレンジに従ってファイル断片が断片化配置される。各ホストコンピュータは、断片化配置された各ファイル断片に元のファイル名でアクセスすることができるため、従来のプログラムを改変することなく各ホストコンピュータ上で並列に動作させ、処理の高速化を図ることが可能になる。
【符号の説明】
【０１０３】
１０１、１０２  ホストコンピュータ
１０３  ストレージ装置
１０４  ネットワーク
１１１、１１２  プロセッサ
１１３、１１４  メモリ
１２１  ファイルシステムプログラム
１２２  分散メモリストレージ管理プログラム
１４１  分散メモリストレージアクセスプログラム
１１５、１１６  インタフェース
１６１  ユーザアプリケーションプログラム
【図１】
0005439236.tif 000002
【図２】
0005439236.tif 000003
【図３】
0005439236.tif 000004
【図４】
0005439236.tif 000005
【図５】
0005439236.tif 000006
【図６】
0005439236.tif 000007
【図７】
0005439236.tif 000008
【図８】
0005439236.tif 000009
【図９】
0005439236.tif 000010
【図１０】
0005439236.tif 000011
【図１１】
0005439236.tif 000012
【図１２】
0005439236.tif 000013
【図１３】
0005439236.tif 000014
【図１４】
0005439236.tif 000015
【図１５】
0005439236.tif 000016
【図１６】
0005439236.tif 000017
【図１７】
0005439236.tif 000018
【図１８】
0005439236.tif 000019
【図１９】
0005439236.tif 000020
【図２０】
0005439236.tif 000021