(57)【要約】【課題】ＨＳＭにおける名前空間のバックアップの世代管理を効率的に行うＨＳＭ制御プログラム、ＨＳＭ制御装置、ＨＳＭ制御方法を提供する。【解決手段】一次ストレージ１と二次ストレージ２を有するＨＳＭの制御をコンピュータに実行させるＨＳＭ制御プログラムであって、ＨＳＭのバックアップ毎に、該バックアップの世代番号を含む情報である世代情報を作成する世代情報作成ステップと、ＨＳＭにおけるファイル毎の名前空間に関する情報である名前空間情報と、世代情報作成ステップにより作成された世代番号を用いて該名前空間に関する情報が有効である世代番号の範囲を示す有効世代番号範囲とを名前空間情報履歴として管理する履歴管理ステップとをコンピュータに実行させる。【選択図】図７
2008040699.tif 000002
【特許請求の範囲】
【請求項１】
一次ストレージと二次ストレージを有するＨＳＭの制御をコンピュータに実行させるＨＳＭ制御プログラムであって、
前記ＨＳＭのバックアップ毎に、該バックアップの世代番号を含む情報である世代情報を作成する世代情報作成ステップと、
前記ＨＳＭにおけるファイル毎の名前空間に関する情報である名前空間情報と、前記世代情報作成ステップにより作成された世代番号を用いて該名前空間に関する情報が有効である世代番号の範囲を示す有効世代番号範囲とを名前空間情報履歴として管理する履歴管理ステップと
をコンピュータに実行させるＨＳＭ制御プログラム。
【請求項２】
請求項１に記載のＨＳＭ制御プログラムにおいて、
前記ＨＳＭのファイルシステムにおける前記名前空間情報の更新が検出された場合、前記履歴管理ステップは、該名前空間情報の更新の対象のファイルである更新対象ファイルに対応する前記名前空間情報履歴を更新することを特徴とするＨＳＭ制御プログラム。
【請求項３】
請求項１または請求項２に記載のＨＳＭ制御プログラムにおいて、
前記履歴管理ステップは更に、外部から指定された世代番号が有効世代番号範囲内となる前記名前空間情報履歴の抽出を行い、該抽出により得られた名前空間情報履歴に対応するファイルをリストア対象のファイルとして出力することを特徴とするＨＳＭ制御プログラム。
【請求項４】
一次ストレージと二次ストレージを有するＨＳＭの制御を行うＨＳＭ制御装置であって、
前記ＨＳＭのバックアップ毎に、該バックアップの世代番号を含む情報である世代情報を作成する世代情報作成部と、
前記ＨＳＭにおけるファイル毎の名前空間に関する情報である名前空間情報と、前記世代情報作成部により作成された世代番号を用いて該名前空間に関する情報が有効である世代番号の範囲を示す有効世代番号範囲とを名前空間情報履歴として管理する履歴管理部と
を備えるＨＳＭ制御装置。
【請求項５】
一次ストレージと二次ストレージを有するＨＳＭの制御を行うＨＳＭ制御方法であって、
前記ＨＳＭのバックアップ毎に、該バックアップの世代番号を含む情報である世代情報を作成する世代情報作成ステップと、
前記ＨＳＭにおけるファイル毎の名前空間に関する情報である名前空間情報と、前記世代情報作成ステップにより作成された世代番号を用いて該名前空間に関する情報が有効である世代番号の範囲を示す有効世代番号範囲とを名前空間情報履歴として管理する履歴管理ステップと
を実行するＨＳＭ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＨＳＭにおけるバックアップの世代管理を行うＨＳＭ制御プログラム、ＨＳＭ制御装置、ＨＳＭ制御方法に関するものである。
【背景技術】
【０００２】
ＨＳＭ（Hierarchical Storage Management：階層記憶管理）は、テープライブラリなどの低速なストレージ装置（二次ストレージ）とハードディスクなどの高速なストレージ装置（一次ストレージ）を組み合わせることにより、安価な大容量ファイルシステムを構築するものである。
【０００３】
ＨＳＭ制御装置においては、一次ストレージにおいて長時間アクセスされていないファイルを特定し、そのファイルを二次ストレージに書き出し、アクセスが要求された時点で一次ストレージに移動することが必要となる。従来、これを実現するために、従来のＨＳＭ制御装置は、階層構造を持つファイルシステムの名前空間を総なめし、ファイルシステムがファイル単位に保持するアクセス時刻を参照することにより、二次ストレージに書き出すファイルを特定する方式を用いている。
【０００４】
なお、本発明の関連ある従来技術として、例えば、下記に示す特許文献１が知られている。このデータ処理装置は、メタデータデータの内容が更新されると、ログが採取され、このログを用いてファイルシステムの不整合の修正を行うものである。
【特許文献１】特開２０００−４８４９９５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した名前空間を総なめする方式のＨＳＭ制御装置には、以下の問題がある。
【０００６】
第１にファイルシステム総なめオーバヘッドの問題がある。従来のＨＳＭ制御装置では階層構造を持つファイル名前空間を定期的に総なめするために、オーバヘッドが大きくなってしまう。
【０００７】
第２に名前空間の排他問題がある。ＨＳＭ制御装置が名前空間を総なめしている間に、ｒｅｎａｍｅ操作などのファイル名変更操作が行われると、総なめの過程で求めたパス名が、実際には存在しない不当なものとなってしまう。このため、ＨＳＭ制御装置は、顧客が設定したポリシと矛盾するデータ移動操作を行ってしまう可能性がある。例えば、検索の途中で、上位ディレクトリがゴミ箱に移されたとすると、ゴミ箱全体を移動対象としてしまうようなことが起こる。こうした問題を防ごうとすると、ＨＳＭ制御装置は総なめの過程で、頻繁に矛盾をチェックし、矛盾があれば総なめをやり直すことが必要となり、論理が非常に複雑となるとともにオーバヘッドが大幅に増加する。
【０００８】
第３にＨＳＭポリシ制御の柔軟性がある。一般に階層構造の名前空間は格納されているファイル群の性格を表しているため、ＨＳＭポリシも名前空間に基づいて設定する（あるディレクトリ以下の全ファイルなど）のが自然である。しかし、上述した名前空間の排他問題により、名前空間に基づく複雑なポリシ制御を実現することが難しいという問題があった。
【０００９】
第４に二次ストレージに退避されたデータの属性情報不足の問題がある。また上述した名前空間の排他問題により、二次ストレージに格納されるデータに正しいパス名を付加することが難しい。このため、二次ストレージに格納されたデータはファイルシステムのメタデータのみからしかアクセスできないことになり、ファイルシステムのメタデータが壊れると、二次ストレージ上にデータは残っているのにもかかわらず、パス名と対応づけることができないため、ファイルデータを復旧することができないという問題があった。
【００１０】
本発明は上述した問題点を解決するためになされたものであり、ＨＳＭにおける名前空間のバックアップの世代管理を効率的に行うＨＳＭ制御プログラム、ＨＳＭ制御装置、ＨＳＭ制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決するため、本発明は、一次ストレージと二次ストレージを有するＨＳＭの制御をコンピュータに実行させるＨＳＭ制御プログラムであって、前記ＨＳＭのバックアップ毎に、該バックアップの世代番号を含む情報である世代情報を作成する世代情報作成ステップと、前記ＨＳＭにおけるファイル毎の名前空間に関する情報である名前空間情報と、前記世代情報作成ステップにより作成された世代番号を用いて該名前空間に関する情報が有効である世代番号の範囲を示す有効世代番号範囲とを名前空間情報履歴として管理する履歴管理ステップとをコンピュータに実行させるものである。
【００１２】
また、本発明に係るＨＳＭ制御プログラムにおいて、前記ＨＳＭのファイルシステムにおける前記名前空間情報の更新が検出された場合、前記履歴管理ステップは、該名前空間情報の更新の対象のファイルである更新対象ファイルに対応する前記名前空間情報履歴を更新することを特徴とするものである。
【００１３】
また、本発明に係るＨＳＭ制御プログラムにおいて、前記名前空間情報の更新が前記更新対象ファイルの作成である場合、前記履歴管理ステップは、新たに前記更新対象ファイルの現世代の名前空間情報履歴を作成し、有効世代番号範囲を現世代以降とすることを特徴とするものである。
【００１４】
また、本発明に係るＨＳＭ制御プログラムにおいて、前記名前空間情報の更新が前記更新対象ファイルのバックアップ後の最初の更新である場合、前記履歴管理ステップは、前記更新対象ファイルの現世代の名前空間情報履歴における有効世代番号範囲の終点を最終バックアップの世代番号に変更し、前記更新対象ファイルの新たに名前空間情報履歴を作成し、該名前空間情報履歴の有効世代番号範囲を現世代以降とすることを特徴とするものである。
【００１５】
また、本発明に係るＨＳＭ制御プログラムにおいて、前記履歴管理ステップは更に、外部から指定された世代番号が有効世代番号範囲内となる前記名前空間情報履歴の抽出を行い、該抽出により得られた名前空間情報履歴に対応するファイルをリストア対象のファイルとして出力することを特徴とするものである。
【００１６】
また、本発明に係るＨＳＭ制御プログラムにおいて、前記世代情報作成ステップは更に、前回のバックアップ後に更新されたファイルを前記一次ストレージから前記二次ストレージへコピーすることを特徴とするものである。
【００１７】
また、本発明に係るＨＳＭ制御プログラムにおいて、前記バックアップは、スナップショットであることを特徴とするものである。
【００１８】
また、本発明は、一次ストレージと二次ストレージを有するＨＳＭの制御を行うＨＳＭ制御装置であって、前記ＨＳＭのバックアップ毎に、該バックアップの世代番号を含む情報である世代情報を作成する世代情報作成部と、前記ＨＳＭにおけるファイル毎の名前空間に関する情報である名前空間情報と、前記世代情報作成部により作成された世代番号を用いて該名前空間に関する情報が有効である世代番号の範囲を示す有効世代番号範囲とを名前空間情報履歴として管理する履歴管理部とを備えたものである。
【００１９】
また、本発明に係るＨＳＭ制御装置において、前記ＨＳＭのファイルシステムにおける前記名前空間情報の更新が検出された場合、前記履歴管理部は、該名前空間情報の更新の対象のファイルである更新対象ファイルに対応する前記名前空間情報履歴を更新することを特徴とするものである。
【００２０】
また、本発明に係るＨＳＭ制御装置において、前記名前空間情報の更新が前記更新対象ファイルの作成である場合、前記履歴管理部は、新たに前記更新対象ファイルの現世代の名前空間情報履歴を作成し、有効世代番号範囲を現世代以降とすることを特徴とするものである。
【００２１】
また、本発明に係るＨＳＭ制御装置において、前記名前空間情報の更新が前記更新対象ファイルのバックアップ後の最初の更新である場合、前記履歴管理部は、前記更新対象ファイルの現世代の名前空間情報履歴における有効世代番号範囲の終点を最終バックアップの世代番号に変更し、前記更新対象ファイルの新たに名前空間情報履歴を作成し、該名前空間情報履歴の有効世代番号範囲を現世代以降とすることを特徴とするものである。
【００２２】
また、本発明に係るＨＳＭ制御装置において、前記履歴管理部は更に、外部から指定された世代番号が有効世代番号範囲内となる前記名前空間情報履歴の抽出を行い、該抽出により得られた名前空間情報履歴に対応するファイルをリストア対象のファイルとして出力することを特徴とするものである。
【００２３】
また、本発明に係るＨＳＭ制御装置において、前記世代情報作成部は更に、前回のバックアップ後に更新されたファイルを前記一次ストレージから前記二次ストレージへコピーすることを特徴とするものである。
【００２４】
また、本発明に係るＨＳＭ制御装置において、前記バックアップは、スナップショットであることを特徴とするものである。
【００２５】
また、本発明は、一次ストレージと二次ストレージを有するＨＳＭの制御を行うＨＳＭ制御方法であって、前記ＨＳＭのバックアップ毎に、該バックアップの世代番号を含む情報である世代情報を作成する世代情報作成ステップと、前記ＨＳＭにおけるファイル毎の名前空間に関する情報である名前空間情報と、前記世代情報作成ステップにより作成された世代番号を用いて該名前空間に関する情報が有効である世代番号の範囲を示す有効世代番号範囲とを名前空間情報履歴として管理する履歴管理ステップとを実行するものである。
【発明の効果】
【００２６】
本発明によれば、ＨＳＭにおける名前空間のバックアップの世代管理を効率的に行うことができる。
【発明を実施するための最良の形態】
【００２７】
以下、本発明の実施の形態を説明するため、その前提となる技術について図面を参照しつつ説明する。
【００２８】
（前提技術１）
前提技術１においては、ＨＳＭ制御装置であるサーバについて説明する。
【００２９】
まず、前提技術１に係るサーバを有するＨＳＭ装置の構成について説明する。
【００３０】
図１は、前提技術１に係るＨＳＭ装置の構成の一例を示すブロック図である。最近アクセスされたファイルを格納しているディスク装置などの高速ストレージ装置である一次ストレージ１、および長時間アクセスされていないファイルデータが格納されるテープライブラリ装置などの低速ストレージ装置である二次ストレージ２と、前提技術１に係るＨＳＭ制御装置であり、ファイルデータをアクセスするアプリケーションが動作するサーバ３から構成される。
【００３１】
また、サーバ３は、アプリケーション部１１、ファイルシステム制御部１２、名前空間複製部１３、名前空間追随部１４、名前空間複製ＤＢ（Database）１５、マイグレート決定部１６を備える。また、ファイルシステム制御部１２は、イベントデータ記録部２１を備える。
【００３２】
次に、サーバ３の各部について説明する。
【００３３】
イベントデータ記録部２１は、アプリケーションプログラムが発行したファイル操作要求の履歴をイベントデータとして蓄積するファイルシステム制御部１２内に配置されるプログラムである。イベントデータ記録部２１は、アプリケーション部１１が発行したファイル操作要求の内容をイベントデータに変換してメモリ上に蓄積しておき、一定量たまったところで名前空間複製部１３や名前空間追随部１４に渡す。イベントデータの受け渡しは、通信を使用してもよいし、専用のファイルを介して受け渡してもよい。
【００３４】
名前空間複製部１３は、アプリケーション部１１の動作と平行して、ファイルシステムの名前空間の複製を行うプログラムである。名前空間複製部１３は、ファイルシステムの名前空間をたどり、存在するファイルのファイル情報を取得する。このファイル情報と、ファイル情報取得中にイベントデータ記録部２１から受け取ったイベントデータを組み合わせて、名前空間の初期複製を名前空間複製ＤＢ１５として完成させる。
【００３５】
名前空間追随部１４は、名前空間の初期複製が完成した後、イベントデータ記録部２１から受け取ったイベントデータに従って複製を更新し、名前空間複製ＤＢ１５を最新の状態に維持する機能を受け持つ。また、名前空間追随部１４は、通知されたファイルアクセスやアーカイブ状態を名前空間複製ＤＢ１５に反映する役割も担う。
【００３６】
マイグレート決定部１６は、ポリシ制御の一例として、名前空間複製部１３が設定したファイルアクセス記録とユーザが設定したポリシに従い、一次ストレージ１において長時間アクセスされていないファイルを二次ストレージ２に追い出すため、ファイルシステム制御部１２に指示を出すプログラムである。通常、二次ストレージ２に追い出された（マイグレートされた）ファイルは、アプリケーション部１１がそのファイルをアクセスしたときに、ファイルシステム制御部１２が二次ストレージ２から一次ストレージ１に戻す（リコール）。また、ファイルを更新したタイミングで、ファイルシステム制御部１２により二次ストレージ２上のデータ（アーカイブデータ）が無効化される。二次ストレージ２上のデータはこのタイミングでは消えず、二次ストレージ２が不足するまで、バックアップデータとして残され、ファイルシステム障害時などのリカバリで使われる。
【００３７】
次に、イベントデータ、ファイル情報、名前空間複製ＤＢ１５の詳細について説明する。
【００３８】
まず、イベントデータについて説明する。
【００３９】
イベントデータ記録部２１により作成されるイベントデータ（ｅｖｅｎｔ）はファイルやディレクトリの生成や削除、ファイル名の変更、ファイルアクセス、アーカイブ状態変化などのファイル操作の内容を表しており、操作名と操作が行われた時刻に加え、それぞれ以下のデータを含む。ここで、アーカイブ状態変化とは、アーカイブデータの有効化・無効化、マイグレート、リコールなどの事象を含む。
【００４０】
（１）  ファイルあるいはディレクトリの作成
ｅｖｅｎｔ．ｒｅｃｔｙｐｅ  ＝  ｃｒｅａｔｅ
ｅｖｅｎｔ．ｍ＿ｉｎｏｄｅ＃  ＝  親ディレクトリのｉｎｏｄｅ番号
ｅｖｅｎｔ．ｆｔｙｐｅ  ＝
ｄｉｒ  （ｍｋｄｉｒ時）あるいはｆｉｌｅ  （ｃｒｅａｔｅ時）
ｅｖｅｎｔ．ｆｎａｍｅ  ＝  作成されたファイルの名前
ｅｖｅｎｔ．ｉｎｏｄｅ＃  ＝
作成されたファイルあるいはディレクトリのｉｎｏｄｅ番号
ｅｖｅｎｔ．ｔｉｍｅ  ＝  このイベントが発生した時刻
【００４１】
（２）  ファイルあるいはディレクトリの削除
ｅｖｅｎｔ．ｒｅｃｔｙｐｅ  ＝  ｄｅｌｅｔｅ
ｅｖｅｎｔ．ｍ＿ｉｎｏｄｅ＃  ＝  親ディレクトリのｉｎｏｄｅ番号
ｅｖｅｎｔ．ｆｔｙｐｅ  ＝  ｄｉｒ  （ｒｍｄｉｒ時）あるいはｆｉｌｅ  （ｒｅｍｏｖｅ時）
ｅｖｅｎｔ．ｉｎｏｄｅ＃  ＝  削除されたファイルあるいはディレクトリのｉｎｏｄｅ番号
ｅｖｅｎｔ．ｔｉｍｅ  ＝  このイベントが発生した時刻
【００４２】
（３）  ファイル名の変更
ｅｖｅｎｔ．ｒｅｃｔｙｐｅ  ＝  ｒｅｎａｍｅ
ｅｖｅｎｔ．ｍ＿ｉｎｏｄｅ＃  ＝  親ディレクトリのｉｎｏｄｅ番号
ｅｖｅｎｔ．ｆｔｙｐｅ  ＝
ｄｉｒ（対象がディレクトリの場合）
あるいはｆｉｌｅ（対象がファイルの場合）
ｅｖｅｎｔ．ｉｎｏｄｅ＃  ＝
対象のファイルあるいはディレクトリのｉｎｏｄｅ番号
ｅｖｅｎｔ．ｔａｒｇｅｔ．ｍ＿ｉｎｏｄｅ＃  ＝
移動先ディレクトリのｉｎｏｄｅ番号
ｅｖｅｎｔ．ｔａｒｇｅｔ．ｆｎａｍｅ  ＝
変更後のファイルあるいはディレクトリ名
ｅｖｅｎｔ．ｔｉｍｅ  ＝  このイベントが発生した時刻
【００４３】
（４）  ファイルアクセス（アプリケーションプログラムがファイルをｒｅａｄ／ｗｒｉｔｅ）
ｅｖｅｎｔ．ｒｅｃｔｙｐｅ  ＝  ａｃｃｅｓｓ
ｅｖｅｎｔ．ｉｎｏｄｅ＃  ＝  ファイルのｉｎｏｄｅ番号
ｅｖｅｎｔ．ｔｉｍｅ  ＝  このイベントが発生した時刻
【００４４】
（５）  アーカイブ状態変化
ｅｖｅｎｔ．ｒｅｃｔｙｐｅ  ＝  ａｒｃｈｉｖｅ
ｅｖｅｎｔ．ｉｎｏｄｅ＃  ＝  ファイルのｉｎｏｄｅ番号
ｅｖｅｎｔ．ｍｉｇｒａｔｅ  ＝
オン（マイグレート状態となった）
あるいはオフ（リコールが起動され、マイグレート状態でなくなった）
ｅｖｅｎｔ．ａｒｃｈｉｖｅ  ＝
オン（二次記憶へのファイルデータの書き出しが完了し、アーカイブデータが有効となった）
あるいはオフ（ファイルが更新された結果アーカイブデータが無効となった）
ｅｖｅｎｔ．ｔｉｍｅ  ＝  このイベントが発生した時刻
【００４５】
次に、ファイル情報について説明する。
【００４６】
名前空間複製復元中にファイルシステムから取得するファイル情報（ｆｓｔａｔ）には、以下のものがある。
ｆｓｔａｔ．ｍ＿ｉｎｏｄｅ＃  ＝  親ディレクトリのｉｎｏｄｅ番号
ｆｓｔａｔ．ｆｔｙｐｅ  ＝  ｄｉｒ（対象がディレクトリの場合）
あるいはｆｉｌｅ  （対象がファイルの場合）
ｆｓｔａｔ．ｆｎａｍｅ  ＝  ディレクトリあるいはファイルの名前
ｆｓｔａｔ．ｉｎｏｄｅ＃  ＝
ファイルあるいはディレクトリのｉｎｏｄｅ番号
ｆｓｔａｔ．ａｒｃｈｉｖｅ  ＝  オン（アーカイブデータが有効なとき）
あるいはオフ（アーカイブデータが無効なとき）
ｆｓｔａｔ．ｍｉｇｒａｔｅ  ＝  オン（マイグレート状態のとき）
あるいはオフ（マイグレートされていないとき）
ｆｓｔａｔ．ａｔｉｍｅ  ＝  ファイルを最後にアクセスした時刻
ｆｓｔａｔ．ｔｉｍｅ  ＝  ファイル情報取得時刻
【００４７】
次に、名前空間複製ＤＢ１５の構成について説明する。
【００４８】
名前空間複製ＤＢ１５は、以下のカラム（ｄｂｅ）を持つ、ディレクトリに設定されているファイルあるいはディレクトリ要素ごとにタプルを持つリレーショナルＤＢである。
【００４９】
ｄｂｅ．ｍ＿ｉｎｏｄｅ＃  ＝  親ディレクトリのｉｎｏｄｅ番号
ｄｂｅ．ｆｔｙｐｅ  ＝  ｄｉｒ（このタプルがディレクトリをあらわすとき）  あるいは  ｆｉｌｅ  （このタプルがファイルを表すとき）
ｄｂｅ．ｆｎａｍｅ  ＝  ファイルあるいはディレクトリの名前
ｄｂｅ．ｉｎｏｄｅ＃  ＝  ファイルあるいはディレクトリのｉｎｏｄｅ番号
ｄｂｅ．ａｒｃｈｉｖｅ  ＝  オン（アーカイブデータが有効なとき）
あるいはオフ（アーカイブデータが無効なとき）
ｄｂｅ．ｍｉｇｒａｔｅ  ＝  オン（マイグレート状態のとき）
あるいはオフ（マイグレートされていないとき）
ｄｂｅ．ａｔｉｍｅ  ＝  ファイルを最後にアクセスした時刻
ｄｂｅ．ａｃｔｉｖｅ  ＝  オン（ファイル情報取得済みのとき）
あるいはオフ（まだファイル情報を取得していないとき）
【００５０】
次に、サーバ３の動作について説明する。
【００５１】
図２は、前提技術１に係るファイル情報取得処理の動作の一例を示すフローチャートである。サーバ３は、名前空間複製処理（Ｓ１１）、名前空間追随処理（Ｓ１２）、マイグレート処理（Ｓ１３）を実行する。
【００５２】
次に、サーバ３における動作の詳細について説明する。
【００５３】
まず、名前空間複製処理について説明する。
【００５４】
名前空間複製処理は、名前空間複製部１３が名前空間の初期複製を作成する処理であり、ファイル情報取得処理とイベントデータ反映処理からなる。また、名前空間複製処理は、障害発生後のサーバ再立ち上げ時など、メモリ上に蓄積されていたイベントデータが失われ、名前空間複製ＤＢ１５の内容がファイルシステムの最新状態を反映できなくなったときに、名前空間複製ＤＢ１５を再作成する目的で動作する。このように名前空間複製ＤＢ１５を動的に再作成する構成では、イベントデータをイベント発生時に不揮発化する必要がなく、小さい容量のメモリに蓄積するのみで良く、後の名前空間複製ＤＢの追随のオーバヘッドを削減することができる。
【００５５】
名前空間複製部１３は、まず、ファイル情報取得処理として、親ディレクトリをオープンし、子ファイル名あるいは子ディレクトリ名を引数として指定し、ファイルシステムの情報取得機能（ｇｅｔｉｎｆｏ）を発行することにより求める。また、名前空間複製部１３は、パス名昇順（あるいは降順）とした名前空間をたどることにより、ファイルシステム内に存在するディレクトリ、ファイルの情報を漏れなく求める。この過程で見逃したものは、イベントデータとして記録されているので、後で補正する。
【００５６】
図３は、名前空間におけるディレクトリの階層構造の一例を示す図である。この名前空間は、ディレクトリの階層構造を持ち、ディレクトリ名やファイル名を昇順に左から右へソートしたものである。図４は、前提技術１に係るファイル情報取得処理の動作の一例を示すフローチャートである。
【００５７】
まず、名前空間複製部１３は、対象ファイルシステムのルートディレクトリを基点とし、ディレクトリを左下方向（ディレクトリ名の昇順）に順にたどり、最も左下のディレクトリを見つける。見つけた最も左下のディレクトリを対象ディレクトリとし、検索の過程で求めた対象ディレクトリのパス名を対象ディレクトリパス名とする（Ｓ２０１）。次に、名前空間複製部１３は、対象ディレクトリのファイル情報および対象ディレクトリ内に存在する全ファイルのファイル情報をファイル名昇順にひとつずつ順に求め、ファイル情報記録ファイルの末尾に順に書き込む（Ｓ２０２）。次に、名前空間複製部１３は、対象ディレクトリがルートディレクトリであるか否かの判断を行う（Ｓ２０３）。対象ディレクトリがルートディレクトリである場合（Ｓ２０３，Ｙ）、全ファイルを処理し終わったことを意味するのでファイル情報取得処理を終了する。
【００５８】
一方、対象ディレクトリがルートディレクトリでない場合（Ｓ２０３，Ｎ）、名前空間複製部１３は、対象ディレクトリパス名から、対象ディレクトリのひとつ上のディレクトリパス名を求める、すなわち、パス名を構成する最終構成ディレクトリ名を取り除いたパス名を新しいパス名とする。次に、名前空間複製部１３は、求めたディレクトリパス名をルートディレクトリから下方に順に再度検索し、この検索で存在を確認できた最終ディレクトリを基点ディレクトリとする（Ｓ２０５）。パスの途中のディレクトリがｒｅｎａｍｅなどで名前空間の別の位置に動かされている場合、途中でみつからなくなるが、この部分は後続のファイル情報取得処理で見つかるか、イベントデータで必ず通知され、後で補正されるため、無視しても問題ない。
【００５９】
次に、名前空間複製部１３は、基点ディレクトリの内容を読み込み、基点ディレクトリ内に未処理のディレクトリがあるか否かの判断を行う（Ｓ２０６）。未処理のディレクトリがある場合（Ｓ２０６，Ｙ）、名前空間複製部１３は、未処理の最も左下のディレクトリを求め、これを対象ディレクトリとし（Ｓ２０７）、処理Ｓ２０２に移行する。未処理のディレクトリが存在しない、すなわち基点ディレクトリ内に対象ディレクトリパス名で示されるより大きなファイル名をもつディレクトリが存在しない場合（Ｓ２０６，Ｎ）、対象ディレクトリパス名を基点ディレクトリのパス名に設定し（Ｓ２０８）、処理Ｓ２０３に移行する。
【００６０】
次に、名前空間複製部１３は、対象ファイルシステムのファイル情報取得処理が全て終了すると、その間に発生したイベントデータをファイル情報に反映するイベントデータ反映処理を行う。ファイル情報記録ファイルを先頭から順によみ、ファイル情報記録ファイルに記録されている全てのファイル情報を処理したら、イベントデータ反映処理は終了する。
【００６１】
図５は、前提技術１に係るイベントデータ反映処理の動作の一例を示すフローチャートである。まず、名前空間複製部１３は、未処理のファイル情報を取り出し（Ｓ３０２）、ファイル情報に設定されていた情報取得時刻以前の時刻を持つ、イベントデータを順に取り出し、名前空間複製ＤＢ１５に反映する（Ｓ３０３）。
【００６２】
ここで、名前空間複製ＤＢ１５への反映について、イベントデータが、削除系、生成系、ファイル名の変更、ファイルアクセス、アーカイブ状態変化のそれぞれの場合について説明する。
【００６３】
イベントデータが削除系（ファイル削除，ディレクトリ削除）の場合、名前空間複製部１３は、削除対象ファイルあるいはディレクトリが既に名前空間複製ＤＢ１５に登録済みなら削除する。そうでなければ何もしない。ここで、以下の条件を全て満たすエントリが存在する場合、登録済みとみなす。
【００６４】
ｄｂｅ．ｉｎｏｄｅ＃  ＝＝  ｅｖｅｎｔ．ｉｎｏｄｅ＃
ｄｂｅ．ｍ＿ｉｎｏｄｅ＃  ＝＝  ｅｖｅｎｔ．ｍ＿ｉｎｏｄｅ＃
ｄｂｅ．ｆｎａｍｅ  ＝＝  ｅｖｅｎｔ．ｆｎａｍｅ
【００６５】
イベントデータが生成系（ファイル生成，ディレクトリ生成）の場合、名前空間複製部１３は、作成されたファイルあるいはディレクトリが名前空間複製ＤＢ１５に登録済みでなければ情報取得済みで登録する。登録済みならこのイベントデータを無視し、何もしない。ここで、以下の条件を全て満たすエントリが存在する場合、登録済みとみなす。
【００６６】
ｄｂｅ．ｉｎｏｄｅ＃  ＝＝  ｅｖｅｎｔ．ｉｎｏｄｅ＃
ｄｂｅ．ｍ＿ｉｎｏｄｅ＃  ＝＝  ｅｖｅｎｔ．ｍ＿ｉｎｏｄｅ＃
ｄｂｅ．ｆｎａｍｅ  ＝＝  ｅｖｅｎｔ．ｆｎａｍｅ
【００６７】
未登録時の設定内容を以下に示す。
【００６８】
ｄｂｅ．ｍ＿ｉｎｏｄｅ＃  ＝  ｅｖｅｎｔ．  ｍ＿ｉｎｏｄｅ＃
ｄｂｅ．ｆｔｙｐｅ  ＝  ｅｖｅｎｔ．  ｆｔｙｐｅ
ｄｂｅ．ｆｎａｍｅ  ＝  ｅｖｅｎｔ．ｆｎａｍｅ
ｄｂｅ．ｉｎｏｄｅ＃  ＝  ｅｖｅｎｔ．ｉｎｏｄｅ＃
ｄｂｅ．ａｒｃｈｉｖｅ  ＝  オフ
ｄｂｅ．ｍｉｇｒａｔｅ  ＝  オフ
ｄｂｅ．ａｔｉｍｅ  ＝  ｅｖｅｎｔ．ｔｉｍｅ
ｄｂｅ．ａｃｔｉｖｅ  ＝  オン
【００６９】
イベントデータがファイル名の変更（ｅｖｅｎｔ．ｒｅｃｔｙｐｅ  ＝＝  ｒｅｎａｍｅ）の場合、名前空間複製部１３は、改名後と同じ名前をもつファイルあるいはディレクトリがすでに登録されていた場合（ファイル名と親ｉｎｏｄｅ番号で評価）、そのエントリを名前空間複製ＤＢ１５から削除する。ここで、以下の条件を全て満たすエントリが存在する場合、登録済みとみなす。
【００７０】
ｄｂｅ．ｎａｍｅ  ＝＝  ｅｖｅｎｔ．ｔａｒｇｅｔ．ｆｎａｍｅ
ｄｂｅ．ｍ＿ｉｎｏｄｅ＃  ＝＝
ｅｖｅｎｔ．ｔａｒｇｅｔ．ｍ＿ｉｎｏｄｅ＃
ｄｂｅ．ｆｎａｍｅ  ＝＝  ｅｖｅｎｔ．ｔａｒｇｅｔ．ｆｎａｍｅ
【００７１】
ここで、対象ファイルが名前空間複製ＤＢ１５に既に登録されているならそのエントリの親情報とファイル名を変更する。ここで、以下の条件を全て満たすエントリが存在する場合、登録済みとみなす。
【００７２】
ｄｂｅ．ｉｎｏｄｅ＃  ＝＝  ｅｖｅｎｔ．ｉｎｏｄｅ＃
ｄｂｅ．ｍ＿ｉｎｏｄｅ＃  ＝＝  ｅｖｅｎｔ．ｍ＿ｉｎｏｄｅ＃
ｄｂｅ．ｆｎａｍｅ  ＝＝  ｅｖｅｎｔ．ｆｎａｍｅ
【００７３】
このときの変更内容を以下に示す。
【００７４】
ｄｂｅ．ｍ＿ｉｎｏｄｅ＃  ＝  ｅｖｅｎｔ．ｔａｒｇｅｔ．ｍ＿ｉｎｏｄｅ＃
ｄｂｅ．ｎａｍｅ  ＝  ｅｖｅｎｔ．ｔａｒｇｅｔ．ｆｎａｍｅ
【００７５】
ここで、対象ファイルが未登録なら、改名後のファイルを名前空間複製ＤＢ１５に新しいエントリとして登録する。
【００７６】
ｄｂｅ．ｉｎｏｄｅ＃  ＝  ｅｖｅｎｔ．ｉｎｏｄｅ＃
ｄｂｅ．ｍ＿ｉｎｏｄｅ＃  ＝  ｅｖｅｎｔ．ｔａｒｇｅｔ．ｍ＿ｉｎｏｄｅ＃
ｄｂｅ．ｎａｍｅ  ＝  ｅｖｅｎｔ．ｔａｒｇｅｔ．ｆｎａｍｅ
ｄｂｅ．ａｃｔｉｖｅ  ＝  オフ
【００７７】
イベントデータがファイルアクセス（ｅｖｅｎｔ．ｒｅｃｔｙｐｅ  ＝＝  ａｃｃｅｓｓ）の場合、名前空間複製部１３は、対象ｉｎｏｄｅが未登録ならこのイベントデータを無視する。登録されていたら、登録済みのすべてのエントリのファイル最終アクセス時刻、アーカイブ情報、リコール情報を更新（ハードリンクがあるため）する。ここで、以下の条件を全て満たすエントリが存在する場合、登録済みとみなす。
【００７８】
ｄｂｅ．ｉｎｏｄｅ＃  ＝＝  ｅｖｅｎｔ．ｉｎｏｄｅ＃
【００７９】
このときの変更内容を以下に示す。
【００８０】
ｄｂｅ．ａｔｉｍｅ  ＝  ｅｖｅｎｔ．ｔｉｍｅ
【００８１】
イベントデータがアーカイブ状態変化（ｅｖｅｎｔ．ｒｅｃｔｙｐｅ  ＝＝  ａｒｃｈｉｖｅ）の場合、対象ｉｎｏｄｅが未登録ならこのイベントデータを無視。登録されていたら、すべてのエントリのアーカイブ情報を更新（ハードリンクがあるため）する。ここで、以下の条件を全て満たすエントリが存在する場合、登録済みとみなす。
【００８２】
ｄｂｅ．ｉｎｏｄｅ＃  ＝＝  ｅｖｅｎｔ．ｉｎｏｄｅ＃
【００８３】
このときの変更内容を以下に示す。
【００８４】
ｄｂｅ．ａｒｃｈｉｖｅ  ＝  ｅｖｅｎｔ．ａｒｃｈｉｖｅ
ｄｂｅ．ｍｉｇｒａｔｅ  ＝  ｅｖｅｎｔ．ｍｉｇｒａｔｅ
【００８５】
次に、名前空間複製部１３は、ファイル情報の内容を名前空間複製ＤＢ１５に未登録なら情報取得済みとして登録する（Ｓ３０５）。同一ｉｎｏｄｅ番号を持つタプルが登録されていた場合には、登録されている全てのエントリの内容を変更する。ここで、以下の条件をすべて満たすエントリが存在するとき、登録済みとみなす。
【００８６】
ｄｂｅ．ｉｎｏｄｅ＃  ＝＝  ｆｓｔａｔ．ｉｎｏｄｅ＃
ｄｂｅ．ｆｎａｍｅ  ＝＝  ｆｓｔａｔ．ｆｎａｍｅ
ｄｂｅ．ｍ＿ｉｎｏｄｅ＃  ＝＝  ｆｓｔａｔ．ｍ＿ｉｎｏｄｅ＃
【００８７】
また、未登録時の設定内容を以下に示す。
【００８８】
ｄｂｅ．ｍ＿ｉｎｏｄｅ＃  ＝  ｆｓｔａｔ．  ｍ＿ｉｎｏｄｅ＃
ｄｂｅ．ｆｔｙｐｅ  ＝  ｆｓｔａｔ．  ｆｔｙｐｅ
ｄｂｅ．ｆｎａｍｅ  ＝  ｆｓｔａｔ．ｆｎａｍｅ
ｄｂｅ．ｉｎｏｄｅ＃  ＝  ｆｓｔａｔ．ｉｎｏｄｅ＃
ｄｂｅ．ａｒｃｈｉｖｅ  ＝  ｆｓｔａｔ．ａｒｃｈｉｖｅ
ｄｂｅ．ｍｉｇｒａｔｅ  ＝  ｆｓｔａｔ．ｍｉｇｒａｔｅ
ｄｂｅ．ａｔｉｍｅ  ＝  ｆｓｔａｔ．ａｔｉｍｅ
ｄｂｅ．ａｃｔｉｖｅ  ＝  オン
【００８９】
また、同一ｉｎｏｄｅ番号が既に登録済み（すなわちｄｂｅ．ｉｎｏｄｅ＃  ＝  ｆｓｔａｔ．ｉｎｏｄｅ＃の場合）の設定内容を以下に示す。
【００９０】
ｄｂｅ．ａｒｃｈｉｖｅ  ＝  ｆｓｔａｔ．ａｒｃｈｉｖｅ
ｄｂｅ．ｍｉｇｒａｔｅ  ＝  ｆｓｔａｔ．ｍｉｇｒａｔｅ
ｄｂｅ．ａｔｉｍｅ  ＝  ｆｓｔａｔ．ａｔｉｍｅ
ｄｂｅ．ａｃｔｉｖｅ  ＝  オン
【００９１】
次に、名前空間複製部１３は、記録されていた全ファイル情報の処理を終了すると、名前空間の変更との競合のため情報取得で見逃した名前空間のセグメント（情報取得済みが表示されていないディレクトリ）が存在するか否かの判断を行う（Ｓ３１１）。存在しない場合（Ｓ３１１，Ｎ）、このフローを終了する。一方、存在する場合（Ｓ３１１，Ｙ）、そのディレクトリをルートとするファイル情報取得処理、およびその間に発生したイベントデータ反映処理を行い（Ｓ３１２）、処理Ｓ３１１へ戻り、次の情報取得済みが表示されていないディレクトリを見つけ、この処理を繰り返す。
【００９２】
次に、名前空間追随処理について説明する。
【００９３】
名前空間追随部１４は、名前空間複製処理が完了した後に発生したイベントデータをイベントデータ記録部２１から受け取り、名前空間複製ＤＢ１５に順次反映していく。イベントデータ反映処理は名前空間複製処理とほほ同じだが、ファイル情報を用いない分、単純となる。
【００９４】
イベントデータが削除系ファイル操作イベント（ファイル削除、ディレクトリ削除）である場合、名前空間追随部１４は、イベントデータで示されるｉｎｏｄｅ番号、親ｉｎｏｄｅ番号、ファイル名を全て含むエントリを名前空間複製ＤＢ１５上から削除する。
【００９５】
イベントデータが生成系ファイル操作イベント（ファイル生成、ディレクトリ生成）である場合、名前空間追随部１４は、イベントデータで示されるｉｎｏｄｅ番号を含むエントリを名前空間複製ＤＢ１５上に登録し、イベントデータで伝えられた属性（タイプ）、および親ｉｎｏｄｅ番号を設定する。
【００９６】
イベントデータがファイル名の変更（ｒｅｎａｍｅ）でターゲットと同じファイルがあれば、名前空間追随部１４は削除する。また、名前空間追随部１４は、ソースの親属性を変更する。
【００９７】
イベントデータがファイルアクセスイベントである場合、名前空間追随部１４は、イベントデータで伝えられたアクセス時刻をｉｎｏｄｅ番号で特定し、名前空間複製ＤＢ１５に設定する。
【００９８】
イベントデータがアーカイブ状態変化である場合、名前空間追随部１４は、アーカイブ情報を更新する。
【００９９】
次に、マイグレート処理について説明する。
【０１００】
マイグレート決定部１６は、ファイルシステムが提供するコマンドなどを使い、一次ストレージ１の空きスペース状況を定期的に調べ、空きスペース量がユーザにより指定された量以下になった場合、名前空間複製ＤＢ１５に設定されている情報を使って、マイグレートの対象ファイルを決定し、ファイルシステム制御部１２にマイグレートを要求する。この際、マイグレート決定部１６は、名前空間複製ＤＢ１５から求めたファイルのパス名をファイルシステム制御部１２に渡し、ファイルデータとともに二次ストレージ２に書き出してもらう。マイグレート決定処理は、ユーザポリシに応じて様々な実装を行うことができるが、一例を以下に示す。
【０１０１】
図６は、前提技術１に係るマイグレート決定処理の動作の一例を示すフローチャートである。まず、マイグレート決定部１６は、一次ストレージ１の不足が深刻であるか否かの判断を行う（Ｓ４０１）。
【０１０２】
一次ストレージ１の不足が深刻である場合（Ｓ４０１，Ｙ）、マイグレート決定部１６は、名前空間複製ＤＢ１５を検索し、アーカイブ済みでかつマイグレート済みではないファイルを見つけ（Ｓ４１１）、見つけた全てのファイルに対し以下のリリース処理（一次ストレージ域の解放）を行う。次に、マイグレート決定部１６は、見つけたファイルのうち未処理のファイルがあるか否かの判断を行う（Ｓ４１２）。
【０１０３】
未処理のファイルがなければ（Ｓ４１２，Ｎ）、このフローを終了する。一方、未処理のファイルがあれば（Ｓ４１２，Ｙ）、マイグレート決定部１６は、名前空間複製ＤＢ１５に設定されているｉｎｏｄｅ番号を引数としてファイルシステム制御部１２に対象ファイルのリリース（一次ストレージ解放）を要求する（Ｓ４１３）。次に、マイグレート決定部１６は、ファイルシステム制御部１２からの応答を得ると、処理Ｓ４１２へ戻り、次の対象ファイルの処理を行う。
【０１０４】
ここで、マイグレート決定部１６は、名前空間複製ＤＢ１５はファイルシステムに遅れて追随するため、実際にはファイルが存在しなくなっている場合や、アーカイブが無効になっている場合があり、この場合にはファイルシステム制御部１２がエラー応答を返す。ファイルがアーカイブ済みであった場合、ファイルシステム制御部１２はそのファイルに割り当てていた一次ストレージ領域を解放して正常応答を返す。
【０１０５】
一方、一次ストレージ１が不足しているがそれほど深刻ではない場合（Ｓ４０１、Ｎ）、マイグレート決定部１６は、深刻な不足が発生したときに、事態をただちに改善できるようにするため、一定時間以上アクセスされていないファイルをアーカイブする。このため、マイグレート決定部１６は、名前空間複製ＤＢ１５を検索し、最終アクセス時刻が所定の時刻（例えば現時刻―１日）以前でかつ、アーカイブ無効（アーカイブ済みでない）なものを見つける（Ｓ４２１）。次に、マイグレート決定部１６は、見つけたファイルのうち未処理のファイルがあるか否かの判断を行う（Ｓ４２２）。
【０１０６】
未処理のファイルがなければ（Ｓ４２２，Ｎ）、このフローを終了する。一方、未処理のファイルがあれば（Ｓ４２２，Ｙ）、マイグレート決定部１６は、名前空間複製ＤＢ１５に設定されている親ｉｎｏｄｅ番号をキーとして、繰り返し名前空間複製ＤＢ１５を検索することで、ファイルのパス名を求める（Ｓ４２３）。次に、マイグレート決定部１６は、ｉｎｏｄｅ番号、ファイルパス名を引数としたアーカイブ要求をファイルシステム制御部１２に出す（Ｓ４２４）。ここで、ファイルシステム制御部１２は、指定されたファイルのデータとファイルパス名、ｉｎｏｄｅ番号を一括して二次ストレージ上に書き出し、処理Ｓ４２２へ戻り、次の対象ファイルの処理を行う。ここで、要求されたファイルが存在しなくなっている場合、ファイルシステム制御部１２はエラーを応答し、要求を無視する。
【０１０７】
次に、その他の各部の動作について説明する。
【０１０８】
まず、ファイルシステム制御部１２について説明する。
【０１０９】
まず、マイグレート決定部１６からのリリース要求があった場合、ファイルシステム制御部１２は、リリース要求を処理し、二次ストレージにファイルデータのコピーが存在する（アーカイブ済み）なら、一次ストレージを返却し、マイグレート済みとする。このとき、イベントデータ記録部２１はアーカイブ状態変化イベントを作成する。
【０１１０】
ｅｖｅｎｔ．ｒｅｃｔｙｐｅ  ＝  ａｒｃｈｉｖｅ
ｅｖｅｎｔ．ａｒｃｈｉｖｅ  ＝  オン
ｅｖｅｎｔ．ｍｉｇｒａｔｅ  ＝  オン
【０１１１】
また、マイグレート決定部１６からのアーカイブ要求があった場合、ファイルシステム制御部１２は、アーカイブ要求を処理し、ファイルデータの二次ストレージ２への書き出しを起動し、マイグレート決定部１６に復帰する。この際、二次ストレージ２に書き出すデータのヘッダ部にファイルのマイグレート決定部１６から通知されたファイルのパス名を付加して書き出す。二次ストレージ２への書き出しが完了すると、イベントデータ記録部２１はアーカイブ状態変化イベントを作成する。
【０１１２】
ｅｖｅｎｔ．ｒｅｃｔｙｐｅ  ＝  ａｒｃｈｉｖｅ
ｅｖｅｎｔ．ａｒｃｈｉｖｅ  ＝  オン
ｅｖｅｎｔ．ｍｉｇｒａｔｅ  ＝  オフ
【０１１３】
また、アプリケーション部１１がマイグレート済みファイルをアクセスしようとした場合、ファイルシステム制御部１２は、アプリケーション部１１がアクセスしようとしたタイミングで、一次ストレージ１上に領域を新たに割り当て、二次ストレージ２上のデータをその領域に読み込む。その後、イベントデータ記録部２１は、リコール完了を表示したアーカイブ状態変化イベントを作成する。
【０１１４】
ｅｖｅｎｔ．ｒｅｃｔｙｐｅ  ＝  ａｒｃｈｉｖｅ
ｅｖｅｎｔ．ａｒｃｈｉｖｅ  ＝  オン
ｅｖｅｎｔ．ｍｉｇｒａｔｅ  ＝  オフ
【０１１５】
また、アプリケーション部１１がファイル操作（ファイル生成・削除、ディレクトリ生成・削除、ファイルｒｅａｄ／ｗｒｉｔｅ）を要求した場合、ファイルシステム制御部１２は要求を処理し、正常に完了した時点で、イベントデータ記録部２１は対応するイベントデータを作成する。
【０１１６】
名前空間複製部１３からｇｅｔｉｎｆｏでファイル情報を要求された場合、ファイルシステム制御部１２は、指定されたファイルが親ディレクトリに存在することを確認した上で、指定されたファイルのファイル情報を返す。存在しなければ、エラーを応答。エラーが返された場合の名前空間複製部１３はそのファイルがなかったものとして処理を続ける。
【０１１７】
次に、イベントデータ記録部２１について説明する。
【０１１８】
イベントデータ記録部２１は、ファイルシステム制御部１２内に存在し、ファイルシステム制御部１２の説明で述べたタイミングでイベントデータを作成し、メモリ上に蓄積する部分である。また、イベントデータ記録部２１は、メモリ上に蓄積されたイベントデータが一定量以上となった、あるいは最後に通知してから、一定時間経過したときに、メモリ上に蓄積されていたイベントデータを一括して、名前空間追随部１４あるいは名前空間複製部１３に通知する。また、システム停止時にも、イベントデータ記録部２１が蓄積していたイベントデータを名前空間追随部１４に通知し、名前空間追随部１４がメモリ上に蓄積されているイベントデータを名前空間複製ＤＢ１５に全て反映する、システム停止処理を行う。
【０１１９】
また、イベントデータ記録部２１では、通知するデータ量を削減するため、以下の最適化を施す。まず、イベントデータ記録部２１がファイルアクセスイベントを作成する場合、メモリ上に蓄積されている未通知のイベントデータの中に同じファイルに対するファイルアクセスイベントが含まれているなら、後続のファイルアクセスイベントは捨てる。すなわち、メモリ上に蓄積しない。また、イベントデータ記録部２１がファイル削除イベントの作成を依頼されたときに、対応するファイル生成イベントが未通知のイベントデータとして含まれるなら、ファイル生成イベントをメモリ上で無効化し、イベントデータ通知の対象から取り除く。
【０１２０】
次に、サーバ３におけるシステム立ち上げの処理について説明する。
【０１２１】
システムを正常終了した場合、上述したように名前空間追随部１４がメモリ上に滞留していたイベントデータを一括して名前空間複製ＤＢ１５に反映する正常終了処理を行うため、次回立ち上げ時に名前空間複製部１３を動作させる必要はない。一方、障害発生の場合、その後の再立ち上げ時には、名前空間複製部１３を動作させ、名前空間複製ＤＢ１５を再初期化するシステム異常終了後起動処理を行う。なお、この場合でも、障害発生直前の名前空間情報は残っているので、名前空間複製の再初期化が完了するまでの間にマイグレーション対象を決定する必要が発生した場合には、マイグレート決定部は古い複製を使って処理を行う。
【０１２２】
なお、前提技術１においては、名前空間複製ＤＢ１５に基づくポリシ制御の例としてマイグレート決定部１６について説明したが、ＨＳＭ制御における他のポリシ制御を名前空間複製ＤＢ１５に基づいて行う構成としても良い。
【０１２３】
上述した前提技術１のようなＨＳＭ装置において、一次ストレージ１のファイルが更新されると、任意のタイミングでデータを二次ストレージ２に新たに格納していくことで、過去のデータを累積的に保管する。ある時点でのＨＳＭシステムのスナップショットとしてのバックアップを作成する場合、その時点の名前空間複製ＤＢ１５のバックアップも作成する必要がある。また、リストアにおいて、名前空間複製ＤＢ１５のバックアップから名前空間複製ＤＢ１５を復元し、その情報を元にファイルを抽出し一次ストレージ１のリストアを行う必要がある。ここで、名前空間複製ＤＢ１５のバックアップ処理、名前空間複製ＤＢ１５の復元処理、リストア対象のファイルの抽出処理の負荷は大きい。
【０１２４】
また、ファイルシステムのみで実現している従来のＨＳＭ装置におけるバックアップにおいて、その時点でのファイルシステム内の情報を別媒体に保存する必要があり、その処理の負荷は大きい。
【０１２５】
以下、本発明の実施の形態について図面を参照しつつ説明する。
【０１２６】
実施の形態１．
本実施の形態では、前提技術１と同様にして名前空間の複製を作成、更新するＨＳＭシステムにおいて、名前空間のバックアップの世代管理を効率的に行うＨＳＭシステムについて説明する。
【０１２７】
まず、本実施の形態に係るＨＳＭシステムの構成について説明する。
【０１２８】
図７は、本実施の形態に係るＨＳＭシステムの構成の一例を示すブロック図である。この図において、図１と同一符号は図１に示された対象と同一又は相当物を示しており、ここでの説明を省略する。このＨＳＭシステムは、一次ストレージ１、二次ストレージ２、運用サーバ１０２、ＨＳＭ制御サーバ１０３（ＨＳＭ制御装置）を備える。
【０１２９】
運用サーバ１０２は、ファイルシステム制御部１２を備える。ＨＳＭ制御サーバ１０３は、ストレージ管理部１３１、ストレージ管理ＤＢ１３２、ストレージ管理ＤＢバックアップ１３３を備える。ストレージ管理部１３１は、世代管理テーブル１４１、名前空間情報テーブル１４２を備える。なお、前提技術１における名前空間複製部１３、名前空間追随部１４、マイグレート決定部１６は、本実施の形態におけるストレージ管理部１３１に対応する。
【０１３０】
また、世代情報作成ステップは、本実施の形態におけるストレージ管理部１３１による世代管理テーブル１４１の管理に対応する。また、履歴管理ステップは、本実施の形態におけるストレージ管理部１３１による名前空間情報テーブル１４２の管理に対応する。また、世代情報作成部は、本実施の形態におけるストレージ管理部１３１のうち世代管理テーブル１４１の管理機能に対応する。また、履歴管理部は、本実施の形態におけるストレージ管理部１３１のうち名前空間情報テーブル１４２の管理機能に対応する。
【０１３１】
ストレージ管理ＤＢバックアップ１３３は、ストレージ管理ＤＢ１３２のディスク故障時など、ストレージ管理ＤＢ１３２全体の復旧のために作成されるバックアップであり、最新のバックアップが作成されるのみで世代管理は不要である。
【０１３２】
次に、ストレージ管理ＤＢ１３２について説明する。
【０１３３】
図８は、本実施の形態に係る世代管理テーブル１４１の内容の第１の例を示す表である。世代管理テーブル１４１は、バックアップの世代情報を管理するテーブルである。１レコードは、１バックアップ世代の世代情報であり、バックアップの取得日時ｔｉｍｅｓｔａｍｐ、世代番号ｇｅｎを持つ。世代番号は、バックアップの取得毎に順に割り当てられる番号である。
【０１３４】
図９は、本実施の形態に係る名前空間情報テーブル１４２の内容の第１の例を示す表である。名前空間情報テーブル１４２は、名前空間複製ＤＢ１５のレコードと同様の名前空間情報を持つ現世代のレコードに加えて、世代毎の名前空間情報の差分を持つレコードを管理するテーブルである。また、各レコード（名前空間情報履歴）は、名前空間情報に加えて、その名前空間情報が有効である世代番号の範囲を表す有効世代番号範囲を含む。名前空間情報テーブル１４２における各レコードは、ファイル名（パス名を含む）ｎａｍｅ、その他のファイル属性情報（ユーザ名ｕｓｅｒ、グループ名ｇｒｏｕｐ、ｉｎｏｄｅ更新時刻ｃｔｉｍｅ、データ更新時刻ｍｔｉｍｅ）、二次ストレージデータ識別子ａｒｃｈｉｖｅｉｄ、有効世代番号範囲ｇｅｎ（ｆｒｏｍ−ｔｏ）を持つ。有効世代番号範囲は、当該レコードが有効である世代番号の範囲を、開始世代番号と終了世代番号で表す。また、現世代のレコードにおいて有効世代番号範囲は、開始世代番号のみで終了世代番号はない（終了世代番号“−”は∞を表す）。
【０１３５】
次に、ストレージ管理部１３１によるスナップショット作成処理について説明する。ストレージ管理部１３１は、スナップショット作成処理において、ファイルデータのスナップショットを作成するデータスナップショット作成処理を行い、名前空間のスナップショットを作成する名前空間スナップショット作成処理を行う。ここで、ストレージ管理部１３１は、データスナップショット作成処理として、一次ストレージ１のファイルデータのうち、アーカイブが行われていないファイルデータを二次ストレージ２へ退避する。また、ストレージ管理部１３１は、名前空間スナップショット作成処理として、世代管理テーブル１４１に新規のレコードを追加し、そのレコードにスナップショットを作成した日時と新規の世代番号を設定する。この処理だけで、名前空間スナップショット作成処理は完了する。
【０１３６】
次に、ストレージ管理部１３１による名前空間情報テーブル更新処理について説明する。
【０１３７】
図１０は、本実施の形態に係る名前空間情報テーブル更新処理の第１の動作の一例を示すフローチャートである。図１１は、本実施の形態に係る名前空間情報テーブル更新処理の第２の動作の一例を示すフローチャートである。ストレージ管理部１３１がファイルシステム制御部１２から名前空間の更新内容を示すイベントデータを受け取ると、このフローが開始する。まず、ストレージ管理部１３１は、世代管理テーブル１４１から最終バックアップ世代番号と現世代番号を取得する（Ｓ５１１）。次に、ストレージ管理部１３１は、受け取ったイベントデータの種別を判定する（Ｓ５１２）。
【０１３８】
処理Ｓ５１２においてイベントデータがファイル作成を示す場合（Ｓ５１２，ファイル作成）、ストレージ管理部１３１は、名前空間情報テーブル１４２に新規ファイルのレコードを作成し、そのレコードの有効世代番号範囲において、開始世代番号＝現世代番号、終了世代番号＝∞に設定し（Ｓ５１３）、このフローは終了する。
【０１３９】
処理Ｓ５１２においてイベントデータがファイル削除を示す場合（Ｓ５１２，ファイル削除）、ストレージ管理部１３１は、削除対象ファイルがバックアップ対象であるか否かの判断を行う（Ｓ５２１）。ここで、名前空間情報テーブル１４２における対象ファイルの現世代のレコードの有効世代番号範囲が、開始世代番号＜現世代番号、かつ、終了世代番号＝∞の条件を満たす場合、スナップショット作成処理後最初のファイル更新であるため、対象ファイルがバックアップ対象であると判断される。また、上述した条件を満たさない場合、ファイル作成またはファイル変更の後にスナップショット作成処理が行われていないため、削除対象ファイルがバックアップ対象でないと判断される。
【０１４０】
バックアップ対象である場合（Ｓ５２１，Ｙ）、ストレージ管理部１３１は、名前空間情報テーブル１４２における削除対象ファイルの現世代のレコードの有効世代番号範囲において、開始世代番号を変更せず、終了世代番号を最終バックアップ世代番号に設定することにより、過去世代のレコードとして退避し（Ｓ５２２）、このフローは終了する。一方、バックアップ対象でない場合（Ｓ５２１，Ｎ）、ストレージ管理部１３１は、削除対象ファイルのレコードを削除し（Ｓ５２４）、このフローは終了する。
【０１４１】
処理Ｓ５１２においてイベントデータがファイル変更を示す場合（Ｓ５１２，ファイル変更）、ストレージ管理部１３１は、変更対象ファイルがバックアップ対象であるか否かの判断を行う（図１１のＳ５３１）。処理Ｓ５２１と同様、名前空間情報テーブル１４２における対象ファイルの現世代のレコードの有効世代番号範囲が、開始世代番号＜現世代番号、かつ、終了世代番号＝∞の条件を満たす場合、スナップショット作成処理後最初の更新であるため、対象ファイルがバックアップ対象であると判断される。また、上述した条件を満たさない場合、ファイル作成またはファイル変更の後にスナップショット作成処理が行われていないため、変更対象ファイルがバックアップ対象でないと判断される。
【０１４２】
バックアップ対象である場合（Ｓ５３１，Ｙ）、ストレージ管理部１３１は、名前空間情報テーブル１４２における変更対象ファイルの現世代のレコードの有効世代番号範囲において、開始世代番号を変更せず、終了世代番号を最終バックアップ世代番号に設定することにより、過去世代のレコードとして退避する（Ｓ５３２）。次に、ストレージ管理部１３１は、名前空間情報テーブル１４２において新規に対象ファイルのレコードを作成し、そのレコードの有効世代番号範囲を、開始世代番号＝現世代番号、終了世代番号＝∞に設定し（Ｓ５３３）、このフローは終了する。一方、バックアップ対象でない場合（Ｓ５３１，Ｎ）、ストレージ管理部１３１は、イベントデータに従って変更対象ファイルのレコードを更新し（Ｓ５３４）、このフローは終了する。
【０１４３】
次に、ストレージ管理部１３１による世代管理の動作の具体例について説明する。
【０１４４】
図１２は、本実施の形態に係る世代管理の動作の具体例を示すシーケンス図である。この図は、ファイルＡ、ファイルＢ、ファイルＣ、ファイルＤに対する名前空間情報テーブル更新処理の様子を表す。また、下方向が時間の経過を表す。時刻ｔ（６）において世代番号２０６のスナップショット作成処理が行われ、時刻ｔ（７）において世代番号２０７のスナップショット作成処理が行われる。また、現在時刻ｔ（８）において世代番号（現世代番号）は２０８である。
【０１４５】
ファイルＡのファイルが作成または変更され、次に変更または削除されるまでの内容を順にａ（１），ａ（２），ａ（３），ａ（４）で表す。同様に、ファイルＢのファイルデータの内容を順にｂ（１），ｂ（２）で表す。同様に、ファイルＣのファイルデータの内容を順にｃ（１）で表す。同様に、ファイルＤのファイルデータの内容を順にｄ（１），ｄ（２）で表す。また、ａ（１），ａ（２），ａ（３），ａ（４），ｂ（１），ｂ（２），ｃ（１），ｄ（１），ｄ（２）のファイルの内容の寿命を、線分で表す。また、スナップショット作成処理のうち、ファイルデータの退避を行う処理をＳ６１１，Ｓ６１２，Ｓ６１３，Ｓ６１４で表す。また、名前空間情報テーブル更新処理のうち、名前空間情報の退避を行う処理をＳ７１１，Ｓ７１２，Ｓ７１３，Ｓ７１４で表す。
【０１４６】
次に、ファイルＡが内容ａ（１）として作成された場合の名前空間情報テーブル更新処理について説明する。このとき、最終バックアップ世代番号＝２０５、現世代番号＝２０６である（Ｓ５１１）。次に、イベントデータがファイル作成であるため（Ｓ５１２）、ストレージ管理部１３１は、名前空間情報テーブル１４２に新たにファイルＡのレコードを作成し、有効世代番号範囲において、開始世代番号＝現世代番号（２０６）、終了世代番号＝∞に設定する（Ｓ５１３）。
【０１４７】
次に、ファイルＢが内容ｂ（１）として作成された場合の名前空間情報テーブル更新処理について説明する。このとき、最終バックアップ世代番号＝２０５、現世代番号＝２０６である（Ｓ５１１）。次に、イベントデータがファイル作成であるため（Ｓ５１２）、ストレージ管理部１３１は、名前空間情報テーブル１４２に新たにファイルＢのレコードを作成し、有効世代番号範囲において、開始世代番号＝現世代番号（２０６）、終了世代番号＝∞に設定する（Ｓ５１３）。
【０１４８】
次に、時刻ｔ（６）において、ストレージ管理部１３１は、世代番号（２０６）のスナップショット作成処理を行う。ここで、ストレージ管理部１３１は、世代管理テーブル１４１に新規のレコードを作成し、時刻ｔ（６）と世代番号（２０６）を設定することより、名前空間スナップショット作成処理を行う。また、ストレージ管理部１３１は、ａ（１）のデータスナップショット作成処理（Ｓ６１１）とｂ（１）のデータスナップショット作成処理（Ｓ６１２）を行う。
【０１４９】
次に、ファイルＣが内容ｃ（１）として作成された場合の名前空間情報テーブル更新処理について説明する。このとき、最終バックアップ世代番号＝２０６、現世代番号＝２０７である（Ｓ５１１）。次に、イベントデータがファイル作成であるため（Ｓ５１２）、ストレージ管理部１３１は、名前空間情報テーブル１４２に新たにファイルＣのレコードを作成し、有効世代番号範囲において、開始世代番号＝現世代番号（２０７）、終了世代番号＝∞に設定する（Ｓ５１３）。
【０１５０】
次に、ファイルＡが内容ａ（１）からａ（２）に変更された場合の名前空間情報テーブル更新処理について説明する。このとき、最終バックアップ世代番号＝２０６、現世代番号＝２０７である（Ｓ５１１）。次に、イベントデータがファイル変更であるため（Ｓ５１２）、ストレージ管理部１３１は、名前空間情報テーブル１４２におけるファイルＡの現世代のレコードが開始世代番号（２０６）＜現世代番号（２０７）、終了世代番号＝∞を満たすことから退避対象と判断する（Ｓ５３１）。次に、ストレージ管理部１３１は、現世代のレコードの有効世代番号範囲において開始世代番号を変更せず、終了世代番号＝最終バックアップ世代番号（２０６）に設定することにより、ａ（１）を過去世代のレコードとして退避する（Ｓ５３２）（Ｓ７１１）。次に、ストレージ管理部１３１は、ファイルＡの新たな現世代のレコードを作成し、有効世代番号範囲を、開始世代番号＝現世代番号（２０７）、終了世代番号＝∞に設定する（Ｓ５３３）。
【０１５１】
この時点で、世代管理テーブル１４１が図８の内容であるとする。
【０１５２】
次に、時刻ｔ（７）において、ストレージ管理部１３１は、世代番号（２０７）のスナップショット作成処理を行う。ここで、ストレージ管理部１３１は、世代管理テーブル１４１に新規のレコードを作成し、時刻ｔ（７）と世代番号（２０７）を設定することより、名前空間スナップショット作成処理を行う。また、ストレージ管理部１３１は、ａ（２）のデータスナップショット作成処理（Ｓ６１３）とｃ（１）のデータスナップショット作成処理（Ｓ６１４）を行う。
【０１５３】
図１３は、本実施の形態に係る世代管理テーブル１４１の内容の第２の例を示す表である。この時点で、世代管理テーブル１４１は、図８の内容に世代番号（２０７）のレコードが追加され、図１３の内容になる。
【０１５４】
次に、ファイルＤが内容ｄ（１）として作成された場合の名前空間情報テーブル更新処理について説明する。このとき、最終バックアップ世代番号＝２０７、現世代番号＝２０８である（Ｓ５１１）。次に、イベントデータがファイル作成であるため（Ｓ５１２）、ストレージ管理部１３１は、名前空間情報テーブル１４２に新たにファイルＤのレコードを作成し、有効世代番号範囲において、開始世代番号＝現世代番号（２０８）、終了世代番号＝∞に設定する（Ｓ５１３）。
【０１５５】
次に、ファイルＡが内容ａ（２）からａ（３）に変更された場合の名前空間情報テーブル更新処理について説明する。このとき、最終バックアップ世代番号＝２０７、現世代番号＝２０８である（Ｓ５１１）。次に、イベントデータがファイル変更であるため（Ｓ５１２）、ストレージ管理部１３１は、名前空間情報テーブル１４２におけるファイルＡの現世代のレコードが開始世代番号（２０７）＜現世代番号（２０８）、終了世代番号＝∞を満たすことから退避対象と判断する（Ｓ５３１）。次に、ストレージ管理部１３１は、現世代のレコードの有効世代番号範囲において開始世代番号を変更せず、終了世代番号＝最終バックアップ世代番号（２０７）に設定することにより、ａ（２）を過去世代のレコードとして退避する（Ｓ５３２）（Ｓ７１２）。次に、ストレージ管理部１３１は、ファイルＡの新たな現世代のレコードを作成し、有効世代番号範囲を、開始世代番号＝現世代番号（２０８）、終了世代番号＝∞に設定する（Ｓ５３３）。
【０１５６】
この時点で、名前空間情報テーブル１４２が図９の内容であるとし、図９中のファイル名“ｘ００１”のレコードがｂ（１）を示すとする。
【０１５７】
次に、ファイルＢが内容ｂ（１）からｂ（２）に変更された場合の名前空間情報テーブル更新処理について説明する。ｂ（１）からｂ（２）への変更は、ファイル名が“ｘ００１”から“ＹＹ０１”へ変更されたものとする。
【０１５８】
このとき、最終バックアップ世代番号＝２０７、現世代番号＝２０８である（Ｓ５１１）。次に、イベントデータがファイル変更であるため（Ｓ５１２）、ストレージ管理部１３１は、名前空間情報テーブル１４２におけるファイルＢの現世代のレコードが開始世代番号（２０６）＜現世代番号（２０８）、終了世代番号＝∞を満たすことから退避対象と判断する（Ｓ５３１）。次に、ストレージ管理部１３１は、現世代のレコードの有効世代番号範囲において開始世代番号を変更せず、終了世代番号＝最終バックアップ世代番号（２０７）に設定することにより、ｂ（１）を過去世代のレコードとして退避する（Ｓ５３２）（Ｓ７１３）。次に、ストレージ管理部１３１は、ファイルＢの新たな現世代のレコードを作成し、有効世代番号範囲を、開始世代番号＝現世代番号（２０８）、終了世代番号＝∞に設定する（Ｓ５３３）。
【０１５９】
図１４は、本実施の形態に係る名前空間情報テーブル１４２の内容の第２の例を示す表である。この時点で、名前空間情報テーブル１４２は、図１４の内容になる。つまり、上述した処理Ｓ５３２により、ファイル名“ｘ００１”のレコードに終了世代番号（２０７）が設定される（下線部分を含む３番目のレコード）。更に、上述した処理Ｓ５３３により、ファイル名“ＹＹ０１”のレコードが追加され（下線で示した５番目のレコード）、開始世代番号（２０８）と終了世代番号（∞）が設定される。
【０１６０】
次に、ファイルＡが内容ａ（３）からａ（４）に変更された場合の名前空間情報テーブル更新処理について説明する。このとき、最終バックアップ世代番号＝２０７、現世代番号＝２０８である（Ｓ５１１）。次に、イベントデータがファイル変更であるため（Ｓ５１２）、ストレージ管理部１３１は、名前空間情報テーブル１４２におけるファイルＡの現世代のレコードが開始世代番号＜現世代番号、終了世代番号＝∞を満たさないことから退避対象でないと判断する（Ｓ５３１）。次に、ストレージ管理部１３１は、イベントデータに従って現世代のレコードの情報を更新するが、有効世代番号範囲を更新しない（Ｓ５３４）。
【０１６１】
次に、ファイルＤが内容ｄ（１）からｄ（２）に変更された場合の名前空間情報テーブル更新処理について説明する。このとき、最終バックアップ世代番号＝２０７、現世代番号＝２０８である（Ｓ５１１）。次に、イベントデータがファイル変更であるため（Ｓ５１２）、ストレージ管理部１３１は、名前空間情報テーブル１４２におけるファイルＤの現世代のレコードが開始世代番号＜現世代番号、終了世代番号＝∞を満たさないことから退避対象でないと判断する（Ｓ５３１）。次に、ストレージ管理部１３１は、イベントデータに従って現世代のレコードの情報を更新するが、有効世代番号範囲を更新しない（Ｓ５３４）。
【０１６２】
次に、ファイルＣが削除された場合の名前空間情報テーブル更新処理について説明する。このとき、最終バックアップ世代番号＝２０７、現世代番号＝２０８である（Ｓ５１１）。次に、イベントデータがファイル削除であるため（Ｓ５１２）、ストレージ管理部１３１は、名前空間情報テーブル１４２におけるファイルＣの現世代のレコードが開始世代番号（２０７）＜現世代番号（２０８）、終了世代番号＝∞を満たすことから退避対象と判断する（Ｓ５３１）。次に、ストレージ管理部１３１は、現世代のレコードの有効世代番号範囲において開始世代番号を変更せず、終了世代番号＝最終バックアップ世代番号（２０７）に設定することにより、ｃ（１）を過去世代のレコードとして退避する（Ｓ５３２）（Ｓ７１４）。
【０１６３】
次に、バックアップからの復元を行うリストア処理について説明する。
【０１６４】
世代管理テーブル１４１における特定の世代番号のバックアップからリストアを実施する場合について説明する。図１５は、本実施の形態に係る世代管理テーブル１４１の内容の第３の例を示す表である。この図においては、リストアを行う世代番号である対象世代番号として、世代番号２１８（下線で示した５番目のレコード）が指定されたとする。このとき、ストレージ管理部１３１は、名前空間情報テーブル１４２のレコードのうち、有効世代番号範囲に対象世代番号が含まれるレコードを抽出し、抽出されたレコードに対応するファイルをリストアの対象ファイルとする。図１６は、本実施の形態に係る名前空間情報テーブル１４２の内容の第３の例を示す表である。この図においては、有効世代番号範囲に対象世代番号（２１８）が含まれるレコードとして、２番目と３番目のレコード（下線で示した）が抽出される。
【０１６５】
本実施の形態によれば、ある時点でのＨＳＭシステムのスナップショットとしてのバックアップを作成し、世代管理を行うことができる。また、名前空間のスナップショットの作成は、世代管理テーブルに世代情報を追加する処理のみであるため、瞬時に名前空間のスナップショットの作成を完了できる。また、名前空間情報テーブル１４２に有効世代番号範囲を含め、すべての世代を一元管理することにより、リストアの対象世代と対象ファイルの特定を容易かつ迅速に行うことができる。
【０１６６】
また、本実施の形態に係るＨＳＭ制御装置は、サーバに容易に適用することができ、サーバの性能をより高めることができる。
【０１６７】
更に、ＨＳＭ制御装置を構成するコンピュータにおいて上述した各ステップを実行させるプログラムを、ＨＳＭ制御プログラムとして提供することができる。上述したプログラムは、コンピュータにより読取り可能な記録媒体に記憶させることによって、ＨＳＭ制御装置を構成するコンピュータに実行させることが可能となる。ここで、上記コンピュータにより読取り可能な記録媒体としては、ＲＯＭやＲＡＭ等のコンピュータに内部実装される内部記憶装置、ＣＤ−ＲＯＭやフレキシブルディスク、ＤＶＤディスク、光磁気ディスク、ＩＣカード等の可搬型記憶媒体や、コンピュータプログラムを保持するデータベース、或いは、他のコンピュータ並びにそのデータベースや、更に回線上の伝送媒体をも含むものである。
【０１６８】
（付記１）  一次ストレージと二次ストレージを有するＨＳＭの制御をコンピュータに実行させるＨＳＭ制御プログラムであって、
前記ＨＳＭのバックアップ毎に、該バックアップの世代番号を含む情報である世代情報を作成する世代情報作成ステップと、
前記ＨＳＭにおけるファイル毎の名前空間に関する情報である名前空間情報と、前記世代情報作成ステップにより作成された世代番号を用いて該名前空間に関する情報が有効である世代番号の範囲を示す有効世代番号範囲とを名前空間情報履歴として管理する履歴管理ステップと
をコンピュータに実行させるＨＳＭ制御プログラム。
（付記２）  付記１に記載のＨＳＭ制御プログラムにおいて、
前記ＨＳＭのファイルシステムにおける前記名前空間情報の更新が検出された場合、前記履歴管理ステップは、該名前空間情報の更新の対象のファイルである更新対象ファイルに対応する前記名前空間情報履歴を更新することを特徴とするＨＳＭ制御プログラム。
（付記３）  付記２に記載のＨＳＭ制御プログラムにおいて、
前記名前空間情報の更新が前記更新対象ファイルの作成である場合、前記履歴管理ステップは、新たに前記更新対象ファイルの現世代の名前空間情報履歴を作成し、有効世代番号範囲を現世代以降とすることを特徴とするＨＳＭ制御プログラム。
（付記４）  付記２または付記３に記載のＨＳＭ制御プログラムにおいて、
前記名前空間情報の更新が前記更新対象ファイルのバックアップ後の最初の更新である場合、前記履歴管理ステップは、前記更新対象ファイルの現世代の名前空間情報履歴における有効世代番号範囲の終点を最終バックアップの世代番号に変更し、前記更新対象ファイルの新たに名前空間情報履歴を作成し、該名前空間情報履歴の有効世代番号範囲を現世代以降とすることを特徴とするＨＳＭ制御プログラム。
（付記５）  付記１乃至付記４のいずれかに記載のＨＳＭ制御プログラムにおいて、
前記履歴管理ステップは更に、外部から指定された世代番号が有効世代番号範囲内となる前記名前空間情報履歴の抽出を行い、該抽出により得られた名前空間情報履歴に対応するファイルをリストア対象のファイルとして出力することを特徴とするＨＳＭ制御プログラム。
（付記６）  付記１乃至付記５のいずれかに記載のＨＳＭ制御プログラムにおいて、
前記世代情報作成ステップは更に、前回のバックアップ後に更新されたファイルを前記一次ストレージから前記二次ストレージへコピーすることを特徴とするＨＳＭ制御プログラム。
（付記７）  付記１乃至付記６のいずれかに記載のＨＳＭ制御プログラムにおいて、
前記バックアップは、スナップショットであることを特徴とするＨＳＭ制御プログラム。
（付記８）  一次ストレージと二次ストレージを有するＨＳＭの制御を行うＨＳＭ制御装置であって、
前記ＨＳＭのバックアップ毎に、該バックアップの世代番号を含む情報である世代情報を作成する世代情報作成部と、
前記ＨＳＭにおけるファイル毎の名前空間に関する情報である名前空間情報と、前記世代情報作成部により作成された世代番号を用いて該名前空間に関する情報が有効である世代番号の範囲を示す有効世代番号範囲とを名前空間情報履歴として管理する履歴管理部と
を備えるＨＳＭ制御装置。
（付記９）  付記８に記載のＨＳＭ制御装置において、
前記ＨＳＭのファイルシステムにおける前記名前空間情報の更新が検出された場合、前記履歴管理部は、該名前空間情報の更新の対象のファイルである更新対象ファイルに対応する前記名前空間情報履歴を更新することを特徴とするＨＳＭ制御装置。
（付記１０）  付記９に記載のＨＳＭ制御装置において、
前記名前空間情報の更新が前記更新対象ファイルの作成である場合、前記履歴管理部は、新たに前記更新対象ファイルの現世代の名前空間情報履歴を作成し、有効世代番号範囲を現世代以降とすることを特徴とするＨＳＭ制御装置。
（付記１１）  付記９または付記１０に記載のＨＳＭ制御装置において、
前記名前空間情報の更新が前記更新対象ファイルのバックアップ後の最初の更新である場合、前記履歴管理部は、前記更新対象ファイルの現世代の名前空間情報履歴における有効世代番号範囲の終点を最終バックアップの世代番号に変更し、前記更新対象ファイルの新たに名前空間情報履歴を作成し、該名前空間情報履歴の有効世代番号範囲を現世代以降とすることを特徴とするＨＳＭ制御装置。
（付記１２）  付記８乃至付記１１のいずれかに記載のＨＳＭ制御装置において、
前記履歴管理部は更に、外部から指定された世代番号が有効世代番号範囲内となる前記名前空間情報履歴の抽出を行い、該抽出により得られた名前空間情報履歴に対応するファイルをリストア対象のファイルとして出力することを特徴とするＨＳＭ制御装置。
（付記１３）  付記８乃至付記１２のいずれかに記載のＨＳＭ制御装置において、
前記世代情報作成部は更に、前回のバックアップ後に更新されたファイルを前記一次ストレージから前記二次ストレージへコピーすることを特徴とするＨＳＭ制御装置。
（付記１４）  付記８乃至付記１３のいずれかに記載のＨＳＭ制御装置において、
前記バックアップは、スナップショットであることを特徴とするＨＳＭ制御装置。
（付記１５）  一次ストレージと二次ストレージを有するＨＳＭの制御を行うＨＳＭ制御方法であって、
前記ＨＳＭのバックアップ毎に、該バックアップの世代番号を含む情報である世代情報を作成する世代情報作成ステップと、
前記ＨＳＭにおけるファイル毎の名前空間に関する情報である名前空間情報と、前記世代情報作成ステップにより作成された世代番号を用いて該名前空間に関する情報が有効である世代番号の範囲を示す有効世代番号範囲とを名前空間情報履歴として管理する履歴管理ステップと
を実行するＨＳＭ制御方法。
（付記１６）  付記１５に記載のＨＳＭ制御方法において、
前記ＨＳＭのファイルシステムにおける前記名前空間情報の更新が検出された場合、前記履歴管理ステップは、該名前空間情報の更新の対象のファイルである更新対象ファイルに対応する前記名前空間情報履歴を更新することを特徴とするＨＳＭ制御方法。
（付記１７）  付記１６に記載のＨＳＭ制御方法において、
前記名前空間情報の更新が前記更新対象ファイルの作成である場合、前記履歴管理ステップは、新たに前記更新対象ファイルの現世代の名前空間情報履歴を作成し、有効世代番号範囲を現世代以降とすることを特徴とするＨＳＭ制御方法。
（付記１８）  付記１６または付記１７に記載のＨＳＭ制御方法において、
前記名前空間情報の更新が前記更新対象ファイルのバックアップ後の最初の更新である場合、前記履歴管理ステップは、前記更新対象ファイルの現世代の名前空間情報履歴における有効世代番号範囲の終点を最終バックアップの世代番号に変更し、前記更新対象ファイルの新たに名前空間情報履歴を作成し、該名前空間情報履歴の有効世代番号範囲を現世代以降とすることを特徴とするＨＳＭ制御方法。
（付記１９）  付記１５乃至付記１８のいずれかに記載のＨＳＭ制御方法において、
前記履歴管理ステップは更に、外部から指定された世代番号が有効世代番号範囲内となる前記名前空間情報履歴の抽出を行い、該抽出により得られた名前空間情報履歴に対応するファイルをリストア対象のファイルとして出力することを特徴とするＨＳＭ制御方法。
（付記２０）  付記１５乃至付記１９のいずれかに記載のＨＳＭ制御方法において、
前記世代情報作成ステップは更に、前回のバックアップ後に更新されたファイルを前記一次ストレージから前記二次ストレージへコピーすることを特徴とするＨＳＭ制御方法。
【図面の簡単な説明】
【０１６９】
【図１】前提技術１に係るＨＳＭ装置の構成の一例を示すブロック図である。
【図２】前提技術１に係るファイル情報取得処理の動作の一例を示すフローチャートである。
【図３】前提技術１に係る名前空間におけるディレクトリの階層構造の一例を示す図である。
【図４】前提技術１に係るファイル情報取得処理の動作の一例を示すフローチャートである。
【図５】前提技術１に係るイベントデータ反映処理の動作の一例を示すフローチャートである。
【図６】前提技術１に係るマイグレート決定処理の動作の一例を示すフローチャートである。
【図７】本実施の形態に係るＨＳＭシステムの構成の一例を示すブロック図である。
【図８】本実施の形態に係る世代管理テーブル１４１の内容の第１の例を示す表である。
【図９】本実施の形態に係る名前空間情報テーブル１４２の内容の第１の例を示す表である。
【図１０】本実施の形態に係る名前空間情報テーブル更新処理の第１の動作の一例を示すフローチャートである。
【図１１】本実施の形態に係る名前空間情報テーブル更新処理の第２の動作の一例を示すフローチャートである。
【図１２】本実施の形態に係る世代管理の具体例を示すシーケンス図である。
【図１３】本実施の形態に係る世代管理テーブル１４１の内容の第２の例を示す表である。
【図１４】本実施の形態に係る名前空間情報テーブル１４２の内容の第２の例を示す表である。
【図１５】本実施の形態に係る世代管理テーブル１４１の内容の第３の例を示す表である。
【図１６】本実施の形態に係る名前空間情報テーブル１４２の内容の第３の例を示す表である。
【符号の説明】
【０１７０】
１  一次ストレージ、２  二次ストレージ、３  サーバ、１１  アプリケーション部、１２  ファイルシステム制御部、１３  名前空間複製部、１４  名前空間追随部、１５  名前空間複製ＤＢ、１６  マイグレート決定部、２１  イベントデータ記録部、１０２  運用サーバ、１０３  ＨＳＭ制御サーバ、１３１  ストレージ管理部、１３２  ストレージ管理ＤＢ、１３３  ストレージ管理ＤＢバックアップ、１４１  世代管理テーブル、１４２  名前空間情報テーブル。
【図１】
2008040699.tif 000003
【図２】
2008040699.tif 000004
【図３】
2008040699.tif 000005
【図４】
2008040699.tif 000006
【図５】
2008040699.tif 000007
【図６】
2008040699.tif 000008
【図７】
2008040699.tif 000009
【図８】
2008040699.tif 000010
【図９】
2008040699.tif 000011
【図１０】
2008040699.tif 000012
【図１１】
2008040699.tif 000013
【図１２】
2008040699.tif 000014
【図１３】
2008040699.tif 000015
【図１４】
2008040699.tif 000016
【図１５】
2008040699.tif 000017
【図１６】
2008040699.tif 000018