JP2009217357A - ファイルスペース追加システム、ファイルスペース追加方法、及びファイルスペース追加プログラム - Google Patents

ファイルスペース追加システム、ファイルスペース追加方法、及びファイルスペース追加プログラム Download PDF

Info

Publication number
JP2009217357A
JP2009217357A JP2008058000A JP2008058000A JP2009217357A JP 2009217357 A JP2009217357 A JP 2009217357A JP 2008058000 A JP2008058000 A JP 2008058000A JP 2008058000 A JP2008058000 A JP 2008058000A JP 2009217357 A JP2009217357 A JP 2009217357A
Authority
JP
Japan
Prior art keywords
block
data
subfile
length
empty
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.)
Pending
Application number
JP2008058000A
Other languages
English (en)
Inventor
Nagayasu Hoshi
長康 星
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2008058000A priority Critical patent/JP2009217357A/ja
Publication of JP2009217357A publication Critical patent/JP2009217357A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】ファイル内のサブファイルへの出力の高性能化を図る。
【解決手段】静的に確保したファイルスペース内で、任意の数のブロックを含む任意の数のサブファイルをファイル内で動的に作成し、サブファイルに対するブロックの追加、削除を動的に行うことによりサブファイルの拡張、縮小を可能とするファイル管理システムにおいて、サブファイルへのデータ出力後、最終ブロックの格納データ量が基準値を超えた場合、事前に空きブロックを追加する。また、サブファイルへのデータ出力時に最終ブロックの格納データ量及び総データ量を記録し、データブロック追加の基準値を超えた場合、データ出力要求とは別のプロセスでサブファイルへ空きブロックを追加することにより、データ出力要求が空きブロックの確保、及び、空き管理領域へのアクセス集中による性能劣化を防ぎながら、一定数量を確保せず、他サブファイルでも空きブロックを利用する。
【選択図】図1

Description

本発明は、ファイルスペース追加システムに関し、特に1つのファイル内に複数のサブファイルを含むファイルスペース追加システムに関する。
通常、1つのファイルを使用して大量のデータ入出力を短時間で行いたい場合には、そのファイルをサブファイルに分割し、サブファイルごとにデータの入出力を行う処理を並列で動作させる手法がとられていた。例えば、これまでは、静的に確保されたファイル内でサブファイルのサイズを動的に拡張、縮小可能とするために、ファイル内にサブファイルとして使用されているブロックを管理するためのサブファイル管理領域と、サブファイルとして使用されていない空きブロックを管理するための空き管理領域を設けていた。そして、新規にサブファイルを作成する場合及びサブファイルを拡張する場合は、空き管理領域から必要な数の空きブロックを取り出し、先頭のブロックをサブファイル管理領域に、それ以降のブロックを直前のブロックに関連付けることによってサブファイルの領域を確保するファイル管理手法がとられていた。
しかしながら、この方法では、一旦サブファイルに割り当てられたブロックについてはサブファイル単位での並列アクセスが可能となるが、サブファイルへのデータ出力要求が頻繁に行われると、データ出力処理の空きブロック追加に時間を費やすことによる性能劣化や、さらには空き管理領域へのアクセスが集中して空き管理領域の排他待ちによる性能劣化が発生するという問題があった。
これに対し、予め一定数量の予備のブロックを各サブファイルに割り当てておき、これについては空き領域として解放しないという手法も存在するが、この場合は、空き領域として使えるブロックが限られてしまうため、実際には使用されていないブロックがあるにもかかわらず他のサブファイルで利用できないといった問題があった。
関連する技術として、特開2001−075848号公報(特許文献1)に「ファイルシステムのファイル管理方法」が開示されている。この技術では、第1のデータブロックに関連のあるデータを格納するために第2のデータブロックを確保する時、主記憶装置上の管理ブロックの使用状況の情報を検索し、未使用を示す領域があると過渡状況を示す情報を過渡中とし使用状況の情報を使用中として、第2のデータブロックにあるデータブロックを管理する領域を初期化し、第1のデータブロックのデータブロックを管理する領域に第2のデータブロックの位置を格納し、第2のデータブロックのデータブロックを管理する領域に第1のデータブロックの位置を格納し、主記憶装置上の管理ブロックの各情報を記憶装置上の管理ブロックへ複写し、過渡状況の情報の過渡中を外すことを特徴とする。
また、特開平05−120094号公報(特許文献2)に「ファイル管理方式」が開示されている。この技術では、ファイルの作成時には、データ領域割り当て部により要求されたファイルの領域を確保し、ファイルのサイズがファイル作成時に確保された領域を超えるようなことがあれば、データ領域拡張部により新たに領域を確保し、ファイルのサイズがファイル作成時に確保された領域より小さくなった場合、データ領域解放部がデータ領域拡張部で確保された領域のみを解放し、ファイル削除時には、データ領域削除部によりファイルに割り当てられた領域を解放する。
また、特開平09−160814号公報(特許文献3)に「ファイルの管理システム」が開示されている。この技術では、ファイルシステム管理機構の残量把握機構はファイル記憶領域の空き領域を監視する。ファイル削除部は、残量把握機構により空き容量が足りなくなったことが検出されると、削除順序情報管理部を介して削除候補ファイルを調べると共に、削除条件情報管理部を介して削除条件情報を参照して、既成ファイルを削除する。この時、ファイル/ディレクトリ対応情報管理部からファイル/ディレクトリ対応情報を取得して、データブロック内に作成されている当該ディレクトリから上記削除されたファイルのエントリを削除する。
特開2001−075848号公報 特開平05−120094号公報 特開平09−160814号公報
サブファイルへのデータ出力時に最終ブロックの格納データ量及び総データ量を記録し、データブロック追加の基準値を超えた場合、データ出力要求とは別のプロセスでサブファイルへ空きブロックを追加することにより、データ出力要求が空きブロックの確保、及び、空き管理領域へのアクセス集中による性能劣化を防ぎながら、一定数量を確保せず、他のサブファイルでも空きブロックを利用する。
以下に、[発明を実施するための最良の形態]で使用される番号を括弧付きで用いて、課題を解決するための手段を説明する。これらの番号は、[特許請求の範囲]の記載と[発明を実施するための最良の形態]との対応関係を明らかにするために付加されたものである。但し、それらの番号を、[特許請求の範囲]に記載されている発明の技術的範囲の解釈に用いてはならない。
本発明のファイルスペース追加システムは、ファイル(130)内のサブファイル(250)の更新要求に応じて、サブファイル(250)の最終ブロックにデータを格納し、最終ブロックのデータ格納量が閾値を超えたかどうか判断するサブファイル更新プロセス実行部(110)と、最終ブロックのデータ格納量が閾値を超えた場合にサブファイル更新プロセス実行部(110)からの呼び出しに応じて起動し、空きブロックをサブファイル(250)に追加するサブファイル拡張プロセス実行部(120)とを具備する。
本発明に係るファイルは、ファイル(130)内の空きブロックの数量及び空きブロックのアドレスを管理する空き管理領域(210)と、ファイル(130)内の空きブロックの集合である空き領域(220)と、サブファイル単位に先頭ブロック及び最終ブロックのポインタの情報を管理するディレクトリ領域(240)と、ファイル(130)内に作成されたサブファイル(250)のサブファイル名及びディレクトリ領域(240)のサブファイル情報へのポインタを管理するサブファイル管理領域(230)と、空きブロック追加基準となる空きブロック追加閾値(260)と、出力データ長が加算される総データ長(270)と、出力データ件数である総データ件数(280)とを含む。
空き領域(220)は、ファイル(130)内でサブファイル(250)に割り当てられていない空きブロックを任意の順序に並べ、並べられた空きブロックの各々に前後の空きブロックのポインタを格納する。
サブファイル(250)は、ユーザデータを格納する複数のデータブロックをユーザデータの順序に従って並べ、並べられたデータブロックの各々に前後のデータブロックのアドレスを格納する。
ディレクトリ領域(240)は、サブファイル(250)の先頭のデータブロックのアドレスを格納する先頭ブロックポインタ(301)と、最終のデータブロックのアドレスを格納する最終ブロックポインタ(302)と、最終ブロックの総データ長(270)である最終ブロックデータ長(303)とを含む。
空き管理領域(210)は、空き領域(220)内の先頭の空きブロックのアドレスを格納する先頭空きブロックポインタ(401)と、空き領域(220)内の最後の空きブロックのアドレスを格納する最終空きブロックポインタ(402)とを含む。
空きブロック及びデータブロックの各々は、各々のブロックの直後のブロックのアドレスを格納する次ブロックポインタ(501)と、各々のブロックの直前のブロックのアドレスを格納する前ブロックポインタ(502)と、各々のブロックがサブファイル(250)に割り当てられた時にユーザデータを格納するためのユーザデータ領域(503)とを含む。
サブファイル更新プロセス実行部(110)は、要求されたデータの出力長がブロック長と最終ブロックデータ長(303)の差分より大きい場合、第1空きブロックに最終ブロックポインタ(302)を位置付け、最終ブロックデータ長(303)を初期化し、要求されたデータを最終ブロックポインタ(302)の指すデータブロックに格納し、最終ブロックデータ長(303)に要求されたデータの出力長を加えた値で最終ブロックデータ長(303)を更新し、総データ長(270)に要求されたデータの出力長を加えた値で総データ長(270)を更新し、総データ件数(280)に1を加算するデータ格納部(111)と、総データ長(270)を総データ件数(280)で割った値を空きブロック追加閾値(260)に格納し、空きブロック追加閾値(260)が要求されたデータの出力長と最終ブロックデータ長(303)を合わせた値より小さい場合、サブファイル拡張プロセス実行部(120)を呼び出して起動するブロック追加判定部(112)とを具備する。
サブファイル更新プロセス実行部(110)は、空きブロックを優先的に割り当てることを示すブロック優先度(304)を参照し、空きブロック追加閾値(260)が要求されたデータの出力長と最終ブロックデータ長(303)を合わせた値より大きく、ブロック優先度(304)が高優先度の場合、サブファイル拡張プロセス実行部(120)を呼び出して起動するブロック優先判定部(113)を更に具備する。
サブファイル拡張プロセス実行部(120)は、サブファイル拡張プロセス実行部(120)がサブファイル更新プロセス実行部(110)からの呼び出しに応じて起動すると、空き管理領域(210)の先頭ブロックである第1空きブロックをサブファイル(250)の最終ブロックであるデータブロックの次になるようブロックポインタを設定し、先頭空きブロックポインタ(401)を第2空きブロックに位置付けるブロック追加部(121)を具備する。
第1の効果は、1つのファイル内に含まれる複数のサブファイルの拡張が、同時に実行される複数の業務処理から頻繁に行われるような場合に、ファイルのアクセス性能を向上させることができることにあり、大量データの場合に効果が大きくなる。その理由は、データ出力要求直後に必要なブロックを事前確保することにより、データ出力時に空き領域からのブロックの出し入れをせず、他のサブファイルとの競合を避けることができるためである。
第2の効果は、1つのファイル内に含まれる複数のサブファイルの拡張が頻繁に行われる場合に、ファイルスペースを有効活用できる。その理由は、各サブファイルに使用しない分も含めて均等に割り当てず、必要なブロックをデータ出力要求時点で割り当てることにより、空きブロックを他のサブファイルからも利用できるためである。
以下に、本発明の第1実施形態について添付図面を参照して説明する。
図1を参照すると、本発明の第1実施形態では、ファイルスペース追加システムは、サブファイル更新プロセス110と、サブファイル拡張プロセス120と、ファイル130を備える。ここでは、サブファイル更新プロセス110及びサブファイル拡張プロセス120は、それぞれファイルスペース追加システム内において実行されるプログラムを示す。但し、実際には、サブファイル更新プロセス110及びサブファイル拡張プロセス120は、上記のプログラムを実行するプロセッサ等の処理装置を含むようにしても良い。或いは、サブファイル更新プロセス110及びサブファイル拡張プロセス120は、それぞれ所定の機能を有するハードウェアでも良い。ファイル130は、サブファイル更新プロセス110及びサブファイル拡張プロセス120により読み取られる。ファイル130は、少なくとも1つのサブファイルを有する。
サブファイル更新プロセス110は、データ格納部111と、ブロック追加判定部112とを含む。データ格納部111は、ファイル130内の所定のサブファイルの最終ブロックにデータを格納する。ブロック追加判定部112は、所定の条件に従って、サブファイル拡張プロセス120を呼び出す。
サブファイル拡張プロセス120は、ブロック追加部121を含む。ブロック追加部121は、ファイル130内の所定のサブファイルに空きブロックを追加する。
これらの構成要素はそれぞれ概略つぎのように動作する。
サブファイル更新プロセス110は、業務プログラム等からのファイル130内のサブファイルの更新要求に応じて、データ格納部111により、最終ブロックにデータを格納し、ブロック追加判定部112により、最終ブロックのデータ格納量が閾値を超えた場合にサブファイル拡張プロセス120を呼び出す。サブファイル拡張プロセス120は、ブロック追加部121により、空きブロックをファイル130内の該当サブファイルに追加する。
図2は、図1のファイル130の構造例を示したものである。
ファイル130は、空き管理領域210と、空き領域220と、サブファイル管理領域230と、ディレクトリ領域240と、サブファイル250と、空きブロック追加閾値260と、総データ長270と、総データ件数280を有する。
空き管理領域210は、ファイル130内の空きブロックの数量や空きブロックのアドレスを管理するための領域である。空き領域220は、ファイル130内の空きブロックの集合である。空き領域220は、空きブロック221(221−i、i=1〜n:nは空きブロック数)を有する。サブファイル管理領域230は、ファイル130内に作成された複数のサブファイルのサブファイル名とディレクトリ領域240の各サブファイル情報へのポインタを管理する。ディレクトリ領域240は、サブファイル単位にその先頭ブロック及び最終ブロックのポインタ等の情報を管理する。サブファイル250は、ディレクトリ領域240に格納されたサブファイルの1つであり、ユーザデータを格納する。サブファイル250は、データブロック251(251−j、j=1〜m:mはデータブロック数)を有する。ここでは、データブロック251−1が先頭ブロックであり、データブロック251−mが最終ブロックである。空きブロック追加閾値260は、空きブロック追加基準となる閾値である。総データ長270は、出力データ長の合計の長さである。総データ長270には、全ての出力データ長が加算される。総データ件数280は、全ての出力データ件数である。
空き領域220は、ファイル130内でどのサブファイルにも割り当てられていない全ての空きブロック221(221−i、i=1〜n)を任意の順序に並べ、それぞれの空きブロック221(221−i、i=1〜n)に前後の空きブロックのポインタを格納することにより管理する。サブファイル250は、サブファイルAのユーザデータを格納する複数のデータブロック251(251−j、j=1〜m)をユーザデータの順序に従って並べ、それぞれのデータブロック251(251−j、j=1〜m)に前後のデータブロックのアドレスを格納することにより管理する。
図3は、図2のディレクトリ領域240内のある1つのサブファイルの情報と、そのサブファイルの構造例を示したものである。
ディレクトリ領域240は、先頭ブロックポインタ301と、最終ブロックポインタ302と、最終ブロックデータ長303を有する。先頭ブロックポインタ301は、サブファイル250の先頭のデータブロックのアドレスを格納する。最終ブロックポインタ302は、最終のデータブロックのアドレスを格納する。最終ブロックデータ長303は、最終ブロックの総データ長である。サブファイル250はデータブロックA〜Gを有し、データブロックが追加された場合、データブロックA〜Gの後ろにデータブロックHがつながる。データブロックA〜Hは、データブロック251(251−j、j=1〜m)に相当する。
図4は、図2の空き管理領域210、空き領域220の構造例を示したものである。
空き管理領域210は、先頭空きブロックポインタ401と、最終空きブロックポインタ402を有する。先頭空きブロックポインタ401は、空き領域220内の先頭の空きブロックのアドレスを格納する。最終空きブロックポインタ402は、空き領域220内の最後の空きブロックのアドレスを格納する。空き領域220内の空きブロックH,I,Jは、空きブロック221(221−i、i=1〜n)に相当する。ここでは、空きブロックHが先頭の空きブロック、空きブロックJが最後の空きブロックである。
図5は、空きブロック221(221−i、i=1〜n)及びデータブロック251(251−j、j=1〜m)の構造例を示したものである。
空きブロック221(221−i、i=1〜n)及びデータブロック251(251−j、j=1〜m)の各々は、次ブロックポインタ501と、前ブロックポインタ502と、ユーザデータ領域503を含む。次ブロックポインタ501は、それぞれのブロックの直後のブロックのアドレスを格納する。前ブロックポインタ502は、それぞれのブロックの直前のブロックのアドレスを格納する。ユーザデータ領域503は、ブロックがサブファイルに割り当てられた時にユーザデータを格納する。
次に、図6を参照して、本発明の第1実施形態の動作について詳細に説明する。
(1)ステップS101
サブファイル更新プロセス110は、業務プログラム等からサブファイル250にデータを出力するようなサブファイル更新要求を受け付ける。
(2)ステップS102
サブファイル更新プロセス110のデータ格納部111は、サブファイル更新要求を受け付けると、要求されたデータ出力長の大きさを判断する。ここでは、要求されたデータ出力長が「ブロック長と最終ブロックデータ長303の差分」より大きいかどうか判断する。なお、要求されたデータ出力長とは、要求されたデータの出力時のデータ長である。要求されたデータ出力長がブロック長と最終ブロックデータ長303の差分より大きくない場合は、この処理を終了し、サブファイル更新プロセス110が次のサブファイル更新要求を受け付けるまで待機する。なお、要求されたデータ出力長がブロック長と最終ブロックデータ長303の差分と等しい場合、要求されたデータ出力長がブロック長と最終ブロックデータ長303の差分より大きいと判断するか、小さいと判断するかは、任意である。
(3)ステップS103
データ格納部111は、要求されたデータ出力長がブロック長と最終ブロックデータ長303の差分より大きい場合、次ブロックにデータを格納することを決定する。ここでは、データ格納部111は、次ブロックである空きブロックHに最終ブロックポインタ302を位置付ける。
(4)ステップS104
なお、データ格納部111は、要求されたデータ出力長がブロック長と最終ブロックデータ長303の差分より大きくない場合、該当ブロックにデータを格納することを決定する。この場合、データ格納部111は、該当ブロックに最終ブロックポインタ302を位置付ける。
(5)ステップS105
データ格納部111は、最終ブロックデータ長303を初期化し、要求されたデータを最終ブロックポインタの指すデータブロックに格納し、最終ブロックデータ長303に要求されたデータ出力長を加えた値で最終ブロックデータ長303を更新し、総データ長270に要求されたデータ出力長を加えた値で総データ長270を更新し、総データ件数280に1を加算する。
(6)ステップS106
次に、サブファイル更新プロセス110のブロック追加判定部112は、総データ長270を総データ件数280で割った値を空きブロック追加閾値260に格納し、空きブロック追加閾値260の大きさを判断する。ここでは、空きブロック追加閾値260が要求されたデータ出力長と最終ブロックデータ長を合わせた値より小さいかどうか判断する。空きブロック追加閾値260が要求されたデータ出力長と最終ブロックデータ長を合わせた値より小さくない場合は、この処理を終了し、サブファイル更新プロセス110が次のサブファイル更新要求を受け付けるまで待機する。なお、空きブロック追加閾値260が要求されたデータ出力長と最終ブロックデータ長を合わせた値と等しい場合、空きブロック追加閾値260が要求されたデータ出力長と最終ブロックデータ長を合わせた値より大きいと判断するか、小さいと判断するかは、任意である。
(7)ステップS107
ブロック追加判定部112は、空きブロック追加閾値260が要求されたデータ出力長と最終ブロックデータ長を合わせた値より小さい場合、サブファイル拡張プロセス120を呼び出す。
(8)ステップS108
サブファイル拡張プロセス120のブロック追加部121は、サブファイル拡張プロセス120がサブファイル更新プロセス110から呼び出されると、空き管理領域210の先頭ブロックである空きブロックHをサブファイル250の最終ブロックであるデータブロックGの次になるようブロックポインタを設定し、先頭空きブロックポインタ401を空きブロックIに位置付ける。
なお、サブファイルをファイルに置き換えても、上記と同様な動作である。
次に、本発明の第2実施形態の構成について詳細に説明する。
本実施形態では、第1実施形態の図1の構成に加えて、空きブロックを優先的に割り当てるかどうかを判定するブロック優先判定部113が追加されている。
図7を参照すると、本発明の第2実施形態では、ファイルスペース追加システムは、サブファイル更新プロセス110と、サブファイル拡張プロセス120と、ファイル130を備える。ここでは、サブファイル更新プロセス110及びサブファイル拡張プロセス120は、それぞれファイルスペース追加システム内において実行されるプログラムを示す。但し、実際には、サブファイル更新プロセス110及びサブファイル拡張プロセス120は、上記のプログラムを実行するプロセッサ等の処理装置を含むようにしても良い。或いは、サブファイル更新プロセス110及びサブファイル拡張プロセス120は、それぞれ所定の機能を有するハードウェアでも良い。ファイル130は、サブファイル更新プロセス110及びサブファイル拡張プロセス120により読み取られる。ファイル130は、少なくとも1つのサブファイルを有する。
サブファイル更新プロセス110は、データ格納部111と、ブロック追加判定部112と、ブロック優先判定部113を含む。データ格納部111は、ファイル130内の所定のサブファイルの最終ブロックにデータを格納する。ブロック追加判定部112は、所定の条件に従って、サブファイル拡張プロセス120を呼び出す。ブロック優先判定部113は、各ブロックの優先度を判定する。
サブファイル拡張プロセス120は、ブロック追加部121を含む。ブロック追加部121は、ファイル130内の所定のサブファイルに空きブロックを追加する。
図8は、図2の空き管理領域210、空き領域220及び、ディレクトリ領域240内のある1つのサブファイルの情報と、そのサブファイルの構造例を示したものである。本実施形態では、ディレクトリ領域240がブロック優先度304を更に有することを特徴とする。
ディレクトリ領域240は、先頭ブロックポインタ301と、最終ブロックポインタ302と、最終ブロックデータ長303と、ブロック優先度304を有する。先頭ブロックポインタ301は、サブファイル250の先頭のデータブロックのアドレスを格納する。最終ブロックポインタ302は、最終のデータブロックのアドレスを格納する。最終ブロックデータ長303は、最終ブロックの総データ長である。ブロック優先度304は、空きブロックを優先的に割り当てることを示す。
サブファイル250は、データブロックB,C,Dを有し、データブロックが追加された場合、データブロックB,C,Dの後ろにデータブロックHがつながる。データブロックB,C,D,Hは、データブロック251(251−j、j=1〜m)に相当する。
空き管理領域210は、先頭空きブロックポインタ401と、最終空きブロックポインタ402を有する。先頭空きブロックポインタ401は、空き領域220内の先頭の空きブロックのアドレスを格納する。最終空きブロックポインタ402は、空き領域220内の最後の空きブロックのアドレスを格納する。空き領域220内の空きブロックH,I,Jは、空きブロック221(221−i、i=1〜n)に相当する。ここでは、空きブロックHが先頭の空きブロック、空きブロックJが最後の空きブロックである。
次に、図9を参照して、本発明の第2実施形態の動作について詳細に説明する。
(1)ステップS201
サブファイル更新プロセス110は、業務プログラム等からサブファイル250にデータを出力するようなサブファイル更新要求を受け付ける。
(2)ステップS202
サブファイル更新プロセス110のデータ格納部111は、サブファイル更新要求を受け付けると、要求されたデータ出力長の大きさを判断する。ここでは、要求されたデータ出力長が「ブロック長と最終ブロックデータ長303の差分」より大きいかどうか判断する。要求されたデータ出力長がブロック長と最終ブロックデータ長303の差分より大きくない場合は、この処理を終了し、サブファイル更新プロセス110が次のサブファイル更新要求を受け付けるまで待機する。なお、要求されたデータ出力長がブロック長と最終ブロックデータ長303の差分と等しい場合、要求されたデータ出力長がブロック長と最終ブロックデータ長303の差分より大きいと判断するか、小さいと判断するかは、任意である。
(3)ステップS203
データ格納部111は、要求されたデータ出力長がブロック長と最終ブロックデータ長303の差分より大きい場合、次ブロックにデータを格納することを決定する。ここでは、データ格納部111は、次ブロックである空きブロックHに最終ブロックポインタ302を位置付ける。
(4)ステップS204
なお、データ格納部111は、要求されたデータ出力長がブロック長と最終ブロックデータ長303の差分より大きくない場合、該当ブロックにデータを格納することを決定する。この場合、データ格納部111は、該当ブロックに最終ブロックポインタ302を位置付ける。
(5)ステップS205
データ格納部111は、最終ブロックデータ長303を初期化し、要求されたデータを最終ブロックポインタの指すデータブロックに格納し、最終ブロックデータ長303に要求されたデータ出力長を加えた値で最終ブロックデータ長303を更新し、総データ長270に要求されたデータ出力長を加えた値で総データ長270を更新し、総データ件数280に1を加算する。
(6)ステップS206
次に、サブファイル更新プロセス110のブロック追加判定部112は、空きブロック追加閾値260の大きさを判断する。ここでは、空きブロック追加閾値260が要求されたデータ出力長と最終ブロックデータ長を合わせた値より小さいかどうか判断する。なお、空きブロック追加閾値260が要求されたデータ出力長と最終ブロックデータ長を合わせた値と等しい場合、空きブロック追加閾値260が要求されたデータ出力長と最終ブロックデータ長を合わせた値より大きいと判断するか、小さいと判断するかは、任意である。
(7)ステップS207
ブロック追加判定部112は、空きブロック追加閾値260が要求されたデータ出力長と最終ブロックデータ長を合わせた値より小さい場合、サブファイル拡張プロセス120を呼び出す。
(8)ステップS208
また、サブファイル更新プロセス110のブロック優先判定部113は、総データ長270を総データ件数280で割った値を空きブロック追加閾値260に格納し、空きブロック追加閾値260が要求されたデータ出力長と最終ブロックデータ長を合わせた値より大きい場合、ブロック優先度304が高優先度か判断する。ブロック優先度304が高優先度でない場合、この処理を終了し、サブファイル更新プロセス110が次のサブファイル更新要求を受け付けるまで待機する。ここでは、ブロック優先度304が最も高い場合に高優先度と判断する。或いは、ブロック優先度304が所定の順位内(上位3位以内等)にある場合に高優先度と判断する。なお、ブロック優先度304の優先度を数値で表す場合、予め基準となる閾値を設定し、この閾値よりも優先度が高ければ高優先度と判断するようにしても良い。この閾値と優先度が等しい場合、高優先度と判断するか、低優先度と判断するかは、任意である。
(9)ステップS209
ブロック優先判定部113は、空きブロック追加閾値260が要求されたデータ出力長と最終ブロックデータ長を合わせた値より大きく、ブロック優先度304が高優先度の場合、サブファイル拡張プロセス120を呼び出す。
(10)ステップS210
サブファイル拡張プロセス120のブロック追加部121は、サブファイル拡張プロセス120がサブファイル更新プロセス110から呼び出されると、空き管理領域210の先頭ブロックである空きブロックHをサブファイル250の最終ブロックであるデータブロックDの次になるようブロックポインタを設定し、先頭空きブロックポインタ401を空きブロックIに位置付ける。
なお、サブファイルをファイルに置き換えても、上記と同様な動作である。
本発明の第2実施形態では、優先度の高いサブファイルの場合、出力されるデータ量に依存せず、空きブロックを確保することが可能となり、特定サブファイルの出力を高性能化することが可能となる。
以上のように、本発明は、静的に確保したファイルスペース内で、任意の数のブロックからなる任意の数のサブファイルをファイル内で動的に作成し、サブファイルに対するブロックの追加、削除を動的に行うことによりサブファイルの拡張、縮小を可能とするファイル管理システムにおいて、サブファイルへのデータ出力後、最終ブロックの格納データ量が基準値を超えた場合、事前に空きブロックを追加することにより、高性能なサブファイルへの出力を可能とすることを特徴とする。なお、ここでいうサブファイルとは、「ファイルスペース内の業務ごとに個別にアクセスされる1つの業務ファイル」のことを意味している。
本発明は、業務プログラム間やシステム間で大量のデータをやりとりする場合の中間ファイルや、各種ログデータを格納するためのログファイルなどの用途に適用できる。
図1は、本発明の第1実施形態における構成例を示すブロック図である。 図2は、ファイル内の構成例を示す概念図である。 図3は、ディレクトリ領域の構成例を示す概念図である。 図4は、空き管理領域及び空き領域の構成例を示す概念図である。 図5は、空きブロック及びデータブロックの構成例を示す概念図である。 図6は、本発明の第1実施形態における動作を示すフローチャートである。 図7は、本発明の第2実施形態における構成例を示すブロック図である。 図8は、ディレクトリ領域、空き管理領域及び空き領域の構成例を示す概念図である。 図9は、本発明の第2実施形態における動作を示すフローチャートである。
符号の説明
110… サブファイル更新プロセス
111… データ格納部
112… ブロック追加判定部
113… ブロック優先判定部
120… サブファイル拡張プロセス
121… ブロック追加部
130… ファイル
210… 空き管理領域
220… 空き領域
221(−i、i=1〜n)… 空きブロック
230… サブファイル管理領域
240… ディレクトリ領域
250… サブファイル
251(−j、j=1〜m)… データブロック
260… 空きブロック追加閾値
270… 総データ長
280… 総データ件数
301… 先頭ブロックポインタ
302… 最終ブロックポインタ
303… 最終ブロックデータ長
304… ブロック優先度
401… 先頭空きブロックポインタ
402… 最終空きブロックポインタ
501… 次ブロックポインタ
502… 前ブロックポインタ
503… ユーザデータ領域

Claims (16)

  1. ファイル内のサブファイルの更新要求に応じて、前記サブファイルの最終ブロックにデータを格納し、前記最終ブロックのデータ格納量が閾値を超えたかどうか判断するサブファイル更新プロセス実行部と、
    前記最終ブロックのデータ格納量が閾値を超えた場合に前記サブファイル更新プロセス実行部からの呼び出しに応じて起動し、空きブロックを前記サブファイルに追加するサブファイル拡張プロセス実行部と
    を具備する
    ファイルスペース追加システム。
  2. 請求項1に記載のファイルスペース追加システムであって、
    前記ファイルは、
    前記ファイル内の空きブロックの数量及び空きブロックのアドレスを管理する空き管理領域と、
    前記ファイル内の空きブロックの集合である空き領域と、
    サブファイル単位に先頭ブロック及び最終ブロックのポインタの情報を管理するディレクトリ領域と、
    前記ファイル内に作成されたサブファイルのサブファイル名及び前記ディレクトリ領域のサブファイル情報へのポインタを管理するサブファイル管理領域と、
    空きブロック追加基準となる空きブロック追加閾値と、
    出力データ長が加算される総データ長と、
    出力データ件数である総データ件数と
    を含む
    ファイルスペース追加システム。
  3. 請求項2に記載のファイルスペース追加システムであって、
    前記空き領域は、前記ファイル内でサブファイルに割り当てられていない空きブロックを任意の順序に並べ、前記並べられた空きブロックの各々に前後の空きブロックのポインタを格納する
    ファイルスペース追加システム。
  4. 請求項3に記載のファイルスペース追加システムであって、
    前記サブファイルは、ユーザデータを格納する複数のデータブロックを前記ユーザデータの順序に従って並べ、前記並べられたデータブロックの各々に前後のデータブロックのアドレスを格納する
    ファイルスペース追加システム。
  5. 請求項4に記載のファイルスペース追加システムであって、
    前記ディレクトリ領域は、
    前記サブファイルの先頭のデータブロックのアドレスを格納する先頭ブロックポインタと、
    最終のデータブロックのアドレスを格納する最終ブロックポインタと、
    最終ブロックの総データ長である最終ブロックデータ長と
    を含む
    ファイルスペース追加システム。
  6. 請求項5に記載のファイルスペース追加システムであって、
    前記空き管理領域は、
    前記空き領域内の先頭の空きブロックのアドレスを格納する先頭空きブロックポインタと、
    前記空き領域内の最後の空きブロックのアドレスを格納する最終空きブロックポインタと
    を含む
    ファイルスペース追加システム。
  7. 請求項6に記載のファイルスペース追加システムであって、
    前記空きブロック及び前記データブロックの各々は、
    各々のブロックの直後のブロックのアドレスを格納する次ブロックポインタと、
    各々のブロックの直前のブロックのアドレスを格納する前ブロックポインタと、
    各々のブロックがサブファイルに割り当てられた時にユーザデータを格納するためのユーザデータ領域と
    を含む
    ファイルスペース追加システム。
  8. 請求項7に記載のファイルスペース追加システムであって、
    前記サブファイル更新プロセス実行部は、
    要求されたデータの出力長がブロック長と前記最終ブロックデータ長の差分より大きい場合、第1空きブロックに前記最終ブロックポインタを位置付け、前記最終ブロックデータ長を初期化し、前記要求されたデータを前記最終ブロックポインタの指すデータブロックに格納し、前記最終ブロックデータ長に前記要求されたデータの出力長を加えた値で前記最終ブロックデータ長を更新し、総データ長に前記要求されたデータの出力長を加えた値で前記総データ長を更新し、総データ件数に1を加算するデータ格納部と、
    前記総データ長を前記総データ件数で割った値を空きブロック追加閾値に格納し、前記空きブロック追加閾値が前記要求されたデータの出力長と前記最終ブロックデータ長を合わせた値より小さい場合、前記サブファイル拡張プロセス実行部を呼び出して起動するブロック追加判定部と
    を具備する
    ファイルスペース追加システム。
  9. 請求項8に記載のファイルスペース追加システムであって、
    前記サブファイル更新プロセス実行部は、
    空きブロックを優先的に割り当てることを示すブロック優先度を参照し、前記空きブロック追加閾値が前記要求されたデータの出力長と前記最終ブロックデータ長を合わせた値より大きく、前記ブロック優先度が高優先度の場合、前記サブファイル拡張プロセス実行部を呼び出して起動するブロック優先判定部
    を更に具備する
    ファイルスペース追加システム。
  10. 請求項8又は9に記載のファイルスペース追加システムであって、
    前記サブファイル拡張プロセス実行部は、
    前記サブファイル拡張プロセス実行部が前記サブファイル更新プロセス実行部からの呼び出しに応じて起動すると、前記空き管理領域の先頭ブロックである前記第1空きブロックを前記サブファイルの最終ブロックであるデータブロックの次になるようブロックポインタを設定し、前記先頭空きブロックポインタを第2空きブロックに位置付けるブロック追加部
    を具備する
    ファイルスペース追加システム。
  11. (a)静的に確保したファイルスペース内で、任意の数のブロックを含む任意の数のサブファイルを動的に作成し、前記サブファイルに対するブロックの追加、削除を動的に行うステップと、
    (b)前記サブファイルへのデータ出力後、最終ブロックの格納データ量が基準値を超えた場合、空きブロックを追加するステップと
    を含む
    ファイルスペース追加方法。
  12. 請求項11に記載のファイルスペース追加方法であって、
    前記(b)ステップは、
    (b1)前記サブファイルにデータを出力するためのサブファイル更新要求を受け付けると、要求されたデータの出力長がブロック長と最終ブロックデータ長の差分より大きいか判断するステップと、
    (b2)前記要求されたデータの出力長がブロック長と前記最終ブロックデータ長の差分より大きい場合、第1空きブロックに最終ブロックポインタを位置付け、前記最終ブロックデータ長を初期化し、前記要求されたデータを前記最終ブロックポインタの指すデータブロックに格納し、前記最終ブロックデータ長に前記要求されたデータの出力長を加えた値で前記最終ブロックデータ長を更新し、総データ長に前記要求されたデータの出力長を加えた値で前記総データ長を更新し、前記総データ長に1を加算するステップと、
    (b3)前記総データ長を総データ件数で割った値を空きブロック追加閾値に格納し、前記空きブロック追加閾値が前記要求されたデータの出力長と前記最終ブロックデータ長を合わせた値より小さいか判断するステップと、
    (b4)前記空きブロック追加閾値が前記要求されたデータの出力長と前記最終ブロックデータ長を合わせた値より小さい場合、空き管理領域の先頭ブロックである前記第1空きブロックを前記サブファイルの最終ブロックであるデータブロックの次になるようブロックポインタを設定し、先頭空きブロックポインタを第2空きブロックに位置付けるステップと
    を含む
    ファイルスペース追加方法。
  13. 請求項12に記載のファイルスペース追加方法であって、
    前記(b)ステップは、
    (b5)前記空きブロック追加閾値が前記要求されたデータの出力長と前記最終ブロックデータ長を合わせた値より大きく、空きブロックを優先的に割り当てることを示すブロック優先度が高優先度の場合、前記空き管理領域の先頭ブロックである前記第1空きブロックを前記サブファイルの最終ブロックであるデータブロックの次になるようブロックポインタを設定し、先頭空きブロックポインタを前記第2空きブロックに位置付けるステップと
    を更に含む
    ファイルスペース追加方法。
  14. (a)静的に確保したファイルスペース内で、任意の数のブロックを含む任意の数のサブファイルを動的に作成し、前記サブファイルに対するブロックの追加、削除を動的に行うステップと、
    (b)前記サブファイルへのデータ出力後、最終ブロックの格納データ量が基準値を超えた場合、空きブロックを追加するステップと
    をコンピュータに実行させるための
    ファイルスペース追加プログラム。
  15. 請求項14に記載のファイルスペース追加プログラムであって、
    前記(b)ステップは、
    (b1)前記サブファイルにデータを出力するためのサブファイル更新要求を受け付けると、要求されたデータの出力長がブロック長と最終ブロックデータ長の差分より大きいか判断するステップと、
    (b2)前記要求されたデータの出力長がブロック長と前記最終ブロックデータ長の差分より大きい場合、第1空きブロックに最終ブロックポインタを位置付け、前記最終ブロックデータ長を初期化し、前記要求されたデータを前記最終ブロックポインタの指すデータブロックに格納し、前記最終ブロックデータ長に前記要求されたデータの出力長を加えた値で前記最終ブロックデータ長を更新し、総データ長に前記要求されたデータの出力長を加えた値で前記総データ長を更新し、前記総データ長に1を加算するステップと、
    (b3)前記総データ長を総データ件数で割った値を空きブロック追加閾値に格納し、前記空きブロック追加閾値が前記要求されたデータの出力長と前記最終ブロックデータ長を合わせた値より小さいか判断するステップと、
    (b4)前記空きブロック追加閾値が前記要求されたデータの出力長と前記最終ブロックデータ長を合わせた値より小さい場合、空き管理領域の先頭ブロックである前記第1空きブロックを前記サブファイルの最終ブロックであるデータブロックの次になるようブロックポインタを設定し、先頭空きブロックポインタを第2空きブロックに位置付けるステップと
    を含む
    ファイルスペース追加プログラム。
  16. 請求項15に記載のファイルスペース追加プログラムであって、
    前記(b)ステップは、
    (b5)前記空きブロック追加閾値が前記要求されたデータの出力長と前記最終ブロックデータ長を合わせた値より大きく、空きブロックを優先的に割り当てることを示すブロック優先度が高優先度の場合、前記空き管理領域の先頭ブロックである前記第1空きブロックを前記サブファイルの最終ブロックであるデータブロックの次になるようブロックポインタを設定し、先頭空きブロックポインタを前記第2空きブロックに位置付けるステップと
    を更に含む
    ファイルスペース追加プログラム。
JP2008058000A 2008-03-07 2008-03-07 ファイルスペース追加システム、ファイルスペース追加方法、及びファイルスペース追加プログラム Pending JP2009217357A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008058000A JP2009217357A (ja) 2008-03-07 2008-03-07 ファイルスペース追加システム、ファイルスペース追加方法、及びファイルスペース追加プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008058000A JP2009217357A (ja) 2008-03-07 2008-03-07 ファイルスペース追加システム、ファイルスペース追加方法、及びファイルスペース追加プログラム

Publications (1)

Publication Number Publication Date
JP2009217357A true JP2009217357A (ja) 2009-09-24

Family

ID=41189174

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008058000A Pending JP2009217357A (ja) 2008-03-07 2008-03-07 ファイルスペース追加システム、ファイルスペース追加方法、及びファイルスペース追加プログラム

Country Status (1)

Country Link
JP (1) JP2009217357A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014525058A (ja) * 2011-11-28 2014-09-25 株式会社日立製作所 ストレージシステムコントローラ、ストレージシステム及びアクセス制御方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63213042A (ja) * 1987-02-28 1988-09-05 Nec Corp フアイル領域の拡張方法
JPH0431935A (ja) * 1990-05-29 1992-02-04 Toshiba Corp ファイル領域管理方式
JPH08255100A (ja) * 1994-12-21 1996-10-01 Yamaha Corp ファイル管理システム及び方法
JPH09259022A (ja) * 1996-03-21 1997-10-03 Nec Corp 階層型ファイルシステムにおけるスタックファイル切り替え方式
JP2001101046A (ja) * 1999-09-28 2001-04-13 Canon Inc 情報処理装置及びその方法、コンピュータ可読メモリ
JP2007042089A (ja) * 2005-07-08 2007-02-15 Matsushita Electric Ind Co Ltd ファイル記録方法、ファイル記録装置およびプログラム

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63213042A (ja) * 1987-02-28 1988-09-05 Nec Corp フアイル領域の拡張方法
JPH0431935A (ja) * 1990-05-29 1992-02-04 Toshiba Corp ファイル領域管理方式
JPH08255100A (ja) * 1994-12-21 1996-10-01 Yamaha Corp ファイル管理システム及び方法
JPH09259022A (ja) * 1996-03-21 1997-10-03 Nec Corp 階層型ファイルシステムにおけるスタックファイル切り替え方式
JP2001101046A (ja) * 1999-09-28 2001-04-13 Canon Inc 情報処理装置及びその方法、コンピュータ可読メモリ
JP2007042089A (ja) * 2005-07-08 2007-02-15 Matsushita Electric Ind Co Ltd ファイル記録方法、ファイル記録装置およびプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014525058A (ja) * 2011-11-28 2014-09-25 株式会社日立製作所 ストレージシステムコントローラ、ストレージシステム及びアクセス制御方法

Similar Documents

Publication Publication Date Title
JP6198226B2 (ja) 順次並んだスワップ・ファイルを使用するワーキング・セットのスワップ
JP2858795B2 (ja) 実記憶割り当て方法
US8862703B2 (en) Address server
JP6412244B2 (ja) 負荷に基づく動的統合
US11314689B2 (en) Method, apparatus, and computer program product for indexing a file
US7770177B2 (en) System for memory reclamation based on thread entry and release request times
JP2006351004A (ja) 携帯端末機のメモリ管理方法
TW201025114A (en) File system for storage device which uses different cluster sizes
JP6885193B2 (ja) 並列処理装置、ジョブ管理方法、およびジョブ管理プログラム
CN111190537B (zh) 一种追加写场景下顺序存储磁盘管理的方法及系统
CN114327917A (zh) 内存管理方法、计算设备及可读存储介质
US5678024A (en) Method and system for dynamic performance resource management within a computer based system
US9395930B2 (en) Information processing system, control method of information processing system, and recording medium
US9009204B2 (en) Storage system
US20100299672A1 (en) Memory management device, computer system, and memory management method
CN106537321B (zh) 存取文件的方法、装置和存储系统
CN116881003A (zh) 资源分配方法、装置、服务设备及存储介质
JP2009217357A (ja) ファイルスペース追加システム、ファイルスペース追加方法、及びファイルスペース追加プログラム
JP2013088920A (ja) 計算機システム及びデータ管理方法
JP2006039942A (ja) 階層記憶システムにおけるファイル管理装置及びそのファイル管理方法
CN110209489B (zh) 一种适用于内存页结构的内存管理方法及装置
JP7197131B2 (ja) 情報処理装置、情報処理方法、プログラム
CN117743279A (zh) 存储控制方法、装置、设备和介质
KR101980581B1 (ko) 탠덤 시스템의 메모리 관리방법
JP4176682B2 (ja) メモリ管理方式

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110831

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110912

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111109

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120423