(57)【特許請求の範囲】
【請求項１】
データの記憶領域を提供する記憶デバイスと、前記記憶領域へのデータの書き込み及び読み出しを制御する制御装置と、を備え、一つ以上の計算機に接続されるストレージシステムであって、
前記制御装置は、
第１ファイル識別子の指定を含む、第１ソフトウェアによって作成された第１データの格納要求を受信すると、前記記憶領域の第１位置に前記第１データを格納し、
前記第１ファイル識別子と、前記第１位置と、前記データの保管期限と、前記第１データが元のデータであることを示す所定の第１バージョン情報と、を対応付ける情報を保持し、
前記第１ファイル識別子、及び、前記元のデータを変更することによって作成されたデータを識別する第２バージョン情報の指定を含む、前記第１データを第２ソフトウェアが利用可能となるように変更することによって作成された第２データの格納要求を受信すると、前記記憶領域の第２位置に前記第２データを格納し、
前記第１ファイル識別子と、前記第２位置と、前記第２バージョン情報と、を対応付ける情報を保持し、
前記データの保管期限が経過する前に前記第１データを変更することを禁止し、
前記データの保管期限が経過する前に、前記第１ファイル識別子に対応付けられた前記第２位置に格納された前記第２データを変更することを禁止し、
前記計算機から、前記第１ファイル識別子及び前記第１バージョン情報の指定を含むデータ削除要求を受信した場合、前記第１ファイル識別子と、前記第１位置と、前記第１バージョン情報と、を対応付ける情報、及び、前記第１データを削除せず、
前記計算機から、前記第１ファイル識別子及び前記第２バージョン情報の指定を含むデータ削除要求を受信した場合、前記第１ファイル識別子と、前記第２位置と、前記第２バージョン情報と、を対応付ける情報を削除することを特徴とするストレージシステム。
【請求項２】
前記制御装置は、さらに、
前記第１位置及び前記第２位置を含む前記記憶領域の複数の位置の各々と、前記ストレージシステムに接続された前記各計算機の識別子と、を対応付ける情報を保持し、
前記計算機から前記第１ファイル識別子の指定を含むデータ参照要求を受信すると、前記第１ファイル識別子に対応付けられた前記複数の位置のうち、前記参照要求を送信した前記計算機の識別子と対応付けられた位置に格納されたデータを読み出し、
前記読み出されたデータを前記計算機に送信することを特徴とする請求項１に記載のストレージシステム。
【請求項３】
前記制御装置は、さらに、
前記第１位置及び前記第２位置を含む前記記憶領域の複数の位置の各々と、ソフトウェアの識別子と、を対応付ける情報を保持し、
前記計算機から、前記第１ファイル識別子及び前記ソフトウェアの識別子の指定を含むデータ参照要求を受信すると、前記第１ファイル識別子に対応付けられた前記複数の位置のうち、前記指定されたソフトウェアの識別子に対応付けられた位置に格納されたデータを読み出し、
前記読み出されたデータを前記計算機に送信することを特徴とする請求項１に記載のストレージシステム。
【請求項４】
前記制御装置は、さらに、
前記第１位置及び前記第２位置を含む前記記憶領域の複数の位置の各々と、ソフトウェアの識別子と、を対応付ける情報を保持し、
前記計算機から、第１ソフトウェア識別子及び第２ソフトウェア識別子の指定を含むリスト作成要求を受信すると、前記第１ファイル識別子に対応付けられた前記記憶領域の複数の位置に対応付けられた複数の前記ソフトウェアの識別子が、前記第１ソフトウェア識別子を含み、かつ、前記第２ソフトウェア識別子を含まない場合、前記第１ファイル識別子を前記計算機に送信することを特徴とする請求項１に記載のストレージシステム。
【請求項５】
前記制御装置は、さらに、前記第１データ及び前記第２データに共通する属性を示す情報を保持することを特徴とする請求項１に記載のストレージシステム。
【請求項６】
前記属性を示す情報は、前記第１ファイル識別子によって識別されるファイルへのユーザごとのアクセスの許可又は禁止を制御する情報であることを特徴とする請求項５に記載のストレージシステム。
【請求項７】
データの記憶領域を提供する記憶デバイスと、前記記憶領域へのデータの書き込み及び読み出しを制御する制御装置と、を備え、一つ以上の計算機に接続されるストレージシステムにおいてデータを管理する方法であって、
前記方法は、
前記制御装置が、第１ファイル識別子の指定を含む、第１ソフトウェアによって作成された第１データの格納要求を受信すると、前記記憶領域の第１位置に前記第１データを格納する手順と、
前記制御装置が、前記第１ファイル識別子と、前記第１位置と、前記データの保管期限と、前記第１データが元のデータであることを示す所定の第１バージョン情報と、を対応付ける情報を保持する手順と、
前記制御装置が、前記第１ファイル識別子、及び、前記元のデータを変更することによって作成されたデータを識別する第２バージョン情報の指定を含む、前記第１データを第２ソフトウェアが利用可能となるように変更することによって作成された第２データの格納要求を受信すると、前記記憶領域の第２位置に前記第２データを格納する手順と、
前記制御装置が、前記第１ファイル識別子と、前記第２位置と、前記第２バージョン情報と、を対応付ける情報を保持する手順と、
前記制御装置が、前記データの保管期限が経過する前に前記第１データを変更することを禁止する手順と、
前記制御装置が、前記データの保管期限が経過する前に、前記第１ファイル識別子に対応付けられた前記第２位置に格納された前記第２データを変更することを禁止する手順と、
前記制御装置が、前記計算機から、前記第１ファイル識別子及び前記第１バージョン情報の指定を含むデータ削除要求を受信した場合、前記第１ファイル識別子と、前記第１位置と、前記第１バージョン情報と、を対応付ける情報、及び、前記第１データを削除しないことを示す情報を送信する手順と、
前記制御装置が、前記計算機から、前記第１ファイル識別子及び前記第２バージョン情報の指定を含むデータ削除要求を受信した場合、前記第１ファイル識別子と、前記第２位置と、前記第２バージョン情報と、を対応付ける情報を削除する手順と、を含むことを特徴とする方法。
【請求項８】
前記制御装置には、前記第１位置及び前記第２位置を含む前記記憶領域の複数の位置の各々と、前記ストレージシステムに接続された前記各計算機の識別子と、を対応付ける情報が保持され、
前記方法は、さらに、前記制御装置が、前記計算機から前記第１ファイル識別子の指定を含むデータ参照要求を受信すると、前記第１ファイル識別子に対応付けられた前記複数の位置のうち、前記参照要求を送信した前記計算機の識別子と対応付けられた位置に格納されたデータを読み出して、前記読み出されたデータを前記計算機に送信する手順を含むことを特徴とする請求項７に記載の方法。
【請求項９】
前記制御装置には、前記第１位置及び前記第２位置を含む前記記憶領域の複数の位置の各々と、ソフトウェアの識別子と、を対応付ける情報が保持され、
前記方法は、さらに、前記制御装置が、前記計算機から、前記第１ファイル識別子及び前記ソフトウェアの識別子の指定を含むデータ参照要求を受信すると、前記第１ファイル識別子に対応付けられた前記複数の位置のうち、前記指定されたソフトウェアの識別子に対応付けられた位置に格納されたデータを読み出して、前記読み出されたデータを前記計算機に送信する手順を含むことを特徴とする請求項７に記載の方法。
【請求項１０】
前記制御装置には、前記第１位置及び前記第２位置を含む前記記憶領域の複数の位置の各々と、ソフトウェアの識別子と、を対応付ける情報が保持され、
前記方法は、さらに、前記制御装置が、前記計算機から、第１ソフトウェア識別子及び第２ソフトウェア識別子の指定を含むリスト作成要求を受信すると、前記第１ファイル識別子に対応付けられた前記記憶領域の複数の位置に対応付けられた複数の前記ソフトウェアの識別子が、前記第１ソフトウェア識別子を含み、かつ、前記第２ソフトウェア識別子を含まない場合、前記第１ファイル識別子を前記計算機に送信する手順を含むことを特徴とする請求項７に記載の方法。
【請求項１１】
前記制御装置には、さらに、前記第１データ及び前記第２データに共通する属性を示す情報が保持されることを特徴とする請求項７に記載の方法。
【請求項１２】
前記属性を示す情報は、前記第１ファイル識別子によって識別されるファイルへのユーザごとのアクセスの許可又は禁止を制御する情報であることを特徴とする請求項１１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願明細書に開示される技術は、コンテンツ、特に非構造化フィックス・コンテンツをアーカイブするストレージシステムにおける、データの管理方法に関する。
【背景技術】
【０００２】
多様なデータアーカイブ法が多数知られている中で、いずれの方法にも何がしかの欠点がある。最近まで、テープによるアーカイブが最も一般的なデータアーカイブ法であった。しかし、テープによるアーカイブはしばしばアクセスが難しく、アーカイブデータの迅速で容易な取り出しができない。この理由で、アーカイブ媒体として、より迅速かつ容易にアーカイブデータにアクセスすることが可能なディスクアレイを選択することが、より一般的になっている。
【０００３】
フィックス・コンテンツ・アウェアストレージ（ＦＣＡＳ：Ｆｉｘｅｄ  Ｃｏｎｔｅｎｔ  Ａｗａｒｅ  Ｓｔｏｒａｇｅ）は、多様なネーミングスキーマに基づく不変データ（フィックス・コンテンツ）及び関連するメタデータのストレージとして、ＳＮＩＡ（ストレージネットワーク工業会）によって一般的に定義されており、コンテンツ・アドレッサブルストレージ（ＣＡＳ）及びコンテンツに無関係なグローバルな識別子（例えば、ｗｗｗ．ｓｎｉａ．ｏｒｇを参照）を含む。ストレージ業界では、ＣＡＳは時としてコンテンツ・アドレスストレージ（ｃｏｎｔｅｎｔ  ａｄｄｒｅｓｓｅｄ  ｓｔｏｒａｇｅ）、コンテンツ・アウェアストレージ、或いはコンテンツ・アーカイブストレージとも呼ばれる。
【０００４】
ＣＡＳに於いて、データは、標準のファイルとして処理されるのではなく、ファイルとメタデータとから成るオブジェクトとして扱われる。データ（ファイル）にはメタデータ（ファイルの属性）が伴い、「オブジェクトＩＤ」として知られる固有のオブジェクト識別子が割り当てられる。アーカイブのために、オブジェクトはハードディスク上のいずれかのロケーションに保存される。ＣＡＳの実装の一例として、特許文献１に示すストレージシステム及びデータ管理方法が開示されている。
【特許文献１】米国特許第７，１５５，４６６号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００５】
前に述べた通り、コンテンツを長期間、安全に（すなわち改竄及びデータロスト無く）保管することを目的としたＣＡＳは、オブジェクトデータを長期間保管することができる。しかし、格納したデータが正確に保管されるため、長期間の保管後に取り出したコンテンツを、意味のあるデータとして見る事が出来ない可能性がある。その原因としては、コンテンツを参照するアプリケーションの世代変更、又は、社会情勢の変化によるアプリケーションそのものの消滅などが挙げられる。
【０００６】
新しいアプリケーションに対応するように元のデータを変更することによって新たなコンテンツを作成し、それをアーカイブすることによって、上記の問題は回避される。しかし、元のデータを改竄してはならないため、作成されたコンテンツは、元のデータとは別のオブジェクトとしてアーカイブされる。このため、新たに作成されたコンテンツを元のデータと関連付けて保持することができなかった。
【課題を解決するための手段】
【０００７】
本願で開示する代表的な発明は、データの記憶領域を提供する記憶デバイスと、前記記憶領域へのデータの書き込み及び読み出しを制御する制御装置と、を備え、一つ以上の計算機に接続されるストレージシステムであって、前記制御装置は、第１ファイル識別子の指定を含む、第１ソフトウェアによって作成された第１データの格納要求を受信すると、前記記憶領域の第１位置に前記第１データを格納し、前記第１ファイル識別子と、前記第１位置と、前記データの保管期限と、前記第１データが元のデータであることを示す所定の第１バージョン情報と、を対応付ける情報を保持し、前記第１ファイル識別子、及び、前記元のデータを変更することによって作成されたデータを識別する第２バージョン情報の指定を含む、前記第１データを第２ソフトウェアが利用可能となるように変更することによって作成された第２データの格納要求を受信すると、前記記憶領域の第２位置に前記第２データを格納し、前記第１ファイル識別子と、前記第２位置と、前記第２バージョン情報と、を対応付ける情報を保持し、前記データの保管期限が経過する前に前記第１データを変更することを禁止し、前記データの保管期限が経過する前に、前記第１ファイル識別子に対応付けられた前記第２位置に格納された前記第２データを変更することを禁止し、前記計算機から、前記第１ファイル識別子及び前記第１バージョン情報の指定を含むデータ削除要求を受信した場合、前記第１ファイル識別子と、前記第１位置と、前記第１バージョン情報と、を対応付ける情報、及び、前記第１データを削除せず、前記計算機から、前記第１ファイル識別子及び前記第２バージョン情報の指定を含むデータ削除要求を受信した場合、前記第１ファイル識別子と、前記第２位置と、前記第２バージョン情報と、を対応付ける情報を削除することを特徴とする。
【発明の効果】
【０００８】
本発明の一実施形態によれば、コンテンツを長期間、改竄なく保管する場合に、改竄なく保管すべき主データと、コンテンツの参照等の補助的利用のための副データとを、相互に関連付けて、かつ、同一の保管ポリシーに従うように保管することができる。
【発明を実施するための最良の形態】
【０００９】
本発明の第一の実施形態を、図１〜図７を用いて詳細に説明する。
【００１０】
計算機からの入出力制御、及び、ストレージ装置内における記憶領域使用方法は、従来技術に示したものと同様である。
【００１１】
図１は、本発明の第一の実施形態の計算機システムの構成を示すブロック図である。
【００１２】
本実施形態の計算機システムは、ホスト計算機１１００、ホスト計算機１１００からアクセスするアーカイブストレージ装置１０００、管理計算機１２００及びデータネットワーク１３００を備える。
【００１３】
データネットワーク１３００は、ホスト計算機１１００、アーカイブストレージ装置１０００及び管理計算機１２００を相互に接続するデータ通信用のネットワークである。本実施形態のデータネットワーク１３００は、ＩＰネットワークである。なお、データネットワーク１３００は、データ通信用のネットワークであれば、ＩＰネットワーク以外のネットワーク（例えばＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ））であってもよい。
【００１４】
管理計算機１２００及びホスト計算機１１００は、一つの計算機によって実現されてもよい。
【００１５】
なお、説明の都合上、本実施形態では、ホスト計算機１１００、アーカイブストレージ装置１０００、管理計算機１２００を各々１台のみ記述したが、これらは複数あってもよい。
【００１６】
アーカイブストレージ装置１０００は、内部ノード装置２０００及びストレージ装置３０００を備える、いわゆるＣＡＳ（コンテンツ・アーカイブストレージ）である。
【００１７】
内部ノード装置２０００は、ＣＰＵ２１００、メモリ２２００、ホストインタフェース（Ｉ／Ｆ）２３００及びストレージＩ／Ｆ２４００を備え、各々が相互に接続されている。
【００１８】
ストレージＩ／Ｆ２４００は、内部ノード装置２０００をストレージ装置３０００に接続するネットワークインタフェースである。ストレージＩ／Ｆ２４００は、ストレージ装置３０００との間でデータ及び制御命令を送受信する。
【００１９】
ホストＩ／Ｆ２３００は、内部ノード装置２０００をデータネットワーク１３００に接続するネットワークインタフェースである。ホストＩ／Ｆ２３００は、データネットワーク１３００を介してホスト計算機１１００及び管理計算機１２００との間でデータ及び制御命令を送受信する。
【００２０】
ＣＰＵ２１００は、メモリ２２００に格納されたプログラムを実行するプロセッサである。以下の説明においてメモリ２２００に格納されたプログラムが実行する処理は、実際にはＣＰＵ２１００によって実行される。
【００２１】
メモリ２２００には、アーカイブ制御プログラム２２０１、メタデータ４０００及び対応管理テーブル５０００が格納される。アーカイブ制御プログラムは特許文献１（米国特許第７，１５５，４６６号明細書）に示すアーカイブ管理を行う。特許文献１に示すアーカイブ管理とは、例えば、ホスト計算機１１００からの書き込み及び読み出しへの応答、書き込まれたコンテンツデータの配置、メタデータの付与等である。
【００２２】
メタデータ４０００及び対応管理テーブル５０００の詳細は、図２〜図３を用いて後述する。
【００２３】
ストレージ装置３０００は、ディスクコントローラ３１００及びディスク装置３２００を備える。ディスクコントローラ３１００は、ストレージ装置３０００の処理を制御する。ディスク装置３２００は、内部ノード装置２０００から書き込み要求されたデータを格納する。
【００２４】
ディスク装置３２００は、複数のボリューム３２０１−１、ボリューム３２０１−２、及びボリューム３２０１−３を備える。これら複数のボリューム３２０１−１、ボリューム３２０１−２、及びボリューム３２０１−３を総称してボリューム３２０１と記載する。
【００２５】
ボリューム３２０１は、物理的な記憶領域であるハードディスクドライブ（ＨＤＤ）又は論理的な記憶領域である論理デバイス（Ｌｏｇｉｃａｌ  Ｄｅｖｉｃｅ）のいずれであってもよい。本発明では、ボリュームの種類を問わない。なお、説明の都合上、図１には三つのボリューム３２０１を示したが、ボリューム３２０１の数はいくつであってもよい。なお、本実施形態では、物理的な記憶領域を提供する記憶デバイスとしてＨＤＤが使用されるが、ＨＤＤが他の種類の記憶デバイス（例えばフラッシュメモリのような半導体メモリ）によって置き換えられてもよい。
【００２６】
ディスクコントローラ３１００は、ＣＰＵ３１０１、メモリ３１０２、ディスクＩ／Ｆ３１０３及び上位装置Ｉ／Ｆ３１０４を備える。
【００２７】
メモリ３１０２には、ストレージマイクロプログラム３１０５が格納される。
【００２８】
ストレージマイクロプログラム３１０５は、ＣＰＵ３１０１によって実行される。ストレージマイクロプログラム３１０５は、内部ノード装置２０００からの要求に応じて、ディスク装置３２００への書き込み及び読み出しを行う。
【００２９】
なお、本実施形態では、ストレージマイクロプログラム３１０５は、ディスクコントローラ３１００のメモリ３１０２に格納されるが、本発明はこれに限定されない。例えば、ストレージマイクロプログラム３１０５は、ディスクコントローラ３１００に接続されるフラッシュメモリに格納されてもよいし、ディスク装置３２００に備わるボリューム３２０１に格納されてもよい。
【００３０】
上位装置Ｉ／Ｆ３１０４は、ストレージ装置３０００を内部ノード装置２０００と接続するためのネットワークインタフェースである。上位装置Ｉ／Ｆ３１０４は、内部ノード装置２０００との間でデータ及び制御命令を送受信する。
【００３１】
ディスクＩ／Ｆ３１０３は、ディスクコントローラ３１００をディスク装置３２００に接続するインタフェースである。
【００３２】
ホスト計算機１１００は、ＣＰＵ１１０１、メモリ１１０２、入出力装置１１０３及びネットワークＩ／Ｆ１１０４を備え、各々が相互に接続されている。
【００３３】
ネットワークＩ／Ｆ１１０４は、ホスト計算機１１００をデータネットワーク１３００に接続するネットワークインタフェースである。ネットワークＩ／Ｆ１１０４は、データネットワーク１３００を介してアーカイブストレージ装置１０００との間でデータを送受信する。
【００３４】
アプリケーション１１０５は、メモリ１１０２に格納され、ＣＰＵ１１０１によって実行される。
【００３５】
アプリケーション１１０５は、アーカイブストレージ装置１０００に対し、コンテンツであるデータを読み書きする。例えば、アプリケーション１１０５は、文書管理ソフトウェア又はファイルシステム等である。
【００３６】
なお、説明の都合上、図１では、アプリケーション１１０５を一つ示すが、複数のアプリケーション１１０５があってもよい。
【００３７】
入出力装置１１０３は、例えば、キーボード、マウス及びディスプレイ等であってもよい。
【００３８】
なお、ホスト計算機１１００は、物理的に一つの計算機であってもよいし、物理的に一つの計算機を論理的に分割することによって生成された仮想計算機であってもよい。後者の場合、ＣＰＵ１１０１、メモリ１１０２、入出力装置１１０３及びネットワークＩ／Ｆ１１０４等のリソースは、物理的なリソースを論理的に分割することによって生成された仮想的なリソースである。
【００３９】
管理計算機１２００は、ＣＰＵ１２０１、メモリ１２０２、入出力装置１２０３及びネットワークＩ／Ｆ１２０４を備え、各々が相互に接続されている。
【００４０】
ネットワークＩ／Ｆ１２０４は、管理計算機１２００をデータネットワーク１３００に接続するネットワークインタフェースである。ネットワークＩ／Ｆ１２０４は、データネットワーク１３００を介してアーカイブストレージ装置１０００との間で制御命令を送受信する。
【００４１】
メモリ１２０２には、表示プログラム１２０５が格納される。表示プログラム１２０５は、ＣＰＵ１２０１によって実行される。ユーザからの入力及びユーザへの表示は、この表示プログラム１２０５によるグラフィカルユーザインターフェース（ＧＵＩ）を介して行われる。メモリ１２０２には、さらに、後述するファイル変換プログラム（図示省略）が格納されてもよい。
【００４２】
入出力装置１２０３は、例えば、キーボード、マウス及びディスプレイ等であってもよい。
【００４３】
図２は、本発明の第一の実施形態のメタデータ４０００の構成を示す説明図である。
【００４４】
メタデータ４０００は、ファイル単位のメタデータ４１００の集合体である。図２に示すファイル単位のメタデータ４１００−１及び４１００−２の各々は、メタデータ４０００に含まれる複数のファイル単位のメタデータ４１００の一つである。図２には二つのファイル単位のメタデータ４１００を示すが、メタデータ４０００はさらに多くのファイル単位のメタデータ４１００を含んでもよい。
【００４５】
一つのファイル単位のメタデータ４１００は、一つの識別子（すなわち後述するファイルＩＤ４１０１）によって識別される一つ以上のファイルの属性情報等を含む。
【００４６】
本実施形態のアーカイブストレージ装置１０００は、変更及び削除から保護されたファイル（すなわち元のファイル）と、その元のファイルから派生した一つ以上のファイルと、を格納する場合がある。元のファイルから派生したファイルとは、たとえば、元のファイルを作成したソフトウェア（例えばアプリケーション１１０５）とは別のソフトウェア（例えば別のバージョンのアプリケーション１１０５）を用いて利用できるように、その元のファイルを変更することによって作成されたファイル（言い換えると、異なるバージョンのファイル）である。
【００４７】
ここで、ファイルの利用とは、例えば、ファイルが文書データを含む場合、アプリケーション１１０５がその文書データに基づいてユーザに読める文書を提供することを意味する。
【００４８】
元のファイル及びそれから派生した一つ以上のファイルからなる複数のファイルは、同一のファイルＩＤ４１０１及び互いに異なるバージョン番号４１０５（後述）によって識別される。
【００４９】
ファイル単位のメタデータ４１００は、ファイルＩＤ４１０１、ファイル保管期限４１０２、ファイル保護４１０３、オーナー情報４１０４、バージョン番号４１０５、ファイル作成日付４１０６、ハッシュ値４１０７、ソフトウェア情報４１０８及び実体へのポインタ４１０９を含む。なお、本明細書に対応する図中の「Ｖｅｒ」は、バージョンの略記である。
【００５０】
ファイルＩＤ４１０１には、ファイルの識別子が記述される。ファイル識別子はアーカイブストレージ装置１０００内で一意であればよい。
【００５１】
ファイル保管期限４１０２には、当該ファイルの保管期限が記述される。当該ファイルとは、ファイルＩＤ４１０１によって識別されるファイルである。
【００５２】
ファイル保護４１０３には、当該ファイルがファイル保管期限４１０２で指定された情報によらず、ファイルの変更及び削除が防止する指定がなされている否かを指定する情報が記述される。本実施形態では、ファイル保護４１０３が「有効」の場合、ファイルの変更及び削除防止が指定され、「無効」の場合は防止が指定されていないことを示す。すなわち、当該ファイルに設定されたファイル保管期限４１０２を経過した後であっても、ファイル保護４１０３が「有効」である場合、当該ファイルの変更及び削除のいずれも実行することができない。一方、当該ファイルのファイル保護４１０３が「無効」である場合、当該ファイルに設定されたファイル保管期限４１０２を経過する前に当該ファイルの変更及び削除のいずれも実行することができないが、経過した後であれば、変更及び削除のいずれも実行することができる。
【００５３】
例えば、ファイル保管期限４１０２は所定のポリシーに基づいて指定され、ファイル保護４１０３はユーザによって必要に応じて任意に指定されてもよい。具体的には、例えば所定のポリシーとは無関係な理由によってファイルを変更及び削除から保護する必要がある場合、ユーザは、そのファイルのファイル保護４１０３を「有効」とする。
【００５４】
オーナー情報４１０４には、当該ファイルの所持者を示す情報が記述される。
【００５５】
図２の例では、一つのファイルＩＤ４１０１に対応するファイル保管期限４１０２、ファイル保護４１０３及びオーナー情報４１０４として、それぞれ一つの値のみが記述される。例えば、ファイルＩＤ４１０１の値「ＦｉｌｅＡ」に対応するファイル保管期限４１０２、ファイル保護４１０３及びオーナー情報４１０４として、それぞれ、「２１００／１２／３１」、「無効」及び「ユーザ１」が記述される。これらは、「ＦｉｌｅＡ」によって識別される複数のファイルの属性情報を示す。すなわち、現在の日付が２１００年１２月３１日以前であればそれらのファイルを変更及び削除のいずれもすることができないが、２１００年１２月３１日より後であればそれらのファイルを変更又は削除することができる。そして、それらのファイルの所持者は、「ユーザ１」によって識別されるユーザである。
【００５６】
ただし、後述するように、一つのファイルＩＤ４１０１によって識別される複数のファイルのうち、「副」のファイル（すなわち、元のファイルから派生したファイル）と、ファイルＩＤ４１０１との対応付けを解除することができる（図６参照）。対応付けを解除された「副」のファイルは、ファイル保管期限４１０２及びファイル保護４１０３にかかわらず、変更又は削除することができる。
【００５７】
バージョン番号４１０５には、バージョンの番号、すなわち、元のファイル及びそれから派生した一つ以上のファイルの各々を識別する番号が記述される。本実施形態では、バージョン番号４１０５の値「１」が「主」バージョン（すなわち元のファイル）を意味し、「１」以外の値（図２の例では「２」及び「３」）が「副」バージョン（すなわち元のファイルから派生したファイル）を意味する。
【００５８】
以下のファイル作成日付４１０６、ハッシュ値４１０７、ソフトウェア情報４１０８及び実体へのポインタ４１０９は、バージョン番号４１０５の各値（図２の例では、「１」、「２」及び「３」）に対応する値を含む。これらは、一つのファイルＩＤ４１０１によって識別される複数のファイルに個別に設定された属性情報を示す。以下、ファイル作成日付４１０６、ハッシュ値４１０７、ソフトウェア情報４１０８及び実体へのポインタ４１０９の説明において、当該ファイルとは、ファイルＩＤ４１０１及びバージョン番号４１０５によって識別される各ファイルを意味する。
【００５９】
ファイル作成日付４１０６には、当該ファイルがアーカイブストレージ装置１０００に書き込まれた日付、又は、書き込まれた際に指定された作成日付が記述される。
【００６０】
ハッシュ値４１０７には、当該ファイルのハッシュ値が格納される。
【００６１】
ソフトウェア情報４１０８には、当該ファイルを作成したソフトウェア（例えばアプリケーション１１０５）の識別情報が記述される。
【００６２】
なお、当該ファイルを作成したソフトウェアと、当該ファイルを利用するソフトウェアとが同一でない場合がある。例えば、管理計算機１２００で稼動するファイル変換プログラム（図示省略）が「主」バージョンのファイルを変換することによって当該ファイルが作成され、作成された当該ファイルが現在ホスト計算機で稼動するアプリケーション１１０５によって利用される場合がある。このような場合、ソフトウェア情報４１０８には、当該ファイルを利用するソフトウェアの識別情報が格納される。
【００６３】
実体へのポインタ４１０９には、当該ファイルのデータの実体が格納されている場所（位置）を指し示す情報が記述される。ファイルのデータの実体が格納されている場所を指し示す情報とは、例えば、そのデータの実体が格納されている場所を指し示す論理ユニット番号（ＬＵＮ）及び論理ブロックアドレス（ＬＢＡ）であってもよいし、それらのアドレス情報を一意に特定することができるポインタ等であってもよい。
【００６４】
なお、ファイルＩＤ４１０１を除いたファイル単位のメタデータ４１００の領域各々にバージョン管理可否情報４１１０が付与されている。バージョン管理可否情報４１１０は、一つのファイルＩＤ４１０１に対応するファイル単位のメタデータ４１００に含まれる各情報の項目が複数の値を保持してよいか否かを制御する情報が記述される。本実施形態では、バージョン管理可否情報４１１０として「バージョン管理ＯＦＦ」が付与された項目は、複数の値を保持することができず、「バージョン管理ＯＮ」が付与された項目は、複数の値（すなわち、各バージョンのファイルの属性を示す値）を保持することができる。
【００６５】
図２の例では、ファイルＩＤ４１０１が「ＦｉｌｅＡ」であるファイルとして、三つのバージョンが保持されている。この例では、ファイル保管期限４１０２、ファイル保護４１０３及びオーナー情報４１０４が、一つのファイルに対して複数の値を保持することができない。一方、バージョン番号４１０５、ファイル作成日付４１０６、ハッシュ値４１０７、ソフトウェア情報４１０８及び実体へのポインタ４１０９は、一つのファイルに対して複数の値を保持することができる。
【００６６】
具体的には、図２の例では、ファイルＩＤ４１０１の値「ＦｉｌｅＡ」及びバージョン番号４１０５の値「２」に対応するソフトウェア情報４１０８及び実体へのポインタ４１０９として、それぞれ、「Ｓｏｆｔｗａｒｅ２．０」及び「アドレス２」が保持されている。これは、「ＦｉｌｅＡ」によって識別される複数のファイルのうち、番号「２」が付与されたバージョンのファイル（すなわち副バージョンのファイル）が、「Ｓｏｆｔｗａｒｅ２．０」によって識別されるソフトウェアによって利用され、そのファイルのデータが、「アドレス２」によって示される位置に格納されていることを示す。
【００６７】
図３は、本発明の第一の実施形態の対応管理テーブル５０００の構成を示す説明図である。
【００６８】
対応管理テーブル５０００は、ファイル単位の対応管理テーブル５１００の集合体である。図３に示すファイル単位の対応管理テーブル５１００−１及び５１００−２の各々は、対応管理テーブル５０００に含まれる複数のファイル単位の対応管理テーブル５１００の一つである。図３には二つのファイル単位の対応管理テーブル５１００を示すが、対応管理テーブル５０００はさらに多くのファイル単位の対応管理テーブル５１００を含んでもよい。
【００６９】
ファイル単位の対応管理テーブル５１００は、ファイルＩＤ５１０１、ホストＩＤ５１０２及びバージョン番号指定５１０３を含む。
【００７０】
ファイルＩＤ５１０１には、ファイルの識別子が記述される。ファイル識別子はアーカイブストレージ装置１０００内で一意であればよい。
【００７１】
ホストＩＤ５１０２には、アーカイブストレージ装置１０００にアクセスするホスト計算機１１００の識別子が記述される。図３の例では、ホストＩＤ５１０２として「ホスト１」等が記述されるが、例えば各ホスト計算機１１００のアドレス情報（例えばＩＰアドレス）がホストＩＤ５１０２として設定されてもよい。
【００７２】
バージョン番号指定５１０３には、ファイルＩＤ５１０１によって識別されるファイルに、ホストＩＤ５１０２によって識別されるホスト計算機１１００から読み出し要求がきた場合に、保持された複数のファイルデータのいずれが応答されるべきかを示すバージョン番号が記述される。
【００７３】
例えば図３では、ファイルＩＤ５１０１が「ＦｉｌｅＡ」であるファイル単位の対応管理テーブル５１００−１のホストＩＤ５１０２として「ホスト１」が記述され、「ホスト１」に対応するバージョン番号指定５１０３として「３」が記述される。
【００７４】
この例において、ホストＩＤが「ホスト１」であるホスト計算機１１００がアーカイブストレージ装置１０００に「ＦｉｌｅＡ」のデータを要求した場合、アーカイブストレージ装置１０００は、対応管理テーブル５０００を参照して、ファイルＩＤ５１０１の値「ＦｉｌｅＡ」及びホストＩＤ５１０２の値「ホスト１」に対応するバージョン番号指定５１０３の値「３」を取得する。そして、アーカイブストレージ装置１０００は、「ＦｉｌｅＡ」のメタデータ４１００のバージョン番号４１０５がバージョン番号指定５１０３と同じ「３」であるバージョンの、実体へのポインタ４１０９に記述された「アドレス３」からデータを読み出し、読み出されたデータを応答する。
【００７５】
対応管理テーブル５０００内の情報は、どのような方法で設定されてもよい。例えば、ユーザが手動でこれらの情報を設定してもよい。以下、設定方法の具体例の一つを説明する。
【００７６】
具体例として、「ＦｉｌｅＡ」によって識別されるファイル（以下、単に「ＦｉｌｅＡ」と記載する）があるソフトウェアによって新規に作成され、そのファイル（すなわち「主」バージョンの「ＦｉｌｅＡ」）がアーカイブストレージ装置１０００に格納される場合を説明する。この例において、ファイルは二つのホスト計算機１１００、すなわち、「ホスト１」によって識別されるホスト計算機１１００及び「ホスト２」によって識別されるホスト計算機１１００（以下、それぞれ、単に「ホスト１」及び「ホスト２」と記載する）によってアクセスされる。
【００７７】
「主」バージョンの「ＦｉｌｅＡ」を作成したソフトウェアが「ホスト１」及び「ホスト２」によって使用されている間、「ホスト１」及び「ホスト２」は、そのソフトウェアを使用して「主」バージョンの「ＦｉｌｅＡ」を利用することができる。その場合、「ＦｉｌｅＡ」に対応するファイル単位の対応管理テーブル５１００には、ホストＩＤ５１０２の値「ホスト１」及び「ホスト２」に対応するバージョン番号指定５１０３として「１」が設定される。
【００７８】
その後、例えば、「ホスト１」のみにおいてソフトウェアがバージョンアップされた結果、「ホスト１」が「主」バージョンの「ＦｉｌｅＡ」を利用できなくなったと仮定する。この場合、ユーザは、バージョンアップされたソフトウェアによって利用可能な「副」バージョンの「ＦｉｌｅＡ」を作成し、それをアーカイブストレージ装置１０００に格納する。このとき、ユーザは、管理計算機１２００を介して、「ホスト１」に対応するバージョン番号指定５１０３の値を、作成されたバージョンを識別する番号に更新する指示をアーカイブストレージ装置１０００に送信する。アーカイブストレージ装置１０００は、この指示に従って対応管理テーブル５０００を更新する。
【００７９】
例えば「ホスト１」に対応するバージョン番号指定５１０３の値が「１」から「３」に更新された場合、以後、「ホスト１」から「ＦｉｌｅＡ」への参照要求を受けたアーカイブストレージ装置１０００は、バージョン番号「３」によって識別される「副」バージョンの「ＦｉｌｅＡ」のデータを「ホスト１」に応答する。一方、「ホスト２」から「ＦｉｌｅＡ」への参照要求を受けたアーカイブストレージ装置１０００は、バージョン番号「１」によって識別される「主」バージョンの「ＦｉｌｅＡ」のデータを「ホスト２」に応答する。この処理の詳細については後述する（図７参照）。
【００８０】
図４は、本発明の第一の実施形態のアーカイブ制御プログラム２２０１が新規にファイル書き込み要求を受け付けた場合に実行するファイル格納処理を説明するフローチャートである。
【００８１】
まずアーカイブ制御プログラム２２０１は、アーカイブするファイルのデータとともに格納要求を受け取り、ファイルＩＤを決定する（ステップＳ４０１）。なお、この格納要求は、ホスト計算機１１００から送信される従来の書き込みコマンドであってもよい。
【００８２】
次に、アーカイブ制御プログラム２２０１は、受け取ったファイルのデータをストレージ装置３０００に格納する（ステップＳ４０２）。
【００８３】
次に、アーカイブ制御プログラム２２０１は、ステップＳ４０２におけるストレージ装置３０００への格納が成功したか否かを判定する（ステップＳ４０３）。これは、従来のデータ格納処理の場合と同様、ストレージ装置３０００からいわゆるＡＣＫ（ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔ）を受信したか否かに基づいて判定されてもよい。
【００８４】
ステップＳ４０３における判定の結果が真である（すなわちデータの格納に成功した）場合、決定したファイルＩＤに対応するメタデータ４０００の新たなエントリ（すなわち新たなファイル単位のメタデータ４１００）を作成する。この場合、新規の格納のため、作成されたエントリは以下のように設定される。
【００８５】
ファイルＩＤ４１０１には、決定したファイルＩＤが設定される。ファイル保管期限４１０２には、予めデフォルトの期限が設定されてもよいし、ファイルの格納要求と同時に入力された期限が設定されてもよい。本実施形態では、ファイルの格納要求と同時に期限が入力されているものとする。すなわちファイルの保管期限４１０２には、指定された期限が設定される。
【００８６】
ファイル保護４１０３には、例えばアーカイブストレージ装置１０００全体又はファイルを格納するディレクトリ等にファイル保護が設定されている場合は「有効」に設定され、それ以外の場合は「無効」に設定される。
【００８７】
オーナー情報４１０４には、ホスト計算機１１００でのファイルのオーナーを識別する情報が設定される。バージョン番号４１０５には、「主」としての新規格納のため「１」が設定される。ファイル作成日付４１０６には、当該ファイルがアーカイブストレージ装置１０００に書き込まれた日付、又は、書き込まれた際に指定された作成日付が設定される。さらに、格納ファイルのハッシュ値が生成され、ハッシュ値４１０７にその値が設定される。ソフトウェア情報４１０８には、「主」としての新規格納のためデフォルトを示す「ＮＵＬＬ」が設定される。実体へのポインタ４１０９には、ステップＳ４０２で格納したデータの場所を特定する情報が設定される。（ステップＳ４０４）
次に、アーカイブ制御プログラム２２０１は、ステップＳ４０４におけるメタデータ作成が全て成功したか否かを判定する（ステップＳ４０５）。
【００８８】
ステップＳ４０５における判定の結果が真である（すなわちメタデータの作成に成功した）場合、アーカイブ制御プログラム２２０１は、ファイルの格納に成功したものとしてＩ／Ｏを完了する（ステップＳ４０６）。このとき、アーカイブ制御プログラム２２０１は、ファイルの格納に成功したことを示す情報をホスト計算機１１００に送信する。
【００８９】
ステップＳ４０３における判定の結果が偽である（すなわちデータの格納に失敗した）場合、又は、ステップＳ４０５における判定の結果が偽である（すなわちメタデータの作成に失敗した）場合、アーカイブ制御プログラム２２０１は、本ファイル格納要求に伴う処理を全て巻き戻し、ファイルの格納に失敗したものとしてＩ／Ｏを完了する（ステップＳ４０７）。このとき、アーカイブ制御プログラム２２０１は、ファイルの格納に失敗したことを示す情報をホスト計算機１１００に送信する。
【００９０】
次に、アーカイブストレージ装置におけるファイルの保管ポリシーに基づく保護の動作を説明する。ファイルに対する削除処理の流れを、図１２を用いて説明する。
【００９１】
図１２は、本発明の第一の実施形態のファイル削除処理を説明するフローチャートである。
【００９２】
まずアーカイブ制御プログラム２２０１は、削除するファイルのファイルＩＤを指定した削除要求を受け取る（ステップＳ１２０１）。なお、この削除要求は、ホスト計算機１１００から送信される従来の書き込みコマンドであってもよい。
【００９３】
次に、アーカイブ制御プログラム２２０１は、入力されたファイルＩＤに対応するファイル単位のメタデータ４１００を探す（ステップＳ１２０２）。
【００９４】
次に、アーカイブ制御プログラム２２０１は、ステップＳ１２０２でファイル単位のメタデータ４１００が見つかったか否かを判定する（ステップＳ１２０３）。
【００９５】
ステップＳ１２０３における判定の結果が真である場合、アーカイブ制御プログラム２２０１は、ファイル保管期限４１０２の範囲外であることを確認する（ステップＳ１２０４）。
【００９６】
ステップＳ１２０４における判定の結果が真である場合、アーカイブ制御プログラム２２０１は、ファイル保護４１０３が「有効」でないことを確認する（ステップＳ１２０５）。
【００９７】
ステップＳ１２０５における判定の結果が真である場合、アーカイブ制御プログラム２２０１は、対象となるファイルの削除処理を許可する。すなわち、アーカイブ制御プログラム２２０１は、対象となるファイルの実体を削除し、対象であるメタデータエントリも削除する（ステップＳ１２０６）。
【００９８】
ステップＳ１２０３及びステップＳ１２０４及びステップＳ１２０５における判定のいずれかが偽である場合、アーカイブ制御プログラム２２０１は、ファイル削除を不許可とする。すなわち、アーカイブ制御プログラム２２０１は、削除要求をエラーで返す（ステップＳ１２０７）。
【００９９】
上記の図１２は、ファイルの削除を要求された場合に実行される削除処理を説明するものである。一方、ファイルの実体への変更を要求された場合、変更処理が実行される。この変更処理も、削除処理と同様に、対象メタデータがあり、ファイル保管期限の範囲外であり、かつ、ファイル保護が無効である場合に実行が許可される。
【０１００】
このようにファイルは保管ポリシーに基づいて、データの改竄から保護されている。
【０１０１】
図５は、本発明の第一の実施形態のアーカイブ制御プログラム２２０１が、バージョンを指定したファイルの書き込み要求を受け付けた場合に実行するファイル追加処理を説明するフローチャートである。
【０１０２】
まずアーカイブ制御プログラム２２０１は、アーカイブするファイルのデータとともにファイルＩＤ、バージョン及びソフトウェア情報を指定した格納要求を受け取る（ステップＳ５０１）。
【０１０３】
なお、この格納要求は、管理計算機１２００から送信される専用のコマンドであってもよい。例えば、アーカイブされたあるファイル（例えば「ＦｉｌｅＡ」）を作成したソフトウェア（例えばアプリケーション１１０５）がバージョンアップされた場合、管理計算機１２００のファイル変換プログラムは、ユーザからの指示に従って、新たなアプリケーション１１０５によって利用可能な新たなバージョンの「ＦｉｌｅＡ」を作成してもよい。このようにして作成されたデータ等が、ステップＳ５０１において管理計算機１２００からアーカイブストレージ装置１０００に送信される。
【０１０４】
次に、アーカイブ制御プログラム２２０１は、受け取ったファイルのデータをストレージ装置３０００に格納する（ステップＳ５０２）。
【０１０５】
次に、アーカイブ制御プログラム２２０１は、ステップＳ５０２におけるストレージ装置３０００への格納が成功したか否かを判定する（ステップＳ５０３）。
【０１０６】
ステップＳ５０３における判定の結果が真である場合、アーカイブ制御プログラム２２０１は、入力されたファイルＩＤに対応するファイル単位のメタデータ４１００を探す（ステップＳ５０４）。
【０１０７】
次に、アーカイブ制御プログラム２２０１は、ステップＳ５０４でファイル単位のメタデータ４１００が見つかったか否かを判定する（ステップＳ５０５）。
【０１０８】
ステップＳ５０５における判定の結果が真である場合、アーカイブ制御プログラム２２０１は、見つかったファイル単位のメタデータ４１００に、バージョンに属する情報を追加する。すなわち、アーカイブ制御プログラム２２０１は、バージョン管理可否情報４１１０が「バージョン管理ＯＮ」であるエントリについて情報を追加する。図２に示す例によると、バージョン番号４１０５として、ステップＳ５０１で指定されたバージョンの番号が追加される。そして、追加されたバージョン番号４１０５に対応するファイル作成日付４１０６、ハッシュ値４１０７、ソフトウェア情報４１０８及び実体へのポインタ４１０９が設定される。なお、ステップＳ５０１におけるバージョン指定が省略された場合、既に設定されている最も大きいバージョン番号４１０５の次の番号が追加される。（ステップＳ５０６）
次に、アーカイブ制御プログラム２２０１は、ステップＳ５０６におけるメタデータの追加が成功したか否かを判定する（ステップＳ５０７）。例えば指定されたバージョンが既に存在していた場合にはメタデータの追加に失敗する。
【０１０９】
ステップＳ５０７における判定の結果が真である場合、アーカイブ制御プログラム２２０１は、ファイルの格納に成功したものとしてＩ／Ｏを完了する（ステップＳ５０８）。このとき、アーカイブ制御プログラム２２０１は、ファイルの格納に成功したことを示す情報を管理計算機１２００に送信する。この場合、さらに、図３を参照して説明したように、対応管理テーブル５０００が更新されてもよい。
【０１１０】
ステップＳ５０３における判定の結果が偽である場合、又は、ステップＳ５０５における判定の結果が偽である場合、又は、ステップＳ５０７における判定の結果が偽である場合、アーカイブ制御プログラム２２０１は、本ファイル格納要求に伴う処理を全て巻き戻し、ファイルの格納に失敗したものとしてＩ／Ｏを完了する（ステップＳ５０９）。このとき、アーカイブ制御プログラム２２０１は、ファイルの格納に失敗したことを示す情報を管理計算機１２００に送信する。
【０１１１】
図６は、本発明の第一の実施形態のアーカイブ制御プログラム２２０１が、バージョンを指定したファイルの削除要求を受け付けた場合に実行する特定バージョン削除処理を説明するフローチャートである。
【０１１２】
まずアーカイブ制御プログラム２２０１は、削除するファイルのファイルＩＤとバージョンを指定した削除要求を受け取る（ステップＳ６０１）。なお、この削除要求は、管理計算機１２００から送信される専用のコマンドであってもよい。
【０１１３】
次に、アーカイブ制御プログラム２２０１は、削除要求によって指定されたバージョンが「１」であるか否かを判定する（ステップＳ６０２）。
【０１１４】
ステップＳ６０２における判定の結果が偽である場合、「副」のバージョンのファイルが削除の対象として指定されている。この場合、アーカイブ制御プログラム２２０１は、指定されたファイルＩＤを含む対応管理テーブル５１００に、指定されたバージョンのバージョン番号指定５１０３の情報が存在するか否かを判定する（ステップＳ６０３）。
【０１１５】
ステップＳ６０３における判定の結果が偽である（すなわち、指定されたバージョンのバージョン番号指定５１０３の情報が存在しない）場合、その時点において、指定されたバージョンのファイルを参照する可能性があるホスト計算機１１００が存在しない。すなわち、指定されたバージョンのファイルを削除しても、ホスト計算機１１００はその指定されたファイルを参照することができる。この場合、アーカイブ制御プログラム２２０１は、入力されたファイルＩＤに対応するファイル単位のメタデータ４１００を探す（ステップＳ６０４）。
【０１１６】
次に、アーカイブ制御プログラム２２０１は、ステップＳ６０４でファイル単位のメタデータ４１００が見つかったか否かを判定する（ステップＳ６０５）。
【０１１７】
ステップＳ６０５における判定の結果が真である場合、アーカイブ制御プログラム２２０１は、見つかったファイル単位のメタデータ４１００の実体へのポインタ４１０９が指し示すデータを削除する（ステップＳ６０６）。具体的には、アーカイブ制御プログラム２２０１は、見つかったファイル単位のメタデータ４１００の実体へのポインタ４１０９のうち、指定されたバージョン番号４１０５に対応するものが指し示すデータを削除する。
【０１１８】
次に、アーカイブ制御プログラム２２０１は、見つかったファイル単位のメタデータ４１００から、バージョンに属する情報を削除する（ステップＳ６０７）。すなわち、バージョン管理可否情報４１１０が「バージョン管理ＯＮ」であるエントリに設定された情報のうち、指定されたバージョン番号４１０５に対応するもの（図２の例では、ファイル作成日付４１０６、ハッシュ値４１０７、ソフトウェア情報４１０８及び実体へのポインタ４１０９）を削除する。これによって、指定されたファイルＩＤと、指定されたバージョン番号４１０５が示すバージョンのファイルデータとの対応が解除される。
【０１１９】
次に、アーカイブ制御プログラム２２０１は、ステップＳ６０６及びステップＳ６０７における削除処理が成功したか否かを判定する（ステップＳ６０８）。
【０１２０】
ステップＳ６０８における判定の結果が真である場合、アーカイブ制御プログラム２２０１は、バージョン指定の削除に成功したものとしてＩ／Ｏを完了する（ステップＳ６０９）。このとき、アーカイブ制御プログラム２２０１は、削除に成功したことを示す情報を管理計算機１２００に送信する。
【０１２１】
ステップＳ６０２における判定の結果が真である場合、「主」バージョンのファイルが削除の対象として指定されている。しかし、そのファイルについて設定されたファイル保管期限４１０２が既に終了し、かつ、ファイル保護４１０３が「無効」でない限り、「主」バージョンのファイルを削除することはできない。図６に示す特定バージョン削除処理は、「副」バージョンのファイルのみを削除するためのものであるため、ステップＳ６０２における判定の結果が真である場合、アーカイブ制御プログラム２２０１は、本削除要求に伴う処理を全て巻き戻し、ファイルの削除に失敗したものとしてＩ／Ｏを完了する（ステップＳ６１０）。このとき、アーカイブ制御プログラム２２０１は、削除に失敗したことを示す情報を管理計算機１２００に送信する。
【０１２２】
ステップＳ６０３における判定の結果が真である場合、その時点において、指定されたバージョンのファイルを参照する可能性があるホスト計算機１１００が存在する。すなわち、指定されたバージョンのファイルを削除すると、少なくとも一つのホスト計算機１１００はその指定されたファイルを参照することができなくなる。これを防ぐため、ステップＳ６０３における判定の結果が真である場合、指定されたバージョンのファイルは削除されず、処理はステップＳ６１０に進む。
【０１２３】
ステップＳ６０５における判定の結果が偽である場合、及び、ステップＳ６０８における判定の結果が偽である場合も、同様に処理はステップＳ６１０に進む。
【０１２４】
図７は、本発明の第一の実施形態のアーカイブ制御プログラム２２０１が、ホスト計算機１１００からファイルの読み出し要求を受けた場合に実行する参照処理を説明するフローチャートである。
【０１２５】
まずアーカイブ制御プログラム２２０１は、参照するファイルのファイルＩＤ、及び、要求元であるホスト計算機１１００を識別するホストＩＤとともに、参照要求を受け取る（ステップＳ７０１）。なお、この参照要求は、ホスト計算機１１００から送信される従来の読み出しコマンドであってもよい。
【０１２６】
例えば、データネットワーク１３００がＩＰネットワークである場合、参照要求の送信元を示すＩＰアドレスが、要求元のホストＩＤとして使用されてもよい。
【０１２７】
次に、アーカイブ制御プログラム２２０１は、入力されたファイルＩＤに対応するファイル単位の対応管理テーブル５１００を探す（ステップＳ７０２）。
【０１２８】
次に、アーカイブ制御プログラム２２０１は、ステップＳ７０２でファイル単位の対応管理テーブル５１００が見つかったか否かを判定する（ステップＳ７０３）。
【０１２９】
ステップＳ７０３における判定の結果が真である場合、アーカイブ制御プログラム２２０１は、見つかったファイル単位の対応管理テーブル５１００のバージョン番号指定５１０３の値のうち、入力されたホストＩＤと同一のホストＩＤ５１０２に対応する値を選択する（ステップＳ７０４）。
【０１３０】
ステップＳ７０３における判定の結果が偽である場合、参照を要求されたファイルの主バージョンから派生した副バージョンのファイルが存在しない。この場合、アーカイブ制御プログラム２２０１は、「主」を意味する「１」をバージョン番号として選択する（ステップＳ７０５）。
【０１３１】
次に、アーカイブ制御プログラム２２０１は、入力されたファイルＩＤに対応するファイル単位のメタデータ４１００を探す（Ｓ７０６）。
【０１３２】
次に、アーカイブ制御プログラム２２０１は、ステップＳ７０６でファイル単位のメタデータ４１００が見つかったか否かを判定する（ステップＳ７０７）。
【０１３３】
ステップＳ７０７における判定の結果が真である場合、アーカイブ制御プログラム２２０１は、見つかったファイル単位のメタデータ４１００上の、選択されたバージョン番号に対応する実体へのポインタ４１０９で示されたファイルのデータを参照する（ステップＳ７０８）。
【０１３４】
ステップＳ７０７における判定の結果が偽である場合、アーカイブ制御プログラム２２０１は、本参照要求に伴う処理を全て巻き戻し、ファイルの参照に失敗したものとしてＩ／Ｏを完了する（ステップＳ７０９）。このとき、アーカイブ制御プログラム２２０１は、参照に失敗したことを示す情報をホスト計算機１１００に送信する。
【０１３５】
以上で処理を終了する。
【０１３６】
上記のように、本発明の第一の実施形態によれば、一つの（元の）ファイルから派生した複数の互いに異なるバージョンのファイルの属性情報が、互いに対応付けて保持される。さらに、各バージョンと、そのバージョンを利用するホスト計算機１１００とを対応付ける情報（対応管理テーブル５０００）が保持される。アーカイブストレージ装置１０００は、ホスト計算機１１００からファイルの参照要求を受信すると、要求元のホスト計算機１１００に対応付けられたバージョンのファイルのデータを応答する。このため、ホスト計算機１１００は、バージョンを意識することなく、従来のアクセスコマンドを使用してファイルにアクセスすることができる。
【０１３７】
上記の第一の実施形態の変形例として、ホストＩＤではなく、ソフトウェアを識別する情報に基づいて、参照対象ファイルのバージョンを選択する処理が実行されてもよい。この変形例について次に説明する。
【０１３８】
図８は、本発明の第一の実施形態のアーカイブ制御プログラム２２０１が実行する専用参照処理の変形例を説明するフローチャートである。
【０１３９】
まずアーカイブ制御プログラム２２０１は、ホスト計算機１１００から、参照するファイルのファイルＩＤ、及び、そのファイルを利用するソフトウェアを識別する情報とともに、参照要求を受け取る（ステップＳ８０１）。なお、ファイルを利用するソフトウェアを識別する情報を、ホスト計算機１１００とアーカイブ制御プログラム２２０１との間でやり取りするためには、そのためのＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）を用意する必要がある。
【０１４０】
次に、アーカイブ制御プログラム２２０１は、入力されたファイルＩＤに対応するファイル単位のメタデータ４１００を探す（ステップＳ８０２）。
【０１４１】
次に、アーカイブ制御プログラム２２０１は、ステップＳ８０２でファイル単位のメタデータ４１００が見つかったか否かを判定する（ステップＳ８０３）。
【０１４２】
ステップＳ８０３における判定の結果が真である場合、アーカイブ制御プログラム２２０１は、ステップＳ８０１において受け取ったソフトウェアの識別情報と同一のソフトウェア情報４１０８に対応するバージョン番号４１０５を、見つかったファイル単位のメタデータ４１００から探す（ステップＳ８０４）。
【０１４３】
次に、アーカイブ制御プログラム２２０１は、ステップＳ８０４でバージョン番号４１０５が見つかったか否かを判定する（ステップＳ８０５）。
【０１４４】
ステップＳ８０５における判定の結果が真である場合、指定されたソフトウェアが利用可能なバージョンのファイルが存在する。この場合、アーカイブ制御プログラム２２０１は、見つかったバージョン番号４１０５に対応する実体へのポインタ４１０９で示されたファイルのデータを参照する（ステップＳ８０６）。
【０１４５】
ステップＳ８０３における判定の結果が偽である場合、参照要求されたファイルの属性情報が存在しない。この場合、アーカイブ制御プログラム２２０１は、ファイルの参照に失敗したものとしてＩ／Ｏを完了する（ステップＳ８０７）。ステップＳ８０７において、アーカイブ制御プログラム２２０１は、参照に失敗したことを示す情報をホスト計算機１１００に送信する。
【０１４６】
ステップＳ８０５における判定の結果が偽である場合、指定されたソフトウェアが利用可能なバージョンのファイルが存在しない。この場合にも、アーカイブ制御プログラム２２０１は、本参照要求に伴う処理を全て巻き戻し、ファイルの参照に失敗したものとしてＩ／Ｏを完了する（ステップＳ８０７）。
【０１４７】
なお、参照要求に対して図７に示す処理が実行されず、図８に示す処理のみが実行される場合、アーカイブストレージ装置１０００は、対応管理テーブル５０００を保持しなくてもよい。
【０１４８】
次に、本発明の第二の実施形態を説明する。第二の実施形態は、以下に説明する相違点を除き、第一の実施形態と同様である。
【０１４９】
第一の実施形態において、ファイルの追加処理は適宜行われるものであった。これに対し、例えば管理計算機１２００上にファイル一括更新プログラムを設け、アーカイブ制御プログラム２２０１がファイル一括更新処理のための更新の候補を検索するリスト抽出機能を有してもよい。このような実施形態を第二の実施形態として説明する。
【０１５０】
この実施形態における計算機システムの構成は、第一の実施形態と同様であるが、管理計算機１２００のメモリ１２０２上にファイル一括更新プログラムとファイル変換プログラムが格納され、これらがＣＰＵ１２０１によって実行される点が異なる。さらに、本実施形態のアーカイブ制御プログラム２２０１は、第一の実施形態において説明した処理に加えて、図９に示すリスト抽出処理を実行する。
【０１５１】
例えば、ホスト計算機１１００上で稼動するあるソフトウェア（例えばアプリケーション１１０５）によって作成された多数のファイルがアーカイブストレージ装置１０００に格納されている場合において、そのソフトウェアがバージョンアップされると、格納されている多数のファイルの新たなバージョンを作成する必要が生じる。リスト抽出処理は、このような場合に新たなバージョンを作成する必要があるファイルのリストを作成して、そのリストを管理計算機１２００に送信する処理である。
【０１５２】
図９は、本発明の第二の実施形態において、アーカイブ制御プログラム２２０１が、管理計算機１２００からリスト抽出要求を受けた場合に実行するリスト抽出処理を説明するフローチャートである。
【０１５３】
まず、アーカイブ制御プログラム２２０１は、対象となるソフトウェア情報及び変更後のソフトウェア情報とともにリスト抽出要求を受け取る（ステップＳ９０１）。ここで、対象となるソフトウェア情報とは、変更される前のソフトウェアを識別する情報（例えば変更される前のバージョンを示す情報）であり、変更後のソフトウェア情報とは、変更された後のソフトウェアを識別する情報（例えば変更される前のバージョンを示す情報）である。
【０１５４】
次に、アーカイブ制御プログラム２２０１は、メタデータ４０００を参照し、対象となるソフトウェア情報をソフトウェア情報４１０８として含み、かつ、変更後のソフトウェア情報をソフトウェア情報４１０８として含まないファイル単位のメタデータ４１００のファイルＩＤ４１０１を抽出する（ステップＳ９０２）。
【０１５５】
次に、アーカイブ制御プログラム２２０１は、ステップＳ９０２で抽出されたファイルＩＤ４１０１のリストをリスト抽出要求に対して応答する（ステップＳ９０３）。
【０１５６】
以上でリスト抽出処理を終了する。
【０１５７】
例えば、ホスト計算機１１００において、アプリケーション１１０５が「Ｓｏｆｔｗａｒｅ２．０」から「Ｓｏｆｔｗａｒｅ３．０」に変更された場合、ステップＳ９０１において、対象となるソフトウェア情報として「Ｓｏｆｔｗａｒｅ２．０」、変更後のソフトウェア情報として「Ｓｏｆｔｗａｒｅ３．０」が指定される。
【０１５８】
この場合、「Ｓｏｆｔｗａｒｅ２．０」が利用していたファイルを変換することによって、「Ｓｏｆｔｗａｒｅ３．０」が利用できるファイルを作成する必要がある。しかし、「Ｓｏｆｔｗａｒｅ２．０」が利用していないファイルを変換する必要はない。既に「Ｓｏｆｔｗａｒｅ３．０」が利用可能なファイルが作成されている場合にも、新たに変換されたファイルを作成する必要はない。このため、ステップＳ９０２において、アーカイブ制御プログラム２２０１は、ソフトウェア情報４１０８として「Ｓｏｆｔｗａｒｅ２．０」を含み、かつ、「Ｓｏｆｔｗａｒｅ３．０」を含まないファイル単位のメタデータ４１００のファイルＩＤ４１０１を抽出する。
【０１５９】
なお、本実施形態では、ソフトウェア情報４１０８を抽出のキーワードとして説明したが、ファイルの拡張子がバージョン毎にメタデータ４０００に保持される場合、その拡張子に基づいてファイルＩＤが抽出されてもよい。その場合、ステップＳ９０１において対象となる拡張子及び変更後の拡張子が指定され、ステップＳ９０２において、対象となる拡張子を含み、かつ、変更後の拡張子を含まないファイル単位のメタデータ４１００のファイルＩＤ４１０１が抽出される。
【０１６０】
ファイル一括更新プログラムは、ファイル変換プログラムで変換対象となるソフトウェア情報を指定して、リスト抽出要求をアーカイブストレージ装置１０００に対して送信する。次に、ファイル変換プログラムは、リスト抽出処理によって応答されたファイルのリストを変換対象としてファイルの変換を実行する。次に、管理計算機１２００は、変換されたファイル（すなわち新たに作成されたバージョンのファイル）を指定して、アーカイブストレージ装置１０００にバージョン追加指示を送信する。アーカイブストレージ装置１０００は、この指示に従って、ファイル追加処理（図５参照）を実行する。これによって、古いバージョンのファイルに、一括して副のバージョンのファイルのデータを追加することができる。
【０１６１】
例えば多数のホスト計算機１１００を備える大規模なシステムにおいて、アプリケーション１１０５のバージョンアップは、その作業負荷のため一括して行われず、ホスト計算機１１００のグループごとに行われることがある。その場合、全ホスト計算機１１００のアプリケーション１１０５のバージョンアップが終了するまで、複数バージョンが複数のホスト計算機１１００によって利用される。その場合でも、本実施形態で示した手順によって、アーカイブストレージ装置１０００に格納された複数データについて、バージョンアップのための副のデータの追加を一括して行うことができる。また、その場合でも、副のデータが一括して追加された後に、対応管理テーブルにおいて、アプリケーションをバージョンアップしたホスト計算機１１００のホストＩＤ５１０２に対応するバージョン番号指定５１０３を切り替えることによって、バージョンアップ後の副のデータにアクセス先を切り替えることができる。
【０１６２】
次に、本発明の第三の実施形態を説明する。第三の実施形態は、以下に説明する相違点を除き、第一及び第二の実施形態と同様である。
【０１６３】
本発明の第一及び第二の実施形態において、メタデータ４０００のバージョン管理可否情報４１１０が固定されていた。これに対し、第三の実施形態では、バージョン管理可否情報４１１０の変更の可否をユーザが定義することができる。
【０１６４】
図１０は、本発明の第三の実施形態のメタデータ４０００の構成を示す説明図である。
【０１６５】
第三の実施形態のメタデータ４０００は、変更可否情報４１１１及び変更許可者情報４１１２が追加され、さらに、属性を示す情報としてＡＣＬ４１１３及びコメント４１１４が追加されている点を除いて、第一及び第二の実施形態のメタデータ４０００と同様である。
【０１６６】
変更可否情報４１１１は、バージョン管理可否情報４１１０の値を「バージョン管理ＯＮ」に変更できるか否かを制御する情報が記述される。本実施形態では、変更可否情報４１１１が「固定」の場合、バージョン管理可否情報４１１０が「バージョン管理ＯＦＦ」に固定され、変更できないことを示し、変更可否情報４１１１が「変更可」の場合、バージョン管理可否情報４１１０を「バージョン管理ＯＦＦ」及び「バージョン管理ＯＮ」に変更可能であることを示す。
【０１６７】
なお、変更可否情報４１１１が「変更可」に設定されているバージョン管理可否情報４１１０は、例えばシステム構築時に、システム管理者によって「バージョン管理ＯＦＦ」又は「バージョン管理ＯＮ」のいずれかに設定される。
【０１６８】
変更許可者情報４１１２は、変更可否情報４１１１が「変更可」であるメタデータの領域に対して、「副」バージョンに関する情報を追加できるユーザを特定する情報が記述される。本実施形態では、変更許可者情報４１１２が「Ｒｏｌｅ１」の場合、「Ｒｏｌｅ１」という役割を与えられたユーザが、「副」バージョンに関する情報を変更することができ、それ以外の領域の情報は前の情報を継続する。
【０１６９】
説明のために、メタデータ４０００に保持される情報として、ＡＣＬ（Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ｌｉｓｔ）４１１３及びコメント４１１４が追加されている。
【０１７０】
ＡＣＬ４１１３は、ファイルデータに対するアクセスの可否を制御するために用いられる。具体的には、ＡＣＬ４１１３には、例えばファイルデータへのアクセスを許可されたユーザを識別する情報が保持されてもよい。図１０に示す「ＡＬＬ」は、全てのユーザがファイルデータへのアクセスを許可されていることを示す。
【０１７１】
コメント４１１４は、ユーザがファイルデータに付与した補足情報を保持するための領域である。例えば、ユーザによって指定された任意の文字列がコメント４１１４に保持されてもよい。
【０１７２】
図１１は、本発明の第三の実施形態においてデータが追加されたときのメタデータ４０００の状態の一例の説明図である。
【０１７３】
図１１（１）は、新たにファイルデータがアーカイブされた場合（すなわち、新たな「主」バージョンのファイルのデータが格納された場合）のファイル単位のメタデータ４１００を示す。なお、ファイルＩＤ４１０１等、状態変化の説明に不要な領域の図示は省略されている。このファイルは、ファイル保管期限が「２００１／１２／３１」、ファイル保護は無し、アカウント「ユーザ１」がオーナーであり、全てのユーザがデータの実体にアクセス可能な「Ａｌｌ」が指定され、「ＡＡ」というコメント文が付与され、データの実体はストレージ装置のアドレス１に格納されている。これらを主のバージョンのファイルに関するデータとして含むメタデータが作成されている。
【０１７４】
図１１（２）は、図１１（１）において作成されたファイルに、「Ｒｏｌｅ１」の権限を有するユーザが副のバージョンのファイルデータを追加した場合のメタデータ４０００を示す。
【０１７５】
バージョン管理可否情報４１１０が「バージョン管理ＯＦＦ」であるファイル保管期限４１０２、ファイル保護４１０３、オーナー情報４１０４、ＡＣＬ４１１３はバージョン管理されない。一方、「Ｒｏｌｅ１」に変更許可が与えられているバージョン番号４１０５〜ソフトウェア情報４１０８、及び、実体へのポインタ４１０９に情報が追加されている。
【０１７６】
図１１（３）は、図１１（２）に示すようにデータが追加された後、さらに、「Ｒｏｌｅ２」の権限を有するユーザが副のバージョンのファイルデータに関する情報を追加した場合のメタデータ４０００を示す。
【０１７７】
バージョン管理可否情報４１１０が「バージョン管理ＯＦＦ」であるファイル保管期限４１０２、ファイル保護４１０３、オーナー情報４１０４及びＡＣＬ４１１３には情報が追加されない。「Ｒｏｌｅ２」に変更許可が与えられていないファイル作成日付４１０６〜ソフトウェア情報４１０８、及び、実体へのポインタ４１０９には副のデータに関する情報が追加されない。「Ｒｏｌｅ２」に変更許可が与えられているコメント４１１４及びバージョン番号４１０５に情報が追加されている。
【０１７８】
以上で本発明における実施形態を説明したが、対応管理テーブル５０００を定義するＧＵＩ又はスクリプトを用意し、管理計算機１２００を介して対応管理テーブル５０００を定義させてもよい。その際、例えばホスト計算機のアプリケーション情報を収集するソフトウェア管理プログラム等と連携し、ホスト計算機のアプリケーションのバージョンアップを検知し、それを契機に対応管理テーブル５０００の該当する情報を更新してもよい。
【０１７９】
また、本発明の実施形態の説明において、複数バージョンの情報が保持される。しかし、長期間にわたってコンテンツが保管される場合、アプリケーションの過去のバージョンにおけるデータも使用されなくなる可能性がある。この場合、副として追加したデータを削除する特定バージョン削除処理を用いて、使用しなくなったバージョンの情報を削除することによって、ストレージ装置の記憶領域の利用効率を向上させてもよい。具体的には、新しいデータである最新のバージョン番号の副のデータを何個保持するかをユーザに指定させ、指定された数の最新の副のデータ以外の副のデータを定期的なチェック契機などで削除する。
【０１８０】
更に、前記ストレージ装置の記憶領域の利用効率向上のため、本発明の実施形態と、階層管理技術を組み合わせ、ユーザに指定された数の最新の副のデータ及び主のデータ以外を、定期的なチェック契機などでテープ装置などにマイグレーションしてもよい。
【０１８１】
更に、前記ストレージ装置の記憶領域の利用効率向上のため、本発明の実施形態と、差分コピー機能を組み合わせ、副のデータの実体を、主のデータの実体の差分だけ保持してもよい。
【０１８２】
また、本発明の実施形態の説明において、アーカイブストレージ装置が主であるサイトで使われていた。しかし、アーカイブストレージ装置が主であるサイトの主システムと、リカバリサイトの副システムの間でリモートレプリケーションによってデータが複製されてもよい。その場合、更にストレージ装置の記憶領域の利用効率向上のため、主システムでは全てのバージョンが保持され、副システムではユーザに指定された数の最新の副のデータ及び主のデータのみが保持されてもよい。
【０１８３】
以上に説明した本発明の実施形態によれば、ファイルを長期間、改竄なく保管する場合に、改ざんなく保管すべき主データと、ファイルの参照等の補助的利用のための副データとが、相互に関連付けられ、かつ、同一の保管ポリシーに従うように、保管される。より詳細には、ファイルの参照要求が発行された場合、そのファイルに対応する主データ又は副データのいずれかが応答される。さらに、主データ及び副データに同一の保管ポリシー（例えば保管期限）が設定される。保管期限が経過する前に、ファイルに対応する主データ及び副データのいずれも変更することができない。しかし、保管期限経過前であっても、ファイルと副データとの対応を解除することはできる。ファイルとの対応を解除された副データは、削除されてもよい。必要性の低い副データを削除することによって、記憶領域の利用効率を向上させることができる。
【図面の簡単な説明】
【０１８４】
【図１】本発明の第一の実施形態の計算機システムの構成を示すブロック図である。
【図２】本発明の第一の実施形態のメタデータの構成を示す説明図である。
【図３】本発明の第一の実施形態の対応管理テーブルの構成を示す説明図である。
【図４】本発明の第一の実施形態のアーカイブ制御プログラムが新規にファイル書き込み要求を受け付けた場合に実行するファイル格納処理を説明するフローチャートである。
【図５】本発明の第一の実施形態のアーカイブ制御プログラムが、バージョンを指定したファイルの書き込み要求を受け付けた場合に実行するファイル追加処理を説明するフローチャートである。
【図６】本発明の第一の実施形態のアーカイブ制御プログラムが、バージョンを指定したファイルの削除要求を受け付けた場合に実行する特定バージョン削除処理を説明するフローチャートである。
【図７】本発明の第一の実施形態のアーカイブ制御プログラムが、ホスト計算機からファイルの読み出し要求を受けた場合に実行する参照処理を説明するフローチャートである。
【図８】本発明の第一の実施形態のアーカイブ制御プログラムが実行する参照処理の変形例を説明するフローチャートである。
【図９】本発明の第二の実施形態において、アーカイブ制御プログラムが、管理計算機からリスト抽出要求を受けた場合に実行するリスト抽出処理を説明するフローチャートである。
【図１０】本発明の第三の実施形態のメタデータの構成を示す説明図である。
【図１１】本発明の第三の実施形態においてデータが追加されたときのメタデータの状態の一例の説明図である。
【図１２】本発明の第一の実施形態のファイル削除処理を説明するフローチャートである。
【符号の説明】
【０１８５】
１０００  アーカイブストレージ装置
１１００  ホスト計算機
１２００  管理計算機
２０００  内部ノード装置
３０００  ストレージ装置
２２０１  アーカイブ制御プログラム
４０００  メタデータ
５０００  対応管理テーブル
【図１】
0005320557.tif 000002
【図２】
0005320557.tif 000003
【図３】
0005320557.tif 000004
【図４】
0005320557.tif 000005
【図５】
0005320557.tif 000006
【図６】
0005320557.tif 000007
【図７】
0005320557.tif 000008
【図８】
0005320557.tif 000009
【図９】
0005320557.tif 000010
【図１０】
0005320557.tif 000011
【図１１】
0005320557.tif 000012
【図１２】
0005320557.tif 000013