(57)【特許請求の範囲】
【請求項１】
ファイルをファイルのメタデータとファイル本体とに分割して相互に関連付けて記録し、かつ、新たなファイルの書き込みは追記であって既に書き込まれているファイルの更新または削除が伴わないストレージの形式である、マウントされているストレージについて、ファイル(のメタデータ)を分類する方法であって、
マウントされているストレージ中に存在しているファイルについて、それがマウントされる前から既にストレージ中に存在していたものであるかどうかを判断するステップと、
マウントされる前から既にストレージ中に存在していたものと判断されるファイルについては、そのファイル(のメタデータ)を、（ＷＯＲＭファイルとして）ファイルの更新または削除を拒絶する、第１グループとして分類するステップと、
マウントされた後に書き込まれたファイルについては、そのファイル(のメタデータ)を、（Ｒ／Ｗファイルとして）ファイルの更新／削除を許容する、第２グループとして分類するステップと、を有し、
これらのステップをコンピュータに実行させる、
方法。
【請求項２】
ストレージがマウントされる際に、ストレージ中にある全てのインデックスを読み出して、全てのインデックスについて、前記判断するステップ、前記第１グループとして分類するステップ、および、前記第２グループとして分類するステップを実行する、
請求項１に記載の方法。
【請求項３】
さらに、
第１グループとして分類された結果、および、第２グループとして分類された結果をテーブルに記憶するステップを有する、
請求項２に記載の方法。
【請求項４】
テーブルがハッシュテーブルである、
請求項３に記載の方法。
【請求項５】
前記判断するステップが、インデックスに記録されているところの、追記で書き込まれた順に振られる一意に増加するＩＤ（ＵＩＤ）に基づいて、そのＵＩＤと比較して大きいかどうかによって判断されて実行される、
請求項１に記載の方法。
【請求項６】
さらに、
マウントされているストレージに対する外部からの書き込みアクセスに対して、
アクセスの対象が、第１のグループに属すると判断される場合には、ファイルの更新または削除を拒絶するステップと、
アクセスの対象が、第２のグループに属すると判断される場合には、ファイルの更新／削除を許容するステップと、を有する、
請求項１に記載の方法。
【請求項７】
マウントされているストレージがテープメディアである、
請求項１に記載の方法。
【請求項８】
ファイルをファイルのメタデータとファイルの本体とに分割して相互に関連付けて記録し、かつ、新たなファイルの書き込みは追記であって既に書き込まれているファイルの更新または削除が伴わないストレージの形式である、マウントされているストレージについて、ファイル(のメタデータ)を分類するシステムであって、
マウントされているストレージ中に存在しているファイルについて、それがマウントされる前から既にストレージ中に存在していたものであるかどうかを判断し、
マウントされる前から既にストレージ中に存在していたものと判断されるファイルについては、そのファイル(のメタデータ)を、（ＷＯＲＭファイルとして）ファイルの更新または削除を拒絶する、第１グループとして分類し、
マウントされた後に書き込まれたファイルについては、そのファイル(のメタデータ)を、（Ｒ／Ｗファイルとして）ファイルの更新／削除を許容する、第２グループとして分類する、
システム。
【請求項９】
マウントされているストレージに対する外部からのアクセスに対して、
アクセスの対象が、第１のグループに属すると判断される場合には、ファイルの更新または削除を拒絶し、
アクセスの対象が、第２のグループに属すると判断される場合には、ファイルの更新／削除を許容する、
請求項８に記載のシステム。
【請求項１０】
ファイルの更新または削除を拒絶する際に、外部からのアクセスに対してエラーを返す、
請求項９に記載のシステム。
【請求項１１】
マウントされるストレージがテープメディアであり、
第１グループとして分類された結果、および、第２グループとして分類された結果を記憶する、テーブルをさらに有する、
請求項８に記載のシステム。
【請求項１２】
ファイルをファイルのメタデータとファイル本体とに分割して相互に関連付けて記録し、かつ、新たなファイルの書き込みは追記であって既に書き込まれているファイルの更新または削除が伴わないストレージの形式である、マウントされているストレージについて、ファイル(のメタデータ)を管理するためのテーブルであって、
マウントされる前から既にストレージ中に存在していたものと判断されるファイルについては、そのファイル(のメタデータ)を、ＷＯＲＭグループに登録する第１の構造と、
マウントされた後に書き込まれたファイルについては、そのファイル(のメタデータ)を、Ｒ／Ｗグループに登録する第２の構造と、を含み、
コンピュータが、前記テーブルを使用して、前記ＷＯＲＭグループに含まれるファイルを（ＷＯＲＭファイルとして）更新または削除を拒絶し、前記Ｒ／Ｗグループに含まれるファイルを（Ｒ／Ｗファイルとして）更新または削除を許容する、
テーブル。
【請求項１３】
テーブルがハッシュテーブルである、
請求項１２に記載のテーブル。
【請求項１４】
請求項１〜７の何れかに記載の方法の各ステップをコンピュータに実行させる、
プログラム。
【請求項１５】
ファイルをファイルのメタデータとファイル本体とに分割して相互に関連付けて記録し、かつ、新たなファイルの書き込みは追記であって既に書き込まれているファイルの更新または削除が伴わないストレージの形式である、マウントされているストレージについて、ファイルの更新／削除のアクセスについての判断を実行する方法であって、
そのファイル(のメタデータ)に基づき、マウントされる前から既にストレージ中に存在していたものと判断されるファイルについては、（ＷＯＲＭファイルとして）ファイルの更新または削除を拒絶するステップと、
そのファイル(のメタデータ)に基づき、マウントされた後に書き込まれたファイルについては、（Ｒ／Ｗファイルとして）ファイルの更新／削除を許容するステップと、を有し、
これらのステップをコンピュータに実行させる、
方法。
【請求項１６】
ファイルをファイルのメタデータとファイルの本体とに分割して相互に関連付けて記録し、かつ、新たなファイルの書き込みは追記であって既に書き込まれているファイルの更新または削除が伴わないストレージの形式である、マウントされているストレージについて、ファイルの更新／削除のアクセスについての判断を実行するシステムであって、
そのファイル(のメタデータ)に基づき、マウントされる前から既にストレージ中に存在していたものと判断されるファイルについては、（ＷＯＲＭファイルとして）ファイルの更新または削除を拒絶し、
そのファイル(のメタデータ)に基づき、マウントされた後に書き込まれたファイルについては、（Ｒ／Ｗファイルとして）ファイルの更新／削除を許容する、
システム。
【請求項１７】
ファイルをファイルのメタデータとファイル本体とに分割して相互に関連付けて記録し、かつ、新たなファイルの書き込みは追記であって既に書き込まれているファイルの更新または削除が伴わないストレージの形式である、マウントされているストレージについて、ファイル(のメタデータ)に基づき、ファイルの更新または拒絶のアクセスについての判断に用いられるテーブルであって、
そのファイル(のメタデータ)に基づき、マウントされる前から既にストレージ中に存在していたものと判断されるファイルを、ＷＯＲＭグループに登録する第１の構造と、
マウントされた後に書き込まれたファイルについては、そのファイル(のメタデータ)を、Ｒ／Ｗグループに登録する第２の構造と、を含み、
コンピュータが、前記テーブルを使用して、ＷＯＲＭグループに登録されるファイルに対するファイルの更新または削除を拒絶するように判断し、Ｒ／Ｗグループに登録されるファイルに対する更新または削除を許容するように判断する、
テーブル。
【請求項１８】
ファイルをファイルのメタデータとファイル本体とに分割して相互に関連付けて記録し、かつ、新たなファイルの書き込みは追記であって既に書き込まれているファイルの更新または削除が伴わないストレージの形式である、マウントされているストレージについて、ファイルの更新／削除のアクセスについての判断を実行する方法であって、
マウントされているストレージが、WORMメディアであるか否かを判断するステップと
、
マウントされているストレージがWORMメディアであると判断される場合には、マウントされる前に前記ストレージに記録されていたファイルを、（WORMファイルとして）ファイルの更新／削除を拒絶し、マウント後に作成したファイルをR/Wファイルとしてファイルの更新または削除を許容するステップを、
コンピュータに実行させる、
方法。
【請求項１９】
ファイルをファイルのメタデータとファイルの本体とに分割して相互に関連付けて記録し、かつ、新たなファイルの書き込みは追記であって既に書き込まれているファイルの更新または削除が伴わないストレージの形式である、マウントされているストレージについて、ファイルの更新／削除のアクセスについての判断を実行するシステムであって、
マウントされているストレージが、WORMメディアであるか否かを判断し、
マウントされているストレージがWORMメディアであると判断される場合には、マウントされる前に前記ストレージに記録されていたファイルを、（WORMファイルとして）ファイルの更新／削除を拒絶し、マウント後に作成したファイルをR/Wファイルとしてファイルの更新または削除を許容する、
システム。
【請求項２０】
WORMメディア上のファイルについて、マウントされた後に作成されたファイルへの更新／削除を拒絶することがないように、
WORMメディアであり、かつ、マウントされる前に記録されていたファイルのみ WORM ファイルと見做すことを特徴とする、
請求項１８に記載の方法。
【請求項２１】
WORMメディア上のファイルについて、マウントされた後に作成されたファイルへの更新／削除を拒絶することがないように、
WORMメディアであり、かつ、マウントされる前に記録されていたファイルのみ WORM ファイルと見做すことを特徴とする、
請求項１９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、WORM (Write Once Read Many) を実現するファイルシステム（以下、「 WORM ファイルシステム 」と呼ぶ ）に関するものである。
【背景技術】
【０００２】
LTO テープドライブや IBM (IBM Corporationの商標) エンタープライズテープドライブ TS1140 などが利用するテープメディアは R/W メディアと呼ばれる一般的なテープメディアの他に、WORM メディアと呼ばれる一度書き込まれたデータは二度と消すことのできない、言わば CD-R のような使われ方をするテープメディアが存在する。
【０００３】
悪意を持った第三者が WORM メディアに書き込まれたデータの改竄を試みた場合、テープドライブは WORM メディアに書き込まれたデータの読み出し時に改竄を検知する機能を持っている。
【０００４】
IBM (IBM Corporationの商標) はテープデバイス上で動作するファイルシステムとして、LTFS (Linear Tape File System) という名称の製品を持っている。
【０００５】
一部のバージョンは、Web上から無償でダウンロードできるようになっており、また別のバージョンは価格が設定され有償で販売されている。
【０００６】
LTFS はオープン規格であり、複数の会社が LTFS の規格を用いた製品を用いたビジネスを行っている。
【０００７】
テープメディアを LTFS で利用する場合、テープメディアをインデックス区分 (IP:Index Partition) および データ区分 (DP: DataPartition) と呼ばれる 2 つのパーティションに分割して利用する。
【０００８】
ユーザが LTFS を利用してテープメディアに新たなファイルの書き込みを行うと、データ区分(DP) は主にファイル本体を保存する領域として利用され、インデックス区分(IP)は主にインデックスを保存するための領域として利用されてインデックスと呼ばれるメタデータが書き込まれる。
【０００９】
インデックスは、ファイルのメタデータとして、ファイル名やファイル作成日などの情報を持つ。
【００１０】
インデックス区分 (IP)には、典型的には、最新のインデックスが書き込まれる。
【００１１】
データ区分 (DP)には、典型的には、ファイルの本体の他にも、インデックスの履歴が書き込まれる。
【００１２】
WORM メディア上で、いまある LTFS を利用することを考えると、WORM メディア上に記録されたデータを消すことはできないものの、WORM メディア上に記録されたファイル (ディレクトリを含む。以下、同様) の改竄、及び、消去は行うことができる。
【００１３】
なぜなら、LTFS におけるファイルの改竄、消去は、ファイル本体ないしメタ情報の新たなる追記で実現され、WORM メディア上に記録されたデータの削除は伴わないからである。
【００１４】
WORM ファイルシステムを実現する従来技術としては、以下のようなものがある。
【００１５】
特許文献１は、ストレージ上に保存された bit 列のみならず、WORM メディア上でファイル自体の改竄/消去も拒絶する WORM ファイルシステムに関する技術である。
【００１６】
そのタイトルは、WRITE-ONCE-READ-MANY STORAGE SYSTEM AND METHOD FOR IMPLEMENTING THESAME というものである。
【００１７】
特許文献１では、ファイル毎にWORMを実現するためにWORM bit という属性を用意し、WORM bit を立てる前はファイルの更新/削除を可能とし、WORM bit を立てた後はファイルの更新/削除を拒絶する仕組みである。
【００１８】
テープメディアの容量は年々増加しており、例えば TS1140 が利用する JC テープメディアの容量は 4TB である。
【００１９】
LTFS の利用にあたっては、平均ファイルサイズが 10 KB 程度のファイルを多量にテープメディアに書き込みたいという要望もある。
【００２０】
特に多量のファイルをテープメディア保存する場合、ファイル毎に WORM を実現するためにbit を用意するとなると、WORM bit の更新所要時間、及び、メタデータに占める WORM bit の容量は無視できなくなる。
【００２１】
容量 4TB のテープメディアにファイルサイズ 10 KB のファイルを保存すると、テープメディア当たりのファイル数は 4 億個となり、XML で保存される WORM を実現するための属性 (<worm>0</worm>) の長さを改行コード含め 15 byte と仮定すると、ファイルが 4 億個あるときのメタデータに占める WORM bit の容量は 6 GB となる。
【００２２】
さらに、この情報を 250 MB/sec でテープメディアから読み出すのに、ないしは、書き込むのに 24 秒かかる。
【００２３】
特許文献２は、WORMの実現にあたって、明示的に WORM 化コマンドを実行することによりファイルないしディレクトリを WORM 化する発明であり、以下に説明する本発明とは異なる。
【先行技術文献】
【特許文献】
【００２４】
【特許文献１】米国特許ＵＳ７１５５４６０Ｂ２  特許公表２００６−５２４３９２（この米国特許出願を優先権主張の基礎としたＰＣＴ国際出願のＪＰ国内公表、この米国特許出願のファミリー出願）
【特許文献２】特許公開２００６−２２８０５６
【発明の概要】
【発明が解決しようとする課題】
【００２５】
本発明の目的は、従来技術における更新所要時間及び容量の問題を改良したWORM (Write Once Read Many) ファイルシステムを提供することにある。
【課題を解決するための手段】
【００２６】
本発明では、ファイルシステムにストレージをマウントするにあたり、マウント時に既に存在するファイルとマウント後に作成されたファイルを別グループとして扱う。
【００２７】
マウント時に存在するファイルは WORM ファイルとして更新/削除の要求を拒絶し、マウント後に作成されたファイルはアンマウント時までファイルの更新/削除を許容することにより、WORM ファイルシステムを実現する。
【発明の効果】
【００２８】
本発明に従えば、テープメディアに 4 億個のファイルが保存されている場合、Background で述べた通り、従来技術に比べインデックスの容量を 6GB 削減し、テープメディアをファイルシステムにマウントないしアンマウントするための所要時間を 24 秒削減できる。
【図面の簡単な説明】
【００２９】
【図１】図１は、ストレージのマウントについて説明する図である。
【図２】図２は、テープメディアを LTFS で利用するために、テープメディアをインデックス区分 (IP:Index Partition) および データ区分 (DP: DataPartition) と呼ばれる 2 つのパーティションに分割して利用するフォーマットを示す模式図である。
【図３】図３は、図２のフォーマットに対して、新たなファイルを書き込んだ状態を示す模式図である。
【図４】図４は、マウント時 IP よりインデックスを読み出しデータ構造に格納する流れをフローチャートに示す図である。
【図５】図５は、本発明であるデータ構造（テーブル）を示す図である。
【図６】図６は、マウントされているストレージに対する外部からの書き込みアクセスを処理する流れをフローチャートに示す図である。
【図７】図７は、本発明に関わる、ファイル種別とメディア種別との相互関係を示すマトリックスである。
【発明を実施するための形態】
【００３０】
図１は、ストレージのマウントについて説明する図である。
【００３１】
ストレージメディアの例としては、テープメディアがある。
【００３２】
ストレージメディアはストレージドライブに「マウント」される。
【００３３】
ストレージドライブの例としては、テープドライブがある。
【００３４】
本発明において「マウントされている」状態とは、ストレージメディアに対して外部からのアクセスが可能な状態である。
【００３５】
従って、「マウントされているストレージ」という用語は、マウントされていないストレージとの対比においてのみ技術的な意義があり、かかる点で広く解釈されるべき用語である。
【００３６】
図１の例では、図示する（Ａ）の状態から図示する（Ｂ）の状態になることで、テープメディアに対するアクセスがＲＥＡＤＹの状態になる。
【００３７】
実際には、テープメディアを物理的に巻き取りながらテープメディア中の所望の記録箇所を特定して、テープドライブに備えられたヘッドを通じて書き込みが行われる。
【００３８】
LTFS がファイルのインデックスを管理するにあたり、従来はファイルがマウント時に既に存在したかマウント後に作成されたかによらず 1 つのデータ構造で管理していた。
【００３９】
図２は、テープメディアを LTFS で利用するために、テープメディアをインデックス区分 (IP:Index Partition) および データ区分 (DP: DataPartition) と呼ばれる 2 つのパーティションに分割して利用するフォーマットを示す模式図である。
【００４０】
フォーマットされたフォーマット後の状態で、まだファイルの書き込みがない状態を示しており、「フォーマット後のインデックス」が書き込まれている。
【００４１】
図３は、図２のフォーマットに対して、新たなファイルを書き込んだ状態を示す模式図である。
【００４２】
インデックス区分（ＩＰ）における「フォーマット後のインデックス」が、「File 1 およびFile 2 のメタデータを含むインデックス」に更新されて、「最新のインデックス」に変わっている。
【００４３】
しかし、データ区分（ＤＰ）における新たなファイル(File1, File2)の書き込みは、追記であって、既に書き込まれているファイルの更新または削除が伴わないことに注目されたい。
【００４４】
ここでは、ファイルをファイルのメタデータとファイル本体とに分割しているものの、それらが相互に関連付けて記録されている。
【００４５】
具体的には、インデックス区分（ＩＰ）における「フォーマット後のインデックス」が、「File 1 およびFile 2 のメタデータを含むインデックス」に更新されて、「最新のインデックス」に変わっているだけでなく、データ区分（ＤＰ）においても「File 1 およびFile 2 のメタデータを含むインデックス」が追記されて記録されているため、相互の関連性が記録されたままになる。
【００４６】
このようなストレージの形式が、本発明を適用することが有効となるストレージの形式である。
【００４７】
図４は、マウント時 IP よりインデックスを読み出しデータ構造に格納する流れをフローチャートに示す図である。
【００４８】
１００において、マウントを開始する。
【００４９】
２００において、マウントされているストレージ中に存在しているファイルについて、IP よりインデックスを読み出す。
【００５０】
３００において、WORM メディアであるのか、それとも R/W メディアであるのかを判断する。
【００５１】
３００における判断結果として、Ｙｅｓとしてマウントされる前から既にストレージ中に存在していたものと判断されるファイルについては、４００において、そのファイルのメタデータを、（ＷＯＲＭファイルとして）ファイルの更新または削除を拒絶する、第１グループとして分類する。
【００５２】
３００における判断結果として、Ｎｏとしてマウントされた後に書き込まれたファイルについては、５００において、そのファイルのメタデータを、（Ｒ／Ｗファイルとして）ファイルの更新／削除を許容する、第２グループとして分類する。
【００５３】
ストレージがマウントされる際に、ストレージ中にある全てのインデックスを読み出して、全てのインデックスについて、これらの分類を繰返してしまってもよい。
【００５４】
６００において、マウントを終了するが、マウント後に作成したファイルに関するインデックスは、テープメディアが WORM メディアか R/W メディアかによらず、常に R/W グループに登録する。
【００５５】
また、LTFS では各ファイルが UID と呼ばれる作成順に振られる一意に増加する ID を持っているので、データ構造自体は 1 つに統一し、各ファイルの UID の値がマウント時の最大 UID と比較し大きいかどうかで R/W グループか WORM グループかを判別しても良い。
【００５６】
本発明では、インデックスを管理するデータ構造を WORM グループと R/W グループという名の 2 つのデータ構造 (例えばハッシュテーブル) に分割して管理する。
【００５７】
図５は、本発明であるデータ構造（テーブル）を示す図である。
【００５８】
図４のフローチャートに従って分類された結果は、このデータ構造（テーブル）をもってファイルシステム中のメモリ（図１）中に記憶すればよい。
【００５９】
もちろん、ファイルシステム中だけでなく、ファイルシステムに接続されたテーブル（図示せず）に記憶しておいてもよい。
【００６０】
分類されたデータ構造としても、本発明としての特徴が現われている。
【００６１】
図６は、マウントされているストレージに対する外部からの書き込みアクセスを処理する流れをフローチャートに示す図である。
【００６２】
７００において、ファイルへのデータの追加、更新、削除要求、及び、ファイルのメタ情報 (ファイル名など) の更新要求が行われる。
【００６３】
８００において、そのファイルのインデックスが R/W グループに登録されているかどうかを判断する。
【００６４】
R/W グループに登録されていれば、９００において、従来通り変更/削除を許容する。
【００６５】
一方、そのファイルのインデックスが WORM グループに登録されていれば、１０００において、変更/削除を拒絶し、エラーを返す。
【００６６】
ディレクトリへのファイル/ディレクトリの追加は、ディレクトリのインデックスが登録されているグループによらず許容する。
【００６７】
ディレクトリ名の変更及びディレクトリの削除は、そのディレクトリのインデックスが R/W グループに登録されていれば従来通り変更/削除を許容する。
【００６８】
一方、そのディレクトリのインデックスが WORM グループに登録されていれば、ディレクトリ名の変更およびディレクトリ自体削除は拒絶し、エラーを返す。
【００６９】
本発明を適用することにより、インデックスに新たな情報を付加することなく WORM ファイルシステムを構築できる。
【００７０】
例えばテープメディアに 4 億個のファイルが保存されている場合、背景技術で述べた通り、従来技術に比べインデックスの容量を 6GB 削減し、テープメディアをファイルシステムにマウントないしアンマウントするための所要時間を 24 秒削減できる。
【００７１】
以上、本発明の実施例としては LTFS をベースに説明した。
【００７２】
しかし、当然のことながら、当業者であれば、本発明は LTFS に限らず任意のファイルシステムに適用可能である。
【００７３】
方法のカテゴリーに限らず、方法を実施するためのコンピュータプログラムとしても具現化することができる。
【００７４】
図７は、本発明に関わる、ファイル種別とメディア種別との相互関係を示すマトリックスである。
【図１】
0006008820.tif 000002
【図２】
0006008820.tif 000003
【図３】
0006008820.tif 000004
【図４】
0006008820.tif 000005
【図５】
0006008820.tif 000006
【図６】
0006008820.tif 000007
【図７】
0006008820.tif 000008