JP2011191835A - 計算機システムおよびアプリケーションプログラムの実行方法 - Google Patents

計算機システムおよびアプリケーションプログラムの実行方法 Download PDF

Info

Publication number
JP2011191835A
JP2011191835A JP2010055274A JP2010055274A JP2011191835A JP 2011191835 A JP2011191835 A JP 2011191835A JP 2010055274 A JP2010055274 A JP 2010055274A JP 2010055274 A JP2010055274 A JP 2010055274A JP 2011191835 A JP2011191835 A JP 2011191835A
Authority
JP
Japan
Prior art keywords
file
distributed memory
memory storage
information
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2010055274A
Other languages
English (en)
Other versions
JP5439236B2 (ja
Inventor
Toshiyuki Ukai
敏之 鵜飼
Tsuneo Iida
恒雄 飯田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2010055274A priority Critical patent/JP5439236B2/ja
Priority to US12/796,313 priority patent/US20110225215A1/en
Publication of JP2011191835A publication Critical patent/JP2011191835A/ja
Application granted granted Critical
Publication of JP5439236B2 publication Critical patent/JP5439236B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/1827Management specifically adapted to NAS

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】 複数のホストコンピュータを有して構成されるコンピュータシステムにおいて、従来のアプリケーションプログラムを改変することなく用いて処理の並列化を実現する。
【解決手段】 分散メモリストレージ管理部131が定義情報に従ってファイルを断片化し、各断片191を複数の物理メモリ領域171を統合して構成される分散メモリストレージに分割配置する。分散メモリストレージアクセス部151はUAP161からファイルへのアクセス要求を受け付け、ファイル管理情報137を参照して自ホスト計算機の物理メモリ領域171に断片化して配置された断片191へのアクセスを実行する。
【選択図】 図1

Description

本発明は、計算機システム及びそのアプリケーションプログラムの実行方法に係り、特に、アプリケーションプログラムを高速に実行するための方法及び計算機システムに関する。
近年、計算機システムにおいてアプリケーションプログラムが処理すべきデータ量は爆発的に増えてきている。計算機システムが扱うデータ量の増大に伴い、その処理時間が増加し、バッチジョブなどの処理が、所定の時間内に終わらないといった問題が生じてきている。このため、例えば、大量のデータを多数のサーバでデータを並列に処理して処理の高速化を図ることの要求が増大してきている。
従来のアプリケーションプログラムでは、一般に、データをファイル形式で扱っている。ファイルの使い方はアプリケーションプログラム毎に様々である。特に、メインフレームが使われるような基幹業務処理では、プログラミング言語としてCOBOLを用いて、アプリケーションプログラムが作成され、このようなアプリケーションプログラムでは、ファイルをレコードの集合として利用している。
レコードは、アプリケーションプログラムで処理するデータの基本単位であり、アプリケーションプログラムは、レコード単位でデータの入出力を行う。1件のレコードには、一連の関連する情報が格納されており、その情報の各項目はフィールドと呼ばれる。金融機関で扱われる類の情報を例にすると、1件の取引情報がレコードに、口座番号/店番号/商品コードといったひとつひとつの項目がフィールドに相当する。アプリケーションプログラムは、ファイルからレコードを1件ずつ順次読み出して処理を行う。このような形式のデータを従来のプログラムで並列して処理させることを考えた場合、データをレコード単位で分割して処理することが考えられる。このように、データを分割するのは、アプリケーションプログラムは、レコードを一件ずつ読み出して処理するため、単にデータの複製を作成し、複数のサーバで処理するだけでは、各サーバでの処理量が変わらないためである。
レコード単位のデータの分割という観点では、データベースをキーによってレコード単位で分割する分散データベース技術がある。例えば、特許文献1には、キーレンジによってデータベースのデータをレコードごとに分割し、処理の並列化を図ることが開示されている。
また、データの並列処理に関する技術として、大量のデータを多数のコンピューティングノードで処理することにより高速化を図る並列計算機技術が知られている。例えば、特許文献2には、大量のデータを、メッシュ状や一定間隔など規則的に分割して、各コンピューティングノードで並列に処理を行うことにより、処理の高速化を実現するための技術が開示されている。
一方、大量のデータを、多数のサーバを使って高速に処理するための基盤として、例えば、非特許文献1に示されるような分散メモリ技術(分散キャッシング技術)が提案されている。分散メモリ技術は、複数のサーバのメモリを統合して、大量のデータを格納するメモリ空間を構成する技術である。データの分割配置による処理の並列化と、データのメモリ内保持とにより入出力の高速化を狙うものである。
分散メモリ技術では、大量のデータを複数のPCサーバに分散させるために、キー・バリュー型データ形式が採用されている。キー・バリュー型データは、データの識別子であるキーと、データの本体であるバリュー(値)を対応づけたデータ構造で、[キー、バリュー]の組み合わせで管理される。キー・バリュー型データの実体は、オブジェクト指向におけるオブジェクトであり、分散メモリ技術を利用する場合、アプリケーションは基本的にオブジェクト指向言語で開発される。
分散メモリ技術では、キー・バリュー型データにより、キーの範囲(キーレンジ)に応じてデータを複数のサーバに分割配置し、分割配置されたデータを各サーバでアプリケーションが並列に処理することで処理を高速化する。
なお、データのインメモリ化に関しては、例えば、複数のサーバのメモリを統合して、一つの共有デバイスを作成し、ディスクなど通常のストレージと同様にデータの入出力を行うことを可能とする技術が知られている。
特開平5−334165号公報 特開平7−219905号公報
"GemFire Enterprise" Technical White Paper 2007GemStone Systems Inc.
上述したような従来技術を適用して、処理の対象となるデータを分割し、例えば、プログラム言語としてCOBOLを用いて作成された従来のアプリケーションプログラムにより、分割されたデータを並列処理することを考えた場合、もともと存在した巨大なデータを分割することになるため、例えば、元の巨大なデータと分割後のデータの対応付けを管理する必要があるなど、データの使い勝手が悪くなるという問題がある。
さらに、複数のサーバからなるシステムでは、いずれのサーバからも、ある一つデータに対して一意に決まる名前でアクセスできるように、共有ファイルシステムを利用してファイルシステム空間を共有することで使い勝手のよさを確保するケースが多い。この場合、分割後のデータには、それぞれ一意に決まる名前をつける必要があり、アプリケーションプログラムの実行環境では、分割後のファイル名が変更されることを意識してアプリケーションプログラムを実行する必要がある。
また、分散メモリ技術を利用する場合は、レコードを単位にデータの入出力を行う従来のアプリケーションプログラムをそのまま用いることができず、キー・バリュー型データ(オブジェクト)に対応したアプリケーションプログラムを新規に開発する必要がある。
以上のように、上述した従来技術では、従来のアプリケーションプログラムをそのまま用いて処理を並列化し、処理の高速化を図ることは困難であった。
上述した従来技術における課題を解決するために、本発明による計算機システムは、その好ましい態様において、ファイルを格納したストレージ装置と、ファイルのデータを用いて処理を行うアプリケーションプログラムと、アプリケーションプログラムからファイルのデータへのアクセス要求を受け付けてファイルのデータへアクセスするアクセス管理プログラムとを実行するプロセッサ、及びプロセッサによって参照される記憶装置を有する複数の計算機と、ストレージ装置に格納されたファイルを分割し、されたファイルの各々を複数の計算機の記憶装置内に確保された記憶領域を統合して構成される分散メモリストレージに配置する管理プログラムを実行するプロセッサ、及びプロセッサにより参照される記憶装置を有する管理計算機とを備える。
管理プログラムは、分散メモリストレージを構成する記憶領域の各々へのファイルデータの配置の方法を定義した断片化定義情報と、分散メモリストレージへのファイルデータの配置状態を管理するファイル管理情報とを保持し、管理プログラムにより、断片化定義情報に従ってストレージ装置に格納されたファイルのデータを分散メモリストレージ上に配置する。
アプリケーションプログラムは、複数の計算機の各々において実行され、アプリケーションプログラムからファイルのデータへのアクセスは、アクセス管理プログラムにより受け付けられる。アクセス管理プログラムは、管理プログラムからアクセスの対象とされたファイルに関するファイル管理情報を取得し、該ファイル管理情報に基づいて分散メモリストレージに配置されたデータへアクセスする。
本発明によれば、複数のホストコンピュータを有して構成されるコンピュータシステムにおいて、従来のアプリケーションプログラムを改変することなく用いて処理の並列化を実現し、処理の高速化を図ることが可能になる。
本発明が適用された計算機システムの一実施形態における簡略化されたシステム構成を示すブロック図である。 レコード定義情報133の構成を示す概念図である。 アプリケーションプログラムの一例を示すプログラムソースコードの説明図である。 断片化定義情報の構成を示す概念図である。 永続ストレージ−分散メモリストレージ対応付け情報の構成を示す概念図である。 分散メモリストレージ構成情報の構成を示す概念図である。 分散メモリストレージ管理情報の構成を示す概念図である。 分散メモリストレージ上のファイル管理情報の構成を示す概念図である。 分散メモリストレージ上にファイルが断片化されずに配置されている場合の割り当て情報を示す概念図である。 分散メモリストレージ上にファイル断片が分散して配置されている場合の割り当て情報を示す概念図である。 断片構成情報の構成を示す概念図である。 オープンファイル情報の構成を示す概念図である。 プル型のファイルロード方式におけるファイルのロード処理を示すフローチャートである。 プッシュ型のファイルロード方式におけるファイルのロード処理を示すフローチャートである。 ロード方式がプッシュ型に指定されているときのファイルのオープン処理を示すフローチャートである。 分散メモリストレージ上に配置されたファイルへの入出力処理を示すフローチャートである。 分散メモリストレージ上に断片化配置されたファイルからのデータの読み出し処理を示すフローチャートである。 分散メモリストレージ上に断片化配置されたファイルへのデータの書き込み処理を示すフローチャートである。 分散メモリストレージに断片化配置されたファイルのアンロード処理を示すフローチャートである。 入出力処理の対象とされるファイルの構成例を示す概念図である。
図1は、本発明が適用された計算機システムの一実施形態における簡略化されたシステム構成を示すブロック図である。
本実施形態の計算機システムは、ホストコンピュータ101、複数のホストコンピュータ102及びストレージ装置103を備える。ホストコンピュータ101は、ネットワーク104を介してホストコンピュータ102と接続される。本実施形態では、処理の対象とされるファイルを永続的に保持するストレージ装置としてストレージ装置103を使用するものとして説明するが、記憶媒体としてフラッシュメモリを用いた半導体ディスク装置や、光ディスク装置など、永続的にデータを保持することのできる記憶装置であればどのようなものをストレージ装置として用いてもかまわない。
ホストコンピュータ101は、相互に接続されたプロセッサ111、メモリ113、インタフェース(I/F)115を備える。ホストコンピュータ101は、I/F115aを介してストレージ装置103と、また、I/F115bを介してホストコンピュータ102と相互に接続される。
メモリ113には、ファイルシステムプログラム121、分散メモリストレージ管理プログラム122が格納されている。ファイルシステムプログラム121は、ストレージ装置103に格納されたデータであるファイル181を管理し、必要に応じてファイル181に対するデータの入出力処理を実行する。本実施形態では、システム全体で、ファイル名前空間が共有され、ファイル181に対して、システム全体で一意に決まる名前でアクセスする機能がファイルシステムプログラム121により提供される。ホストコンピュータ101及びホストコンピュータ102上で動作する各種プログラムからストレージ装置103に格納されたファイル181へのアクセスは、ファイルシステムプログラム121を介して行われる。
分散メモリストレージ管理プログラム122は、後述する分散メモリストレージを管理するプログラムである。分散メモリストレージ管理プログラム122は、分散メモリストレージの管理機能を実現するプログラムの本体である分散メモリ管理部131と、分散メモリ管理部131が利用する情報である分散メモリストレージ構成情報132、レコード定義情報133、断片化定義情報134、分散メモリストレージ管理情報135、永続ストレージ−分散メモリストレージ対応付け情報136、及び分散メモリストレージ上ファイル管理情報137を含んでいる。
本実施形態において、後述するホストコンピュータ101の機能は、プロセッサ111が、メモリ113に格納されたこれらのプログラムを実行することにより実現される。メモリ113は、たとえば、DRAMのような半導体メモリであって、ストレージ装置103に比べプロセッサ111からより高速にアクセスすることができる。ファイルシステムプログラム121、分散メモリストレージ管理プログラム122、及びその他のプログラムやデータは、常にメモリ113上に配置されている必要はなく、ストレージ装置103、あるいは図示しない外部記憶装置等に格納され、必要に応じてそれらの全体、あるいは一部がメモリ113上にコピーされてもよい。
ホストコンピュータ102は、相互に接続されたプロセッサ112、メモリ114、インタフェース(I/F)116を備える。ホストコンピュータ102は、I/F116を介してホストコンピュータ101、及び他のホストコンピュータ102と相互に接続される。ここでは、ホストコンピュータ102は同一の構成を持つものとして説明するが、以下に説明する機能、あるいは処理を実現できるものであれば、必ずしも同一の構成を有している必要はない。
メモリ114には、分散メモリストレージアクセスプログラム141、及びファイル181に保持されているデータを用いて処理を行うアプリケーションプログラム(UAP)161が格納される。ホストコンピュータ101と同様に、プロセッサ112がこれらプログラムを実行することにより、後述するホストコンピュータ102の機能が実現される。また、メモリ114は、メモリ113と同様、たとえば、DRAMのような半導体メモリであって、ストレージ装置103に比べプロセッサ111からより高速にアクセスすることができる。メモリ114に保持されるプログラムやデータも、常にメモリ114上に配置されている必要はなく、図示しないディスク装置等の外部記憶装置に格納され、必要に応じてそれらの全体、あるいは一部がメモリ114上にコピーされてもよい。また、メモリ114には、分散メモリストレージの記憶領域の一部を構成する物理メモリ領域171が確保される。
分散メモリストレージアクセスプログラム141は、物理メモリ領域171を管理し、自ホストコンピュータ及び他のホストコンピュータのメモリ114に確保された物理メモリ領域171によって構成される分散メモリストレージへのアクセスを制御する。分散メモリストレージアクセスプログラム141は、分散メモリストレージへのアクセスを制御するプログラムの本体である分散メモリアクセス部151、分散メモリストレージをアクセスするために分散メモリアクセス部151が利用する管理情報であるオープンファイル情報152、を含む。
物理メモリ領域171には、分散メモリストレージに格納されたファイル(図示せず)を構成するデータの断片191が格納される。本実施形態において、分散メモリストレージは、各ホストコンピュータ102が有する物理メモリ領域171を統合して構成される。分散メモリストレージは、ホストコンピュータ101、102からは、共有デバイスと同様にアクセスすることが可能である。処理に必要なデータを分散メモリストレージ上において利用することによって、ストレージ装置103に格納されたデータを利用するよりも入出力処理が高速化される。
上述したファイルシステムプログラム121、および、分散メモリストレージ管理プログラム122は、図示しないオペレーティングシステム(OS)の一部として、あるいは、図示しないユーザアプリケーションプログラムによって使用される入出力ライブラリとして提供されてもよい。分散メモリストレージ管理プログラム122は、各ホストコンピュータ102の分散メモリストレージアクセスプログラム141と協調して分散メモリストレージの構成や使用状況を管理し、ストレージ装置103から分散メモリストレージへのデータのロード、分散メモリストレージからストレージ装置103へのデータのアンロードなどを制御する。
図20は、本実施形態で処理の対象とされるファイルの構成例を示す概念図である。
ファイルァイル181は、UAP161により処理されるデータの基本単位となる複数のレコード2001、2002、2003、2004・・・を有して構成される。各レコード2001、2002、2003、2004・・・には、一連の関連する情報を格納した複数のフィールド2011、2012、2013・・・が含まれている。図20では、4つのレコードが図示されているが、一般に、システムの制約の範囲内において、1つのファイルは、任意の数のレコードを含むことができ、1つのレコードも、任意の数のレコードを含むことができる。たとえば、商品取引業務で用いられるようなデータの場合、1件の取引における取引情報によりレコードが構成され、口座番号、店番号、商品コード等の個々の情報(データ)がフィールドに記録される。
UAP161は、レコードを単位としてI/Oを行い、ファイルに対しレコードをファイルの先頭から1件ずつ順次入出力して処理を行う。本実施形態において、ファイル181は、レコード中の1つのフィールドをキーとして、UAP161により実施される処理に適合するようにレコード単位で分割される。分割されたファイル181は、複数のホストコンピュータ102上のUAP161にそれぞれ割り当てられ、複数のUAPにより並行して処理される。このように、1つのUAP161が処理するデータ量を削減して、複数のUAP161を並列実行することで、処理の高速化を図ることが可能となる。
図2は、レコード定義情報133の構成を示す概念図である。レコード定義情報133は、ファイルのレコードを認識し、ファイルをレコード単位で分割するために利用される情報である。レコード定義情報133は、レコード構成201、フィールド構成202、キー・フィールド番号203を含む。本実施形態において、レコード定義情報はストレージ装置103に格納されるファイルごとに設定される。
レコード構成201は、ファイル181内のレコード構成を識別するための情報であり、レコード種別211とレコード長212とを含む。レコード種別211は、ファイル181内のレコードが固定長レコードであるか可変長レコードであるかを示す情報である。レコード種別211が固定長レコードを示す場合、ファイル181は、それぞれ等しい所定の長さを持つレコードで構成される。レコード種別211が可変長レコードを示す場合、ファイル181を構成するレコードの長さがレコードにより異なる。レコード長212は、レコード種別211が固定長レコードを示す場合に、1つのレコードの長さを示す情報である。フィールド構成202は、レコード内のフィールドを識別するための情報であり、1つのレコードに含まれるフィールドの数を示すフィールド数221と、各フィールドに対応したフィールド情報222を含む。フィールド情報222は、対応するフィールドに記録されるデータに関する情報であり、フィールド種別230、サイズ231と記述形式232を含む。フィールド種別230は、レコード種別211が可変長レコードの場合に、対応するフィールドが可変長フィールドか固定長フィールドかを示す情報である。サイズ231は、フィールド種別231が固定長の場合には対応するフィールドのフィールド長を示し、可変長の場合は対応するフィールドの“フィールド長”を示す情報を格納したレコード内の領域のサイズを示す。記述形式232は、ASCII、バイナリ等、対応するフィールドに記録されたデータの記述形式を示す。キー・フィールド番号203は、ファイル181を分割する際に、レコード中のどのフィールドをキーとして使うかを示す情報である。
ファイル181が固定長レコードで構成される場合、レコード長212に設定された値によって個々のレコードを認識することができる。一方、ファイル181が可変長レコードで構成される場合、各レコードの先頭には、そのレコードの大きさを記録するフィールドが設けられ、この情報によりレコードの区切りを判別することができる。可変長レコードである場合、フィールド構成202に設定されている情報から最初のフィールドを識別し、レコードサイズが求められる。レコードが認識された後は、フィールド構成202のフィールド数221、フィールドサイズ222を参照してフィールドが識別される。
図3は、本実施形態UAP161のソースプログラムの一例を示すプログラムソースコードの説明図である。
本実施形態において、UAP161は、COBOL言語により記述される。COBOLプログラムでは、プログラム中でファイルのレコード構造が定義される。図3に示すソースプログラム301はCOBOL言語で記述されたプログラムの一例であり、DATA DIVISIONのFILE SECTION302においてデータファイルの構造が定義される。プログラムによって利用される各ファイルは、一つのファイル記述項(FD)とそれに続く一つ以上のレコード記述項によって定義される。本実施形態において、レコード定義情報133のレコード構造201およびフィールド構造202は、FILE SECTION302に記述された情報を用いて設定することができる。
図4は、断片化定義情報134の構成を示す概念図である。断片化定義情報134は、後述するように、ファイル181を分割し、分散メモリストレージを構成する各ホストコンピュータ102の物理メモリ領域171に断片化して配置する場合に、分割された各断片をどのように配置するかを決める際に用いられる。断片化定義情報134は、配置ポリシー401、配置領域数402、キーレンジ指定情報403などの情報を含む。
配置ポリシー401は、例えば「キーレンジ指定」や「ソートあり利用量平準化」「ソートなし利用量平準化」など、ファイル181の分割ポリシーを指定する情報である。「キーレンジ指定」は、後述するキーレンジ指定情報403に設定された情報に従ってファイル181を分割し、分割されたファイル181の各部分のレコードを分散メモリストレージに配置することを示す。「ソートあり利用量平準化」は、ファイル181を分割して分散メモリストレージに配置する際に、キー・フィールド番号203で指定されたフィールドのデータによりレコードの順番をソートするとともに、レコードの数が分散メモリストレージを構成する各物理メモリ領域171間で平準化して配置されるようにレコードを振り分けることを示す。「ソートなし利用量平準化」は、「ソートあり利用量平準化」のようにレコード順のソートを行わずにレコードの配置を行うことを示す。
配置領域数402は、ファイル181を断片化して配置する際に、ファイルの断片が配置される物理メモリ領域171の数をいくつにするかを示す情報である。
キーレンジ指定情報403は、複数のキーレンジ情報411を含む。各キーレンジ情報411は、キーの始端421、終端422、および、物理メモリ領域ID423を含む。キーレンジ情報411は、始端421と終端422で特定される範囲に属するレコードを、どの物理メモリ領域171に配置するかを示す情報である。
図5は、永続ストレージ−分散メモリストレージ対応付け情報136の構成を示す概念図である。永続ストレージ−分散メモリストレージ対応付け情報136は、ストレージ装置103に格納されているファイル181と分散メモリストレージ上のファイルとを対応付けるための情報である。永続ストレージ−分散メモリストレージ対応付け情報136は、キャッシュポイント501、分散メモリストレージID502、及びロード方式503を含む。
キャッシュポイント501は、ファイルシステム121によって提供されるシステム全体のファイル名前空間上で、キャッシュ、すなわち、分散メモリストレージに配置するディレクトリ、または、ファイルを指定するための情報である。キャッシュポイント501にディレクトリが指定された場合は、指定されたディレクトリ下にあるファイルがキャッシュの対象となる。分散メモリストレージID502は、キャッシュポイント501で指定ディレクトリ、または、ファイルを配置する分散メモリストレージを指定する情報である。
ロード方式503は、キャッシュポイント501で指定されたディレクトリ、または、ファイルを分散メモリストレージID502で指定される分散メモリストレージにロードする契機を示す情報である。ロード方式503には、「プッシュ」または「プル」が設定される。ロード方式503に「プッシュ」が設定されている場合、そのファイルを使用するアプリケーションプログラムの実行前に、ファイルの使用を宣言することによって、あらかじめ、分散メモリストレージにファイルがロードされる。ロード方式503に「プル」が設定されている場合、対象のファイルがオープンされたときに、そのファイルが分散メモリストレージにロードされる。
図6は、分散メモリストレージ構成情報132の構成を示す概念図である。分散メモリストレージ構成情報132は、分散メモリストレージとそれを構成する物理メモリ領域171との関係を示す情報である。分散メモリストレージ構成情報132は、分散メモリストレージを識別するための分散メモリストレージID601、領域数602、及び物理メモリ領域情報603を含む。
領域数602は、分散メモリストレージを構成する物理メモリ領域171の数を示す情報である。物理メモリ領域情報603は、分散メモリストレージを構成する物理メモリ領域171を識別するための情報、物理メモリ領域171のサイズなど、分散メモリストレージを構成する物理メモリ領域に関する情報である。物理メモリ領域情報603は、ホストコンピュータID611、物理メモリ領域ID612、及び物理メモリ領域のサイズ613を含む。ホストコンピュータID611は、分散メモリストレージを構成する物理メモリ領域171を有するホストコンピュータ102を識別する情報である。システム内で個々のホストコンピュータ102を識別できればどのような情報を用いてもよく、システム内で一意に付与されるホスト名や、ホストコンピュータ102のネットワークI/Fに付随するIPアドレスなどを使うことができる。領域ID612は、ホストコンピュータ102内に複数の物理メモリ領域が確保されている場合に、分散メモリストレージID601で識別される分散メモリストレージを構成するために割り当てられている物理メモリ領域171を識別するための情報である。領域ID612は、物理メモリ領域を一意に識別できればどのような情報であってもよいが、ここでは物理アドレス用いるものとする。
図7は、分散メモリストレージ管理情報135の構成を示す概念図である。分散メモリストレージ管理情報135は、分散メモリストレージの使用状況など動的に変動する情報を管理するために用いられる。分散メモリストレージ管理情報135は、分散メモリストレージを識別するための分散メモリストレージID701、領域数702、及び物理メモリ領域情報703を含む。
領域数702は、分散メモリストレージID701で識別される分散メモリストレージを構成する物理メモリ領域171の数を示す情報である。物理メモリ領域情報703は、メモリストレージ構成情報132内で対応する位置にある物理メモリ領域情報603に設定された情報で識別される物理メモリ領域の使用状況を示す情報である。物理メモリ領域情報703は、総ブロック数711、割り当て済みブロック数712などの情報を含む。ここでブロックとは、物理メモリ領域、および、分散メモリストレージ領域の管理単位となる所定のサイズの記憶領域である。分散メモリストレージ管理部131は、分散メモリストレージに配置されたファイルをブロック単位で管理する。総ブロック数711は、それを含む物理領域情報703に対応する物理領域情報603で識別される物理メモリ領域171に含まれるブロックの総数を示す。割り当て済みブロック数712は、それを含む物理領域情報703に対応する物理領域情報603で識別される物理メモリ領域171に含まれるブロックのうち、実際に使われているブロックの数を示す。
図8は、分散メモリストレージ上のファイル管理情報137の構成を示す概念図である。分散メモリストレージ上ファイル管理情報137は、分散メモリストレージ上に存在するファイルに対して作成される情報で、分散ストレージ上に配置されたファイルを管理するための情報である。分散メモリストレージ上ファイル管理情報137は、ファイルのアクセス権限を表すパーミッション情報1311、ファイルを所有するユーザを示すオーナー情報1312、ファイルのサイズを示すサイズ1313、分散メモリへのファイルの配置方法を示す配置方法1314、分散メモリストレージの管理単位であるブロックのファイルへの割り当てを示す割り当て情報1315などを含む。これらの情報は、後述する分散メモリストレージ上へのファイルのロード時に設定される。
配置方法1314には、分散メモリストレージ上に配置されているファイルの配置方法が設定される。本実施形態では、ファイルの配置方法として、ファイルが複数の断片に分割され、複数のホストコンピュータ102の物理メモリ領域171に分散して配置される「断片化」(以下このようなファイルの配置を“断片化配置”という)と、ファイルが複数の断片に分割されることなく複数のホストコンピュータ102の物理メモリ領域171に配置される「通常」(以下、このようなファイルの配置を“通常配置”という)とがある。配置方法1314には、配置方法に応じて「断片化」あるいは「通常」を示す情報が設定される。割り当て情報1315には、分散メモリストレージ上にファイルが「断片化」により配置されるか否かによって設定される情報が異なる。以下、割り当て情報1315について説明する。
図9は、分散メモリストレージ上にファイルが通常配置されている場合の割り当て情報1315を示す概念図である。通常配置では、複数の物理メモリ領域で構成される分散メモリストレージがあたかも1つのメモリ領域であるかのように扱われる。
本実施形態において、物理メモリ領域171は、その管理を容易なものとするため所定の大きさのブロックを単位に管理される。ファイルが断片化されない場合、ファイルは、ストレージ装置103上へのファイルの一般的な格納の場合と同様、ファイルのオフセットに対して、1対1で決まるブロックが割り当てられる。割り当て情報1315には、ファイルを格納するために割り当てられたブロックを識別するインデックス1501が、ファイルの先頭を格納したブロックから順に設定される。この他、オフセット+サイズのエクステントでファイルのデータが記憶される領域を管理するようにしてもよい。
図10は、分散メモリストレージ上にファイルが断片化配置されている場合の割り当て情報1315を示す概念図である。
断片化されたファイルの割り当て情報1316は、分散メモリストレージに断片化配置されたファイルに対するブロックの割り当てを示す情報である。
断片数1401は、ファイルがいくつの断片に分割されているかを示す情報である。この数は図4で説明した断片化定義情報134の配置領域数402で指定された数と同じになる。 ファイルが分割されて、複数のホストコンピュータ102の物理メモリ領域171に分散して配置される場合、ファイル内のデータは、まず、分割された断片に関連付けることができ、さらに、その断片に割り当てられた物理メモリ領域171のブロックに関連付けることができる。つまり、ファイル内のデータを記憶する物理メモリ領域171のブロックは、2段階でファイル内のデータのために割り当てられることになる。断片構成情報1403は、分割されたファイルの各断片について、それぞれ断片に割り当てられる物理メモリ領域171のブロックに関する情報を保持する。
図11は、断片構成情報1403の構成を示す概念図である。断片構成情報1403は、ホストコンピュータID1601、使用ブロック数1602、断片サイズ1603、及び複数組のブロックのインデックス1604とブロックの未使用サイズ1605を含む。
ホストコンピュータID1601は、断片構成情報1403が対応するファイル断片を記憶するために割り当てられた物理メモリ領域171を有するホストコンピュータ102を識別するための情報である。使用ブロック数1602は、対応するファイル断片を記憶するために割り当てられている物理メモリ領域171のブロックの数を示す情報である。断片サイズ1603は、対応するファイル断片の大きさを示す情報である。ブロックインデックス1601は、断片構成情報1403が対応するファイル断片を保持するために割り当てられているブロックを識別する情報であり、未使用サイズ1605は、そのブロックでファイルのレコードを記憶するために利用されていない未使用の領域の大きさを示す情報である。
分散メモリストレージに配置されたファイルは、レコード単位で利用されるため、図11に示すように、物理メモリ領域171内のブロック1611上にレコード1621を単位として保持される。通常、ブロック1611とレコード1621の境界は一致しないため、ブロック1611内に1つのレコード1621よりも小さい未使用の領域が生じる。この未使用の領域のサイズが未使用サイズ1605としてブロックごとに保持される。また、ファイル断片の終端でも同様の未使用領域1623が発生する。ファイル断片の終端に生じる未使用領域1623についても同様にブロックの未使用サイズ1605として管理される。ただし、このような断片構成情報1403は、分散メモリストレージアクセス部151が、レコード単位の入出力要求を直接受ける環境における場合に必要となるものである。分散メモリストレージアクセス部151が受ける入出力要求が、途中のライブラリレイヤの処理で、バッファリングされる場合は、未使用領域サイズの管理は不要であり、1つのレコードを構成するデータが異なるブロックに跨っているかどうかを意識する必要はない。このような場合は、断片構成情報1403内のブロックの未使用サイズ1605は不要となる。
図12は、オープンファイル情報152の構成を示す概念図である。オープンファイル情報152は、分散メモリストレージアクセスプログラム141が有する情報であり、ホストコンピュータ102上でオープンされ分散メモリストレージ上のファイルに関して保持される情報である。オープンファイル情報152は、ファイルアクセスモード801とファイルポインタ802を含む。
ファイルアクセスモード801には、分散メモリストレージアクセスプログラム141によるオープン処理時に、分散メモリストレージ上へのファイルの配置の仕方に応じて決定されるアクセスモードが設定される。すなわち、ファイルの配置が断片化配置の場合「断片化」が、通常配置の場合「通常」がファイルアクセスモード801として設定される。ファイルアクセスモード801が「通常」の場合、UAP161によるファイルの入出力は、ファイルの先頭のレコードから順次行われる。一方、ファイルアクセスモード801が「断片化」の場合、各UAP161によるファイルの入出力は、それぞれが実行されるホストコンピュータ102の物理メモリ領域171に保持されたファイル断片の先頭のレコードから順次行われる。
ファイルポインタ802は、ファイルアクセスにより読み書きの対象となるレコードの先頭位置を示す情報である。ファイルアクセスモード801が「通常」の場合、ファイルポインタ802には、ファイルの入出力の際に、読み出し、あるいは書き込みが行われたレコードの次のレコードの先頭を示す情報が設定される。また、ファイルアクセスモード801が「断片化」の場合は、後述するレコード先頭への位置づけ処理によって次のファイルアクセスにより読み書きされるレコードの先頭を示す情報が設定される。
断片化定義情報134、ファイル管理情報137、及びオープンファイル情報152は、利用されるファイルごとに保持される。特に図示していないが、これらの情報には、どのファイルに関係する情報であるかを識別可能とするために、関係するファイルのファイル名、あるいはファイルID等、関係するファイルを識別するための情報を含んでよい。
図13は、プル型のファイルロード方式におけるファイルのロード処理を示すフローチャートである。ロード処理は、ホストコンピュータ102において、UAP161からファイルのオープン要求が発行されることを契機に、分散メモリストレージアクセスプログラム141の分散メモリストレージアクセス部151、及び分散メモリストレージ管理部131において実行される。
ホストコンピュータ102上のUAP161がファイルを指定してオープン要求を発行すると、その要求は、分散メモリストレージアクセス部151により受け付けられる。分散メモリストレージアクセス部151により受け付けられたオープン要求は、ホストコンピュータ101の分散メモリストレージ管理部131に送られる(ステップ900)。
分散メモリストレージ管理部131は、オープン要求を受け取ると、永続ストレージ−分散メモリストレージ対応付け情報136のロード方式503に、設定されているロード方式が「プル」であるか「プッシュ」であるか判定する。設定されたロード方式が「プッシュ」である場合は、図15に示すオープン処理が実施される(ステップ901)。
永続ストレージ−分散メモリストレージ対応付け情報136のロード方式503に、設定されているロード方式が「プル」である場合、分散メモリストレージ管理部131は、さらに、永続ストレージ−分散メモリストレージ対応付け情報136を参照し、オープン要求で指定されたファイルが分散メモリストレージ上にキャッシュすべきファイルか否か判別する。この判断は、オープン要求で指定されたファイルが、永続ストレージ−分散メモリストレージ対応付け情報136のキャッシュポイント501により、キャッシュするファイルとして指定されているか否かを調べることにより行われる(ステップ902)。
ステップ902において、オープン要求で指定されたファイルが、キャッシュの対象として指定されていると判定された場合、分散メモリストレージ管理部131は、UAPより受け付けたオープン要求で指定されたファイルのオープン処理をファイルシステム121に要求する(ステップ903)。オープン処理の要求に対する応答をファイルシステム121から受け取ると、分散メモリストレージ管理部131は、ファイルシステム121からの応答に基づいて、指定されたファイルがストレージ装置103に存在するか否か判定する(ステップ904)。ステップ904で、ファイルがストレージ装置103に存在すると判定された場合、分散メモリストレージ管理部131は、さらに、オープン要求で指定されたファイルに関するレコード定義情報133、および、断片化定義情報134が存在するかどうか判定する(ステップ905)。
ステップ905で、オープン要求で指定されたファイルのレコード定義情報133、および、断片化定義情報134が存在すると判定された場合、分散メモリストレージ管理部131は、レコード定義情報133を参照してファイルのレコード構成を把握し、ファイルシステム121を介してファイルのデータをストレージ装置103から読み出す。分散メモリストレージ管理部131は、断片化定義情報134の定義に従って読み出したファイルを分割し、分散メモリストレージアクセス部151を介して、分割されたファイル断片のデータを分散メモリストレージ上に分散させて配置する。また、分散メモリストレージ管理部131は、ファイル管理情報137を作成し、配置方法1314に「断片化」を設定するとともに、ファイルデータの配置に合わせて割り当て情報1315を設定する(ステップ906)。
ステップ905において、オープン要求で指定されたファイルのレコード定義情報133、および、断片化定義情報134が存在しないと判定された場合、分散メモリストレージ管理部131は、ファイルを分割せずに、「通常」モードで分散メモリストレージへ配置する。具体的に、分散メモリストレージ管理部131は、分散メモリストレージ構成情報132を参照して分散メモリストレージを構成する物理メモリ領域に、その物理メモリ領域が存在するホストコンピュータ102の分散メモリストレージアクセス部151を介して順次データを配置する。このとき、分散メモリストレージ管理部131は、ファイル管理情報137を作成し、配置方法1314に「通常」を設定するとともに、ファイルデータの配置に合わせて割り当て情報1315を設定する(ステップ907)。
一方、ステップ904で指定されたファイルがストレージ装置103に存在しないと判定された場合、分散メモリストレージ管理部131は、新たなファイルの作成が指定されているかどうかを判定する(ステップ908)。ファイルの作成が指定されていない場合、分散メモリストレージ管理部131は、オープン処理の要求元に「オープンエラー」通知し、処理を終了する(ステップ909)。
ステップ908で、ファイル作成が指定されていると判定された場合、分散メモリストレージ管理部131は、指定されたファイルのレコード定義情報133、および、断片化定義情報134が存在するかどうかを判定する(ステップ910)。レコード定義情報133、および、断片化定義情報134が存在すると判定された場合、分散メモリストレージ管理部131は、ファイル管理情報137を作成してその配置方法1314に「断片化」を設定する(ステップ911)ステップ910で、レコード定義情報133、および、断片化定義情報134が存在しないと判定された場合、分散メモリストレージ管理部131は、配置方法1314に「通常」を設定したファイル管理情報137を作成する(ステップ912)。
ステップ906、907、911、及び912の処理の後、分散メモリストレージアクセス部151は、オープンファイル情報152を初期化する。ファイルが断片化配置された場合、ファイルアクセスモード801には「断片化」が、ファイルが通常配置された場合は、「通常」がそれぞれ設定される。ファイルポインタには、ファイルが断片化配置された場合は、それぞれのホストコンピュータが有する物理メモリ領域内のファイル断片の先頭を指し示す情報が設定され、ファイルが通常配置された場合は、分散メモリストレージ内のファイルの先頭を指し示す情報が設定される。なお、ここで設定される情報は、例えば、ステップ906、907、911、及び912において、データの配置とともに分散メモリストレージ管理部131から通知される情報を用いるようにすることができる(ステップ913)。
ステップ902で、オープン要求で指定されたファイルが、キャッシュの対象として指定されていないと判定された場合、分散メモリストレージ管理部131は、ファイルシステムプログラム121を介して、ストレージ装置103に格納されているファイルに対する通常のオープン処理を行なう(ステップ914)。
以上の処理を終えた後、分散メモリストレージ管理部131は、分散メモリストレージアクセス部151を介して処理を要求したUAP161に処理の狩猟を報告する(ステップ915)。
図14は、プッシュ型のファイルロード方式におけるファイルのロード処理を示すフローチャートである。この処理は、永続ストレージ−分散メモリストレージ対応付け情報136のロード方式503に、「プッシュ」が指定されている場合に、分散メモリストレージ管理部131、及び、分散メモリストレージアクセス部151により実行される。プッシュ型のファイルロード形式では、ホストコンピュータ102上でのUAP161の実行前に、UAP161により使用されるファイルが予め分散メモリストレージにロードされる。この処理は、例えば、ユーザにより入力され、あるいはジョブ制御プログラムやUAPにより発行される専用のコマンドを用いたファイルの使用開始宣言を契機に実行される。
UAP161の実行開始に先立ってファイルを指定した使用開始宣言が発行されると、この使用開始宣言は、分散メモリストレージアクセス部151、または、分散メモリストレージ管理部131により受け付けられる。分散メモリストレージアクセス部151が使用開始宣言を受け付けた場合、その使用開始宣言は、分散メモリストレージアクセス部151から分散メモリストレージ管理部131に送られる(ステップ1000)。分散メモリストレージ管理部131は、使用開始宣言を受け付けると、ステップ902と同様にして、指定されたファイルが分散メモリストレージ上にキャッシュすべきファイルかどうかを判定する(ステップ1001)。
指定されたファイルが分散メモリストレージ上にキャッシュすべきファイルであると判定された場合、分散メモリストレージ管理部131は、ストレージ装置103に格納されているファイルを読み出し、分散メモリストレージ上に配置するため、ファイルシステム121に対して、使用開始宣言で指定されたファイルのオープン処理を要求する(ステップ1002)。ファイルシステム121から要求に対する応答があると、分散メモリストレージ管理部131は、指定されたファイルに関するレコード定義情報133、および、断片化定義情報134が存在するかどうか判定する(ステップ1003)。指定されたファイルに関するレコード定義情報133、及び断片化定義情報134が存在すると判定された場合、分散メモリストレージ管理部131は、ステップ906と同様にして、指定されたファイルを分散メモリストレージ上に断片化配置し、ファイル管理情報137を作成する(ステップ1004)。一方、ステップ1003で指定されたファイルに関するレコード定義情報133と断片化定義情報134が存在しないと判定された場合、分散メモリストレージ管理部131は、ステップ907と同様に、指定されたファイルを通常モードでファイルを分散メモリへ配置し、ファイル管理情報137を作成する(ステップ1005)。
ステップ1001において、ファイルがキャッシュの対象として指定されていないと判定された場合、分散メモリストレージ管理部131は、使用開始宣言をストレージ装置103上のファイルに対する通常のアクセスとして処理する(ステップ1007)。
上述したロード処理により、ストレージ装置103に格納されているファイルのうち、指定されたファイルをUAP161からの要求に応じて、あるいは、UAP161の実行に先行して分散メモリストレージに配置することが可能となる
図15は、ロード方式がプッシュ型に指定されているときのファイルのオープン処理を示すフローチャートである。この処理は、図13に示すオープン処理のステップ901において、永続ストレージ−分散メモリストレージ対応付け情報136のロード方式503に、「プッシュ」が指定されていると判定された場合に実行される。
分散メモリストレージ管理部131は、受け取ったオープン要求で指定されたファイルが分散メモリストレージに存在するかどうか判定する。この判定は、指定されたファイルに関するファイル管理情報137が作成されているか否かにより行うことができる。ファイル管理情報137が作成されている場合、上述したプッシュ型のロード処理により、ファイルのデータが分散メモリストレージ上に配置されていることになる(ステップ1102)。指定されたファイルが分散メモリストレージ上に存在する場合、分散メモリストレージ管理部131は、分散メモリストレージアクセス部を介して処理の完了をUAPに返し処理を終了する(ステップ1108)。
一方、ステップ1102で指定されたファイルが分散メモリストレージに存在しないと判定された場合、分散メモリストレージ管理部131は、ファイルの作成が指定されているかどうか判定する(ステップ1103)。ファイルの作成が指定されていない場合、分散メモリストレージ管理部131は、分散メモリストレージアクセス部151を介してUAP161に「オープンエラー」を通知して処理を終了する(ステップ1108)。
ステップ1103で、ファイル作成が指定されていると判定された場合、分散メモリストレージ管理部131は、指定されたファイルのレコード定義情報133と断片化定義情報134が存在するかどうか判定する(ステップ1104)。指定されたファイルのレコード定義情報133と断片化定義情報134が存在すると判定された場合、分散メモリストレージ管理部131は、ステップ911と同様に、ファイル管理情報137を作成し、その配置方法1314に「断片化」を設定する(ステップ1105)。ステップ1104で、指定されたファイルのレコード定義情報133と断片化定義情報134が存在しないと判定された場合、分散メモリストレージ管理部131は、ステップ912と同様に、分散メモリストレージ上のファイル管理情報137を作成し、配置方法1314に「通常」を設定する(ステップ1106)。これらの処理の後、分散メモリストレージアクセス部151により、ステップ913と同様に、オープンファイル情報152が初期化される(ステップ1107)。この後、ステップ1108の処理が実行され、UAP161に処理の完了が報告される。
このファイルオープン処理により、予め分散メモリストレージ上に配置されたファイルのオープン処理をすることが可能になる。
図16は、分散メモリストレージ上に配置されたファイルへの入出力処理を示すフローチャートである。この処理は、ホストコンピュータ102において、UAP161から発行されたファイルのオープン要求に対する処理が完了した後、UAP161から入出力要求が発行されることを契機に実行される。
分散メモリストレージアクセス部151は、UAP161からの入出力要求を受け取ると(ステップ1201)、分散メモリストレージ管理部131にアクセス対象のファイルに関するファイル管理情報137を要求し、ファイル管理情報137を取得する。なお、ファイル管理情報137は、先行する入出力要求の処理の際に取得したものをメモリ114に保持しておいてもよく、あるいは、オープン処理の際に分散メモリストレージ管理部131から分散メモリアクセス部151にその写しを予め転送しておき、メモリ114に保持しておくようにしてもよい。(ステップ1202)。
分散メモリストレージアクセス部151は、入出力要求の対象となるファイルが分散メモリストレージ上に断片化されて配置されているかどうか判定する。この判定は、ファイル管理情報137の配置方法1314に設定されている情報が「断片化」であるか「通常」であるかにより行われる(ステップ1203)。
入出力要求の対象ファイルが分散メモリストレージに断片化されて配置されている場合、分散メモリストレージアクセス部151は、後述するように、分散メモリストレージ上に断片化されて配置されたファイル対する入出力処理を行う(ステップ1204)。一方、入出力要求の対象ファイルが断片化されずに分散メモリストレージに通常モードで配置されている場合、分散メモリストレージアクセス部151は、分散メモリストレージ上に通常配置されたファイルに対する入出力処理を行う。この場合に行われる入出力処理は通常のファイルシステムの入出力処理と同様の処理となるので、ここではその説明を省略する(ステップ1205)。
図17は、分散メモリストレージ上に断片化配置されたファイルからのデータの読み出し処理を示すフローチャートである。この処理は、UAP161から発行された入出力要求が分散メモリストレージ上に断片化配置されたファイルを対象とした読み出し要求である場合に、図16のステップ1202で実施される処理である。
分散メモリストレージアクセス部151は、UAP161から発行された入出力要求が分散メモリストレージに断片化配置されたファイルを対象とするものである場合、その入出力要求がファイルからのデータの読み出し要求であるか書き込み要求か判定し、書き込み要求であれば後述する書き込み処理を実行する(ステップ1701)。
入出力要求が読み出し要求である場合、分散メモリストレージアクセス部151は、ファイル管理情報137の断片構成情報1403に設定されているホストコンピュータID1601を参照して、自ホストコンピュータ(処理を実行しているホストコンピュータ102)のホストコンピュータID1601が設定された断片構成情報1403が存在するか判定する。該当する断片構成情報1403が存在する場合、自ホストコンピュータにアクセス対象とされているファイルの断片を記憶した物理メモリ領域171が存在し、自ホストコンピュータに読み出しの対象となるファイル断片が存在することになる。該当する断片構成情報1403が存在しない場合、分散メモリストレージアクセス部151はそのまま処理を終了する(ステップ1702)。
該当する断片構成情報1403が存在する場合、分散メモリストレージアクセス部151は、その断片構成情報1403を取得する(ステップ1703)。分散メモリストレージアクセス部151は、オープンファイル情報142のファイルポインタ802の値と、アクセス要求で指定された読み出しサイズから読み出しの対象となるデータを格納しているブロックを判別し、そのブロックからデータを読み出す(ステップ1704)。この後、分散メモリストレージアクセス部151は、オープンファイル情報142のファイルポインタ802を更新して読み出し処理を終了する。このとき、データを読み出したブロックの残りサイズが、そのブロックについて未使用サイズ1605に設定されているサイズ以下であれば、分散メモリストレージアクセス部151は、ファイルポインタ802を次のブロックの先頭を指すように更新する(ステップ1705)。
図18は、分散メモリストレージ上に断片化配置されたファイルへのデータの書き込み処理を示すフローチャートである。この処理は、UAP161から発行された入出力要求が分散メモリストレージ上に断片化配置されたファイルに対する書き込み要求である場合に、図16のステップ1202で実施される処理であり、図17のステップ1701でアクセス要求が読み出し要求であると判別されたときに実行される。
分散メモリストレージアクセス部151は、UAP161から発行された入出力要求が、分散メモリストレージに断片化配置されたファイルへの書き込み要求である場合、ファイル管理情報137の断片構成情報1403に設定されているホストコンピュータID1601を参照して、自ホストコンピュータ(処理を実行しているホストコンピュータ102)のホストコンピュータID1601が設定された断片構成情報1403が存在するか判定する。該当する断片構成情報1403が存在する場合、自ホストコンピュータにアクセス対象とされているファイルの断片を記憶した物理メモリ領域171が存在し、自ホストコンピュータに読み出しの対象となるファイル断片が存在することになる(ステップ1801)。該当する断片構成情報1403が存在する場合、分散メモリストレージアクセス部151は、その断片構成情報を取得する(ステップ1802)。該当する断片構成情報1403が存在しなかった場合、分散メモリストレージアクセス部151は、データを書き込むために対象ファイルのファイル断片を記憶する物理メモリ領域171を確保して、断片構成情報1403を新たに作成する。このとき、ホストコンピュータID1601には、処理を行っているホストコンピュータ102の識別情報が設定される。分散メモリストレージアクセス部151は、また、アクセス対象のファイルについてのオープンファイル情報142を作成し、ファイルポインタ802が最初のブロックの先頭を指すように値を設定する(ステップ1803)。
次に、分散メモリストレージアクセス部151は、オープンファイル情報142のファイルポインタ802の値と書き込みが要求されたレコードのサイズから現在利用しているブロック内にレコードを書き込めるか否か評価する。ファイルポインタ802によりポイントされた位置以降のブロック内にレコードが収まらない場合、分散メモリストレージアクセス部151は、ブロックの未使用サイズ1605にブロックの残りの量を登録し、ファイルポインタ802が次のブロックの先頭を指すようにファイルポインタの値を更新する(ステップ1804)。その後、分散メモリストレージアクセス部151は、ファイルポインタ802で指示される位置からレコードのデータを書き込み、ファイルポインタ802を次のレコードの先頭位置を指し示すように更新して書き込み処理を終了する。なお、ファイル管理情報137に変更があった場合、分散メモリストレージアクセス部151は、その変更内容を分散メモリストレージ管理部131に通知し、分散メモリストレージアクセス部151が有するファイル管理情報137にその変更を反映させる(ステップ1805)。
図19は、分散メモリストレージに断片化配置されたファイルのアンロード処理を示すフローチャートである。この処理はファイルの使用が終了したときに実行される。例えば、UAP161によるファイルのクローズ要求や、プッシュ型のファイルロード方式における使用開始宣言と対をなす使用終了宣言を契機として、または、分散メモリストレージのLRU管理等によりファイルが分散メモリストレージ上から追い出される際に、分散メモリストレージ管理部131により実行される。
分散メモリストレージ管理部131は、アンロードの対象となるファイルに関するファイル管理情報137を参照して(ステップ1901)、割り当て情報1316に設定されている断片数1401を取得する(ステップ1902)。そして、分割されたファイルの各断片についての断片構成情報1403を取得するため、ループ変数nに0をセットする(ステップ1903)。
その後、分散メモリストレージ管理部131は、割り当て情報1316からn番目の断片構成情報1403を取得する(ステップ1904)。分散メモリストレージ管理部131は、取得した断片構成情報1403のホストコンピュータID1601で識別されるホストコンピュータ102の分散メモリストレージアクセス部151を介して、そのホストコンピュータ102の物理メモリ領域171に記憶されているファイル断片を取得する(ステップ1905)。ホストコンピュータ102から取得されたファイル断片は、永続ストレージ−分散メモリストレージ対応付け情報136から求まるストレージ装置103上のファイルに順次書き込まれる(ステップ1906)。
次に、分散メモリストレージ管理部131は、ループ変数nに1加算する(ステップ1907)。分散メモリストレージ管理部131は、ループ変数nとステップ1902で取得した断片数とを比較し、両者が等しければ処理を終了する。ループ変数nが断片数に達していなければ、分散メモリストレージ管理部131は、ステップ1904の処理に戻り、次のファイル断片について同様に処理を行う(ステップ1908)。
以上説明した実施形態によれば、複数のホストコンピュータを有して構成されるコンピュータシステムにおいて、複数ホストコンピュータ各々が有するメモリを統合した分散メモリストレージにファイルをキャッシュする際、ファイルに含まれるレコードのキーに従ってファイルが断片化され、分散メモリストレージを構成する各ホストコンピュータのメモリにキーレンジに従ってファイル断片が断片化配置される。各ホストコンピュータは、断片化配置された各ファイル断片に元のファイル名でアクセスすることができるため、従来のプログラムを改変することなく各ホストコンピュータ上で並列に動作させ、処理の高速化を図ることが可能になる。
101、102 ホストコンピュータ
103 ストレージ装置
104 ネットワーク
111、112 プロセッサ
113、114 メモリ
121 ファイルシステムプログラム
122 分散メモリストレージ管理プログラム
141 分散メモリストレージアクセスプログラム
115、116 インタフェース
161 ユーザアプリケーションプログラム

Claims (11)

  1. ファイルを格納したストレージ装置と、
    前記ファイルのデータを用いて処理を行うアプリケーションプログラムと、前記アプリケーションプログラムから前記ファイルのデータへのアクセス要求を受け付け前記ファイルのデータへアクセスするアクセス管理プログラムとを実行するプロセッサ、及び前記プロセッサによって参照される記憶装置を有する複数の計算機と、
    前記ストレージ装置に格納された前記ファイルを分割し、分割されたファイルの各々を前記複数の計算機の前記記憶装置内に確保された記憶領域を統合して構成される分散メモリストレージに配置する管理プログラムを実行するプロセッサ、及び前記プロセッサにより参照される記憶装置を有する管理計算機を備え、
    前記管理プログラムは、前記分散メモリストレージを構成する前記記憶領域の各々への前記ファイルデータの配置の方法を定義した断片化定義情報と、前記分散メモリストレージへの前記ファイルデータの配置状態を管理するファイル管理情報とを保持し、前記管理プログラムにより、前記断片化定義情報に従って前記ストレージ装置に格納された前記ファイルのデータを前記分散メモリストレージ上に配置し、
    前記複数の計算機の各々において、前記アプリケーションプログラムを実行し、前記アクセス管理プログラムにより、前記アプリケーションプログラムから前記ファイルのデータへのアクセスを受け付け、前記管理プログラムから前記アクセスの対象とされたファイルに関する前記ファイル管理情報を取得し、該ファイル管理情報に基づいて前記分散メモリストレージに配置されたデータへアクセスする計算機システム。
  2. 前記断片化定義情報は、前記分散メモリストレージへの前記ファイルのデータの分割ポリシーを示す配置ポリシー情報、分割されたファイルのデータを配置する前記記憶領域の数を示す記憶領域数情報、及び前記記憶領域ごとに配置される前記ファイルのデータの範囲を示すキーレンジ情報を含むことを特徴とする請求項1記載の計算機システム。
  3. 前記ファイル管理情報は、前記ファイルのデータが前記分散メモリストレージに分割されて配置されるか否かを示す配置方法情報と、前記ファイルのデータが配置される前記分散メモリストレージを構成する前記記憶領域内のブロックを識別する識別情報とを含むことを特徴とする請求項1記載の計算機システム。
  4. 前記ファイル管理情報は、前記配置方法情報によって前記ファイルのデータが前記分散メモリストレージに分割されて配置されることが示される場合、前記ファイルのデータが分割されて配置される前記記憶領域ごとに前記記憶領域を有する前記複数の計算機を識別する計算機IDと前記識別情報とを保持することを特徴とする請求項3記載の計算機システム。
  5. 前記アクセス管理プログラムは、前記分散メモリストレージに分割されて配置されたファイルへのアクセスを行うか分割されずに配置されたファイルへのアクセスを行うかを示すアクセスモードと、前記アプリケーションプログラムからのアクセス要求に応じてアクセスすべき前記分散メモリストレージを構成する前記記憶装置内の記憶領域を指し示すポインタ情報とを保持するファイル情報含むことを特徴とする請求項4記載の計算機システム。
  6. 前記ファイルが前記分散メモリストレージに分割されて配置される場合、前記複数の計算機の各々で実行される前記アクセス管理プログラムが有する前記ファイル情報は、それぞれ前記アクセス管理プログラムが動作する計算機の記憶装置に配置されたファイルの断片内のアクセス位置を指し示すポインタ情報を有することを特徴とする請求項5記載の計算機システム。
  7. 前記管理プログラムは、さらに、前記ストレージ装置に格納される前記ファイルと前記分散メモリストレージとを対応づける対応付け情報を保持し、前記対応付け情報に基づいて前記ファイルのデータを前記分散メモリストレージに配置する処理を行うか否か決定することを特徴とする請求項1記載の計算機システム。
  8. ファイルを格納したストレージ装置と、前記ファイルのデータを用いて処理を行うアプリケーションプログラム及び前記アプリケーションプログラムから前記ファイルのデータへのアクセス要求を受け付け前記ファイルのデータへアクセスするアクセス管理プログラムを実行するプロセッサと、前記プロセッサによって参照される記憶装置とを有する複数の計算機と、前記ストレージ装置に格納された前記ファイルを分割し、分割されたファイルの各々を前記複数の計算機の前記記憶装置内に確保された記憶領域を統合して構成される分散メモリストレージに配置する管理プログラムを実行するプロセッサ、及び前記プロセッサにより参照される記憶装置を有する管理計算機とを備えた計算機システムにおける前記アプリケーションプログラムの実行方法であって、
    前記管理計算機に予め設定され、前記分散メモリストレージを構成する前記記憶領域の各々への前記ファイルデータの配置の方法を定義した断片化定義情報に従って、前記ストレージ装置に格納された前記ファイルのデータを前記分散メモリストレージを構成する前記記憶領域に配置し、
    前記複数の計算機の各々において、前記アプリケーションプログラムを実行し、
    前記アクセスプログラムにより、前記アプリケーションプログラムから前記ファイルのデータへのアクセスを受け付け、
    前記アクセスプログラムにより、前記管理プログラムから前記アクセスの対象とされたファイルに関する前記ファイル管理情報を取得し、
    前記アクセスプログラムにより、前記ファイル管理情報に基づいて前記分散メモリストレージに配置されたデータへアクセスするアプリケーションプログラムの実行方法。
  9. 前記配置するステップは、
    前記アプリケーションプログラムから前記ファイルのオープン要求を受け付け、
    前記ストレージ装置内に格納されたファイルと前記分散メモリストレージとを対応づける対応付け情報を参照して、前記オープン要求で指定されたファイルが前記分散メモリストレージに配置されるべきか否かを判別し、
    前記オープン要求で指定されたファイルが前記分散メモリストレージに配置されるものであると判別されたとき、前記断片化定義情報に従って前記オープン要求で指定されたファイルを断片化して、前記分散メモリストレージを構成する前記物理メモリ領域に配置することを特徴とする請求項8記載のアプリケーションプログラムの実行方法。
  10. 前記配置するステップは、前記オープン要求で指定されたファイルが前記ストレージ装置に存在しない場合、前記オープン要求で指定されたファイルに関連する前記断片化定義情報を参照して前記オープン要求で指定されたファイルを作成するステップを含むことを特徴とする請求項9記載のアプリケーションプログラムの実行方法。
  11. 前記ファイル管理情報は、関係するファイルを分割して格納する前記複数の計算機の各々が有する前記記憶領域に対応して、前記関係するファイルを格納する前記記憶領域内のブロックの識別子が設定された断片化構成情報を含み、
    前記アクセスするステップは、前記断片化構成情報に基づいて、アクセスの対象とする前記記憶領域内のブロックを判別することを特徴とする請求項8記載のアプリケーションプログラムの実行方法。
JP2010055274A 2010-03-12 2010-03-12 計算機システムおよびアプリケーションプログラムの実行方法 Expired - Fee Related JP5439236B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010055274A JP5439236B2 (ja) 2010-03-12 2010-03-12 計算機システムおよびアプリケーションプログラムの実行方法
US12/796,313 US20110225215A1 (en) 2010-03-12 2010-06-08 Computer system and method of executing application program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010055274A JP5439236B2 (ja) 2010-03-12 2010-03-12 計算機システムおよびアプリケーションプログラムの実行方法

Publications (2)

Publication Number Publication Date
JP2011191835A true JP2011191835A (ja) 2011-09-29
JP5439236B2 JP5439236B2 (ja) 2014-03-12

Family

ID=44560945

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010055274A Expired - Fee Related JP5439236B2 (ja) 2010-03-12 2010-03-12 計算機システムおよびアプリケーションプログラムの実行方法

Country Status (2)

Country Link
US (1) US20110225215A1 (ja)
JP (1) JP5439236B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013118287A1 (ja) * 2012-02-10 2013-08-15 株式会社日立製作所 データ処理方法、データ処理プログラム、及び、計算機システム
WO2013118270A1 (ja) * 2012-02-09 2013-08-15 株式会社日立製作所 計算機システム、データ管理方法及びプログラム
US9934248B2 (en) 2013-12-25 2018-04-03 Hitachi, Ltd. Computer system and data management method
CN109254733A (zh) * 2018-09-04 2019-01-22 北京百度网讯科技有限公司 用于存储数据的方法、装置和系统
JP2020166878A (ja) * 2016-02-22 2020-10-08 株式会社croco ネットワーク通信システム

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120323753A1 (en) * 2011-06-14 2012-12-20 Monica Norman Clearing system
US9645741B2 (en) * 2014-02-05 2017-05-09 Sandisk Technologies Llc Storage module and host device for storage module defragmentation
US10419401B2 (en) * 2016-01-08 2019-09-17 Capital One Services, Llc Methods and systems for securing data in the public cloud
US9934287B1 (en) * 2017-07-25 2018-04-03 Capital One Services, Llc Systems and methods for expedited large file processing

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05334165A (ja) * 1992-05-29 1993-12-17 Hitachi Ltd 並列データベース処理システムおよびその2次キー検索方法
JPH0659953A (ja) * 1992-05-21 1994-03-04 Nec Corp 仮想ファイル入出力制御方法

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4052704A (en) * 1976-12-20 1977-10-04 International Business Machines Corporation Apparatus for reordering the sequence of data stored in a serial memory
JPS5776663A (en) * 1980-10-31 1982-05-13 Toshiba Corp Storage and retrieval device for picture information
JPS5821422B2 (ja) * 1980-12-26 1983-04-30 株式会社東芝 荷電ビ−ム露光装置
US4468728A (en) * 1981-06-25 1984-08-28 At&T Bell Laboratories Data structure and search method for a data base management system
US4574364A (en) * 1982-11-23 1986-03-04 Hitachi, Ltd. Method and apparatus for controlling image display
JPS59116787A (ja) * 1982-12-24 1984-07-05 株式会社日立製作所 デイスプレイ表示方式
US4611272A (en) * 1983-02-03 1986-09-09 International Business Machines Corporation Key-accessed file organization
US5003627A (en) * 1984-09-07 1991-03-26 Canon Kabushiki Kaisha Image file system
US4847788A (en) * 1985-03-01 1989-07-11 Hitachi, Ltd. Graphic data processing method and system
US4748573A (en) * 1985-06-28 1988-05-31 Honeywell Inc. Test management system to acquire, process and display test data
US4875161A (en) * 1985-07-31 1989-10-17 Unisys Corporation Scientific processor vector file organization
US4817050A (en) * 1985-11-22 1989-03-28 Kabushiki Kaisha Toshiba Database system
US4967375A (en) * 1986-03-17 1990-10-30 Star Technologies, Inc. Fast architecture for graphics processor
JPS63100562A (ja) * 1986-10-17 1988-05-02 Hitachi Ltd フアイルシステム管理方式
JPS63286941A (ja) * 1987-05-20 1988-11-24 Hitachi Ltd フアイルシステム管理方式
US4878183A (en) * 1987-07-15 1989-10-31 Ewart Ron B Photographic image data management system for a visual system
US4992954A (en) * 1987-08-05 1991-02-12 Hitachi, Ltd. Method of storing character patterns and character pattern utilization system
US4807224A (en) * 1987-08-21 1989-02-21 Naron Steven E Multicast data distribution system and method
US4829468A (en) * 1987-09-18 1989-05-09 Hitachi, Ltd. Print control system
JP2569072B2 (ja) * 1987-09-21 1997-01-08 株式会社日立製作所 マルチウインドウ・システムにおけるコマンド処理方法および装置
EP0330404B1 (en) * 1988-02-20 1994-11-30 Fujitsu Limited Integrated circuit cards
US4989132A (en) * 1988-10-24 1991-01-29 Eastman Kodak Company Object-oriented, logic, and database programming tool with garbage collection
US4931928A (en) * 1988-11-09 1990-06-05 Greenfeld Norton R Apparatus for analyzing source code
JP2585773B2 (ja) * 1988-12-23 1997-02-26 株式会社日立製作所 通信会議システム
US5012514A (en) * 1990-06-26 1991-04-30 Paul Renton Hard drive security system
JP3488500B2 (ja) * 1994-02-07 2004-01-19 富士通株式会社 分散ファイルシステム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0659953A (ja) * 1992-05-21 1994-03-04 Nec Corp 仮想ファイル入出力制御方法
JPH05334165A (ja) * 1992-05-29 1993-12-17 Hitachi Ltd 並列データベース処理システムおよびその2次キー検索方法

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013118270A1 (ja) * 2012-02-09 2013-08-15 株式会社日立製作所 計算機システム、データ管理方法及びプログラム
WO2013118287A1 (ja) * 2012-02-10 2013-08-15 株式会社日立製作所 データ処理方法、データ処理プログラム、及び、計算機システム
US9934248B2 (en) 2013-12-25 2018-04-03 Hitachi, Ltd. Computer system and data management method
JP2020166878A (ja) * 2016-02-22 2020-10-08 株式会社croco ネットワーク通信システム
JP7352289B2 (ja) 2016-02-22 2023-09-28 株式会社croco ネットワーク通信システム
CN109254733A (zh) * 2018-09-04 2019-01-22 北京百度网讯科技有限公司 用于存储数据的方法、装置和系统
KR20200027413A (ko) * 2018-09-04 2020-03-12 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 데이터 저장 방법, 장치 및 시스템
JP2020038623A (ja) * 2018-09-04 2020-03-12 北京百度网▲訊▼科技有限公司Beijing Baidu Netcom Science And Technology Co.,Ltd. データを記憶するための方法、装置及びシステム
KR102240557B1 (ko) 2018-09-04 2021-04-14 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 데이터 저장 방법, 장치 및 시스템
CN109254733B (zh) * 2018-09-04 2021-10-01 北京百度网讯科技有限公司 用于存储数据的方法、装置和系统

Also Published As

Publication number Publication date
JP5439236B2 (ja) 2014-03-12
US20110225215A1 (en) 2011-09-15

Similar Documents

Publication Publication Date Title
JP5439236B2 (ja) 計算機システムおよびアプリケーションプログラムの実行方法
CN112534396B (zh) 数据库系统中的日记表
CN110799960B (zh) 数据库租户迁移的系统和方法
JP6304406B2 (ja) ストレージ装置、プログラム、情報処理方法
US20170208052A1 (en) Hybrid cloud file system and cloud based storage system having such file system therein
US8086810B2 (en) Rapid defragmentation of storage volumes
US9026730B2 (en) Management of data using inheritable attributes
US20140351515A1 (en) Providing data attributes to a storage manager to use to select a storage tier to use for a data set management operation
US20170206218A1 (en) Method and apparatus for data deduplication in cloud based storage system
US20140351505A1 (en) Providing data attributes to a storage manager to use to select a storage tier to use for a data set management operation
EP3631612A1 (en) File system for shingled magnetic recording (smr)
US9116904B2 (en) File system operation on multi-tiered volume
US8296286B2 (en) Database processing method and database processing system
GB2506164A (en) Increased database performance via migration of data to faster storage
US9934248B2 (en) Computer system and data management method
US11016676B2 (en) Spot coalescing of distributed data concurrent with storage I/O operations
Allu et al. {Can’t} We All Get Along? Redesigning Protection Storage for Modern Workloads
US20180011897A1 (en) Data processing method having structure of cache index specified to transaction in mobile environment dbms
JPWO2014119269A1 (ja) データセット多重度変更装置、サーバ、およびデータセット多重度変更方法
US11379408B2 (en) Pointer-based dynamic data structures in key-value stores
US7386692B1 (en) Method and apparatus for quantized deadline I/O scheduling
Smolinski Impact of storage space configuration on transaction processing performance for relational database in PostgreSQL
US8909875B1 (en) Methods and apparatus for storing a new version of an object on a content addressable storage system
US10430287B2 (en) Computer
CN105045874B (zh) 一种提高数据库性能的方法及装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120926

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131115

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131119

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131216

LAPS Cancellation because of no payment of annual fees