JP2009163367A - ファイルシステム、プログラム及びファイルの管理方法 - Google Patents
ファイルシステム、プログラム及びファイルの管理方法 Download PDFInfo
- Publication number
- JP2009163367A JP2009163367A JP2007340533A JP2007340533A JP2009163367A JP 2009163367 A JP2009163367 A JP 2009163367A JP 2007340533 A JP2007340533 A JP 2007340533A JP 2007340533 A JP2007340533 A JP 2007340533A JP 2009163367 A JP2009163367 A JP 2009163367A
- Authority
- JP
- Japan
- Prior art keywords
- file
- files
- virtual aggregate
- data block
- aggregate file
- 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.)
- Withdrawn
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】大量のファイルの一括操作を高速化する。
【解決手段】グループ化するファイルについて、そのデータブロック情報とiノード情報を持つ仮想集合ファイル(アグリゲートファイル)を作成し、管理する。アグリゲートファイルを指定したファイル操作コマンドが実行された場合、アグリゲートファイルのデータブロック情報とiノード情報を用いたファイル操作を行うことで、ディスクへのランダムアクセスの削減や、iノードの一括更新を実現する。また、アグリゲートファイルに適宜属性を与えて管理することで、グループ化するファイルの自由度や多次元性の制限を無くすことができる。
【選択図】図3
【解決手段】グループ化するファイルについて、そのデータブロック情報とiノード情報を持つ仮想集合ファイル(アグリゲートファイル)を作成し、管理する。アグリゲートファイルを指定したファイル操作コマンドが実行された場合、アグリゲートファイルのデータブロック情報とiノード情報を用いたファイル操作を行うことで、ディスクへのランダムアクセスの削減や、iノードの一括更新を実現する。また、アグリゲートファイルに適宜属性を与えて管理することで、グループ化するファイルの自由度や多次元性の制限を無くすことができる。
【選択図】図3
Description
本発明は、ファイルシステム、プログラム及びファイルの管理方法に関し、特に、複数のファイルを、仮想的な1つのファイルとして取り扱うことのできるファイルシステム、プログラム及びファイルの管理方法に関する。
ディスクの大容量化やシステムの統合に伴い、ストレージに格納されるファイルサイズ、ファイル数は加速度的に増大している。数年前にはハードディスク容量は100GB未満だったが、現在は1TBハードディスクが出荷されている。システムとしても、数TB規模のストレージを持つものが一般的になってきている。
こうしたストレージに格納されるファイルの側では、マルチメディア系のファイルが増え、アプリケーションもリッチになる等、個々のファイルサイズが大きくなることに加え、コンプライアンスや履歴管理の側面からファイルを消さずに保存しておくようになり、ファイル数が増える原因となっている。
これらのデータの中には高速アクセスが必要なものもあれば、ほとんどアクセスされないものもあり、すべてを同列に扱うのは不合理である。すべてのデータに高速アクセスを実現することは可能であるが、コストが膨大になってしまう。そこで高速高価なストレージと低速安価なストレージを用意し、データの求められるサービスレベルに合わせて振り分けて全体のコストを削減する、階層ストレージ管理(HSM:Hierarchical Storage Management)が注目されるようになってきた。
前記階層ストレージ管理を実現するには、上記大容量のストレージに格納される無数のファイルの取り扱いが必須となる。例えば、特許文献1には、ファイル格納部に格納したファイルをグループ化するグループ情報を用いてファイル格納部に格納されたファイルをグループ処理するグループ処理部を備えたファイルのグループ処理装置が開示されている。
また、特許文献2には、1つのファイルをグループに登録する際に、グループ間の包含関係を参照し、一のグループへの登録をもって、関係する他のグループにも該当ファイルを登録するファイル管理方法が開示されている。
データは、その作成当初は頻繁に書き換えられアクセスされるため、高速でアクセス性の高いサービスレベルが要求されるが、ファイルとして完成したあとは更新がなくなり、さらに時間が経つとアーカイブとなるといったライフサイクルがある。このような観点でデータの管理を行う考え方として、ILM(Imfomation Lifecycle Management:情報ライフサイクル管理)がある。
上記階層ストレージ管理にしても、情報ライフサイクル管理にしても、異なるサービスレベルが設定されたストレージ間を、多数、大容量のファイルを移動させる処理が必要となってくる。ファイル数が少ないときには逐次処理でもそれほど時間がかからず、無視できるレベルであった。しかしながら、上記に述べたように、ストレージが大容量化し、ファイル数が膨大になると処理時間が相当なものとなり、また負荷も相当かかるため、従来のように無視することができなくなっている。
従来から、ユーザ操作のレベルでは複数ファイルを一括操作することは一見可能に見えている。しかしながら、ファイルシステムのレベルでは、一括処理ではなく逐次処理になっている。例えばファイルを削除する場合、ファイルマネージャのようなGUIからディレクトリをクリックして削除を選べばディレクトリ配下の全ファイルを削除することができる。UNIX(登録商標)であればコンソールから「rm −r ディレクトリ名」といった一つのコマンドでディレクトリ配下の多数のファイルを再帰的に削除することができる。これらのGUIやコマンドはユーザ空間のプログラムにすぎず、カーネルファイルシステムに対してはディレクトリ配下のファイル一つ一つに対して再帰的に削除コマンドを発行しているのである。
逐次処理だとなぜ遅くなるかは大きく2つの原因が挙げられる。1つ目は同じ処理をシーケンシャルに繰り返し行うことである。複数ファイルに対して一括処理をする場合、ほとんどの処理はファイル個々で共通である。しかしファイルシステムレベルでは個々のファイルに対して処理を行うので、ファイル数だけ同じ処理を行わなければならない。しかも、ファイル削除のような変更を伴う処理はファイルシステムレベルでは並列処理ができない。バックグラウンド実行すれば並列処理をしているように見えるかもしれないが、ファイルシステムレベルではロックをとって直列に処理されているのである。
2つ目はディスクI/Oが細分化、ランダムアクセスになってしまうことである。ランダムなディスクI/Oはとてもオーバーヘッドが大きい。ディスクのヘッドをアクセス位置まで移動する時間(シークタイム)は高速なものでも数msかかってしまう。GHzレベルで動作するCPUやメモリにとっては、とてつもなく大きい待ち時間となる。どれだけディスクアクセスをシーケンシャルにするかが性能に最も影響すると言っても過言ではない。その点ではファイル毎の逐次処理は決して望ましいものではない。
更に、索引割付け方式でファイルを管理するファイルシステムでは、ファイルの削除をするとき、ファイルに対しユニークに与えられるインデックス番号(inode番号)を未使用に戻す処理を行う。たいていのファイルシステムはinodeをビットマップで管理しているため、対応するビットを変更する処理を行う。ビットマップはメモリにも持っているが、ディスク上にもあるためディスクへ書き込みをしなければならない。ファイルを逐次削除すると、1つのファイルの削除を行う度に毎回変更したビットマップをディスクに書き込んでいるのである。これをまとめて処理できれば、ビットマップの書き込み回数を大幅に減らすことができる。
ファイルをまとめて処理する既存技術について述べる。通常のファイルシステム経由ではなくまとめて処理をする方法として、ブロックレベル処理、ループバックマウント、アーカイブファイル(TAR)がある。ブロックレベル処理はファイルシステムを経由せずディスクをRAWデバイスとしてアクセスする方式である。細かいランダムアクセスはせず、シーケンシャルI/Oができるので高速な処理が可能である。しかしファイルシステムを経由しないために、ファイルやメタデータ自体の区別ができない。そもそもファイルシステム的に空いているか使っているかも意識できない。そのため、ブロックレベル処理はファイルシステム全体に対しての処理となってしまい、当然に後記するグルーピングや多次元性を実現することも不可能である。
ループバックマウントとアーカイブファイルは、ファイルシステム上では1つのファイルに複数のファイルが含まれるものである。ループバックマウントはファイル自体をボリュームとして再度マウントする。アーカイブファイルは複数ファイルをまとめたファイルであり、TARはテープバックアップで使われる形式である。両方ともファイルシステムレベルであるため、ブロックレベル処理と違いファイルを意識できるが、これらを用いてファイル操作をしても、元のファイルに変更が及ぶわけではなく、元のファイルを削除する場合には、上記した逐次処理を行わなければならないという問題点がある。
また、特許文献1、2のいずれも、管理性や操作性を向上させる観点で、ファイルをグループ化する技術であり、多数、大容量のファイルを移動するような処理をした場合、上述した逐次処理による遅延、負荷が発生する。
本発明は、上記した事情に鑑みてなされたものであって、その目的とするところは、ストレージ間の移動を伴う、多数、大容量のファイルの管理に好適なファイルシステムを提供することにある。
本発明の第1の視点によれば、複数のファイルのファイルデータを格納しているデータブロックのアドレスのリスト(データブロック情報)と前記データブロック情報を格納しているインデックス情報のアドレスのリスト(インデックス番号情報)とを集めた仮想集合ファイルにより、該仮想集合ファイルに記述された複数のファイルを仮想的な一つのファイルとして管理する仮想集合ファイル管理機構を有し、前記仮想集合ファイル管理機構は、前記仮想集合ファイルに対して所定のファイル操作コマンドが実行された場合に、前記仮想集合ファイルの情報を用いて、前記仮想集合ファイルに記述された複数のファイルに対して、前記コマンドに応じた一括操作を行うファイルシステムが提供される。
本発明の第2の視点によれば、複数のファイルのファイルデータを格納しているデータブロックのアドレスのリスト(データブロック情報)と前記データブロック情報を格納しているインデックス情報のアドレスのリスト(インデックス番号情報)とを集めた仮想集合ファイルにより、該仮想集合ファイルに記述された複数のファイルを仮想的な一つのファイルとして管理する仮想集合ファイル管理機構としてコンピュータを機能させ、前記仮想集合ファイルに対して所定のファイル操作コマンドが実行された場合に、前記仮想集合ファイルの情報を用いて、前記仮想集合ファイルに記述された複数のファイルに対して、前記コマンドに応じた一括操作を前記コンピュータに実行させるプログラムが提供される。
本発明の第3の視点によれば、所定の記憶装置に保存されたファイルの管理方法であって、コンピュータに、複数のファイルのファイルデータを格納しているデータブロックのアドレスのリスト(データブロック情報)と前記データブロック情報を格納しているインデックス情報のアドレスのリスト(インデックス番号情報)とを集めた仮想集合ファイルを作成させ、前記仮想集合ファイルに対して所定のファイル操作コマンドが実行された場合に、前記コンピュータに、前記仮想集合ファイルの情報を用いて、前記仮想集合ファイルに記述された複数のファイルに対して、前記コマンドに応じた一括操作を実行させ、前記仮想集合ファイルに記述された複数のファイルを仮想的な一つのファイルとして管理させることを特徴とするファイルの管理方法が提供される。
本発明によれば、多数のファイルをグループ化し、一括操作する処理の遅延解消、負荷低減が達成される。その理由は、ファイルシステムレベルで、できるだけシーケンシャル、かつ、まとまった処理ができるよう仮想集合ファイルという概念を導入したことにある。
続いて、本発明を実施するための最良の形態について説明する。図1は、本発明の第1の実施形態のシステム構成図である。図1を参照すると、A、B2つのストレージ1a、1bがネットワーク6で接続されている。この間である特定の属性を持つファイルの集まりであるファイルグループ5を移動させるケースを想定する。ストレージ1aがコピー元ストレージ、ストレージ1bがコピー先ストレージになる。ストレージ1a、1bの双方に、本発明のファイルシステム3がインストールされているものとする。
ファイルの移動は、コピー元ストレージからコピー先ストレージへのコピーと、コピー元ストレージのファイル削除である。
始めに、上記ストレージ間のファイルの移動を一括操作で実現するための仮想的な集合ファイル(以下、「アグリゲートファイル」という。)の構造、ファイルアクセス時のアグリゲートファイルに対する操作について説明する。
図2は、アグリゲートファイルの構造を説明するための図である。図2を参照すると、アグリゲートファイル10は、大きくinode情報11を記述する領域と、データブロック情報12を記述する領域とに分けることができる。
inode番号は、ファイルやディレクトリを割付けたデータブロック情報を取得するためのインデックス情報の番号であり個々のファイルに一意に与えられる。アグリゲートファイル10のinode情報11は、グループ化するファイルのinode番号+親ディレクトリのinode番号のリストである。親ディレクトリのinode番号が必要な理由は後述する。
アグリゲートファイル10のデータブロック情報12は、グループ化するファイルのデータブロック情報を並び替え(マージ)したものである。単純に各ファイルのデータブロック情報を並べたものでもよいが、ファイルシステムに応じてソートやB−Tree化すると高速化の効果が高くなる。
図3は、アグリゲートファイル10とファイルinode、ディレクトリinodeの関係を示している。ディレクトリinode15のinode情報はファイルinode13とファイルinode14のinode番号を持っている。これはディレクトリinode15の配下にファイルinode13、ファイルinode14があることを示している。ファイルinode13のデータブロック情報とファイルinode14のデータブロック情報がアグリゲートファイル10のデータブロック情報に含まれている。
図3の例では、アグリゲートファイル10には、ファイルグループを示す属性=Aが与えられているものとする。ファイルシステム3の後記するアグリゲートファイル管理機構(仮想集合ファイル管理機構)は、アグリゲートファイルを用いて、ファイルinode内の属性がAであるファイルを一括で管理する。
図4は、本実施形態に係るファイルシステム周辺の機能ブロック図である。図4を参照すると、本実施形態に係るファイルシステム3は、ファイルシステムコア(ファイルシステム制御部)7と、アグリゲートファイル管理機構8と、アグリゲートファイル管理テーブル9を含んで構成されている。
ユーザアプリケーション20は、ファイルシステムAPI(Application Program Interface)を通じてファイルシステム3に対するファイル操作と、アグリゲートファイル管理機構8専用のAPIを通じたファイル操作を行うことができる各種アプリケーションである。
ファイルシステムコア(ファイルシステム制御部)7は、ディスク4に対するファイルの作成、更新、削除を受け付けるほか、アグリゲートファイル管理機構8に対してファイルが作成、更新された旨を通知する。
アグリゲートファイル管理機構8は、アグリゲートファイル10に記述された複数のファイルを仮想的な一つのファイルとして管理する手段である。また、アグリゲートファイル管理機構8は、ファイルシステムコア(ファイルシステム制御部)7からファイルが作成、更新された旨の通知を受けると、アグリゲートファイル管理テーブル9を参照して、アグリゲートファイル10に対する参照、更新を行う。
ユーザアプリケーション20からアグリゲートファイル10に対する操作は、アグリゲートファイル管理機構8専用のAPIを通して行う。
なお、本実施形態では、アグリゲートファイル10は通常のファイルのようにディレクトリに属さないものとしている。従って、通常のファイルアクセスAPIからはアクセスできない。専用APIを通して削除やコピーコマンドが通知されると、アグリゲートファイル管理機構8においてアグリゲートファイル専用の削除やコピーコマンドが実行される。
図5は、アグリゲートファイル管理テーブル9の例である。図9の例では、属性とキーとしてアグリゲートファイルのinode番号を取得できるようになっている。例えば、属性=Bをキーとして、inode番号=101のアグリゲートファイルを特定することができる。なお、アグリゲートファイル管理テーブル9自体も失ってはいけない情報なので、ファイルとしてディスク4内に保存される。
続いて、本実施形態のファイルシステムの動作について図面を参照して詳細に説明する。図6は、新たにファイルが作成されたときのファイルシステム3の動作を表したフローチャートである。図6を参照すると、まず、通常のファイルシステムAPI経由で新規ファイルが作成されると(ステップS001)、ファイルシステムコア(ファイルシステム制御部)7より、アグリゲートファイル管理機構8に通知が行われる(ステップS002)。
アグリゲートファイル管理機構8は、ファイルシステムコア(ファイルシステム制御部)7より通知されたファイルの属性を調べ、アグリゲートファイル管理テーブル9に該当するアグリゲートファイル10が存在するか否かを確認する(ステップS003)。なお、ある属性に該当するアグリゲートファイル10は複数ある可能性があるため、基本的にはアグリゲートファイル管理テーブル9を全探索する必要がある。
アグリゲートファイル管理テーブル9に該当するアグリゲートファイル10があったら(ステップS004の「Y」)、アグリゲートファイル管理機構8は、アグリゲートファイル10内の情報を更新する(ステップS005)。具体的には、inode情報11への新規ファイルのinode番号の追加と、データブロック情報12の再マージが行われる。アグリゲートファイル管理テーブル9に該当するアグリゲートファイル10がない場合は(ステップS004の「N」)、終了しファイルシステムコア(ファイルシステム制御部)7に処理を返すことになる(ステップS006)。
なお、ファイルが更新された場合はinode情報11の更新は行わず、データブロック情報12の更新が行われる。データブロックが増えたときは、新たに確保されたデータブロックが確定した段階で、アグリゲートファイル管理機構8に処理が回るようにすればよい。データブロックが減った場合(Truncate)は、解放されたデータブロックが確定できる段階で処理を回すようにすればよい。
ファイルが個別に削除される場合も、上記作成時と同様の流れで、inode情報11からの削除と、データブロック情報12の更新が行われる。
上記したアグリゲートファイル10の作成は、専用APIを通じてアグリゲートファイル管理テーブル9に属性を設定すると、アグリゲートファイル管理機構8がアグリゲートファイル10を生成するようにすればよい。
また上述のようにアグリゲートファイル10が既にある状態で、該当する属性の新規ファイルが作成されるとアグリゲートファイル10への登録が行われるが、アグリゲートファイル10作成時にすでにあったファイルは登録されないというケースが生じる。例えば、アグリゲートファイル管理機構8が、アグリゲートファイル10作成時に、ユーザから、グループ化する(アグリゲートファイルに登録する)ファイルの条件(属性等)の指定を受け付けることし、ファイルシステム全体を探索して該当するファイルを登録するようにしてもよい。
図7は、本実施形態に係るファイルシステムにおいて、アグリゲートファイルを指定した一括コピーコマンドが実行されたときの動作を表したフローチャートである。なお、アグリゲートファイルを指定した一括コピーコマンドの実行は、コピー元、コピー先の両方が、アグリゲートファイル管理機構8を備えたファイルシステム3であることが前提である。
図7を参照すると、まず、専用APIを通じて一括コピーコマンドが発行されると(ステップS101)、アグリゲートファイル管理機構8は、コピー先に、必要な容量を確保する(ステップS102)。通常のファイルコピーであれば、対象ファイルサイズを積算しなければならないが、アグリゲートファイル10に、登録されたすべてのファイルのファイルサイズ(総サイズ)も保存しておくようにすることで、対象ファイルサイズの積算処理を省略することができ、時間と負荷の短縮になる。
所定の容量を確保可能な場合は、アグリゲートファイル管理機構8は、アグリゲートファイル10を、一つのファイルとみなしてコピーする(ステップS104)。具体的には、アグリゲートファイル管理機構8は、アグリゲートファイル10のinodeを通常ファイルのinodeとみなし、データブロック情報12に基づいてデータをコピーする。ファイル個々にコピーする場合は、冒頭に述べたような逐次処理となるが、データブロック情報12がソートされていれば、シーケンシャルアクセスが可能になり、コピーを高速化できる。なお、所定の容量を確保できない場合は、エラー終了となる(ステップS120)。
ここで、コピー先とコピー元とはデータブロック番号が異なるのでその対応をとらなければならないという問題が生じる。そこで、本実施形態のアグリゲートファイル管理機構8は、コピー元のデータブロック情報とコピー先のデータブロック情報を関連づけるテーブルを作成する(ステップS105)。例えば、コピー元データブロック情報を拡張してコピー先データブロックを引けるようにすればよい。このようなデータブロック変換テーブルの例を図8に示す。このデータブロック変換テーブルを用いることで、次のinodeをコピーする際にデータブロックの付け替えが可能となる。
アグリゲートファイルのコピーが終了したら、アグリゲートファイル管理機構8は、inodeのコピーを行ない(ステップS106)、親ディレクトリへの登録を行う(ステップS107)。最後に、アグリゲートファイル管理機構8は、前述のデータブロック変換テーブルを参照して、inode内のデータブロック情報をコピー先データブロックに変換する処理を行う(ステップS108)。
なお、この変換をしつつコピーすると時間が掛かる場合には、ひとまずコピー元データブロック情報のままで処理を終了させてしまってもよい。実際にデータアクセスする際には、データブロック変換テーブルを介してアクセスするようにすればよいからである。データブロック変換は、任意のタイミングで行うようにすればよい。データブロック変換が必要か(データアクセス時にデータブロック変換テーブルの参照が必要か否か)は、データブロック変換が済んでいないことを示すフラグをinode内に持つことで判定を行うようにすればよい。
図9は、本実施形態に係るファイルシステムにおいて、アグリゲートファイルを指定した一括削除コマンドが実行されたときの動作を表したフローチャートである。図9を参照すると、まず、専用APIを通じて一括削除コマンドが発行されると(ステップS201)、アグリゲートファイル管理機構8は、アグリゲートファイル10のinode情報11を参照し、記述されたすべてのinodeのLOCKと、親ディレクトリのLOCKを取る(ステップS202)。ここで、LOCKを獲得できない場合は(ステップS203の「N」)、エラー終了となる(ステップS220)。
次に、アグリゲートファイル管理機構8は、inodeが有効か、アグリゲートファイル10で持っている情報が古くないかを確認する(ステップS204)。ファイルが他のアグリゲートファイル10と多次元化(多重登録)されていたり、ハードリンクが設定されていたりする場合、そのまま削除してしまうと困るケースも考えられるからである。
上述したファイルとディレクトリのLOCKがすべて取れ、inodeの有効性を確認できた場合、アグリゲートファイル管理機構8は、データブロック情報12を参照し、すべてのデータブロックを未使用に戻す(ステップS205)。具体的な処理は、ファイルシステムによって異なる。未使用領域がビットマップ方式で管理されているファイルシステムの場合は、ビットマップを落として未使用にすればよい。この場合も、アグリゲートファイル10のデータブロック情報12をあらかじめソートしておけば、ビットマップをまとめて書き換えることができる。
一方、未使用領域がB−Tree方式で管理されているファイルシステムの場合は、B−Treeに繋げる処理を行う。B−Treeの場合には、一般にExtentという単位でデータブロックが管理されている。Extentとは1.データのファイル内オフセット、2.スタートブロック番号、3.ブロック数、の3つのフィールドを持つデータブロック管理形式である。データブロックを個々に管理するのではなく、スタートブロック番号+ブロック数なので可変長の連続ブロックを1つのExtentで管理できる。この場合も、アグリゲートファイル10のデータブロック情報12に対し、Extentのマージを行っておくことで、個々のファイルではExtentが分割(フラグメント)されているがファイルグループとすれば連続しているケースがありうるため、Extent数が減り、B−Treeにつなげる処理も高速にすることができる。
空き領域を戻す処理が終わったら、アグリゲートファイル管理機構8は、inode情報11に従いinodeを未使用にする(ステップS206)。inodeはたいていビットマップで管理されているので、まとめて書き換えができる。inodeの処理が終わったら、アグリゲートファイル管理機構8は、親ディレクトリから該当inodeエントリを削除し(ステップS207)、最後に取っていたLOCKを解放して(ステップS208)、終了となる(ステップS209)。
次に、上記アグリゲートファイルを用いることにより達成される、自由度の高いファイルのグループ化と、多次元的なグループ化(多次元性)について説明する。ファイルのグルーピングは、特許文献2にも記載されているように、例えば、「ユーザAが所有者になっているファイル」や「プロジェクトBのファイル」や「拡張子XXのファイル」のようなものが考えられる。このようにある特定の属性を持つファイルの集まり(ファイルグループと呼ぶ。)は、特定のディレクトリ配下に固まっているとは限らない。また、複数のファイルグループに属するファイルも当然ありうる。
上記説明したとおり、本発明によれば、属性A、Bを持つファイルを、それぞれの属性のアグリゲートファイルに登録することが可能となり、グルーピングの自由度、多次元性を損なうことなく、一括管理を行うことが可能となる。このようにアグリゲートファイル毎に属性を与え、一括管理できるという特徴は、冒頭に既存技術として述べたループバックマウント、アーカイブファイル(TAR)と、本発明が決定的に異なる点でもある。
なお、多次元化され、単独のファイルが複数のアグリゲートファイル10に登録されている場合、1つのアグリゲートファイル10で削除された場合に、どう対応するかは複数の考え方がある。
ハードリンク的な考え方をすれば、すべてのアグリゲートファイル10から削除された場合に、実ファイルを削除するという動きになる。例えば、実ファイル(inode内)にリンクカウンタを持っておき、いくつのアグリゲートファイル10で管理されているかカウントしておくことで、すべてのアグリゲートファイル10から削除されたことを確認することが可能となる。
多次元化されていても1つのアグリゲートファイル10から削除されたら削除してしまうという考え方もある。ある属性のファイルはすべて削除したい時に、別の属性も持っているから削除しないというのは不都合な場合が考えられる。この場合、他のアグリゲートファイル10からも削除しなければならないので、実ファイル(inode内)にアグリゲートファイル10に対する逆リンクを設定しておくことが考えられる。例えば、あるファイルが、1つのアグリゲートファイル10から削除されるときには逆リンクをたどって他のアグリゲートファイル10からも削除していくような動作となる。
また、別の方法として、実ファイルの削除はしてしまうが他のアグリゲートファイル10から削除しないでおく方式もある。その場合、アグリゲートファイル10に含まれていても実際には他のアグリゲートファイル10からの削除の時点で実ファイルが削除されているケースがありえる。もしinodeやデータブロックが他のファイルで再利用されていたら、削除によりデータ破壊をしてしまう可能性がある。その問題に対応するために、前述のようにinode情報11を実inodeとつき合わせて有効なことをチェックする必要がある。
上記した方式のいずれを採用すべきかは、冒頭に述べたサービスレベルの問題でもあり、ファイルシステムの用途や、取り扱われるデータの種類や、ライフサイクルによって適宜選択することが可能である。
以上、本発明の好適な実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、上記した実施形態では、アグリゲートファイル10はディレクトリに属さないため通常のファイルシステムAPIからは見ることができないものとして説明したが、アグリゲートファイル用のディレクトリを作ってファイルシステムAPIから見せるようにしてもよい。
その場合、アグリゲートファイルを、ファイルとしてではなくディレクトリとして見せることができる。図3を見ればわかるように、アグリゲートファイル10とディレクトリinode15は、inode情報11をリストとして持っている点では同じである。よって、図4のファイルシステムコア7にアグリゲートファイル10をディレクトリと解釈させ、アグリゲートファイル10に登録されたファイルを、実ファイルの一覧と同等に表示するように変更を加えればよい。このようにすると、ある属性を持ったファイルをディレクトリとして一覧でき、ファイルの検索や網羅性チェックに役立てることができる。
また、上記した実施形態では、索引情報としてinodeを持つUNIX(登録商標)系のシステムを前提として説明したが、同等のファイルに割り当てられたブロック情報をまとめて持つ方式(索引割付け方式)を採用するファイルシステム全般に適用することが可能である。
1a、1b ストレージ
3、3a、3b ファイルシステム
4、4a、4b ディスク
5 ファイルグループ
6 ネットワーク
7 ファイルシステムコア(ファイルシステム制御部)
8 アグリゲートファイル管理機構
9 アグリゲートファイル管理テーブル
10 アグリゲートファイル
11 inode情報
12 データブロック情報
13、14 ファイルinode
15 ディレクトリinode
20 ユーザアプリケーション
3、3a、3b ファイルシステム
4、4a、4b ディスク
5 ファイルグループ
6 ネットワーク
7 ファイルシステムコア(ファイルシステム制御部)
8 アグリゲートファイル管理機構
9 アグリゲートファイル管理テーブル
10 アグリゲートファイル
11 inode情報
12 データブロック情報
13、14 ファイルinode
15 ディレクトリinode
20 ユーザアプリケーション
Claims (16)
- 複数のファイルのファイルデータを格納しているデータブロックのアドレスのリスト(データブロック情報)と前記データブロック情報を格納しているインデックス情報のアドレスのリスト(インデックス番号情報)とを集めた仮想集合ファイルにより、該仮想集合ファイルに記述された複数のファイルを仮想的な一つのファイルとして管理する仮想集合ファイル管理機構を有し、
前記仮想集合ファイル管理機構は、前記仮想集合ファイルに対して所定のファイル操作コマンドが実行された場合に、前記仮想集合ファイルの情報を用いて、前記仮想集合ファイルに記述された複数のファイルに対して、前記コマンドに応じた一括操作を行うこと、
を特徴とするファイルシステム。 - 前記仮想集合ファイル管理機構は、前記仮想集合ファイルの作成又は更新時に、前記複数のファイルのデータブロック情報の並び替えを行うことを特徴とする請求項1に記載のファイルシステム。
- 前記仮想集合ファイル管理機構は、前記仮想集合ファイルに対するコピーコマンドが実行された場合、前記仮想集合ファイルのデータブロック情報を用いて、複数ファイルのデータブロックをまとめて読み出すことを特徴とする請求項2に記載のファイルシステム。
- 前記仮想集合ファイルに対するコピーコマンドが実行された場合、前記仮想集合ファイル管理機構は、コピー元のファイルのデータブロック情報と、コピー先のデータブロック情報とを関連付けたデータブロック変換テーブルを作成し、
前記データブロック変換テーブルを参照して、前記仮想集合ファイルに記述された個々のファイルのコピー先のインデックス情報に格納されているデータブロックのリストの書き換えを行う請求項3に記載のファイルシステム。 - 前記仮想集合ファイルに対するコピーコマンドが実行された場合、前記仮想集合ファイル管理機構は、コピー元のデータブロック情報と、コピー先のデータブロック情報とを関連付けたデータブロック変換テーブルを作成し、
前記仮想集合ファイルに記述された個々のファイルのインデックス情報のコピーを行ってから、任意のタイミングで、前記データブロック変換テーブルを参照して前記インデックス情報に格納されているデータブロックのリストの書き換えを行う請求項3に記載のファイルシステム。 - 前記仮想集合ファイルに対するコピーコマンド実行に、前記データブロック情報の書き換えを行うか否かを選択可能であり、前記データブロック情報の書き換えが完了しているか否かを、各ファイルのインデックス情報内に記録する請求項4又は5に記載のファイルシステム。
- 前記仮想集合ファイル管理機構は、前記仮想集合ファイルに対する削除コマンドが実行された場合、前記仮想集合ファイルのデータブロック情報とインデックス番号情報を用いて、複数ファイルのデータブロックとインデックス情報をまとめて削除することを特徴とする請求項1乃至6いずれか一に記載のファイルシステム。
- 前記仮想集合ファイル管理機構は、グループ化するファイルの条件の指定を受け付けると、該条件を満たすファイルを探索して仮想集合ファイルを作成する動作を行う請求項1乃至7いずれか一に記載のファイルシステム。
- 前記仮想集合ファイル管理機構は、新規ファイルが作成されると、既存の仮想集合ファイルに追加すべきか否かを確認し、追加すべきと判断した仮想集合ファイルに前記新規ファイルに関する情報を追加する動作を行う請求項1乃至8いずれか一に記載のファイルシステム。
- 前記仮想集合ファイル管理機構は、既存の仮想集合ファイルに登録されているファイルの更新が行われると、該当する仮想集合ファイルの当該ファイルのデータブロック情報を更新する動作を行う請求項1乃至9いずれか一に記載のファイルシステム。
- 前記仮想集合ファイルに記述されたファイルの総サイズを計算し、前記仮想集合ファイルに記述する請求項1乃至10いずれか一に記載のファイルシステム。
- 前記仮想集合ファイルをファイルの一覧として解釈し、実ファイルの一覧と同等に表示する機能を有する請求項1乃至11いずれか一に記載のファイルシステム。
- 複数のファイルのファイルデータを格納しているデータブロックのアドレスのリスト(データブロック情報)と前記データブロック情報を格納しているインデックス情報のアドレスのリスト(インデックス番号情報)とを集めた仮想集合ファイルにより、該仮想集合ファイルに記述された複数のファイルを仮想的な一つのファイルとして管理する仮想集合ファイル管理機構としてコンピュータを機能させ、
前記仮想集合ファイルに対して所定のファイル操作コマンドが実行された場合に、前記仮想集合ファイルの情報を用いて、前記仮想集合ファイルに記述された複数のファイルに対して、前記コマンドに応じた一括操作を前記コンピュータに実行させるプログラム。 - 前記仮想集合ファイル管理機構として機能するコンピュータに、前記仮想集合ファイルの作成又は更新時に、前記複数のファイルのデータブロック情報の並び替えを行わせることを特徴とする請求項13に記載のプログラム。
- 所定の記憶装置に保存されたファイルの管理方法であって、
コンピュータに、複数のファイルのファイルデータを格納しているデータブロックのアドレスのリスト(データブロック情報)と前記データブロック情報を格納しているインデックス情報のアドレスのリスト(インデックス番号情報)とを集めた仮想集合ファイルを作成させ、
前記仮想集合ファイルに対して所定のファイル操作コマンドが実行された場合に、前記コンピュータに、前記仮想集合ファイルの情報を用いて、前記仮想集合ファイルに記述された複数のファイルに対して、前記コマンドに応じた一括操作を実行させ、
前記仮想集合ファイルに記述された複数のファイルを仮想的な一つのファイルとして管理させることを特徴とするファイルの管理方法。 - 前記コンピュータに、前記仮想集合ファイルの作成又は更新時に、前記複数のファイルのデータブロック情報の並び替えを行わせることを特徴とする請求項15に記載のファイルの管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007340533A JP2009163367A (ja) | 2007-12-28 | 2007-12-28 | ファイルシステム、プログラム及びファイルの管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007340533A JP2009163367A (ja) | 2007-12-28 | 2007-12-28 | ファイルシステム、プログラム及びファイルの管理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009163367A true JP2009163367A (ja) | 2009-07-23 |
Family
ID=40965939
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007340533A Withdrawn JP2009163367A (ja) | 2007-12-28 | 2007-12-28 | ファイルシステム、プログラム及びファイルの管理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009163367A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101738078B1 (ko) | 2014-08-25 | 2017-05-19 | 바이두 온라인 네트웍 테크놀러지 (베이징) 캄파니 리미티드 | 파일 스캐닝 방법 및 장치 |
-
2007
- 2007-12-28 JP JP2007340533A patent/JP2009163367A/ja not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101738078B1 (ko) | 2014-08-25 | 2017-05-19 | 바이두 온라인 네트웍 테크놀러지 (베이징) 캄파니 리미티드 | 파일 스캐닝 방법 및 장치 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7257690B1 (en) | Log-structured temporal shadow store | |
US6651075B1 (en) | Support for multiple temporal snapshots of same volume | |
US7930559B1 (en) | Decoupled data stream and access structures | |
US7640262B1 (en) | Positional allocation | |
JP5082310B2 (ja) | データ移行装置及びプログラム | |
US7720892B1 (en) | Bulk updates and tape synchronization | |
JP4568115B2 (ja) | ハードウェアベースのファイルシステムのための装置および方法 | |
JP4787315B2 (ja) | データコンテナの中身をクラスタの複数のボリュームにわたってストライピングするためのストレージシステム・アーキテクチャ | |
US7673099B1 (en) | Affinity caching | |
JP6001656B2 (ja) | ファイル/オブジェクトデュアリティをサポートする統合ストレージシステムを提供するためのシステム及び方法 | |
JP5291456B2 (ja) | ストレージシステム・アーキテクチャ内のデータ・アロケーション | |
JP5411250B2 (ja) | 冗長データ記憶システムへの指示に従ってのデータ配置 | |
US8392685B2 (en) | Arrangements for managing metadata of an integrated logical unit including differing types of storage media | |
US7395389B2 (en) | Extending non-volatile storage at a computer system | |
US8280858B2 (en) | Storage pool scrubbing with concurrent snapshots | |
JP5589205B2 (ja) | 計算機システム及びデータ管理方法 | |
JP4615344B2 (ja) | データ処理システム及びデータベースの管理方法 | |
US20040107225A1 (en) | Mechanism for replicating and maintaining files in a spaced-efficient manner | |
CN105718548A (zh) | 基于去重复存储系统中用于可扩展引用管理的系统和方法 | |
US20060212495A1 (en) | Method and system for storing data into a database | |
JP2005510780A (ja) | コンピュータシステム間でのオブジェクトの共有 | |
CN108319654A (zh) | 计算系统、冷热数据分离方法及装置、计算机可读存储介质 | |
JP2007018399A (ja) | 条件別スナップショット取得方法及びシステム | |
JP6094267B2 (ja) | ストレージシステム | |
KR102264119B1 (ko) | CaseDB: 엣지컴퓨팅을 위한 저비용 Put-Intensive 키-벨류 저장장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20110301 |