(57)【要約】【課題】ブロック単位でファイルを管理するファイルシステムにおいて、ブロックサイズ単位のデータの削除又は挿入の処理を効率化すること。【解決手段】情報管理装置であって、ブロック単位で情報を記憶するブロック記憶部と、ブロックの場所を表す格納場所情報をファイルごとに記憶する格納場所情報記憶部と、ファイル内におけるブロックの挿入又は削除の要求を受けたとき、ブロック記憶部内において当該挿入又は削除の影響を受けるブロックのみを書き換えるとともに、当該挿入又は削除の要求に基づいて格納場所情報記憶部内の格納場所情報を書き換える情報管理部とを含んで構成される。【選択図】図７
2009187403.tif 000002
【特許請求の範囲】
【請求項１】
ブロック単位で情報を記憶するブロック記憶部と、
前記ブロックの場所を表す格納場所情報をファイルごとに記憶する格納場所情報記憶部と、
前記ファイル内におけるブロックの挿入又は削除の要求を受けたとき、当該挿入又は削除の後のブロックの論理的順序に従って前記格納場所情報記憶部内の前記格納場所情報を書き換えるとともに、ブロックの挿入の要求を受けた場合には前記ブロック記憶部内において当該挿入の影響を受けるブロックのみを書き換える情報管理部と、
を含んで構成されることを特徴とする情報管理装置。
【請求項２】
前記情報管理部は、ブロックの挿入の要求を受けた場合、当該ファイルに対し新たに割り当てられたブロックの場所を挿入するブロックの場所として前記格納場所情報記憶部内の前記格納場所情報に追加し、前記ファイルのデータにおいて当該挿入箇所よりも後方の順番に該当するブロックの順番を前記格納場所情報において挿入ブロック数分繰り下げ、前記格納場所情報において当該ファイルに対し新たに割り当てられたブロックの場所に前記挿入の要求を受けたブロックのデータを書き込む、請求項１に記載の情報管理装置。
【請求項３】
前記情報管理部は、ブロックの削除の要求を受けた場合、当該削除の対象となるブロックの場所を前記格納場所情報記憶部内の前記格納場所情報から削除し、前記ファイルのデータにおいて当該削除箇所よりも後方の順番に該当するブロックの順番を前記格納場所情報において削除ブロック数分繰り上げる、請求項１に記載の情報管理装置。
【請求項４】
ブロック単位で情報を記憶するブロック記憶部と、前記ブロックの場所を表す格納場所情報をファイルごとに記憶する格納場所情報記憶部とを含んで構成されるコンピュータに、
前記ファイル内におけるブロックの挿入又は削除の要求を受けたとき、
当該挿入又は削除の後のブロックの論理的順序に従って前記格納場所情報記憶部内の前記格納場所情報を書き換えるステップと
ブロックの挿入の要求を受けた場合には前記ブロック記憶部内において当該挿入の影響を受けるブロックのみを書き換えるステップと、
を実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報管理装置およびコンピュータプログラムに関する。
【背景技術】
【０００２】
コンピュータで取り扱うデータを記憶装置に格納するときは、ファイル単位で格納されるのが最も一般的である。一方で、一般的な記憶装置は、セクタと呼ばれるブロック単位でデータにアクセスするため、そのままではファイル単位の管理ができない。ファイルを扱うアプリケーションプログラムと実際の記憶装置との仲介を行うのがファイルシステムの役割である。ファイルシステムにより、アプリケーションプログラムは、物理的な格納場所等を意識することなく、必要なデータ（ファイル）を取り出すことが可能となる。ファイルシステムは、通常はオペレーティングシステム（Operating System：ＯＳ）が持つ一つの機能として実現される。
ところで、初期の記憶装置は現在ほど大容量でなかったうえ、コンピュータで取り扱うファイルのサイズが現在ほど大きくはなかったため、ファイルシステムには専らファイルを管理するという基本的な機能が要求されていた。しかしながら、近年、記憶装置やコンピュータが取り扱うデータの大容量化が進み、従来のファイルシステムでは取り扱えない大きなファイルを扱う必要性が出てきたり、短時間で大量のファイルの入出力が必要になったりするなど、ファイルシステムがボトルネックになるような様々な問題が生じてきた。
【０００３】
このような問題に対し、ファイルシステムでは、取り扱い可能なファイルサイズの拡大やデータアクセス・変更の高速化など様々な改良がなされてきた。たとえば、ファイル検索の高速化に対しては、Ｂ−Ｔｒｅｅアルゴリズムやその改良版であるＢ＋−Ｔｒｅｅアルゴリズム等が提案されている。また、データの信頼性に対しては、突然の電源断やＯＳの欠陥などが原因で正規の終了処理（シャットダウン）ができなかった場合などにファイルが破壊される問題に対応し、ジャーナリングという手法が提案されている。非特許文献１は、このような改良の具体例について開示する。
【非特許文献１】菅谷  みどり、“Ｌｉｎｕｘファイルシステム技術解説”、［online］、平成15年5月20日、［平成19年11月30日検索］、インターネット（URL：http://www.atmarkit.co.jp/flinux/index/indexfiles/linuxfsindex.html）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ファイルシステムへの要求の一つとして、データ変更の高速化に対する要求がある。通常のファイルシステムにおいては、あるファイル内の特定の一部のデータのみを変更したい場合、変更前と変更後で変更された部分のデータサイズが同じ場合は変更箇所のみを書き換えることは可能であるが、変更された部分のデータサイズが異なる場合は変更部分のデータのみの書き換えはできない。この場合、このファイルにおいて変更部分以降のデータは位置をずらして書き換える必要があるため、一度メモリに読み込み、データの挿入や削除などの加工を行ったあとで、これらのデータを再度記憶装置へ書き込む必要が生じる。以下、この処理について説明する。
【０００５】
ファイルシステムは、記憶装置を所定のサイズのブロック単位で管理する。この場合、ファイルのデータはブロックのサイズ（以下、「ブロックサイズ」という。）に分けて管理される。
図１６及び図１７は、既存のファイルシステムにおけるデータ変更時の処理を表す図である。図１６及び図１７において、各四角形はブロックを表す。ブロック中の“Ａ（ｎ）”はデータの内容を表す。そして、ブロックの上に位置する番号は、ブロックの番号を表す。
図１６は、一つのブロックに相当するデータを削除する場合の処理を表す図である。図１６に示す例では、当初、ファイルＡを構成するデータが、ファイルシステム上で６つのブロックのデータＡ（０）、Ａ（１）、・・・、Ａ（５）に分割され、それぞれブロック番号が１００から１０５までのブロックに格納されている。このような状態から、図１６では、一つのブロックに相当するＡ（１）というデータが削除されるとする。この場合、Ａ（２）は一度メモリに読み込まれ、もともとＡ（１）が格納されていた１０１のブロックに格納される。同様に、それ以降の順番の各データも一つずつ繰り上がったブロックにそれぞれ格納される。なお、その結果、１０５のブロックは空き状態となる。このように、削除の対象となったデータよりも後方の順番に該当するデータについては、その格納場所を移動する処理が生じる。
【０００６】
図１７は、一つのブロックに相当するデータを挿入する場合の処理を表す図である。図１７に示す例では、当初、ファイルＡを構成するデータが、ファイルシステム上で５つのブロックのデータＡ（０）、Ａ（１）、・・・、Ａ（４）に分割され、それぞれブロック番号が１００から１０４のブロックに格納されている。このような状態から、図１７では、Ａ（０）とＡ（１）との間に、一つのブロックに相当するＡ（５）というデータが挿入されるとする。この場合、Ａ（１）は一度メモリに読み込まれ、データＡ（２）をメモリに一旦退避してからもともとＡ（２）が格納されていた１０２のブロックにＡ（１）が格納され、次にデータＡ（３）をメモリに一旦退避してからもともとＡ（３）が格納されていた１０３のブロックにＡ（２）が格納され、以降も同様に、必要に応じて格納先のブロックのデータを退避してから各データが一つずつ繰り下がったブロックにそれぞれ格納される。Ａ（５）はもともとＡ（１）が格納されていた１０１のブロックに格納される。このように、挿入の対象となったデータよりも後方の順番に該当するデータについては、その格納場所を移動する処理が生じる。
【０００７】
このように、データの変更（削除や挿入など）の処理を行う際には、少なくとも変更部分以降のデータの読み込み処理及び書き込み処理が生じる。このため、変更部分以降のデータのサイズに応じて、処理に要する時間が増大する。特に、サイズの大きいファイルでは、この問題はより顕在化してきている。
そこで本発明は、ブロック単位でファイルを管理するファイルシステムにおいて、データの削除又は挿入を実行する際の処理を効率化することのできる情報管理装置およびコンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
（１）本発明の一態様は、情報管理装置であって、ブロック記憶部、格納場所情報記憶部および情報管理部を含んで構成される。ブロック記憶部は、ブロック単位で情報を記憶する。格納場所記憶部は、ブロックの場所を表す格納場所情報をファイルごとに記憶する。情報管理部は、ファイル内におけるブロックの挿入又は削除の要求を受けたとき、当該挿入又は削除の後のブロックの論理的順序に従って格納場所情報記憶部内の格納場所情報を書き換えるとともに、ブロックの挿入の要求を受けた場合にはブロック記憶部内において当該挿入の影響を受けるブロックのみを書き換える。
【０００９】
このように構成された本発明によれば、ファイルのデータはブロック単位で記憶され、ファイルを構成する各ブロックの場所は格納場所情報として記憶される。情報管理部は、ファイル内におけるブロックの挿入又は削除の要求の受付が可能である。情報管理部は、挿入の要求を受けたときは挿入したブロックのみにデータ書き込み、削除の要求を受けたときはどのブロックも書き換えない。よって、挿入又は削除の要求により、処理を行う前にファイルを構成していたブロックを書き換える処理は、必要ないので実行されない。すなわち、挿入又は削除の対象となっているブロックの後方の順番に該当するブロックであるとしても、メモリへの読み込みやブロックへの書き込みの処理は実行されないため、メモリへの読み込みやブロックへの書き込みに要していた時間を削減し、データの変更の処理を効率化することが可能となる。
挿入又は削除するデータサイズがブロックサイズの倍数のときで且つ挿入又は削除するデータの先頭が記憶装置のブロックの境界と一致している場合は、処理を行う前にファイルを構成していたブロックを書き換える処理は必要ない。
また、挿入又は削除するデータサイズがブロックサイズの倍数のときで且つ挿入又は削除するデータの先頭が記憶装置のブロックの境界と一致していない場合は、処理を行う前にファイルを構成していたブロックのうち、挿入又は削除するデータの先頭が属するブロック以外はブロックを書き換える処理は必要ない。
したがって、変更される部分のデータサイズが異なる場合であっても、そのデータサイズの差がブロックサイズの倍数の場合には、つまりブロックサイズの整数倍に相当するデータの削除又は挿入を行なう場合には、変更箇所以外はブロックのデータ内容の実際の変更を行わずに、論理的にブロック移動することが可能となる。
なお、挿入の要求の場合に、情報管理部が、挿入の後のブロックの論理的順序に従って格納場所情報記憶部内の格納場所情報を書き換える処理と、ブロック記憶部内において当該挿入の影響を受けるブロックのみを書き換える処理の順序は、任意である。
【００１０】
（２）本発明の一態様は、上記の態様において、情報管理部は、ブロックの挿入の要求を受けた場合、当該ファイルに対し新たに割り当てられたブロックの場所を挿入するブロックの場所として格納場所情報記憶部内の格納場所情報に追加し、ファイルのデータにおいて当該挿入箇所よりも後方の順番に該当するブロックの順番を格納場所情報において挿入ブロック数分繰り下げ、格納場所情報において当該ファイルに対し新たに割り当てられたブロックの場所に挿入の要求を受けたブロックのデータを書き込むように構成される。
このように構成された本発明によれば、ブロックの挿入処理を行なう際に、ファイルのデータにおいて当該挿入箇所よりも後方の順番に該当するブロックの順番を格納場所情報において挿入ブロック数分繰り下げるようにしているため、つまり格納場所情報の編集によって、ブロック挿入後のファイルの整合性が維持されるようにしているため、挿入箇所よりも後方の順番のブロックのデータそのものを実際に繰り下げるためのデータの移動を行なう必要がない。よって、挿入の対象となっているブロック以外のブロックについては、メモリへ読み込みやブロックへの書き込み処理が必要ない。このため、ブロックの挿入処理において、メモリへの読み込みやブロックへの書き込みに要していた時間を削減することにより、データの変更の処理を効率化することが可能となる。
なお、ブロックの挿入処理を行なう際に、挿入のために新たに必要となるブロックの格納場所の領域は、確保される。また、新たに割り当てられたブロックの場所に、挿入の要求を受けたブロックのデータが書き込まれる。
【００１１】
（３）本発明の一態様は、上記の態様において、情報管理部は、ブロックの削除の要求を受けた場合、当該削除の対象となるブロックの場所を格納場所情報記憶部内の格納場所情報から削除し、ファイルのデータにおいて当該削除箇所よりも後方の順番に該当するブロックの順番を格納場所情報において削除ブロック数分繰り上げるように構成される。
このように構成された本発明によれば、ブロックの削除処理を行なう際に、ファイルのデータにおいて当該削除箇所よりも後方の順番に該当するブロックの順番を格納場所情報において削除ブロック数分繰り上げるようにしているため、つまり格納場所情報の編集によって、ブロック削除後のファイルの整合性が維持されるようにしているため、削除箇所よりも後方の順番のブロックのデータそのものを実際に繰り上げるためのデータの移動を行なう必要がない。よって、削除の対象となっているブロック以外のブロックについては、メモリへ読み込みやブロックへの書き込み処理が必要ない。このため、ブロックの削除処理において、メモリへの読み込みやブロックへの書き込みに要していた時間を削減することにより、データの変更の処理を効率化することが可能となる。
なお、ブロックの削除処理を行なう際に、削除対象のブロックの格納場所の領域そのものは、解放される。
【００１２】
（４）本発明は、コンピュータを、上述した情報管理装置として動作させるためのコンピュータプログラムである。
【発明の効果】
【００１３】
本発明により、ブロック単位でファイルを管理するファイルシステムにおいて、ブロックサイズ単位での削除又は挿入の処理を効率化することが可能となる。
【発明を実施するための最良の形態】
【００１４】
図１は、本発明による情報管理装置１００の機能構成例を示す機能ブロック図である。情報管理装置１００は、アプリケーション実行部ＡＰ、情報管理部１０、キャッシュメモリ管理部２１、キャッシュメモリ入出力部２２、キャッシュメモリ２３、蓄積装置入出力部２４、及び蓄積装置２５を含んで構成される。情報管理装置１００は、演算装置や記憶装置がバスによって接続され、記憶装置に記憶されているプログラムに基づいて動作する情報処理装置を用いて構成することができる。情報管理装置１００の各機能部やその一部は、専用のハードウェアを用いて構成されても良い。以下、図１を用いて、情報管理装置１００が備える各機能部について説明する。
【００１５】
アプリケーション実行部ＡＰは、いわゆるアプリケーションプログラムを実行する機能部であり、情報処理装置の演算装置や専用装置によって実現される。アプリケーション実行部ＡＰは、情報管理装置１００に備えられた演算装置や専用装置によって実現されても良いし、情報管理装置１００に接続された他の装置において実現されても良い。なお、本実施形態では、アプリケーション実行部ＡＰは情報管理装置１００の演算装置によって実現され、各アプリケーション実行部ＡＰによって実行されるアプリケーションプログラムは情報管理装置１００のＯＳ上で動作する。
【００１６】
情報管理部１０は、アプリケーション実行部ＡＰにおいてファイルへのアクセスが発生した場合に、キャッシュメモリ２３又は蓄積装置２５に記憶されているファイルへのアクセスを仲介する。即ち、情報管理部１０は、アプリケーション実行部ＡＰからのファイル読み込み指示やファイル書き込み指示などに従い、キャッシュメモリ２３又は蓄積装置２５上に記憶されたファイルへアクセスし、指示に応じてデータの読み込み処理や書き込み処理を行う。
【００１７】
情報管理部１０は、ファイルシステムとして蓄積装置２５を管理する上で、予め定義されたサイズ（ブロックサイズ）のブロック単位で、蓄積装置２５の全領域（より具体的には、パーティション内の全領域）を分割して管理する。そして、情報管理部１０は、各ブロックに対し、ファイルシステム上の通し番号であるブロック番号を付与する。以下、ファイルシステム上の各ブロックの場所を表すこのブロック番号を、説明の便宜上「システムブロック番号」と呼ぶ。ファイルシステム内においては、各ブロックはこのシステムブロック番号を用いて管理される。
また、情報管理部１０は、ファイルの実データをブロックサイズのデータに分割して管理する。こうして分割された複数のデータは、順番に並べられることにより、もとの一つのファイルのデータとなる。以下、この順番を表す番号を、説明の便宜上「ファイルブロック番号」と呼ぶ。また、各ブロックサイズに分割されたデータを「ブロックデータ」と呼ぶ。例えば、２つのブロックに分割されたファイルを構成する実データは、ファイルブロック番号０とファイルブロック番号１のブロックデータが、この順番に並ぶことにより構成される。そして、ファイルがどのシステムブロック番号にマッピングされたかを後述するように格納場所情報３５に記録することによって、格納場所情報３５を参照すればそのファイルの実データを元の順番で取り出す（再現する）ことができるようになっている。
【００１８】
このように、以下の説明において、ブロック番号には「システムブロック番号」と「ファイルブロック番号」がある。システムブロック番号は、ファイルシステムにおける記憶領域としての各ブロックの場所を表す。ファイルブロック番号は、ブロックサイズに分割された複数のブロックデータが、ファイルを構成する上で何番目（先頭は０番目）のデータであるかを示す。
【００１９】
情報管理部１０は、ファイルの実データ以外に、図２の（ａ）〜（ｃ）に示すように、ファイルシステム情報３０や個々のファイルに関するファイル情報３４やディレクトリ情報３７を取り扱う。以下、ファイルシステム情報３０とファイル情報３４とディレクトリ情報３７について説明する。なお、ファイルシステム情報３０とファイル情報３４とディレクトリ情報３７は、蓄積装置２５に記憶される。
ただし、ファイルシステム情報３０やファイル情報３４やディレクトリ情報３７は、蓄積装置２５とは別の記憶装置に記憶されても良い。ただしこの場合も、この別の記憶装置は、情報管理部１０がアクセス可能な記憶装置であり、またファイルの実データと、ファイルシステム情報３０やファイル情報３４やディレクトリ情報３７とは、関連付けてセットとして管理される。
【００２０】
図２（ａ）は、ファイルシステム情報３０の内容を示す図である。ファイルシステム情報３０は、ブロック管理情報３１やファイル管理情報３２を含む。ブロック管理情報３１は、ファイルシステム内におけるブロックの割り当て状態に関する情報を含む。ファイル管理情報３２は、ファイル情報３４の割り当て状態に関する情報を含む。
図２（ｂ）は、ファイル情報３４の内容を示す図である。ファイル情報３４は、ファイル毎に管理される。ファイル情報３４は、各ファイルについての格納場所情報３５やファイル属性情報３６などを含む。格納場所情報３５は、ファイルの実データの格納ブロック番号に関する情報を含む。具体的には、格納場所情報３５は、各ファイルについて、各ファイルブロック番号の実データが格納されているシステムブロック番号についての情報を含む。ファイル属性情報３６は、ファイルのサイズ、作成日時、アクセス権限などの情報を含む。
【００２１】
ファイル情報３４は、蓄積装置２５に蓄積されているファイル一つ一つに付与される。ファイルシステムがファイル情報３４と実データとを組み合わせて管理するため、このファイルシステムの機能を通して、アプリケーション実行部ＡＰは各ファイルをファイルとして認識し、そのファイルのデータを得ることができる。そして、ファイル情報番号によって特定のファイル情報３４の格納場所が一意に定まるようになっている。本実施形態では、個々のファイル情報３４が固定長（例えば１２８バイト）のサイズのデータであり、ファイル情報番号は０からの通し番号であり、ファイル情報番号の順にそれらのファイル情報３４が連続した領域に配置されている。このとき、ｋ番目（ｋ＝０，１，２、・・・）のファイル情報３４の格納場所は、（ファイル情報３４全体の先頭位置）＋ｋ＊（個々のファイル情報３４のサイズ）である。
図２（ｃ）は、ディレクトリ情報３７の内容を示す図である。ディレクトリ情報３７は、ファイル名とファイル情報番号とを対応付けるテーブルを有している。図示するデータ例では、ファイル名（１）はファイル情報番号（１）に対応し、ファイル名（２）はファイル情報番号（２）に対応し、また、以下同様である。
ファイルに対する入出力の際には、アプリケーション実行部ＡＰが指定するファイル名を基に、このディレクトリ情報３７を参照することによって当該ファイル名に対応するファイル情報番号が特定され、そのファイル情報番号によって当該指定されたファイルのファイル情報３４の場所を得ることができる。そして、そのように特定されたファイル情報３４を用いて、格納場所の実データを読み出したり書き込んだりすることができる。
次に、情報管理部１０の機能部の詳細について説明する。情報管理部１０は、ファイル入出力部１１、ブロック入出力部１２、ブロック管理部１３、ファイル情報管理部１４及びファイル管理部１５を含む。なお、以下の説明では、情報管理部１０は、情報管理装置１００のＯＳとしての機能の一つであるファイルシステムとしての機能を実行する機能部である。
【００２２】
ファイル入出力部１１は、アプリケーション実行部ＡＰからの指示を受け付ける。ファイル入出力部１１は、アプリケーション実行部ＡＰから受け付けた指示に基づいて、ブロック管理部１３、ファイル情報管理部１４及びファイル管理部１５と情報交換を行い、ブロック入出力部１２を介してキャッシュメモリ２３及び蓄積装置２５のデータにアクセスする。なお、上記の情報交換において、ファイル入出力部１１がファイル管理部１５へファイルブロック番号を渡すと、ファイル管理部１５は、後述する方法により、渡されたファイルブロック番号に対応するシステムブロック番号をファイル入出力部１１に返す。
ブロック入出力部１２は、ファイル入出力部１１によって指定されたシステムブロック番号に対応するファイルシステム上のブロックに対し、ブロック単位で書き込み処理や読み込み処理を行う。
【００２３】
ブロック管理部１３は、ファイルシステム情報３０内のブロック管理情報３１を管理する。すなわち、ブロック管理部１３は、ブロック管理情報３１により、全システムブロックについて、それが空きブロックか否かを管理する。例えば、ブロック管理部１３は、ファイルの新規作成要求や追加書き込み要求があると、書き込むためのブロックを、空きブロックの中から適宜選択して割り当てる。また、ファイルの削除要求やブロック削除の要求があれば、ブロック管理部１３は、そのファイルの実データが記録されていたファイルシステム上のブロックを解放し、空きブロックとして管理する。
ファイル情報管理部１４は、ファイルシステム情報３０内のファイル管理情報３２を管理する。すなわち、ファイル管理情報３２により、全ファイル情報３４について、それが使用中か否かを管理する。例えば、ファイルの新規作成要求があれば、ファイル情報管理部１４は、そのファイルに対するファイル情報３４を割り当て、その結果をファイル管理情報３２上で使用中として管理する。また、ファイル情報管理部１４は、ファイルの削除要求があれば、そのファイルのファイル情報３４を解放し、その結果をファイル管理情報３２上で未使用として管理する。
【００２４】
ファイル管理部１５は、ファイル情報３４とディレクトリ情報３７を管理する。ファイル管理部１５は、ファイル入出力部１１からファイル名と参照箇所の位置情報を受け取ると、そのファイル名をもとにディレクトリ情報３７を検索することによって該当するファイル情報３４を取得し、ファイル内の参照箇所の位置情報（ファイル先頭から当該参照箇所までのバイト数で表わされる）をもとに該当するファイルブロック番号を計算して、これを基にシステムブロック番号を取得する。そして、ファイル管理部１５は、ファイル入出力部１１に、取得したシステムブロック番号を返す。
また、ファイル管理部１５は、既存のファイルに対して書き換え（書き込み）要求があるとき、そのファイル情報３４のファイルサイズ情報やファイル更新時刻などを更新するとともに、ファイルサイズの変更に伴ってファイルの使用ブロック数に変更がある場合は、格納場所情報も更新する。使用ブロック数が減少する場合は、格納場所情報３５内の使用しなくなるシステムブロック番号を削除して、そのシステムブロック番号を削除ブロック番号としてファイル入出力部１１に返す。ファイル入出力部１１はブロック管理部１３にそのシステムブロック番号を渡し、それらのブロックを解放する。使用ブロック数が増加する場合は、追加ブロックが必要であるという情報をファイル入出力部１１に返す。ファイル入出力部はブロック管理部１３に問い合わせて空きブロックの中から必要なブロック数分のシステムブロック番号を受け取る。ファイル管理部１５は、このシステムブロック番号を追加ブロック番号として受け取り、格納場所情報３５に追加する。この追加ブロックの処理は１ブロックずつ行ってもよいし、複数ブロックまとめて行ってもよい。また、ファイル管理部１５は、ファイルにアクセスしようとするアプリケーションプログラムの権限と、そのファイル属性情報３６に記されたアクセス権限に関する情報とに基づいて、そのファイルへのアクセスを許可するか否か判断する。
【００２５】
キャッシュメモリ管理部２１は、蓄積装置２５におけるアクセス速度の遅さをキャッシュメモリ２３で補う処理を行う。キャッシュメモリ管理部２１は、要求されたブロックデータにアクセスする際に、そのブロックデータがキャッシュメモリ２３に蓄積されている場合はキャッシュメモリ２３にアクセスする。一方、キャッシュメモリ管理部２１は、要求されたブロックデータがキャッシュメモリ２３に蓄積されていない場合は、蓄積装置２５にアクセスする。キャッシュメモリ管理部２１は、従来からあるキャッシュメモリシステムの技術が適用されることにより実現できる。
また、ブロックデータの書き換え処理が発生した場合は、キャッシュメモリ管理部２１は、所定のアルゴリズムに従って下位の記憶装置（例えば蓄積装置２５）に対し書き換え処理の反映を行う。
【００２６】
キャッシュメモリ入出力部２２は、キャッシュメモリ２３の種類に依存する制御コマンドなどを担当し、キャッシュメモリ管理部２１がキャッシュメモリ２３の種類に依存することなく動作可能となるように機能する。
キャッシュメモリ２３は、高速にアクセス可能なメモリ装置を用いて構成される。例えば、キャッシュメモリ２３は、ＳＲＡＭ（Static Random Access Memory）等を用いて構成される。
蓄積装置入出力部２４は、蓄積装置２５の種類に依存する制御コマンドなどを担当し、キャッシュメモリ管理部２１が蓄積装置２５の種類に依存することなく動作可能となるように機能する。
蓄積装置２５は、一般的には不揮発性の記憶装置を用いて構成される。蓄積装置２５は、例えばハードディスク装置や書き換え可能な光ディスク装置などを用いて構成されても良いし、コンピュータがリセットされたときに記録された情報が消去されても良い場合は揮発性の記憶装置である半導体メモリを用いて構成されても良い。蓄積装置２５は、情報管理部１０による書き込み処理を受け、ブロック単位で情報を記憶する（「ブロック記憶部」に相当する。）。また、蓄積装置２５は、ファイルシステム情報３０とファイル情報３４とディレクトリ情報３７を記憶する（「格納場所情報記憶部」に相当する。）。
【００２７】
次に、本実施形態による情報管理装置１００の動作手順について説明する。例えば、ファイルからブロックを削除する場合は、図１４に示すプログラム例のように、ファイルをｏｐｅｎし、ブロック削除を指示し、最後にファイルをｃｌｏｓｅする。また、ファイルにブロックを挿入する場合は、図１５に示すプログラム例のように、ファイルをｏｐｅｎし、ブロック挿入を指示し、ブロックデータ書き込みのためにｗｒｉｔｅし、最後にファイルをｃｌｏｓｅする。ファイル操作に必要な指示のうち、通常のファイルシステムに実装されている基本的な指示である「ファイルｏｐｅｎ」、「ファイルｒｅａｄ」、「ファイルｒｅｍｏｖｅ」、および本実施形態で追加した指示である「ブロック削除」、「ブロック挿入」の動作について、以下に説明する。
〔ファイルｏｐｅｎ〕
図３は、アプリケーション実行部ＡＰからファイルｏｐｅｎ（ファイルを開く）の指示があった場合の、情報管理装置１００の動作手順を示すフローチャートである。
アプリケーション実行部ＡＰからファイル名およびアクセスモード（書込モードまたは読出モード）を指定してファイルｏｐｅｎの指示が出されると（ステップＳ０１）、ファイル入出力部１１は、ファイル管理部１５に対し、ファイルｏｐｅｎ指示の対象となっているファイルが存在するか否か問い合わせる。ファイル管理部１５は、ディレクトリ情報３７により、指定されたファイル名の有無を確認する。ファイルが存在する場合（ステップＳ０２−ＹＥＳ）、ファイル管理部１５は、ディレクトリ情報３７より該当するファイル情報番号を取得し、このファイル情報番号に対応するファイル情報３４をファイル入出力部１１へ渡す。これにより、ファイル入出力部１１は、指示の対象となったファイルに関するファイル情報３４を取得する（ステップＳ０３）。
【００２８】
一方、指示の対象となったファイルが存在しない場合（ステップＳ０２−ＮＯ）、即ち指示の対象となったファイル名がディレクトリ情報３７の中に存在しない場合、ファイル管理部１５は、このことをファイル入出力部１１へ通知する。ファイル入出力部１１は、この通知を受けると、上記のオープンの指示が書込モードであるか否かを調べる。書込モードである場合（ステップＳ０４−ＹＥＳ）、新たなファイル情報３４の割り当てが可能か否かについて、ファイル情報管理部１４に問い合わせる。割り当てが可能な場合（ステップＳ０５−ＹＥＳ）、ファイル情報管理部１４は、ファイル入出力部１１の指示に基づいて、このファイルに関するファイル情報３４の割り当てを行う（ステップＳ０６）。そして、ファイル入出力部１１は、新たに割り当てられたファイル情報３４を、ファイル管理部１５へ渡す。ファイル情報３４の割り当てができない場合（ステップＳ０５−ＮＯ）、ファイル情報管理部１４はファイル入出力部１１に対しエラーを出力する。一方、オープンの指示が書込モードでない場合（ステップＳ０４−ＮＯ）も、ファイル情報管理部１４はファイル入出力部１１に対しエラーを出力する。そして、ファイル入出力部１１は、これらのエラーに基づいて、アプリケーション実行部ＡＰに対しエラーを出力する（ステップＳ０７）。
【００２９】
〔ファイルｒｅａｄ〕
図４は、アプリケーション実行部ＡＰからファイルｒｅａｄ（ファイルを読む）の指示があった場合の情報管理装置１００の動作手順を示すフローチャートである。アプリケーション実行部ＡＰからファイルｒｅａｄの指示が出されると（ステップＳ１０）、ファイル入出力部１１は、ファイル管理部１５に対し、ファイルｒｅａｄの指示の対象となっているファイルの実データが格納されているブロックのシステムブロック番号を問い合わせる。ファイル管理部１５は、ファイル情報３４に含まれる格納場所情報３５に基づき、問い合わせの対象となっているシステムブロック番号を取得し、これをファイル入出力部１１へ渡す。ファイル入出力部１１は、これを受け取ることにより、システムブロック番号を特定する（ステップＳ１１）。
【００３０】
次に、ファイル入出力部１１は、ブロック入出力部１２に対し、特定されたシステムブロック番号のブロックに格納されたデータを取得するように指示する。ブロック入出力部１２は、キャッシュメモリ管理部２１に対し、指示されたブロックに格納されたデータを取得するように指示する。キャッシュメモリ管理部２１は、指示されたデータがキャッシュメモリ２３に存在する場合はキャッシュメモリ２３からデータを読み出し、キャッシュメモリ２３に存在しない場合は蓄積装置２５からデータを読み出す。そして、キャッシュメモリ管理部２１は、読み出されたデータを、ブロック入出力部１２を介してファイル入出力部１１へ渡す。こうして、ファイル入出力部１１は、アプリケーション実行部ＡＰから指示されたブロックデータを読み込む（ステップＳ１２）。そして、ファイル入出力部１２は、読み込まれたブロックデータを、アプリケーション実行部ＡＰへ渡す（ステップＳ１３）。キャッシュメモリ管理部２１は、蓄積装置２５からデータを読み出したときは、そのデータをキャッシュメモリ２３に書き込むのが一般的であるが、そのデータをキャッシュメモリ２３に書き込まないようにしてもよい。
【００３１】
〔ファイルｒｅｍｏｖｅ〕
図５は、アプリケーション実行部ＡＰからファイルｒｅｍｏｖｅ（ファイルを消去）の指示があった場合の、情報管理装置１００の動作手順を示すフローチャートである。アプリケーション実行部ＡＰからファイルｒｅｍｏｖｅの指示が出されると（ステップＳ２０）、ファイル入出力部１１は、指定されたブロックデータが格納されているシステムブロック番号をファイル管理部１５に問い合わせる。ファイル管理部１５は、ファイル情報３４内の格納場所情報３５をもとに、システムブロック番号を取得し（ステップＳ２１）、これをファイル入出力部１１に返す。ファイル入出力部１１は、ファイル管理部１５から受け取ったシステムブロック番号に基づき、このシステムブロック番号に該当するブロックを解放することを、ブロック管理部１３に指示する。そして、ブロック管理部１３は、指示されたシステムブロック番号のブロックを解放する（ステップＳ２２）。このとき、ファイル入出力部１１は、ブロック入出力部１２に対し、このブロックに係るブロックデータを削除することを指示するように構成されても良いし、特にこのような削除指示を行わないように構成されても良い。解放されたブロックは、ブロック管理部１３によって、今後新たなブロック割り当て処理が行われる際に、割り当て対象の新規ブロックとして取り扱われる。その後、ファイル入出力部１１は、ファイル情報管理部１４に対し、このファイルに関するファイル情報３４を解放することを指示する。そして、ファイル情報管理部１４は、指示に従ってファイル情報３４を解放する（ステップＳ２３）。
【００３２】
〔ブロック削除〕
図６は、アプリケーション実行部ＡＰからブロック削除の指示があった場合の、情報管理装置１００の動作手順を示すフローチャートである。アプリケーション実行部ＡＰから、ファイル内のブロック削除の指示が出されると（ステップＳ３０）、ファイル入出力部１１は、指定されたブロックデータが格納されているシステムブロック番号をファイル管理部１５に問い合わせる。ファイル管理部１５は、ファイル情報３４内の格納場所情報３５をもとに、システムブロック番号を取得し、これをファイル入出力部１１に返す。このとき、ファイル情報３４内の格納場所情報３５から該当ブロック番号を削除する（ステップＳ３１）。ファイル入出力部１１は、ファイル管理部１５から受け取ったシステムブロック番号に基づき、このシステムブロック番号に該当するブロックを解放することを、ブロック管理部１３に指示する。そして、ブロック管理部１３は、指示されたシステムブロック番号のブロックを解放する（ステップＳ３２）。
このとき、ファイル入出力部１１は、ブロック入出力部１２に対し、このブロックに係るブロックデータを削除することを指示するように構成されても良いし、特にこのような削除指示を行わないように構成されても良い。解放されたブロックは、ブロック管理部１３によって、今後新たなブロック割り当て処理が行われる際に、割り当て対象の新規ブロックとして取り扱われる。
【００３３】
＜１対１管理方式＞
図７は、ブロック削除の処理における格納場所情報３５の内容の遷移を示す図である。図７には、ファイルシステムにおけるブロックの状況及び格納場所情報３５の内容を、６つのブロックデータで構成されたファイルＡの実データがシステムブロック番号１００〜１０５に順番に記録されている場合を例にとって示す。
図７において、上段に示される連続した６つの矩形は、それぞれファイルシステムにおけるブロックを示す。各ブロックの上に記載された番号は、各ブロックのシステムブロック番号を示す。各ブロックを表す矩形内に記載されたＡ（０）〜Ａ（５）の文字列は、各ブロックに格納されたブロックデータを示す。ファイルＡの実データは、Ａ（０）〜Ａ（５）が順に並ぶことによって構成される。
図７の下段には、ファイルＡに係る格納場所情報３５の内容を示す。図７における格納場所情報３５は、ｅｘｔ２等のファイルシステムと同様に、ファイルブロック番号とシステムブロック番号とを１対１で対応付けて管理する。格納場所情報３５の左側にある番号はファイルブロック番号を示し、右側にある番号は各ファイルブロック番号に対応する実データが格納されたブロックのシステムブロック番号を示す。以下、図７を用いて、ブロック削除の処理における格納場所情報３５の遷移について説明する。なお、図７では、ファイルブロック番号１のブロックデータが削除される場合を例に示す。
【００３４】
図７の左側には、ファイルブロック番号１のブロックデータが削除される前の、ブロックの状況及び格納場所情報３５の内容を示す。これに対し、図７の右側には、ファイルブロック番号１のブロックデータが削除された後の、ブロックの状況及び格納場所情報３５の内容を示す。これは、ファイル管理部１５が、削除の対象となるブロックの場所の情報（図７においてはシステムブロック番号１０１）を格納場所情報３５から削除するとともに、このファイルＡのデータにおいて削除箇所よりも後方の順番に該当するブロック（図７においては、ファイルブロック１よりも後方となるファイルブロック２〜５に対応するシステムブロック１０２〜１０５）の順番（ファイルブロック番号）が削除ブロック数分（図７においては、１つ）繰り上がるように変更した後の状態である。つまり、ファイル管理部１５は、ブロック削除の要求に基づき、削除後のブロックの論理的順序に従ってブロックの格納場所の情報が並ぶように格納場所情報３５を書き換える。
この場合、削除の対象となったファイルブロック番号１以降の各ブロックデータが格納されるブロックは、削除処理前の状態と変わらない。すなわち、ファイル管理部１５が格納場所情報３５のみを変更することにより、削除の対象となったファイルブロック番号１以降のブロックデータそのものを移動させる処理が発生しない。本実施形態による情報管理装置１００では、ブロックデータそのものを移動させる処理に代えて、上述の通り、ファイル管理部１５が、ファイルＡのファイル情報３４の格納場所情報３５において、ファイルブロック番号１〜５に対応付けられているシステムブロック番号を、それぞれ書き換える。
【００３５】
＜エクステント方式＞
図８は、図７と同様に、ブロック削除の処理における格納場所情報３５の内容の遷移を示す図である。ただし、図８では、格納場所情報３５には、ｘｆｓやｅｘｔ４等のファイルシステムと同様に、エクステント方式が採用されている。エクステント方式では、格納場所情報３５は、ファイルの第ｎブロックから連続するＬ個のブロックに係るブロックデータがファイルシステム上の第ｍブロックから連続するＬブロックに格納されていることを、“ｎ，Ｌ，ｍ”として管理する。上述した“ｎ”はファイルブロック番号に相当し、“ｍ”はシステムブロック番号に相当する。このように、エクステント方式では、格納場所情報３５は、連続するブロック毎に１セットの、格納場所に関する情報を有する。
図８の左側と右側には、それぞれ図７の場合と同様に、ファイルブロック番号１のブロックデータが削除される前と後の状態を示す。図８の左側の格納場所情報３５では、上述した“ｎ，Ｌ，ｍ”のそれぞれが“０，６，１００”として示される。即ち、図８の左側の格納場所情報３５には、ファイルブロック番号０から連続する６つのブロックデータが、システムブロック番号１００から連続する６つのブロックに格納されていることが示されている。
【００３６】
これに対し、図８の右側には、ファイルブロック番号１のブロックデータが削除された後の格納場所情報３５の内容を示す。ここで、“０，１，１００”は、ファイルブロック番号０から連続する１つのブロックデータ、即ちファイルブロック番号０のブロックデータが、システムブロック番号１００に格納されていることを示す。また、“１，４，１０２”は、ファイルブロック番号１から連続する４つのブロックデータが、システムブロック番号１０２から連続する４つのブロックに格納されていることを示す。これは、当初連続したシステムブロック番号１００、１０１、１０２、１０３、１０４、１０５からその中のシステムブロック番号１０１が削除されることで、システムブロック番号１００、及びシステムブロック番号１０２、１０３、１０４、１０５の２つの連続ブロックに分割されるため、ファイル管理部１５は、格納場所情報３５の“０，６，１００”を、“０，１，１００”と“１，４，１０２”に置き換えて記録する。ファイル管理部１５がこのように格納場所情報３５を変更したことにより、削除の対象となるブロックの場所（図８においてはシステムブロック１０１）は、格納場所情報３５から削除された状態になるとともに、このファイルＡのデータにおいて削除箇所よりも後方の順番に該当するブロック（図８においては、ファイルブロック１よりも後方となるファイルブロック２〜５に対応するシステムブロック１０２〜１０５）の順番（ファイルブロック番号）が、削除ブロック数分（図７においては、１つ）繰り上がった状態となっている。このように記載されることにより、システムブロック番号１０１のブロックに格納されたブロックデータは、ファイルＡを構成するデータではないことが示される。つまり、ファイル管理部１５は、ブロック削除の要求に基づき、削除後のブロックの論理的順序に従ってブロックの格納場所の情報が並ぶように格納場所情報３５を書き換える。このエクステント方式においても、ファイル管理部１５が、格納場所情報３５のみを変更することにより、ブロック移動処理が発生しない。なおこの場合も、情報管理部１０は、図７の場合と同様に、システムブロック番号１０１におけるブロックデータを削除しないように構成されても良い。
【００３７】
〔ブロック挿入〕
図９は、アプリケーション実行部ＡＰからブロック挿入の指示があった場合の、情報管理装置１００の動作手順を示すフローチャートである。アプリケーション実行部ＡＰから、ファイル内にブロック挿入の指示が出されると（ステップＳ４０）、ファイル入出力部１１は、ブロック管理部１３に対し、割り当て可能なブロックを取得するように指示する。割り当て可能なブロックが存在しない場合（ステップＳ４１−ＮＯ）、ブロック管理部１３は、ファイル入出力部１１に対しエラーを出力する。そして、ファイル入出力部１１は、アプリケーション実行部ＡＰに対しエラーを出力する（ステップＳ４２）。
一方、割り当て可能なブロックが存在する場合（ステップＳ４１−ＹＥＳ）、ブロック管理部１３は、割り当て可能なブロックを、ブロック挿入処理の対象となっているファイルに対し新たに割り当てる（ステップＳ４３）。また、ブロック管理部１３は、新たに割り当てられたブロックのシステムブロック番号を、ファイル入出力部１１に通知する。ファイル入出力部１１は、この通知を受けると、ファイル管理部１５に対し、ブロック挿入処理の対象となっているファイルに関するファイル情報３４の格納場所情報３５の挿入を指示した箇所に、新たに割り当てられたシステムブロック番号を追加するように指示する。この指示を受けたファイル管理部１５は、ブロック挿入処理の対象となっているファイルのファイル情報３４の格納場所情報３５の挿入を指示した箇所に対し、新たに割り当てられたブロックのシステムブロック番号を追加する（ステップＳ４４）。
【００３８】
その後、ファイル入出力部１１は、アプリケーション実行部ＡＰから、挿入するブロックデータを受け取る（ステップＳ４５）。ファイル入出力部１１は、受け取ったブロックデータを、ブロック入出力部１２に渡し、新たに割り当てられたブロックに格納するように指示する。そして、ブロック入出力部１２は、このブロックデータを、新たに割り当てられたブロックに格納する（書き込む）（ステップＳ４６）。
【００３９】
＜１対１管理方式＞
図１０は、ブロック挿入の処理における格納場所情報３５の内容の遷移を示す図である。図１０には、ブロックの状況及び格納場所情報３５の内容を、５つのブロックデータで構成されたファイルＡの実データがシステムブロック番号１００〜１０４に順番に記録されている場合を例にとって示す。
図１０の左側には、ファイルブロック番号１の位置に、Ａ（５）のブロックデータが挿入される前の、ブロックの状況及び格納場所情報３５の内容を示す。これに対し、図１０の右側には、ファイルブロック番号１の位置にＡ（５）のブロックデータが挿入された後の、ブロックの状況及び格納場所情報３５の内容を示す。このデータ挿入の際、ファイル管理部１５は、格納場所情報３５を後述するように変更するものの、挿入の対象となるファイルブロック番号１以降の各ブロックデータが格納されるブロックそのものを書き換える処理は必要ない。すなわち、挿入の対象となったファイルブロック番号１以降の各ブロックデータを、他のシステムブロック番号に係るブロックへ移動させる処理は発生しない。本発明による情報管理装置１００では、ブロックデータそのものを移動させる処理に代えて、以下のような処理が実行される。
【００４０】
まず、ブロック管理部１３は、新たにシステムブロック番号１０５のブロックをファイルＡに対して割り当てる。そして、ファイル管理部１５は、新たに割り当てられたブロックの場所（図１０においてはシステムブロック番号１０５）を、挿入箇所の順番（図１０においてはファイルブロック番号１）に該当する（挿入する）ブロックの場所として、格納場所情報３５に追加する。さらに、ファイル管理部１５は、ファイルＡのファイル情報３４の格納場所情報３５において、挿入箇所よりも後方の順番（即ち、挿入箇所であるファイルブロック番号及びこれよりも大きいファイルブロック番号）に該当するブロックの順番を、挿入されたブロックの数分繰り下げる。図１０においては、挿入箇所よりも後方の順番に該当するブロックである、システムブロック番号１０１〜１０４のブロックの順番（ファイルブロック番号）を、挿入ブロック数である１ずつ繰り下げる。つまり、ファイル管理部１５は、ブロック削除の要求に基づき、削除後のブロックの論理的順序に従ってブロックの格納場所の情報が並ぶように格納場所情報３５を書き換える。そして、ブロック入出力部１２は、新たに割り当てられたシステムブロック番号１０５のブロックに対し、挿入されるべきブロックデータＡ（５）を格納する。
【００４１】
＜エクステント方式＞
図１１は、図１０と同様に、ブロック挿入の処理における格納場所情報３５の内容の遷移を示す図である。ただし、図１１では、格納場所情報３５には、図８と同様にエクステント方式が採用されている。
図１１の左側と右側には、それぞれ図１０の場合と同様に、ファイルブロック番号１のブロックデータが挿入される前と後の状態を示す。図１０の左側の格納場所情報３５では、上述した“ｎ，Ｌ，ｍ”のそれぞれが“０，５，１００”として示される。即ち、図１１の左側の格納場所情報３５には、ファイルブロック番号０から連続する５つのブロックデータが、システムブロック番号１００から連続する５つのブロックに格納されていることが示されている。
【００４２】
これに対し、図１１の右側には、ファイルブロック番号１のブロックデータが挿入された後の格納場所情報３５の内容を示す。ここで、“０，１，１００”は、ファイルブロック番号０から連続する１つのブロックデータ、即ちファイルブロック番号０のブロックデータが、システムブロック番号１００に格納されていることを示す。また、“１，１，１０５”は、ファイルブロック番号１のブロックデータが、システムブロック番号１０５に格納されていることを示す。そして、“２，４，１０１”は、ファイルブロック番号２から連続する４つのブロックデータが、システムブロック番号１０１から連続する４つのブロックに格納されていることを示す。これは、当初連続したシステムブロック番号１００、１０１、１０２、１０３、１０４の中にシステムブロック番号１０５が挿入されることで、システムブロック番号１００、システムブロック番号１０５、及びシステムブロック番号１０１、１０２、１０３、１０４の３つの連続ブロックに分割されるため、ファイル管理部１５は格納場所情報３５の“０，５，１００”を、“０，１，１００”と“１，１，１０５”と“２，４，１０２”に置き換えて記録する。その後、ブロック入出力部１２はＡ（５）のデータをシステムブロック番号１０５に格納する。ファイル管理部１５が格納場所情報３５を変更することにより、ファイルＡに対し新たに割り当てられたブロックの場所（図１１においてはシステムブロック番号１０５）が、挿入箇所の順番（図１１においてはファイルブロック番号１）に該当する（挿入する）ブロックの場所として追加された状態になるとともに、挿入箇所よりも後方の順番に該当するブロックの順番（ファイルブロック番号）が、挿入されたブロックの数分繰り下がった状態となっている。つまり、ファイル管理部１５が変更した後の格納場所情報３５は、システムブロック番号１０５に格納されているブロックデータがファイルＡを構成するデータであるとともにファイルブロック番号１に位置することを示している。つまり、ファイル管理部１５は、ブロック削除の要求に基づき、削除後のブロックの論理的順序に従ってブロックの格納場所の情報が並ぶように格納場所情報３５を書き換える。
【００４３】
本発明による情報管理装置１００によれば、一つのブロック分に相当するデータを削除する処理において、従来の技術と比べて、処理に要する時間を削減することが可能となる。ここで、図１６を用いて、改めて従来のファイルシステムにおいて、一つのブロック分に相当するデータが削除される場合の処理について簡単に説明する。従来のファイルシステムでは、一つのブロック分のデータが削除されると、削除されたブロックデータのファイルブロック番号よりも順番が後方のファイルブロックのブロックデータは全て、ファイルシステム内の他のブロックに移動されていた。図１６の場合は、ファイルブロック番号１のブロックデータＡ（１）が削除されると、ファイルブロック番号１よりも後方に位置するファイルブロック番号２〜５のブロックデータは、それぞれ一つずつシステムブロック番号がずれたブロックに移動されていた。これに対し、本発明による情報管理装置１００では、格納場所情報３５の更新処理は実施されるものの、このようなブロックデータの移動が行われない。このため、ブロックデータの移動に要する時間を削減することが可能となる。
【００４４】
一般的に、ブロックデータの移動を行うためには、ブロックデータの読み出し、ブロックデータの一時的な記憶、ブロックデータの書き出し、の処理が各ブロックデータについて必要となる。このため、このような移動処理に要する時間は、移動処理の対象となるデータサイズやブロック数に伴って増大する。このため、大きなサイズのファイルを取り扱う場面においては、１ブロック分に相当するデータの削除の度に移動処理による時間を要することは大きな問題となってしまう。
例えば、動画像データを取り扱う状況、特に放送局などにおいては、一つのファイルのサイズが数ギガバイト〜数十ギガバイトを超えることが一般的である。放送局において取り扱われる１時間番組のファイルの実データは５０ギガバイト程度（１００Ｍｂｐｓで計算）である。従って、例えばブロックサイズが４０９６バイトの場合、ファイルを構成するブロックデータの数は１０００万のオーダーに達する。このようなファイルにおいて、先頭に近いファイルブロック番号のブロックデータに対して１ブロック分に相当するデータの削除が実行された場合に、その後のファイルブロック番号に係る全てのブロックデータについて移動処理を実行すると、この処理に要する時間は相当なものとなる。例えば、上述したようにファイルサイズが５０ギガバイト程度の場合、平均的にその半分のブロックデータについて移動処理が行われるとすると、書き換えが行われるデータ量は２５ギガバイトとなる。これに対し、本発明による情報管理装置１００では、このような移動処理が実行されず、格納場所情報３５の書き換えが行われる。従って、上述したようにブロックデータ数が１２００万程度の場合、格納場所情報を３２ｂｉｔ（４バイト）とし平均的にその半分のブロックデータについて移動処理が行われるとすると、「１対１管理方式」では、書き換えが行われるデータ量は、６００万×４＝２４メガバイトとなる。このように、従来移動処理に要していた時間を削減（上述した具体例の場合は約１／１０００に削減）することが可能となる。さらに「エクステント方式」では、後述するように、数十バイト程度の変更で良いので、さらに短時間で格納場所情報３５の書き換えが完了する。このような効果は、削除処理のみならず、挿入処理の場合も同様に奏される。
【００４５】
なお、図７及び図８において、システムブロック番号１０１におけるブロックデータが削除されているが、わざわざブロックデータ自体をブロックから消去しないように構成しても良い。このように構成されたとしても、ブロック管理部１３によってこのブロックは解放されているため、特に問題は生じない。むしろ、このように構成された場合は、ブロックデータ自体の消去処理に要する処理時間が削減され、処理の高速化を図ることが可能となる。
また、情報管理装置１００において、図８や図１１に示されるようなエクステント方式が採用された場合は、さらに処理時間を削減することが可能となる。１対１方式の場合、格納場所情報３５において、削除や挿入の処理対象となったファイルブロック番号以降の全てのファイルブロック番号について、対応するシステムブロック番号を書き換える必要がある。このため、このような処理の対象となるブロック数に応じて、処理時間が増大する。これに対し、エクステント方式の場合は、連続しているブロックについては、一つ一つのブロックについて書き換えを行う必要がない。このため、エクステント方式が採用された場合、格納場所情報３５の書き換えに要する時間を削減することが可能となる。
【００４６】
なお、上述したように、本実施形態の情報管理装置１００によれば、実データの書き換え処理は、削除や挿入の処理対象となったファイルブロック番号のブロックデータのみについて行えば良いが、削除や挿入以外の処理（例えば、ブロックデータの上書き処理）によって、削除や挿入の処理対象とはなっていないファイルブロック番号のブロックデータが書き換えられたとしても、削除や挿入の処理に関して本発明による効果を得ることはできる。
【００４７】
これまでは、挿入又は削除するデータの先頭位置がファイルシステムのブロックの先頭と一致する場合について説明してきたが、本発明の情報管理装置１００によれば、挿入又は削除するデータのサイズがブロックサイズの整数倍であれば、挿入又は削除するデータの先頭位置がファイルシステムのブロックの先頭と一致していなくても良い。
図１２は、挿入又は削除するデータのサイズがブロックサイズの整数倍であり且つ挿入又は削除するデータの先頭位置がブロックの先頭と一致しない場合のデータを示す概略図である。
まずデータ削除について説明する。図１２（ａ）は、削除前のファイルを示す。削除前のファイルは４ブロック（左から、０ブロック目、１ブロック目、２ブロック目、３ブロック目）で構成されており、このうち１ブロック目と２ブロック目にまたがっている、ハッチングで示した、ブロックサイズ分のデータが削除対象である。このデータを削除する場合、情報管理部１０は、２ブロック目の削除対象以外のデータを１ブロック目の同じ場所に移動する（つまり、１ブロック目を書き換える）とともに、前述の削除処理を用いて２ブロック目を削除することにより、削除に影響しない０ブロック目と３ブロック目はデータの移動を行う必要がない。図１２（ｂ）は、削除後のファイルを示す。言い換えると、この一連の処理は、第１のステップにおいて図１２（ａ）の２ブロック目を前述した処理方法によって削除するとともに、第２のステップにおいては当該２ブロック目に含まれていたデータの一部を用いて同図の１ブロック目のデータ内容の一部を書き換えている。ここでの第１のステップの削除処理は、当該削除の後のブロックの論理的順序に従うように格納場所情報を書き換えるものである。
なおここでは、削除対象のデータがブロックサイズの１倍の場合の例を説明したが、削除対象のデータがブロックサイズのｎ倍（ｎは２以上の整数）であっても同様の方法による削除が可能である。また、ここでは書き換えや削除対象のブロックの前後はそれぞれ１ブロックの場合の例を説明したが、それぞれ何ブロックであっても書き換えや削除対象ブロック以外は、削除の影響を受けない。
【００４８】
次にデータ挿入について、同じ図を用いて説明する。図１２（ｂ）は、挿入前のファイルを示す。挿入前のファイルは３ブロック（左から、０ブロック目、１ブロック目、２ブロック目）で構成されている。ここで、１ブロック目の途中の位置にブロックサイズ分のデータを挿入する。このデータを挿入する場合、情報管理部１０は、（１）新たなブロックをこのファイルに割り当て、（２）１ブロック目の挿入箇所以後のデータを一時的に記憶し、（３）１ブロック目の挿入位置以後に挿入対象のデータのうち当該ブロックに収容可能な分を書き込み、（４）挿入対象のデータのうちの残りの部分と上で一時的に記憶したデータとを連結させた上で新たに割り当てたブロックに書き込む。この一連の処理では、前述の挿入処理を用いて、当初の１ブロック目と２ブロック目の間にブロックを挿入する。なおここで、（３）の処理と（４）の処理の順序は任意である。このような処理により、挿入前の０ブロック目と２ブロック目は、挿入の影響を受けず、データの移動を行なう必要がない。図１２（ａ）は、挿入後のファイルを示す。言い換えると、この一連の処理は、第１のステップにおいて図１２（ｂ）の１ブロック目と２ブロック目との間に新たなブロックを前述した処理方法によって挿入する（挿入されたブロックは図１２（ａ）の２ブロック目であり、当該ブロックは、新たなデータと図１２（ｂ）の１ブロック目の一部のデータとを含むように書き込まれる）とともに、第２のステップにおいては新たなデータを用いて図１２（ｂ）の１ブロック目のデータ内容の一部を書き換えている。ここでの第１のステップの挿入処理は、当該挿入の影響を受けるブロックのみを書き換えるとともに、当該挿入の後のブロックの論理的順序に従うように格納場所情報を書き換えるものである。
なおここでは、挿入対象のデータがブロックサイズの１倍の場合の例を示したが、挿入対象のデータがブロックサイズのｎ倍（ｎは２以上の整数）であっても同様の方法による挿入が可能である。また、ここでは書き換えや挿入対象のブロックの前後はそれぞれ１ブロックの場合の例を説明したが、それぞれ何ブロックであっても書き換えや挿入対象ブロック以外は、挿入の影響を受けない。
【００４９】
さらに、本実施形態の情報管理装置１００によれば、ファイルの編集により、ファイルの変更部分の変更前と変更後のデータサイズの差がブロックサイズの整数倍であれば、変更に関わるブロックのみ変更すれば、変更に影響しないブロックのデータを移動することなく、ファイルを修正することができる。
図１３は、ファイルの編集前後でのデータサイズの差がブロックサイズの整数倍である場合のデータを示す概略図である。図１３（ａ）は、編集前のファイルを示し、このファイルは４ブロック（左から、０ブロック目、１ブロック目、２ブロック目、３ブロック目）からなる。ここで、１ブロック目から２ブロック目に渡る、ハッチングの部分が編集対象のデータである。図１３（ｂ）は、この部分を編集した結果のファイルを示し、編集の結果として、ファイルのデータサイズはちょうど５ブロック分となっている。つまり編集前後でのデータサイズの差がブロックサイズの１倍である。図１３（ｂ）において、編集の影響を受けた箇所は、１ブロック目から３ブロック目に渡る、ハッチングの部分である。このような編集を行なう際に、上述したデータ挿入処理を利用することにより、当初ファイルの０ブロック目と３ブロック目は編集の影響を受けず、データの移動を行う必要がない。言い換えると、この一連の処理は、第１のステップにおいて図１３（ａ）の１ブロック目と２ブロック目との間に新たなブロックを前述した処理方法によって挿入する（挿入されたブロックは図１３（ｂ）の２ブロック目であり、当該ブロックは、編集結果のデータを含むように書き込まれる）とともに、第２のステップにおいては編集結果のデータを用いて図１３（ｂ）の１ブロック目のデータ内容の一部および３ブロック目のデータ内容の一部を書き換えている。ここでの第１のステップの挿入処理は、当該挿入の影響を受けるブロックのみを書き換えるとともに、当該挿入の後のブロックの論理的順序に従うように格納場所情報を書き換えるものである。
なお、編集前後でのデータサイズの差がブロックサイズのｎ倍（ｎは２以上の整数）であっても同様である。
また、編集前のファイルが図１３（ｂ）で編集後のファイルが図１３（ａ）の場合も、編集前後でのデータサイズの差がブロックサイズの整数倍であり、この場合には、上述したデータ削除処理を利用することにより、編集の影響を受けないデータの移動を行なう必要がない。言い換えると、この一連の処理は、第１のステップにおいて図１３（ｂ）の２ブロック目を前述した処理方法によって削除するとともに、第２のステップにおいては編集結果のデータをそれぞれ用いて図１３（ａ）の１ブロック目のデータ内容の一部と２ブロック目のデータ内容の一部とを書き換えている。ここでの第１のステップの削除処理は、当該削除の後のブロックの論理的順序に従うように格納場所情報を書き換えるものである。
【００５０】
［適用例］
本発明による情報管理装置１００は、ＭＸＦ（Material eXchange Format：SMPTE 377M等）ファイルを取り扱う場面で適用されても良い。ＭＸＦは、ブロックデバイスへの記録も意識したフォーマットである。このため、例えば動画像の各フレームの先頭を、ファイルシステムにおけるブロックの先頭に位置合わせすることが可能である。言い換えれば、ＭＸＦでは、動画像のフレームの境界と、ファイルシステムにおけるブロックの境界とを一致させることが可能である。このため、変更の生じたフレームを含むブロックのみに対して変更処理を行うことが可能となる。従って、ＭＸＦでは、動画像のフレーム単位での書き換えが容易に実施可能である。
このようなＭＸＦファイルを情報管理装置１００で取り扱う場合、フレーム単位で削除や挿入の必要が生じた場合には、上述したブロックの削除処理や挿入処理を行うことにより、フレーム単位での削除・挿入を実現することができる。さらに、従来とは異なり、削除や挿入に伴う移動処理が不要であるため、このようなフレーム単位での削除や挿入の処理に要する時間を削減することが可能となる。
【００５１】
なお、ＭＸＦファイルを情報管理装置１００で取り扱う場合、各フレームとファイルブロック番号との対応付けは、アプリケーション実行部ＡＰによって行われても良いし、ファイル入出力部１１によって行われても良い。また、アプリケーション実行部ＡＰ又はファイル入出力部１１によって、各フレームとシステムブロック番号とが対応付けられても良い。この場合は、格納場所情報３５には、ファイルブロック番号に代えてフレーム番号が管理される。
【００５２】
［コードの具体例］
図１４，１５は、それぞれ本発明におけるブロック削除の処理（図６のフローチャート）、ブロック挿入の処理（図９のフローチャート）を実現するプログラムソースコードの具体例を示す図である。図１４，１５に示されたプログラムソースコードは、ＵＮＩＸ（登録商標）系ＯＳ上のアプリケーションプログラムによってこれらの処理を行うためのものである。図１４は、ファイルＡのファイルブロック番号１のブロックデータを削除するためのプログラムを示す。図１５は、ファイルＡのファイルブロック番号１に、“０”の値で埋めた１つのブロックデータを挿入するためのプログラムを示す。図１４，１５とも、説明を簡略化するため、エラー処理の記述は省略している。
【００５３】
ｉｏｃｔｌ関数は、ファイル記述子、コマンド、コマンド引数ポインタの３つの引数を有する。ファイル記述子は、処理の対象となるファイルをオープンした際に付与される。コマンドは、ブロック削除又はブロック挿入を表す値である。コマンド引数ポインタは、先頭ブロック番号とブロック長を格納した整数配列の先頭ポインタである。ＤＥＬＥＴＥ＿ＢＬＯＣＫは、ブロック削除のコマンドを意味する値である。ＩＮＳＥＲＴ＿ＢＬＯＣＫは、ブロック挿入のコマンドを意味する値である。ａｒｇ［０］とａｒｇ［１］とは、それぞれ削除・挿入対象の先頭ブロック番号とブロック長を示す。ａｒｇ［０］とａｒｇ［１］とは、これらの値が格納された配列の先頭ポインタであるａｒｇを、ｉｏｃｔｌ関数の３番目の引数としている。
【００５４】
このようなプログラムによって実装された情報管理装置１００は、ｉｏｃｔｌの１番目の引数により、処理するファイル情報を特定する。また、情報管理装置１００は、２番目の引数により、ブロック削除処理かブロック挿入処理かを判断する。また、情報管理装置１００は、３番目の引数により、処理対象の先頭ブロック番号及びブロック長を取得する。情報管理装置１００は、これらの値に基づき、上述した処理手順に従って、ブロック削除やブロック挿入の処理を実行する。なお、情報管理装置１００は、エラーが発生した場合は“−１”を返し、正常終了した場合は“０”を返す。
【００５５】
なお、上述した実施形態における情報管理装置１００の一部、例えば、情報管理部１０の機能をコンピュータで実現するようにしても良い。その場合、この情報管理機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時刻の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時刻プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【産業上の利用可能性】
【００５６】
本発明は、ブロック単位でファイルを管理するファイルシステムが採用された情報処理装置において利用することができる。特に、ファイルサイズやブロック数が大きなファイルを取り扱う場面において利用することにより、顕著な効果を期待できるものである。
【図面の簡単な説明】
【００５７】
【図１】本発明による情報管理装置の機能構成例を示す機能ブロック図である。
【図２】ファイルシステム情報、ファイル情報、及びディレクトリ情報の内容を示す図である。
【図３】ファイルｏｐｅｎの指示があった場合の情報管理装置の動作手順を示すフローチャートである。
【図４】ファイルｒｅａｄの指示があった場合の情報管理装置の動作手順を示すフローチャートである。
【図５】ファイルｒｅｍｏｖｅの指示があった場合の情報管理装置の動作手順を示すフローチャートである。
【図６】ブロック削除の指示があった場合の情報管理装置の動作手順を示すフローチャートである。
【図７】ブロック削除の処理における格納場所情報の内容の遷移を示す図である。
【図８】ブロック削除の処理における格納場所情報の内容の遷移を示す図である。
【図９】ブロック挿入の指示があった場合の情報管理装置の動作手順を示すフローチャートである。
【図１０】ブロック挿入の処理における格納場所情報の内容の遷移を示す図である。
【図１１】ブロック挿入の処理における格納場所情報の内容の遷移を示す図である。
【図１２】挿入又は削除するデータのサイズがブロックサイズの整数倍であり且つその先頭位置がブロックの先頭と一致しない場合のデータを示す図である。
【図１３】ファイルの編集前後でのデータサイズの差がブロックサイズの整数倍である場合のデータを示す図である。
【図１４】ブロック削除処理のプログラムソースコードの具体例を示す図である。
【図１５】ブロック挿入処理のプログラムソースコードの具体例を示す図である。
【図１６】従来の技術におけるデータの削除処理の例を示す図である。
【図１７】従来の技術におけるデータの挿入処理の例を示す図である。
【符号の説明】
【００５８】
ＡＰ…アプリケーション実行部、  １０…情報管理部、  １１…ファイル入出力部、  １２…ブロック入出力部、  １３…ブロック管理部、  １４…ファイル情報管理部、  １５…ファイル管理部、  ２１…キャッシュメモリ管理部、  ２２…キャッシュメモリ入出力部、  ２３…キャッシュメモリ、  ２４…蓄積装置入出力部、  ２５…蓄積装置、  ３０…ファイルシステム情報、  ３１…ブロック管理情報、  ３２…ファイル管理情報、  ３４…ファイル情報、  ３５…格納場所情報、  ３６…ファイル属性情報、  ３７…ディレクトリ情報、  １００…情報管理装置
【図１】
2009187403.tif 000003
【図２】
2009187403.tif 000004
【図３】
2009187403.tif 000005
【図４】
2009187403.tif 000006
【図５】
2009187403.tif 000007
【図６】
2009187403.tif 000008
【図７】
2009187403.tif 000009
【図８】
2009187403.tif 000010
【図９】
2009187403.tif 000011
【図１０】
2009187403.tif 000012
【図１１】
2009187403.tif 000013
【図１２】
2009187403.tif 000014
【図１３】
2009187403.tif 000015
【図１４】
2009187403.tif 000016
【図１５】
2009187403.tif 000017
【図１６】
2009187403.tif 000018
【図１７】
2009187403.tif 000019