(57)【特許請求の範囲】
【請求項１】
複数のバックアップ装置と、
性能指標保持手段及びバックアップ装置選択手段を有するストレージ装置と、
を備え、
前記性能指標保持手段は、当該性能指標として前記バックアップ装置毎における応答時間及び帯域幅を保持し、
前記バックアップ装置選択手段は、
バックアップ取得要求又はリストア要求の対象となるデータの転送サイズが所定の閾値を上回るか否かを判定し、前記判定の結果上回る場合には前記帯域幅に基づき前記バックアップ取得に係る送信先又は前記リストアに係る送信元となるバックアップ装置を選択し、前記判定の結果下回る場合には前記応答時間に基づき前記バックアップ取得に係る送信先又は前記リストアに係る送信元となるバックアップ装置を選択する
ことを特徴とする分散バックアップシステム。
【請求項２】
複数のバックアップ装置と、
性能指標保持手段及びバックアップ装置選択手段を有するストレージ装置と、
を備え、
前記性能指標保持手段は、当該性能指標として前記バックアップ装置毎における応答時間及び帯域幅を保持し、
前記バックアップ装置選択手段は、
前記応答時間とバックアップ取得要求又はリストア要求の対象となるデータの転送サイズを前記帯域幅で除算した値とを加算して前記バックアップ装置毎の予想転送時間を算出し、該予想転送時間の小さい順に前記バックアップ装置を選択する
ことを特徴とする分散バックアップシステム。
【請求項３】
請求項１記載の分散バックアップシステムであって、
前記所定の閾値とする転送サイズを設定可能とするユーザインタフェース装置を設けることを特徴とする分散バックアップシステム。
【請求項４】
請求項１記載の分散バックアップシステムであって、
オンデマンドリストアの処理実行に並行して、テストデータの送受信又はバッチリストアの処理実行を動作させて性能を測定し、前記性能の測定に基づいて前記性能指標の値を更新する手段を備える
ことを特徴とする分散バックアップシステム。
【請求項５】
請求項１記載の分散バックアップシステムであって、
ファイルシステムのバックアップを取得する場合には、前記バックアップ装置選択手段を当該バックアップ取得に係る送信先として前記バックアップ装置を選択するように動作させ、当該バックアップを取得する場合の前記転送サイズは前記バックアップ取得のために要求される対象のデータの転送サイズである
ことを特徴とする分散バックアップシステム。
【請求項６】
請求項５記載の分散バックアップシステムであって、
前記バックアップを取得するに当たって冗長度を設定し、
前記バックアップ装置選択手段は、該設定した冗長度分も含めてバックアップ装置を選択する
ことを特徴とする分散バックアップシステム。
【請求項７】
請求項１記載の分散バックアップシステムが複数のリストア要求を処理する場合であって、
単位時間あたりに処理可能なリストアオペレーション数を示すリストア処理性能を測定する手段を設け、
前記バックアップ装置選択手段は、前記転送サイズが所定の閾値を上回るか否かを判定し、上回る場合には、前記帯域幅を基に前記各バックアップ装置毎に算出したリストア総量に応じて前記リストア要求数の配分と前記バックアップ装置の選択を決定し、下回る場合には、前記応答時間と前記リストア処理性能に応じて前記リストア要求数の配分と前記バックアップ装置の選択を決定する
ことを特徴とする分散バックアップシステム。
【請求項８】
請求項１記載の分散バックアップシステムが複数のバックアップ取得要求を処理する場合であって、
単位時間あたりに処理可能なバックアップオペレーション数を示すバックアップ処理性能を測定する手段を設け、
前記バックアップ装置選択手段は、前記転送サイズが所定の閾値を上回るか否かを判定し、上回る場合には、前記帯域幅を基に前記各バックアップ装置毎に算出したバックアップ総量に応じて前記バックアップ要求数の配分と前記バックアップ装置の選択を決定し、下回る場合には、前記応答時間と前記バックアップ処理性能及び冗長度に応じて前記バックアップ要求数の配分と前記バックアップ装置の選択を決定する
ことを特徴とする分散バックアップシステム。
【請求項９】
請求項１記載の分散バックアップシステムであって、
ファイルシステムのバージョンを管理する管理手段を設け、
前記バックアップ装置選択手段は、リストアすべきバージョンのファイルシステムをもつバックアップ装置を前記判定の対象とする
ことを特徴とする分散バックアップシステム。
【請求項１０】
請求項１記載の分散バックアップシステムであって、
前記ストレージ装置及び前記選択されたバックアップ装置とは異なる中継ストレージ装置を備え、
前記性能指標保持手段は、前記中継ストレージ装置における応答時間及び帯域幅も前記性能指標として保持し、
前記バックアップ装置選択手段は、前記リストアを前記バックアップ装置から間接的に経由して行うために前記中継ストレージ装置を選択することも可能にした
ことを特徴とする分散バックアップシステム。
【請求項１１】
請求項１０記載の分散バックアップシステムであって、
前記中継ストレージ装置は、前記選択されたバックアップ装置を除く前記複数のバックアップ装置のうちのひとつである、
ことを特徴とする分散バックアップシステム。
【請求項１２】
請求項１０記載の分散バックアップシステムであって、
前記バックアップ装置選択手段により中継ストレージ装置が選択された場合には、前記ストレージ装置から前記中継ストレージ装置に中継リストア要求が送信される
ことを特徴とする分散バックアップシステム。
【請求項１３】
複数のバックアップ装置毎における応答時間及び帯域幅を保持するステップと、
リストア要求の対象となるデータの転送サイズが所定の閾値を上回るか否かを判定するステップと、
前記判定の結果上回る場合には前記帯域幅に基づき該リストアに係る送信元となるバックアップ装置を選択するステップと、
前記判定の結果下回る場合には前記応答時間に基づき該リストアに係る送信元となるバックアップ装置を選択するステップと、
を有することを特徴とする分散バックアップシステムにおけるリストア方法。
【請求項１４】
請求項１３記載の分散バックアップシステムにおけるリストア方法であって、
前記応答時間及び帯域幅を保持する対象として中継リストア装置を加え、
前記バックアップ装置を選択するステップにより該中継リストア装置が選択された場合には、該中継リストア装置に中継リストア要求を送信するステップ、
を設けたことを特徴とする分散バックアップシステムにおけるリストア方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを複数の装置へバックアップするストレージシステムのバックアップ方法、リストア方法に関する。
【背景技術】
【０００２】
企業の基幹システムや金融システム、電子商取引など、ビジネスの様々な場所で情報システムが用いられている。これらのシステムでは、機器の不具合や故障に伴うサービスの停止時間を短縮することが求められる。
【０００３】
このような要求に応えるため、ストレージの技術分野では、オンデマンドリストアが提案されている。オンデマンドリストアは、アプリケーションやエンドユーザなどのストレージ装置利用者がデータを使用する際に初めて、バックアップ装置からリストアするものである。オンデマンドリストア技術は、従来必要だったサービス再開前にストレージ装置に全データをリストアする作業を不要にするため、サービスの停止時間を短縮できる。
【０００４】
ところで、耐障害性強化や高性能化のため、複数のストレージ装置にバックアップする分散バックアップシステムが用いられる。分散バックアップシステムは、1つのデータを複数のバックアップ装置に複製することで、データを冗長保存する。このような分散バックアップシステムに対して、バックアップやリストアを高速に行いたいという要求がある。
【０００５】
このような要求を満たす手段として、例えば特許文献１には、データベースのバックアップを行うに際して、予め設定された選択条件に基づいて、複数のバックアップ装置から最適なバックアップ装置を選択し、バックアップ・リストアする方法が開示されている。性能が異なるバックアップ装置に対し、選択条件を「接続回線の速度（帯域幅）が所定の閾値よりも高いこと」とすることで、複数の装置から接続回線の速度（帯域幅）の大きい装置を選択し、バックアップやリストアをすることができる。そうすることで、接続回線の速度（帯域幅）が性能のボトルネックになるような、大量データのバックアップ・リストア処理に必要な時間が短縮される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−４２４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述の特許文献１に開示された方法では、小サイズのファイルをバックアップする場合や、ファイルのオンデマンドリストアを行う場合に、最適なバックアップ装置を選択することができない。
【０００８】
従来利用されてきたファイルシステムのバックアップやリストアでは、ストレージ装置は、ファイルシステム全体をまとめたアーカイブファイルをバックアップ装置と送受信する。一般にアーカイブファイルのサイズは大きく、数ＧＢや数ＴＢとなる場合がある。
【０００９】
このような従来のバックアップに比べ、ファイル単位のバックアップでは数ＫＢ程度の小サイズのファイルをバックアップ装置に送信する場合がある。また、従来のリストアに比べ、ファイルのオンデマンドリストアでは、一度のリストアで数ＫＢ程度の小サイズのデータをリストアすることが多い。例えば、ストレージ装置の利用者が、ファイルのメタデータやデータの一部だけにアクセスした場合、ストレージ装置は、利用者がアクセスしたい数ＫＢのデータのみをバックアップ装置からリストアすることになる。
【００１０】
一般に、数ＫＢ程度の小サイズのデータを転送する際に、帯域幅の大きい経路を使用しても、小さい経路を使用しても転送時間は変わらない。小サイズのデータを転送する時間のうち大部分はプロトコル処理にかかる時間であり、データを転送する時間ではないからである。したがって、帯域幅に応じて装置を選択する、特許文献１に開示された方法では、ファイル単位のバックアップやファイルのオンデマンドリストアに適した装置を選択することはできない。
【００１１】
以上のことから、解決しようとする課題は、ファイルシステムデータを重複して持つバックアップシステムにおいて、バックアップやファイルのオンデマンドリストアに適した装置を選択し、ファイル単位のバックアップやファイル単位のリストアにかかる処理時間を短縮することである。
【課題を解決するための手段】
【００１２】
上述の課題を解決するために、本発明は、複数のバックアップ装置と、該バックアップ装置を選択するストレージ装置を備える分散バックアップシステムにおいて、該ストレージ装置が、該バックアップ装置毎における応答時間及び帯域幅を保持し、リストアを行う送信元となるバックアップ装置を選択する際に、リストア要求に係るデータの転送サイズが所定の閾値を上回るか否かを判定し、前記判定の結果上回る場合には前記帯域幅に基づいて、また、前記判定の結果下回る場合には前記応答時間に基づいて、選択する機能を備えるものである。
【発明の効果】
【００１３】
本発明によれば、小サイズのファイルバックアップやファイルのオンデマンドリストアを高速化し、処理時間を短縮することができる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施例における分散バックアップシステムの構成例を示すブロック図である。
【図２】第１の実施例におけるストレージ装置２００の構成を示すブロック図である。
【図３】第１の実施例における複数のバックアップ装置３００の内の１つの構成を示すブロック図である。
【図４】第１の実施例におけるファイルサーバプログラム４００の構成を示すブロック図である。
【図５】第１の実施例におけるファイル操作プログラム５００の構成を示すブロック図である。
【図６】第１の実施例におけるバックアッププログラム６００の構成を示すブロック図である。
【図７】第１の実施例におけるオンデマンドリストアプログラム７００の構成を示すブロック図である。
【図８】第１の実施例におけるバックアップ装置選択プログラム８００の構成を示すブロック図である。
【図９】第１の実施例におけるバックアップ装置管理プログラム９００の構成を示すブロック図である。
【図１０】第１の実施例におけるオブジェクトサーバプログラム１０００の構成を示すブロック図である。
【図１１】第１の実施例におけるオブジェクト操作プログラム１１００の構成を示すブロック図である。
【図１２】第１の実施例におけるリストア進捗管理テーブル１２００の一例を示す図である。
【図１３】第１の実施例における装置選択条件設定テーブル１３００の一例を示す図である。
【図１４】第１の実施例における構成定義テーブル１４００の一例を示す図である。
【図１５】第１の実施例におけるオブジェクト配置管理テーブル１５００の一例を示すク図である。
【図１６】第１の実施例における性能測定テーブル１６００の一例を示す図である。
【図１７】第１の実施例における装置選択条件設定画面１７００の一例を示す図である。
【図１８】第１の実施例におけるバックアップモジュール６０３の処理フローである。
【図１９】第１の実施例におけるバックアップ取得時の装置選択モジュール８０４の処理フローである。
【図２０】第１の実施例におけるリストアモジュール７０３の処理フローである。
【図２１】第１の実施例におけるリストア処理時の装置選択モジュール８０４の処理フローである。
【図２２】第２の実施例におけるバックアップ取得時の装置選択モジュール８０４の処理フローである。
【図２３】第２の実施例におけるリストア処理時の装置選択モジュール８０４の処理フローである。
【図２４】第３の実施例における性能測定テーブル２４００の一例を示す図である。
【図２５】第３の実施例におけるバックアップモジュール６０３の処理フローである。
【図２６】第３の実施例におけるバックアップ取得時の装置選択モジュール８０４の処理フローである。
【図２７】第３の実施例におけるリストアモジュール７０３の処理フローである。
【図２８】第３の実施例におけるリストア処理時の装置選択モジュール８０４の処理フローである。
【図２９】第４の実施例におけるオブジェクト配置管理テーブル２９００の一例を示す図である。
【図３０】第４の実施例におけるリストア進捗管理テーブル３０００の一例を示す図である。
【図３１】第４の実施例におけるリストアモジュール７０３の処理フローである。
【図３２】第５の実施例における分散バックアップシステムの構成例を示すブロック図である。
【図３３】第５の実施例における中継ストレージ装置３３００の構成を示すブロック図である。
【図３４】第５の実施例における中継リストアプログラム３４００の構成例を示すブロック図である。
【図３５】第５の実施例における構成定義テーブル３５００の一例を示す図である。
【図３６】第５の実施例における性能測定テーブル３６００の一例を示す図である。
【図３７】第５の実施例におけるリストアモジュール７０３の処理フローの一部である。
【図３８】第５の実施例におけるリストアモジュール７０３の処理フローの一部である。
【図３９】第５の実施例における中継リストアモジュール３４０４の処理フローである。
【発明を実施するための形態】
【００１５】
以下、１つのストレージ装置が持つファイルシステムを３つのバックアップ装置に分散バックアップするシステムを例として、本実施形態を説明する。
【実施例１】
【００１６】
実施例１では、ファイルシステムのバックアップやリストアのために使用されるバックアップ装置へのアクセスに際して、転送されるデータのサイズが所定の閾値を上回るか否かを判定し、上回った場合は帯域幅が最大のバックアップ装置を、下回った場合は応答時間が最小のバックアップ装置を、それぞれ通信先として選択する。このようなバックアップ装置を選択する機能は、バックアップ元またはリストア先となるストレージ装置に内蔵される。
【００１７】
以下、実施例１を詳細に説明する。
図１は、本実施例における分散バックアップシステムの構成例を示すブロック図である。
クライアント計算機１００は、ストレージ装置２００で提供されるファイル共有サービスを利用するエンドユーザによって使用される計算機である。
【００１８】
管理端末１１０は、ストレージ装置２００と第ｎバックアップ装置３００（ただしｎ＝１、２、３）を管理する計算機である。管理端末１１０は、ストレージ装置２００と第ｎバックアップ装置３００（ただしｎ＝１、２、３）とを管理する管理者によって使用される。
【００１９】
ストレージ装置２００は、ファイル共有サービスをクライアント計算機１００へ提供する計算機である。また、ストレージ装置２００は、複数のバックアップ装置３００へデータをバックアップする。また、複数のバックアップ装置３００からデータをリストアする。
【００２０】
複数のバックアップ装置３００は、ファイルのバックアップサービスをストレージ装置２００へ提供する計算機である。
【００２１】
ネットワーク１２０は、クライアント計算機１００と、管理端末１１０と、ストレージ装置２００と、複数のバックアップ装置３００とを相互に接続するネットワークである。ネットワーク１２０は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）やＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）である。
【００２２】
図２は、ストレージ装置２００の構成を示すブロック図である。
ストレージ装置２００は、ＣＰＵ２１０と、タイマ２２０と、ネットワークＩ／Ｏインターフェース２３０と、ディスクＩ／Ｏインターフェース２４０と、ディスクドライブ２５０と、メモリ２６０と、それらを接続する内部的な通信路（例えば、バス）を有する計算機である。
【００２３】
ＣＰＵ２１０は、メモリ２６０に格納されたプログラムを実行する。タイマ２２０は、プログラムを定期的に実行する。ネットワークＩ／Ｏインターフェース２３０は、クライアント計算機１００と、管理端末１１０と、複数のバックアップ装置３００との通信に使用される。ディスクＩ／Ｏインターフェース２４０は、ディスクドライブ２５０との通信に使用される。ディスクドライブ２５０は、ストレージ装置２００が読み書きするデータを格納するために使用され、ファイルシステム２５１を格納する。ファイルシステム２５１は、ディレクトリを使うことで階層的にファイルを管理するシステムである。メモリ２６０は、プログラムやデータを格納する。例えば、ファイルサーバプログラム４００と、ファイル操作プログラム５００と、バックアッププログラム６００と、オンデマンドリストアプログラム７００と、バックアップ装置選択プログラム８００と、バックアップ装置管理プログラム９００とが格納される。
【００２４】
ファイルサーバプログラム４００は、クライアント計算機１００に対してファイル共有サービスを提供するプログラムである。例えば、ＮＦＳ（Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）サーバプログラムやＣＩＦＳ（Ｃｏｍｍｏｎ  Ｉｎｔｅｒｎｅｔ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）サーバプログラムである。
【００２５】
ファイル操作プログラム５００は、ファイルシステム２５１に格納されたファイルやディレクトリを操作するプログラムである。
【００２６】
バックアッププログラム６００は、複数のバックアップ装置３００にファイルやディレクトリを複製するプログラムである。
【００２７】
オンデマンドリストアプログラム７００は、複数のバックアップ装置３００が格納するデータから、ストレージ装置２００にファイルやディレクトリを再構成するプログラムである。オンデマンドリストアプログラム７００は、ストレージ装置２００に、複数のバックアップ装置３００に格納されたデータ位置を示す情報を格納することで、クライアント計算機１００がデータに透過的にアクセス可能にし、クライアント計算機１００から要求されたとき、該要求されたデータを複数のバックアップ装置３００からストレージ装置２００にリストアする。
【００２８】
バックアップ装置選択プログラム８００は、バックアップやリストアの際に通信を行うバックアップ装置を複数のバックアップ装置３００から選択するプログラムである。
【００２９】
バックアップ装置管理プログラム９００は、アクセス可能なバックアップ装置やデータの配置、装置の性能を管理するプログラムである。
【００３０】
なお、ストレージ装置２００が用いるデータ格納媒体としてディスクドライブを示したが、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）であってもよい。また、ストレージ装置２００としてデータ格納媒体を内蔵する装置を示したが、外部記憶装置を組み合わせてもよい。例えば、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）経由で接続されたディスクアレイ装置を用いてもよい。
【００３１】
図３は、複数のバックアップ装置３００の内の１つとして第ｎバックアップ装置３００の構成を示すブロック図である。
この第ｎバックアップ装置３００は、ＣＰＵ３１０と、ネットワークＩ／Ｏインターフェース３２０と、ディスクＩ／Ｏインターフェース３３０と、ディスクドライブ３４０と、メモリ３５０と、それらを接続する内部的な通信路（例えば、バス）を有する計算機である。
【００３２】
ＣＰＵ３１０は、メモリ３５０に格納されたプログラムを実行する。ネットワークＩ／Ｏインターフェース３２０は、管理端末１１０と、ストレージ装置２００との通信に使用される。ディスクＩ／Ｏインターフェース３３０は、ディスクドライブ３４０との通信に使用される。ディスクドライブ３４０は、第ｎバックアップ装置３００が読み書きするデータを格納するために使用され、それにはオブジェクトストア３４１が格納される。オブジェクトストア３４１は、データをオブジェクトとして管理するシステムである。メモリ３５０は、プログラムやデータを格納する。例えば、オブジェクトサーバプログラム１０００とオブジェクト操作プログラム１１００とが格納される。
【００３３】
オブジェクトサーバプログラム１０００は、ストレージ装置２００に対してオブジェクト単位のストレージサービスを提供するプログラムである。ＨＴＴＰ（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）やＨＴＴＰＳ（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｓｆｅｒ  Ｐｒｏｔｏｃｏｌ  ｏｖｅｒ  Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔ  Ｌａｙｅｒ）をインターフェースとして用いるストレージサービスを提供するプログラムである。
【００３４】
オブジェクト操作プログラム１１００は、オブジェクトストア３４１に格納されたオブジェクトを操作するプログラムである。
【００３５】
なお、複数のバックアップ装置３００が用いるデータ格納媒体としてディスクドライブを示したが、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）であってもよい。また、ストレージ装置２００としてデータ格納媒体を内蔵する装置を示したが、外部記憶装置を組み合わせてもよい。例えば、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）経由で接続されたディスクアレイ装置を用いてもよい。
【００３６】
図４は、ファイルサーバプログラム４００の構成を示すブロック図である。
ファイルサーバプログラム４００は、ファイル要求受信モジュール４０１と、ファイル応答送信モジュール４０２とを備える。
【００３７】
ファイル要求受信モジュール４０１は、クライアント計算機１００やストレージ装置２００からファイル操作要求があった場合に実行される。ファイル操作要求とは、ファイル作成要求、ディレクトリ作成要求、メタデータ読み込み要求、メタデータ書き込み要求、データ読み込み要求、データ書き込み要求のいずれかである。ファイル要求受信モジュール４０１は、受信したファイル操作要求を、ファイル操作プログラム５００に送信する。
【００３８】
ファイル応答送信モジュール４０２は、ファイル操作プログラム５００から受信したファイル操作要求の処理結果を、クライアント計算機１００やストレージ装置２００に応答する。
【００３９】
図５は、ファイル操作プログラム５００の構成を示すブロック図である。ファイル操作要求には、ファイルシステム２５１に格納されるファイルまたはディレクトリの場所を示すパスが含まれる。例えば、パスは、／ｍｎｔ／ｆｉｌｅｓｙｓｔｅｍ／ｄｉｒ／ｆｉｌｅ．ｔｘｔのような／で区切られた文字列である。
【００４０】
ファイル操作プログラム５００は、ファイル作成モジュール５０１と、ディレクトリ作成モジュール５０２と、メタデータ読み込みモジュール５０３と、メタデータ書き込みモジュール５０４と、データ読み込みモジュール５０５と、データ書き込みモジュール５０６を備える。
【００４１】
ファイル作成モジュール５０１は、ファイル作成要求を受信した場合に実行され、要求の発行元が指定したパスにファイルを作成するもので、その後、その処理が成功したか否かをファイルサーバプログラム４００に応答する。
【００４２】
ディレクトリ作成モジュール５０２は、ディレクトリ作成要求を受信した場合に実行され、要求の発行元が指定したパスにディレクトリを作成するもので、その後、その処理が成功したか否かをファイルサーバプログラム４００に応答する。
【００４３】
メタデータ読み込みモジュール５０３は、メタデータ読み込み要求を受信した場合に実行され、要求の発行元が指定したパスのファイルまたはディレクトリのメタデータを読み込むもので、その後、その処理が成功したか否かと、処理が成功した場合は読み込んだ属性の内容を、ファイルサーバプログラム４００に応答する。対象がディレクトリの場合は、ディレクトリに格納されたファイルやディレクトリへのパスのリストも読み込む。
【００４４】
メタデータ書き込みモジュール５０４は、メタデータ書き込み要求を受信した場合に実行され、要求の発行元が指定したパスのファイルまたはディレクトリに、指定したメタデータを書き込むもので、その後、その処理が成功したか否かを、ファイルサーバプログラム４００に応答する。対象がディレクトリの場合は、ディレクトリに格納されたファイルやディレクトリへのパス追加やパスのリネームをする。
【００４５】
データ読み込みモジュール５０５は、データ読み込み要求を受信した場合に実行され、要求の発行元が指定したパスのファイルから、ファイルの内容を読み込むもので、その後、その処理が成功したか否かと、処理が成功した場合は読み込んだデータとを、ファイルサーバプログラム４００に応答する。
【００４６】
データ書き込みモジュール５０６は、データ書き込み要求を受信した場合に実行され、要求の発行元が指定したパスのファイルへ、ファイルの内容を書き込むもので、その後、その処理が成功したか否かをファイルサーバプログラム４００に応答する。
【００４７】
なお、ファイル操作プログラム５００は、ファイル操作に必要なデータがファイルシステム２５１にあるか否かを確認するため、オンデマンドリストアプログラム７００に対して、リストア要求を発行する。オンデマンドリストアプログラム７００からリストア応答を受信し、ファイル操作に必要なデータ全てがファイルシステム２５１にリストアされた後、ファイル操作要求を処理する。ファイル操作に必要なデータとは、ファイルまたはディレクトリのパスに示された全てのファイルまたはディレクトリである。例えば、／ｍｎｔ／ｆｉｌｅｓｙｓｔｅｍ／ｄｉｒ／ｆｉｌｅ．ｔｘｔのファイル作成要求を受信した場合は、／ｍｎｔ、／ｍｎｔ／ｆｉｌｅｓｙｓｔｅｍ、／ｍｎｔ／ｆｉｌｅｓｙｓｔｅｍ／ｄｉｒ／の３つのディレクトリがファイル操作に必要なデータである。ファイル操作プログラム５００は、オンデマンドリストアプログラム７００に／ｍｎｔ、／ｍｎｔ／ｆｉｌｅｓｙｓｔｅｍ、／ｍｎｔ／ｆｉｌｅｓｙｓｔｅｍ／ｄｉｒ／の３つのリストア要求を順に送信する。ファイル操作プログラム５００は、オンデマンドリストアプログラム７００が／ｍｎｔ／ｆｉｌｅｓｙｓｔｅｍ／ｄｉｒ／のリストアを完了した後、／ｍｎｔ／ｆｉｌｅｓｙｓｔｅｍ／ｄｉｒ／ｆｉｌｅ．ｔｘｔのファイル作成を開始する。
【００４８】
図６は、バックアッププログラム６００の構成を示すブロック図である。
バックアッププログラム６００は、バックアップ要求受信モジュール６０１と、バックアップ応答送信モジュール６０２と、バックアップモジュール６０３とを備える。
【００４９】
バックアップ要求受信モジュール６０１は、管理端末１１０やタイマ２２０からバックアップ要求があった場合に実行され、受信したバックアップ要求を、バックアップモジュール６０３に送信する。
【００５０】
バックアップ応答送信モジュール６０２は、バックアップモジュール６０３から受信したバックアップ要求の処理結果を、管理端末１１０やタイマ２２０に応答する。
【００５１】
バックアップモジュール６０３は、バックアップ要求を受信した場合に実行され、ファイルシステム２５１に格納されたファイルまたはディレクトリを第ｎバックアップ装置３００にバックアップする。バックアップモジュール６０３が行う処理の詳細は、図１８で後述する。
【００５２】
図７は、オンデマンドリストアプログラム７００の構成を示すブロック図である。
オンデマンドリストアプログラム７００は、リストア要求受信モジュール７０１と、リストア応答送信モジュール７０２と、リストアモジュール７０３と、リストア進捗管理モジュール７０４と、リストア進捗管理テーブル１２００とを備える。
【００５３】
リストア要求受信モジュール７０１は、管理端末１１０やファイル操作プログラム５００からリストア要求があった場合に実行され、受信したリストア要求をリストアモジュール７０３に送信する。
【００５４】
リストア応答送信モジュール７０２は、リストアモジュール７０３から受信したリストア要求の処理結果を、管理端末１１０やファイル操作プログラム５００に応答する。
【００５５】
リストアモジュール７０３は、リストア要求受信モジュール７０１からリストア要求を受信した場合に実行され、複数のバックアップ装置３００に格納されたオブジェクトからファイルシステム２５１にファイルやディレクトリをリストアする。リストアモジュール７０３が行う処理の詳細は、図２０で後述する。
【００５６】
リストア進捗管理モジュール７０４は、リストアモジュール７０３によって実行され、ファイルシステム２５１に格納されるべきファイルやディレクトリのリストアが完了した否かを管理する。
【００５７】
リストア進捗管理テーブル１２００は、リストア進捗管理モジュール７０４から操作され、リストアの進捗状況を格納する。
【００５８】
図８は、バックアップ装置選択プログラム８００の構成を示すブロック図である。
バックアップ装置選択プログラム８００は、装置選択要求受信モジュール８０１と、装置選択応答送信モジュール８０２と、装置選択条件設定モジュール８０３と、装置選択モジュール８０４と、装置選択条件設定テーブル８０５とを備える。
【００５９】
装置選択要求受信モジュール８０１は、管理端末１１０から装置選択条件設定要求があった場合と、バックアッププログラム６００やオンデマンドリストアプログラム７００から装置選択要求があった場合とに実行され、装置選択条件設定要求を装置選択条件設定モジュール８０３に、装置選択要求を装置選択モジュール８０４に、それぞれ送信する。
【００６０】
装置選択応答送信モジュール８０２は、装置選択条件設定モジュール８０３から受信した装置選択条件設定要求の処理結果を管理端末１１０に、装置選択モジュール８０４から受信した装置選択要求の処理結果をバックアッププログラム６００やオンデマンドリストアプログラム７００に、それぞれ応答する。
【００６１】
装置選択条件設定モジュール８０３は、装置選択条件設定要求を受信した場合に実行され、装置選択を行う条件を装置選択条件設定テーブル１３００に設定する。
【００６２】
装置選択モジュール８０４は、装置選択要求を受信した場合に実行され、設定された装置選択条件（例えば、装置選択条件設定テーブル１３００）と装置情報（例えば、後述の構成定義テーブル１４００、オブジェクト配置管理テーブル１５００、性能測定テーブル１６００）に基づいて装置を選択する。
【００６３】
装置選択条件設定テーブル１３００は、装置選択条件設定モジュール８０３から操作され、装置選択に用いる条件を格納する。
【００６４】
図９は、バックアップ装置管理プログラム９００の構成を示すブロック図である。
バックアップ装置管理プログラム９００は、装置管理要求受信モジュール９０１と、装置管理応答送信モジュール９０２と、構成定義モジュール９０３と、オブジェクト配置管理モジュール９０４と、性能測定モジュール９０５と、冗長度設定モジュール９０６と、構成定義テーブル１４００と、オブジェクト配置管理テーブル１５００と、性能測定テーブル１６００とを備える。
【００６５】
装置管理要求受信モジュール９０１は、管理端末１１０やタイマ２２０、バックアッププログラム６００、オンデマンドリストアプログラム７００、バックアップ装置選択プログラム８００から装置管理要求があった場合に実行される。ここで、装置管理要求とは、構成更新要求、オブジェクト配置更新要求、性能更新要求、構成参照要求、性能参照要求、オブジェクト配置参照要求、オブジェクト配置復旧要求のいずれかである。構成更新要求とオブジェクト配置復旧要求は、管理端末１１０から送信される。性能更新要求は、タイマ２２０から定期的に送信される。オブジェクト配置更新要求は、バックアッププログラム６００から送信される。構成参照要求と性能参照要求、オブジェクト配置参照要求は、バックアッププログラム６００とオンデマンドリストアプログラム７００、装置選択プログラム８００から送信される。
【００６６】
装置管理要求受信モジュール９０１は、装置管理要求を適切なモジュールに送信するもので、構成更新要求と構成参照要求を構成定義モジュール９０３に、オブジェクト配置更新要求とオブジェクト配置参照要求をオブジェクト配置管理モジュール９０４に、性能更新要求と性能参照要求を性能測定モジュール９０５に、それぞれ送信する。
【００６７】
装置管理応答送信モジュール９０２は、構成定義モジュール９０３、オブジェクト配置管理モジュール９０４、性能測定モジュール９０５から受信した装置管理要求の処理結果を、要求送信元の端末やタイマ、プログラムに応答する。
【００６８】
構成定義モジュール９０３は、構成更新要求または構成参照要求を受信した場合に実行され、構成更新要求を受信した場合には、構成定義テーブル１４００を更新し、その結果を装置管理応答送信モジュール９０２に送信し、構成参照要求を受信した場合には、構成定義テーブル１４００の情報を読み出し、その結果を装置管理応答送信モジュール９０２に送信する。
【００６９】
オブジェクト配置管理モジュール９０４は、オブジェクト配置更新要求またはオブジェクト配置参照要求、オブジェクト配置復旧要求を受信した場合に実行され、オブジェクト配置更新要求を受信した場合には、オブジェクト配置管理テーブル１５００を更新し、その結果を装置管理応答送信モジュール９０２に送信し、オブジェクト配置参照要求を受信した場合には、オブジェクト配置管理テーブル１５００を読み出し、その結果を装置管理応答送信モジュール９０２へ送信し、オブジェクト配置復旧要求を受信した場合には、１つまたは複数のバックアップ装置と通信し、オブジェクト配置管理テーブル１５００を読み出し、メモリ２６０にオブジェクト配置管理テーブル１５００をリストアする。
【００７０】
性能測定モジュール９０５は、性能更新要求または性能参照要求を受信した場合に実行され、性能更新要求を受信した場合には、複数のバックアップ装置３００とテストデータの送受信を行うことで各バックアップ装置の性能を測定し、小サイズ（例えば４ＫＢ）のファイルをテストデータとした測定結果を応答時間として、大サイズ（例えば１００ＭＢ）のファイルをテストデータとした測定結果を帯域幅として、それぞれ性能測定テーブル１６００を更新し、その結果を装置管理応答送信モジュール９０２に送信する。性能参照要求を受信した場合には、性能測定テーブル１６００を読み出し、その結果を装置管理応答送信モジュール９０２に送信する。また、性能測定モジュール９０５は、タイマ２２０から定期的に送られる性能更新要求により、定期的、例えば１０分に１回などの頻度で実行される。
【００７１】
冗長度設定モジュール９０６は、バックアップ取得時に冗長性を持たせる場合に実行される。すなわち、（バックアップ数＋１）として冗長度が設定される。
【００７２】
構成定義テーブル１４００は、構成定義モジュール９０３から操作され、複数のバックアップ装置３００のアクセス先を格納する。
【００７３】
オブジェクト配置管理テーブル１５００は、オブジェクト配置管理モジュール９０４から操作され、ファイルの格納先を管理する。
【００７４】
性能測定テーブル１６００は、性能測定モジュール９０５から操作され、複数の性能指標について各装置の性能値を格納する。
【００７５】
図１０は、オブジェクトサーバプログラム１０００の構成を示すブロック図である。
オブジェクトサーバプログラム１０００は、オブジェクト要求受信モジュール１００１と、オブジェクト応答送信モジュール１００２とを備える。
【００７６】
オブジェクト要求受信モジュール１００１は、ストレージ装置２００からオブジェクト操作要求があった場合に実行され、受信したオブジェクト操作要求をオブジェクト操作プログラム１１００に送信する。ここで、オブジェクト操作要求とは、オブジェクト格納要求、オブジェクト取得要求のいずれかである。
【００７７】
オブジェクト応答送信モジュール１００２は、オブジェクト操作プログラム１１００から受信したオブジェクト操作要求の処理結果を、ストレージ装置２００に応答する。
【００７８】
図１１は、オブジェクト操作プログラム１１００の構成を示すブロック図である。オブジェクト操作要求には、オブジェクトストア３４１に格納されるオブジェクトの場所を示すＵＵＩＤ（Ｕｎｉｖｅｒｓａｌｌｙ  Ｕｎｉｑｕｅ  Ｉｄｅｎｔｉｆｉｅｒ）が含まれる。ＵＵＩＤは、「ｅ４６３６７」、「ｅ８５８ｂ７」、「７４９ｂｄｂ」のような固定長のランダムな文字列である。
【００７９】
オブジェクト操作プログラム１１００は、オブジェクト格納モジュール１１０１と、オブジェクト取得モジュール１１０２とを備える。
【００８０】
オブジェクト格納モジュール１１０１は、オブジェクト格納要求を受信した場合に実行され、オブジェクト格納要求に含まれる内容を、オブジェクト格納要求に含まれるＵＵＩＤに対応づけて、オブジェクトストア３４１に格納する。このとき、内容のデータとメタデータを別々の関連づけられたＵＵＩＤのオブジェクトとして格納する。ここで、別々の関連づけられたＵＵＩＤとは、例えば、データに対応づけるＵＵＩＤが「ｅ４６３６７」であるとき、メタデータに対応づけるＵＵＩＤを「ｅ４６３６７＿ｍｅｔａｄａｔａ」とすることを意味する。その後、オブジェクト格納モジュール１１０１は、その処理が成功したか否かをオブジェクトサーバプログラム１０００に応答する。
【００８１】
オブジェクト取得モジュール１１０２は、オブジェクト取得要求を受信した場合に実行され、オブジェクト取得要求に含まれるＵＵＩＤに対応づけられたオブジェクトをオブジェクトストア３４１から読み出し、その後、その処理が成功したか否かと、処理が成功した場合は読み込んだ内容とを、オブジェクトサーバプログラム１０００に応答する。
【００８２】
図１２は、リストア進捗管理テーブル１２００の一例を示す図である。
リストア進捗管理テーブル１２００のエントリは、パス１２０１、ファイルＩＤ１２０２、メタデータ１２０３、データ１２０４からなる。
【００８３】
パス１２０１は、ファイルシステム２５１に格納される各ファイルまたは各ディレクトリのパスを格納する。
【００８４】
ファイルＩＤ１２０２は、ファイルシステム２５１に格納される各ファイルまたは各ディレクトリに関連づけられる一意のＩＤを格納する。ファイルＩＤ１２０２に格納する値としてＵＵＩＤを示したが、ファイルまたはディレクトリの名前やパスであってもよい。ここで、ファイルＩＤの値「ＴＯＰ＿ＤＩＲ」はファイルシステムの最上位ディレクトリを示すものとする。
【００８５】
メタデータ１２０３は、ファイルまたはディレクトリのメタデータがリストアされたか否かの情報を格納する。メタデータ１２０３にチェックが入っている場合、ファイルシステム２５１にファイルまたはディレクトリのメタデータが存在することを示す。メタデータ１２０３が空欄の場合、ファイルまたはディレクトリのメタデータがファイルシステム２５１に存在しないことを示す。メタデータ１２０３の値として、メタデータ単位で存在するか否かを格納する場合を示したが、メタデータの一部が存在するか否かを格納するように構成してもよい。例えば、メタデータのうち、ファイルサイズや読み込み時刻、更新時刻、アクセス制御情報（例えば、パーミッションやＡＣＬ（Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ｌｉｓｔ）、ＡＣＥ（Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ｅｎｔｒｙ））の単位で存在するか否かを格納してもよいし、メタデータのうち、特定のオフセット単位で存在するか否かを格納してもよい。
【００８６】
データ１２０４は、ファイルのデータがリストアされたか否かの情報を格納する。データ１２０４にチェックが入っている場合、ファイルシステム２５１にファイルのデータが存在することを示す。データ１２０４が空欄の場合、ファイルのデータがファイルシステム２５１に存在しないことを示す。データ１２０４の値として、全てのデータが存在するか否かを格納する場合を示したが、データの一部が存在するか否かを格納するように構成してもよい。例えば、データのうち、ファイルシステム２５１にデータが存在するオフセットを格納するように構成してもよい。なお、ディレクトリはデータを持たないため、常にデータ１２０４にチェックが入るものとする。
【００８７】
図１３は、装置選択条件設定テーブル１３００の一例を示す図である。
装置選択条件設定テーブル１３００のエントリは、項目１３０１と閾値１３０２からなる。
【００８８】
項目１３０１は、装置選択の条件として使用する項目を格納する。項目１３０１の値として、バックアップ装置に送信するファイルまたはディレクトリのサイズを示す転送サイズを示したが、ファイルまたはディレクトリのメタデータ（例えば、ファイルサイズや読み込み時刻、更新時刻、アクセス制御情報）を設定してもよい。
【００８９】
閾値１３０２は、装置選択の条件として使用する項目の、閾値として用いる値を格納する。閾値１３０２の値として１ＭＢを示したが、項目によって適切な値を格納するように構成してもよい。例えば、ファイルまたはディレクトリの読み込み時刻や更新時刻の場合は、「２０１２−０４−０１  １２：００」などの時刻や、ＵＮＩＸ（登録商標）時間のような時刻をある日時からの秒数で表した表現「１３３３５４０８００」などを格納すればよいし、ファイルまたはディレクトリのアクセス制御情報の場合は、「所有者が読み込み権限を持っている」などを示す値を格納すればよい。
【００９０】
図１４は、構成定義テーブル１４００の一例を示す図である。
構成定義テーブル１４００は、装置番号１４０１とアクセスＩＤ１４０２からなる。
【００９１】
装置番号１４０１は、バックアップ装置に与えられる一意の番号を格納する。
アクセスＩＤ１４０２は、バックアップ装置にアクセスするために必要なＩＤを格納する。アクセスＩＤ１４０２の値として、ＩＰｖ４（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  ｖｅｒｓｉｏｎ  ４）アドレスを示したが、ＩＰｖ６（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  ｖｅｒｓｉｏｎ  ６）アドレスであってもよいし、ＤＮＳ（Ｄｏｍａｉｎ  Ｎａｍｅ  Ｓｅｒｖｅｒ名）であってもよい。
【００９２】
図１５は、オブジェクト配置管理テーブル１５００の一例を示す図である。
オブジェクト配置管理テーブル１５００は、パス１５０１、ファイルＩＤ１５０２、装置番号１５０３、１５０４、１５０５からなる。
【００９３】
パス１５０１は、ファイルシステム２５１に格納される各ファイルまたは各ディレクトリのパスを格納する。
【００９４】
ファイルＩＤ１５０２は、ファイルシステム２５１に格納される各ファイルまたは各ディレクトリに関連づけられる一意のＩＤを格納する。ファイルＩＤ１５０２に格納する値としてＵＵＩＤを示したが、ファイルまたはディレクトリの名前やパスであってもよい。ここで、ファイルＩＤの値「ＴＯＰ＿ＤＩＲ」はファイルシステムの最上位ディレクトリを示すものとする。
【００９５】
装置番号１５０３、１５０４、１５０５は、各装置番号が示すバックアップ装置に、ファイルまたはディレクトリがバックアップされたか否かの情報を格納する。装置番号１５０３の「装置番号1」が第１バックアップ装置に、装置番号１５０４の「装置番号2」が第２バックアップ装置に、装置番号１５０５の「装置番号3」が第３バックアップ装置に、それぞれ対応する。例えば、装置番号１５０３にチェックが入っている場合、第１バックアップ装置３００にそのファイルまたはディレクトリのバックアップが存在することを示す。装置番号１５０３が空欄の場合、そのファイルまたはディレクトリのバックアップが第１バックアップ装置３００に存在しないことを示す。装置番号１５０４、装置番号１５０５についても同様である。
【００９６】
なお、オブジェクト配置管理テーブル１５００は、全てのバックアップ装置のオブジェクト配置に関する情報を格納し、バックアップ作成時に更新されるものである。実施例１ではバックアップ装置が３つのため、装置番号１、２、３のみの情報を格納する。例えば、バックアップ装置が１０の場合は、装置番号１、２、…、１０の情報を格納する。
【００９７】
図１６は、性能測定テーブル１６００の一例を示す図である。
性能測定テーブル１６００は、観点１６０１、装置番号１６０２、１６０３、１６０４からなる。
【００９８】
観点１６０１は、性能測定における指標の名前を格納する。指標として、プロトコルの処理時間を示す応答時間と、装置へのデータ転送の最大速度を示す帯域幅がある。
【００９９】
装置番号１６０２、１６０３、１６０４は、各装置番号が示すバックアップ装置に対する性能値を格納する。装置番号１６０２の「装置番号1」が第１バックアップ装置に、装置番号１６０３の「装置番号2」が第２バックアップ装置に、装置番号１６０４の「装置番号3」が第３バックアップ装置に、それぞれ対応する。
【０１００】
図１７は、装置選択条件設定画面１７００の一例を示す図である。管理者が管理端末１１０を使って、転送サイズが１ＭＢ以下の場合に、応答時間の短い装置を選択するよう設定する例を示している。
【０１０１】
図１８は、バックアップモジュール６０３の処理フローである。
バックアップモジュール６０３は、バックアップ要求受信モジュール６０１からバックアップ要求を受信した場合に、ＣＰＵ２１０で実行される。バックアップ要求には、バックアップすべきファイルシステム２５１の情報が含まれる。ファイルシステム２５１の情報とは、例えば、「／ｍｎｔ／ｆｉｌｅｓｙｓｔｅｍ／」のようなファイルシステムパスである。
【０１０２】
バックアップ要求を受信すると、バックアップモジュール６０３は、オブジェクト配置管理テーブル１５００を使って、バックアップするファイルまたはディレクトリを決定する（Ｓ１８０１）。
このステップ（Ｓ１８０１）において、バックアップモジュール６０３は、次の(18a)から(18e)の処理を実行する。
(18a) オブジェクト配置管理モジュール９０４に対してオブジェクト配置参照要求を発行し、オブジェクト配置管理テーブル１５００を取得する。
(18b) ファイルシステム２５１を走査する。
(18c) 走査して検出した各ファイルまたは各ディレクトリのパス１５０１に対し、ファイルＩＤ１５０２が格納されているかどうかを判断する。
(18d) ファイルＩＤ１５０２が格納されていないパス１５０１を見つけると、パス１５０１が示すファイルまたはディレクトリがバックアップされていないと判断し、パス１５０１をバックアップ対象リストに記述する。
(18e) 全てのファイルシステム２５１の走査を終えると、バックアップモジュール６０３は、Ｓ１８０２に進む。
【０１０３】
次に、バックアップモジュール６０３は、ファイルまたはディレクトリに関連づけるファイルＩＤを決定する（Ｓ１８０２）。
このステップ（Ｓ１８０２）において、バックアップモジュール６０３は、次の(18f)から(18h)の処理を実行する。
(18f) バックアップ対象リストから取り出した１つのパス１５０１に関連づけるファイルＩＤを生成する。
(18g) オブジェクト配置管理モジュール９０４に対しオブジェクト配置更新要求を送信し、オブジェクト配置管理テーブル１５００のファイルＩＤ１５０２に格納する。
(18h) オブジェクト配置管理モジュール９０４からオブジェクト配置更新要求に対する応答を受信すると、Ｓ１８０３へ進む。ここで、ファイルＩＤ１５０２は、ランダムに生成されるＵＵＩＤである。
【０１０４】
次に、バックアップモジュール６０３は、バックアップ装置選択プログラム８００に対し、装置選択要求を発行する（Ｓ１８０３）。
このステップ（Ｓ１８０３）において、バックアップモジュール６０３は、次の(18i)(18j)の処理を実行する。
(18i) 装置選択要求にファイルのパスを含めて、バックアップ装置選択プログラム８００に送信する。
(18j) 装置選択処理（図１９）がバックアップ装置選択プログラム８００によって行われた後、選択された１つまたは複数のバックアップ装置の装置番号を含む装置選択応答を得ると、Ｓ１８０４へ進む。装置選択処理の詳細は、図１９により後述する。
【０１０５】
次に、バックアップモジュール６０３は、選択した装置に、ファイルまたはディレクトリを格納する（Ｓ１８０４）。
このステップ（Ｓ１８０４）において、バックアップモジュール６０３は、次の(18k)(18l)の処理を実行する。
(18k) 装置選択応答に含まれる装置番号の示すバックアップ装置に、オブジェクト格納要求を発行する。
(18l) オブジェクト格納要求に対する応答を受け取り、Ｓ１８０５へ進む。
【０１０６】
次に、バックアップモジュール６０３は、オブジェクト配置を更新する（Ｓ１８０５）。
このステップ（Ｓ１８０５）において、バックアップモジュール６０３は、次の(18ｍ)(18ｎ)の処理を実行する。
(18m) オブジェクト配置管理モジュール９０４にオブジェクト配置更新要求を送信し、オブジェクト配置管理テーブル１５００の、バックアップを実行した装置番号に対応する部分にチェックをつける。
(18n) オブジェクト配置管理モジュール９０４から、オブジェクト配置更新要求に対する応答を受信すると、Ｓ１８０６に進む。
【０１０７】
次に、バックアップモジュール６０３は、ファイルシステム２５１に格納されたすべてのファイルまたはディレクトリのバックアップが完了したか否かを調べる（Ｓ１８０６）。
このステップ（Ｓ１８０６）において、バックアップモジュール６０３は、次の(18o)から(18q)の処理を実行する。
(18o) バックアップ対象リストから、バックアップしたパスを削除し、それ以外に他のパスが記述されているか否かを調べる。
(18p) 他のパスが記述されていない場合、バックアップが完了したと判断する（Ｙｅｓ）。
(18q) 他のパスが記述されている場合、バックアップモジュール６０３はバックアップが完了していないと判断し（Ｎｏ）、Ｓ１８０２に戻る。
【０１０８】
次に、Ｓ１８０６でＹｅｓの場合、バックアップモジュール６０３は、全てのバックアップ装置に、オブジェクト配置管理テーブル１５００を送信する（Ｓ１８０７）。
【０１０９】
最後に、バックアップモジュール６０３は、バックアップ応答送信モジュール６０２に、バックアップが完了したか否かを処理結果として送信し、バックアップ処理を終了する。
【０１１０】
また、バックアップ処理は、複数のプロセスやスレッドから、並列処理されてもよい。この場合、各ファイルまたは各ディレクトリが、それぞれ別々の装置にバックアップされる場合がある。なぜなら、第１のプロセスが実行するバックアップ処理がバックアップ中のバックアップ装置の性能が低下するため、第２のプロセスが実行するバックアップ装置の選択では、別の、より高い性能のバックアップ装置が選択されうるからである。
【０１１１】
図１９は、バックアップ取得時の装置選択モジュール８０４の処理フローである。
装置選択モジュール８０４は、バックアップモジュール６０３から装置選択要求を受信した場合に、ＣＰＵ２１０で実行される。装置選択要求には、要求データのサイズを意味する転送サイズが含まれる。すなわち、転送サイズは、ディレクトリまたはファイルのメタデータサイズか、ファイルのデータの一部または全てである。
【０１１２】
装置選択モジュール８０４は、転送サイズが閾値よりも小さいか否かを判断する（Ｓ１９０１）。すなわち、装置選択モジュール８０４は、装置選択条件設定テーブル１３００から、転送サイズの閾値を取得し、転送サイズと閾値を比較し、転送サイズの方が小さい場合はＳ１９０２へ、それ以外の場合はＳ１９０３へ進む。
【０１１３】
転送サイズが閾値より小さい場合に、装置選択モジュール８０４は、応答時間が最小のものから冗長度分を含めた装置番号を取得する（Ｓ１９０２）。すなわち、装置選択モジュール８０４は、性能測定モジュール９０５に対して性能参照要求を送信し性能測定テーブル１６００を取得すると共に、冗長度設定モジュール９０６に対して冗長度参照要求を送信し設定された冗長度を取得し、それらに基づき観点１６０１から応答時間のエントリを探し、装置番号１６０２、１６０３、１６０４に格納された値のうち最小の値を探し、その装置番号を冗長度分を含めて取得する。最後に、装置選択モジュール８０４は、装置選択要求に対する応答にその装置番号を、冗長度分を含めて要求元に送信する。なお、応答に含める冗長度分の装置番号は、最小の値に対応するものだけでなく、小さい順に複数（例えば２つ）であってもよい。
【０１１４】
転送サイズが閾値に等しいかそれより大きい場合に、装置選択モジュール８０４は、帯域幅が最大のものから冗長度分を含めた装置番号を取得する（Ｓ１９０３）。すなわち、装置選択モジュール８０４は、性能測定モジュール９０５に対して性能参照要求を送信し、性能測定テーブル１６００を取得すると共に、冗長度設定モジュール９０６に対して冗長度参照要求を送信し設定された冗長度を取得し、それらに基づき観点１６０１から帯域幅のエントリを探し、装置番号１６０２、１６０３、１６０４に格納された値のうち最大の値を探し、その装置番号を冗長度分を含めて取得する。最後に、装置選択モジュール８０４は、装置選択要求に対する応答にその装置番号を、冗長度分を含めて要求元に送信する。なお、応答に含める冗長度分の装置番号は、最大の値に対応するものだけでなく、大きい順に複数（例えば２つ）であってもよい。
【０１１５】
図２０は、リストアモジュール７０３の処理フローである。
リストアは、ストレージ装置２００が故障などで喪失した場合に行われる。そのため、リストアの開始前に、ストレージ装置２００の代替装置が設置される必要がある。まず、作業員（例えば管理者）は、ストレージ装置２００の代替装置を用意し、ネットワーク１２０と接続する。次に、作業員は、管理端末１１０を用いて構成定義モジュール９０３に対し構成更新要求を送信し、構成定義テーブル１４００を作成する。最後に、作業員は、管理端末１１０を用いてオブジェクト配置管理モジュール９０４に対して、オブジェクト配置復旧要求を送信し、いずれかのバックアップ装置からオブジェクト配置管理テーブル１５００を取得する。
【０１１６】
リストアモジュール７０３は、リストア要求受信モジュール７０１からリストア要求を受信した場合に、ＣＰＵ２１０で実行される。リストア要求には、リストアすべきファイルまたはディレクトリのパスとファイル操作要求が含まれる。
【０１１７】
まず、リストアモジュール７０３は、要求データがリストア済みか否かを判定する（Ｓ２００１）。ここで、要求データとは、ファイル操作プログラム５００がファイル操作要求の実行に必要なデータであり、ディレクトリのメタデータ、ファイルのメタデータ、ファイルのデータのいずれかである。
このステップ（Ｓ２００１）において、リストアモジュール７０３は、次の(20a)から(20d)の処理を実行する。
(20a) リストア進捗管理モジュール７０４に対しリストア進捗参照要求を送信し、リストア進捗管理テーブル１２００を取得する。
(20b) リストア進捗管理テーブル１２００から、リストアすべきファイルまたはディレクトリのパス１２０１が格納されたエントリを探し、対応するメタデータ１２０３と１２０４にチェックが入っているかを確認する。
(20c) メタデータ１２０３とデータ１２０４との両方にチェックが入っていた場合に限り、ファイルシステム２５１にリストア済みと判断し（Ｙｅｓ）、リストア処理を完了する。
(20d) そうでない場合、リストアすべきファイルまたはディレクトリはファイルシステム２５１にリストアされていないと判断し（Ｎｏ）、 Ｓ２００２に進む。
【０１１８】
次に、リストアモジュール７０３は、リストア要求に含まれるパスが示すファイルまたはディレクトリをもつ全ての装置の装置番号を取得する（Ｓ２００２）。
このステップ（Ｓ２００２）において、リストアモジュール７０３は、次の(20e)(20f)の処理を実行する。
(20e) オブジェクト配置管理モジュール９０４に対しオブジェクト配置参照要求を送信し、オブジェクト配置管理テーブル１５００を取得する。
(20f) オブジェクト配置管理テーブル１５００から、リストアすべきファイルまたはディレクトリ１５０１が格納されたエントリを探し、チェックが入っている装置番号を取得する。
【０１１９】
次に、リストアモジュール７０３は、バックアップ装置選択プログラム８００に対し、装置選択要求を発行する（Ｓ２００３）。装置選択処理がバックアップ装置選択プログラム８００によって行われた後、リストアモジュール７０３は、選択された１つのバックアップ装置の装置番号を含む装置選択応答を得ると、Ｓ２００４へ進む。装置選択処理の詳細は、図２１により後述する。
【０１２０】
次に、リストアモジュール７０３は、リストア対象がファイルかディレクトリか、ファイル操作要求が何かに基づいて、適切な要求データを、選択した装置からリストアする（Ｓ２００４）。
このステップ（Ｓ２００４）において、リストアモジュール７０３は、次の(20g)から(20l)の処理を実行する。
(20g) リストア対象がファイルかディレクトリかを調べる。リストア対象がファイルの場合、ファイル操作要求が何かをさらに調べる。
(20h) ファイル操作要求がファイル作成要求またはディレクトリ作成要求の場合、リストアを行わない。
(20i) ファイル操作要求がメタデータ読み込み要求またはメタデータ書き込み要求の場合、要求データをファイルのメタデータとする。
(20j) ファイル操作要求がデータ読み込み要求、データ書き込み要求の場合、要求データをファイルのメタデータとファイルのデータとする。
(20k) リストア対象がディレクトリの場合、メタデータを要求データとする。要求データを決定すると、選択したバックアップ装置に、要求データのＵＵＩＤを含めたオブジェクト取得要求を送信する。
(20l) バックアップ装置から応答を受信すると、応答に含まれるデータを使って、ファイルシステム２５１にファイルまたはディレクトリをリストアし、Ｓ２００５へ進む。
【０１２１】
次に、リストアモジュール７０３は、リストア進捗を更新する（Ｓ２００５）。
このステップ（Ｓ２００５）において、リストアモジュール７０３は、次の(20m)(20n)の処理を実行する。
(20m) リストア進捗管理モジュール７０４にリストア進捗更新要求を送信し、リストア進捗管理テーブル１２００の、リストアしたファイルまたはディレクトリのメタデータ１２０３やデータ１２０４にチェックをつける。
(20n) リストア進捗管理モジュール７０４から、リストア進捗管理要求に対する応答を受信すると、リストア処理を完了する。
【０１２２】
図２１は、リストア処理時の装置選択モジュール８０４の処理フローである。
装置選択モジュール８０４は、リストアモジュール７０３から装置選択要求を受信した場合に、ＣＰＵ２１０で実行される。装置選択要求には、要求データのサイズを意味する転送サイズが含まれる。すなわち、転送サイズは、ディレクトリまたはファイルのメタデータサイズか、ファイルのデータの一部または全てである。
【０１２３】
装置選択モジュール８０４は、転送サイズが閾値よりも小さいか否かを判断する（Ｓ２１０１）。すなわち、装置選択モジュール８０４は、装置選択条件設定テーブル１３００から、転送サイズの閾値を取得し、転送サイズと閾値を比較し、転送サイズの方が小さい場合（Ｙｅｓ）はＳ２１０２へ、それ以外の場合（Ｎｏ）はＳ２１０３へ進む。
【０１２４】
転送サイズが閾値より小さい場合に、装置選択モジュール８０４は、応答時間が最小のものからその装置番号を取得する（Ｓ２１０２）。すなわち、装置選択モジュール８０４は、性能測定モジュール９０５に対して性能参照要求を送信し、性能測定テーブル１６００を取得し、観点１６０１から応答時間のエントリを探し、装置番号１６０２、１６０３、１６０４に格納された値のうち最小の値を探し、その装置番号を取得する。最後に、装置選択モジュール８０４は、装置選択要求に対する応答にその装置番号を含めて、要求元に送信する。なお、応答に含める装置番号は、最小の値に対応するものだけでなく、小さい順に複数（例えば２つ）であってもよく、勿論複数ではなく１つでもよい。
【０１２５】
転送サイズが閾値に等しいかそれより大きい場合に、装置選択モジュール８０４は、帯域幅が最大のものからその装置番号を取得する（Ｓ２１０３）。すなわち、装置選択モジュール８０４は、性能測定モジュール９０５に対して性能参照要求を送信し、性能測定テーブル１６００を取得し、観点１６０１から帯域幅のエントリを探し、装置番号１６０２、１６０３、１６０４に格納された値のうち最大の値を探し、その装置番号を取得する。最後に、装置選択モジュール８０４は、装置選択要求に対する応答にその装置番号を含めて、要求元に送信する。なお、応答に含める装置番号は、最大の値に対応するものだけでなく、大きい順に複数（例えば２つ）であってもよく、勿論複数ではなく１つでもよい。
【０１２６】
以上が、実施例１の説明である。
実施例１によれば、応答時間と帯域幅という複数の性能指標に基づき、通信先のバックアップ装置を選択することが可能になるため、小サイズのデータに適した装置を選択することと、大サイズのデータに適した装置を選択することとを両立し、バックアップやリストアにかかる時間を短縮することができる。また、上記応答時間と帯域幅という複数の性能指標以外に、データ保存に係るリスクの面からバックアップ装置間の物理的距離やストレージ装置とバックアップ装置間の物理的距離を性能指標に加えることができる。その場合には、性能測定テーブルにおける観点１６０１として、物理的距離を加えることで対応することになる。
【０１２７】
また、実施例１では、性能測定モジュール９０５は、性能更新要求を受信した場合に、各バックアップ装置とテストデータを送受信して性能測定を行うとしたが、その代わりに、性能測定をバックグラウンドで実行し、性能更新要求を受信した場合に性能測定テーブルを更新するように構成してもよい。ここで、バックグラウンドで実行する場合、テストデータを送受信するのではなく、実際にデータをバックアップまたはリストアすることで性能を測定してもよい。この場合、最初のバックアップまたはリストアの際は、テストデータを使って性能測定を行い、その後、各バックアップ装置に対して順番にバックアップまたはリストアを行って、性能測定を行う。なぜなら、バックアップまたはリストアを開始したばかりのときは性能測定が行われていないし、各バックアップ装置に対して順番に行わなければ、性能測定を実施されないバックアップ装置が存在してしまうからである。もちろん、各バックアップ装置を順番に選択して性能測定を行うことと、バックアップまたはリストア時間が短縮される期待のあるバックアップ装置を選択することを併用してもよい。このような構成下で、例えば、ユーザアクセスに応じたリストアを行うオンデマンドリストアプログラムを動作させつつ、バックグラウンドでファイルシステム内の全てのファイルまたはディレクトリをリストアするバッチリストアプログラムを動作させる場合、バッチリストアプログラムが性能測定を行い、性能測定テーブルを更新させ、その性能測定結果をオンデマンドリストアやバッチリストアにおける装置選択に利用する形態となる。
【０１２８】
そしてまた、実施例１では、バックアップ装置はオブジェクトストアを用いる構成としたが、ストレージ装置と同様のファイルシステムであってもよい。実施例１のうち、ファイルＩＤをパスに、オブジェクトサーバプログラムをファイルサーバプログラムに、オブジェクト操作プログラムをファイル操作プログラムに、それぞれ置き換えることで、適切に動作する。加えて、バックアップの冗長度設定をファイル毎に行うことも可能である。
【実施例２】
【０１２９】
次に、実施例２を説明する。以下、実施例１との相違点を主に説明し、実施例１との共通点については、説明を省略または簡略する。
実施例２では、実施例１で述べた方法でバックアップまたはリストアする際に行う装置選択処理において、複数の性能指標から装置毎のファイルの予想転送時間を計算しその最も短い装置を選択する。
【０１３０】
以下、実施例２を詳細に説明する。
端的に言えば、実施例２では、実施例１の構成のうち、バックアップ装置選択プログラム８００の一部である、装置選択モジュール８０４が異なる。
【０１３１】
図２２は、実施例２におけるバックアップ取得時の装置選択モジュール８０４の処理フローである。
装置選択モジュール８０４は、バックアップモジュール６０３から装置選択要求を受信した場合に、ＣＰＵ２１０で実行される。
【０１３２】
装置選択モジュール８０４は、バックアップ装置ごとに、ファイルの予想転送時間を計算する（Ｓ２２０１）。まず、装置選択モジュール８０４は、性能測定モジュール９０５に対して性能参照要求を送信し、性能測定テーブル１６００を取得すると共に、冗長度設定モジュール９０６に対して冗長度参照要求を送信し設定された冗長度を取得する。次に、装置選択モジュール８０４は、装置選択要求に含まれる転送サイズｓ［ＭＢ］と、取得した性能測定テーブル１６００からあるバックアップ装置の応答時間ｌ［ｍｓｅｃ］及び帯域幅ｂ［ＭＢ／ｓ」を使って、データをそのバックアップ装置に送った場合の予想転送時間を（ｌ／１０００＋ｓ／ｂ）秒を計算する。全てのバックアップ装置について、予想転送時間を計算し終えると、Ｓ２２０２へ進む。
【０１３３】
装置選択モジュール８０４は、予想転送時間が小さい順に冗長度の数分の装置番号を取得する（Ｓ２２０２）。装置選択モジュール８０４は、計算した各バックアップ装置に関する予想転送時間から、最小の値のものを探し、小さい順に冗長度分の装置番号を取得する。最後に、装置選択モジュール８０４は、装置選択要求に対する応答にその装置番号を含めて、要求元に送信する。
【０１３４】
図２３は、実施例２におけるリストア処理時の装置選択モジュール８０４の処理フローである。
装置選択モジュール８０４は、リストアモジュール７０３から装置選択要求を受信した場合に、ＣＰＵ２１０で実行される。
【０１３５】
装置選択モジュール８０４は、バックアップ装置ごとに、ファイルの予想転送時間を計算する（Ｓ２３０１）。まず、装置選択モジュール８０４は、性能測定モジュール９０５に対して性能参照要求を送信し、性能測定テーブル１６００を取得する。次に、装置選択モジュール８０４は、装置選択要求に含まれる転送サイズｓ［ＭＢ］と、取得した性能測定テーブル１６００からあるバックアップ装置の応答時間ｌ［ｍｓｅｃ］及び帯域幅ｂ［ＭＢ／ｓ」を使って、データをそのバックアップ装置に送った場合の予想転送時間を（ｌ／１０００＋ｓ／ｂ）秒を計算する。全てのバックアップ装置について、予想転送時間を計算し終えると、Ｓ２３０２へ進む。
【０１３６】
装置選択モジュール８０４は、予想転送時間が最小の装置番号を取得する（Ｓ２３０２）。装置選択モジュール８０４は、計算した各バックアップ装置に関する予想転送時間から、最小の値のものを探し、その装置番号を取得する。最後に、装置選択モジュール８０４は、装置選択要求に対する応答にその装置番号を含めて、要求元に送信する。
【０１３７】
以上が、実施例２の説明である。
実施例２によれば、応答時間と帯域幅という複数の性能指標に基づいて計算した値から、データ通信を行うバックアップ装置を選択することが可能になるため、小サイズのデータに適した装置を選択することと、大サイズのデータに適した装置を選択することとの両立を図り、バックアップやリストアにかかる時間を短縮することができる。
【実施例３】
【０１３８】
次に、実施例３を説明する。以下、実施例１との相違点を主に説明し、実施例１との共通点については、説明を省略または簡略する。
実施例３では、ストレージ装置は、複数のバックアップ要求または複数のリストア要求を処理する。ストレージ装置は、バックアップまたはリストアする際に複数の装置を選択し、さらに、選択した複数の装置に対しバックアップ要求またはリストア要求を適切に分配する。
【０１３９】
以下、実施例３を詳細に説明する。
端的に言えば、実施例３では、実施例１の構成のうち、バックアッププログラム６００の一部であるバックアップモジュール６０３と、オンデマンドリストアプログラム７００の一部であるリストアモジュール７０３と、バックアップ装置選択プログラム８００の一部である装置選択モジュール８０４と、バックアップ装置管理プログラム９００の一部である性能測定モジュール９０５と性能測定テーブル１６００と、が異なる。
【０１４０】
性能測定モジュール９０５は、性能更新要求を受信した場合、実施例１で示した２つの性能指標である応答時間と帯域幅に加えて、単位時間あたりに処理可能なバックアップオペレーション数を示すバックアップ処理性能と、単位時間あたりに処理可能なリストアオペレーション数を示すリストア処理性能とを測定する。まず、性能測定モジュール９０５は、小サイズ（例えば４ＫＢ）の複数（例えば１００）のファイルをテストデータとして、あるバックアップ装置に送信する。そのバックアップ装置への送信が完了したら、性能測定モジュール９０５は、送信したデータ数をかかった時間で割った値を、バックアップ処理性能とする。次に、性能測定モジュール９０５は、送信した小サイズの複数のファイルを、そのバックアップ装置から受信する。そのバックアップ装置から受信が完了したら、性能測定モジュール９０５は、受信したデータ数をかかった時間で割った値を、リストア処理性能とする。性能測定モジュール９０５は、このようなバックアップ処理性能とリストア処理性能の測定を全てのバックアップ装置に対して順番に行い、最後に、性能測定テーブル１６００を更新する。
【０１４１】
図２４は、性能測定テーブル２４００の一例を示す図である。
性能測定テーブル２４００は、観点２４０１、装置番号２４０２、２４０３、２４０４からなる。
【０１４２】
観点２４０１には、性能測定における指標の名前を格納する。指標として、プロトコルの処理時間を示す応答時間と、装置へのデータ転送の最大速度を示す帯域幅と、単位時間あたりに処理可能なバックアップオペレーション数を示すバックアップ処理性能と、単位時間あたりに処理可能なリストアオペレーション数を示すリストア処理性能がある。
【０１４３】
装置番号２４０２、２４０３、２４０４には、各装置番号が示すバックアップ装置に対する性能値を格納する。
【０１４４】
図２５は、バックアップモジュール６０３の処理フローである。
バックアップモジュール６０３は、バックアップ要求受信モジュール６０１からバックアップ要求を受信した場合に、ＣＰＵ２１０で実行される。バックアップ要求には、バックアップすべきファイルシステム２５１のパスが含まれる。
【０１４５】
バックアップ要求を受信すると、バックアップモジュール６０３は、オブジェクト配置管理テーブル１５００を使って、バックアップするファイルまたはディレクトリを決定する（Ｓ２５０１）。このステップで行う処理は、Ｓ１８０１と同様である。全てのファイルシステム２５１の走査を終えると、バックアップモジュール６０３は、Ｓ２５０２に進む。
【０１４６】
次に、バックアップモジュール６０３は、ファイルまたはディレクトリ毎に関連づけるファイルＩＤを決定する（Ｓ２５０２）。
このステップ（Ｓ２５０２）において、バックアップモジュール６０３は、次の(25a)から(25c)の処理を実行する。
(25a) バックアップ対象リストから取り出した所定単位分（例えば、１０個分）のパス１５０１に関連づけるファイルＩＤを生成する。
(25b) オブジェクト配置管理モジュール９０４に対しオブジェクト配置更新要求を送信し、オブジェクト配置管理テーブル１５００のファイルＩＤ１５０２に格納する。
(25c) オブジェクト配置管理モジュール９０４からオブジェクト配置更新要求に対する応答を受信すると、Ｓ２５０３へ進む。
【０１４７】
次に、バックアップモジュール６０３は、バックアップ装置選択プログラム８００に対し、装置選択要求を発行する（Ｓ２５０３）。
このステップ（Ｓ２５０３）において、バックアップモジュール６０３は、次の(25d)(25e)の処理を実行する。
(25d) 装置選択要求に所定単位分（例えば、１０個分）のファイルまたはディレクトリのパスを含めて、バックアップ装置選択プログラム８００に送信する。
(25e) 装置選択処理がバックアップ装置選択プログラム８００によって行われた後、各ファイルまたは各ディレクトリをバックアップすべき装置の装置番号を複数含む装置選択応答を得ると、Ｓ２５０４へ進む。装置選択処理の詳細は、図２６により後述する。
【０１４８】
次に、バックアップモジュール６０３は、選択した装置に、ファイルまたはディレクトリを格納する（Ｓ２５０４）。
このステップ（Ｓ２５０４）において、バックアップモジュール６０３は、次の(25f)(25g)の処理を実行する。
(25f) 複数のファイルまたはディレクトリを、装置選択応答に含まれる装置番号の示すバックアップ装置に、オブジェクト格納要求を発行する。
(25g) オブジェクト格納要求に対する応答を受け取り、Ｓ２５０５へ進む。
【０１４９】
次に、バックアップモジュール６０３は、オブジェクト配置を更新する（Ｓ２５０５）。このステップは、Ｓ１８０５と同様である。バックアップモジュール６０３は、オブジェクト配置管理モジュール９０４から、オブジェクト配置更新要求に対する応答を受信すると、Ｓ２５０６に進む。
【０１５０】
次に、バックアップモジュール６０３は、ファイルシステム２５１に格納されたすべてのファイルまたはディレクトリのバックアップが完了したか否かを調べる（Ｓ２５０６）。このステップは、Ｓ１８０６と同様である。バックアップが完了していれば（Ｙｅｓ）、バックアップモジュール６０３は、全てのバックアップ装置に、オブジェクト配置管理テーブル１５００を送信する（Ｓ２５０７）。
【０１５１】
最後に、バックアップモジュール６０３は、バックアップ応答送信モジュール６０２に、バックアップが完了したか否かを処理結果として送信し、バックアップ処理を終了する。
【０１５２】
Ｓ２５０６において、他のパスが記述されている場合、バックアップモジュール６０３はバックアップが完了していないと判断し（Ｎｏ）、Ｓ２５０２に戻る。
【０１５３】
図２６は、バックアップ取得時の装置選択モジュール８０４の処理フローである。
装置選択モジュール８０４は、バックアップモジュール６０３から装置選択要求を受信した場合に、ＣＰＵ２１０で実行される。装置選択要求には、所定単位分の例えば１０個分のファイルまたはディレクトリのパスと、それぞれの要求データのサイズを意味する転送サイズと、が含まれる。すなわち、転送サイズは、ディレクトリまたはファイルのメタデータサイズか、ファイルのデータの一部または全てである。
【０１５４】
装置選択モジュール８０４は、転送サイズが閾値よりも小さいか否かを判断する（Ｓ２６０１）。すなわち、装置選択モジュール８０４は、装置選択条件設定テーブル１３００から、転送サイズの閾値を取得し、転送サイズとその閾値を比較し、転送サイズの方が小さい場合（Ｙｅｓ）はＳ２６０２へ、それ以外の場合（Ｎｏ）はＳ２６０５へ進む。
【０１５５】
転送サイズが閾値よりも小さい場合（Ｙｅｓ）、装置選択モジュール８０４は、応答時間の短い順に装置番号を並べ替える（Ｓ２６０２）。
このステップ（Ｓ２６０２）において、装置選択モジュール８０４は、次の(26a)(26b)の処理を実行する。
(26a) 性能測定モジュール９０５に対して性能参照要求を送信し、性能測定テーブル２４００を取得する。
(26b) 観点２４０１から応答時間のエントリを探し、装置番号２４０２、２４０３、２４０４に格納された応答時間の値の小さい順に並び替える。以下、並び替えた後、性能測定テーブル２４００に格納された値を応答時間の小さい順にｌ（１）、ｌ（２）、ｌ（３）、バックアップ処理性能をｐ（１）、ｐ（２）、ｐ（３）と表現する。
【０１５６】
次に、装置選択モジュール８０４は、応答時間とバックアップ処理性能と冗長度に応じて使用する装置を決定する（Ｓ２６０３）。ここで、転送サイズが閾値よりも小さい数をｍ（ただし、０＜ｍ≦１０を満たす自然数）、冗長度をｒ（ただし、０＜ｒ≦ｎを満たす自然数）、第ｉバックアップ装置（ただし、０＜ｉ≦ｎを満たす自然数）の応答時間内に処理できる全バックアップ装置の要求処理数の総和は、Ｓ（ｉ）＝ｌ（ｉ）×｛ｐ（１）＋ｐ（２）＋…＋ｐ（ｉ）｝／１０００とする。装置選択モジュール８０４は、与えられたｍとｒに対して、Ｓ（ｉ−１）＜ｍｒ≦Ｓ（ｉ）とｉ≧ｒを満たすｉを求め、第ｉバックアップ装置までを使用することを決定する。なお、Ｓ（０）＝０とする。例えば、ｍ＝４、ｒ＝２のとき、Ｓ（１）＝ｌ（１）×ｐ（１）／１０００＝１０×１００／１０００＝１、Ｓ（２）＝ｌ（２）×｛ｐ（１）＋ｐ（２）｝／１０００＝５０×（１００＋１００｝／１０００＝１０であるから、ｉ＝２を求め、これはｒ＝２以上の値である。このとき、装置選択モジュール８０４は、第１バックアップ装置と、第２バックアップ装置を使用し、第３バックアップ装置を使用しないこととなる。なお、上記計算において、もしＳ（ｉ−１）＜ｍｒ≦Ｓ（ｉ）をみたすｉが、ｉ＜ｒであった場合は、ｉ＝ｒと求めるものとする。
【０１５７】
次に、装置選択モジュール８０４は、応答時間とバックアップ処理性能と冗長度に応じて要求数の配分を決定する（Ｓ２６０４）。要求数の配分は、最大で処理性能の比となり、かつ、同じデータが同じバックアップ装置に格納されないように、応答時間の短い順に使用する装置を割り当てることで決定される。例えば、バックアップ処理においてｍ＝４、ｒ＝２のとき、第１バックアップ装置と第２バックアップ装置に、それぞれ４つの要求を配分する。このために、装置選択モジュール８０４は、次の(26c)から(26g)の処理を行う。
(26c) 性能測定テーブル２４００から、第１バックアップ装置と第２バックアップ装置のバックアップ処理性能の比を求め、１：１を得る。
(26d) Ｓ（２）＝１０より１０個以下の要求を処理することから、最大で５：５になるようにすることを決定する。
(26e) ｒ＝２であることから、第１バックアップ装置に格納したデータを第２バックアップ装置にも格納するため、要求は４つずつとなることを決定する。
(26f) ４つの要求を応答時間の短い第１バックアップ装置に配分し、残りの４つの要求を２番目に応答時間が短い第２バックアップ装置に配分する。
(26g) 配分を決定した後、装置選択要求に対する応答に、閾値が転送サイズよりも小さいパスに装置番号を、決定した配分に基づいて対応づけた情報を含め、要求元に送信する。
【０１５８】
なお、バックアップ装置数ｉが冗長度ｒよりも大きい場合は、冗長化したデータは最も応答時間が短いバックアップ装置と２番目に応答時間が短いバックアップ装置に格納するものとする。
【０１５９】
転送サイズが閾値に等しいかそれより大きい場合（Ｎｏ）に、装置選択モジュール８０４は、転送サイズが小さい順にファイルをソートする（Ｓ２６０５）。装置選択モジュール８０４は、装置選択要求に含まれる転送サイズが小さい順にファイルパスを並び替えた後、Ｓ２６０６へ進む。
【０１６０】
次に、装置選択モジュール８０４は、各バックアップ装置のバックアップ総量を計算する（Ｓ２６０６）。ここで、バックアップ装置のバックアップ総量Ｔとは、そのバックアップ装置に転送する転送サイズの総和である。あるバックアップ装置のバックアップ総量は、全ファイルの転送サイズの総和と、各バックアップ装置の帯域に対するそのバックアップ装置の帯域割合と、ストレージ装置２００に設定された冗長度と、の積で求める。例として、冗長度２に設定されたストレージ装置２００が、性能測定テーブル１６００が示す帯域幅をもつバックアップ装置に、１ＧＢのファイル１０個をバックアップする場合の第１バックアップ装置のバックアップ総量Ｔ（１）を計算する。全ファイルの転送サイズの総和は、１×１０＝１０（ＧＢ）、第１バックアップ装置の帯域割合は、１００／（１００＋１０００＋１０）＝０．０９０であることから、Ｔ（１）＝１０×０．０９０×２＝１．８（ＧＢ）と計算される。以下同様に、Ｔ（２）＝２×１０×１０００／（１００＋１０００＋１０）＝１８（ＧＢ）、Ｔ（３）＝２×１０×１０／（１００＋１０００＋１０）＝０．１８（ＧＢ）と計算される。なお、例において、計算の有効数字は２桁とし、３桁目以下は切り捨てた。
【０１６１】
次に、装置選択モジュール８０４は、バックアップ総量に応じて、バックアップ装置と要求の配分を決定する（Ｓ２６０７）。
このステップ（Ｓ２６０７）において、装置選択モジュール８０４は、次の(26h)から(26l)の処理を実行する。
(26h) Ｓ２６０５で並び替えたファイルパス順に、１個のファイルパスを取得する。
(26i) バックアップ総量がファイルサイズと同じか大きいバックアップ装置を、バックアップ総量が小さい順に、冗長度と同じ数だけ選択し、ファイルパスの示すファイルのバックアップ先とする。このとき、バックアップ総量が転送サイズよりも小さいバックアップ装置を、それ以降の処理におけるファイルのバックアップ先の候補から外す。
(26j) バックアップ先として選択したバックアップ装置のバックアップ総量から、バックアップするファイルの転送データ量の差をとり、そのバックアップ装置の新しいバックアップ総量とする。
(26k) Ｓ２６０５で並び替えたファイルパス順で、次の１個のファイルパスを取得し、上で述べた方法と同様の方法で全てのファイルパスについてバックアップ装置を決定する。ただし、バックアップ総量がファイルサイズよりも大きいバックアップ装置が１つも見つからない場合、最後に残った冗長度と同じ数のバックアップ装置をバックアップ先とする。
(26l) 装置選択要求に対する応答に、ファイルパスと対応づけて選択した装置番号を含めて、要求元に送信する。例えば、冗長度２に設定されたストレージ装置２００が、性能測定テーブル１６００が示す帯域幅をもつバックアップ装置に、１ＧＢのファイル１０個をバックアップする場合は次のようになる。まず、１つ目のファイル（サイズ１ＧＢ）を取得し、次に、各バックアップ装置のバックアップ総量Ｔ（１）＝１．８、Ｔ（２）＝１８、Ｔ（３）＝０．１８をもとに、１ＧＢと同じか大きいバックアップ装置である第１バックアップ装置と第２バックアップ装置を候補とする。次に、それらの候補から、バックアップ総量が小さい順に、冗長度２と同じ数のバックアップ装置を選択することで、第１バックアップ装置と第２バックアップ装置をバックアップ先とする。次に、新しいＴ（１）＝１．８−１＝０．８、Ｔ（２）＝１８−１＝１７、Ｔ（３）＝０．１８とする。このような処理を、装置選択モジュール８０４は、装置選択要求に含まれる全てのファイルパスに対して行うことで、ファイルパス毎に選択した装置番号を得ることができる。
【０１６２】
図２７は、リストアモジュール７０３の処理フローである。
リストアモジュール７０３は、リストア要求受信モジュール７０１からリストア要求を受信した場合に、ＣＰＵ２１０で実行される。リストア要求には、リストアすべきファイルまたはディレクトリのパスとファイル操作要求が含まれる。
【０１６３】
まず、リストアモジュール７０３は、要求データがリストア済みか否かを判定する（Ｓ２７０１）。このステップは、Ｓ１９０１と同様である。リストアモジュール７０３は、ファイルシステム２５１にリストア済みの場合（Ｙｅｓ）、リストア処理を完了する。そうでない場合（Ｎｏ）、 Ｓ２７０２に進む。
【０１６４】
次に、リストアモジュール７０３は、受信したリストア要求をメモリ２６０にバッファし、このバッファしたリストア要求をカウントアップ（＋１）し（Ｓ２７０２）、続いて、このカウントアップ値、すなわち要求数が所定単位分として例えば１０以上あるか確認する（Ｓ２７０３）。それが例えば１０以上ある場合（Ｙｅｓ）、Ｓ２７０４へ進む。それ以外の場合（Ｎｏ）、リストア要求に応答することなく、リストア処理を完了する。勿論、この要求数が１０に満たなくても、所定時間が経過したらＳ２７０４へ進めることができる。
【０１６５】
次に、リストアモジュール７０３は、所定単位分の例えば１０個分のファイルまたはディレクトリをもつ複数の装置の装置番号を取得する（Ｓ２７０４）。
このステップ（Ｓ２７０４）において、リストアモジュール７０３は、次の(27a)(27b)の処理を実行する。
(27a) オブジェクト配置管理モジュール９０４に対しオブジェクト配置参照要求を送信し、オブジェクト配置管理テーブル１５００を取得する。
(27b) オブジェクト配置管理テーブル１５００から、リストアすべき全てのファイルまたはディレクトリ１５０１が格納されたエントリを探し、それぞれチェックが入っている装置番号を取得する。
【０１６６】
次に、リストアモジュール７０３は、バックアップ装置選択プログラム８００に対し、装置選択要求を発行する（Ｓ２７０５）。装置選択処理がバックアップ装置選択プログラム８００によって行われた後、リストアモジュール７０３は、選択された１つのバックアップ装置の装置番号を含む装置選択応答を得ると、Ｓ２７０６へ進む。装置選択処理の詳細は、図２８により後述する。
【０１６７】
次に、リストアモジュール７０３は、リストア対象がファイルかディレクトリか、ファイル操作要求が何かに基づいて、適切な要求データを、選択した装置からリストアする（Ｓ２７０６）。
このステップ（Ｓ２７０６）において、リストアモジュール７０３は、次の(27c)から(27e)の処理を実行する。
(27c) Ｓ２００４と同様の方法で、リストア対象がファイルかディレクトリかを調べ、全ての要求データを決定する。
(27d) 選択したバックアップ装置に、全ての要求データのＵＵＩＤを含めたオブジェクト取得要求を送信する。
(27e) バックアップ装置から応答を受信すると、応答に含まれるデータを使って、ファイルシステム２５１に全てのファイルまたはディレクトリをリストアし、Ｓ２７０７へ進む。
【０１６８】
次に、リストアモジュール７０３は、リストア進捗を更新する（Ｓ２７０７）。すなわち、リストアモジュール７０３は、Ｓ２００５と同様の方法で、リストア進捗管理テーブル１２００を更新し、リストア処理を完了する。
【０１６９】
図２８は、リストア処理における装置選択モジュール８０４の処理フローである。
装置選択モジュール８０４は、転送サイズが閾値よりも小さいか否かを判断する（Ｓ２８０１）。装置選択モジュール８０４は、Ｓ２６０１と同様の方法で、転送サイズとその閾値を比較し、転送サイズの方が小さい場合（Ｙｅｓ）はＳ２８０２へ、それ以外の場合（Ｎｏ）はＳ２８０５へ進む。
【０１７０】
転送サイズが閾値よりも小さい場合（Ｙｅｓ）、装置選択モジュール８０４は、応答時間の短い順に装置番号を並べ替える（Ｓ２８０２）。すなわち、装置選択モジュール８０４は、Ｓ２６０２と同様の方法で、バックアップ装置の装置番号を応答時間の値の小さい順に並び替える。以下、並び替えた後、応答時間の小さい順にｌ（１）、ｌ（２）、ｌ（３）、バックアップ処理性能またはリストア処理性能をｐ（１）、ｐ（２）、ｐ（３）と表現する。
【０１７１】
次に、装置選択モジュール８０４は、応答時間とリストア処理性能に応じて使用する装置を決定する（Ｓ２８０３）。ここで、転送サイズが閾値よりも小さい数をｍ（ただし、０＜ｍ≦１０を満たす自然数）とすると、第ｉバックアップ装置（ただし、０＜ｉ≦ｎを満たす自然数）の応答時間内に処理できる全バックアップ装置の要求処理数の総和は、Ｓ（ｉ）＝ｌ（ｉ）×｛ｐ（１）＋ｐ（２）＋…＋ｐ（ｉ）｝／１０００と表せる。装置選択モジュール８０４は、与えられたｍに対して、Ｓ（ｉ−１）＜ｍ≦Ｓ（ｉ）を満たすｉを求め、第ｉバックアップ装置までを使用することを決定する。ここで、Ｓ（０）＝０とする。例えば、ｍ＝７のとき、Ｓ（１）＝ｌ（１）×ｐ（１）／１０００＝１０×１００／１０００＝１、Ｓ（２）＝ｌ（２）×｛ｐ（１）＋ｐ（２）｝／１０００＝５０×（１００＋１００）／１０００＝１０であるから、装置選択モジュール８０４はｉ＝２と求める。このとき、装置選択モジュール８０４は、第１バックアップ装置と、第２バックアップ装置を使用し、第３バックアップ装置を使用しない。
【０１７２】
次に、装置選択モジュール８０４は、応答時間と処理性能に応じて要求数の配分を決定する（Ｓ２８０４）。要求数の配分は、最大で処理性能の比となるように、応答時間の短い順に使用する装置を割り当てることで決定される。例えば、ｍ＝７のとき、第１バックアップ装置と第２バックアップ装置に、それぞれ５つと２つの要求を配分する。このために、装置選択モジュール８０４は、次の(28a)から(28d)の処理を行う。
(28a) 性能測定テーブル２４００から、第１バックアップ装置と第２バックアップ装置のバックアップ処理性能の比を求め、１：１を得る。
(28b) Ｓ（２）＝１０であることから、最大で５：５になるようにすることを決定する。(28c) ５つの要求を応答時間の短い第１バックアップ装置に配分し、残りの２つの要求をより２番目に応答時間が短い第２バックアップ装置に配分する。
(28d) 配分を決定した後、装置選択要求に対する応答に、閾値が転送サイズよりも小さいパスに装置番号を、決定した配分に基づいて対応づけた情報を含め、要求元に送信する。
【０１７３】
転送サイズが閾値に等しいかそれより大きい場合（Ｎｏ）に、装置選択モジュール８０４は、転送サイズが小さい順にファイルをソートする（Ｓ２８０５）。すなわち、装置選択モジュール８０４は、装置選択要求に含まれる転送サイズが小さい順にファイルパスを並び替えた後、Ｓ２８０６へ進む。
【０１７４】
次に、装置選択モジュール８０４は、各バックアップ装置のリストア総量を計算する（Ｓ２８０６）。ここで、バックアップ装置のリストア総量Ｔとは、そのバックアップ装置に要求する転送サイズの総和である。あるバックアップ装置のリストア総量は、全ファイルの転送サイズの総和と、各バックアップ装置の帯域に対するそのバックアップ装置の帯域割合と、の積で求める。例として、ストレージ装置２００が、性能測定テーブル１６００が示す帯域幅をもつバックアップ装置から、１ＧＢのファイル１０個をリストアする場合の第１バックアップ装置のバックアップ総量Ｔ（１）を計算する。全ファイルの転送サイズの総和は、１×１０＝１０（ＧＢ）、第１バックアップ装置の帯域割合は、１００／（１００＋１０００＋１０）＝０．０９０であることから、Ｔ（１）＝１０×０．０９０＝０．９０（ＧＢ）と計算される。以下同様に、Ｔ（２）＝１０×１０００／（１００＋１０００＋１０）＝９．０（ＧＢ）、Ｔ（３）＝１０×１０／（１００＋１０００＋１０）＝０．０９０（ＧＢ）と計算される。なお、例において、計算の有効数字は２桁とし、３桁目以下は切り捨てた。
【０１７５】
次に、装置選択モジュール８０４は、リストア総量に応じて、バックアップ装置と要求の配分を決定する（Ｓ２８０７）。
このステップに（Ｓ２８０７）おいて、装置選択モジュール８０４は、次の(28e)から(28i)の処理を実行する。
(28e) Ｓ２８０５で並び替えたファイルパス順に、１個のファイルパスを取得する。
(28f) リストア総量がファイルサイズと同じか大きく、最もリストア容量が小さいバックアップ装置を、ファイルパスの示すファイルのリストア元とする。このとき、リストア総量が転送サイズよりも小さいバックアップ装置を、それ以降の処理におけるファイルのバックアップ先の候補から外す。
(28g) バックアップ先として選択したバックアップ装置のリストア総量から、バックアップするファイルの転送データ量の差をとり、そのバックアップ装置の新しいバックアップ総量とする。
(28h) Ｓ２８０５で並び替えたファイルパス順で、次の１個のファイルパスを取得し、上で述べた方法と同様の方法で全てのファイルパスに対してバックアップ装置を決定する。 (28i) 装置選択要求に対する応答に、ファイルパスと対応づけて選択した装置番号を含めて、要求元に送信する。例えば、ストレージ装置２００が、性能測定テーブル１６００が示す帯域幅をもつバックアップ装置から、１ＧＢのファイル１０個をリストアする場合は次のようになる。まず、装置選択モジュール８０４は、１つ目のファイル（サイズ１ＧＢ）を取得する。次に、装置選択モジュール８０４は、各バックアップ装置のリストア総量Ｔ（１）＝０．９０、Ｔ（２）＝９．０、Ｔ（３）＝０．０９０をもとに、１ＧＢと同じか大きく、最もリストア総量の大きいバックアップ装置である第２バックアップ装置をリストア元に決定する。次に、新しいＴ（１）＝０．９０、Ｔ（２）＝９．０−１＝８．０、Ｔ（３）＝０．０９０とする。このような処理を、装置選択モジュール８０４は、装置選択要求に含まれる全てのファイルパスに対して行うことで、ファイルパス毎に選択した装置番号を得ることができる。
【０１７６】
以上が、実施例３の説明である。
実施例３によれば、ストレージ装置にメタデータに対する読み込みや書き込みが集中した場合に起こるバースト的な小サイズのオンデマンドリストアに対して、各リストアにかかる時間を低減し、応答時間を短縮することができる。
【０１７７】
実施例３では、バックアップやリストア時に処理を開始する要求数として１０を用いたが、５や２０などの別の数値であってもよいし、ＣＰＵコア数などの並列処理に影響するハードウェア構成に応じて、装置毎に設定してもよい。
【実施例４】
【０１７８】
次に、実施例４を説明する。以下、実施例１との相違点を主に説明し、実施例１との共通点については、説明を省略または簡略する。
実施例４では、バックアップ装置がオブジェクトのバージョン管理を行う場合に、複数の性能指標に基づいてリストア先を選択しつつ、特定のバージョンのファイルシステムをリストアする。ここで、バージョン管理とは、格納された全てのオブジェクトの履歴データを保持する仕組みである。
【０１７９】
以下、実施例４を詳細に説明する。
端的に言えば、実施例４では、実施例１の構成のうち、オブジェクトサーバプログラム１０００と、オブジェクト操作プログラム１１００と、オブジェクト操作プログラム１１００と、バックアッププログラム６００の一部であるバックアップモジュール６０３と、オンデマンドリストアプログラム７００の一部であるリストアモジュール７０３と、オブジェクト配置管理テーブル１５００と、リストア進捗管理モジュール７０４と、が異なる。
【０１８０】
オブジェクトサーバプログラム１０００は、実施例１の場合に加えて、バージョン管理されたオブジェクトをサービスする。オブジェクトサーバプログラム１０００は、実施例１と同様に、オブジェクト要求受信モジュール１００１と、オブジェクト応答送信モジュール１００２とを備える。オブジェクト要求受信モジュール１００１が受信するオブジェクト操作要求には、実施例１で述べたＵＵＩＤに加えて、バージョンＩＤを含む。バージョンＩＤとは、「１」や「２」のような順序づけられた数値である。オブジェクト要求受信モジュール１００１は、受信したオブジェクト操作要求を、オブジェクト操作プログラム１１００に送信する。オブジェクト応答送信モジュール１００２は、実施例１と同様である。
【０１８１】
オブジェクト操作プログラム１１００は、実施例１の場合に加えて、バージョン管理されたオブジェクトの操作を行うことができる。オブジェクト操作プログラム１１００は、実施例１と同様に、オブジェクト格納モジュール１１０１と、オブジェクト取得モジュール１１０２とを備える。オブジェクト格納モジュール１１０１は、オブジェクト格納要求に含まれる内容を、オブジェクト格納要求に含まれるＵＵＩＤとバージョンＩＤに対応づけて、オブジェクトストア３４１に格納する。オブジェクト取得モジュール１１０２は、オブジェクト取得要求に含まれるＵＵＩＤとバージョンＩＤに対応づけられたオブジェクトをオブジェクトストア３４１から読み出す。
【０１８２】
バックアッププログラム６００は、実施例１の場合に加えて、オブジェクトのバージョンＩＤを指定してバックアップを行う。バックアッププログラム６００は、実施例１と同様に、バックアップ要求受信モジュール６０１とバックアップ応答送信モジュール６０２とを備える。バックアップ要求受信モジュール６０１は、受信したバックアップ要求にバージョンＩＤを加えて、バックアップモジュール６０３に送信する。バックアップ応答送信モジュール６０２およびバックアップモジュール６０３は、実施例１と同様である。
【０１８３】
図２９は、オブジェクト配置管理テーブル２９００の一例を示す図である。
オブジェクト配置管理テーブル２９００は、パス２９０１、ファイルＩＤ２９０２、バージョンＩＤ２９０３と、格納完了日時２９０４と、装置番号２９０５、２９０６、２９０７からなる。パス２９０１とファイルＩＤ２９０２、装置番号２９０５、２９０６、２９０７は、実施例１と同様である。バージョンＩＤ２９０３は、オブジェクトに関連づけられる一意のバージョンのＩＤを格納する。 格納完了日時２９０４は、オブジェクトがバックアップ装置に格納された日時を格納する。
【０１８４】
図３０は、リストア進捗管理テーブル３０００の一例を示す図である。
リストア進捗管理テーブル３０００のエントリは、パス３００１、ファイルＩＤ３００２、バージョンＩＤ３００３、メタデータ３００４、データ３００５からなる。パス３００１と、ファイルＩＤ３００２と、メタデータ３００４と、データ３００５と、は、実施例１と同様である。バージョンＩＤ３００３は、オブジェクトに関連づけられる一意のバージョンＩＤを格納する。また、バージョンＩＤを通し番号で付与することも可能である。
【０１８５】
図３１は、リストアモジュール７０３の処理フローである。
リストアモジュール７０３が受信するリストア要求には、リストアすべきファイルまたはディレクトリのパスと、リストアすべきファイルまたはディレクトリがストレージ装置２００に存在した時刻（リストア対象時刻）と、ファイル操作要求とが含まれる。
【０１８６】
まず、リストアモジュール７０３は、要求データがリストア済みか否かを判定する（Ｓ３１０１）。
このステップ（Ｓ３１０１）において、リストアモジュール７０３は、次の(31a)から(31f)の処理を実行する。
(31a) オブジェクト配置管理モジュール９０４に対しオブジェクト配置参照要求を送信し、オブジェクト配置管理テーブル２９００を取得する。
(31b) オブジェクト配置管理テーブル２９００から、リストアすべきファイルまたはディレクトリのパスと一致し、かつ、リストア対象時刻よりも新しく現在時刻に最も近い格納完了時刻をもつエントリを探し、そのバージョンＩＤを取得する。
(31c) リストア進捗管理モジュール７０４に対しリストア進捗参照要求を送信し、リストア進捗管理テーブル３０００を取得する。
(31d) リストア進捗管理テーブル３０００から、リストアすべきファイルまたはディレクトリのパス３００１とバージョンＩＤ３００３との両方が一致するエントリを探し、対応するメタデータ３００４と３００５にチェックが入っているかを確認する。
(31e) メタデータ３００４とデータ３００５との両方にチェックが入っていた場合に限り、ファイルシステム２５１にリストア済みと判断し（Ｙｅｓ）、リストア処理を完了する。
(31f) そうでない場合、リストアすべきファイルまたはディレクトリはファイルシステム２５１にリストアされていないと判断し（Ｎｏ）、Ｓ３１０２に進む。
【０１８７】
次に、リストアモジュール７０３は、取得したバージョンＩＤに対応するファイルまたはディレクトリをもつ全ての装置の装置番号を取得する（Ｓ３１０２）。リストアモジュール７０３は、オブジェクト配置管理テーブル２９００から、リストアすべきファイルまたはディレクトリが格納されたエントリを探し、チェックが入っている装置番号を取得する。
【０１８８】
次に、リストアモジュール７０３は、バックアップ装置選択プログラム８００に対し、装置選択要求を発行する（Ｓ３１０３）。装置選択処理がバックアップ装置選択プログラム８００によって行われた後、リストアモジュール７０３は、選択された１つのバックアップ装置の装置番号を含む装置選択応答を得ると、Ｓ３１０４へ進む。装置選択処理の詳細は、実施例１の場合の図２１と同様である。
【０１８９】
次に、リストアモジュール７０３は、リストア対象がファイルかディレクトリか、ファイル操作要求が何かに基づいて、適切な要求データを、選択した装置からリストアする（Ｓ３１０４）。実施例１で述べた方法で要求データを決定すると、リストアモジュール７０３は、このステップ（Ｓ３１０４）で次の(31g)から(31j)の処理を実行する。
(31g) 選択したバックアップ装置に、要求データのＵＵＩＤとバージョンＩＤを含めたオブジェクト取得要求を送信する。
(31h) バックアップ装置から応答を受信すると、応答に含まれるデータを使って、ファイルシステム２５１にファイルまたはディレクトリをリストアし、Ｓ３１０５へ進む。
【０１９０】
次に、リストアモジュール７０３は、リストア進捗を更新する（Ｓ３１０５）。
このステップ（Ｓ３１０５）において、リストアモジュール７０３は以下の処理を実行する。
(31i) リストア進捗管理モジュール７０４にリストア進捗更新要求を送信し、リストア進捗管理テーブル３０００の、リストアしたファイルまたはディレクトリのメタデータ３００４やデータ３００５にチェックをつける。
(31j) リストア進捗管理モジュール７０４から、リストア進捗管理要求に対する応答を受信すると、リストア処理を完了する。
【０１９１】
以上が、実施例４の説明である。
実施例４によれば、バージョン管理機能を有するバックアップ装置を用いた場合に、任意の時刻でストレージ装置に存在したファイルまたはディレクトリをリストアするのにかかる時間を低減することができる。
【実施例５】
【０１９２】
次に、実施例５を説明する。以下、実施例１との相違点を主に説明し、実施例１との共通点については、説明を省略または簡略する。
実施例５では、ストレージ装置とバックアップ装置とは異なる中継ストレージ装置を用いる。リストアの際、ストレージ装置は、バックアップ装置から直接、または、中継ストレージ装置を経由して間接的に、データをリストアする。
【０１９３】
以下、実施例５を詳細に説明する。
端的に言えば、実施例５では、実施例１の構成に加え新たに中継ストレージ装置を備え、さらに、実施例１の構成のうち、オンデマンドリストアプログラム７００の一部であるリストアモジュールと７０３と、バックアップ装置管理プログラム９００の一部である構成定義モジュール９０３と構成定義テーブル１４００と、バックアップ装置管理プログラム９００の一部である性能測定モジュール９０５と性能測定テーブル１６００と、が異なる。
【０１９４】
図３２は、実施例５における分散バックアップシステムの構成例を示すブロック図である。
クライアント計算機１００と、管理端末１１０と、ストレージ装置２００と、複数のバックアップ装置３００と、ネットワーク１２０とは、実施例１と同様である。中継ストレージ装置３３００は、ストレージ装置２００に対し中継リストアサービスを提供する計算機である。ここで、中継リストアサービスとは、第ｎバックアップ装置３００から、第ｎバックアップ装置に格納されたデータを受信し、ストレージ装置２００に送信するサービスである。
【０１９５】
図３３は、中継ストレージ装置３３００の構成を示すブロック図である。
中継ストレージ装置３３００は、ＣＰＵ３３１０と、ネットワークＩ／Ｏインターフェース３３２０と、ディスクＩ／Ｏインターフェース３３３０と、ディスクドライブ３３４０と、メモリ３３５０と、それらを接続する内部的な通信路３３６０（例えば、バス）を有する計算機である。
【０１９６】
ＣＰＵ３３１０は、メモリ３３５０に格納されたプログラムを実行する。ネットワークＩ／Ｏインターフェース３３２０は、ストレージ装置２００と第ｎバックアップ装置３００との通信に使用される。ディスクＩ／Ｏインターフェース３３３０は、ディスクドライブ３３４０との通信に使用される。ディスクドライブ３３４０は、中継ストレージ装置３３００が読み書きするデータを格納するために使用される。ディスクドライブ３３４０には、オブジェクトストア３３４１が格納される。オブジェクトストア３３４１は、実施例１におけるオブジェクトストア３４１と同様の、データをオブジェクトとして管理するシステムである。メモリ３３５０は、プログラムやデータを格納する。例えば、オブジェクトサーバプログラム３３５１とオブジェクト操作プログラム３３５２と、中継リストアプログラム３４００と、が格納される。
【０１９７】
オブジェクトサーバプログラム３３５１は、実施例１におけるオブジェクトサーバプログラム１０００と同様の、ストレージ装置２００に対してオブジェクト単位のストレージサービスを提供するプログラムである。
【０１９８】
オブジェクト操作プログラム３３５２は、オブジェクトストア３３４１に格納されたオブジェクトを操作するプログラムである。
【０１９９】
なお、中継ストレージ装置３３００が用いるデータ格納用媒体としてディスクドライブを示したが、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）であってもよい。また、ストレージ装置２００としてデータ格納媒体を内蔵する装置を示したが、外部記憶装置を組み合わせてもよい。例えば、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）経由で接続されたディスクアレイ装置を用いてもよい。
【０２００】
図３４は、中継リストアプログラム３４００の構成例を示すブロック図である。
中継リストアプログラム３４００は、中継リストア要求受信モジュール３４０１と、中継リストア応答送信モジュール３４０２と、性能測定モジュール３４０３と、中継リストアモジュール３４０４と、を備える。
【０２０１】
中継リストア要求受信モジュール３４０１は、オンデマンドリストアプログラム７００から中継リストア要求があった場合に実行される。中継リストア要求受信モジュール３４０１は、受信したリストア要求を、中継リストアモジュール３４０４に送信する。
【０２０２】
中継リストア応答送信モジュール３４０２は、中継リストアモジュール３４０４から受信した中継リストア要求の処理結果を、オンデマンドリストアプログラム７００に応答する。
【０２０３】
性能測定モジュール３４０３は、ストレージ装置２００がもつ性能測定モジュール９０５から性能測定要求があった場合に実行される。性能測定モジュール３４０３は、全てのバックアップ装置と中継ストレージ装置３３００との間の性能情報（応答時間と帯域幅）を測定し、その結果を性能測定モジュール９０５に応答する。
【０２０４】
中継リストアモジュール３４０４は、オンデマンドリストアプログラム７００から中継リストア要求を受信した場合に実行される。中継リストアモジュール３４０４は、第ｎバックアップ装置３００に格納されたオブジェクトを取得し、オブジェクトストア３３４１に複製する。中継リストアモジュール３４０４が行う処理の詳細は、図３９で後述する。
【０２０５】
図３５は、構成定義テーブル３５００の一例を示す図である。
構成定義テーブル３５００は、装置番号３５０１と、アクセスＩＤ３５０２と、役割３５０３と、からなる。装置番号３５０１とアクセスＩＤ３５０２は、実施例１で述べたものと同様である。役割３５０３は、 分散バックアップシステムを構成する計算機の役割が、バックアップ装置であるか中継ストレージ装置であるかを定義する。
【０２０６】
図３６は、性能測定テーブル３６００の一例を示す図である。
性能測定テーブル３６００は、観点３６０１、装置番号３６０２、３６０３、３６０４、３６０５、３６０６及び３６０７からなる。観点３６０１と装置番号３６０２、３６０３、３６０４は、実施例１と同様に、第ｎバックアップ装置３００とストレージ装置２００との間の通信に関する性能情報を格納する。装置番号３６０５、３６０６、３６０７は、中継ストレージ装置３３００とストレージ装置２００との間の通信に関する性能情報と、第ｎバックアップ装置３００と中継ストレージ装置３３００との間の通信に関する性能情報と、を含む性能情報を格納する。例えば、装置番号３６０５の応答時間フィールドには、第１バックアップ装置と中継ストレージ装置３３００との間の応答時間と中継ストレージ装置３３００とストレージ装置２００との間の応答時間とを足しあわせた数値が格納される。また、装置番号３６０５の帯域幅フィールドには、第１バックアップ装置と中継ストレージ装置３３００との間の帯域幅と中継ストレージ装置３３００とストレージ装置２００との間の帯域幅のうち、より小さい帯域幅の値が格納される。
【０２０７】
性能測定モジュール９０５は、実施例１と同様の方法で、第ｎバックアップ装置３００とストレージ装置２００との間の性能を測定し、性能測定テーブル３６００の装置番号３６０２、３６０３、３６０４を更新する。さらに、性能測定モジュール９０５は、中継ストレージ装置３３００に性能測定要求を送信し、その応答によって得た第ｎバックアップ装置３００と中継ストレージ装置３３００との間の性能情報と、性能測定モジュール９０５が測定する中継ストレージ装置３３００とストレージ装置２００との間の性能情報とを使って、性能測定テーブル３６００の装置番号３６０５、３６０６、３６０７を更新する。
【０２０８】
図３７と図３８は、リストアモジュール７０３の処理フローである。
実施例５では、リストアに際して、作業員（例えば管理者）はストレージ装置２００の代替装置として中継ストレージ装置３３００を用意し、ネットワーク１２０と接続する。次に、作業員は、管理端末１１０を用いて構成定義モジュール９０３に対し構成更新要求を送信し、バックアップ装置３００と中継ストレージ装置３３００とを含む構成定義テーブル３５００を作成する。最後に、作業員は、オブジェクト配置管理モジュール９０４に対して、管理端末１１０を用いてオブジェクト配置復旧要求を送信し、いずれかのバックアップ装置からオブジェクト配置管理テーブル１５００を取得する。
【０２０９】
リストアモジュール７０３は、リストア要求受信モジュール７０１からリストア要求を受信した場合に、ＣＰＵ２１０で実行される。リストア要求には、リストアすべきファイルまたはディレクトリのパスとファイル操作要求が含まれる。
【０２１０】
まず、リストアモジュール７０３は、要求データがリストア済みか否かを判定する（Ｓ３７０１）。実施例１の場合と同様の方法で、ファイルシステム２５１にリストア済みと判断した場合（Ｙｅｓ）、リストア処理を完了する。そうでない場合（Ｎｏ）、リストアモジュール７０３は、Ｓ３７０２に進む。
【０２１１】
次に、リストアモジュール７０３は、ファイルまたはディレクトリをもつ全ての装置の装置番号を取得する（Ｓ３７０２）。実施例１と同様の方法で、リストアモジュール７０３は、リストアすべきファイルまたはディレクトリが格納された装置の装置番号を取得する。
【０２１２】
次に、リストアモジュール７０３は、バックアップ装置選択プログラム８００に対し、装置選択要求を発行する（Ｓ３７０３）。装置選択処理として実施例１と同様の処理がバックアップ装置選択プログラム８００によって行われた後、リストアモジュール７０３は、選択された１つのバックアップ装置の装置番号と種別（バックアップ装置またはリストア装置）を含む装置選択応答を得ると、Ｓ３７０４へ進む。
【０２１３】
次に、リストアモジュール７０３は、選択された装置がバックアップ装置か中継ストレージ装置かを判別し、バックアップ装置の場合（Ｙｅｓ）Ｓ３７０７へ、中継ストレージ装置の場合（Ｎｏ）Ｓ３７０５へ進む。
【０２１４】
中継ストレージ装置が選択された場合、リストアモジュール７０３は、中継ストレージ装置３３００に中継リストア要求を送信する（Ｓ３７０５）。中継リストア要求には、リストアすべきファイルまたはディレクトリのファイルＩＤと、そのファイルまたはディレクトリをもつ装置へのアクセスＩＤと、が含まれる。中継リストア要求を送信したら、リストアモジュール７０３は、中継ストレージ装置３３００からの応答を待つ。
【０２１５】
次に、リストアモジュール７０３は、中継ストレージ装置３３００から中継リストア応答を受信する（Ｓ３７０６）。中継リストア応答には、リストアすべきファイルまたはディレクトリのリストアが完了したか否かが含まれる。中継リストア応答を受信したら、リストアモジュール７０３は、Ｓ３７０７へ進む。
【０２１６】
次に、リストアモジュール７０３は、実施例１と同様の方法で、ファイル操作要求の処理に必要な要求データを、選択した装置からリストアする（Ｓ３７０７）。バックアップ装置から要求データを受信すると、リストアモジュール７０３は、ファイルシステム２５１にファイルまたはディレクトリをリストアし、Ｓ３７０８へ進む。
【０２１７】
次に、リストアモジュール７０３は、実施例１と同様の方法で、リストア進捗を更新する（Ｓ３７０８）。リストアモジュール７０３は、リストア進捗管理モジュール７０４から、リストア進捗管理要求に対する応答を受信すると、リストア処理を完了する。
【０２１８】
図３９は、中継リストアモジュール３４０４の処理フローである。
中継リストアモジュール３４０４は、リストアモジュール７０３から中継リストア要求を受信した場合に、ＣＰＵ３３１０で実行される。中継リストア要求には、リストアすべきファイルまたはディレクトリのファイルＩＤと、そのファイルまたはディレクトリをもつ装置へのアクセスＩＤと、が含まれる。
【０２１９】
まず、中継リストアモジュール３４０４は、受信した中継リストア要求から、リストア元となるバックアップ装置へのアクセスＩＤを取得し、アクセス先のバックアップ装置とする（Ｓ３９０１）。
【０２２０】
次に、中継リストアモジュール３４０４は、バックアップ装置がもつオブジェクトを複製する（Ｓ３９０２）。すなわち、中継リストアモジュール３４０４は、受信した中継リストア要求から、複製すべきファイルまたはディレクトリのファイルＩＤを取得し、バックアップ装置がもつオブジェクトを、オブジェクトストア３３４１に複製する。
【０２２１】
次に、中継リストアモジュール３４０４は、中継リストア要求に対する応答をストレージ装置２００へ送信し（Ｓ３９０３）、それにより中継リストア処理を完了する。中継リストア応答には、中継リストアが成功したか否かが含まれる。
【０２２２】
以上が、実施例５の説明である。
実施例５によれば、バックアップ装置とストレージ装置間の通信が遅い場合に、中継ストレージ装置を用いてトラフィックをバイパスすることにより、ファイルまたはディレクトリをリストアするのにかかる時間を低減することができる。また、同時に、ストレージ装置がリストア処理で忙しい場合に、ストレージ装置の障害で下がってしまったファイルまたはディレクトリの冗長性を、高速に高めることができる。
【０２２３】
実施例５では、中継ストレージ装置をバックアップ装置と異なる別のストレージ装置としたが、中継ストレージ装置とバックアップ装置を１つのストレージ装置として構成してもよい。
【０２２４】
実施例５では、１台の中継ストレージ装置を用いる構成を説明したが、２台以上の複数の中継ストレージ装置を用いてもよい。この場合においても、前記ストレージ装置選択プログラムによって、適切に選ぶことができる。
【０２２５】
実施例５では、中継ストレージ装置がオブジェクトストアを有するものとして説明したが、オブジェクトストアでなくファイルシステムを有してもよい。中継ストレージ装置がファイルシステムを有する場合、ファイルＩＤをパスに、オブジェクトサーバプログラムをファイルサーバプログラムに、オブジェクト操作プログラムをファイル操作プログラムにそれぞれ変更すればよい。
【符号の説明】
【０２２６】
１００：クライアント計算機
２００：ストレージ装置
３００：第ｎバックアップ装置（ただしｎ＝１、２、３）
４００：ファイルサーバプログラム
５００：ファイル操作プログラム
６００：バックアッププログラム
７００：オンデマンドリストアプログラム
８００：バックアップ装置選択プログラム
９００：バックアップ装置管理プログラム
１０００：オブジェクトサーバプログラム
１１００：オブジェクト操作プログラム
１２００、３０００：リストア進捗管理テーブル
１３００：装置選択条件設定テーブル
１４００、３５００：構成定義テーブル
１５００、２９００：オブジェクト配置管理テーブル
１６００、２４００、３６００：性能測定テーブル
３３００：中継ストレージ装置
３４００：中継リストアプログラム
【図１】
0005913738.tif 000002
【図２】
0005913738.tif 000003
【図３】
0005913738.tif 000004
【図４】
0005913738.tif 000005
【図５】
0005913738.tif 000006
【図６】
0005913738.tif 000007
【図７】
0005913738.tif 000008
【図８】
0005913738.tif 000009
【図９】
0005913738.tif 000010
【図１０】
0005913738.tif 000011
【図１１】
0005913738.tif 000012
【図１２】
0005913738.tif 000013
【図１３】
0005913738.tif 000014
【図１４】
0005913738.tif 000015
【図１５】
0005913738.tif 000016
【図１６】
0005913738.tif 000017
【図１７】
0005913738.tif 000018
【図１８】
0005913738.tif 000019
【図１９】
0005913738.tif 000020
【図２０】
0005913738.tif 000021
【図２１】
0005913738.tif 000022
【図２２】
0005913738.tif 000023
【図２３】
0005913738.tif 000024
【図２４】
0005913738.tif 000025
【図２５】
0005913738.tif 000026
【図２６】
0005913738.tif 000027
【図２７】
0005913738.tif 000028
【図２８】
0005913738.tif 000029
【図２９】
0005913738.tif 000030
【図３０】
0005913738.tif 000031
【図３１】
0005913738.tif 000032
【図３２】
0005913738.tif 000033
【図３３】
0005913738.tif 000034
【図３４】
0005913738.tif 000035
【図３５】
0005913738.tif 000036
【図３６】
0005913738.tif 000037
【図３７】
0005913738.tif 000038
【図３８】
0005913738.tif 000039
【図３９】
0005913738.tif 000040