JP2009187403A - 情報管理装置およびコンピュータプログラム - Google Patents

情報管理装置およびコンピュータプログラム Download PDF

Info

Publication number
JP2009187403A
JP2009187403A JP2008028146A JP2008028146A JP2009187403A JP 2009187403 A JP2009187403 A JP 2009187403A JP 2008028146 A JP2008028146 A JP 2008028146A JP 2008028146 A JP2008028146 A JP 2008028146A JP 2009187403 A JP2009187403 A JP 2009187403A
Authority
JP
Japan
Prior art keywords
block
file
information
data
location information
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
JP2008028146A
Other languages
English (en)
Inventor
Hiroki Minami
浩樹 南
Yutaka Kaneko
金子  豊
Shinya Takeuchi
真也 竹内
Yoshinori Izumi
吉則 和泉
Hiroshi Fujisawa
寛 藤沢
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.)
Japan Broadcasting Corp
Original Assignee
Nippon Hoso Kyokai NHK
Japan Broadcasting 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 Nippon Hoso Kyokai NHK, Japan Broadcasting Corp filed Critical Nippon Hoso Kyokai NHK
Priority to JP2008028146A priority Critical patent/JP2009187403A/ja
Publication of JP2009187403A publication Critical patent/JP2009187403A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

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

Abstract

【課題】ブロック単位でファイルを管理するファイルシステムにおいて、ブロックサイズ単位のデータの削除又は挿入の処理を効率化すること。
【解決手段】情報管理装置であって、ブロック単位で情報を記憶するブロック記憶部と、ブロックの場所を表す格納場所情報をファイルごとに記憶する格納場所情報記憶部と、ファイル内におけるブロックの挿入又は削除の要求を受けたとき、ブロック記憶部内において当該挿入又は削除の影響を受けるブロックのみを書き換えるとともに、当該挿入又は削除の要求に基づいて格納場所情報記憶部内の格納場所情報を書き換える情報管理部とを含んで構成される。
【選択図】図7

Description

本発明は、情報管理装置およびコンピュータプログラムに関する。
コンピュータで取り扱うデータを記憶装置に格納するときは、ファイル単位で格納されるのが最も一般的である。一方で、一般的な記憶装置は、セクタと呼ばれるブロック単位でデータにアクセスするため、そのままではファイル単位の管理ができない。ファイルを扱うアプリケーションプログラムと実際の記憶装置との仲介を行うのがファイルシステムの役割である。ファイルシステムにより、アプリケーションプログラムは、物理的な格納場所等を意識することなく、必要なデータ(ファイル)を取り出すことが可能となる。ファイルシステムは、通常はオペレーティングシステム(Operating System:OS)が持つ一つの機能として実現される。
ところで、初期の記憶装置は現在ほど大容量でなかったうえ、コンピュータで取り扱うファイルのサイズが現在ほど大きくはなかったため、ファイルシステムには専らファイルを管理するという基本的な機能が要求されていた。しかしながら、近年、記憶装置やコンピュータが取り扱うデータの大容量化が進み、従来のファイルシステムでは取り扱えない大きなファイルを扱う必要性が出てきたり、短時間で大量のファイルの入出力が必要になったりするなど、ファイルシステムがボトルネックになるような様々な問題が生じてきた。
このような問題に対し、ファイルシステムでは、取り扱い可能なファイルサイズの拡大やデータアクセス・変更の高速化など様々な改良がなされてきた。たとえば、ファイル検索の高速化に対しては、B−Treeアルゴリズムやその改良版であるB+−Treeアルゴリズム等が提案されている。また、データの信頼性に対しては、突然の電源断やOSの欠陥などが原因で正規の終了処理(シャットダウン)ができなかった場合などにファイルが破壊される問題に対応し、ジャーナリングという手法が提案されている。非特許文献1は、このような改良の具体例について開示する。
菅谷 みどり、"Linuxファイルシステム技術解説"、[online]、平成15年5月20日、[平成19年11月30日検索]、インターネット(URL:http://www.atmarkit.co.jp/flinux/index/indexfiles/linuxfsindex.html)
ファイルシステムへの要求の一つとして、データ変更の高速化に対する要求がある。通常のファイルシステムにおいては、あるファイル内の特定の一部のデータのみを変更したい場合、変更前と変更後で変更された部分のデータサイズが同じ場合は変更箇所のみを書き換えることは可能であるが、変更された部分のデータサイズが異なる場合は変更部分のデータのみの書き換えはできない。この場合、このファイルにおいて変更部分以降のデータは位置をずらして書き換える必要があるため、一度メモリに読み込み、データの挿入や削除などの加工を行ったあとで、これらのデータを再度記憶装置へ書き込む必要が生じる。以下、この処理について説明する。
ファイルシステムは、記憶装置を所定のサイズのブロック単位で管理する。この場合、ファイルのデータはブロックのサイズ(以下、「ブロックサイズ」という。)に分けて管理される。
図16及び図17は、既存のファイルシステムにおけるデータ変更時の処理を表す図である。図16及び図17において、各四角形はブロックを表す。ブロック中の“A(n)”はデータの内容を表す。そして、ブロックの上に位置する番号は、ブロックの番号を表す。
図16は、一つのブロックに相当するデータを削除する場合の処理を表す図である。図16に示す例では、当初、ファイルAを構成するデータが、ファイルシステム上で6つのブロックのデータA(0)、A(1)、・・・、A(5)に分割され、それぞれブロック番号が100から105までのブロックに格納されている。このような状態から、図16では、一つのブロックに相当するA(1)というデータが削除されるとする。この場合、A(2)は一度メモリに読み込まれ、もともとA(1)が格納されていた101のブロックに格納される。同様に、それ以降の順番の各データも一つずつ繰り上がったブロックにそれぞれ格納される。なお、その結果、105のブロックは空き状態となる。このように、削除の対象となったデータよりも後方の順番に該当するデータについては、その格納場所を移動する処理が生じる。
図17は、一つのブロックに相当するデータを挿入する場合の処理を表す図である。図17に示す例では、当初、ファイルAを構成するデータが、ファイルシステム上で5つのブロックのデータA(0)、A(1)、・・・、A(4)に分割され、それぞれブロック番号が100から104のブロックに格納されている。このような状態から、図17では、A(0)とA(1)との間に、一つのブロックに相当するA(5)というデータが挿入されるとする。この場合、A(1)は一度メモリに読み込まれ、データA(2)をメモリに一旦退避してからもともとA(2)が格納されていた102のブロックにA(1)が格納され、次にデータA(3)をメモリに一旦退避してからもともとA(3)が格納されていた103のブロックにA(2)が格納され、以降も同様に、必要に応じて格納先のブロックのデータを退避してから各データが一つずつ繰り下がったブロックにそれぞれ格納される。A(5)はもともとA(1)が格納されていた101のブロックに格納される。このように、挿入の対象となったデータよりも後方の順番に該当するデータについては、その格納場所を移動する処理が生じる。
このように、データの変更(削除や挿入など)の処理を行う際には、少なくとも変更部分以降のデータの読み込み処理及び書き込み処理が生じる。このため、変更部分以降のデータのサイズに応じて、処理に要する時間が増大する。特に、サイズの大きいファイルでは、この問題はより顕在化してきている。
そこで本発明は、ブロック単位でファイルを管理するファイルシステムにおいて、データの削除又は挿入を実行する際の処理を効率化することのできる情報管理装置およびコンピュータプログラムを提供することを目的とする。
(1)本発明の一態様は、情報管理装置であって、ブロック記憶部、格納場所情報記憶部および情報管理部を含んで構成される。ブロック記憶部は、ブロック単位で情報を記憶する。格納場所記憶部は、ブロックの場所を表す格納場所情報をファイルごとに記憶する。情報管理部は、ファイル内におけるブロックの挿入又は削除の要求を受けたとき、当該挿入又は削除の後のブロックの論理的順序に従って格納場所情報記憶部内の格納場所情報を書き換えるとともに、ブロックの挿入の要求を受けた場合にはブロック記憶部内において当該挿入の影響を受けるブロックのみを書き換える。
このように構成された本発明によれば、ファイルのデータはブロック単位で記憶され、ファイルを構成する各ブロックの場所は格納場所情報として記憶される。情報管理部は、ファイル内におけるブロックの挿入又は削除の要求の受付が可能である。情報管理部は、挿入の要求を受けたときは挿入したブロックのみにデータ書き込み、削除の要求を受けたときはどのブロックも書き換えない。よって、挿入又は削除の要求により、処理を行う前にファイルを構成していたブロックを書き換える処理は、必要ないので実行されない。すなわち、挿入又は削除の対象となっているブロックの後方の順番に該当するブロックであるとしても、メモリへの読み込みやブロックへの書き込みの処理は実行されないため、メモリへの読み込みやブロックへの書き込みに要していた時間を削減し、データの変更の処理を効率化することが可能となる。
挿入又は削除するデータサイズがブロックサイズの倍数のときで且つ挿入又は削除するデータの先頭が記憶装置のブロックの境界と一致している場合は、処理を行う前にファイルを構成していたブロックを書き換える処理は必要ない。
また、挿入又は削除するデータサイズがブロックサイズの倍数のときで且つ挿入又は削除するデータの先頭が記憶装置のブロックの境界と一致していない場合は、処理を行う前にファイルを構成していたブロックのうち、挿入又は削除するデータの先頭が属するブロック以外はブロックを書き換える処理は必要ない。
したがって、変更される部分のデータサイズが異なる場合であっても、そのデータサイズの差がブロックサイズの倍数の場合には、つまりブロックサイズの整数倍に相当するデータの削除又は挿入を行なう場合には、変更箇所以外はブロックのデータ内容の実際の変更を行わずに、論理的にブロック移動することが可能となる。
なお、挿入の要求の場合に、情報管理部が、挿入の後のブロックの論理的順序に従って格納場所情報記憶部内の格納場所情報を書き換える処理と、ブロック記憶部内において当該挿入の影響を受けるブロックのみを書き換える処理の順序は、任意である。
(2)本発明の一態様は、上記の態様において、情報管理部は、ブロックの挿入の要求を受けた場合、当該ファイルに対し新たに割り当てられたブロックの場所を挿入するブロックの場所として格納場所情報記憶部内の格納場所情報に追加し、ファイルのデータにおいて当該挿入箇所よりも後方の順番に該当するブロックの順番を格納場所情報において挿入ブロック数分繰り下げ、格納場所情報において当該ファイルに対し新たに割り当てられたブロックの場所に挿入の要求を受けたブロックのデータを書き込むように構成される。
このように構成された本発明によれば、ブロックの挿入処理を行なう際に、ファイルのデータにおいて当該挿入箇所よりも後方の順番に該当するブロックの順番を格納場所情報において挿入ブロック数分繰り下げるようにしているため、つまり格納場所情報の編集によって、ブロック挿入後のファイルの整合性が維持されるようにしているため、挿入箇所よりも後方の順番のブロックのデータそのものを実際に繰り下げるためのデータの移動を行なう必要がない。よって、挿入の対象となっているブロック以外のブロックについては、メモリへ読み込みやブロックへの書き込み処理が必要ない。このため、ブロックの挿入処理において、メモリへの読み込みやブロックへの書き込みに要していた時間を削減することにより、データの変更の処理を効率化することが可能となる。
なお、ブロックの挿入処理を行なう際に、挿入のために新たに必要となるブロックの格納場所の領域は、確保される。また、新たに割り当てられたブロックの場所に、挿入の要求を受けたブロックのデータが書き込まれる。
(3)本発明の一態様は、上記の態様において、情報管理部は、ブロックの削除の要求を受けた場合、当該削除の対象となるブロックの場所を格納場所情報記憶部内の格納場所情報から削除し、ファイルのデータにおいて当該削除箇所よりも後方の順番に該当するブロックの順番を格納場所情報において削除ブロック数分繰り上げるように構成される。
このように構成された本発明によれば、ブロックの削除処理を行なう際に、ファイルのデータにおいて当該削除箇所よりも後方の順番に該当するブロックの順番を格納場所情報において削除ブロック数分繰り上げるようにしているため、つまり格納場所情報の編集によって、ブロック削除後のファイルの整合性が維持されるようにしているため、削除箇所よりも後方の順番のブロックのデータそのものを実際に繰り上げるためのデータの移動を行なう必要がない。よって、削除の対象となっているブロック以外のブロックについては、メモリへ読み込みやブロックへの書き込み処理が必要ない。このため、ブロックの削除処理において、メモリへの読み込みやブロックへの書き込みに要していた時間を削減することにより、データの変更の処理を効率化することが可能となる。
なお、ブロックの削除処理を行なう際に、削除対象のブロックの格納場所の領域そのものは、解放される。
(4)本発明は、コンピュータを、上述した情報管理装置として動作させるためのコンピュータプログラムである。
本発明により、ブロック単位でファイルを管理するファイルシステムにおいて、ブロックサイズ単位での削除又は挿入の処理を効率化することが可能となる。
図1は、本発明による情報管理装置100の機能構成例を示す機能ブロック図である。情報管理装置100は、アプリケーション実行部AP、情報管理部10、キャッシュメモリ管理部21、キャッシュメモリ入出力部22、キャッシュメモリ23、蓄積装置入出力部24、及び蓄積装置25を含んで構成される。情報管理装置100は、演算装置や記憶装置がバスによって接続され、記憶装置に記憶されているプログラムに基づいて動作する情報処理装置を用いて構成することができる。情報管理装置100の各機能部やその一部は、専用のハードウェアを用いて構成されても良い。以下、図1を用いて、情報管理装置100が備える各機能部について説明する。
アプリケーション実行部APは、いわゆるアプリケーションプログラムを実行する機能部であり、情報処理装置の演算装置や専用装置によって実現される。アプリケーション実行部APは、情報管理装置100に備えられた演算装置や専用装置によって実現されても良いし、情報管理装置100に接続された他の装置において実現されても良い。なお、本実施形態では、アプリケーション実行部APは情報管理装置100の演算装置によって実現され、各アプリケーション実行部APによって実行されるアプリケーションプログラムは情報管理装置100のOS上で動作する。
情報管理部10は、アプリケーション実行部APにおいてファイルへのアクセスが発生した場合に、キャッシュメモリ23又は蓄積装置25に記憶されているファイルへのアクセスを仲介する。即ち、情報管理部10は、アプリケーション実行部APからのファイル読み込み指示やファイル書き込み指示などに従い、キャッシュメモリ23又は蓄積装置25上に記憶されたファイルへアクセスし、指示に応じてデータの読み込み処理や書き込み処理を行う。
情報管理部10は、ファイルシステムとして蓄積装置25を管理する上で、予め定義されたサイズ(ブロックサイズ)のブロック単位で、蓄積装置25の全領域(より具体的には、パーティション内の全領域)を分割して管理する。そして、情報管理部10は、各ブロックに対し、ファイルシステム上の通し番号であるブロック番号を付与する。以下、ファイルシステム上の各ブロックの場所を表すこのブロック番号を、説明の便宜上「システムブロック番号」と呼ぶ。ファイルシステム内においては、各ブロックはこのシステムブロック番号を用いて管理される。
また、情報管理部10は、ファイルの実データをブロックサイズのデータに分割して管理する。こうして分割された複数のデータは、順番に並べられることにより、もとの一つのファイルのデータとなる。以下、この順番を表す番号を、説明の便宜上「ファイルブロック番号」と呼ぶ。また、各ブロックサイズに分割されたデータを「ブロックデータ」と呼ぶ。例えば、2つのブロックに分割されたファイルを構成する実データは、ファイルブロック番号0とファイルブロック番号1のブロックデータが、この順番に並ぶことにより構成される。そして、ファイルがどのシステムブロック番号にマッピングされたかを後述するように格納場所情報35に記録することによって、格納場所情報35を参照すればそのファイルの実データを元の順番で取り出す(再現する)ことができるようになっている。
このように、以下の説明において、ブロック番号には「システムブロック番号」と「ファイルブロック番号」がある。システムブロック番号は、ファイルシステムにおける記憶領域としての各ブロックの場所を表す。ファイルブロック番号は、ブロックサイズに分割された複数のブロックデータが、ファイルを構成する上で何番目(先頭は0番目)のデータであるかを示す。
情報管理部10は、ファイルの実データ以外に、図2の(a)〜(c)に示すように、ファイルシステム情報30や個々のファイルに関するファイル情報34やディレクトリ情報37を取り扱う。以下、ファイルシステム情報30とファイル情報34とディレクトリ情報37について説明する。なお、ファイルシステム情報30とファイル情報34とディレクトリ情報37は、蓄積装置25に記憶される。
ただし、ファイルシステム情報30やファイル情報34やディレクトリ情報37は、蓄積装置25とは別の記憶装置に記憶されても良い。ただしこの場合も、この別の記憶装置は、情報管理部10がアクセス可能な記憶装置であり、またファイルの実データと、ファイルシステム情報30やファイル情報34やディレクトリ情報37とは、関連付けてセットとして管理される。
図2(a)は、ファイルシステム情報30の内容を示す図である。ファイルシステム情報30は、ブロック管理情報31やファイル管理情報32を含む。ブロック管理情報31は、ファイルシステム内におけるブロックの割り当て状態に関する情報を含む。ファイル管理情報32は、ファイル情報34の割り当て状態に関する情報を含む。
図2(b)は、ファイル情報34の内容を示す図である。ファイル情報34は、ファイル毎に管理される。ファイル情報34は、各ファイルについての格納場所情報35やファイル属性情報36などを含む。格納場所情報35は、ファイルの実データの格納ブロック番号に関する情報を含む。具体的には、格納場所情報35は、各ファイルについて、各ファイルブロック番号の実データが格納されているシステムブロック番号についての情報を含む。ファイル属性情報36は、ファイルのサイズ、作成日時、アクセス権限などの情報を含む。
ファイル情報34は、蓄積装置25に蓄積されているファイル一つ一つに付与される。ファイルシステムがファイル情報34と実データとを組み合わせて管理するため、このファイルシステムの機能を通して、アプリケーション実行部APは各ファイルをファイルとして認識し、そのファイルのデータを得ることができる。そして、ファイル情報番号によって特定のファイル情報34の格納場所が一意に定まるようになっている。本実施形態では、個々のファイル情報34が固定長(例えば128バイト)のサイズのデータであり、ファイル情報番号は0からの通し番号であり、ファイル情報番号の順にそれらのファイル情報34が連続した領域に配置されている。このとき、k番目(k=0,1,2、・・・)のファイル情報34の格納場所は、(ファイル情報34全体の先頭位置)+k*(個々のファイル情報34のサイズ)である。
図2(c)は、ディレクトリ情報37の内容を示す図である。ディレクトリ情報37は、ファイル名とファイル情報番号とを対応付けるテーブルを有している。図示するデータ例では、ファイル名(1)はファイル情報番号(1)に対応し、ファイル名(2)はファイル情報番号(2)に対応し、また、以下同様である。
ファイルに対する入出力の際には、アプリケーション実行部APが指定するファイル名を基に、このディレクトリ情報37を参照することによって当該ファイル名に対応するファイル情報番号が特定され、そのファイル情報番号によって当該指定されたファイルのファイル情報34の場所を得ることができる。そして、そのように特定されたファイル情報34を用いて、格納場所の実データを読み出したり書き込んだりすることができる。
次に、情報管理部10の機能部の詳細について説明する。情報管理部10は、ファイル入出力部11、ブロック入出力部12、ブロック管理部13、ファイル情報管理部14及びファイル管理部15を含む。なお、以下の説明では、情報管理部10は、情報管理装置100のOSとしての機能の一つであるファイルシステムとしての機能を実行する機能部である。
ファイル入出力部11は、アプリケーション実行部APからの指示を受け付ける。ファイル入出力部11は、アプリケーション実行部APから受け付けた指示に基づいて、ブロック管理部13、ファイル情報管理部14及びファイル管理部15と情報交換を行い、ブロック入出力部12を介してキャッシュメモリ23及び蓄積装置25のデータにアクセスする。なお、上記の情報交換において、ファイル入出力部11がファイル管理部15へファイルブロック番号を渡すと、ファイル管理部15は、後述する方法により、渡されたファイルブロック番号に対応するシステムブロック番号をファイル入出力部11に返す。
ブロック入出力部12は、ファイル入出力部11によって指定されたシステムブロック番号に対応するファイルシステム上のブロックに対し、ブロック単位で書き込み処理や読み込み処理を行う。
ブロック管理部13は、ファイルシステム情報30内のブロック管理情報31を管理する。すなわち、ブロック管理部13は、ブロック管理情報31により、全システムブロックについて、それが空きブロックか否かを管理する。例えば、ブロック管理部13は、ファイルの新規作成要求や追加書き込み要求があると、書き込むためのブロックを、空きブロックの中から適宜選択して割り当てる。また、ファイルの削除要求やブロック削除の要求があれば、ブロック管理部13は、そのファイルの実データが記録されていたファイルシステム上のブロックを解放し、空きブロックとして管理する。
ファイル情報管理部14は、ファイルシステム情報30内のファイル管理情報32を管理する。すなわち、ファイル管理情報32により、全ファイル情報34について、それが使用中か否かを管理する。例えば、ファイルの新規作成要求があれば、ファイル情報管理部14は、そのファイルに対するファイル情報34を割り当て、その結果をファイル管理情報32上で使用中として管理する。また、ファイル情報管理部14は、ファイルの削除要求があれば、そのファイルのファイル情報34を解放し、その結果をファイル管理情報32上で未使用として管理する。
ファイル管理部15は、ファイル情報34とディレクトリ情報37を管理する。ファイル管理部15は、ファイル入出力部11からファイル名と参照箇所の位置情報を受け取ると、そのファイル名をもとにディレクトリ情報37を検索することによって該当するファイル情報34を取得し、ファイル内の参照箇所の位置情報(ファイル先頭から当該参照箇所までのバイト数で表わされる)をもとに該当するファイルブロック番号を計算して、これを基にシステムブロック番号を取得する。そして、ファイル管理部15は、ファイル入出力部11に、取得したシステムブロック番号を返す。
また、ファイル管理部15は、既存のファイルに対して書き換え(書き込み)要求があるとき、そのファイル情報34のファイルサイズ情報やファイル更新時刻などを更新するとともに、ファイルサイズの変更に伴ってファイルの使用ブロック数に変更がある場合は、格納場所情報も更新する。使用ブロック数が減少する場合は、格納場所情報35内の使用しなくなるシステムブロック番号を削除して、そのシステムブロック番号を削除ブロック番号としてファイル入出力部11に返す。ファイル入出力部11はブロック管理部13にそのシステムブロック番号を渡し、それらのブロックを解放する。使用ブロック数が増加する場合は、追加ブロックが必要であるという情報をファイル入出力部11に返す。ファイル入出力部はブロック管理部13に問い合わせて空きブロックの中から必要なブロック数分のシステムブロック番号を受け取る。ファイル管理部15は、このシステムブロック番号を追加ブロック番号として受け取り、格納場所情報35に追加する。この追加ブロックの処理は1ブロックずつ行ってもよいし、複数ブロックまとめて行ってもよい。また、ファイル管理部15は、ファイルにアクセスしようとするアプリケーションプログラムの権限と、そのファイル属性情報36に記されたアクセス権限に関する情報とに基づいて、そのファイルへのアクセスを許可するか否か判断する。
キャッシュメモリ管理部21は、蓄積装置25におけるアクセス速度の遅さをキャッシュメモリ23で補う処理を行う。キャッシュメモリ管理部21は、要求されたブロックデータにアクセスする際に、そのブロックデータがキャッシュメモリ23に蓄積されている場合はキャッシュメモリ23にアクセスする。一方、キャッシュメモリ管理部21は、要求されたブロックデータがキャッシュメモリ23に蓄積されていない場合は、蓄積装置25にアクセスする。キャッシュメモリ管理部21は、従来からあるキャッシュメモリシステムの技術が適用されることにより実現できる。
また、ブロックデータの書き換え処理が発生した場合は、キャッシュメモリ管理部21は、所定のアルゴリズムに従って下位の記憶装置(例えば蓄積装置25)に対し書き換え処理の反映を行う。
キャッシュメモリ入出力部22は、キャッシュメモリ23の種類に依存する制御コマンドなどを担当し、キャッシュメモリ管理部21がキャッシュメモリ23の種類に依存することなく動作可能となるように機能する。
キャッシュメモリ23は、高速にアクセス可能なメモリ装置を用いて構成される。例えば、キャッシュメモリ23は、SRAM(Static Random Access Memory)等を用いて構成される。
蓄積装置入出力部24は、蓄積装置25の種類に依存する制御コマンドなどを担当し、キャッシュメモリ管理部21が蓄積装置25の種類に依存することなく動作可能となるように機能する。
蓄積装置25は、一般的には不揮発性の記憶装置を用いて構成される。蓄積装置25は、例えばハードディスク装置や書き換え可能な光ディスク装置などを用いて構成されても良いし、コンピュータがリセットされたときに記録された情報が消去されても良い場合は揮発性の記憶装置である半導体メモリを用いて構成されても良い。蓄積装置25は、情報管理部10による書き込み処理を受け、ブロック単位で情報を記憶する(「ブロック記憶部」に相当する。)。また、蓄積装置25は、ファイルシステム情報30とファイル情報34とディレクトリ情報37を記憶する(「格納場所情報記憶部」に相当する。)。
次に、本実施形態による情報管理装置100の動作手順について説明する。例えば、ファイルからブロックを削除する場合は、図14に示すプログラム例のように、ファイルをopenし、ブロック削除を指示し、最後にファイルをcloseする。また、ファイルにブロックを挿入する場合は、図15に示すプログラム例のように、ファイルをopenし、ブロック挿入を指示し、ブロックデータ書き込みのためにwriteし、最後にファイルをcloseする。ファイル操作に必要な指示のうち、通常のファイルシステムに実装されている基本的な指示である「ファイルopen」、「ファイルread」、「ファイルremove」、および本実施形態で追加した指示である「ブロック削除」、「ブロック挿入」の動作について、以下に説明する。
〔ファイルopen〕
図3は、アプリケーション実行部APからファイルopen(ファイルを開く)の指示があった場合の、情報管理装置100の動作手順を示すフローチャートである。
アプリケーション実行部APからファイル名およびアクセスモード(書込モードまたは読出モード)を指定してファイルopenの指示が出されると(ステップS01)、ファイル入出力部11は、ファイル管理部15に対し、ファイルopen指示の対象となっているファイルが存在するか否か問い合わせる。ファイル管理部15は、ディレクトリ情報37により、指定されたファイル名の有無を確認する。ファイルが存在する場合(ステップS02−YES)、ファイル管理部15は、ディレクトリ情報37より該当するファイル情報番号を取得し、このファイル情報番号に対応するファイル情報34をファイル入出力部11へ渡す。これにより、ファイル入出力部11は、指示の対象となったファイルに関するファイル情報34を取得する(ステップS03)。
一方、指示の対象となったファイルが存在しない場合(ステップS02−NO)、即ち指示の対象となったファイル名がディレクトリ情報37の中に存在しない場合、ファイル管理部15は、このことをファイル入出力部11へ通知する。ファイル入出力部11は、この通知を受けると、上記のオープンの指示が書込モードであるか否かを調べる。書込モードである場合(ステップS04−YES)、新たなファイル情報34の割り当てが可能か否かについて、ファイル情報管理部14に問い合わせる。割り当てが可能な場合(ステップS05−YES)、ファイル情報管理部14は、ファイル入出力部11の指示に基づいて、このファイルに関するファイル情報34の割り当てを行う(ステップS06)。そして、ファイル入出力部11は、新たに割り当てられたファイル情報34を、ファイル管理部15へ渡す。ファイル情報34の割り当てができない場合(ステップS05−NO)、ファイル情報管理部14はファイル入出力部11に対しエラーを出力する。一方、オープンの指示が書込モードでない場合(ステップS04−NO)も、ファイル情報管理部14はファイル入出力部11に対しエラーを出力する。そして、ファイル入出力部11は、これらのエラーに基づいて、アプリケーション実行部APに対しエラーを出力する(ステップS07)。
〔ファイルread〕
図4は、アプリケーション実行部APからファイルread(ファイルを読む)の指示があった場合の情報管理装置100の動作手順を示すフローチャートである。アプリケーション実行部APからファイルreadの指示が出されると(ステップS10)、ファイル入出力部11は、ファイル管理部15に対し、ファイルreadの指示の対象となっているファイルの実データが格納されているブロックのシステムブロック番号を問い合わせる。ファイル管理部15は、ファイル情報34に含まれる格納場所情報35に基づき、問い合わせの対象となっているシステムブロック番号を取得し、これをファイル入出力部11へ渡す。ファイル入出力部11は、これを受け取ることにより、システムブロック番号を特定する(ステップS11)。
次に、ファイル入出力部11は、ブロック入出力部12に対し、特定されたシステムブロック番号のブロックに格納されたデータを取得するように指示する。ブロック入出力部12は、キャッシュメモリ管理部21に対し、指示されたブロックに格納されたデータを取得するように指示する。キャッシュメモリ管理部21は、指示されたデータがキャッシュメモリ23に存在する場合はキャッシュメモリ23からデータを読み出し、キャッシュメモリ23に存在しない場合は蓄積装置25からデータを読み出す。そして、キャッシュメモリ管理部21は、読み出されたデータを、ブロック入出力部12を介してファイル入出力部11へ渡す。こうして、ファイル入出力部11は、アプリケーション実行部APから指示されたブロックデータを読み込む(ステップS12)。そして、ファイル入出力部12は、読み込まれたブロックデータを、アプリケーション実行部APへ渡す(ステップS13)。キャッシュメモリ管理部21は、蓄積装置25からデータを読み出したときは、そのデータをキャッシュメモリ23に書き込むのが一般的であるが、そのデータをキャッシュメモリ23に書き込まないようにしてもよい。
〔ファイルremove〕
図5は、アプリケーション実行部APからファイルremove(ファイルを消去)の指示があった場合の、情報管理装置100の動作手順を示すフローチャートである。アプリケーション実行部APからファイルremoveの指示が出されると(ステップS20)、ファイル入出力部11は、指定されたブロックデータが格納されているシステムブロック番号をファイル管理部15に問い合わせる。ファイル管理部15は、ファイル情報34内の格納場所情報35をもとに、システムブロック番号を取得し(ステップS21)、これをファイル入出力部11に返す。ファイル入出力部11は、ファイル管理部15から受け取ったシステムブロック番号に基づき、このシステムブロック番号に該当するブロックを解放することを、ブロック管理部13に指示する。そして、ブロック管理部13は、指示されたシステムブロック番号のブロックを解放する(ステップS22)。このとき、ファイル入出力部11は、ブロック入出力部12に対し、このブロックに係るブロックデータを削除することを指示するように構成されても良いし、特にこのような削除指示を行わないように構成されても良い。解放されたブロックは、ブロック管理部13によって、今後新たなブロック割り当て処理が行われる際に、割り当て対象の新規ブロックとして取り扱われる。その後、ファイル入出力部11は、ファイル情報管理部14に対し、このファイルに関するファイル情報34を解放することを指示する。そして、ファイル情報管理部14は、指示に従ってファイル情報34を解放する(ステップS23)。
〔ブロック削除〕
図6は、アプリケーション実行部APからブロック削除の指示があった場合の、情報管理装置100の動作手順を示すフローチャートである。アプリケーション実行部APから、ファイル内のブロック削除の指示が出されると(ステップS30)、ファイル入出力部11は、指定されたブロックデータが格納されているシステムブロック番号をファイル管理部15に問い合わせる。ファイル管理部15は、ファイル情報34内の格納場所情報35をもとに、システムブロック番号を取得し、これをファイル入出力部11に返す。このとき、ファイル情報34内の格納場所情報35から該当ブロック番号を削除する(ステップS31)。ファイル入出力部11は、ファイル管理部15から受け取ったシステムブロック番号に基づき、このシステムブロック番号に該当するブロックを解放することを、ブロック管理部13に指示する。そして、ブロック管理部13は、指示されたシステムブロック番号のブロックを解放する(ステップS32)。
このとき、ファイル入出力部11は、ブロック入出力部12に対し、このブロックに係るブロックデータを削除することを指示するように構成されても良いし、特にこのような削除指示を行わないように構成されても良い。解放されたブロックは、ブロック管理部13によって、今後新たなブロック割り当て処理が行われる際に、割り当て対象の新規ブロックとして取り扱われる。
<1対1管理方式>
図7は、ブロック削除の処理における格納場所情報35の内容の遷移を示す図である。図7には、ファイルシステムにおけるブロックの状況及び格納場所情報35の内容を、6つのブロックデータで構成されたファイルAの実データがシステムブロック番号100〜105に順番に記録されている場合を例にとって示す。
図7において、上段に示される連続した6つの矩形は、それぞれファイルシステムにおけるブロックを示す。各ブロックの上に記載された番号は、各ブロックのシステムブロック番号を示す。各ブロックを表す矩形内に記載されたA(0)〜A(5)の文字列は、各ブロックに格納されたブロックデータを示す。ファイルAの実データは、A(0)〜A(5)が順に並ぶことによって構成される。
図7の下段には、ファイルAに係る格納場所情報35の内容を示す。図7における格納場所情報35は、ext2等のファイルシステムと同様に、ファイルブロック番号とシステムブロック番号とを1対1で対応付けて管理する。格納場所情報35の左側にある番号はファイルブロック番号を示し、右側にある番号は各ファイルブロック番号に対応する実データが格納されたブロックのシステムブロック番号を示す。以下、図7を用いて、ブロック削除の処理における格納場所情報35の遷移について説明する。なお、図7では、ファイルブロック番号1のブロックデータが削除される場合を例に示す。
図7の左側には、ファイルブロック番号1のブロックデータが削除される前の、ブロックの状況及び格納場所情報35の内容を示す。これに対し、図7の右側には、ファイルブロック番号1のブロックデータが削除された後の、ブロックの状況及び格納場所情報35の内容を示す。これは、ファイル管理部15が、削除の対象となるブロックの場所の情報(図7においてはシステムブロック番号101)を格納場所情報35から削除するとともに、このファイルAのデータにおいて削除箇所よりも後方の順番に該当するブロック(図7においては、ファイルブロック1よりも後方となるファイルブロック2〜5に対応するシステムブロック102〜105)の順番(ファイルブロック番号)が削除ブロック数分(図7においては、1つ)繰り上がるように変更した後の状態である。つまり、ファイル管理部15は、ブロック削除の要求に基づき、削除後のブロックの論理的順序に従ってブロックの格納場所の情報が並ぶように格納場所情報35を書き換える。
この場合、削除の対象となったファイルブロック番号1以降の各ブロックデータが格納されるブロックは、削除処理前の状態と変わらない。すなわち、ファイル管理部15が格納場所情報35のみを変更することにより、削除の対象となったファイルブロック番号1以降のブロックデータそのものを移動させる処理が発生しない。本実施形態による情報管理装置100では、ブロックデータそのものを移動させる処理に代えて、上述の通り、ファイル管理部15が、ファイルAのファイル情報34の格納場所情報35において、ファイルブロック番号1〜5に対応付けられているシステムブロック番号を、それぞれ書き換える。
<エクステント方式>
図8は、図7と同様に、ブロック削除の処理における格納場所情報35の内容の遷移を示す図である。ただし、図8では、格納場所情報35には、xfsやext4等のファイルシステムと同様に、エクステント方式が採用されている。エクステント方式では、格納場所情報35は、ファイルの第nブロックから連続するL個のブロックに係るブロックデータがファイルシステム上の第mブロックから連続するLブロックに格納されていることを、“n,L,m”として管理する。上述した“n”はファイルブロック番号に相当し、“m”はシステムブロック番号に相当する。このように、エクステント方式では、格納場所情報35は、連続するブロック毎に1セットの、格納場所に関する情報を有する。
図8の左側と右側には、それぞれ図7の場合と同様に、ファイルブロック番号1のブロックデータが削除される前と後の状態を示す。図8の左側の格納場所情報35では、上述した“n,L,m”のそれぞれが“0,6,100”として示される。即ち、図8の左側の格納場所情報35には、ファイルブロック番号0から連続する6つのブロックデータが、システムブロック番号100から連続する6つのブロックに格納されていることが示されている。
これに対し、図8の右側には、ファイルブロック番号1のブロックデータが削除された後の格納場所情報35の内容を示す。ここで、“0,1,100”は、ファイルブロック番号0から連続する1つのブロックデータ、即ちファイルブロック番号0のブロックデータが、システムブロック番号100に格納されていることを示す。また、“1,4,102”は、ファイルブロック番号1から連続する4つのブロックデータが、システムブロック番号102から連続する4つのブロックに格納されていることを示す。これは、当初連続したシステムブロック番号100、101、102、103、104、105からその中のシステムブロック番号101が削除されることで、システムブロック番号100、及びシステムブロック番号102、103、104、105の2つの連続ブロックに分割されるため、ファイル管理部15は、格納場所情報35の“0,6,100”を、“0,1,100”と“1,4,102”に置き換えて記録する。ファイル管理部15がこのように格納場所情報35を変更したことにより、削除の対象となるブロックの場所(図8においてはシステムブロック101)は、格納場所情報35から削除された状態になるとともに、このファイルAのデータにおいて削除箇所よりも後方の順番に該当するブロック(図8においては、ファイルブロック1よりも後方となるファイルブロック2〜5に対応するシステムブロック102〜105)の順番(ファイルブロック番号)が、削除ブロック数分(図7においては、1つ)繰り上がった状態となっている。このように記載されることにより、システムブロック番号101のブロックに格納されたブロックデータは、ファイルAを構成するデータではないことが示される。つまり、ファイル管理部15は、ブロック削除の要求に基づき、削除後のブロックの論理的順序に従ってブロックの格納場所の情報が並ぶように格納場所情報35を書き換える。このエクステント方式においても、ファイル管理部15が、格納場所情報35のみを変更することにより、ブロック移動処理が発生しない。なおこの場合も、情報管理部10は、図7の場合と同様に、システムブロック番号101におけるブロックデータを削除しないように構成されても良い。
〔ブロック挿入〕
図9は、アプリケーション実行部APからブロック挿入の指示があった場合の、情報管理装置100の動作手順を示すフローチャートである。アプリケーション実行部APから、ファイル内にブロック挿入の指示が出されると(ステップS40)、ファイル入出力部11は、ブロック管理部13に対し、割り当て可能なブロックを取得するように指示する。割り当て可能なブロックが存在しない場合(ステップS41−NO)、ブロック管理部13は、ファイル入出力部11に対しエラーを出力する。そして、ファイル入出力部11は、アプリケーション実行部APに対しエラーを出力する(ステップS42)。
一方、割り当て可能なブロックが存在する場合(ステップS41−YES)、ブロック管理部13は、割り当て可能なブロックを、ブロック挿入処理の対象となっているファイルに対し新たに割り当てる(ステップS43)。また、ブロック管理部13は、新たに割り当てられたブロックのシステムブロック番号を、ファイル入出力部11に通知する。ファイル入出力部11は、この通知を受けると、ファイル管理部15に対し、ブロック挿入処理の対象となっているファイルに関するファイル情報34の格納場所情報35の挿入を指示した箇所に、新たに割り当てられたシステムブロック番号を追加するように指示する。この指示を受けたファイル管理部15は、ブロック挿入処理の対象となっているファイルのファイル情報34の格納場所情報35の挿入を指示した箇所に対し、新たに割り当てられたブロックのシステムブロック番号を追加する(ステップS44)。
その後、ファイル入出力部11は、アプリケーション実行部APから、挿入するブロックデータを受け取る(ステップS45)。ファイル入出力部11は、受け取ったブロックデータを、ブロック入出力部12に渡し、新たに割り当てられたブロックに格納するように指示する。そして、ブロック入出力部12は、このブロックデータを、新たに割り当てられたブロックに格納する(書き込む)(ステップS46)。
<1対1管理方式>
図10は、ブロック挿入の処理における格納場所情報35の内容の遷移を示す図である。図10には、ブロックの状況及び格納場所情報35の内容を、5つのブロックデータで構成されたファイルAの実データがシステムブロック番号100〜104に順番に記録されている場合を例にとって示す。
図10の左側には、ファイルブロック番号1の位置に、A(5)のブロックデータが挿入される前の、ブロックの状況及び格納場所情報35の内容を示す。これに対し、図10の右側には、ファイルブロック番号1の位置にA(5)のブロックデータが挿入された後の、ブロックの状況及び格納場所情報35の内容を示す。このデータ挿入の際、ファイル管理部15は、格納場所情報35を後述するように変更するものの、挿入の対象となるファイルブロック番号1以降の各ブロックデータが格納されるブロックそのものを書き換える処理は必要ない。すなわち、挿入の対象となったファイルブロック番号1以降の各ブロックデータを、他のシステムブロック番号に係るブロックへ移動させる処理は発生しない。本発明による情報管理装置100では、ブロックデータそのものを移動させる処理に代えて、以下のような処理が実行される。
まず、ブロック管理部13は、新たにシステムブロック番号105のブロックをファイルAに対して割り当てる。そして、ファイル管理部15は、新たに割り当てられたブロックの場所(図10においてはシステムブロック番号105)を、挿入箇所の順番(図10においてはファイルブロック番号1)に該当する(挿入する)ブロックの場所として、格納場所情報35に追加する。さらに、ファイル管理部15は、ファイルAのファイル情報34の格納場所情報35において、挿入箇所よりも後方の順番(即ち、挿入箇所であるファイルブロック番号及びこれよりも大きいファイルブロック番号)に該当するブロックの順番を、挿入されたブロックの数分繰り下げる。図10においては、挿入箇所よりも後方の順番に該当するブロックである、システムブロック番号101〜104のブロックの順番(ファイルブロック番号)を、挿入ブロック数である1ずつ繰り下げる。つまり、ファイル管理部15は、ブロック削除の要求に基づき、削除後のブロックの論理的順序に従ってブロックの格納場所の情報が並ぶように格納場所情報35を書き換える。そして、ブロック入出力部12は、新たに割り当てられたシステムブロック番号105のブロックに対し、挿入されるべきブロックデータA(5)を格納する。
<エクステント方式>
図11は、図10と同様に、ブロック挿入の処理における格納場所情報35の内容の遷移を示す図である。ただし、図11では、格納場所情報35には、図8と同様にエクステント方式が採用されている。
図11の左側と右側には、それぞれ図10の場合と同様に、ファイルブロック番号1のブロックデータが挿入される前と後の状態を示す。図10の左側の格納場所情報35では、上述した“n,L,m”のそれぞれが“0,5,100”として示される。即ち、図11の左側の格納場所情報35には、ファイルブロック番号0から連続する5つのブロックデータが、システムブロック番号100から連続する5つのブロックに格納されていることが示されている。
これに対し、図11の右側には、ファイルブロック番号1のブロックデータが挿入された後の格納場所情報35の内容を示す。ここで、“0,1,100”は、ファイルブロック番号0から連続する1つのブロックデータ、即ちファイルブロック番号0のブロックデータが、システムブロック番号100に格納されていることを示す。また、“1,1,105”は、ファイルブロック番号1のブロックデータが、システムブロック番号105に格納されていることを示す。そして、“2,4,101”は、ファイルブロック番号2から連続する4つのブロックデータが、システムブロック番号101から連続する4つのブロックに格納されていることを示す。これは、当初連続したシステムブロック番号100、101、102、103、104の中にシステムブロック番号105が挿入されることで、システムブロック番号100、システムブロック番号105、及びシステムブロック番号101、102、103、104の3つの連続ブロックに分割されるため、ファイル管理部15は格納場所情報35の“0,5,100”を、“0,1,100”と“1,1,105”と“2,4,102”に置き換えて記録する。その後、ブロック入出力部12はA(5)のデータをシステムブロック番号105に格納する。ファイル管理部15が格納場所情報35を変更することにより、ファイルAに対し新たに割り当てられたブロックの場所(図11においてはシステムブロック番号105)が、挿入箇所の順番(図11においてはファイルブロック番号1)に該当する(挿入する)ブロックの場所として追加された状態になるとともに、挿入箇所よりも後方の順番に該当するブロックの順番(ファイルブロック番号)が、挿入されたブロックの数分繰り下がった状態となっている。つまり、ファイル管理部15が変更した後の格納場所情報35は、システムブロック番号105に格納されているブロックデータがファイルAを構成するデータであるとともにファイルブロック番号1に位置することを示している。つまり、ファイル管理部15は、ブロック削除の要求に基づき、削除後のブロックの論理的順序に従ってブロックの格納場所の情報が並ぶように格納場所情報35を書き換える。
本発明による情報管理装置100によれば、一つのブロック分に相当するデータを削除する処理において、従来の技術と比べて、処理に要する時間を削減することが可能となる。ここで、図16を用いて、改めて従来のファイルシステムにおいて、一つのブロック分に相当するデータが削除される場合の処理について簡単に説明する。従来のファイルシステムでは、一つのブロック分のデータが削除されると、削除されたブロックデータのファイルブロック番号よりも順番が後方のファイルブロックのブロックデータは全て、ファイルシステム内の他のブロックに移動されていた。図16の場合は、ファイルブロック番号1のブロックデータA(1)が削除されると、ファイルブロック番号1よりも後方に位置するファイルブロック番号2〜5のブロックデータは、それぞれ一つずつシステムブロック番号がずれたブロックに移動されていた。これに対し、本発明による情報管理装置100では、格納場所情報35の更新処理は実施されるものの、このようなブロックデータの移動が行われない。このため、ブロックデータの移動に要する時間を削減することが可能となる。
一般的に、ブロックデータの移動を行うためには、ブロックデータの読み出し、ブロックデータの一時的な記憶、ブロックデータの書き出し、の処理が各ブロックデータについて必要となる。このため、このような移動処理に要する時間は、移動処理の対象となるデータサイズやブロック数に伴って増大する。このため、大きなサイズのファイルを取り扱う場面においては、1ブロック分に相当するデータの削除の度に移動処理による時間を要することは大きな問題となってしまう。
例えば、動画像データを取り扱う状況、特に放送局などにおいては、一つのファイルのサイズが数ギガバイト〜数十ギガバイトを超えることが一般的である。放送局において取り扱われる1時間番組のファイルの実データは50ギガバイト程度(100Mbpsで計算)である。従って、例えばブロックサイズが4096バイトの場合、ファイルを構成するブロックデータの数は1000万のオーダーに達する。このようなファイルにおいて、先頭に近いファイルブロック番号のブロックデータに対して1ブロック分に相当するデータの削除が実行された場合に、その後のファイルブロック番号に係る全てのブロックデータについて移動処理を実行すると、この処理に要する時間は相当なものとなる。例えば、上述したようにファイルサイズが50ギガバイト程度の場合、平均的にその半分のブロックデータについて移動処理が行われるとすると、書き換えが行われるデータ量は25ギガバイトとなる。これに対し、本発明による情報管理装置100では、このような移動処理が実行されず、格納場所情報35の書き換えが行われる。従って、上述したようにブロックデータ数が1200万程度の場合、格納場所情報を32bit(4バイト)とし平均的にその半分のブロックデータについて移動処理が行われるとすると、「1対1管理方式」では、書き換えが行われるデータ量は、600万×4=24メガバイトとなる。このように、従来移動処理に要していた時間を削減(上述した具体例の場合は約1/1000に削減)することが可能となる。さらに「エクステント方式」では、後述するように、数十バイト程度の変更で良いので、さらに短時間で格納場所情報35の書き換えが完了する。このような効果は、削除処理のみならず、挿入処理の場合も同様に奏される。
なお、図7及び図8において、システムブロック番号101におけるブロックデータが削除されているが、わざわざブロックデータ自体をブロックから消去しないように構成しても良い。このように構成されたとしても、ブロック管理部13によってこのブロックは解放されているため、特に問題は生じない。むしろ、このように構成された場合は、ブロックデータ自体の消去処理に要する処理時間が削減され、処理の高速化を図ることが可能となる。
また、情報管理装置100において、図8や図11に示されるようなエクステント方式が採用された場合は、さらに処理時間を削減することが可能となる。1対1方式の場合、格納場所情報35において、削除や挿入の処理対象となったファイルブロック番号以降の全てのファイルブロック番号について、対応するシステムブロック番号を書き換える必要がある。このため、このような処理の対象となるブロック数に応じて、処理時間が増大する。これに対し、エクステント方式の場合は、連続しているブロックについては、一つ一つのブロックについて書き換えを行う必要がない。このため、エクステント方式が採用された場合、格納場所情報35の書き換えに要する時間を削減することが可能となる。
なお、上述したように、本実施形態の情報管理装置100によれば、実データの書き換え処理は、削除や挿入の処理対象となったファイルブロック番号のブロックデータのみについて行えば良いが、削除や挿入以外の処理(例えば、ブロックデータの上書き処理)によって、削除や挿入の処理対象とはなっていないファイルブロック番号のブロックデータが書き換えられたとしても、削除や挿入の処理に関して本発明による効果を得ることはできる。
これまでは、挿入又は削除するデータの先頭位置がファイルシステムのブロックの先頭と一致する場合について説明してきたが、本発明の情報管理装置100によれば、挿入又は削除するデータのサイズがブロックサイズの整数倍であれば、挿入又は削除するデータの先頭位置がファイルシステムのブロックの先頭と一致していなくても良い。
図12は、挿入又は削除するデータのサイズがブロックサイズの整数倍であり且つ挿入又は削除するデータの先頭位置がブロックの先頭と一致しない場合のデータを示す概略図である。
まずデータ削除について説明する。図12(a)は、削除前のファイルを示す。削除前のファイルは4ブロック(左から、0ブロック目、1ブロック目、2ブロック目、3ブロック目)で構成されており、このうち1ブロック目と2ブロック目にまたがっている、ハッチングで示した、ブロックサイズ分のデータが削除対象である。このデータを削除する場合、情報管理部10は、2ブロック目の削除対象以外のデータを1ブロック目の同じ場所に移動する(つまり、1ブロック目を書き換える)とともに、前述の削除処理を用いて2ブロック目を削除することにより、削除に影響しない0ブロック目と3ブロック目はデータの移動を行う必要がない。図12(b)は、削除後のファイルを示す。言い換えると、この一連の処理は、第1のステップにおいて図12(a)の2ブロック目を前述した処理方法によって削除するとともに、第2のステップにおいては当該2ブロック目に含まれていたデータの一部を用いて同図の1ブロック目のデータ内容の一部を書き換えている。ここでの第1のステップの削除処理は、当該削除の後のブロックの論理的順序に従うように格納場所情報を書き換えるものである。
なおここでは、削除対象のデータがブロックサイズの1倍の場合の例を説明したが、削除対象のデータがブロックサイズのn倍(nは2以上の整数)であっても同様の方法による削除が可能である。また、ここでは書き換えや削除対象のブロックの前後はそれぞれ1ブロックの場合の例を説明したが、それぞれ何ブロックであっても書き換えや削除対象ブロック以外は、削除の影響を受けない。
次にデータ挿入について、同じ図を用いて説明する。図12(b)は、挿入前のファイルを示す。挿入前のファイルは3ブロック(左から、0ブロック目、1ブロック目、2ブロック目)で構成されている。ここで、1ブロック目の途中の位置にブロックサイズ分のデータを挿入する。このデータを挿入する場合、情報管理部10は、(1)新たなブロックをこのファイルに割り当て、(2)1ブロック目の挿入箇所以後のデータを一時的に記憶し、(3)1ブロック目の挿入位置以後に挿入対象のデータのうち当該ブロックに収容可能な分を書き込み、(4)挿入対象のデータのうちの残りの部分と上で一時的に記憶したデータとを連結させた上で新たに割り当てたブロックに書き込む。この一連の処理では、前述の挿入処理を用いて、当初の1ブロック目と2ブロック目の間にブロックを挿入する。なおここで、(3)の処理と(4)の処理の順序は任意である。このような処理により、挿入前の0ブロック目と2ブロック目は、挿入の影響を受けず、データの移動を行なう必要がない。図12(a)は、挿入後のファイルを示す。言い換えると、この一連の処理は、第1のステップにおいて図12(b)の1ブロック目と2ブロック目との間に新たなブロックを前述した処理方法によって挿入する(挿入されたブロックは図12(a)の2ブロック目であり、当該ブロックは、新たなデータと図12(b)の1ブロック目の一部のデータとを含むように書き込まれる)とともに、第2のステップにおいては新たなデータを用いて図12(b)の1ブロック目のデータ内容の一部を書き換えている。ここでの第1のステップの挿入処理は、当該挿入の影響を受けるブロックのみを書き換えるとともに、当該挿入の後のブロックの論理的順序に従うように格納場所情報を書き換えるものである。
なおここでは、挿入対象のデータがブロックサイズの1倍の場合の例を示したが、挿入対象のデータがブロックサイズのn倍(nは2以上の整数)であっても同様の方法による挿入が可能である。また、ここでは書き換えや挿入対象のブロックの前後はそれぞれ1ブロックの場合の例を説明したが、それぞれ何ブロックであっても書き換えや挿入対象ブロック以外は、挿入の影響を受けない。
さらに、本実施形態の情報管理装置100によれば、ファイルの編集により、ファイルの変更部分の変更前と変更後のデータサイズの差がブロックサイズの整数倍であれば、変更に関わるブロックのみ変更すれば、変更に影響しないブロックのデータを移動することなく、ファイルを修正することができる。
図13は、ファイルの編集前後でのデータサイズの差がブロックサイズの整数倍である場合のデータを示す概略図である。図13(a)は、編集前のファイルを示し、このファイルは4ブロック(左から、0ブロック目、1ブロック目、2ブロック目、3ブロック目)からなる。ここで、1ブロック目から2ブロック目に渡る、ハッチングの部分が編集対象のデータである。図13(b)は、この部分を編集した結果のファイルを示し、編集の結果として、ファイルのデータサイズはちょうど5ブロック分となっている。つまり編集前後でのデータサイズの差がブロックサイズの1倍である。図13(b)において、編集の影響を受けた箇所は、1ブロック目から3ブロック目に渡る、ハッチングの部分である。このような編集を行なう際に、上述したデータ挿入処理を利用することにより、当初ファイルの0ブロック目と3ブロック目は編集の影響を受けず、データの移動を行う必要がない。言い換えると、この一連の処理は、第1のステップにおいて図13(a)の1ブロック目と2ブロック目との間に新たなブロックを前述した処理方法によって挿入する(挿入されたブロックは図13(b)の2ブロック目であり、当該ブロックは、編集結果のデータを含むように書き込まれる)とともに、第2のステップにおいては編集結果のデータを用いて図13(b)の1ブロック目のデータ内容の一部および3ブロック目のデータ内容の一部を書き換えている。ここでの第1のステップの挿入処理は、当該挿入の影響を受けるブロックのみを書き換えるとともに、当該挿入の後のブロックの論理的順序に従うように格納場所情報を書き換えるものである。
なお、編集前後でのデータサイズの差がブロックサイズのn倍(nは2以上の整数)であっても同様である。
また、編集前のファイルが図13(b)で編集後のファイルが図13(a)の場合も、編集前後でのデータサイズの差がブロックサイズの整数倍であり、この場合には、上述したデータ削除処理を利用することにより、編集の影響を受けないデータの移動を行なう必要がない。言い換えると、この一連の処理は、第1のステップにおいて図13(b)の2ブロック目を前述した処理方法によって削除するとともに、第2のステップにおいては編集結果のデータをそれぞれ用いて図13(a)の1ブロック目のデータ内容の一部と2ブロック目のデータ内容の一部とを書き換えている。ここでの第1のステップの削除処理は、当該削除の後のブロックの論理的順序に従うように格納場所情報を書き換えるものである。
[適用例]
本発明による情報管理装置100は、MXF(Material eXchange Format:SMPTE 377M等)ファイルを取り扱う場面で適用されても良い。MXFは、ブロックデバイスへの記録も意識したフォーマットである。このため、例えば動画像の各フレームの先頭を、ファイルシステムにおけるブロックの先頭に位置合わせすることが可能である。言い換えれば、MXFでは、動画像のフレームの境界と、ファイルシステムにおけるブロックの境界とを一致させることが可能である。このため、変更の生じたフレームを含むブロックのみに対して変更処理を行うことが可能となる。従って、MXFでは、動画像のフレーム単位での書き換えが容易に実施可能である。
このようなMXFファイルを情報管理装置100で取り扱う場合、フレーム単位で削除や挿入の必要が生じた場合には、上述したブロックの削除処理や挿入処理を行うことにより、フレーム単位での削除・挿入を実現することができる。さらに、従来とは異なり、削除や挿入に伴う移動処理が不要であるため、このようなフレーム単位での削除や挿入の処理に要する時間を削減することが可能となる。
なお、MXFファイルを情報管理装置100で取り扱う場合、各フレームとファイルブロック番号との対応付けは、アプリケーション実行部APによって行われても良いし、ファイル入出力部11によって行われても良い。また、アプリケーション実行部AP又はファイル入出力部11によって、各フレームとシステムブロック番号とが対応付けられても良い。この場合は、格納場所情報35には、ファイルブロック番号に代えてフレーム番号が管理される。
[コードの具体例]
図14,15は、それぞれ本発明におけるブロック削除の処理(図6のフローチャート)、ブロック挿入の処理(図9のフローチャート)を実現するプログラムソースコードの具体例を示す図である。図14,15に示されたプログラムソースコードは、UNIX(登録商標)系OS上のアプリケーションプログラムによってこれらの処理を行うためのものである。図14は、ファイルAのファイルブロック番号1のブロックデータを削除するためのプログラムを示す。図15は、ファイルAのファイルブロック番号1に、“0”の値で埋めた1つのブロックデータを挿入するためのプログラムを示す。図14,15とも、説明を簡略化するため、エラー処理の記述は省略している。
ioctl関数は、ファイル記述子、コマンド、コマンド引数ポインタの3つの引数を有する。ファイル記述子は、処理の対象となるファイルをオープンした際に付与される。コマンドは、ブロック削除又はブロック挿入を表す値である。コマンド引数ポインタは、先頭ブロック番号とブロック長を格納した整数配列の先頭ポインタである。DELETE_BLOCKは、ブロック削除のコマンドを意味する値である。INSERT_BLOCKは、ブロック挿入のコマンドを意味する値である。arg[0]とarg[1]とは、それぞれ削除・挿入対象の先頭ブロック番号とブロック長を示す。arg[0]とarg[1]とは、これらの値が格納された配列の先頭ポインタであるargを、ioctl関数の3番目の引数としている。
このようなプログラムによって実装された情報管理装置100は、ioctlの1番目の引数により、処理するファイル情報を特定する。また、情報管理装置100は、2番目の引数により、ブロック削除処理かブロック挿入処理かを判断する。また、情報管理装置100は、3番目の引数により、処理対象の先頭ブロック番号及びブロック長を取得する。情報管理装置100は、これらの値に基づき、上述した処理手順に従って、ブロック削除やブロック挿入の処理を実行する。なお、情報管理装置100は、エラーが発生した場合は“−1”を返し、正常終了した場合は“0”を返す。
なお、上述した実施形態における情報管理装置100の一部、例えば、情報管理部10の機能をコンピュータで実現するようにしても良い。その場合、この情報管理機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時刻の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時刻プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
本発明は、ブロック単位でファイルを管理するファイルシステムが採用された情報処理装置において利用することができる。特に、ファイルサイズやブロック数が大きなファイルを取り扱う場面において利用することにより、顕著な効果を期待できるものである。
本発明による情報管理装置の機能構成例を示す機能ブロック図である。 ファイルシステム情報、ファイル情報、及びディレクトリ情報の内容を示す図である。 ファイルopenの指示があった場合の情報管理装置の動作手順を示すフローチャートである。 ファイルreadの指示があった場合の情報管理装置の動作手順を示すフローチャートである。 ファイルremoveの指示があった場合の情報管理装置の動作手順を示すフローチャートである。 ブロック削除の指示があった場合の情報管理装置の動作手順を示すフローチャートである。 ブロック削除の処理における格納場所情報の内容の遷移を示す図である。 ブロック削除の処理における格納場所情報の内容の遷移を示す図である。 ブロック挿入の指示があった場合の情報管理装置の動作手順を示すフローチャートである。 ブロック挿入の処理における格納場所情報の内容の遷移を示す図である。 ブロック挿入の処理における格納場所情報の内容の遷移を示す図である。 挿入又は削除するデータのサイズがブロックサイズの整数倍であり且つその先頭位置がブロックの先頭と一致しない場合のデータを示す図である。 ファイルの編集前後でのデータサイズの差がブロックサイズの整数倍である場合のデータを示す図である。 ブロック削除処理のプログラムソースコードの具体例を示す図である。 ブロック挿入処理のプログラムソースコードの具体例を示す図である。 従来の技術におけるデータの削除処理の例を示す図である。 従来の技術におけるデータの挿入処理の例を示す図である。
符号の説明
AP…アプリケーション実行部、 10…情報管理部、 11…ファイル入出力部、 12…ブロック入出力部、 13…ブロック管理部、 14…ファイル情報管理部、 15…ファイル管理部、 21…キャッシュメモリ管理部、 22…キャッシュメモリ入出力部、 23…キャッシュメモリ、 24…蓄積装置入出力部、 25…蓄積装置、 30…ファイルシステム情報、 31…ブロック管理情報、 32…ファイル管理情報、 34…ファイル情報、 35…格納場所情報、 36…ファイル属性情報、 37…ディレクトリ情報、 100…情報管理装置

Claims (4)

  1. ブロック単位で情報を記憶するブロック記憶部と、
    前記ブロックの場所を表す格納場所情報をファイルごとに記憶する格納場所情報記憶部と、
    前記ファイル内におけるブロックの挿入又は削除の要求を受けたとき、当該挿入又は削除の後のブロックの論理的順序に従って前記格納場所情報記憶部内の前記格納場所情報を書き換えるとともに、ブロックの挿入の要求を受けた場合には前記ブロック記憶部内において当該挿入の影響を受けるブロックのみを書き換える情報管理部と、
    を含んで構成されることを特徴とする情報管理装置。
  2. 前記情報管理部は、ブロックの挿入の要求を受けた場合、当該ファイルに対し新たに割り当てられたブロックの場所を挿入するブロックの場所として前記格納場所情報記憶部内の前記格納場所情報に追加し、前記ファイルのデータにおいて当該挿入箇所よりも後方の順番に該当するブロックの順番を前記格納場所情報において挿入ブロック数分繰り下げ、前記格納場所情報において当該ファイルに対し新たに割り当てられたブロックの場所に前記挿入の要求を受けたブロックのデータを書き込む、請求項1に記載の情報管理装置。
  3. 前記情報管理部は、ブロックの削除の要求を受けた場合、当該削除の対象となるブロックの場所を前記格納場所情報記憶部内の前記格納場所情報から削除し、前記ファイルのデータにおいて当該削除箇所よりも後方の順番に該当するブロックの順番を前記格納場所情報において削除ブロック数分繰り上げる、請求項1に記載の情報管理装置。
  4. ブロック単位で情報を記憶するブロック記憶部と、前記ブロックの場所を表す格納場所情報をファイルごとに記憶する格納場所情報記憶部とを含んで構成されるコンピュータに、
    前記ファイル内におけるブロックの挿入又は削除の要求を受けたとき、
    当該挿入又は削除の後のブロックの論理的順序に従って前記格納場所情報記憶部内の前記格納場所情報を書き換えるステップと
    ブロックの挿入の要求を受けた場合には前記ブロック記憶部内において当該挿入の影響を受けるブロックのみを書き換えるステップと、
    を実行させるためのコンピュータプログラム。
JP2008028146A 2008-02-07 2008-02-07 情報管理装置およびコンピュータプログラム Pending JP2009187403A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008028146A JP2009187403A (ja) 2008-02-07 2008-02-07 情報管理装置およびコンピュータプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008028146A JP2009187403A (ja) 2008-02-07 2008-02-07 情報管理装置およびコンピュータプログラム

Publications (1)

Publication Number Publication Date
JP2009187403A true JP2009187403A (ja) 2009-08-20

Family

ID=41070555

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008028146A Pending JP2009187403A (ja) 2008-02-07 2008-02-07 情報管理装置およびコンピュータプログラム

Country Status (1)

Country Link
JP (1) JP2009187403A (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08255100A (ja) * 1994-12-21 1996-10-01 Yamaha Corp ファイル管理システム及び方法
JP2001134475A (ja) * 1999-11-01 2001-05-18 Hitachi Ltd ファイルシステム
JP2002208222A (ja) * 2001-01-09 2002-07-26 Fujitsu Ltd ファイルシステム及び記憶領域の管理方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08255100A (ja) * 1994-12-21 1996-10-01 Yamaha Corp ファイル管理システム及び方法
JP2001134475A (ja) * 1999-11-01 2001-05-18 Hitachi Ltd ファイルシステム
JP2002208222A (ja) * 2001-01-09 2002-07-26 Fujitsu Ltd ファイルシステム及び記憶領域の管理方法

Similar Documents

Publication Publication Date Title
US8549051B2 (en) Unlimited file system snapshots and clones
US5559957A (en) File system for a data storage device having a power fail recovery mechanism for write/replace operations
US9430155B2 (en) File index, metadata storage, and file system management for magnetic tape
US8392685B2 (en) Arrangements for managing metadata of an integrated logical unit including differing types of storage media
US8977802B2 (en) Access device, information recording device, controller, real time information recording system, access method, and program
US9785547B2 (en) Data management apparatus and method
JP2009199625A (ja) メモリカードおよびメモリカードの制御方法および不揮発性半導体メモリの制御方法
JP2006040264A (ja) メモリカードの制御方法および不揮発性半導体メモリの制御方法
US20070061540A1 (en) Data storage system using segmentable virtual volumes
KR100703680B1 (ko) 플래시 파일 시스템
EP2669806B1 (en) Storage system
JP4130808B2 (ja) フォーマット方法
JP2008090378A (ja) ハイブリッドファイルシステム、オペレーティングシステム、キャッシュ制御方法および記録媒体
JP2008269520A (ja) 記録装置及び記録方法
US9063656B2 (en) System and methods for digest-based storage
KR101102754B1 (ko) 낸드 플래시 메모리 파일 시스템 및 낸드 플래시 메모리 시스템에서 파일 엑세스 방법
JP2009187403A (ja) 情報管理装置およびコンピュータプログラム
US20170115926A1 (en) Information processing device, information processing method and program
JP2004030305A (ja) ファイルシステム
EP2256648A1 (en) Method for storing data files, method for reading data content, and data store
KR20190056087A (ko) 블록 삭제시의 데이터 입출력을 최소화하는 파일 관리 구조 제어 시스템 및 방법
JP4086600B2 (ja) ロールバック可能fatファイルシステム及びプログラム
JP2005222531A (ja) データ記録装置及びデータ記録方法
JP2017146722A (ja) ストレージ装置
JP2014153873A (ja) 情報処理装置、情報処理方法およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100310

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120405

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120417

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120615

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121002

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130402