(57)【要約】【課題】ストレージ仮想化システムを構成する複数の記憶制御装置でのバックアップタイミングを同期させる。【解決手段】仮想的な名前空間を提供するストレージ仮想化システムを構成する複数の記憶制御装置のうち、仮想的な名前空間の全部又は一部である特定の範囲に属するオブジェクト名に対応したオブジェクトを有する二以上の記憶制御装置の各々に、同一のバックアップタイミング情報を記憶させる。二以上の記憶制御装置の各々は、記憶されているバックアップタイミング情報が示すタイミングで、オブジェクトをバックアップする。【選択図】図８
2008197745.tif 000002
【特許請求の範囲】
【請求項１】
仮想的な名前空間を提供するストレージ仮想化システムを構成する複数の記憶制御装置のうちの一つの記憶制御装置であって、
仮想的な名前空間におけるどのオブジェクト名に対応したオブジェクトが前記ストレージ仮想化システムのどこに格納されているかを表した情報である仮想化定義情報から、前記複数の記憶制御装置のうちの、前記仮想的な名前空間の全部又は一部である特定の範囲に属するオブジェクト名に対応したオブジェクトを有する二以上の他の記憶制御装置を識別する記憶制御装置識別部と、
オブジェクトをバックアップするタイミングを示す情報であるバックアップタイミング情報を、前記識別された二以上の他の記憶制御装置に送信するバックアップタイミング同期部と
を備える記憶制御装置。
【請求項２】
前記仮想化定義情報の更新の有無を監視し、更新有りの検出に応答して、更新前の前記仮想化定義情報と更新後の前記仮想化定義情報との差分に対応した処理を実行する仮想化定義監視部、
を更に備える請求項１記載の記憶制御装置。
【請求項３】
コンピュータプログラムであるチェック部を更に備え、
前記仮想化定義監視部は、前記差分が、更新前の前記仮想化定義情報には無く更新後の前記仮想化定義情報に有る記憶制御装置ＩＤを含む場合に、前記差分に対応した処理として、前記チェック部を、その記憶制御装置ＩＤから識別される他の記憶制御装置に送信することを実行し、
前記チェック部は、該チェック部を受信した他の記憶制御装置において、該他の記憶制御装置に前記バックアップ部が備えられているか否かをチェックする、
請求項２記載の記憶制御装置。
【請求項４】
前記バックアップタイミング同期部とやり取りするコンピュータプログラムであるバックアップタイミング取得部と、
前記チェック部からの所定の信号に応答して前記バックアップタイミング取得部を前記他の記憶制御装置に送信する送信部と
を更に備え、
前記チェック部は、前記チェックの結果が、前記バックアップ部が前記他の記憶制御装置に備えられているという結果であれば、前記所定の信号を送信することで、前記バックアップタイミング取得部を受信し、
前記バックアップタイミング取得部は、該他の記憶制御装置が管理する記憶領域に、前記バックアップタイミング同期部から受信したバックアップタイミング情報を記憶させる、
請求項３記載の記憶制御装置。
【請求項５】
前記チェック部は、前記チェックの結果が、前記バックアップ部が前記他の記憶制御装置に備えられていないという結果であれば、バックアップ部を備えた記憶制御装置に、前記他の記憶制御装置が管理しているオブジェクトをマイグレーションし、そのオブジェクトのマイグレーション先を表す情報を、前記チェック部の送信元に送信する、
請求項３記載の記憶制御装置。
【請求項６】
前記バックアップタイミング同期部とやり取りするコンピュータプログラムであるバックアップタイミング取得部と、
前記バックアップタイミング取得部を、前記第二の記憶制御装置に送信する送信部と
を更に備え、
前記バックアップタイミング取得部は、そのバックアップタイミング取得部を実行する他の記憶制御装置が管理する記憶領域に、前記バックアップタイミング同期部から受信したバックアップタイミング情報を記憶させる、
請求項１記載の記憶制御装置。
【請求項７】
前記バックアップタイミング取得部は、定期的に、又は、前記記憶領域に記憶されているバックアップタイミング情報が更新されたことが検出されたことに応答して、バックアップタイミング情報の送信を前記バックアップタイミング同期部に要求し、
前記バックアップタイミング同期部が、前記バックアップタイミング取得部からの要求に応答して、前記バックアップタイミング情報を前記バックアップタイミング取得部に送信する、
請求項６記載の記憶制御装置。
【請求項８】
前記バックアップタイミング取得部は、そのバックアップタイミング取得部を実行する他の記憶制御装置が有するアクセスログから、現在有効な記憶制御装置を判別し、判別された記憶制御装置におけるバックアップタイミング同期部に、バックアップタイミング情報の送信を要求する、
請求項７記載の記憶制御装置。
【請求項９】
前記バックアップタイミング同期部が、定期的に、又は、前記記憶領域に記憶されているバックアップタイミング情報が更新されたことが検出されたことに応答して、バックアップタイミング情報を前記バックアップタイミング取得部に送信し、
前記バックアップタイミング取得部は、前記バックアップタイミング情報を受信した後に、そのバックアップタイミング取得部を実行する他の記憶制御装置が有するアクセスログから、現在有効な記憶制御装置を判別し、前記バックアップタイミング情報の送信元ではなく、判別された記憶制御装置に、バックアップタイミング情報の送信を要求する、
請求項７記載の記憶制御装置。
【請求項１０】
コンピュータプログラムであるチェック部と、
前記他の記憶制御装置に前記チェック部を送信する送信部と
を更に備え、
前記チェック部が、該チェック部を受信した他の記憶制御装置に実行されることにより、その他の記憶制御装置にバックアップ部が備えられているか否かをチェックし、前記バックアップ部が該他の記憶制御装置に備えられていないというチェックの結果であれば、前記バックアップ部を備えた記憶制御装置に、そのチェック部を実行する他の記憶制御装置が管理しているオブジェクトをマイグレーションし、そのオブジェクトのマイグレーション先を表す情報を、前記チェック部の送信元に送信する、
請求項１記載の記憶制御装置。
【請求項１１】
前記バックアップタイミング同期部が、前記複数の記憶制御装置のうちの、特定の相関関係を有するオブジェクトをそれぞれ有する他の記憶制御装置に、バックアップタイミング情報を送信する、
請求項１記載の記憶制御装置。
【請求項１２】
前記仮想的な名前空間における特定の範囲の指定をユーザから受け付ける指定受付部と、
前記複数のオブジェクトのうちの、前記指定された特定の範囲に関わる二以上のオブジェクトについて、各オブジェクト間の相関度を計算する相関度計算部と、
前記計算された各オブジェクト間の相関度をユーザに対して表示する相関度表示部と、
前記二以上のオブジェクトのうちのユーザ所望のオブジェクトの選択をユーザから受け付ける選択受付部と
を更に備え、
前記特定の相関関係を有するオブジェクトとは、前記ユーザ所望のオブジェクトであり、
前記バックアップタイミング同期部が、前記ユーザ所望のオブジェクトを有する他の記憶制御装置に、バックアップタイミング情報を送信する、
請求項１１記載の記憶制御装置。
【請求項１３】
前記仮想的な名前空間におけるオブジェクト名に関する第一の指定を含んだアクセス要求を前記クライアントから受信し、第一の指定に対応するオブジェクトにアクセスするための第二の指定を含んだアクセス要求を該第二の指定に関わる他の記憶制御装置に転送するアクセス制御部と、
アクセス要求の他の記憶制御装置への転送に関する情報を転送ログに記録するアクセス管理部と
を更に備え、
前記転送ログには、クライアントのユーザのＩＤと、第二の指定から特定されるオブジェクトのＩＤとを含む情報が記録され、
前記相関度計算部は、前記転送ログを参照して、同一のアクセスパターンを利用した異なるユーザの数をカウントし、該ユーザ数を基に、オブジェクト間の相関度を計算し、
前記アクセスパターンとは、一のユーザが利用する複数のオブジェクトの組み合わせである、
請求項１２記載の記憶制御装置。
【請求項１４】
前記仮想的な名前空間では、複数のオブジェクトにそれぞれ対応した複数のオブジェクト名がツリー状に関連付けられており、
一方のオブジェクトと他方のオブジェクトとの間の相関度は、一方のオブジェクトに対応したオブジェクト名と、他方のオブジェクトに対応したオブジェクト名の間に存在する、ネーム間リンクの数に基づいて計算される、
請求項１２記載の記憶制御装置。
【請求項１５】
前記相関度計算部が、前記クライアントで実行されるアプリケーションプログラムの環境設定ファイルに基づいて、オブジェクト間の相関度を計算する、
請求項１２記載の記憶制御装置。
【請求項１６】
前記仮想化定義監視部は、前記差分が、実体のあるファイルに関連付けられた仮想的なファイルが仮想的な共有ディレクトリに格納されたことを意味する情報である場合、その差分から、二以上のオブジェクトを識別し、
前記特定の相関関係のあるオブジェクトとは、前記識別された二以上のオブジェクトである、
請求項２記載の記憶制御装置。
【請求項１７】
前記バックアップ部は、受信したバックアップタイミング情報が示すタイミングで、オブジェクトをバックアップした場合に、バックアップされたオブジェクトであるバックアップオブジェクトと、そのバックアップを行った時点とを関連付けて記憶するよう構成されており、バックアップ時点を示す情報を含んだリストア要求を受信した場合、その情報が示すバックアップ時点が関連付けられているバックアップオブジェクトをリストアし、リストアされたバックアップオブジェクトへのアクセス先を表す情報を、バックアップ時点を示す情報の送信元に返答するよう構成されており、
前記二以上の他の記憶制御装置に、バックアップ時点を示す情報を含んだリストア要求を送信し、それに応答して、前記二以上の他の記憶制御装置から、リストアされたバックアップオブジェクトへのアクセス先を表す情報を受信し、その情報に基づいて、前記仮想化定義情報を更新するリストア制御部を
更に備え、前記リストア制御部により更新された後の仮想化定義情報は、前記リストアされたバックアップオブジェクトを表すオブジェクト名が前記仮想的な名前空間に表され、そのオブジェクト名に対応したオブジェクトが前記ストレージ仮想化システムのどこに格納されているかを表した情報が含まれている、
請求項１記載の記憶制御装置。
【請求項１８】
前記仮想的な名前空間は、グローバルネームスペースであり、
前記仮想化定義情報は、グローバルネームスペースを提供するための定義を表す情報であり、前記グローバルネームスペースにおけるオブジェクト名に対応したグローバルパスと、そのオブジェクト名に対応したオブジェクトを有する記憶制御装置のＩＤと、そのオブジェクトにアクセスするためのローカルパスとのセットを複数個含んでおり、
前記記憶制御装置識別部及び前記バックアップタイミング同期部は、一又は複数のコンピュータプログラムを実行するプロセッサであり、
前記プロセッサが、
前記仮想化定義情報の更新の有無を監視し、更新前の前記仮想化定義情報には無く更新後の前記仮想化定義情報に有る記憶制御装置ＩＤを含む場合に、チェックプログラムを、その記憶制御装置ＩＤから識別される他の記憶制御装置に送信し、該他の記憶制御装置のプロセッサで該チェックプログラムが実行されることにより、該他の記憶制御装置にバックアッププログラムが備えられているか否かがチェックされ、バックアッププログラムが該他の記憶制御装置に備えられているという結果である場合に、所定の信号を該他の記憶制御装置から受信し、
該所定の信号の受信に応答して、バックアップタイミング取得プログラムを、該所定の信号の送信元である前記他の記憶制御装置に送信し、該他の記憶制御装置のプロセッサで該バックアップタイミング取得プログラムが実行されることにより、該他の記憶制御装置が受信したバックアップタイミング情報を記憶させ、
特定の相関関係のあるオブジェクトを判別し、判別されたオブジェクトを有する記憶制御装置を前記仮想化定義情報から識別し、前記複数の記憶制御装置のうち、識別された記憶制御装置に、バックアップタイミング情報を送信し、
前記グローバルネームスペースの一部である特定の範囲に属するオブジェクト名は、前記特定の相関関係のあるオブジェクトに対応したオブジェクト名である、
請求項１記載の記憶制御装置。
【請求項１９】
仮想的な名前空間を提供するストレージ仮想化システムを構成する複数の記憶制御装置のうちの少なくとも一つが、
仮想的な名前空間におけるどのオブジェクト名に対応したオブジェクトが前記ストレージ仮想化システムのどこに格納されているかを表した情報である仮想化定義情報から、前記複数の記憶制御装置のうちの、前記仮想的な名前空間の全部又は一部である特定の範囲に属するオブジェクト名に対応したオブジェクトを有する二以上の他の記憶制御装置を識別する記憶制御装置識別部と、
オブジェクトをバックアップするタイミングを示す情報であるバックアップタイミング情報を、前記識別された二以上の他の記憶制御装置に送信するバックアップタイミング同期部と
を備え、
バックアップタイミング情報を受信した前記二以上の他の記憶制御装置の各々が、
受信したバックアップタイミング情報を記憶領域に記憶させ設定部と、
前記記憶領域に記憶されているバックアップタイミング情報が示すタイミングでオブジェクトをバックアップするバックアップ部と
を備える、
ストレージ仮想化システム。
【請求項２０】
仮想的な名前空間を提供するストレージ仮想化システムを構成する複数の記憶制御装置のうち、前記仮想的な名前空間の全部又は一部である特定の範囲に属するオブジェクト名に対応したオブジェクトを有する二以上の記憶制御装置の各々に、同一のバックアップタイミング情報を記憶させ、
前記二以上の記憶制御装置の各々が、記憶されているバックアップタイミング情報が示すタイミングで、オブジェクトをバックアップする、
バックアップ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ仮想化技術に関する。
【背景技術】
【０００２】
一般に、ストレージ仮想化技術（ストレージグリッドとも呼ばれる）が知られている。ストレージ仮想化技術に従う仮想化には、ファイルレベルでの仮想化と、ブロックレベルの仮想化とがある。ファイルレベルでの仮想化を行うための技術の一つとして、グローバルネームスペース技術がある。グローバルネームスペース技術によれば、複数のNAS（Network Attached Storage）装置のそれぞれに対応した複数のファイルシステムを１つの仮想的なファイルシステムとしてクライアント端末に見せることができる。
【０００３】
複数の記憶制御装置で構成された、ストレージ仮想化技術に従うシステム（以下、ストレージ仮想化システム）において、バックアップ（例えばスナップショット）を取得する際、それら全ての記憶制御装置に対して、バックアップ取得要求を送信する必要がある（例えば特許文献１）。
【０００４】
【特許文献１】特開２００６−９９４０６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ストレージ仮想化システムを構成する複数の記憶制御装置で、バックアップが実行されるタイミング（以下、バックアップタイミング）が異なることがある。言い換えれば、それら複数の記憶制御装置でバックアップタイミングの同期がとれないことがある。
【０００６】
第一の具体例としては、ストレージ仮想化システムを構成する全ての記憶制御装置が接続されているネットワークの状態やバックアップ取得要求の送信順序等によって、それら全ての記憶制御装置にバックアップ取得要求が届く時刻が異なることがある。このような問題は、ストレージ仮想化システムが大規模の場合には特に発生し易いと考えられる。
【０００７】
第二の具体例としては、スタンドアロンで運用されていた記憶制御装置をインクリメンタルにストレージ仮想化システムに組み入れた場合、その記憶制御装置が、例えば、バックアップ部（例えばバックアップを取得するコンピュータプログラム）を備えていない記憶制御装置、或いは、バックアップタイミングが異なる記憶制御装置であることがある。
【０００８】
以上のような場合、複数の記憶制御装置において、オブジェクトのバックアップが取得される時点が異なったり、オブジェクトのバックアップが行われなかったりする。このため、ストレージ仮想化システムにおける複数のオブジェクトを全て同じ時点の状態にリストアすることはできない。例えば、一つの仮想的な名前空間（典型的にはグローバルネームスペース）を提供するストレージ仮想化システムにおいて、仮に、何らかの方法で、ストレージ仮想化システムにおける複数のオブジェクトをリストアし、リストアされた複数のオブジェクトを一つの仮想的な名前空間でクライアントに提供したとしても、その仮想的な名前空間に表されている複数のオブジェクトの時点は、統一されていない。例えば、バックアップ取得時点の異なるファイル（例えば、１時間前の状態に戻ったファイルや１週間前に戻ったファイル）が一つの仮想的な名前空間に混在することになる。
【０００９】
従って、本発明の一つの目的は、ストレージ仮想化システムを構成する複数の記憶制御装置でのバックアップタイミングを同期させることにある。
【００１０】
本発明の他の目的は、後述の説明から明らかになるであろう。
【課題を解決するための手段】
【００１１】
仮想的な名前空間を提供するストレージ仮想化システムを構成する複数の記憶制御装置のうち、仮想的な名前空間の全部又は一部である特定の範囲に属するオブジェクト名に対応したオブジェクトを有する二以上の記憶制御装置の各々に、同一のバックアップタイミング情報を記憶させる。二以上の記憶制御装置の各々は、バックアップ取得要求の受信に応答してバックアップを実行するのではなく、記憶されているバックアップタイミング情報が示すタイミングで、オブジェクトをバックアップする。
【発明を実施するための最良の形態】
【００１２】
本発明の幾つかの実施形態を説明する。その幾つかの実施形態を詳細に説明する前に、概要を記載する。
【００１３】
仮想的な名前空間（例えばグローバルネームスペース）を提供するストレージ仮想化システムを構成する複数の記憶制御装置のうちの一つの記憶制御装置（以下、第一の記憶制御装置）に、記憶制御装置識別部と、バックアップタイミング同期部とを備える。記憶制御装置識別部が、仮想的な名前空間におけるどのオブジェクト名に対応したオブジェクトがストレージ仮想化システムのどこに格納されているかを表した情報である仮想化定義情報から、複数の記憶制御装置のうちの、仮想的な名前空間の全部又は一部である特定の範囲に属するオブジェクト名に対応したオブジェクトを有する二以上の他の記憶制御装置（以下、第二の記憶制御装置）を識別する。バックアップタイミング同期部が、オブジェクトをバックアップするタイミングを示す情報であるバックアップタイミング情報（例えば、第一の記憶制御装置が管理している第一の記憶領域に記憶されている情報）を、識別された二以上の第二の記憶制御装置に送信する。二以上の第二の記憶制御装置の各々は、自分が管理している第二の記憶領域に、受信したバックアップタイミング情報を記憶させる。二以上の第二の記憶制御装置の各々にあるバックアップ部は、第二の記憶領域に記憶されているバックアップタイミング情報が示すタイミングで、オブジェクトをバックアップする。
【００１４】
オブジェクトとしては、例えば、ファイル、ディレクトリ及びファイルシステムのうちの少なくとも一つとすることができる。
【００１５】
複数の記憶制御装置のうちの少なくとも一つは、スイッチ装置、ファイルサーバ、ＮＡＳ装置、ＮＡＳ装置と複数の記憶装置とで構成されたストレージシステムなど、種々の装置を採用することができる。
【００１６】
第一及び第二の記憶領域は、記憶制御装置が備える主記憶装置及び補助記憶装置のうちの少なくとも一方に存在しても良いし、記憶制御装置に接続された外部の記憶装置（例えばストレージシステム内の記憶資源）に存在してもよい。
【００１７】
一つの実施形態では、第一の記憶制御装置に、仮想化定義監視部が更に備えられる。仮想化定義監視部は、仮想化定義情報の更新の有無を監視し、更新有りの検出に応答して、更新前の仮想化定義情報と更新後の仮想化定義情報との差分に対応した処理を実行することができる。
【００１８】
この実施形態では、第一の記憶制御装置に、コンピュータプログラムであるチェック部を更に備えることができる。上記差分が、更新前の仮想化定義情報に含まれておらず更新後の仮想化定義情報に含まれている記憶制御装置ＩＤである場合、つまり、ストレージ仮想化システムに新たに第二の記憶制御装置が追加された場合、仮想化定義監視部は、上記差分に対応した処理として、チェック部を、その記憶制御装置ＩＤから識別される第二の記憶制御装置に送信することができる。送信先の第二の記憶制御装置のプロセッサでチェック部が実行されることにより、その第二の記憶制御装置にバックアップ部が備えられているか否かをチェックすることができる。
【００１９】
更に、この実施形態では、第一の記憶制御装置が、バックアップタイミング同期部とやり取りするコンピュータプログラムであるバックアップタイミング取得部と、チェック部からの所定の信号に応答してバックアップタイミング取得部を第二の記憶制御装置に送信する送信部とを更に備えることができる。チェック部は、所定の信号（例えば、そのチェック部を実行する第二の記憶制御装置のＩＤ）を第一の記憶制御装置に送信することで、バックアップタイミング取得部を受信することができる。第一の記憶制御装置において、送信部が、チェック部から所定の信号を受信したことに応答して、バックアップタイミング取得部を、その情報の送信元である第二の記憶制御装置に送信することができる。バックアップタイミング取得部は、その送信先の第二の記憶制御装置で実行されることで、第二の記憶領域に、第一の記憶制御装置から受信したバックアップタイミング情報を記憶させることができる。一方、チェック部は、上述のチェックの結果が、バックアップ部が第二の記憶制御装置に備えられていないという結果であれば、バックアップ部を備えた記憶制御装置に、そのチェック部を実行する第二の記憶制御装置が管理しているオブジェクトをマイグレーションし、そのオブジェクトのマイグレーション先に関する情報（例えば、マイグレーション先の記憶制御装置のＩＤ）、を、第一の記憶制御装置に送信することができる。この場合、チェック部は、マイグレーションの結果に関する情報（例えば、マイグレーションされた各オブジェクトについて、マイグレーション前のローカルパスと、マイグレーション後のローカルパス）も、仮想化定義監視部に送信しても良い。仮想化定義監視部は、受信した、マイグレーション先の記憶制御装置のＩＤと、マイグレーションの結果に関する情報とを用いて、仮想化定義情報を更新しても良い。なお、マイグレーション先の記憶制御装置は、第二の記憶制御装置であっても良いし、第一及び第二の記憶制御装置とは異なる予備の記憶制御装置であっても良い。
【００２０】
一つの実施形態では、バックアップタイミング同期部が、二以上の第二の記憶制御装置に存在する複数のオブジェクトのうちの、特定の相関関係のあるオブジェクトをそれぞれ有する第二の記憶制御装置に、バックアップタイミング情報を送信することができる。この場合、バックアップタイミング同期部は、バックアップタイミング情報に加えて、ユーザ所望のオブジェクトを示すＩＤも送信することができる。第二の記憶制御装置は、オブジェクトのＩＤとバックアップタイミング情報とをセットで第二の記憶領域に記憶させることができる。第二の記憶制御装置のバックアップ部は、その第二の記憶制御装置で管理されている複数のオブジェクトのうち、記憶されているオブジェクトＩＤに対応したオブジェクトを、記憶されているバックアップタイミング情報が示すタイミングで、バックアップすることができる。この実施形態では、例えば、新規に追加された第二の記憶制御装置が有するオブジェクトが、特定の相関関係のあるオブジェクトでは無い場合には、前述したチェック部はその第二の記憶制御装置に送信されなくて良い。
【００２１】
一つの実施形態では、バックアップ部は、受信したバックアップタイミング情報が示すタイミングで、オブジェクトをバックアップした場合に、バックアップされたオブジェクトであるバックアップオブジェクトと、そのバックアップを行った時点とを関連付けて記憶するよう構成されており、バックアップ時点を示す情報を含んだリストア要求を受信した場合、その情報が示すバックアップ時点が関連付けられているバックアップオブジェクトをリストアし、リストアされたバックアップオブジェクトへのアクセス先を表す情報を、バックアップ時点を示す情報の送信元に返答するよう構成されている。第一の記憶制御装置が、更に、リストア制御部を備えることができる。リストア制御部は、二以上の他の記憶制御装置に、バックアップ時点を示す情報を含んだリストア要求を送信し、それに応答して、それら二以上の他の記憶制御装置から、リストアされたバックアップオブジェクトへのアクセス先を表す情報を受信し、その情報に基づいて、仮想化定義情報を更新することができる。更新後の仮想化定義情報は、リストアされたバックアップオブジェクトを表すオブジェクト名が仮想的な名前空間に表され、そのオブジェクト名に対応したオブジェクトがストレージ仮想化システムのどこに格納されているかを表した情報（例えば、受信した、リストアされたバックアップオブジェクトへのアクセス先を表す情報）が含まれている。
【００２２】
上述した各部（例えば、バックアップ部、バックアップタイミング同期部、仮想化定義監視部、リストア制御部等）は、ハードウェア、コンピュータプログラム又はそれらの組み合わせ（例えば一部をコンピュータプログラムにより実現し残りをハードウェアで実現すること）により構築することができる。コンピュータプログラムは、所定のプロセッサに読み込まれて実行される。また、コンピュータプログラムがプロセッサに読み込まれて行われる情報処理の際、適宜に、メモリ等のハードウェア資源上に存在する記憶域が使用されてもよい。また、コンピュータプログラムは、ＣＤ−ＲＯＭ等の記録媒体から計算機にインストールされてもよいし、通信ネットワークを介して計算機にダウンロードされてもよい。また、ストレージデバイスは、物理的であっても論理的であっても良い。物理的なストレージデバイスとしては、例えば、ハードディスク、磁気ディスク、光ディスク、磁気テープ、或いは半導体メモリであっても良い。論理的なストレージデバイスとしては、論理ボリュームとすることができる。
【００２３】
以下、図面を参照して、本発明の幾つかの実施形態を詳細に説明する。その際、グローバルネームスペースを提供するストレージ仮想化システム（以下、GNSシステム）を例に採って説明することにする。
【００２４】
＜第一の実施形態＞。
【００２５】
図１は、本発明の第一の実施形態に係るコンピュータシステムの構成例を示す。
【００２６】
通信ネットワーク（例えばＬＡＮ（Local Area Network））１０２に、複数（又は一つ）のクライアント端末１０３と、管理端末１０４と、複数のＮＡＳ装置１０９とが接続されている。複数のＮＡＳ装置１０９の各々には、ファイルシステム１０６がマウントされる。ファイルシステム１０６は、その中でファイルを管理する機能ならびにアクセスするためのインタフェースを持つ。一つのファイルシステム１０６は、一つの論理ボリュームの一部又は全部を管理するためのものであっても良いし、複数の論理ボリュームを管理するためのものであっても良い。また、管理端末１０４とクライアント端末１０３が同じ装置であっても良い。この場合、クライアントユーザ（ファイルを利用するユーザ）と管理者とが同一人物であっても良い。
【００２７】
複数のＮＡＳ装置１０９によりＧＮＳシステムが構築されている。複数のＮＡＳ装置１０９には、第一のＮＡＳ装置（以下、親ＮＡＳ）と、第二のＮＡＳ装置（以下、子ＮＡＳ）とが含まれている。親ＮＡＳは、クライアント端末１０３に対し、一つの仮想的なファイルシステムとしてグローバルネームスペース１０１を提供する。子ＮＡＳは、グローバルネームスペース１０１で表されているオブジェクト名に対応したオブジェクトを管理するファイルシステムを備える。以下、親ＮＡＳのファイルシステムを「親ファイルシステム」と言い、子ＮＡＳのファイルシステムを「子ファイルシステム」と言うことがある。複数のＮＡＳ装置１０９には、更に、予備のＮＡＳ装置が含まれていても良い。予備のＮＡＳ装置は、親ＮＡＳ及び／又は子ＮＡＳにとっての待機系のＮＡＳ装置とすることができる。
【００２８】
親ファイルシステムでは、例えば、ＧＮＳ定義情報１０８が管理されている。ＧＮＳ定義情報１０８は、親ＮＡＳ内の記憶資源に記憶されても良い。ＧＮＳ定義情報１０８は、どのようなグローバルパスが使用された場合にはどんなＩＤを有するＮＡＳ装置に対してどのようなローカルパスを使用するかの定義を表す情報である。具体的には、例えば、ＧＮＳ定義情報１０８では、各グローバルパス毎に、ＮＡＳ名と、ローカルパスとが対応付けられている。ＧＮＳ定義情報１０８を、管理者が管理端末１０４を通じて更新することができる。なお、図示の例のＧＮＳ定義情報１０８において、グローバルパス及びローカルパスは、いずれも、ファイルシステムまでのパス（ファイルシステム名が終端となっているパス名）となっているが、より詳細なパス、例えば、ファイルシステム名（例えばFS3）を表す文字列の後に、更に、そのファイルシステム名に対応したファイルシステムで管理されているオブジェクト（例えばファイル）を表す文字列（例えばfile A）となっていても良い。
【００２９】
親ＮＡＳ（NAS-00）は、ＧＮＳ定義情報１０８に記録されている全てのグローバルパスを基に、図示のグローバルネームスペース（以下、GNS）１０１をクライアント端末１０３に提供することができる。クライアント端末１０３は、親ＮＡＳ（NAS-00）にアクセスすることで，GNS１０１を参照することができる（例えば、Windows（登録商標）のエキスプローラでファイルやディレクトリを参照するのと同じような操作をすることにより、GNS１０１のビューを表示することができる）。
【００３０】
以下、クライアント端末１０３と親NASとのやり取りと、親NASと子NASとのやり取りとの流れを説明する。なお、ここで説明することは、論理的な流れであり、プロトコルでの仕様に即した詳細な流れの説明は、後に補足することにする。また、以下の説明では、ＧＮＳ１０１でのツリーにおける各ノードを「ツリーノード」と呼ぶ。
【００３１】
例えば、GNS１０１において、/GNS-Root/Dir-01/FS2（つまりオブジェクト名（FS2））の直下にa.txtというオブジェクト名が位置するとする。また、オブジェクト名“a.txt”に対応したファイルが、子NAS（NAS-02）の子ファイルシステム（FS2）に含まれているとする。この場合、クライアント端末１０３が、ファイル“a.txt”を参照する場合、GNS１０１での第一のアクセスパス“/GNS-Root/Dir-01/FS2/a.txt”に従う参照要求（リードコマンド）を、親ＮＡＳ（NAS-00）に送信する。親ＮＡＳ（NAS-00）は、その参照要求の受信に応答して、第一のアクセスパスに含まれるグローバルパス“/GNS-Root/Dir-01/FS2”に対応したNAS名“NAS-02”及びローカルパス“/mnt/FS2”をＧＮＳ定義情報１０８から取得する。親ＮＡＳ（NAS-00）は、第一のアクセスパス“/GNS-Root/Dir-01/FS2/a.txt”とグローバルパス“/GNS-Root/Dir-01/FS2”との差分“/a.txt”を、取得したローカルパス“/mnt/FS2”に結合することで、第二のアクセスパス“/mnt/FS2/a.txt”を準備する。親ＮＡＳ（NAS-00）は、取得したNAS名“NAS-02”に対応する子ＮＡＳ（NAS-02）に、第二のアクセスパス“/mnt/FS2/a.txt”に従って、参照要求を転送する。子ＮＡＳ（NAS-02）は、第二のアクセスパスに従う参照要求を受信した場合、その参照要求に従うファイル“a.txt”を、子ファイルシステム（FS2）からリードして、リードしたファイル“a.txt”を、アクセス要求の転送元（親ＮＡＳ（NAS-00））に送信する。また、子ＮＡＳ（NAS-02）は、自分が保持するアクセスログ１３２に、参照要求の転送元のNAS名“NAS-00”を記録する。アクセスログ１３２は、NAS装置１０９内の記憶資源にあっても良いし、NAS装置１０９にマウントされているファイルシステムにあっても良い。親ＮＡＳ（NAS-00）は、子ＮＡＳ（NAS-02）から受信したファイル“a.txt”を、第一のアクセスパスに従う参照要求の送信元のクライアント端末１０３に送信する。
【００３２】
以上が、本実施形態に係るコンピュータシステムの概要である。
【００３３】
なお、上記説明において、親ＮＡＳ（NAS-00）は、第一のアクセスパスに従う参照要求を受信した場合、第一のアクセスパス中のグローバルパスに対応するローカルパス及びNAS名（或いは、後述するオブジェクトID及びNAS名）を、クライアント端末１０３に送信しても良い。この場合、クライアント端末が、受信したローカルパスを含む第二のアクセスパスに従う参照要求を、受信したNAS名から識別されるNAS装置に送信しても良い。その際、クライアント端末は、ローカルパス等の通知元のNAS装置のNAS名を参照要求に含めて送信しても良い。その参照要求を受けたNAS装置は、アクセスログに、その参照要求に含まれているNAS名を記録しても良い。この記録されたNAS名が、実質的に、親NASのNAS名である。以上の説明は、参照要求が、更新要求（ライトコマンド）であっても、適用することができる。
【００３４】
また、図示の例では、ＧＮＳ定義情報１０８に記録されるNAS名は、子NASの名称であるが、NAS名としては、子ＮＡＳの名称に限らず、親ＮＡＳの名称が記録されても良い。つまり、GNS１０１に表される複数のネームには、親ファイルシステム、親ファイルシステムで管理されているディレクトリ及びファイルのうちの少なくとも一つを表す名称が含まれても良い。
【００３５】
以下、本実施形態についてより詳細に説明する。
【００３６】
図２７は、ＮＡＳ装置とそれに接続されているストレージシステムとのそれぞれのハードウェア構成例を示す。
【００３７】
ＮＡＳ装置１０９に、ＳＡＮ（Storage Area Network）等の通信ネットワーク１８５、或いは、専用線を介して、ストレージシステム１１１が接続される。通信ネットワーク１８５に、複数のNAS１０９及び一以上のストレージシステム１１１が接続されても良い。この場合、複数のNAS装置１０９が、一つのストレージシステム１１１の異なる論理ボリュームにアクセスしても良い。ストレージシステム１１１が有する記憶資源（例えば一以上の論理ボリューム）が、ファイルシステムとしてＮＡＳ装置１０９にマウントされる。
【００３８】
ストレージシステム１１１には、複数の物理的な記憶装置（例えば、ハードディスクドライブ或いはフラッシュメモリデバイス等）３０８と、複数の物理的な記憶装置３０３へのアクセスを制御するコントローラ３０７とが備えられている。複数の物理的な記憶装置３０８が提供する記憶空間を基に、複数の論理ボリューム（論理的な記憶装置）が形成されている。コントローラ３０７は、ＣＰＵや、ＣＰＵの処理結果を一時的に記憶するキャッシュメモリ等を備えた装置である。コントローラ３０７は、ＮＡＳ装置１０９（例えばその装置１０９における後述のデバイスドライバ）からブロック単位のアクセス要求を受信し、そのアクセス要求に従う論理ボリュームに対して、該アクセス要求に従うデータの書込み、或いはデータの読出しを行う。
【００３９】
ＮＡＳ装置１０９は、ＣＰＵ１７３、記憶資源１７７、Ｉ／Ｆ（インタフェース装置）１８１と、ＮＩＣ（Network Interface Card）１８３とを備える。Ｉ／Ｆ１８１を通じて、ストレージシステム１１１との通信が行われる。ＮＩＣ１８３を通じて、他のＮＡＳ装置１０９との通信が行われる。記憶資源１７７は、例えば、メモリ及びディスク装置の少なくとも一方で構成することができるが、それに限らず、他種の記憶媒体により構成されても良い。
【００４０】
記憶資源１７７には、複数のコンピュータプログラムが記憶されており、ＣＰＵ１７３で、それらのコンピュータプログラムが実行される。以下、コンピュータプログラムが主語になる場合は、実際にはそのコンピュータプログラムを実行するＣＰＵによって処理が行われるものとする。
【００４１】
図２Ａは、親ＮＡＳが有するコンピュータプログラムの一例を示す。
【００４２】
親ＮＡＳは、ファイル共有プログラム２０１Ａ、ファイルシステムプログラム２０５Ａ、スケジュール通知プログラム２０４、スナップショット／リストアプログラム２０７Ａ、デバイスドライバ２０９Ａ、チェックプログラム２１１及びスケジュール変更監視サブプログラム２１３を有する。
【００４３】
例えば、ファイルシステムプログラム２０５Ａ、スナップショット／リストアプログラム２０７Ａ及びデバイスドライバ２０９Ａにより、ＯＳ層（ＯＳはOperating Systemの略）が構成される。ファイルシステムプログラム２０５Ａは、マウントされたファイルシステムを制御するプログラムであり、上位層に対して、マウントされているファイルシステム、すなわち、階層構造化された論理ビュー（例えば、ディレクトリやファイルなどの階層構造を表すビュー）を提供することができる。また、ファイルシステムプログラム２０５Ａは、これらのビューにおける論理的なデータ構造（例えばファイルやファイルへのパス）を物理的なデータ構造（例えば、ブロックレベルのデータやブロックレベルのアドレス）へ変換して、下位層とのI/O処理を実行する（例えば、ブロックデータのＩ／Ｏを要求する）ことができる。デバイスドライバ２０９Ａは、ファイルシステムプログラム２０５Ａから要求されたブロックI/Oを実行するプログラムである。スナップショット／リストアプログラム２０７Ａは、ファイルシステムのある時点でのスタティックなイメージを保持したり、そのイメージをリストアしたりすることができる。スナップショットの取得単位としては、ファイルシステム全体に限らず、例えばファイルシステムの一部（例えば一以上のファイル）であっても良いが、本実施形態では、説明を分かり易くするために、一つのNAS装置で取得されるスナップショットは、一つのファイルシステムのスタティックなイメージであるとする。
【００４４】
ファイル共有プログラム２０１Ａは、通信ネットワーク１０２に接続されるクライアント端末１０３にファイル共有プロトコル（例えば、NFS（Network File System）或いはCIFS（Common Internet File System））を提供し、複数のクライアント端末１０３の間でファイル共有機能を提供するものである。ファイル共有プログラム２０１Ａは、クライアント端末１０３からファイル単位のアクセス要求を受付け、ファイルシステムプログラム２０５Ａに対して、ファイル単位のアクセス（write / read）を要求する。また、ファイル共有プログラム２０１Ａは、複数のNAS装置１０９を１つの仮想的なNAS装置として振舞うGNS機能も有する。
【００４５】
ファイル共有プログラム２０１Ａは、ＧＮＳ定義変更監視サブプログラム２０３を有する。ＧＮＳ定義変更監視サブプログラム２０３は、ＧＮＳ定義情報１０８を監視し、その結果、ＧＮＳ定義情報１０８が更新されたことを検出した場合、所定の処理を実行する。ＧＮＳ定義変更監視サブプログラム２０３については、後に詳述する。
【００４６】
スケジュール通知プログラム２０４は、親ＮＡＳが管理している記憶領域（以下、親記憶領域）に記憶されているスケジュール情報を、子ＮＡＳに通知することができる。具体的には、例えば、後述するように、子ＮＡＳで実行されたスケジュール変更監視サブプログラム２１３が、親ＮＡＳからスケジュール情報を取得する構成になっている場合、スケジュール通知プログラム２０４は、スケジュール変更監視サブプログラム２１３からの要求に応答して、親記憶領域に記憶されているスケジュール情報を、子ＮＡＳで実行されているスケジュール変更監視サブプログラム２１３に送信することができる。この場合、そのスケジュール変更監視サブプログラム２１３は、その子ＮＡＳで管理されている記憶領域（以下、子記憶領域）に、受信したスケジュール情報を記憶させることができる。親記憶領域は、親ＮＡＳの記憶資源１７７上にあっても良いし、親ＮＡＳの外の記憶資源（例えば親ファイルシステム）にあっても良い。同様に、子記憶領域は、子ＮＡＳの記憶資源１７７に存在しても良いし、子ＮＡＳの外の記憶資源（例えば子ファイルシステム）に存在しても良い。
【００４７】
チェックプログラム２１１及びスケジュール変更監視サブプログラム２１３は、子NASに送信され、子NASで実行されるプログラムである。チェックプログラム２１１は、送信先の子NASにスナップショット／リストアプログラム２０７Ｂが有るか否かをチェックする。スケジュール変更監視サブプログラム２１３は、親NASからスケジュール情報を取得する。これらのプログラムについての詳細は後に述べる。
【００４８】
図２Ｂは、子ＮＡＳが有するコンピュータプログラムの一例を示す。
【００４９】
子NASは、ファイル共有プログラム２０１Ｂ、ファイルシステムプログラム２０５Ｂ、スナップショット／リストアプログラム２０７Ｂ及びデバイスドライバ２０９Ｂを有する。
【００５０】
ファイル共有プログラム２０１Ｂは、ＧＮＳ機能と、ＧＮＳ定義変更監視サブプログラム２０３とを有しておらず、他の機能に関しては、ファイル共有プログラム２０１Ａと実質的に同じである。ファイルシステムプログラム２０５Ｂ、スナップショット／リストアプログラム２０７Ｂ及びデバイスドライバ２０９Ｂの各々については、ファイルシステムプログラム２０５Ａ、スナップショット／リストアプログラム２０７Ａ及びデバイスドライバ２０９Ａの各々と実質的に同じである。
【００５１】
スナップショット／リストアプログラム２０７Ｂを有していない子ＮＡＳもあり得る。親ＮＡＳから子ＮＡＳにダウンロードされ実行されるチェックプログラム２１１が、スナップショット／リストアプログラム２０７Ｂの有無をチェックする。
【００５２】
以下、スナップショット／リストアプログラム２０７Ｂによるスナップショット取得のためのＣＯＷ（Copy On Write）を説明する。その前に、ストレージシステム１１１にある論理ボリュームの種類を説明する。
【００５３】
図３Ａは、ストレージシステム１１１にある複数種類の論理ボリュームを示す。
【００５４】
複数種類の論理ボリュームとして、プライマリボリューム１１０と、差分ボリューム１２１とがある。
【００５５】
プライマリボリューム１１０は、ＮＡＳ装置１０９から送信されたアクセス要求に従って読み出されたり書込まれたりするデータが格納される論理ボリュームである。NAS装置１０９のファイルシステムプログラム２０５Ｂ（２０５Ａ）が、ファイル共有プログラム２０９Ｂ（２０９Ａ）からの要求に従い、プライマリボリューム１１０にアクセスする。
【００５６】
差分ボリューム１２１は、プライマリボリューム１１０が更新されときに、更新前の古いブロックデータの退避先となる論理ボリュームである。ファイルシステムプログラム２０５Ｂ（２０５Ａ）には、プライマリボリューム１１０のファイルシステムがマウントされるが、差分ボリューム１２１のファイルシステムはマウントされない。
【００５７】
この場合、スナップショット／リストアプログラム２０７Ｂは、ファイルシステムプログラム２０５Ｂからプライマリボリューム１１０の或るブロックにブロックデータが書かれる場合、そのブロックに既に存在しているブロックデータを、差分ボリューム１２１に退避する。
【００５８】
図３Ｂは、スナップショット取得のためのＣＯＷの一例を示す図である。
【００５９】
プライマリボリューム１１０に、例えば、ブロック番号１〜９にそれぞれ対応した９個のブロックがあり、時刻（ｔ１）において、それら９個のブロックに、ブロックデータＡ〜Ｉが格納されているとする。この時刻（ｔ１）が、スケジュール情報に従うスナップショット取得時点であるとする。スナップショット／リストアプログラム２０７Ｂは、例えば、時刻（ｔ１）に関連付けたスナップショット管理情報を記憶資源（例えばメモリ）上に準備することができる。スナップショット管理情報としては、例えば、退避元のブロック番号と退避先のブロック番号とが書かれるエントリを含んだテーブルとすることができる。
【００６０】
この後の時刻（ｔ２）において、ブロック番号１〜５に、新たにブロックデータａ〜ｅが書かれる場合、スナップショット／リストアプログラム２０７Ｂにより、ブロック番号１〜５にある既存のブロックデータＡ〜Ｅが、差分ボリューム１２１に退避される。この動作が、一般にCOW (Copy On Write)と呼ばれる動作である。時刻（ｔ１）の後に初めてプライマリボリューム１１０内のブロックが更新された場合、スナップショット／リストアプログラム２０７Ｂは、例えば、時刻（ｔ１）に関連付けたスナップショット管理情報に、退避元のブロック番号と、そのブロック番号に対応した、退避先のブロック番号とを含めることができる。つまり、本実施形態において、スナップショットを取得するとは、その取得時点のプライマリボリューム１１０のイメージを、その取得時点を表す情報に関連付けて管理することである。
【００６１】
時刻（ｔ２）の後に、スナップショット／リストアプログラム２０７Ｂ（２０７Ａ）は、時刻（ｔ１）のスナップショットのリストア（マウント）が要求された場合、その時刻（ｔ１）に関連付けられているスナップショット管理情報を取得し、そのスナップショット管理情報に従って仮想ボリューム（スナップショット）を作成しファイルシステム２０５Ｂ（２０５Ａ）に見せることができる。スナップショット／リストアプログラム２０７Ｂ（２０７Ａ）は、デバイスドライバ経由でプライマリボリューム１１０と差分ボリューム１２１にアクセスし、これらを合成した仮想的な論理ボリューム（仮想ボリューム）を作成することができる。クライアント端末１０３は、ファイルシステム及びファイル共有機能経由で、仮想ボリューム（スナップショット）にアクセスすることができる（スナップショットへのアクセスについては後に詳述する）。
【００６２】
さて、本実施形態では、親ＮＡＳの親記憶領域に記憶されているスケジュール情報が、各子ＮＡＳに送信されて各子ＮＡＳの子記憶領域に記憶され、各子ＮＡＳでは、自分が管理する子記憶領域に記憶されているスケジュール情報に従う各時点で、スナップショットが取得される。
【００６３】
以下、親記憶領域に記憶されているスケジュール情報が子記憶領域に記憶されるまでの流れの一例を説明する。その際、親NASをNAS-00とし、子NASをNAS-01とする。
【００６４】
図４Ａに示すように、親記憶領域に、スケジュール情報１４１として、2007/02/25/12/00/00と5hourとで構成された情報が記憶されるとする。5hour は、スナップショット取得の時間間隔（以下、スナップショット取得間隔）を示す情報要素である。2007/02/25/12/00/00は、その時間間隔の開始となる時点（例えば、少なくとも、このスケジュール情報１４１が記憶される日時よりも将来の時点）を示す情報要素である。すなわち、スケジュール情報１４１は、スナップショット取得間隔を表す情報要素とそのスナップショット取得間隔の開始時点（以下、「取得間隔開始時点」と言う）を表す情報要素とで構成される。このスケジュール情報に従う各時点が、スナップショット取得時点である。取得間隔開始時点は、年／月／日／時／分／秒と異なる形式で表されても良い。スケジュール情報は、スナップショット取得間隔を表す情報要素と取得間隔開始時点を表す情報要素との組み合わせに限らず、他種の構成、例えば、一以上のスナップショット取得時点を示す情報要素で構成されても良い。親記憶領域に記憶されるスケジュール情報１４１は、例えば、管理端末１０４から入力された情報である。
【００６５】
また、図４Ａに示すように、子記憶領域に、親記憶領域に記憶されているスケジュール情報１４１と異なる、2007/02/24/11/00/00と8hourとで構成されたスケジュール情報１４１が、記憶されているとする。
【００６６】
親NAS（NAS-00）から、スケジュール変更監視サブプログラム２１３が、子NAS（NAS-01）にダウンロードされる。これにより、子NAS（NAS-01）のCPUで、スケジュール変更監視サブプログラム２１３を実行することができる。
【００６７】
図４Ｂに示すように、子NAS（NAS-01）におけるスケジュール変更監視サブプログラム２１３が、親記憶領域に記憶されているスケジュール情報１４１を親NAS（NAS-00）から取得する。具体的には、例えば、子NAS（NAS-01）におけるスケジュール変更監視サブプログラム２１３が、親NAS（NAS-00）におけるスケジュール通知プログラム２０４に、スケジュール情報１４１を要求し、スケジュール通知プログラム２０４が、その要求に応答して、親記憶領域に記憶されているスケジュール情報１４１を子NAS（NAS-01）に送信する。子NAS（NAS-01）におけるスケジュール変更監視サブプログラム２１３が、取得したスケジュール情報１４１を、子記憶領域に記憶されているスケジュール情報１４１に上書きする。これにより、子記憶領域に記憶されているスケジュール情報１４１の内容が、親記憶領域に記憶されているスケジュール情報１４１の内容と同じになる。つまり、親NAS（NAS-00）と子NAS（NAS-01）とのスナップショット取得タイミングが同期することになる。
【００６８】
スケジュール変更監視サブプログラム２１３は、定期的に（又は不定期的に）、親NAS（NAS-00）から、スケジュール情報１４１を取得し、子記憶領域に記憶させるよう構成されている。このため、もし、親記憶領域に記憶されているスケジュール情報１４１が例えば管理端末１０４から変更された場合には、子NAS（NAS-01）におけるスケジュール変更監視サブプログラム２１３により、親NAS（NAS-00）から変更後のスケジュール情報１４１が取得され、子記憶領域上のスケジュール情報１４１が、その変更後のスケジュール情報１４１に更新される。これにより、親NAS（NAS-00）でのスナップショット取得タイミングが変更されても、子NAS（NAS-01）でのスナップショット取得タイミングを親NAS（NAS-00）での変更後のスナップショット取得タイミングに同期させることができる。
【００６９】
なお、図４Cに示すように、スケジュール変更監視サブプログラム２１３が、親記憶領域に記憶されているスケジュール情報１４１の変更の有無を監視し、変更有りを検出した場合にのみ、親NAS（NAS-00）からスケジュール情報１４１を取得し、取得したスケジュール情報１４１を、子記憶領域に上書きしてもよい。
【００７０】
以下、本実施形態で行われる一つの処理の流れを説明する。
【００７１】
例えば、図５に示すように、GNSシステムが、５つのNAS装置（NAS-00〜NAS-04）で構成されているとする。親NAS（NAS-00）において、GNS定義変更監視サブプログラム２０３が、GNSシステムにNASが組み入れられたかどうかを監視している。具体的には、例えば、GNS定義情報１０８の変更の有無を監視している。
【００７２】
GNSシステムに子NAS（NAS-05）が追加されたとする。これは、NAS-05が単に通信ネットワーク１０２に接続されたということを意味するのではなく、GNS定義情報１０８に、NAS-05に関する情報が追加されたことを意味する。図示の例では、GNS定義情報１０８には、グローバルパス“/GNS-Root/Dir-02/FS5”と、NAS名“NAS-05”と、ローカルパス“/mnt/FS5”との情報要素セットが追加されている。この情報要素セットの追加、言い換えれば、GNS定義情報１０８の変更は、前述したように、管理端末１０４が行うことができる（管理端末１０４に代えて他種の計算機が行わっても良い）。
【００７３】
GNS定義変更監視サブプログラム２０３が、GNS定義情報１０８の変更の有無を監視しているので、上記情報要素セットの追加は、GNS定義変更監視サブプログラム２０３により検出される。GNS定義変更監視サブプログラム２０３は、GNS定義情報１０８に情報要素セットが追加されたことを検出した場合、その情報要素セット中のNAS名“NAS-05”に対応した子NAS（NAS-05）に、親NAS（NAS-00）からログインする（以下、この遠隔からのログインを「リモートログイン」と呼ぶ）。
【００７４】
子NAS（NAS-05）に対してリモートログインを完了した後、GNS定義変更監視サブプログラム２０３は、図６Ａに示すように、チェックプログラム２１１を子NAS（NAS-05）にダウンロードする。これにより、子NAS（NAS-05）のCPUで、チェックプログラム２１１を実行することができる。
【００７５】
チェックプログラム２１１は、子NAS（NAS-05）にスナップショット／リストアプログラム２０７Bが有るか否かを判定する。その結果、スナップショット／リストアプログラム２０７Bが有るという判定結果になった場合、図６Bに示すように、チェックプログラム２１１は、親NAS（NAS-00）から、スケジュール変更監視サブプログラム２１３をダウンロードし、起動する。そして、図６Cに示すように、スケジュール変更監視サブプログラム２１３が、親NAS（NAS-00）から、スケジュール情報１４１を取得し、取得したスケジュール情報１４１を、子NAS（NAS-05）の子記憶領域に記憶させる。
【００７６】
以上の一連の流れにより、GNSシステムにインクリメンタルに追加された子NAS（NAS-05）でのスナップショット取得タイミングを、親NAS（NAS-00）のスナップ取得タイミングに同期させることができる。また、以上の一連の流れの結果、図７Aに示すように、全ての子NAS（NAS-01〜NAS-05）の各々におけるスケジュール変更監視サブプログラム２１１が、親NAS（NAS-00）からスケジュール情報１４１を取得するようになる。
【００７７】
なお、例えば、親NAS（NAS-00）に障害が発生した場合、親NAS（NAS-00）から別のNAS装置に対するフェイルオーバが実行される。別のNAS装置は、いずれかの子NASであっても良いし、予備のNAS装置であっても良い。フェイルオーバが実行された場合、フェイルオーバ先のNAS装置には、GNS定義情報１０８や、スケジュール情報１４１等が引き継がれる。スケジュール変更監視サブプログラム２１３は、子NASにおけるアクセスログを参照し、そのアクセスログから、GNS定義が有効なNAS装置（つまり、現在の親NAS）を識別し、そのNAS装置からスケジュール情報１４１を取得するよう構成されている。図７Bに例示するように、親NAS（NAS-00）から子NAS（NAS-01）へのフェイルオーバが行われた後、NAS-01が親NASとなる。そのため、NAS-01が、クライアント端末１０３からアクセス要求を受け付けて子NAS（NAS-02〜NAS-05）へ転送するようになり、それ故、子NAS（NAS-02〜NAS-05）において、アクセスログに記録される、アクセス要求の転送元のNAS名は、NAS-01を示す名前となる。この場合、スケジュール変更監視サブプログラム２１３は、子NASにおけるアクセスログから、GNS定義が有効なNAS装置（例えば、最近記録されたNAS名から識別されるNAS装置）としてNAS-01を識別する。このため、図７Bに示すように、NAS-00からNAS-01へのフェイルオーバ後は、子NAS（NAS-02〜NAS-05）は、NAS-01からスケジュール情報１４１を取得する。
【００７８】
以上が、本実施形態で行われる一つの処理の一例の概要である。以下、図８を参照して、GNS定義変更監視サブプログラム２０３、チェックプログラム２１１、スケジュール変更監視サブプログラム２１３のそれぞれによって実行される処理の流れの概要を説明する。
【００７９】
GNS定義変更監視サブプログラム２０３は、GNS定義情報１０８を参照し、GNS定義情報の変更の有無を判断する（ステップS1）。変更無しであれば、GNS定義変更監視サブプログラム２０３は、一定時間後に、再度ステップS1を実行する。
【００８０】
変更有りであれば、GNS定義変更監視サブプログラム２０３は、GNS定義情報１０８の変更有りに関わる子NAS（例えば、GNSシステムに追加された子NAS）に、リモートログインする（ステップS2）。そして、GNS定義変更監視サブプログラム２０３は、その子NASにチェックプログラム２１１を親NASからダウンロードし、チェックプログラム２１１を実行させる（ステップS3）。
【００８１】
その後、GNS定義変更監視サブプログラム２０３は、その子NASからログアウトする（ステップS5）。もし、GNS定義変更監視サブプログラム２０３は、ステップS3に応答して、移行先情報を子NASから受けたならば、その子NASからログアウトし、受けた移行先情報が表す移行先の子NASに、リモートログインし、上記ステップS3を実行する。
【００８２】
親NASから子NASにダウンロードされ実行されたチェックプログラム２１１は、その子NASにスナップショット／リストアプログラム２０７Bが有るか否かをチェックする（ステップS11）。無しの場合、チェックプログラム２１１は、この子NASにマウントされているファイルシステムを他NASに移行し、移行先を親NASへ通知し、終了となる。一方、有りの場合、チェックプログラム２１１は、スケジュール変更監視サブプログラム２１３を親NASからダウンロードする。その後、チェックプログラム２１１は、そのスケジュール変更監視サブプログラム２１３を起動する（ステップS11）。
【００８３】
起動されたスケジュール変更監視サブプログラム２１３は、子NASでのアクセスログから、GNS定義情報が有効なNAS装置を識別する（ステップS21）。そして、スケジュール変更監視サブプログラム２１３は、識別したNAS装置からスケジュール情報１４１を取得し、子記憶領域に記憶させる（ステップS22）。つまり、スナップショット取得タイミングを親NASでのスナップショット取得タイミングに同期させる。スケジュール変更監視サブプログラム２１３は、ステップS22の一定時間後に、再びステップS21を実行する。
【００８４】
以下、GNS定義変更監視サブプログラム２０３、チェックプログラム２１１、スケジュール変更監視サブプログラム２１３の各々が行う処理の詳細を説明する。
【００８５】
図９は、GNS定義変更監視サブプログラム２０３が行う処理のフローチャートを示す。以下の説明では、親NASが管理する一方の特定の記憶領域（以下、記憶領域A）に、最新のGNS定義情報１０８が記憶されており、親NASが管理する他方の特定の記憶領域（以下、記憶領域B）に、直前回にGNS定義変更監視サブプログラム２０３が参照したGNS定義情報１０８（以下、直前回のGNS定義情報１０８）が記憶されるものとする。
【００８６】
GNS定義変更監視サブプログラム２０３は、起動後、一定時間待ってから（ステップS51）、直前回のGNS定義情報１０８を記憶領域Bから検索する（ステップS52）。直前回のGNS定義情報１０８が見つかれば（ステップS53でYES）、ステップS55に進む。一方、直前回のGNS定義情報１０８が見つからなければ（ステップS53でNO）、GNS定義変更監視サブプログラム２０３は、記憶領域Aに記憶されている最新のGNS定義情報１０８を、直前回のGNS定義情報１０８として記憶領域Bに保存する（ステップS54）。その後、ステップS51に戻る。
【００８７】
ステップS55では、GNS定義変更監視サブプログラム２０３は、最新のGNS定義情報１０８と直前回のGNS定義情報とを比較し、差分を抽出する。その差分が、GNSシステムの構成要素としてのNAS装置が追加されたことに相当する差分（具体的には、新たなNAS名を含んだ情報要素セット）であれば（ステップS56でYES）、ステップS57に進み、一方、そのような差分でなければ、ステップS51に戻る。
【００８８】
ステップS57では、GNS定義変更監視サブプログラム２０３は、抽出した差分に含まれている一以上のNAS名を特定し、各NAS名に対応したNAS装置に対して、ステップS59〜ステップS65の処理を実行する（特定された全てのNAS装置に対してステップS59〜ステップS65が完了すれば、ステップS58でYESとなり、ステップS51に戻り、未完のNAS装置があれば、ステップS59〜ステップS65が行われる）。
【００８９】
ステップS59で、GNS定義変更監視サブプログラム２０３は、上記特定された一以上のNAS名のうち、このステップS59で未だ選択されていないNAS名を選択する。
【００９０】
そして、GNS定義変更監視サブプログラム２０３は、選択されたNAS名から識別されるNAS装置に対して、リモートログインを行う（ステップS60）。その後、GNS定義変更監視サブプログラム２０３は、リモートログイン先のNAS装置に、チェックプログラム２１１をダウンロードし実行させる（ステップS61）。
【００９１】
実行の結果、移行が発生した場合、具体的には、リモートログイン先のNAS装置から移行先情報を受信した場合（ステップS62でYES）、GNS定義変更監視サブプログラム２０３は、現在のログイン先NAS装置からログアウトし（ステップS63）、移行先情報から特定される移行先NASへリモートログインし（ステップS64）、ステップS61に戻る。一方、上記の実行の結果、移行が発生しなかった場合（ステップS62でNO）、GNS定義変更監視サブプログラム２０３は、現在のログイン先NAS装置からログアウトし（ステップS65）、ステップS58に戻る。
【００９２】
図１０Aは、チェックプログラム２１１が行う処理のフローチャートを示す。
【００９３】
チェックプログラム２１１は、GNS定義変更監視サブプログラム２０３からの命令により起動する。子NASにおいて、チェックプログラム２１１は、その子NASにスナップショット／リストアプログラム２０７Bが有るか否かを判断する（ステップS71）。有るとの判断になれば、ステップS72に進み、無いとの判断になれば、ステップS74に進む。
【００９４】
ステップS72では、チェックプログラム２１１は、呼び出し元であるGNS定義変更監視サブプログラム２０３がある親NASから、スケジュール変更監視サブプログラムをダウンロードする。そして、ステップS73で、チェックプログラム２１１は、ダウンロードされたスケジュール変更監視サブプログラム２１３を起動する。
【００９５】
ステップS74では、チェックプログラム２１１は、GNSシステム内からスナップショット／リストアプログラム２０７Bを有するNAS装置（例えば子NAS）を選択する。具体的には、例えば、図１０Bに例示する管理テーブル（GNSシステムを構成する各NAS装置毎にNAS名とスナップショット／リストアプログラムの有無とが記録されたテーブル）を、GNSシステムを構成する全てのNAS装置が保持し、チェックプログラム２１１は、その管理テーブルから、スナップショット／リストアプログラムを有するNAS装置を選択することができる。或いは、例えば、GNS定義情報１０８において、NAS名に、スナップショット／リストアプログラムの有無を表す情報要素を関連付けておき、チェックプログラム２１１は、親NASに、スナップショット／リストアプログラムを有するNAS装置を問合せ、親NASが、GNS定義情報１０８から、スナップショット／リストアプログラムを有するNAS装置を特定し、そのNAS装置のNAS名を、チェックプログラム２１１に回答し、回答されたNAS名に対応するNAS装置が、上記選択されたNAS装置であっても良い。
【００９６】
ステップS75で、チェックプログラム２１１は、自分を実行している子NASにマウントされているファイルシステムを、ステップS74で選択したNAS装置に移行する。ファイルシステムの移行について、子NAS（NAS-02）のファイルシステム（FS2）を子NAS（NAS-03）のファイルシステム（FS3）に移行することを例に採り説明する。子NAS（NAS-02）において、チェックプログラム２１１が、ファイルシステムプログラム２０５Bを通じて、ファイルシステム（FS2）をリードし（具体的には、例えば、そのファイルシステム（FS2）に含まれている全てのオブジェクトをリードし）、子NAS（NAS-03）に、そのファイルシステム（FS2）を転送し、そのファイルシステム（FS2）をマウントし且つ共有化することを命じる。子NAS（NAS-03）は、転送されて来たファイルシステム（FS2）を、ファイルシステムプログラム２０５Bを通じて、自分の管理下の論理ボリュームに格納し、そのファイルシステム（FS2）をマウントし、共有化する。これにより、ファイルシステム（FS2）の移行の完了となる。なお、それに代えて、例えば、複数のNAS装置１０９とストレージシステム１１１とが通信ネットワーク（例えばSAN）に接続されている場合には、チェックプログラム２１１は、子NAS（NAS-02）のファイルシステムプログラム２０５Bにファイルシステム（FS2）をアンマウントさせ、子NAS（NAS-03）のファイルシステムプログラム２０５Bにそのファイルシステム（FS2）をマウントさせることで、ファイルシステム（FS2）の子NAS（NAS-02）から子NAS（NAS-03）への移行を行っても良い。
【００９７】
ステップS76で、チェックプログラム２１１は、移行先情報（上記例では、NAS（NAS-03）にファイルシステム（FS2）を移行したことを表す情報）を、呼び出し元であるGNS定義変更監視サブプログラム２０３に通知する。
【００９８】
図１０Cは、スケジュール変更監視サブプログラム２１３が行う処理のフローチャートを示す。
【００９９】
スケジュール変更監視サブプログラム２１３は、一定時間待った後（ステップS81）、アクセスログを参照し、現在有効な親NAS（GNS定義情報１０８を有し、アクセス要求を振り分けしているNAS）を特定する（ステップS82）。そして、スケジュール変更監視サブプログラム２１３は、その親NASから最新のスケジュール情報１４１（親記憶領域に現在記憶されているスケジュール情報１４１）を取得し（ステップS83）、取得したスケジュール情報１４１を、子記憶領域に記憶されているスケジュール情報１４１に上書きする（ステップS84）。その後、ステップS81に戻る。これにより、子NASでのスナップショット取得タイミングが親NASでのそれに同期される。
【０１００】
さて、GNSを構成するNAS装置間で同期させたタイミングで取得されたスナップショットをクライアント端末１０３が利用可能になるためには、スナップショットのリストア、具体的には、作成されたスナップショット（ファイルシステム）のマウントが必要となる。以下、スナップショットのマウントに関する説明を行う。
【０１０１】
図２５は、スナップショット／リストアプログラム２０７A（２０７B）における、スナップショットのマウントに関わるサブプログラムを示す。
【０１０２】
そのようなサブプログラムとして、マウント要求受付サブプログラム６５１と、マウント共有設定サブプログラム６５３とがある。親NASでは、マウント要求受付サブプログラム６５１が実行され、子NASでは、マウント共有設定サブプログラム６５３が実行される。そのため、スナップショット／リストアプログラム２０７Aには、少なくともマウント要求受付サブプログラム６５１があれば良く、スナップショット／リストアプログラム２０７Bには、少なくともマウント共有設定サブプログラム６５３があれば良い。
【０１０３】
図２６は、マウント要求受付サブプログラム６５１が行う処理の流れと、マウント共有設定サブプログラム６５３が行う処理の流れとを示す。以下、この図２６を主に使用し、図２１〜図２４を補助的に使用して、スナップショットのマウントが行われるまでの処理流れを説明する。
【０１０４】
ステップS131では、図２１に示すように、親NAS（NAS-00）において、マウント要求受付サブプログラム６５１が、スナップショットのリストア要求（マウント要求）を管理端末１０４から受け付ける。リストア要求には、GNSで定義されているディレクトリポイント（例えば、“/GNS-Root/Dir-01”のような、GNSのツリーの先頭から所望のツリーノードまでのパス）と、スナップショット取得時点（例えば、2006/12/19/15/00/00）を示す情報（以下、取得時点情報）とが含まれている。マウント要求受付サブプログラム６５１は、受けたリストア要求から、ディレクトリポイントと取得時点情報とを取得する。
【０１０５】
ステップS132では、図２２に示すように、マウント要求受付サブプログラム６５１が、取得したディレクトリポイントと最新のGNS定義情報１０８とを照合することで、リストア指定範囲を特定する。リストア指定範囲とは、そのディレクトリポイントが示すツリーノード（頂点）から末端のツリーノードまでの部分（ツリー範囲）である。マウント要求受付サブプログラム６５１は、リストア指定範囲に属するグローバルパス（ディレクトリポイントを通過するグローバルパス）に対応するNAS名及びローカルパスを特定する。
【０１０６】
そして、特定された一以上のNAS名に対応する子NAS（NAS-01〜NAS-04）の全てについて、ステップS134〜ステップS136が行われる（ステップS133）。以下、子NAS（NAS-01）を例に採る。
【０１０７】
ステップS13４では、図２３に示すように、マウント要求受付サブプログラム６５１は、特定された子NAS（NAS-01）のマウント共有設定サブプログラム６５３に、スナップショットをマウントすることとファイル共有を設定することとの要求（以下、「マウント共有要求」と言う）を送信する。マウント共有要求には、上記リストア要求中の取得時点情報が含まれる。そのマウント共有要求の受信に応答して、子NAS（NAS-01）のマウント共有設定サブプログラム６５３は、ステップS141〜ステップS143を実行する。
【０１０８】
ステップS141では、図２４に示すように、マウント共有設定サブプログラム６５３は、受信したマウント共有要求から取得時点情報を取得し、その取得時点情報が示すスナップショット取得時点に関連付けられているスナップショット管理情報を検索する。
【０１０９】
ステップS142では、マウント共有設定サブプログラム６５３は、見つかったスナップショット管理情報を用いて、そのスナップショット取得時点のスナップショット（ファイルシステム）を作成し、作成したスナップショットをファイルシステムプログラム２０５Bにマウントする。
【０１１０】
ステップS143では、マウント共有設定サブプログラム６５３は、マウントしたスナップショット（ファイルシステム）を共有化し（ファイル共有設定を行い）、そのスナップショットへのローカルパスを、親NAS（NAS-00）に返す。これにより、親NAS（NAS-00）で、ステップS135〜ステップS136が行われる。
【０１１１】
ステップS135では、図２４に示すように、マウント要求受付サブプログラム６５１は、最新のGNS定義情報１０８に、前述のリストア指定範囲のスナップショットを示すエントリ（グローバルパスとローカルパスとを含んだ情報要素セット）を追加する。以下、リストア指定範囲におけるファイルシステムが“FS”で表されるのに対し、リストア指定範囲のスナップショットにおけるファイルシステムを“SS”と表す。例えば、マウント要求受付サブプログラム６５１は、GNSの特定の位置（例えば、ルートディレクトリ（先頭ツリーノード）“GNS-Root”の直下）に、リストア指定範囲のスナップショットを追加する。マウント要求受付サブプログラム６５１は、リストア指定範囲におけるファイルシステム（例えばFS2）につき、対応するファイルシステム（例えばSS2）へのグローバルパスと、そのファイルシステムへのローカルパスと、そのローカルパスの通知元NASのNAS名（例えばNAS-02）とを含んだ情報要素セットを、最新のGNS定義情報１０８に追加する。
【０１１２】
そのような情報要素セットが追加されたGNS定義情報１０８を基に、図２４に例示するような、リストア指定範囲のスナップショットを含んだGNS１０１´がクライアント端末１０３に提供可能となり、クライアント端末１０３は、そのGNS１０１´におけるスナップショット内のファイルシステム（SS2〜SS4）にアクセスすることができる。なお、NFSプロトコルの場合、ステップS135の後に、ステップS136として、ファイル共有をマウントする処理（例えば、GNSをマウントする処理）が行われる。
【０１１３】
以上が、第一の実施形態についての説明である。
【０１１４】
なお、この第一の実施形態では、例えば、GNSシステムを構成する複数のNAS装置のうちの二以上のNAS装置（例えば全てのNAS装置）が、GNSを提供するようになっていても良い。これにより、一つのNAS装置にクライアント端末からのアクセス要求が集中してしまうことの回避が期待できる。この場合、親NASとは、スケジュール情報の発信元となるNAS装置であって、子NASとは、親NASからスケジュール情報を受けるNAS装置であっても良い。
【０１１５】
また、この第一の実施形態では、具体的には、例えば、NFSプロトコルでは、オブジェクトID（例えばファイルハンドル）を指定したアクセス要求とすることができる。図２８を参照して、グローバルパスを使用したアクセス要求についてと、GNSのバリエーションとの具体例を説明する。
【０１１６】
例えば、親NASでは、擬似ファイルシステム６６１が用意されていて、その擬似ファイルシステム（GNSを構築するためのベースとなる仮想的なファイルシステム）におけるネームに、ローカルの共有範囲（一つのNAS装置での共有範囲）がマッピングされることで、一つのGNSが構築することができる。共有範囲とは、クライアントに対するオブジェクトの論理的な公開単位である。共有範囲は、ローカルのファイルシステムの全部又は一部であって良い。図２８の例では、共有範囲として、親NAS（NAS-00）にマウントされているファイルシステム（FS0）の全部である共有範囲６６３と、子NAS（NAS-01）にマウントされているファイルシステム（FS1）の一部である共有範囲６６５とを示している。擬似ファイルシステム６６１におけるネーム“FS0”に、共有範囲６６３の頂点にあるネーム“root”がマッピングされ、擬似ファイルシステム６６１におけるネーム“Dir-01”に、共有範囲６６５の頂点にあるネーム“Dir-aa”がマッピングされることで、図示のGNSが構築される。
【０１１７】
ＮＦＳプロトコルでは、クライアント端末は、ファイルなどのオブジェクトを識別するためのオブジェクトＩＤを使用し、リモートプロシージャコール（ＲＰＣ）などのアプリケーションインターフェースを介してアクセスを行うようになっている。例えば、図示のGNSにおいて、クライアント端末１０３がネーム“File-B”に対応したオブジェクトにNFSプロトコルでアクセスする場合、例えば、以下の処理が行われる。クライアント端末１０３が、オブジェクト“File-B”までの第一のアクセスパスを指定した要求を送信し、最初にアクセス可能なオブジェクト“GNS-Root”のオブジェクトＩＤ（FH1）を親NAS（NAS-00）からの応答から取得する。また、オブジェクトＩＤ（FH1）をすでに取得しているオブジェクト“GNS-Root”の下位に配置されたオブジェクト“Dir-01”については、クライアント端末１０３は、すでに取得しているオブジェクトＩＤ（FH1）と、下位にあるオブジェクト“Dir-01”を指定した要求を送信し、その応答から、オブジェクト“Dir-01”に対応したオブジェクトＩＤ（FH2）を取得する。このようなやり取りを繰り返すことにより、最終的に、クライアント端末１０３は、オブジェクト“File-B”に対応したオブジェクトID（FH4）を取得することができる。その後、クライアント端末１０３は、オブジェクトID（FH4）を指定したアクセス要求を親NAS（NAS-00）に送信すれば、親NAS（NAS-00）は、そのアクセス要求中のオブジェクトID（FH4）に対応した、子NAS（NAS-01）のファイルシステム（FS1）内のオブジェクト“File-B”にアクセスするためのアクセス要求を、子NAS（NAS-01）に送信する。
【０１１８】
上述した第一の実施形態によれば、親NASに設定されたスケジュール情報が、その親NASとGNSシステムを構成する他の全ての子NASに反映される。これにより、GNSシステムを構成する全てのNAS装置のスナップショット取得タイミングを同期させることができる。
【０１１９】
また、第一の実施形態によれば、スケジュール情報の反映には、親NASがGNSを提供するためのGNS定義情報１０８が有効に利用される。例えば、GNSシステムの構成要素としてのNAS装置が新たに追加されたことが、GNS定義情報１０８の変更から検出され、変更後のGNS定義情報１０８から特定された、追加されたNAS装置に、スケジュール情報が送信される。
【０１２０】
また、第一の実施形態によれば、スケジュール情報が親NASから子NASに送信される前に、親NASが、その子NASに、スナップショット／リストアプログラムの有無を判断するためのチェックプログラムを送信して実行させ、スナップショット／リストアプログラムが有る場合に、その子NASにスケジュール情報を送る。一方、スナップショット／リストアプログラムが無い場合には、チェックプログラムが、スナップショット／リストアプログラムが無いNAS装置からそのプログラムが有るNAS装置にファイルシステムを移行させた後に、親NASが、移行先のNAS装置に、スケジュール情報を送る。これにより、GNSに表されている全てのファイルシステムについて、必ずスナップショットが取得されているので、過去の或る時点のリストア指定範囲を正確にリストアすることができる。
【０１２１】
＜第二の実施形態＞。
【０１２２】
以下、本発明の第二の実施形態を説明する。その際、第一の実施形態との相違点を主に説明し、第一の実施形態との相違点については説明を省略或いは簡略する。
【０１２３】
この第二の実施形態では、GNSのうちの相関のあるオブジェクトについて、スナップショット取得タイミングを同期させることができる。
【０１２４】
例えば、図１３Ａに示すように、親NASに、クライアント端末１０３からのアクセス要求を子NASに転送しそれに伴い所定種類の情報を転送ログに記録するアクセス要求処理プログラム９７１と、管理者所望の一以上のオブジェクトについてのスケジュール情報を受け付けるスケジュール受付プログラム９７３とが備えられる。スケジュール受付プログラム９７３は、特定された複数のオブジェクトの各々間の相関度を計算する相関度計算サブプログラム９７５を有する。
【０１２５】
図１１に示すように、親NAS（NAS-00）のスケジュール受付プログラム９７３は、管理端末１０４からの要求に応答して、GSN定義情報１０８に基づき、GNS１０１を示すビュー（以下、GNSビュー）を表示させ、管理者所望のディレクトリポイントを受け付ける。ここでは、管理端末１０４の入力装置（例えばマウス）が操作されたことにより、GNSのビューにおいて、ツリーノード “Dir-01”がカーソル６０１で指定されたとする。この場合、スケジュール受付プログラム９７３が、GNS定義情報１０８から、指定されたツリーノード
“Dir-01”の下位に属するオブジェクト名として、FS2、FS3及びFS4を特定する。
【０１２６】
この場合、スケジュール受付プログラム９７３の相関度計算サブプログラム９７５が、特定されたオブジェクト名（FS2、FS3及びFS4）に対応したオブジェクト間の相関度を計算する。スケジュール受付プログラム９７３は、計算された各々の相関度を基に、図１２Aに例示するスケジュール受付画面（GUI）を構築し、そのスケジュール受付画面を管理端末１０４に提供する。このスケジュール受付画面（GUI）は、ファイルシステム（FS2）とファイルシステム（FS3）間の相関度が“４５”、ファイルシステム（FS2）とファイルシステム（FS4）間の相関度が“５”、及び、ファイルシステム（FS3）とファイルシステム（FS4）間の相関度が“０”であることを示し、ファイルシステム（FS2、FS3及びFS4）のどれについてどのようなスケジュールを設定するかを受け付ける画面である。管理者が、そのスケジュール受付画面で、例えば、ファイルシステム（FS2及びFS3）を指定し、それらに対して共通のスケジュール情報を入力して、ボタン「実行」を押下したとする。ボタン「実行」の押下に応答して、スケジュール受付プログラム９７３が、親記憶領域に、入力されたスケジュール情報と、ファイルシステム名“FS2”及び“FS3”とを対応付ける。
【０１２７】
この場合、例えば図１１のGSNシステムにおいて、GNS定義変更監視サブプログラム２０３は、FS4を有する子NAS（NAS-04）にはチェックプログラム２１１を送信せず、FS2を有する子NAS（NAS-02）とFS3を有する子NAS（NAS-03）とに、チェックプログラム２１１を送信する（また、例えば、新たに子NAS（NAS-05）のファイルシステム（FS5）が追加されたとしても、ツリーノード“Dir-01”の下位に追加されたのでなければ、GNS定義変更監視サブプログラム２０３は、チェックプログラム２１１を子NAS（NAS-05）に送信しない）。このため、親記憶領域に記憶されているスケジュール情報は、子NAS(NAS-02〜NAS-04)のうち、子NAS（NAS-02及びNAS-03）にのみ、ダウンロードされる。その際、スケジュール情報に加えて、それに対応付けられているファイルシステム名“FS2”及び“FS3”もダウンロードされ、子記憶領域に記憶される。子NAS（NAS-02及びNAS-03）において、スナップショット／リストアプログラム２０５Bは、子記憶領域に記憶されているファイルシステム名に対応するファイルシステムについて、そのファイルシステム名に子記憶領域で対応付けられているスケジュール情報に従うタイミングでスナップショットを取得する。つまり、図１１のGNSシステムでは、管理者から指定されたGSN部分についてのみ、親NAS（NAS-00）でのスナップショット取得タイミングを同期させることができる。
【０１２８】
また、GNS定義変更監視サブプログラム２０３は、管理者から指定されたディレクトリポイントを管理しておくことができる。もし、GNS定義情報１０８からNAS装置の追加を検出した場合、ディレクトリポイントの下位にオブジェクトが追加されたのであれば、その追加されたNAS装置にチェックプログラム２１１を送信するが、ディレクトリポイントの下位にオブジェクトが追加されたのでなければ、追加されたNAS装置にチェックプログラム２１１を送信しない。
【０１２９】
ところで、相関度の計算方法として、例えば以下の３つの計算方法が考えられる。
【０１３０】
第一の計算方法は、アクセス要求処理プログラム９７１に更新される転送ログを利用する方法である。図１２Bに、転送ログの一例を示す。アクセス要求処理プログラム９７１により、転送ログには、例えば、クライアント端末１０３からアクセス要求を受信した日時と、そのクライアント端末１０３のユーザのIDと、アクセス要求の転送先のNAS名と、アクセス要求の転送に使用されたローカルパスとが記録される。相関度計算サブプログラム９７５は、同一のアクセスパターン（ここでは、一人のユーザに利用された複数のファイルシステムの組み合わせ）が異なる複数のユーザで発生している回数（以下、アクセス発生回数）をカウントし、そのカウント値に基づいて、相関度を算出する（例えば、そのカウント値が高いほど、高い相関度を算出する）。具体的には、例えば、ファイルシステム（FS2）とファイルシステム（FS3）の両方を利用したユーザが４人であって（つまりアクセス発生回数が４であって）、ファイルシステム（FS2）とファイルシステム（FS4）の両方を利用したユーザが２人である場合（つまりアクセス発生回数が２である場合）、相関度計算サブプログラム９７５は、ファイルシステム（FS2）とファイルシステム（FS3）間の相関度として、ファイルシステム（FS2）とファイルシステム（FS4）間の相関度に比して高い値を算出する。
【０１３１】
第二の計算方法は、GSNでのツリー構造を利用する方法である。相関度計算サブプログラム９７５は、ツリーノードポイント間のリンクの数に基づいて、相関度を算出する（例えば、リンクの数が高いほど、高い相関度を算出する）。具体的には、例えば、図１１のGNS１０１において、ファイルシステム（FS3）とファイルシステム（FS4）間のリンクの数は２であり、ファイルシステム（FS2）とファイルシステム（FS3）間のリンクの数は３であるので、相関度計算サブプログラム９７５は、ファイルシステム（FS3）とファイルシステム（FS4）間の相関度として、ファイルシステム（FS2）とファイルシステム（FS3）間の相関度に比して高い値を算出する。
【０１３２】
第三の計算方法は、クライアント端末１０３で実行されるアプリケーションプログラム６０３のための環境設定ファイル６０５を利用する方法である（図１３B参照）。環境設定ファイル６０５には、例えば、アプリケーションプログラム６０３がどのパスを利用するかが記録されている。環境設定ファイル６０５に記録されている複数のパスから複数のファイルシステムが特定される場合、相関度計算サブプログラム９７５は、それら複数のファイルシステム間で相関有りと判断する。相関有りと判断された数に基づいて、相関度計算サブプログラム９７５は、相関度を算出することができる。
【０１３３】
以上が、第二の実施形態についての説明である。
【０１３４】
＜第三の実施形態＞。
【０１３５】
例えば、GNSでは、複数のNAS装置に分散されているファイルをあたかも一つのディレクトリに格納されているかのようにユーザに見せることが可能である。更新が必要な複数のファイルがそれぞれ異なるNAS装置に格納されている場合、或るユーザグループに属するユーザが、新しいファイル共有をGNS上に作成し，そこへファイルを移動してしまうと、上記のユーザグループ以外のユーザがそのファイルを利用する際は、勝手にファイルが移動されてしまい、不都合が生じる．
具体的には、例えば、図１４に示すよう、ユーザグループ（Group A）のクライアントユーザ（クライアント端末１０３のユーザ）は、ファイルシステム（FS1）に格納されているファイル（File-A）とファイルシステム（FS4）に格納されているファイル（File-B）を業務で使用しているため、それぞれ異なるディレクトリに格納されていては不便なので、1つのフォルダ（ディレクトリ）にまとめて格納したいとする。
【０１３６】
しかし、ユーザグループ（Group B）のクライアントユーザは、ファイルシステム（FS4）に格納されているファイル（File-B）を使用しているので、勝手に格納場所を変更されては困る。同様に、ユーザグループ（Group C）のクライアントユーザは、ファイルシステム（FS1）に格納されているファイル（File-A）を使用しているので、勝手に格納場所を変更されては困る。
【０１３７】
この場合において、新しいファイル共有（共有フォルダ）を作成したとする。例えば、図１５に示すように、子NAS（NAS-05）を追加し、ファイルシステム（FS5）をマウントしたとする。ファイルシステム（FS5）にファイル（File-A及びFile-B）を移行すると、ユーザグループ（Group A）に属するユーザクライアントにとっては、１つのフォルダ（ディレクトリ）にファイルがまとめられるので、利便性は向上するであろう。しかし、ユーザグループ（Group B）のクライアントユーザにとっては、ファイルシステム（FS4）を利用してもファイル（File-B）がなく、ユーザグループ（Group C）のクライアントユーザにとっては、ファイルシステム（FS1）を利用してもファイル（File-A）がないので、不便である。
【０１３８】
そこで、図１６に示すように、ファイルの移動を行わずに、ユーザグループが必要とする仮想的なファイル共有の作成が必要になる。このようなファイル共有には、複数の異なるNAS装置に分散されているファイルが仮想的に格納される。言い換えれば、仮想的なファイル共有内のオブジェクトは、他のファイル共有内のオブジェクトに関連付けられ、仮想的なファイル共有内のオブジェクトが指定された場合には、そのオブジェクトに関連付けられている、他のファイル共有内のオブジェクトが提供される。
【０１３９】
具体的には、例えば、図１６に示すように、管理者が、GNS定義情報１０８に、点線枠内の２つのグローバルパスと２つのローカルパスとを追加したとする。２つのグローバルパスは、仮想的なファイル共有（FS5）にファイル（File-A及びFile-B）が格納されていることを表すパスであり、２つのグローバルパスに対する２つのローカルパスの対応付けは、仮想的なファイル共有（FS5）内のファイル（File-A）の実体が、ファイルシステム（FS1）内のファイル（File-A）であり、仮想的なファイル共有（FS5）内のファイル（File-B）の実体が、ファイルシステム（FS4）内のファイル（File-B）であることを意味する。これにより、Group Aに属するクライアントユーザにとっては、１つのフォルダ（FS5）にまとめてファイル（File-A及びFile-B）が格納されるので、利便性は向上する。また、Group Bに属するクライアントユーザは、フォルダ（FS4）にアクセスしても今まで通りファイル（File-B）を参照でき、Group Cに属するクライアントユーザは、フォルダ（FS1）にアクセスしても今まで通りファイル（File-A）を参照可能である。
【０１４０】
親NAS（NAS-00）は、ＧＮＳ定義情報１０８の更新の有無を監視する。それにより、特定部分（例えばファイル名）を除いた追加のローカルパスと同じローカルパスが更新後のＧＮＳ定義情報に含まれていることを検出した場合に、それらのローカルパスから、それぞれ、複数のファイルシステム（例えばFS1及びFS4）を識別し、それらが、スナップショット取得タイミングの同期の候補であることを管理者に通知することができる。つまり、この第三の実施形態では、第二の実施形態と異なる方法で、ファイルシステム間の相関関係を特定することができる。以下、具体的に説明する。
【０１４１】
図１７は、この第三の実施形態において親NASが有するコンピュータプログラムの一例を示す。
【０１４２】
親NASには、第一の実施形態に比して、更に、WWWサーバ５１５が備えられる。また、ファイル共有プログラム２０１Aに、ファイル共有設定監視サブプログラム５１１と画面操作受付サブプログラム５１３とが備えられる。
【０１４３】
図１８は、ファイル共有設定監視サブプログラム５１１が行う処理のフローチャートを示す。
【０１４４】
ファイル共有設定監視サブプログラム５１１は、図９のステップS51〜ステップS55と同様のステップS91〜ステップS95を実行することができる。
【０１４５】
抽出された差分が、ファイル共有の追加を意味する差分、言い換えれば、グローバルパスにおけるファイルシステム名と、そのグローバルパスに対応付けられているローカルパスにおけるファイルシステム名とが異なっている複数の情報要素セットである場合、ステップS96でYESとなって、ステップS97に進み、そうではない場合、ステップS91に戻る。
【０１４６】
ステップS97で、ファイル共有設定監視サブプログラム５１１は、抽出した差分を、親NASが管理する所定の記憶領域に保存する。この段階で、ファイル共有設定監視サブプログラム５１１は、その差分を基に、後述するスケジュール設定画面（ＷＥＢページ）を構築するための情報を準備することができる。
【０１４７】
ステップS98で、ファイル共有設定監視サブプログラム５１１は、管理者に、設定画面URL（Uniform Resource Locator）を記載した電子メールを送信する。設定画面ＵＲＬとは、スケジュール設定画面にアクセスするためのＵＲＬである。管理者の電子メールアドレスが、所定の記憶領域に登録されていて、ファイル共有設定監視サブプログラム５１１は、その記憶領域から、管理者の電子メールアドレスを特定し、その電子メールアドレスを宛先として、上記の電子メールを送信することができる。
【０１４８】
管理端末１０４において、その電子メールが表示され、管理者が、設定画面ＵＲＬを指定したとき、ＷＷＷサーバ５１５が、上記スケジュール設定画面を構築するための情報を、管理端末１０４に提供し、管理端末１０４が、その情報を基に、スケジュール設定画面を構築して表示することができる。
【０１４９】
図１９Ａは、スケジュール設定画面の一例を示す。
【０１５０】
スケジュール設定画面には、上記追加の定義から特定されたファイル共有の名称と、その追加の定義から特定された実体のある複数のファイルシステムの名称と、それら複数のファイルシステムをそれぞれ有する複数のNAS装置の名称と、それら複数のファイルシステムについてのスケジュール情報の入力欄とが表示される。管理者が、その入力欄にスケジュール情報を入力してボタン「実行」を押下すると、画面操作受付サブプログラム５１３が呼び出される。その際、スケジュール設定画面に表示されている複数のファイルシステム名（例えばFS1及びFS4）、複数のNAS名（例えばNAS-01及びNAS-04）及びスケジュール情報を含んだ要求が管理端末１０４から親NASに送信される。
【０１５１】
図１９Bは、画面操作受付サブプログラム５１３が行う処理のフローチャートを示す。
【０１５２】
画面操作受付サブプログラム５１３は、管理端末１０４から受信した要求から、複数のファイルシステム名、複数のNAS名及びスケジュール情報を取得する（ステップS101）。そして、画面操作受付サブプログラム５１３は、親記憶領域に、複数のNAS名（例えばNAS-01及びNAS-04）、複数の（例えばFS1及びFS4）及びスケジュール情報を記憶させる。これにより、親NASに設定されたスナップショット取得タイミングを、NAS-01のFS1とNAS-04のFS4とについて同期させることができる。
【０１５３】
第一の実施形態では、GNS定義情報１０８から特定される全ての子NASに、チェックプログラム２１１が送信されるが、第二及び第三の実施形態では、親記憶領域において、スケジュール情報に対応付けられているNAS名を有する子NASにのみ、チェックプログラム２１１が送信される。
【０１５４】
＜第四の実施形態＞。
【０１５５】
例えば、図２０Aに示すように、親NAS（NAS-00）に設定されたスケジュール情報を、スケジュール通知プログラム２０４が、能動的に、各子NAS（例えばNAS-01）に送信することができる。
【０１５６】
この場合、子NAS（NAS-01）において、スケジュール変更監視サブプログラム２１３は、図２０Bに例示するように、親NASから通知確認している状態において（ステップS111）、親NASからスケジュール情報の通知を受けたら（ステップS112でYES）、子NAS（NAS-01）のアクセスログを参照して、現在有効な親NASを特定し（ステップS113）、特定した親NASからスケジュール情報を入手し（ステップS114）、入手したスケジュール情報を子記憶領域に上書きする（ステップS115）。
【０１５７】
つまり、スケジュール変更監視サブプログラム２１３は、親NASから通知されて来たスケジュール情報をそのまま子記憶領域に上書きしても良いが、ステップS113のように、現在有効な親NASを特定し特定した親NASからスケジュール情報を取得することができる。これにより、例えば、親NASがスケジュール情報を通知後に他のNASにフェイルオーバが行われた場合には、スケジュール変更監視サブプログラム２１３は、フェイルオーバ先の新たな親NASから、スケジュール情報を取得することができる。
【０１５８】
以上、本発明の幾つかの好適な実施形態を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
【図面の簡単な説明】
【０１５９】
【図１】図１は、本発明の第一の実施形態に係るコンピュータシステムの構成例を示す。
【図２】図２Ａは、親ＮＡＳが有するコンピュータプログラムの一例を示す。図２Ｂは、子ＮＡＳが有するコンピュータプログラムの一例を示す。
【図３】図３Ａは、ストレージシステムにある複数種類の論理ボリュームを示す。図３Ｂは、スナップショット取得のためのＣＯＷの一例を示す図である。
【図４】図４Ａは、親NASから子NASへのスケジュール変更監視サブプログラムのダウンロードを示す。図４Ｂは、親NASから子NASへのスケジュール情報の反映を示す。図４Ｃは、スケジュール情報の反映の一変形例を示す。
【図５】図５は、GNSシステムへの新たなNAS装置の追加の様子を示す。
【図６】図６Ａは、親NASから追加された子NASへのチェックプログラムのダウンロードを示す。図６Ｂは、親NASから追加された子NASへのスケジュール変更監視サブプログラムのダウンロードを示す。図６Ｃは、親NASから追加された子NASへのスケジュール情報の反映を示す。
【図７】図７Ａは、全ての子NAS（NAS-01〜NAS-05）が親NAS（NAS-00）からスケジュール情報を取得することを示す。図７Ｂは、NAS-00からNAS-01へのフェイルオーバ後は全ての子NAS（NAS-02〜NAS-05）が新たな親NAS（NAS-01）からスケジュール情報を取得することを示す。
【図８】図８は、GNS定義変更監視サブプログラム、チェックプログラム、スケジュール変更監視サブプログラムのそれぞれによって実行される処理の流れの概要を示す。
【図９】図９は、GNS定義変更監視サブプログラムが行う処理のフローチャートを示す。
【図１０】図１０Aは、チェックプログラムが行う処理のフローチャートを示す。図１０Bは、各NAS装置についてスナップショット／リストアプログラムの有無を管理するためのテーブルの構成例を示す。図１０Cは、スケジュール変更監視サブプログラムが行う処理のフローチャートを示す。
【図１１】図１１は、ＧＮＳにおける所望のディレクトリポイントを管理者が指定することを示す。
【図１２】図１２Ａは、スケジュール受付画面の一例を示す。図１２Ｂは、転送ログの一例と相関度の第一の計算方法との説明図である。
【図１３】図１３Ａは、本発明の第二の実施形態において親ＮＡＳに更に備えられるコンピュータプログラムの一例を示す。図１３Ｂは、相関度の第三の計算方法の説明図である。
【図１４】図１４は、本発明の第三の実施形態において各クライアントグループと各クライアントグループが使用するファイルとの関係を説明するための図である。
【図１５】図１５は、新規に実体のあるファイル共有を作成してファイルを移行したことの一例を示す図である。
【図１６】図１６は、新規に仮想的なファイル共有を作成したことの一例を示す。
【図１７】図１７は、本発明の第三の実施形態において親NASが有するコンピュータプログラムの一例を示す。
【図１８】図１８は、ファイル共有設定監視サブプログラムが行う処理のフローチャートを示す。
【図１９】図１９Ａは、スケジュール設定画面の一例を示す。図１９Bは、画面操作受付サブプログラムが行う処理のフローチャートを示す。
【図２０】図２０Ａは、本発明の第四の実施形態で親ＮＡＳが能動的に子ＮＡＳにスケジュール情報を通知することの説明図である。図２０Ｂは、本発明の第四の実施形態でのスケジュール変更監視サブプログラムの処理のフローチャートを示す。
【図２１】図２１は、管理端末から親NASへのリストア要求を示す。
【図２２】図２２は、リストア要求で指定されたディレクトリポイントとGNS定義情報との照合によりリストア指定範囲が特定されることを示す。
【図２３】図２３は、リストア指定範囲に属するオブジェクトを有する子NASにマウント共有要求を送信することを示す。
【図２４】図２４は、スナップショットのマウント（リストア）の一例を示す。
【図２５】図２５は、スナップショット／リストアプログラムにおける、スナップショットのマウントに関わるサブプログラムを示す。
【図２６】図２６は、マウント要求受付サブプログラムが行う処理の流れと、マウント共有設定サブプログラムが行う処理の流れとを示す。
【図２７】図２７は、ＮＡＳ装置とそれに接続されているストレージシステムとのそれぞれのハードウェア構成例を示す。
【図２８】図２８は、GNSの構成の具体例を示す。
【符号の説明】
【０１６０】
１０１…グローバルネームスペース（ＧＮＳ）  １０３…クライアント端末  １０４…管理端末  １０９…ＮＡＳ装置
【図１】
2008197745.tif 000003
【図２】
2008197745.tif 000004
【図３】
2008197745.tif 000005
【図４】
2008197745.tif 000006
【図５】
2008197745.tif 000007
【図６】
2008197745.tif 000008
【図７】
2008197745.tif 000009
【図８】
2008197745.tif 000010
【図９】
2008197745.tif 000011
【図１０】
2008197745.tif 000012
【図１１】
2008197745.tif 000013
【図１２】
2008197745.tif 000014
【図１３】
2008197745.tif 000015
【図１４】
2008197745.tif 000016
【図１５】
2008197745.tif 000017
【図１６】
2008197745.tif 000018
【図１７】
2008197745.tif 000019
【図１８】
2008197745.tif 000020
【図１９】
2008197745.tif 000021
【図２０】
2008197745.tif 000022
【図２１】
2008197745.tif 000023
【図２２】
2008197745.tif 000024
【図２３】
2008197745.tif 000025
【図２４】
2008197745.tif 000026
【図２５】
2008197745.tif 000027
【図２６】
2008197745.tif 000028
【図２７】
2008197745.tif 000029
【図２８】
2008197745.tif 000030