(57)【特許請求の範囲】
【請求項１】
複数のバックアップサーバと、
それぞれがファイル又はディレクトリである１以上のオブジェクトを前記複数のバックアップサーバの少なくとも１つにバックアップする第１オブジェクトサーバと、
前記バックアップされた１以上のオブジェクトを前記複数のバックアップサーバの少なくとも１つからリストアする第２オブジェクトサーバと
を備え、
前記１以上のオブジェクトの中のファイルは、オブジェクトデータであるファイルデータとそのオブジェクトデータについてのメタデータとで構成され、前記１以上のオブジェクトの中のディレクトリは、オブジェクトについてのメタデータで構成されており、
前記第１オブジェクトサーバのプロセッサは、前記１以上のオブジェクトにおけるオブジェクトデータ及びメタデータの各々について、
（Ｂ１）当該データでありオブジェクトデータ又はメタデータである対象データが第１条件と第２条件のいずれの条件に該当するかを判断する機能と、
（Ｂ２）（Ｂ１）の結果、前記対象データが前記第１条件に該当する場合、前記対象データの複製データを２以上のバックアップサーバにバックアップする機能と、
（Ｂ３）（Ｂ１）の結果、前記対象データが前記第２条件に該当する場合、前記対象データのＥＣ（Erasure Coding）に従う冗長度Ｖの断片データ（Ｖは、（ｐ＋ｑ）／ｐに基づく値、ｐは、断片データの数であり、ｑは、パリティデータの数）である２以上のデータを２以上のバックアップサーバにバックアップする機能と、を有し、
前記第１オブジェクトサーバの前記プロセッサは、前記１以上のオブジェクトの各々について、第１オブジェクトサーバにおける第１ファイルシステム空間におけるそのオブジェクトの位置とそのオブジェクトのバックアップ先とに関する情報を、前記複数のバックアップサーバのうちの少なくとも１つにおける記憶デバイスに格納された管理情報に登録する機能を有し、
前記第２オブジェクトサーバのプロセッサは、
（Ｒ１）前記１以上のオブジェクトの各々について、そのオブジェクトの前記第２オブジェクトサーバの第２ファイルシステム空間における位置と、そのオブジェクトのバックアップ先とを、前記管理情報を参照することにより特定する機能と、
（Ｒ２）前記１以上のオブジェクトの各々についての機能として、
（Ｒ２１）当該オブジェクトである対象オブジェクトのメタデータとして、そのメタデータの複製データ、又は、そのメタデータの断片データを前記複数のバックアップサーバのうちの少なくとも１つから受信する機能と、
（Ｒ２２）前記対象オブジェクトがファイルである場合に、前記対象オブジェクトのオブジェクトデータとして、そのオブジェクトデータの複製データ、又は、そのオブジェクトデータの断片データを前記複数のバックアップサーバのうちの少なくとも１つから受信する機能と、
（Ｒ２３）前記対象オブジェクトがディレクトリである場合において前記受信したメタデータ、又は前記対象オブジェクトがファイルである場合において前記受信したメタデータと前記受信したオブジェクトデータとに基づき、前記対象オブジェクトの前記第２ファイルシステム空間における位置に前記対象オブジェクトを生成して配置する機能とを有し、
前記第１条件は、前記対象データがメタデータであることであり、且つ、前記第２条件は、前記対象データがオブジェクトデータであること、又は、
前記第１条件は、前記対象データがメタデータであること、及び、前記対象データがオブジェクトデータであり且つそのオブジェクトデータのデータサイズが閾値未満であることであり、且つ、前記第２条件は、前記対象データがオブジェクトデータであり且つそのオブジェクトデータのデータサイズが前記閾値以上であることである、
バックアップリストアシステム。
【請求項２】
前記第２オブジェクトサーバの前記プロセッサは、前記１以上のオブジェクトのうちの少なくとも１つについて、（Ｒ２２）による処理より先に（Ｒ２１）による処理を実行するように構成されている、
請求項１記載のバックアップリストアシステム。
【請求項３】
前記第２オブジェクトサーバの前記プロセッサは、
（Ｒ２）による処理の開始前に、前記第２ファイルシステム空間に一時ディレクトリを設け、
前記１以上のオブジェクトについて並行して（Ｒ２１）による処理及び（Ｒ２２）による処理を実行し、
（Ｒ２３）による処理により、前記１以上のオブジェクトにおけるディレクトリについて、（Ｒ２１）による処理で取得したメタデータに基づいて、前記一時ディレクトリに生成し、前記１以上のオブジェクトにおけるファイルについて、（Ｒ２１）による処理で取得したメタデータ及び（Ｒ２２）による処理で取得したオブジェクトデータに基づいて、前記一時ディレクトリに生成し、前記一時ディレクトリから、前記第２ファイルシステム空間における該当位置に、前記ディレクトリ及び前記ファイルを移動する、ように構成されている
請求項１又は２記載のバックアップリストアシステム。
【請求項４】
前記対象データが前記第２条件に該当する場合、前記冗長度Ｖの値は、前記対象データを含んだオブジェクトのパス深度に従う値であり、
前記対象データを含んだオブジェクトのパス深度は、前記第１ファイルシステム空間のルートディレクトリからそのオブジェクトに至るまでに経由するリンクの数である、
請求項１乃至３のうちのいずれか１項に記載のバックアップリストアシステム。
【請求項５】
それぞれがファイル又はディレクトリである１以上のオブジェクトにおけるオブジェクトデータ及びメタデータの各々が、複製データを複数のバックアップサーバのうちの２以上のバックアップサーバにバックアップすることであるレプリケーションバックアップと、ＥＣ（Erasure Coding）に従う冗長度Ｖの断片データ（Ｖは、（ｐ＋ｑ）／ｐに基づく値、ｐは、断片データの数であり、ｑは、パリティデータの数）である２以上のデータを２以上のバックアップサーバにバックアップすることである分散バックアップとのうちの選択されたバックアップ方式に従いバックアップし、バックアップされた複数のバックアップサーバから前記１以上のオブジェクトをリストア先のオブジェクトサーバに生成するバックアップリストア方法であって、
前記１以上のオブジェクトの中のファイルは、オブジェクトデータであるファイルデータとそのオブジェクトデータについてのメタデータとで構成され、前記１以上のオブジェクトの中のディレクトリは、オブジェクトについてのメタデータで構成されており、
前記オブジェクトサーバが、
（Ｒ１）前記１以上のオブジェクトの各々について、そのオブジェクトの前記オブジェクトサーバのファイルシステム空間における位置と、そのオブジェクトのバックアップ先とを特定し、
（Ｒ２）前記１以上のオブジェクトの各々について、
（Ｒ２１）当該オブジェクトである対象オブジェクトのメタデータとして、そのメタデータの複製データ、又は、そのメタデータの断片データを前記複数のバックアップサーバのうちの少なくとも１つから受信し、
（Ｒ２２）前記対象オブジェクトのオブジェクトデータとして、そのオブジェクトデータの複製データ、又は、そのオブジェクトデータの断片データを前記複数のバックアップサーバのうちの少なくとも１つから受信し、
（Ｒ２３）前記対象オブジェクトがディレクトリである場合において前記受信したメタデータ、又は前記対象オブジェクトがファイルである場合において前記受信したメタデータと前記受信したオブジェクトデータとに基づき、前記対象オブジェクトの前記ファイルシステム空間における位置に前記対象オブジェクトを生成して配置し、
バックアップ元のオブジェクトサーバが、
前記１以上のオブジェクトにおけるオブジェクトデータ及びメタデータの各々について、
（Ｂ１）当該データでありオブジェクトデータ又はメタデータである対象データが第１条件と第２条件のいずれの条件に該当するかを判断し、
（Ｂ２）（Ｂ１）の結果、前記対象データが前記第１条件に該当する場合、前記対象データの複製データを２以上のバックアップサーバにバックアップし、
（Ｂ３）（Ｂ１）の結果、前記対象データが前記第２条件に該当する場合、前記対象データのＥＣに従う冗長度Ｖの断片データである２以上のデータを２以上のバックアップサーバにバックアップし、
前記第１条件は、前記対象データがメタデータであることであり、且つ、前記第２条件は、前記対象データがオブジェクトデータであること、又は、
前記第１条件は、前記対象データがメタデータであること、及び、前記対象データがオブジェクトデータであり且つそのオブジェクトデータのデータサイズが閾値未満であることであり、且つ、前記第２条件は、前記対象データがオブジェクトデータであり且つそのオブジェクトデータのデータサイズが前記閾値以上であることである、バックアップリストア方法。
【請求項６】
それぞれがファイル又はディレクトリである１以上のバックアップ対象オブジェクトを複数のバックアップサーバの少なくとも１つにバックアップするオブジェクトサーバであって、
前記複数のバックアップサーバに接続されたインターフェースと、
前記インターフェースに接続されたプロセッサと
を有し、
前記１以上のバックアップ対象オブジェクトの中のファイルは、オブジェクトデータであるファイルデータとそのオブジェクトデータについてのメタデータとで構成され、前記１以上のオブジェクトの中のディレクトリは、オブジェクトについてのメタデータで構成されており、
前記プロセッサは、それぞれがファイル又はディレクトリである１以上のバックアップ対象オブジェクトにおけるオブジェクトデータ及びメタデータの各々について、
（Ｂ１）当該データでありオブジェクトデータ又はメタデータである対象データが第１条件と第２条件のいずれの条件に該当するかを判断する機能と、
（Ｂ２）（Ｂ１）の結果、前記対象データが前記第１条件に該当する場合、前記対象データの複製データを２以上のバックアップサーバにバックアップする機能と、
（Ｂ３）（Ｂ１）の結果、前記対象データが前記第２条件に該当する場合、前記対象データのＥＣ（Erasure Coding）に従う冗長度Ｖの断片データ（Ｖは、（ｐ＋ｑ）／ｐに基づく値、ｐは、断片データの数であり、ｑは、パリティデータの数）である２以上のデータを２以上のバックアップサーバにバックアップする機能と、を有し、
前記プロセッサは、更に、前記１以上のバックアップ対象オブジェクトの各々について、第１ファイルシステム空間におけるそのバックアップ対象オブジェクトの位置とそのバックアップ対象オブジェクトのバックアップ先とに関する情報を、前記複数のバックアップサーバのうちの少なくとも１つにおける記憶デバイスに格納された管理情報に登録し、
前記第１ファイルシステム空間は、前記１以上のバックアップ対象オブジェクトを含んだファイルシステム空間であり、
前記プロセッサは、
（Ｒ１）それぞれがファイル又はディレクトリである１以上のリストア対象オブジェクトの各々について、そのリストア対象オブジェクトの第２ファイルシステム空間における位置と、そのオブジェクトのバックアップ先とを、前記管理情報を参照することにより特定する機能を有し、
前記第２ファイルシステム空間は、前記１以上のリストア対象オブジェクトを含んだファイルシステム空間であり、
（Ｒ２）前記１以上のリストア対象オブジェクトの各々についての機能として、
（Ｒ２１）当該リストア対象オブジェクトである対象オブジェクトのメタデータとして、そのメタデータの複製データ、又は、そのメタデータの断片データを前記複数のバックアップサーバのうちの少なくとも１つから受信する機能と、
（Ｒ２２）前記対象オブジェクトがファイルである場合に、前記対象オブジェクトのオブジェクトデータとして、そのオブジェクトデータの複製データ、又は、そのオブジェクトデータの断片データを前記複数のバックアップサーバのうちの少なくとも１つから受信する機能と、
（Ｒ２３）前記対象オブジェクトがディレクトリである場合において前記受信したメタデータ、又は前記対象オブジェクトがファイルである場合において前記受信したメタデータと前記受信したオブジェクトデータとに基づき、前記対象オブジェクトの前記第２ファイルシステム空間における位置に前記対象オブジェクト生成して配置する機能とを有し、
前記第１条件は、前記対象データがメタデータであることであり、且つ、前記第２条件は、前記対象データがオブジェクトデータであること、又は、
前記第１条件は、前記対象データがメタデータであること、及び、前記対象データがオブジェクトデータであり且つそのオブジェクトデータのデータサイズが閾値未満であることであり、且つ、前記第２条件は、前記対象データがオブジェクトデータであり且つそのオブジェクトデータのデータサイズが前記閾値以上であることである、オブジェクトサーバ。
【請求項７】
前記プロセッサは、前記１以上のリストア対象オブジェクトのうちの少なくとも１つについて、（Ｒ２２）による処理より先に（Ｒ２１）による処理を実行する、ように構成されている、
請求項６記載のオブジェクトサーバ。
【請求項８】
前記プロセッサは、
（Ｒ２）による処理の開始前に、前記第２ファイルシステム空間に一時ディレクトリを設け、
前記１以上のリストア対象オブジェクトについて並行して（Ｒ２１）による処理及び（Ｒ２２）による処理を実行し、
（Ｒ２３）による処理により、前記１以上のリストア対象オブジェクトにおけるディレクトリを、（Ｒ２１）による処理で取得したメタデータに基づいて、前記一時ディレクトリに生成し、前記１以上のオブジェクトにおけるファイルを、（Ｒ２１）による処理で取得したメタデータ及び（Ｒ２２）による処理で取得したオブジェクトデータに基づいて、前記一時ディレクトリに生成し、前記一時ディレクトリから、前記第２ファイルシステム空間における該当位置に、前記対象オブジェクトを移動する、ように構成されている
請求項６又は７記載のオブジェクトサーバ。
【請求項９】
前記対象データが前記第２条件に該当する場合、前記冗長度Ｖの値は、前記対象データを含んだバックアップ対象オブジェクトのパス深度に従う値であり、
前記対象データを含んだバックアップ対象オブジェクトのパス深度は、前記第１ファイルシステム空間のルートディレクトリからそのバックアップ対象オブジェクトに至るまでに経由するリンクの数である、
請求項６乃至８のうちのいずれか１項に記載のオブジェクトサーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、バックアップ及びリストアのうちの少なくとも一方、例えば、その両方に関する。
【背景技術】
【０００２】
耐災害性を向上させるため、ネットワークを通してバックアップ及びリストアを行うシステムが構築されている。非特許文献１に示されている通り、正サイトが、遠隔にあるデータセンタにデータをバックアップする。正サイトに災害が起きて正サイトが復旧されると、復旧した正サイトが、バックアップされたデータをデータセンタからリストアする。
【０００３】
また、バックアップ及びリストアをファイルの更新差分データに基づき処理することによって効率化する技術が知られている。例えば、特許文献１に示される通り、更新差分の管理のため、更新のあったファイルデータブロックが、差分データとしてバックアップされる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】WO2007/131190
【特許文献２】US6604118
【発明の概要】
【発明が解決しようとする課題】
【０００５】
非特許文献１に開示の技術によれば、データをリストアするリストア処理に時間がかかる。具体的には、災害によって損壊した正サイトが物理的に復旧した後、遠隔データセンタから復旧した正サイトへデータが送信される。この時、ネットワークの帯域の制約により、データ転送に時間がかかる。
【０００６】
特許文献１に開示の技術でも、差分データが大きい場合は非特許文献１と同様の問題が発生する。更に、リストアのために、差分の元となるベーススナップショットを復旧した正サイトに初めに送る必要があり、データ転送時間が長くなる。
【０００７】
また、ベーススナップショットが失われると、差分を用いたリストアが不可能になるため、遠隔データサイトが複数のベーススナップショットを保存することで対災害性を向上する必要がある。しかし、そうすると、バックアップデータ容量が大きくなってしまう。
【課題を解決するための手段】
【０００８】
それぞれがファイル又はディレクトリである１以上のバックアップ対象オブジェクトを複数のバックアップサーバの少なくとも１つにバックアップする第１オブジェクトサーバと、それぞれがファイル又はディレクトリである１以上のリストア対象オブジェクトを複数のバックアップサーバの少なくとも１つからリストアする第２オブジェクトサーバとのうちの少なくとも１つが備えられる。１以上のリストア対象オブジェクトは、バックアップされた１以上のバックアップ対象オブジェクトでよい。１以上のバックアップ対象オブジェクトの各々、及び、１以上のリストア対象オブジェクトの各々は、オブジェクトデータとそのオブジェクトデータについてのメタデータとで構成されている。
【０００９】
第１オブジェクトサーバは、１以上のバックアップ対象オブジェクトの各々におけるオブジェクトデータ及びメタデータの各々について、
当該データでありオブジェクトデータ又はメタデータである対象データが第１条件と第２条件のいずれの条件に該当するかを判断し、
対象データが第１条件に該当する場合、対象データの１以上の複製データを２以上のバックアップサーバにバックアップし、
対象データが第２条件に該当する場合、対象データのＥＣ（Erasure Coding）に従う冗長度Ｖの断片データ（Ｖは１より大きい値）である２以上のデータを、２以上のバックアップサーバにバックアップする。なお、対象データの冗長度Ｖの断片データは、ＥＣに従う断片データでなくてもよい。例えば、断片データの複製データが２以上のデータに含まれていれば、断片データが失われてもそれの複製データに代替可能なため、その断片データの冗長性が実現される。
【００１０】
第１オブジェクトサーバは、１以上のバックアップ対象オブジェクトの各々について、第１ファイルシステム空間におけるそのバックアップ対象オブジェクトの位置とそのバックアップ対象オブジェクトのバックアップ先とに関する情報を、複数のバックアップサーバのうちの少なくとも１つにおける管理情報に登録する。第１ファイルシステム空間は、１以上のバックアップ対象オブジェクトを含んだファイルシステム空間（例えばネームスペース）である。管理情報は、複数のバックアップサーバ以外の共有記憶領域（第１及び第２オブジェクトサーバのいずれもアクセス可能な記憶領域）に格納されてもよい。
【００１１】
第２オブジェクトサーバは、１以上のリストア対象オブジェクトの各々について、そのリストア対象オブジェクトの第２ファイルシステム空間における位置と、そのリストア対象オブジェクトのバックアップ先とを、上述の管理情報を参照することにより特定する。第２ファイルシステム空間は、１以上のリストア対象オブジェクトを含んだファイルシステム空間であり、例えば、リストア対象の上記第１ファイルシステム空間であってよい。
【００１２】
第２オブジェクトサーバは、１以上のリストア対象オブジェクトの各々について、
当該オブジェクトである対象オブジェクトのメタデータとして、そのメタデータの少なくとも１つの複製データ、又は、そのメタデータの断片データを複数のバックアップサーバのうちの少なくとも１つから受信し、
対象オブジェクトのオブジェクトデータとして、そのオブジェクトデータの少なくとも１つの複製データ、又は、そのオブジェクトデータの断片データを複数のバックアップサーバのうちの少なくとも１つから受信し、
受信したメタデータと受信したオブジェクトデータとに基づき、対象オブジェクトの第２ファイルシステム空間における位置に対象オブジェクトをリストアする。
【００１３】
なお、第２オブジェクトサーバは、第１オブジェクトサーバのリプレース後（復旧後）のオブジェクトサーバでもよいし、第１オブジェクトサーバのスケールアウト等の目的で追加されたオブジェクトサーバでもよい。
【発明の効果】
【００１４】
高いリストア性能とバックアップデータ容量削減を両立できる。具体的には、第１条件に該当するデータ（例えば、メタデータのような一般的に小サイズのデータ）についてはその複製がバックアップされ、第２条件に該当するデータ（例えば、オブジェクトデータのような大サイズとなり得るデータ）については複数の断片データに分割されてバックアップされるので、複数のバックアップサーバから１以上のリストア対象オブジェクトを転送するのに要する時間を短縮できる。また、第２条件に該当するデータの分割はＥＣ（Erasure Coding）に従うエンコードのため、冗長性を保ちつつデータ容量削減を実現できる。
【図面の簡単な説明】
【００１５】
【図１】実施例１に係るバックアップリストアシステムの構成を示す。
【図２】ファイルサーバの構成を示す。
【図３】バックアップサーバの構成を示す。
【図４】バックアップ設定テーブルの構成を示す。
【図５】バックアップ管理テーブルの構成の一例を示す。
【図６】リストア処理の模式図である。
【図７】バックアップ処理のフローを示す。
【図８】リストア処理のフローを示す。
【図９】実施例２に係るバックアップ方式テーブルの構成を示す。
【図１０】実施例２に係るバックアップ方式決定処理のフローを示す。
【図１１】実施例３に係るバックアップ方式テーブルの構成を示す。
【図１２】実施例３に係るバックアップ方式決定処理のフローを示す。
【発明を実施するための形態】
【００１６】
以下、幾つかの実施例を説明する。
【００１７】
なお、以下の説明では、以下の説明では、「ｘｘｘテーブル」といった表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「ｘｘｘテーブル」を「ｘｘｘ情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、１つのテーブルは、２以上のテーブルに分割されてもよいし、２以上のテーブルの全部又は一部が１つのテーブルであってもよい。
【００１８】
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ（例えばＣＰＵ（Central Processing Unit）によって実行されることで、定められた処理を、適宜に記憶資源（例えばメモリ）及び／又は通信インターフェイスデバイス（例えば通信ポート）等を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置が行う処理としてもよい。また、プロセッサは、処理の一部または全部を行うハードウエア回路を含んでもよい。プログラムは、プログラムソースから各コントローラにインストールされてもよい。プログラムソースは、例えば、プログラム配布計算機または計算機が読み取り可能な記憶メディアであってもよい。また、以下の説明において、２以上のプログラムが１つのプログラムとして実現されてもよいし、１つのプログラムが２以上のプログラムとして実現されてもよい。
【００１９】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号（又は参照符号における共通部分）を使用し、同種の要素を区別して説明する場合は、要素のＩＤ（又は要素の参照符号）を使用することがある。例えば、ファイルサーバを特に区別しないで説明する場合には、「ファイルサーバ１０５」と記載し、個々のファイルサーバを区別して説明する場合には、「ファイルサーバ１０５Ａ」、「ファイルサーバ１０５Ｂ」のように記載することがある。
【実施例１】
【００２０】
図１は、実施例１に係るバックアップリストアシステムの構成を示す。
【００２１】
バックアップリストアシステム１００は、クライアント１０１、正サイト１０３、正サイト１０３にある管理サーバ１０４、ファイルサーバ１０５Ａ、バックアップサイト１０６、バックアップサイト１０６にあるバックアップサーバ１０７、リカバリサイト１０８、及び、リカバリサイト１０８にあるファイルサーバ１０５Ｂを有する。複数のバックアップサーバ１０７が存在する。バックアップリストアシステム１００は、計算機システムの一例であり、ファイルサーバ１０５Ａ及び１０５Ｂを含んでいるため、バックアップリストアシステムと呼ばれる。ファイルサーバ１０５Ｂが無い場合、ファイルサーバ１０５Ａを含んだ計算機システムは、バックアップシステムと呼ばれてよい。一方、ファイルサーバ１０５Ａが無い場合、ファイルサーバ１０５Ｂを含んだ計算機システムは、リストアシステムと呼ばれてよい。
【００２２】
クライアント１０１と正サイト１０３とバックアップサイト１０６とリカバリサイト１０８は通信路１０２によって相互に接続されている。通信路１０２は、例えば、ＬＡＮ（Local Area Network）やインターネットのような通信ネットワークでよい。
【００２３】
クライアント１０１は、ファイルサーバ１０５Ａ又はファイルサーバ１０５Ｂを利用する端末（計算機）である。クライアント１０１を使用するエンドユーザは、クライアント１０１のファイルアクセスプログラム１１０を用いてファイルサーバ１０５Ａ又はファイルサーバ１０５Ｂへ接続し、ファイルサーバ１０５Ａ又はファイルサーバ１０５Ｂに格納されているファイルを読み書きする。
【００２４】
正サイト１０３は、災害発生前に、クライアント１０１へファイルアクセスサービスを提供するサイトである。
【００２５】
正サイト１０３の管理サーバ１０４は、バックアップリストアシステム１００の全体を管理する端末（計算機）である。バックアップリストアシステム１００の管理者は、管理サーバ１０４を用いて、バックアップリストアシステム１００の設定を行う。例えば、管理者は、管理サーバ１０４を用いてバックアップサイト１０６ＡのＩＰアドレスをファイルサーバ１０５Ａに設定する。なお、管理サーバ１０４は、バックアップサイト１０６やリカバリサイト１０８のような任意の位置に配置されてよい。
【００２６】
正サイト１０３内のファイルサーバ１０５Ａは、クライアント１０１へファイルアクセスサービスを提供する計算機である。ファイルサーバ１０５Ａは、第１オブジェクトサーバの一例である。ファイルアクセスサービスは、いずれの種別でもよく、例えば、ＮＦＳ（Network File System）又はＣＩＦＳ（Common Internet File System）である。正サイト１０３のファイルサーバ１０５Ａは、例えば、災害が発生する前に運用されるサーバである。
【００２７】
バックアップサイト１０６は、バックアップデータを保持するサイトである。バックアップサイト１０６のバックアップサーバ１０７に、ファイルサーバ１０５が保持するオブジェクト（ファイル又はディレクトリ）のオブジェクトデータ（例えばファイルデータ）とそれのメタデータとのうちの少なくとも一部に関するデータ（具体的には、後述するように、複製データ、断片データ及びパリティデータのうちの少なくとも１つ）がバックアップされる。バックアップサーバ１０７は、ファイルサーバ１０５Ａからデータを定期的又は不定期的に受信し、受信したデータを、バックアップサーバ１０７のディスクデバイス（不揮発記憶デバイスの一例）へ格納する。ファイルサーバ１０５とバックアップサーバ１０７の動作は後に詳述する。また、１つのバックアップサイト１０６に１つのバックアップサーバ１０７が存在するため、本実施例では、バックアップサイト１０６とバックアップサーバ１０７は実質的に同義である。
【００２８】
リカバリサイト１０８は、災害発生後に、クライアント１０１へファイルアクセスサービスを提供するサイトである。
【００２９】
リカバリサイト１０８のファイルサーバ１０５Ｂは、災害発生後に、クライアント１０１へファイルアクセスサービスを提供する計算機である。ファイルサーバ１０５Ｂは、第２オブジェクトサーバの一例である。災害によって、正サイト１０３が物理的に損壊した場合、リカバリサイト１０８のファイルサーバ１０５Ｂがサービスを引き継ぐ。そのため、正サイト１０３のファイルサーバ１０５Ａが、ファイルサーバ１０５Ａが保持するデータをバックアップサイト１０６のバックアップサーバ１０７へ定期的に又は不定期的にバックアップする（保存する）。災害発生後、リカバリサイト１０８のファイルサーバ１０５Ｂは、バックアップサーバ１０７からデータ（バックアップされたデータ）を取得し、ファイルアクセスサービスを再開する。クライアント１０１は、再開したファイルサービスを利用する。
【００３０】
バックアップリストアシステム１００において、正サイト１０３のファイルサーバ１０５Ａは、１以上のバックアップ対象オブジェクトの各々におけるオブジェクトデータ及びメタデータの各々について、そのデータのバックアップ方式を決定する、具体的には、そのデータが第１条件と第２条件のいずれに該当するかを判断する。
【００３１】
メタデータのような一般的に小サイズのデータは、第１条件に該当する。この場合、ファイルサーバ１０５Ａは、データを、複数のバックアップサーバ１０７に多重複製する。
【００３２】
一方、オブジェクトデータのような一般的に大サイズとなり得るデータは、第２条件に該当する。この場合、ファイルサーバ１０５Ａは、データを分割することにより得られた複数の断片データを複数のバックアップサーバ１０７にバックアップする。データ分割として、耐災害性を向上させるため、ＥＣ（Erasure Coding）に従うエンコードが採用される。
【００３３】
データのリストア時には、第１条件に該当したデータについては、少なくとも１つのバックアップサーバ１０７から複製データがファイルサーバ１０５Ｂに転送される。複製データを用いてリストアが行われる。本実施例では、第１条件は、データがメタデータであることである。メタデータはファイルデータより優先的にリストアされる。つまり、メタデータを発災後早急にリストアできる。また、メタデータは、一般的に小サイズのデータ（例えば数キロバイト程度のデータ）のため、容量オーバヘッドが小さい。
【００３４】
第２条件に該当したデータについては、複数のバックアップサーバ１０７からファイルサーバ１０５Ｂに並列に断片データが転送される。このため、１つのバックアップサーバ１０７からデータ（典型的にはファイルデータ）が転送されることに比べてデータ転送時間が短縮される。また、データ分割にＥＣが採用されていることで、バックアップ及びリストアで広帯域化が実現され、且つ、容量オーバヘッドを抑えることができる。複数の断片データを用いたデコードによりデータがリストアされる。
【００３５】
以下、実施例１を詳述する。
【００３６】
図２は、ファイルサーバ１０５の構成を示す。
【００３７】
ファイルサーバ１０５は、ネットワークＩ／Ｆ（インターフェース）２０１と、ＣＰＵ２０２と、ディスクデバイス２０３と、メモリ２０５とを有する。それらは内部通信路２０４によって相互に接続されている。
【００３８】
ネットワークＩ／Ｆ２０１は、通信路１０２と相互に接続されており、クライアント１０１からのファイルアクセス要求を受け付ける場合に用いられるデバイスである。ＣＰＵ２０２は、メモリ２０５に格納されたプログラムを実行するデバイスであり、プロセッサの一例である。ディスクデバイス２０３は、プログラムファイルやエンドユーザが作成したファイルを格納する記憶デバイスである。メモリ２０５は、プログラムやデータ構造を保持するデバイスである。プログラムはディスクデバイス２０３に格納されており、ＣＰＵ２０２がそれを実行する際に、それをメモリ２０５へ読み込む。以降、特に明示しない限り、プログラムはＣＰＵによって実行されるものとする。また、プログラムはディスクデバイスからメモリに読み込まれて実行されるものとする。
【００３９】
ファイル共有サーバプログラム２０６は、クライアント１０１のファイルアクセスプログラム１１０のファイルアクセス要求を処理するプログラムである。ファイルアクセス要求とは、例えば、ファイルの読み込み（READ）やファイルへのデータ書き込み（WRITE）である。ファイルアクセス要求によって受信したファイルデータは、ディスクデバイス２０３へ格納される。そのファイルデータは、バックアップサーバ１０７へバックアップされる。
【００４０】
ファイルシステムプログラム２０７は、ディスクデバイス２０３に格納されたファイルのデータや管理情報（メタデータ）を管理するプログラムである。ファイル共有サーバプログラム２０６は、クライアント１０１から送られてきたファイルデータをファイルシステムプログラム２０７へ受け渡し、ファイルシステムプログラム２０７がディスクデバイス２０３へ格納して管理する。
【００４１】
バックアップ決定プログラム２０８は、バックアップ先のバックアップサーバ１０７やバックアップ方式を決めるプログラムである。バックアップ決定プログラム２０８の処理動作は後に詳述する。
【００４２】
バックアップデータ送受信プログラム２０９は、バックアップデータをバックアップサーバ１０７へ通信路１０２を通して送信するプログラムである。バックアップデータの送受信に用いるプロトコルは、例えば、ＲＥＳＴ（Representational State Transfer）プロトコル又はＳＭＢ（Server Message Block）プロトコルである。
【００４３】
複製データ作成プログラム２１０は、バックアップするファイルのバックアップデータを作成するプログラムである。複製データ作成プログラム２１０は、バックアップ対象となったファイルのメタデータとデータを分離したバックアップデータを作成する。更に、複製データ作成プログラム２１０は、データをＥＣに従い冗長符号化する。ＥＣ（Erasure Coding）とは、データをあるサイズの断片データに分割し、その断片データのパリティデータを作成する符号化方式である。パリティデータ数の断片データを失っても、元のデータを復元できる。例えば、複製データ作成プログラム２１０は、或るファイルのバックアップデータとして、１０個の複製データ（単純複製メタデータ）と１０個の断片データと２個のパリティデータとを作成したとする。複製データ作成プログラム２１０は、これらを複数のバックアップサーバ１０７へバックアップ（分散）する。これにより、バックアップリストアシステム１００の耐災害性が向上する。ＥＣにはReed Solomon符号化など様々な方式があるが、ＥＣの方式としていずれの方式が採用されてもよい。
【００４４】
複製データ復元プログラム２１１は、複製データ作成プログラム２１０が作成したバックアップデータを用いて元のファイルを復元するプログラムである。バックアップデータがＥＣによって冗長化されている場合は、デコード処理を行って元のデータを計算によって求める。
【００４５】
管理プログラム２１２は、複製データ作成プログラム２１０などのプログラムが用いる管理情報を作成又は管理するプログラムである。例えば、管理プログラム２１２は、ＥＣの方式や単純複製数などを設定又は管理する。管理プログラム２１２は、管理サーバ１０４を通して管理者によって実行される。管理者は、管理サーバ１０４からファイルサーバ１０５へ任意のプロトコル（例えばＳＳＨ（Secure Shell）プロトコル）を用いて接続し、管理プログラム２１２を動作させる。
【００４６】
バックアップ設定テーブル２１３は、管理プログラム２１２によって生成されるバックアップ方式などを定めたテーブルである。バックアップ設定テーブル２１３は後に詳述する。
【００４７】
図３は、バックアップサーバ１０７の構成を示す。
【００４８】
バックアップサーバ１０７は、ネットワークＩ／Ｆ３０１と、ＣＰＵ３０２と、メモリ３０３と、ディスクデバイス３１０とを有する。それらは内部通信路３０７によって相互に接続されている。
【００４９】
ネットワークＩ／Ｆ３０１は、外部通信路１０２と接続されるデバイスである。ＣＰＵ３０２は、メモリ３０３に格納されたプログラムを実行するデバイスである。ディスクデバイス３１０は、プログラム、バックアップ管理テーブル３０８、断片データ３０９（３０９Ａ、３０９Ｂ、…）、パリティデータ３１１及び複製データ３１２を保持するデバイスである。断片データ３０９は、データの一部分であり、データＥＣに従いエンコードすることにより得られた部分データである。パリティデータ３１１は、１以上の断片データ３０９のうちの１つを生成するために使用されるデータである。複製データは、データ（例えばメタデータ）の複製である。ファイルシステムプログラム３０４は、バックアップデータをファイルとして管理するプログラムである。
【００５０】
バックアップデータ送受信プログラム３０５は、ファイルサーバ１０５（１０５Ａ）から送られてくるバックアップデータをファイルとしてディスクデバイス３１０へ保存すると共に、ファイルサーバ１０５（１０５Ｂ）からのバックアップデータ取得要求に対してバックアップデータをファイルサーバ１０５（１０５Ｂ）に送信するプログラムである。なお、上述の通り、バックアップデータの送受信には、ＲＥＳＴなどのプロトコルが用いられてよい。
【００５１】
管理プログラム３０６は、バックアップサーバ１０７の設定を行うプログラムである。例えば、管理プログラム３０６は、バックアップサーバ１０７のＩＰアドレスなどを設定する。
【００５２】
ディスクデバイス３１０に格納されるバックアップ管理テーブル３０８は、バックアップデータの格納先のバックアップサーバ１０７やＥＣ方式などを管理するテーブルである。バックアップ管理テーブル３０８の内容や利用法は後に詳述する。バックアップ管理テーブル３０８は、少なくとも１つのバックアップサーバ１０７、又は、ファイルサーバ１０５Ａ及び１０５Ｂがアクセス可能な他の共有記憶領域に格納されてよい。
【００５３】
図４は、バックアップ設定テーブル２１３の構成を示す。
【００５４】
バックアップ設定テーブル２１３は、複数のバックアップサーバ１０７（バックアップサイト１０６）の各々についてレコードを有する。各レコードが、サイトＩＤ４０１、サイト名４０２及びＵＲＬ４０３を格納する。また、バックアップ設定テーブル２１３は、ＥＣ設定４１０及びレプリケーション設定４１１を格納する。
【００５５】
サイトＩＤ４０１は、バックアップサイト１０６のＩＤ（例えば通番）である。サイト名４０２は、バックアップサイト１０６の名称である。ＵＲＬ４０３は、ファイルサーバ１０５からバックアップサーバ１０７（バックアップサーバ１０７内のストレージ）へのアクセスパスである。ファイルサーバ１０５は、断片データ３０９やパリティデータ３１１へアクセスするためＵＲＬ４０３に基づいてアクセスパスを生成し、それらのデータを取得又は送信する。ＵＲＬ４０３に代えて他種のアクセスパスが採用されてもよい。ＥＣ設定４１０は、ＥＣに従うエンコードのポリシーに関する情報、例えば、断片データ数、パリティデータ数及びＥＣ方式を表す情報を含む。レプリケーション設定４１１は、レプリケーション方式で複製する場合のレプリケーション数（複製データ数）を表す情報を含む。例えば、レプリケーション設定４１１に従ってメタデータの複製データ数（レプリケーション数）が決定される。
【００５６】
図５は、バックアップ管理テーブル３０８の構成を示す。
【００５７】
バックアップ管理テーブル３０８は、１以上のバックアップ対象オブジェクト（リストア対象オブジェクト）の各々についてレコードを有する。各レコードが、パス５０１、ＩＤ５０２、種別５０３、Ｍｅｔａ５０４、Ｄａｔａ５０５、ＭｅｔａＢＵＰ５０６、ＤａｔａＢＵＰ５０７、ＰａｒｉｔｙＢＵＰ５０８を格納する。
【００５８】
パス５０１は、ファイルシステム空間におけるオブジェクトへのパス（バス名）を表す。パス５０１は、ファイルシステム空間におけるオブジェクトの位置情報の一例である。リストア時には、パス５０１と同じパス（位置）にファイル又はディレクトリがリストアされる。ＩＤ５０２は、オブジェクトのＩＤである。種別５０３は、オブジェクトの種別（ファイル又はディレクトリ）を示す情報である。
【００５９】
Ｍｅｔａ５０４は、オブジェクト内のメタデータのバックアップ方式を示す情報である。Ｍｅｔａ５０４が「Ｒｅｐ．」の場合、メタデータの複製データがバックアップされる。メタデータをＥＣに従いバックアップする場合、後述のように、「（ｐ，ｑ）」が設定される。Ｄａｔａ５０５は、オブジェクト内のオブジェクトデータのバックアップ方式を示す情報である。オブジェクトデータがＥＣに従いバックアップされる場合、Ｄａｔａ５０５として、「（ｐ，ｑ）」が設定される。ｐは、断片データ数であり、ｑは、パリティデータ数である。
【００６０】
ＭｅｔａＢＵＰ５０６は、メタデータのバックアップ先（バックアップサイト１０６）のサイト名を表す。ＤａｔａＢＵＰ５０７は、オブジェクトデータのバックアップ先（バックアップサイト１０６）のサイト名を表す。ＰａｒｉｔｙＢＵＰ５０８は、メタデータ及びオブジェクトデータのうちの少なくとも１つについて１以上のパリティデータ３１１がバックアップされた場合、その１以上のパリティデータ３１１のバックアップ先（バックアップサイト１０６）のサイト名を表す。ＰａｒｉｔｙＢＵＰ５０８は、メタデータについてのパリティデータ３１１のバックアップ先サイト名と、オブジェクトデータについてのパリティデータ３１１のバックアップ先サイト名のように２種類のサイト名を区別して保持してもよい。
【００６１】
バックアップ管理テーブル３０８が複数のレコード群（１以上のレコード）に分割され、それら複数のレコード群が複数のバックアップサーバ１０７に分散していてもよい。また、バックアップ管理テーブル３０８のうちの少なくとも１つのレコードが、上述の共有記憶領域に格納されてよい。
【００６２】
以下、本実施例で行われる処理を説明する。
【００６３】
図６は、リストア処理の模式図である。
【００６４】
２つのバックアップサーバ１０７Ａ及び１０７Ｂ（バックアップサイト１０６Ａ及び１０６Ｂ）の２つのディスクデバイス３１０に格納されている断片データ３０９、複製データ３１２及びパリティデータ３１１を用いて、リカバリサイト１０８のファイルサーバ１０５に３つのオブジェクト（ディレクトリ「ＨＯＭＥ」、ファイルＸ及びファイルＹ）をリストアすることを例に取る。１つのオブジェクトデータについての２以上のデータ（２以上の断片データ及び１以上のパリティデータ）は、データ数がバックアップサーバ数以下の場合、その２以上のデータはそれぞれ異なる２以上のバックアップサーバ１０７にバックアップされている。データ数がバックアップサーバ数より多い場合、１台のバックアップサーバ１０７に、１つのオブジェクトデータについて複数のデータ（断片データ及びパリティデータのうちの少なくとも１つ）がバックアップされている。
【００６５】
ファイルサーバ１０５Ｂが、一時ディレクトリ「ＴＭＰ」を、第２ファイルシステム空間（オブジェクトのリストア先のファイルシステム空間）に生成する。一時ディレクトリ「ＴＭＰ」は、例えば、ルートディレクトリ「Ｒｏｏｔ」の子ディレクトリとして生成される。
【００６６】
ファイルサーバ１０５Ｂが、バックアップ管理テーブル３０８を参照することで、３つのオブジェクトの各々について、そのオブジェクトの第２ファイルシステム空間における位置と、そのオブジェクトのバックアップ先サイト名とを特定する。
【００６７】
その後、まず、ファイルサーバ１０５Ｂが、オブジェクトデータよりもメタデータを優先的にリストアする。具体的には、ファイルサーバ１０５Ｂが、バックアップサーバ１０７Ａ及び１０７Ｂから、並行して、３つのオブジェクトにそれぞれ対応した３つの複製データ３１２（メタデータ複製）を取得し、一時ディレクトリ「ＴＭＰ」に、３つの複製データをそれぞれ仮復旧する。メタデータの仮復旧とは、そのメタデータのみを有しオブジェクトデータを有さないオブジェクトである仮オブジェクトを生成することである。これにより、一時ディレクトリ「ＴＭＰ」に、３つの仮オブジェクトが生成される。なお、ディレクトリは一般にオブジェクトデータを有さないため、ディレクトリ「ＨＯＭＥ」については、メタデータの仮復旧により一時的にリストアされたことになる。
【００６８】
次に、ファイルサーバ１０５Ｂが、バックアップサーバ１０７Ａ及び１０７Ｂから、並行して、ファイルＸ及びＹに対応した複数の断片データ及び複数のパリティデータを取得する。ファイルサーバ１０５Ｂが、取得したそれらのデータを用いたデコードを行うことにより、ファイルＸ及びＹにそれぞれ対応した２つのファイルデータを算出する。ファイルサーバ１０５Ｂが、その２つのファイルデータの各々を仮復旧する。ファイルデータの仮復旧とは、そのファイルデータをそのファイルデータに対応する仮オブジェクトに格納することである。これにより、一時ディレクトリ「ＴＭＰ」に、ファイルＸ及びＹの各々がリストアされる。
【００６９】
最後に、ファイルサーバ１０５Ｂが、３つのオブジェクトの各々を、一時ディレクトリ「ＴＭＰ」から、第２ファイルシステム空間における該当位置に移動する。具体的には、例えば、ディレクトリ「ＨＯＭＥ」が、ルートディレクトリ「Ｒｏｏｔ」の子ディレクトリとして配置される（パス「／Ｒｏｏｔ／ＨＯＭＥ」に従う位置に移動される）。そして、ディレクトリ「ＨＯＭＥ」内にファイルＸ及びファイルＹが移動される（ファイルＸが、パス「／Ｒｏｏｔ／ＨＯＭＥ／ＦｉｌｅＸ」に従う位置に移動され、ファイルＹが、パス「／Ｒｏｏｔ／ＨＯＭＥ／ＦｉｌｅＹ」に従う位置に移動される）。３つのオブジェクトの移動後（つまりリストア処理の完了後）、一時ディレクトリ「ＴＭＰ」がファイルサーバ１０５Ｂにより削除されてよい。
【００７０】
一時ディレクトリ「ＴＭＰ」があれば、複数のリストア対象オブジェクトのうちの上位のリストア対象オブジェクトがリストアされるのを待つことなく下位のリストア対象オブジェクトを先に一時的にリストアすることができる。これにより、リストア処理を高速に実行できる。
【００７１】
図７は、バックアップ処理のフローを示す。
【００７２】
災害前に正サイト１０３のファイルサーバ１０５Ａがバックアップ処理を実行する。バックアップ処理は、ファイルサーバ１０５Ａのプログラムとバックアップサーバ１０７のプログラムが連携して動作する。ファイルシステムプログラム３０４がクライアント１０１のファイルアクセスプログラム１１０から受信したファイルは、一旦ディスクデバイス２０３へ格納される。そのファイルのファイルデータが、一定期間が経過すると、ＥＣに従い２以上の断片データ３０９と１以上のパリティデータ３１１とされ、それらのデータと、メタデータ（複製データ）とが、複数のバックアップサーバ１０７のうちの２以上のバックアップサーバ１０７へ送られることになる。
【００７３】
まず、バックアップ処理において、バックアップ決定プログラム２０８が、バックアップ方式決定処理を実行する（ステップ７０１）。具体的には、実施例１では、バックアップ決定プログラム２０８は、バックアップ設定テーブル２１３のＥＣ設定４１０に従い、バックアップ対象オブジェクトのオブジェクトデータについて、断片データ数とパリティデータ数を決める。さらに、バックアップ決定プログラム２０８は、バックアップ設定テーブル２１３のレプリケーション設定４１１に従い、バックアップ対象データのメタデータについて、複製データ数を決定する。なお、バックアップ対象がディレクトリの場合、オブジェクトデータが無いため、ディレクトリのバックアップについては、レプリケーション設定４１１のみ使用される。以下、図７の説明では、バックアップ対象オブジェクトはファイルであるとする。
【００７４】
次に、バックアップ決定プログラム２０８は、バックアップ対象ファイルのファイルデータについて、断片データ数とパリティデータ数の合計のバックアップサイト１０６をバックアップ設定テーブル２１３から選定する（ステップ７０２）。バックアップ先（バックアップサイト１０６）は、サイトＩＤの番号に基づいてラウンドロビンで決定されてよい。このステップ７０２で、複製データのバックアップ先のバックアップサイト１０６が選定されてもよい。そのバックアップサイト１０６は、断片データ及びパリティデータのバックアップ先と異なるバックアップサイト１０６（バックアップサーバ１０７）でよい。
【００７５】
次に、複製データ作成プログラム２１０が、バックアップ対象ファイルのファイルデータをＥＣに従いエンコードする（ステップ７０３）。この時、複製データ作成プログラム２１０は、バックアップ決定プログラム２０８から断片データ数とパリティデータ数を受け、その断片データ数分の断片データ３０９と、そのパリティデータ数分のパリティデータ３１１を生成する。なお、バックアップ対象オブジェクトがディレクトリの場合は、このステップ７０３はスキップされる。
【００７６】
バックアップデータ送受信プログラム２０９が、生成された断片データ３０９とパリティデータ３１１を、ステップ７０２で選定されたバックアップサーバ１０７へそれぞれバックアップ（送信）する（ステップ７０４）。具体的には、バックアップデータ送受信プログラム２０９は、断片データ３０９とパリティデータ３１１のバックアップ先のバックアップサーバ１０７のリストをバックアップ決定プログラム２０８から受け取り、そのリストに従ってそれらのデータを送信する。なお、バックアップ対象オブジェクトがディレクトリの場合、このステップ７０４はスキップされる。
【００７７】
次に、バックアップデータ送受信プログラム２０９は、バックアップ対象ファイルのメタデータをバックアップサーバ１０７へ送信する（ステップ７０５）。この時、バックアップデータ送受信プログラム２０９は、メタデータ送信先となるバックアップサーバ１０７のリストをバックアップ決定プログラム２０８から受け取り、そのリストに従ってメタデータを送信する。
【００７８】
次に、バックアップデータ送受信プログラム２０９は、バックアップ管理テーブル３０８にレコードを追加する（ステップ７０６）。バックアップデータ送受信プログラム２０９は、その追加したレコードに、下記を登録する（ステップ７０７）。
・バックアップ対象ファイルのパスを表すパス５０１。
・バックアップ対象ファイルのＩＤ（通番）５０２。
・種別５０３「ＦＩＬＥ」。
・Ｍｅｔａ５０４「Ｒｅｐ．」（メタデータの複製データがバックアップされたため）。
・Ｄａｔａ５０５「（ｐ，ｑ）」（ｐ＝断片データ数、ｑ＝パリティデータ数）。
・ＭｅｔａＢＵＰ５０６（複製データ（メタデータ複製）の送信先のバックアップサイト１０６のサイト名）。
・ＤａｔａＢＵＰ５０７（断片データの送信先のバックアップサイト１０６のサイト名）。
・ＰａｒｉｔｙＢＵＰ５０８（パリティデータの送信先のバックアップサイト１０６のサイト名）。
【００７９】
図８は、リストア処理のフローを示す。
【００８０】
リストア処理は、災害発生後にリカバリサイト１０８のファイルサーバ１０５Ｂにより実行される。
【００８１】
ファイルサーバ１０５Ｂのバックアップデータ送受信プログラム２０９は、バックアップ設定テーブル２１３に記述されたバックアップサーバ１０７に接続し、バックアップ管理テーブル３０８を取得する（ステップ８０１）。なお、全てのバックアップサーバ１０７にバックアップ管理テーブル３０８が格納されていない場合、全てのバックアップサーバ１０７からバックアップ管理テーブル３０８を取得できるまで、順次、バックアップサーバ１０７へアクセスが行われてもよい。また、バックアップ設定テーブル２１３には、バックアップ管理テーブル３０８が格納されるバックアップサーバ１０７のＵＲＬが記述されていてよく、そのＵＲＬを用いて、バックアップ管理テーブル３０８の取得（参照）が行われてもよい。
【００８２】
次に、複製データ復元プログラム２１１は、バックアップ管理テーブル３０８のレコード５２０を１つ選択し（ステップ８０２）、そのレコードのＭｅｔａ５０４とＤａｔａ５０５から、バックアップ方式を特定する（ステップ８０３）。これにより、複製データ復元プログラム２１１は、各リストア対象オブジェクトのリストア方式がわかる。そして、複製データ復元プログラム２１１は、リストア元とするバックアップサーバ１０７を特定する（ステップ８０４）。ここでは、例えば、ネットワーク接続をｐｉｎｇコマンドによって確認し、その結果に基づいてバックアップサーバ１０７を決定することが行われてよい。この時、オブジェクトデータの取得のためには、ＤａｔａＢＵＰ５０７に基づきバックアップサーバ１０７が特定される。ＤａｔａＢＵＰ５０７に記述されたバックアップサーバ１０７が停止している場合、複製データ復元プログラム２１１は、ＰａｒｉｔｙＢＵＰ５０８から１つの代替サイト（バックアップサーバ１０７）を選択する。
【００８３】
次に、複製データ復元プログラム２１１は、バックアップデータ送受信プログラム２０９を通して、選定したバックアップサーバ１０７からメタデータをリストアする（ステップ８０５）。この時、前述の通り、複製データ復元プログラム２１１は、メタデータを仮復旧するため、一時ディレクトリへ仮ファイルを生成する（ステップ８０６）。
【００８４】
そして、複製データ復元プログラム２１１は、バックアップデータ送受信プログラム２０９を通して、選定したバックアップサーバ１０７から、断片データ又はパリティデータを受信する（ステップ８０７）。そして、複製データ復元プログラム２１１は、受信したデータを用いて、ＥＣに従うデコードを行い、ファイルを一時ディレクトリへ仮復旧する（ステップ８０８）。複製データ復元プログラム２１１は、仮復旧したファイル又はディレクトリ（つまり、一時的にリストアされたファイル又はディレクトリ）を、バックアップ管理テーブル３０８のパス５０１に基づいて、本来のパスに従う位置に移動する（ステップ８０９）。これにより、１つのファイル又はディレクトリのリストアが完了する。
【００８５】
次に、複製データ復元プログラム２１１は、未リストアのファイル又はディレクトリの有無を確認する（ステップ８１０）。未リストアのファイル又はディレクトリがあれば（ステップ８１０：Ｎ）、ステップ８０２から処理が再開される。一方、無ければ（ステップ８１０：Ｙ）、処理が終了する。
【００８６】
ここで、図６を用いて説明したリストアの並列処理について、並列処理される区間は、ステップ８０３からステップ８０９である。この区間は、ファイル又はディレクトリを個別に処理できるため、並列化可能である。並列化する場合は、複数のスレッド又はプロセスによって、該当の区間に属するステップが実行される。
【００８７】
以上、実施例１によれば、メタデータとオブジェクトデータでバックアップ方式が異なる。具体的には、メタデータはレプリケーションバックアップを行い、オブジェクトデータはＥＣに従う分散バックアップを行う。オブジェクトデータをリストアするには、メタデータのリストア完了が必要である。よって、本実施例により、メタデータを格納するバックアップサイトさえ回復すればすぐにメタデータをリストアする前提条件を整えることが可能となる。更に、その後、複数のバックアップサイトが順次回復するのに合わせて、メタデータに比して時間のかかるオブジェクトデータを実行することとなり、何れか単一の方法を用いるのに比べて効率よく短い時間での回復を可能とすることができる。
【実施例２】
【００８８】
以下、実施例２を説明する。その際、実施例１との相違点を主に説明し、実施例１との共通点については説明を省略又は簡略する。
【００８９】
実施例２では、バックアップ対象オブジェクトの属性（具体的には、オブジェクト中のデータのサイズ、オブジェクトのパス深度（後述））によって、バックアップ方式やバックアップ冗長度（複製データ数、断片データ数及びパリティデータ数のうちの少なくとも１つ）が異なる。これにより、オブジェクトの属性に最適なバックアップ及びリストアが期待できる。
【００９０】
例えば、バックアップ対象オブジェクトがファイルデータであっても、ファイルデータのデータサイズが閾値未満の場合、ＥＣに代えてレプリケーションバックアップが採用される。サイズが小さいデータをＥＣに従い分割してバックアップしても、リストア時の並列化効果が低い。そこで、データサイズが閾値未満のファイルデータについてはレプリケーションバックアップを採用することでＥＣに従うデコード（ステップ８０８）を省略することができる。これにより、リストア処理の更なる高速化が期待できる。
【００９１】
図９は、実施例２に係るバックアップ方式テーブルの構成を示す。
【００９２】
バックアップ方式テーブル９００は、ファイルサーバ１０５の記憶部（メモリ及びディスクデバイスのうちの少なくとも１つ）に格納される。バックアップ方式テーブル９００は、パラメータ９０１及び値９０２を１つの組としたレコードを有する。本実施例では、パラメータ９０１として、「メタデータ」、「オブジェクトデータ（サイズ大）」、「オブジェクトデータ（サイズ小）」、及び「サイズ閾値」がある。ここで例として示す値は管理者によって適切な値が設定される。従って、本発明はこの例に限定されるものではない。
【００９３】
パラメータ９０１「メタデータ」の値９０２、パラメータ９０１「オブジェクトデータ（サイズ大）」の値９０２、及び、パラメータ９０１「オブジェクトデータ（サイズ小）」の値９０２のいずれも、（ｘ，ｙ，ｚ）、すなわち、パス深度（ｘ）と、バックアップ方式（ｙ）と、冗長度（ｚ）との関係を示す。
【００９４】
オブジェクトの「パス深度」とは、ファイルシステム空間におけるオブジェクトの深さ、言い換えれば、ルートディレクトリからそのオブジェクトへ至るまでに経由するリンクの数である。例えば、パスが「／ＤＩＲ１／ＤＩＲ２／ＦｉｌｅＸ」の場合、ルートディレクトリからファイルＸに至るまでに３つのリンク（ルートディレクトリからディレクトリ「ＤＩＲ１」までのリンク、ディレクトリ「ＤＩＲ１」からディレクトリ「ＤＩＲ２」までのリンク、及び、ディレクトリ「ＤＩＲ２」から「ＦｉｌｅＸ」までのリンク）を経由するため、パス深度は３である。本実施例では、パス深度の範囲として、１以上４以下の範囲と、５以上の範囲とが設けられている。従って、図９において、パス深度「１」は、パス深度が１以上４以下であることを意味し、パス深度「５」は、パス深度が５以上であることを意味する。パス深度の範囲は、本実施例に限られない。
【００９５】
「バックアップ方式」は、複製とＥＣのいずれかである。バックアップ方式「Ｒｅｐ」は、複製を意味し、バックアップ方式「ＥＣ」は、ＥＣを意味する。
【００９６】
「冗長度」の意味は、バックアップ方式が「Ｒｅｐ」であるか「ＥＣ」であるかによって異なる。バックアップ方式が「Ｒｅｐ」の場合、「冗長度」は、複製データの数である。バックアップ方式が「ＥＣ」の場合、「冗長度」は、ＥＣ冗長度である。ここで、ＥＣ冗長度Ｖは、（ｐ＋ｑ）／ｐと定義される。ｐは、上述したように、生成された断片データの数であり、ｑは、上述したように、生成されたパリティデータの数である。具体的には、例えば、２個の断片データに対して１個のパリティデータが生成された場合、ＥＣ冗長度Ｖは、（２＋１）／２＝１．５である。パス深度によってＥＣ冗長度Ｖの値を変える理由として、パス深度が小さいオブジェクト（つまり浅いオブジェクト）は重要度が高いと考えられるためである。例えば、上記ディレクトリ「ＤＩＲ１」の下位には、上述のディレクトリ「ＤＩＲ２」及び「ＦｉｌｅＸ」の他に、他のディレクトリ及び他のファイルが格納され得る。つまり、ディレクトリ「ＤＩＲ１」はこれらのオブジェクトに依存される。ディレクトリ「ＤＩＲ１」のリストアが完了しないと、これらのオブジェクトのリストアは完了できない。従って、比較的浅いオブジェクトは比較的深いオブジェクトよりもＥＣ冗長度Ｖの値を高くすることが好ましい。
【００９７】
パラメータ９０１「サイズ閾値」は、オブジェクトデータのサイズの閾値である。図９によれば、「サイズ閾値」の値９０２は、「１ＭＢ」である。また、「オブジェクトデータ（サイズ大）」は、サイズ閾値以上のサイズのオブジェクトデータであり、「オブジェクトデータ（サイズ小）」は、サイズ閾値未満のサイズのオブジェクトデータである。従って、本実施例では、「オブジェクトデータ（サイズ大）」は、１ＭＢ以上のサイズのオブジェクトデータであり、「オブジェクトデータ（サイズ小）」は、１ＭＢ未満のサイズのオブジェクトデータである。なお、「サイズ閾値」は、１つでもよいし、複数あってもよい。また、サイズ閾値として、メタデータ用のサイズ閾値があってもよい。
【００９８】
図１０は、実施例２に係るバックアップ方式決定処理のフローを示す。なお、図１０では、図９のテーブルに従う値が記述されている。
【００９９】
バックアップ方式決定処理は、バックアップ決定プログラム２０８によって実行される処理である。実施例１では、バックアップ方式決定処理では、メタデータについてはレプリケーションバックアップが採用され、オブジェクトデータについてはＥＣ分割バックアップ（ＥＣに従いデータを分割してバックアップするバックアップ方式）が採用される。
【０１００】
実施例２では、実施例１の観点に代えて又は加えて、バックアップ方式決定処理では、バックアップ方式テーブル９００に基づき下記が行われる。
【０１０１】
バックアップ決定プログラム２０８は、バックアップ対象オブジェクト中の処理対象データ（対象データ）がメタデータかオブジェクトデータかを判断する（ステップ１０００）。
【０１０２】
対象データがメタデータの場合、バックアップ決定プログラム２０８は、メタデータを含んだオブジェクト（この段落において「オブジェクトＡ」）のパス深度に基づき、冗長度を決定する（ステップ１００１）。図９のテーブル９００によれば、オブジェクトＡのパス深度が１以上４以下の場合、冗長度＝２０（２０個の複製データ（メタデータ複製）を生成すること）とされる（ステップ１００２）。一方、オブジェクトＡのパス深度が５以上の場合、冗長度＝１０（１０個の複製データを生成すること）とされる（ステップ１００８）。
【０１０３】
一方、対象データがオブジェクトデータの場合、バックアップ決定プログラム２０８は、そのオブジェクトデータのサイズがサイズ閾値（１ＭＢ）以上か否かを判断する（ステップ１００３）。
【０１０４】
ステップ１００３の判断結果が否定の場合、バックアップ決定プログラム２０８は、５個の複製データをバックアップすることを決定する（ステップ１００４）。５個の複製データは、１以上の複製データの一例である。この場合にＥＣ分割バックアップが採用されない理由は、データサイズが閾値未満であるとＥＣ分割の効果が低いからである。
【０１０５】
ステップ１００３の判断結果が肯定の場合、バックアップ決定プログラム２０８は、対象データを含んだオブジェクト（この段落において「オブジェクトＢ」）のパス深度に基づきＥＣ冗長度Ｖを決定する（ステップ１００５）。図９のテーブル９００によれば、オブジェクトＢのパス深度が１以上４以下の場合、ＥＣ冗長度Ｖ＝１０とされる（ステップ１００６）。一方、オブジェクトＢのパス深度が５以上の場合、ＥＣ冗長度Ｖ＝５とされる（ステップ１００７）。
【０１０６】
以上、実施例２によれば、バックアップ対象オブジェクトの属性に最適なバックアップ方式及び冗長度（複製データ数、断片データ数及びパリティデータ数のうちの少なくとも１つ）を決定することができる。
【０１０７】
なお、実施例２は、上述したように実施例１との組合せが可能である。例えば、対象データがオブジェクトデータの場合、ＥＣ分割バックアップが採用されるが、ＥＣ冗長度Ｖの値は、対象データを含んだオブジェクトのパス深度に従い決定される。
【０１０８】
また、実施例２において、図１０に示したバックアップ方式決定処理では、ステップ１００３及び１００５のうちの一方は無くてもよい。
【実施例３】
【０１０９】
以下、実施例３を説明する。その際、実施例１及び２との相違点を主に説明し、実施例１及び２との共通点については説明を省略又は簡略する。
【０１１０】
実施例３では、災害（例えば大規模災害）が発生した後のバックアップサイトの回復率に基づいてバックアップ方式やバックアップ冗長度（複製データ数、断片データ数及びパリティデータ数のうちの少なくとも１つ）が決定される。これにより、実施例３に係るバックアップリストアシステムを運用する地域に合わせた最適なバックアップ及びリストアが期待できる。
【０１１１】
図１１は、実施例３に係るバックアップ方式テーブルの構成を示す。
【０１１２】
バックアップ方式テーブル１１００は、図９に示したテーブル９００に代えて又は加えて用意されたテーブルであり、ファイルサーバ１０５の記憶部（メモリ及びディスクデバイスのうちの少なくとも１つ）に格納される。
【０１１３】
バックアップ方式テーブル１１００は、災害が発生してからの経過時間と回復率との関係を表している。具体的には、例えば、バックアップ方式テーブル１１００の１日後回復率１１０１とは、災害発生後１日目の回復率を表す。３日後回復率１１０２は、災害発生後３日目の回復率を表す。回復率は、バックアップサーバ数に対する、回復したバックアップサーバ（動作可能なバックアップサーバ）１０７の数の割合である。例えば、１００台のバックアップサーバ１０７が導入されている場合の回復率「３０％」は、３０台のバックアップサーバ１０７が動作可能な状態である。一般的に、災害発生からの時間経過に伴い、回復率は上昇する。
【０１１４】
図１２は、実施例３に係るバックアップ方式決定処理のフローを示す。
【０１１５】
まず、バックアップ決定プログラム２０８は、１日後回復率１１０１の値が、１日後回復率用の閾値（例えば２０％）以下か否かを判断する（ステップ１２０１）。
【０１１６】
ステップ１２０１の判断結果が肯定の場合、回復が比較的遅い地域にバックアップサイトが存在するという定義がされているということである。このため、各バックアップ対象オブジェクトについて、メタデータ及びオブジェクトデータの各々について、レプリケーションバックアップが採用される。具体的には、例えば、バックアップ決定プログラム２０８は、メタデータ及びオブジェクトデータの各々について、１０個の複製データを生成することを決定する（ステップ１２０５）。１０個の複製データは、１以上の複製データの一例である。複製データ数が多い程、少しでも多くのバックアップサーバ１０７が回復することで、リストアできる確率が高まる。
【０１１７】
ステップ１２０１の判断結果が否定の場合、バックアップ決定プログラム２０８は、３日後回復率１１０２の値が、３日後回復率用の閾値（例えば５０％）以下か否かを判断する（ステップ１２０２）。
【０１１８】
ステップ１２０２の判断結果が肯定の場合、回復率が少し悪いため、バックアップ決定プログラム２０８は、メタデータについてはレプリケーションバックアップ（１０個の複製データを生成）を決定し、オブジェクトデータについてはＥＣ冗長度Ｖ＝３（ｐ（断片データ数）＝２、ｑ（パリティデータ数）＝４）のＥＣ分割バックアップを決定する（ステップ１２０４）。
【０１１９】
ステップ１２０２の判断結果が否定の場合、回復が比較的早い地域にバックアップサイトが存在するという定義がされているということである。バックアップ決定プログラム２０８は、メタデータについてはレプリケーションバックアップ（５個の複製データを生成）を決定し、オブジェクトデータについてはＥＣ冗長度Ｖ＝２（ｐ＝４、ｑ＝４）のＥＣ分割バックアップを決定する（ステップ１２０３）。
【０１２０】
ステップ１２０３〜１２０５において決定されたバックアップ方式及びバックアップ冗長度は、バックアップ決定プログラム２０８により、バックアップ管理テーブル３０８に登録される。そのバックアップ方式及びバックアップ冗長度に基づいてリストア処理が行われる。
【０１２１】
以上、実施例３によれば、バックアップサイト全体の復旧状況（災害発生からの経過時間と回復率との関係）を想定してバックアップ方式やバックアップ冗長度を変えることで、バックアップ容量を抑えたり、リストア性能を上げたりといった、効率的なバックアップ及びリストアが期待できる。
【０１２２】
なお、実施例３は、上述したように実施例１及び２のうちの少なくとも１つとの組合せが可能である。例えば、１日後回復率１１０１の値が２０％以下であり、且つ、対象データのサイズが１ＭＢ未満の場合、レプリケーションバックアップが採用されてもよい。また、例えば、１日後回復率１１０１の値が２０％以下であっても、対象データのサイズが１ＭＢ以上なら、ＥＣ分割バックアップが採用されてもよい。
【０１２３】
以上、幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。
【符号の説明】
【０１２４】
１０１：クライアント、１０３：正サイト、１０５：ファイルサーバ、１０６：バックアップサイト、１０７：バックアップサーバ、１０８：リカバリサイト
【図１】
0006671708.tif 000002
【図２】
0006671708.tif 000003
【図３】
0006671708.tif 000004
【図４】
0006671708.tif 000005
【図５】
0006671708.tif 000006
【図６】
0006671708.tif 000007
【図７】
0006671708.tif 000008
【図８】
0006671708.tif 000009
【図９】
0006671708.tif 000010
【図１０】
0006671708.tif 000011
【図１１】
0006671708.tif 000012
【図１２】
0006671708.tif 000013