以下、図面に基づいて本発明の実施の形態を説明する。図1は、本発明の実施の形態におけるバックアップリストアシステムの構成例を示す図である。
同図のバックアップリストアシステム1は、一台以上の対象サーバ30、イメージ管理サーバ20、及びバックアップリストアサーバ10等を含む。各サーバは、例えば、LAN(Local Area Network)又はインターネット等のネットワークを介して接続されている。当該ネットワークの一部又は全部において、無線通信が行われてもよい。
各対象サーバ30は、そのソフトウェア資源に関してバックアップ元又はリストア先とされるコンピュータである。対象サーバ30の一例として、各種の業務サーバ、Webサーバ、又はデータベースサーバ等が挙げられる。また、ソフトウェア資源は、例えば、プログラム、プログラムが使用又は生成するデータ等、あらゆるソフトウェアを含む。
イメージ管理サーバ20は、対象サーバ30のソフトウェア資源のバックアップ先とされる記憶装置を備えたコンピュータである。本実施の形態において、一つの対象サーバ30のソフトウェア資源に関するバックアップを「バックアップイメージ」と呼ぶ。したがって、イメージ管理サーバ20は、対象サーバ30ごとに、バックアップイメージを管理する。
バックアップリストアサーバ10は、対象サーバ30のソフトウェア資源に関して、イメージ管理サーバ20へのバックアップ、又はイメージ管理サーバ20から対象サーバ30へのリストア等に関する処理を制御するコンピュータである。
図2は、本発明の実施の形態におけるバックアップリストアサーバのハードウェア構成例を示す図である。図2のバックアップリストアサーバ10は、それぞれバスBで相互に接続されているドライブ装置100、補助記憶装置102、メモリ装置103、CPU104、及びインタフェース装置105等を有する。
バックアップリストアサーバ10での処理を実現するプログラムは、記録媒体101によって提供される。プログラムを記録した記録媒体101がドライブ装置100にセットされると、プログラムが記録媒体101からドライブ装置100を介して補助記憶装置102にインストールされる。但し、プログラムのインストールは必ずしも記録媒体101より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置102は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
メモリ装置103は、プログラムの起動指示があった場合に、補助記憶装置102からプログラムを読み出して格納する。CPU104は、メモリ装置103に格納されたプログラムに従ってバックアップリストアサーバ10に係る機能を実行する。インタフェース装置105は、ネットワークに接続するためのインタフェースとして用いられる。
なお、記録媒体101の一例としては、CD−ROM、DVDディスク、又はUSBメモリ等の可搬型の記録媒体が挙げられる。また、補助記憶装置102の一例としては、HDD(Hard Disk Drive)又はフラッシュメモリ等が挙げられる。記録媒体101及び補助記憶装置102のいずれについても、コンピュータ読み取り可能な記録媒体に相当する。
図3は、バックアップリストアサーバ及びイメージ管理サーバの機能構成例を示す図である。同図において、イメージ管理サーバ20は、バックアップ部21及びリストア部22等を有する。これら各部は、イメージ管理サーバ20にインストールされたプログラムが、イメージ管理サーバ20のCPUに実行させる処理により実現される。イメージ管理サーバ20は、また、バックアップイメージ記憶部23を有する。バックアップイメージ記憶部23は、例えば、イメージ管理サーバ20の補助記憶装置等を用いて実現可能である。
バックアップ部21は、バックアップリストアサーバ10からの指示に応じ、対象サーバ30のソフトウェア資源のバックアップ処理を行う。すなわち、バックアップ部21は、対象サーバ30のソフトウェア資源のバックアップイメージをバックアップイメージ記憶部23に記憶する。
リストア部22は、バックアップリストアサーバ10からの指示に応じ、バックアップイメージ記憶部23に記憶されているバックアップイメージに関して、リストア処理を実行する。
バックアップリストアサーバ10は、バックアップ制御部11及びリストア制御部12等を有する。これら各部は、バックアップリストアサーバ10にインストールされたプログラムがCPU104に実行させる処理により実現される。
バックアップ制御部11は、バックアップ処理の開始指示に応じ、バックアップ対象の対象サーバ30におけるソフトウェア資源のバックアップイメージを、イメージ管理サーバ20に記憶させるための処理(バックアップ処理)を制御する。リストア制御部12は、リストア処理の開始指示に応じ、イメージ管理サーバ20に記憶されているバックアップイメージを、リストア先の対象サーバ30にリストアするための処理(リストア処理)を制御する。
同図において、リストア制御部12は、送信データ特定部121、組み合わせ部122、送信順決定部123、及び送信制御部124等を含む。
送信データ特定部121は、リストア対象として指定されたバックアップイメージに含まれる単位データを、リストア処理におけるイメージ管理サーバ20からリストア先の対象サーバ30へ送信(転送)対象として特定する。この際、同一の単位データがリストア対象の複数のバックアップイメージに重複して含まれている場合、送信データ特定部121は、斯かる重複を排除して送信対象とする単位データを特定する。すなわち、一回のリストア処理において、複数のバックアップイメージがリストア対象として指定されうる。この場合、各バックアップイメージのリストア先の対象サーバ30は、相互に異なる。
単位データとは、バックアップ対象とされるソフトウェア資源を構成する、所定の単位のデータをいう。単位データは、例えば、ファイル単位であってもよいし、対象サーバ30においてソフトウェア資源を記憶する補助記憶装置のディスクイメージを所定のサイズで分割した単位であってもよい。いずれの場合であっても、単位データの集合が、バックアップ対象のソフトウェア資源(バックアップイメージ)となる。
組み合わせ部122は、送信対象として特定され単位データの中で、リストア対象として指定された相互に異なるバックアップイメージに含まれる単位データ同士を一組に組み合わせる。各リストア先に同時に(並列的)に送信を行うと効率的であると考えられるデータ同士が一組に組み合わされる。
送信順決定部123は、組み合わせ部122によって生成される組単位で、リストア先への送信順を決定する。基本的に、送信順決定部123は、リストア対象のバックアップイメージにのみ含まれる単位データよりも、リストア対象外のバックアップイメージにも含まれる単位データが後になるように各組の送信順を決定する。
送信制御部124は、送信順決定部123によって決定された送信順に従って、リストア対象のバックアップイメージに含まれる各単位データに関して、イメージ管理サーバ20から対象サーバ30への送信(転送)を制御する。
以下、バックアップリストアシステム1において実行される処理手順について説明する。まず、バックアップ時の処理(バックアップ処理)について説明する。
図4は、バックアップ処理の処理手順の一例を説明するためのフローチャートである。なお、同図は、一つの対象サーバ30に関するバックアップ処理の一例を示す。
ステップS101において、バックアップリストアサーバ10のバックアップ制御部11は、バックアップの開始指示を受け付ける。バックアップの開始指示は、ユーザによってキーボード又はマウス等の入力装置を介して手動で入力されてもよいし、スケジューリング機能等を用いて自動的に入力されてもよい。なお、バックアップの開始指示には、対象サーバ30の識別名(以下、「サーバ名」という。)、及びバックアップ先のバックアップイメージの名前(イメージ名)等が指定される。但し、イメージ名は、対象サーバ30のサーバ名に基づいて、バックアップ制御部11等によって自動的に生成されてもよい。この場合、イメージ名はバックアップの開始指示において指定されなくてもよい
続いて、バックアップ制御部11は、バックアップ対象の対象サーバ30に対して、イメージ管理サーバ20への一つの単位データの送信を要求する(S102)。当該要求には、イメージ名も指定される。
イメージ管理サーバ20に未だ転送されていない単位データが残っている場合(S103でYes)、対象サーバ30は、未転送の単位データのうちの一つと、指定されたイメージ名とをイメージ管理サーバ20に転送(送信)する(S104)。なお、当該単位データと共に、対象サーバ30のソフトウェア資源における当該単位データの位置情報(例えば、ファイルパス名又はディスクイメージ上のアドレス等)及びイメージ名等もイメージ管理サーバ20に転送される。
続いて、イメージ管理サーバ20のバックアップ部21は、対象サーバ30より転送された単位データ等を含むファイル(以下、「単位データ管理ファイル」という。)を生成し、生成された単位データ管理ファイルをバックアップイメージ記憶部23に保存(記憶)する(S105)。
図5は、単位データ管理ファイルの構成例を示す図である。同図において、単位データ管理ファイルは、一以上のimange_info属性、一つのhash属性、及び一つのdata属性等を含む。
「data=」で始まる行は、data属性である。data属性の値は、単位データの実体である。例えば、単位データが圧縮されてエンコードされたものが、data属性の値として記録される。単位データ管理ファイルは、単位データごと(厳密には、内容が異なる単位データごと)に生成される。したがって、一つの単位データ管理ファイルのdata属性の値として記録される単位データは、一つである。
「hash=」で始まる行は、hash属性である。hash属性の値は、単位データのハッシュ値である。当該ハッシュ値は、各単位データの識別子として用いられる。なお、単位データごとに異なる値が得られる特徴量又は物理量であれば、各単位データの他の特徴量又は物理量が、ハッシュ値の代わりに用いられてもよい。
「image_info=」で始まる行は、image_info属性である。一つのimage_info属性は、単位データ管理ファイルに係る単位データと、当該単位データを含む一つのバックアップイメージとの関連情報であるといえる。一つのimage_info属性の値は、イメージ名、イメージ内重複度、及び一以上のデータ位置等を含む。イメージ名は、単位データが含まれているバックアップイメージの名前であり、単位データと共に受信されたイメージ名が記録される。
イメージ内重複度は、イメージ名に係るバックアップイメージ中における、単位データの重複数である。すなわち、対象サーバ30においてバックアップ対象とされているソフトウェア資源(すなわち、バックアップイメージ)において、内容が一致する単位データがN個有る場合、Nの値がイメージ内重複度となる。データ位置は、当該単位データ管理ファイルに係る単位データに関して、イメージ名に係るバックアップイメージにおける位置情報(例えば、ファイルパス名又はディスクイメージ上のアドレス等)である。データ位置は、イメージ内重複度の分だけ記録される。
なお、image_info属性は、同一の単位データを含むバックアップイメージごとに記録される。したがって、複数のバックアップイメージに含まれている単位データに関しては、当該バックアップイメージの数だけimage_info属性が記録される。
ここで、対象サーバ30、バックアップイメージ、及び単位データ管理ファイルの関係について、図6を参照した改めて説明する。
図6は、対象サーバ、バックアップイメージ、及び単位データ管理ファイルの関係の一例を説明するための図である。
同図において、対象サーバ30とバックアップイメージとの対応関係は、一対一である。一対一の対応関係は、各対象サーバ30に関して、常に最新のバックアップイメージのみが管理される形態に対応する。一つの対象サーバ30に関して、バックアップ処理が複数回実行された場合、複数世代(複数バージョン)のバックアップイメージが生成される場合は、バックアップイメージとの対応関係は、一対多となる。
一方、バックアップイメージと単位データ管理ファイルとの対応関係は、多対多である。すなわち、バックアップイメージb1は、単位データ管理ファイルFa、Fb、及びFcと関係を有する。バックアップイメージb2は、単位データ管理ファイルFc及びFdと関係を有する。ここで、単位データ管理ファイルFcは、バックアップイメージb1及びb2の双方と関連を有する。これは、単位データ管理ファイルFcに対応する単位データが、対象サーバ30a及び30bの双方のソフトウェア資源に含まれるからである。
このような関係を有することにより、バックアップイメージにおいて、内容が相互に一致する単位データが重複して管理されることが回避される。その結果、バックアップイメージ記憶部23における記憶容量の消費を削減することができる。なお、同図では、異なる対象サーバ30のバックアップイメージ間において単位データが共有される例が示されているが、同一の対象サーバ30に関して複数世代のバックアップイメージが生成される場合は、当該世代間において、重複する単位データは共有される。また、バックアップイメージは、それ自体がファイル又はデータ等の実体的な存在でなくてもよい。すなわち、バックアップイメージは、バックアップごとの単位データの集合を示す抽象的な存在又は概念として把握されてもよい。
ステップS102〜S105は、対象サーバ30のソフトウェア資源において、バックアップ対象とされている部分(ソフトウェア資源の全部でもよい。)を構成する全ての単位データがイメージ管理サーバ20に転送されるまで繰り返される(S103でNo)。
続いて、バックアップ処理(図4)における、各サーバの相互作用(やりとり)に関して、更に詳しく説明する。
図7は、バックアップ処理における各サーバの相互作用の一例を説明するためのシーケンス図である。なお、同図において、括弧内の符号は、図4において対応するステップのステップ番号を示す。
バックアップの開始指示に応じ、バックアップリストアサーバ10のバックアップ制御部11は、バックアップ対象として指定された対象サーバ30に対して、一つの単位データのハッシュ値の送信を要求する(S111)。当該要求に応じ、対象サーバ30は、未転送の単位データのうちの一つ(以下、「対象データ」という。)のハッシュ値と、対象データの位置情報とをバックアップリストアサーバ10に返信する(S112)。
続いて、バックアップ制御部11は、当該ハッシュ値に対応する単位データの存在確認要求をイメージ管理サーバ20に送信する(S113)。当該要求に応じ、イメージ管理サーバ20のバックアップ部21は、バックアップイメージ記憶部23において、hash属性の値として当該ハッシュ値が記録されている単位データ管理ファイルの有無を確認する。すなわち、対象データと同一の単位データが、既存のバックアップイメージ内に存在するか否かが判定される。バックアップ部21は、該判定結果をバックアップリストアサーバ10に返信する(S114)。
イメージ管理サーバ20からの判定結果が、当該ハッシュ値に対応する単位データが存在しないことを示す場合、バックアップリストアサーバ10のバックアップ制御部11は、対象サーバ30に対して、対象データに関して、イメージ管理サーバ20への送信を要求する(S115)。当該要求には、当該ハッシュ値と、バックアップの開始指示において指定された、バックアップイメージのイメージ名とが指定される。
対象サーバ30は、当該要求に応じ、対象データ及びその位置情報と、イメージ名とをイメージ管理サーバ20に送信する(S116)。イメージ管理サーバ20のバックアップ部21は、イメージ名、対象データ(の実体)、ハッシュ値、及び位置情報等を含む単位データ管理ファイルを生成し、当該単位データ管理ファイルをバックアップイメージ記憶部23に記憶(保存)する。続いて、バックアップ部21は、単位データの保存が完了した旨をバックアップリストアサーバ10に送信する(S117)。
一方、イメージ管理サーバ20からの判定結果が、当該ハッシュ値に対応する単位データが存在することを示す場合、バックアップリストアサーバ10のバックアップ制御部11は、イメージ名、対象データのハッシュ値、及び位置情報を指定して、単位データ管理ファイルの更新要求をイメージ管理サーバ20に送信する(S118)。当該要求に応じ、イメージ管理サーバ20のバックアップ部21は、当該ハッシュ値と一致するハッシュ値がhash属性の値として記録されている単位データ管理ファイルを更新する。具体的には、当該単位データ管理ファイルに、指定されたイメージ名を含むimage_info属性が無い場合、当該イメージ名を含むimage_info属性が追加される。当該image_info属性のイメージ内重複度には1が記録され、データ位置には受信された位置情報が記録される。一方、当該単位データ管理ファイルに、指定されたイメージ名を含むimage_info属性が有る場合、当該image_info属性が更新対象とされる。すなわち、当該image_info属性のイメージ内重複度には1が加算され、データ位置には受信された位置情報が追加される。
続いて、バックアップ部21は、単位データ管理ファイルの更新が完了した旨をバックアップリストアサーバ10に返信する(S119)。
なお、図7の処理は、一つの単位データに関する処理である。したがって、バックアップ対象とされる単位データの数だけ図7の処理が繰り返される。
続いて、図4のステップS105(すなわち、図7のステップS116に応じてイメージ管理サーバ20が実行する処理)の詳細について説明する。
図8は、単位データの保存処理の処理手順の一例を説明するためのフローチャートである。
イメージ名、単位データ、及びその位置情報が受信されると、バックアップ部21は、当該単位データのハッシュ値を算出する(S121)。続いて、バックアップ部21は、当該ハッシュ値と一致するハッシュ値がhash属性の値として記録されている単位データ管理ファイルをバックアップイメージ記憶部23より検索する(S122)。
該当する単位データ管理ファイルが無い場合(S122でNo)、バックアップ部21は、新たに単位データ管理ファイルを生成し、当該単位データ管理ファイルをバックアップイメージ記憶部23に記憶する(S123)。当該単位データ管理ファイルのhash属性には、ステップS121において算出されたハッシュ値が記録される。当該単位データ管理ファイルのdata属性には、受信された単位データの実体が記録される。
続いて、バックアップ部21は、当該単位データ管理ファイルにimage_info属性を一つ追加する(S124)。当該image_info属性のイメージ名には、受信されたイメージ名が記録される。また、イメージ内重複度には1が記録される。更に、データ位置には、単位データと共に受信された位置情報が記録される。
一方、該当する単位データ管理ファイルが有る場合(S122でYes)、バックアップ部21は、受信されたイメージ名を含むimage_info属性が、当該単位データ管理ファイルに含まれているか否かを判定する(S125)。該当するimage_info属性が当該単位データ管理ファイルに含まれている場合(S125でYes)、バックアップ部21は、当該image_info属性のイメージ内重複度に1を加算する(S126)。続いて、バックアップ部21は、当該image_info属性のデータ位置に、単位データと共に受信された位置情報を追加する(S127)。
一方、該当するimage_info属性が無い場合(S125でNo)、バックアップ部21は、当該単位データ管理ファイルに対してステップS124を実行する。
続いて、バックアップイメージを対象サーバ30にリストア(復元)する際の処理手順について説明する。
図9は、リストア処理においてバックアップリストアサーバが実行する処理手順の概要の一例を説明するためのフローチャートである。
ステップS201において、送信データ特定部121は、リストアの開始指示を受け付ける。リストアの開始指示には、例えば、リストア先の対象サーバ30のサーバ名ごとに、リストア対象のバックアップイメージのイメージ名が指定される。すなわち、リストア先及びリストア対象は、同時に複数指定されてもよい。なお、リストア先の対象サーバ30ごとに、リストア対象のバックアップイメージは異なることとする。
続いて、送信データ特定部121は、リストア対象のバックアップイメージに含まれる単位データの一覧情報(以下、「リストア対象一覧情報」という。)をイメージ管理サーバ20より取得する(S202)。より詳しくは、送信データ特定部121は、リストアの開始指示に指定されたイメージ名を指定して、リストア対象一覧情報の取得要求をイメージ管理サーバ20に送信する。イメージ管理サーバ20のリストア部22は、当該取得要求に応じ、指定された各イメージ名のいずれかを含むimage_info属性を含む単位データ管理ファイルをバックアップイメージ記憶部23より取得する。例えば、図6におけるバックアップイメージb1及びバックアップイメージb2がリストア対象である場合、単位データ管理ファイルFa、Fb、Fc、及びFcが取得される。リストア部22は、取得された各単位データ管理ファイルに記録されている情報に基づいて、例えば、図10に示されるようなリストア対象一覧情報を生成する。
図10は、リストア対象一覧情報の構成例を示す図である。同図において、リストア対象一覧情報L1は、単位データ管理ファイル(すなわち、単位データ)ごとに、ハッシュ値及び包含イメージ名を含み、包含イメージ名ごとにイメージ内重複度等を含む。
ハッシュ値は、単位データ管理ファイルのhash属性に記録されているハッシュ値であり、単位データの識別子として用いられる。なお、ハッシュ値は、バイナリデータであるが、同図では、便宜上、「000x」といった形式の文字列によって表現されている。包含イメージ名は、ハッシュ値に係る単位データを含むバックアップイメージのイメージ名である。すなわち、包含イメージ名は、当該単位データ管理ファイルの全てのimage_info属性のイメージ名の一覧である。イメージ内重複度は、各イメージ名に係るimage_info属性におけるイメージ内重複度の値である。
すなわち、リストア対象一覧情報L1は、取得された各単位データ管理ファイルから、ハッシュ値と、各image_info属性のイメージ名及びイメージ内重複度とが抽出された結果である。単位データ管理ファイルは、同一の単位データに関して一つであるため、リストア対象一覧情報L1には、同一の単位データに関して重複が排除された状態で、各単位データに関する情報が含まれている。リストア対象のバックアップイメージが複数指定された場合、リストア対象一覧情報L1は、当該複数のバックアップイメージのいずれかに含まれる単位データの一覧情報である。リストア対象一覧情報L1によれば、リストア対象の全ての単位データを知ることができる。また、各単位データがいずれのバックアップイメージに含まれているか、及び各単位データを含むバックアップイメージにおける各単位データのイメージ内重複度を知ることができる。
リストア部22は、斯かるリストア対象一覧情報L1をバックアップリストアサーバ10に返信する。その結果、バックアップリストアサーバ10の送信データ特定部121は、リストア対象一覧情報L1を取得することができる。
ステップS202に続いてステップS203に進み、組み合わせ部122は、リストア対象一覧情報L1に基づいて、同時に送信すると効率的であると考えられる単位データ同士を判定し、当該単位データ同士が組み合わされた組(グループ)を生成する。その結果、リストア対象の複数の単位データは、複数の組(グループ)に分類される。各組には、一以上の単位データが含まれる。以下における「組」とは、ステップS203において生成された組をいう。なお、「同時に送信すると効率的」における「同時」とは、厳密な意味での同時でなくてよい。すなわち、同時に送信するとは、厳密に並列的に送信することではなく、擬似的に並列的であってもよい。具体的には、厳密には直列的に送信されるが、組単位で見た場合、同時に送信されるように見えることであってもよい。なお、分類結果は、組の一覧情報である組み合わせリストに記録される。組み合わせリストは、例えば、メモリ装置103に記憶される。
図11は、組み合わせリストの一例を示す図である。同図の組み合わせリストL2において、一つの行が一つの組を示す。すなわち、同図では、ハッシュ値が「0001」である単位データ(以下、「単位データ0001」という。他の単位データに関しても同様の命名規則に従う。)が一つの組を形成し、単位データ0002及び単位データ0003が一つの組を形成する例が示されている。
続いて、送信順決定部123は、組み合わせリストL2に含まれている各組の送信順を決定し、送信順を管理するための一覧情報(以下、「送信リスト」という。)を生成する(S204)。送信リストは、例えば、メモリ装置103に記憶される。各組の送信順とは、各組に含まれる単位データに関して、イメージ管理サーバ20からリストア先の対象サーバ30への組単位の送信順(転送順)である。すなわち、リストア対象の単位データの送信順は、組単位で決定される。そもそも、組は、同時に送信するものとして組み合わされた一以上の単位データの集合だからである。
図12は、送信リストの一例を示す図である。同図において、送信リストL3は、送信順の組毎に、当該組に属する単位データのハッシュ値、優先度、及び送信状態等を含む。
優先度は、送信順に関する優先度であり、送信順を決定する際に組毎に算出される。送信状態は、リストア処理において単位データが送信済であるか否かを示す情報である。「未」は、いずれの対象サーバ30に対しても(いずれのバックアップイメージに関しても)送信されていないことを示す。いずれかの対象サーバ30に送信された場合、当該対象サーバ30に対するリストア対象であるバックアップイメージのイメージ名が、送信状態に記録される。
続いて、送信制御部124は、送信リストの上位から順(すなわち、決定された送信順)に、一つの組を送信対象として選択する(S205)。続いて、送信制御部124は、当該組に属する各単位データに関して、送信先の対象サーバ30を判定する(S206)。具体的には、当該各単位データが属する、リストア対象のバックアップイメージのイメージ名を、リストア対象として指定されたイメージ名及びリストア対象一覧情報L1(図10)に基づいて特定する。例えば、リストア対象として指定されたバックアップイメージのイメージ名が「イメージA」及び「イメージB」である場合、単位データ0001に関しては、「イメージA」及び「イメージB」が特定される。単位データ0002に関しては、「イメージA」が特定される。単位データ0003に関しては、「イメージB」が特定される。或る単位データに関して特定されたイメージ名に対してリストア先として指定されているサーバ名が、当該単位データの送信先の対象サーバ30のサーバ名である。
ステップS206の実行の結果、送信制御部124は、図13に示されるような転送情報を生成する。
図13は、転送情報の構成例を示す図である。同図において、転送情報L4は、単位データごとに、ハッシュ値と、リストア先(送信先)の対象サーバ30のサーバ名、及びリストア対象のバックアップイメージ名とを含む。複数のリストア先に送信される単位データに関しては、サーバ名及びイメージ名の組が複数記録される。
続いて、送信制御部124は、転送情報L4をイメージ管理サーバ20に送信し、転送情報L4に従った単位データの送信の実行をイメージ管理サーバ20へ要求する(S207)。イメージ管理サーバ20のリストア部22は、転送情報L4に従って、対象サーバ30への単位データの送信を行う。送信制御部124は、単位データを受信した対象サーバ30から単位データを受信した旨の通知を受信すると、送信リストL3を更新する(S208)。すなわち、送信リストL3における、対象サーバ30において受信された単位データの送信状態に、当該対象サーバ30に対するリストア対象であるバックアップイメージのイメージ名が追加される。
続いて、送信制御部124は、送信リストL3を参照して、未送信の組の有無を判定する(S209)。未送信の組が有り(S209でYes)、かつ、ステップS207等の実行中において、新たなリストアの開始指示が無い場合(S210でNo)、未送信の組に関してステップS205以降が繰り返される。
一方、未送信の組が有り(S209でYes)、かつ、ステップS207等の実行中に新たなリストアの開始指示が有った場合(S210でNo)、改めてステップS202以降が実行される。ステップS207等の実行中に新たなリストアの開始指示が有った場合とは、リストア処理中に、別の対象サーバ30に関してリストアの開始指示が有った場合である。
全ての組に関して送信が終了すると(208でNo)、図9の処理は終了する。
続いて、リストア処理(図8)における、各サーバの相互作用(やりとり)に関して、更に詳しく説明する。
図14は、リストア処理における各サーバの相互作用の一例を説明するためのシーケンス図である。なお、同図において、括弧内の符号は、図9において対応するステップのステップ番号を示す。
ステップS221において、バックアップリストアサーバ10の送信データ特定部121は、リストア対象一覧情報L1の取得要求をイメージ管理サーバ20に送信する。当該取得要求に応じ、イメージ管理サーバ20のリストア部22は、図10において説明したような、リストア対象一覧情報L1を返信する(S222)。
その後、バックアップリストアサーバ10では、図9のステップS203〜S206において説明した処理が実行される。
続いて、バックアップリストアサーバ10の送信制御部124は、転送情報L4(図13)をイメージ管理サーバ20に送信し、転送情報L4に従った単位データの送信の実行をイメージ管理サーバ20へ要求する(S223)。イメージ管理サーバ20のリストア部22は、転送情報L4に含まれている各ハッシュ値に対応する単位データをそれぞれの単位データ管理ファイルより取得する。リストア部22は、取得された各単位データを、転送情報L4において指定されているサーバ名に係る対象サーバ30に送信する(S224)。この際、単位データと共に、当該単位データの位置情報も対象サーバ30に送信される。当該位置情報は、当該単位データに対応する単位データ管理ファイルにおいて、送信先の対象サーバ30に関してリストア対象とされているバックアップイメージのイメージ名を含むimage_info属性におけるデータ位置によって特定される。該当するimage_info属性が複数のデータ位置を含む場合、複数の位置情報が送信される。また、送信先(リストア先)が複数である単位データ(転送情報L4において、サーバ名及びイメージ名の組が複数記録されている単位データ)に関しては、リストア部22は、マルチキャストによって送信を実行する。マルチキャストが利用されることにより、ネットワーク上を流れるパケット量を削減することができる。なお、対象サーバ30の組み合わせごとに、予めマルチキャストグループが定義されていればよい。リストア部22は、送信対象の単位データの送信先の組み合わせに該当するマルチキャストグループに対してマルチキャストによる送信を行えばよい。マルチキャストの場合、位置情報は、送信先の対象サーバ30ごとに指定される。また、転送情報L4に含まれる各単位データの送信順(すなわち、一つの組内の送信順)は、所定のものに限定されない。
単位データを受信した、リストア先の各対象サーバ30は、単位データと共に受信された位置情報の示す位置へ、当該単位データを保存(復元)する。複数の位置情報が指定されている場合、当該単位データは、複数の位置に保存される。単位データの復元に成功した対象サーバ30は、単位データの受信通知を、バックアップリストアサーバ10に送信する(S225)。この際、受信された単位データのハッシュ値が、受信通知に指定される。
バックアップリストアサーバ10において、受信通知が受信されると、送信制御部124は、受信通知に指定されているハッシュ値と、受信通知の送信元の対象サーバ30のサーバ名とに基づいて、送信リストL3を更新する。すなわち、送信リストL3の当該ハッシュ値に係るレコード(行)の送信状態に、当該サーバ名に対するリストア対象とされているバックアップイメージのイメージ名が追加される。その結果、送信リストL3は、例えば、図15に示されるように更新される。
図15は、送信リストの更新例を示す図である。同図では、一番目の組に属する単位データについて、イメージ名がイメージA又はイメージBであるバックアップイメージに関して送信が完了したことが示されている。換言すれば、当該単位データに関して、イメージ名がイメージA又はイメージBであるバックアップイメージのリストア先の対象サーバ30に対する送信が完了したことが示されている。
続いて、図9のステップS203の詳細について説明する。図16は、リストア対象の単位データについて同時に送信する組の生成処理の処理手順の一例を説明するためのフローチャートである。
ステップS301において、組み合わせ部122は、新たなリストアが開始された後であるか否かによって処理を分岐させる。すなわち、図16の処理(すなわち、図9のステップS203)が、図9のステップS210でYesであると判定された後に実行される場合であるか否かによって、処理が分岐する。
新たなリストアが開始された後である場合(S301でYes)、組み合わせ部122は、新たなリストアに関するリストア先の対象サーバ30のサーバ名、及びリストア対象のバックアップイメージのイメージ名等を、既存のリストア対象一覧情報L1(図10)に反映させるための処理を実行する(S302)。その結果、リストア対象一覧情報L1が更新される。なお、ステップS302の詳細については後述される。
新たなリストアが開始された後で無い場合(S301でNo)、又はステップS302に続いて、組み合わせ部122は、リストア対象一覧情報L1に含まれている全ての単位データに関して、ステップS304〜S309の処理が完了したか否かを判定する(S303)。すなわち、ステップS304〜S309は、リストア対象一覧情報L1に含まれる単位データごとのループ処理である。
未処理の単位データが有る場合(S303でNo)、組み合わせ部122は、リストア対象一覧情報L1(図10)に含まれている、一つの単位データを処理対象(以下、「対象データ」という。)として選択する(S304)。なお、ここでは、新たなリストアが開始された後ではない場合、すなわち、図10に示されるリストア対象一覧情報L1に関してステップS222において更新が行われていない場合について説明する。したがって、単位データ0001が対象データとされる。
続いて、組み合わせ部122は、対象データがリストア対象の全てのバックアップイメージ間で重複しているか(すなわち、対象データが当該全てのバックアップ対象に含まれているか)否かを判定する(S305)。ここでは、リストア対象のバックアップイメージは、イメージA及びイメージBであるとする。なお、以下では、イメージ名によって、当該イメージ名に係るバックアップイメージを指す。例えば、イメージAということにより、イメージAをイメージ名とするバックアップイメージを指す。
単位データ0001は、イメージA及びイメージBの双方に含まれている。すなわち、リストア対象一覧情報L1(図10)において、単位データ0001の包含イメージ名には、「イメージA」及び「イメージB」が含まれている。したがって、単位データ0001に関して、ステップS224の判定はYesとなる。
対象データがリストア対象の全てのバックアップイメージにおいて重複している場合(S305でYes)、組み合わせ部122は、対象データを一つの組として、対象データのハッシュ値を組み合わせリストL2(図11)に記録する(S306)。すなわち、当該組は、対象データのみを要素とする組となる。なお、ここでは、組み合わせリストL2の一行目に、単位データ0001のハッシュ値が記録される。
続いて、ステップS303の判定に戻る。図10のリストア対象一覧情報L1には、単位データ0001の他に、単位データ0002及び単位データ0003等が含まれている(S303でNo)。したがって、続いて単位データ0002が処理対象(対象データ)とされる(S304)。単位データ0002は、リストア対象の全てのバックアップイメージ間では重複していない(S305でNo)。すなわち、単位データ0002は、イメージAには含まれているが、イメージBには含まれていない。したがって、単位データ0002に関しては、ステップS307〜S309が実行される。
ステップS307において、組み合わせ部122は、対象データを含むバックアップイメージのうち、リストア対象であるバックアップイメージに関するイメージ内重複度の集合に関して、平均値AVG1及び標準偏差σ1を算出する(S307)。対象データが単位データ0002である場合、図10より明らかなように、対象データを含むバックアップイメージのうち、リストア対象であるバックアップイメージは、イメージAのみである。したがって、イメージAに関するイメージ内重複度(「2」)が、平均値AVG1となる。また、該当するイメージ内重複度の集合の要素数は1であるため、標準偏差σ1は、「0」となる。なお、平均値AVG1の代わりに、対象データを含むバックアップイメージのうち、リストア対象であるバックアップイメージに関するイメージ内重複度の集合の最大値(以下、「最大値M1」という。)が特定されてもよい。この場合、以降の処理では、最大値M1によって平均値AVG1が代替されてもよい。
なお、仮に、イメージCもリストア対象であった場合、単位データ0002に関する平均値AVG1は、イメージAに関するイメージ内重複度(「2」)と、イメージCに関するイメージ内重複度(「1」)との平均値となる。また、標準偏差σ1は、「2」と「1」とを要素とする集合に関する標準偏差となる。
続いて、組み合わせ部122は、対象データを含む全てのバックアップイメージに関するイメージ内重複度の集合に関して、平均値AVG2及び標準偏差σ2を算出する(S307)。対象データが単位データ0002である場合、図10より明らかなように、対象データを含む全てのバックアップイメージは、イメージA及びイメージCである。したがって、イメージAに関するイメージ内重複度(「2」)と「イメージC」に関するイメージ内重複度(「1」)とに関して、平均値AVG2及び標準偏差σ2が算出される。なお、平均値AVG2の代わりに、対象データを含む全てのバックアップイメージに関するイメージ内重複度の集合の最大値(以下、「最大値M2」という。)が特定されてもよい。この場合、以降の処理では、最大値M2によって平均値AVG2が代替されてもよい。
なお、平均値AVG1及び平均値AVG2は、例えば、小数点第1位で四捨五入される。
続いて、組み合わせ部122は、対象データに関して、リストア対象一覧情報L1に含まれているハッシュ値、包含イメージ名、及びイメージ内重複度をイメージ別リストに記録(転記)する(S309)。また、組み合わせ部122は、対象データに関して算出された平均値AVG1、平均値AVG2、標準偏差σ1、及び標準偏差σ2を当該イメージ別リストに記録する。
イメージ別リストとは、リストア対象のバックアップイメージの組み合わせ別に生成されるリストである。例えば、リストア対象のバックアップイメージが、イメージA及びイメージBである場合、その組み合わせとしては、イメージA及びBを含む組み合わせ、イメージAのみの組み合わせ、及びイメージCの組み合わせの3通りある。但し、リストア対象の全てのバックアップイメージを含む組み合わせに関しては、イメージ別リストは生成されない。リストア対象の全てのバックアップイメージに含まれる単位データは、ステップS307及びS308の処理対象とされないからである。したがって、ここでは、イメージAに関するイメージ別リストと、イメージBに関するイメージ別リストとが生成される。単位データ0002は、イメージAに含まれる。したがって、単位データ0002に関する情報は、イメージAに関するイメージ別リストに記録される。
図17は、イメージAに関するイメージ別リストの一例を示す図である。同図に示されるイメージ別リストLAには、単位データ0002のハッシュ値、包含イメージ名、イメージ内重複度、平均値AVG1、平均値AVG2、標準偏差σ1、及び標準偏差σ2等が記録されている。
なお、仮に、イメージA、B、及びCがリストア対象である場合、イメージA、イメージB、イメージC、イメージA及びB、イメージA及びC、並びにイメージB及びCの6通りのイメージ別リストが生成される。
続いて、ステップS303の判定に戻る。図10のリストア対象一覧情報L1には、単位データ0003等が更に含まれている(S303でNo)。したがって、続いて単位データ0003が処理対象(対象データ)とされる(S304)。単位データ0003は、リストア対象の全てのバックアップイメージ間では重複していない(S305でNo)。すなわち、単位データ0003は、イメージBには含まれているが、イメージAには含まれていない。したがって、単位データ0003に関しては、ステップS307〜S309が実行される。単位データ0003は、リストア対象のバックアップイメージのうち、イメージBにのみ含まれる。したがって、単位データ0003のハッシュ値、包含イメージ名、イメージ内重複度、平均値AVG1、平均値AVG2、標準偏差σ1、及び標準偏差σ2等は、イメージBに関するイメージ別リストに記録される。
図18は、イメージBに関するイメージ別リストの一例を示す図である。同図に示されるイメージ別リストLAには、単位データ0003の、ハッシュ値、包含イメージ名、イメージ内重複度、平均値AVG1、平均値AVG2、標準偏差σ1、及び標準偏差σ2等が記録されている。
なお、単位データ0003を含むバックアップイメージは、イメージBの一つだけである。このように、一つのバックアップイメージにのみ含まれる単位データに関しては、平均値AVG2及び標準偏差σ2は算出されない。
リストア対象一覧情報L1に含まれる全ての単位データに関してステップS304〜S309に関する処理の実行が完了すると(S303でYes)、組み合わせ部122は、空でないイメージ別リストの有無を判定する(S310)。上記したように、本実施の形態では、イメージ別リストLAには単位データ0002に関する情報が記録され、イメージ別リストLBには、単位データ0003に関する情報が記録されている。すなわち、いずれのイメージ別リストも空ではない。したがって、最初にステップS310が実行される場合の判定結果はYesとなる。
空でないイメージ別リストが有る場合(S310でYes)、組み合わせ部122は、空でないイメージ別リストのうちの一つを処理対象(以下、「対象イメージ別リスト」という。)として選択する(S311)。ここでは、イメージ別リストLAが選択されたこととする。
続いて、組み合わせ部122は、対象イメージ別リストに関して、未処理の単位データの有無を判定する(S312)。未処理とは、ステップS313以降に関して処理対象とされていないことをいう。未処理の単位データが有る場合(S312でYes)、組み合わせ部122は、未処理の一つの単位データを処理対象(以下、「対象データ」という。)とする(S313)。ここでは、イメージ別リストLA(図17)の単位データ0002が対象データとされる。
続いて、組み合わせ部122は、不足分のバックアップイメージに対応するイメージ別リストは空ではないか否かを判定する(S314)。不足分とは、リストア対象の全てのバックアップイメージに対する、対象イメージ別リストが対応するバックアップイメージの不足分をいう。ここで、リストア対象の全てのバックアップイメージは、イメージA及びBである。一方、対象イメージ別リスト(イメージ別リストLA)が対応するバックアップイメージは、イメージAである。したがって、不足分のバックアップイメージは、イメージBである。よって、不足分のバックアップイメージに対応するイメージ別リスト(以下、「不足分イメージ別リスト」という。)は、イメージ別リストLB(図18)である。
不足分イメージ別リストが空でない場合(S314でYes)、組み合わせ部122は、対象データと組み合わせる(同時に送信対象とする)単位データの抽出処理を実行する(S316)。すなわち、単位データ0002と組み合わせる単位データが、イメージ別リストLBから抽出される。抽出されたデータを、以下、「抽出データ」という。
続いて、組み合わせ部122は、対象データと抽出データとを一つの組とし、対象データ及び抽出データのそれぞれのハッシュ値を組み合わせリストL2に記録する(S317)。ここでは、図11の組み合わせリストL2の二行目に、単位データ0002及び単位データ0003のそれぞれのハッシュ値が記録される。すなわち、当該二行目は、単位データ0003が抽出データとされた例に対応する。
続いて、組み合わせ部122は、対象データ及び抽出データに関するレコードを、それぞれが記録されていたイメージ別リストより削除する(S318)。具体的には、単位データ0002に関するレコードが、イメージ別リストLAより削除される。また、単位データ0003に関するレコードが、イメージ別リストLBより削除される。
続いて、対象イメージ別リスト(イメージ別リストLA)が空になるまで(S312でNo)、ステップS313以降が繰り返される。その過程において、不足分イメージ別リストが空となった場合(S314でNo)、組み合わせ部122は、対象データを一つの組として、対象データのハッシュ値を組み合わせリストL2(図11)に記録する(S315)。すなわち、対象データと組み合わせ可能な単位データが無いため、対象データ単独で、組が形成される。なお、対象データは、対象イメージ別リストから削除される。
対象イメージ別リストが空になると(S312でNo)、ステップS310に戻る。空でない他のイメージ別リストが有る場合、当該イメージ別リストのうちの一つが処理対象として選択され(S311)、ステップS312以降が実行される。一方、空でないイメージ別リストが無い場合(S310でNo)、図16の処理は終了する。
図16の終了時において、組み合わせリストL2は、リストア対象のいずれかのバックアップイメージに含まれる全ての単位データのハッシュ値が、単独で、又は他の単位データと組み合わされて、登録された状態となる。
続いて、ステップS316の詳細について説明する。図19は、他の単位データと組み合わされる単位データを不足分イメージ別リストから抽出する処理の処理手順の一例を説明するためのフローチャートである。同図の説明において、「不足分イメージリスト」及び「対象データ」は、図16のステップS316の時点における不足分イメージリスト又は対象データをいう。
ステップS331において、組み合わせ部122は、不足分イメージ別リスト(例えば、イメージ別リストLB(図18))から、対象データ(例えば、イメージ別リストLA(図17)の単位データ0002)の平均値AVG1との差が最小である平均値AVG1を有する単位データを抽出する。具体的には、組み合わせ部122は、単位データ0002の平均値AVG1と、不足分イメージリストに含まれる各単位データの平均値AVG1との差を求め、当該差が最小である単位データを抽出する。
抽出された単位データが一つである場合(S332でNo)、当該単位データが抽出データとされる。すなわち、平均値AVG1の差が小さい単位データが対象データと組み合わされることになる。そうすることにより、一つの組に属する単位データの送信処理に関して、いずれかの単位データの書き込みが完了するまでの待機時間を短縮することができ、リストア処理全体の性能向上を期待することができる。
すなわち、平均値AVG1は、リストア対象のバックアップイメージにおけるイメージ内重複度の平均値である。これは、各バックアップイメージのリストア先の対象サーバ30における書き込み数の平均値を意味する。したがって、対象データの平均値AVG1に近い値を平均値AVG1とする単位データを対象データと組み合わせることにより、対象データと当該単位データを同時に(並列的に)それぞれの対象サーバ30に送信した場合における、各対象サーバ30側での書き込み時間の差が小さくなることを期待できる。その結果、一つの組に属する単位データの送信処理に関して、いずれかの単位データの書き込みが完了するまでの待機時間を短縮することができる。なお、平均値AVG1の代わりに、最大値M1が用いられる場合も同様である。
一方、抽出された単位データが複数である場合(S332でYes)、組み合わせ部122は、抽出された単位データの中から、対象データとの標準偏差σ1の差が最小である単位データを抽出する(S333)。ステップS333において抽出された単位データが一つである場合(S334でNo)、当該単位データが抽出データとされる。すなわち、イメージ内重複度のばらつきが対象データに最も近似している単位データを対象データと組み合わせることにより、一つの組に属する単位データの送信処理に関して、いずれかの単位データの書き込みが完了するまでの待機時間を短縮することができる。具体的には、対象データと当該単位データとが同時に(並列的に)それぞれのリストア先の対象サーバ30に送信された場合に、各対象サーバ30側での書き込み時間の差が小さくなることが期待できる。
一方、抽出された単位データが複数である場合(S334でYes)、組み合わせ部122は、不足分イメージ別リストから、対象データの平均値AVG2との差が、最小である平均値AVG2を有する単位データを抽出する(S335)。抽出された単位データが一つである場合(S336でNo)、当該単位データが抽出データとされる。ここで、平均値AVG2は、現時点ではリストア対象とされていないバックアップイメージをも含むイメージ内重複度の平均値である。それにも拘わらず、平均値AVG2の差が最小である単位データが抽出されるのは、現時点のリストア対象に関するリストア中に、別のバックアップイメージをリストア対象とするリストアが開始された場合を考慮しているからである。具体的には、イメージCをリストア対象として新たにリストアが開始された場合を考慮しているからである。この場合、既にリストア対象となっているバックアップイメージと、新たにリストア対象とされたバックアップイメージとに関して、同時に(並列的に)リストアが行われうる。したがって、平均値AVG2の差が最小である単位データが抽出されることにより、別のバックアップイメージが新たにリストア対象とされた場合であっても、一つの組内における各単位データの送信に関して、各対象サーバ30側での書き込み時間の差が小さくなることを期待することができる。
一方、抽出された単位データが複数である場合(S336でYes)、組み合わせ部122は、不足分イメージリストに含まれる各単位データの中から、|σ1−σ2’|+|σ1’−σ2|の値が最小となる単位データを抽出する(S337)。
ここで、σ1、σ2は、対象データの標準偏差σ1、標準偏差σ2である。一方、σ1’、σ2’は、不足分イメージリストに含まれる各単位データの標準偏差σ1、標準偏差σ2である。|σ1−σ2’|は、対象データに関してリストア対象のバックアップイメージに対するイメージ内重複度のばらつきと、不足分イメージリストに含まれる単位データに関してリストア対象以外のバックアップイメージのリストアが開始された場合のイメージ内重複度のばらつきとの差である。不足分イメージリストに含まれる単位データのうち、当該差が小さい単位データは、当該単位データを含むバックアップイメージに関して新たなリストアが開始された場合であっても、リストアの性能への影響が小さいことを期待できる単位データであるといえる。すなわち、当該単位データは、新たなリストアが開始された場合であっても、当該単位データに関する対象サーバ30側での書き込み回数と、対象データに関する対象サーバ30側での書き込み回数との差が小さくなる可能性が高い単位データであるといえる。したがって、当該差が小さくなる単位データを、対象データと組み合わせるのが性能上の観点より好ましいと考えられる。また、|σ1’−σ2|は、|σ1−σ2’|に関する説明における、対象データと、不足分イメージリストに含まれる単位データとの位置付けを逆にしたものである。したがって、|σ1’−σ2|が小さくなる可能性が高い単位データを、対象データと組み合わせるのが性能上の観点より好ましいと考えられる。よって、ステップ337では、|σ1−σ2’|+|σ1’−σ2|の値が最小となる単位データが、抽出される。
なお、ステップS337を実行しても、複数の単位データが抽出された場合は、何らかの規則に基づいて、一つの単位データが抽出されるようにすればよい。何らかの規則は、所定のものに限定されない。例えば、不足分イメージ別リストにおける上下関係に基づいて、抽出される単位データが決定されてもよいし、他の方法によって、抽出される単位データが決定されてもよい。
続いて、図9のステップS204の詳細について説明する。図20は、各組の送信順の決定処理の処理手順の一例を説明するためのフローチャートである。
ステップS351において、送信順決定部123は、組み合わせリストL2(図11)に含まれている組ごとに、送信順に関する優先度を算出する。当該優先度は、例えば、以下の式(1)を用いて算出される。なお、本実施の形態において、優先度が小さい組の方が、送信順は先とされる。
100×EXIST+10×MULTIPLICITY+DEVIATION ・・・(1)
EXISTの値は、組に属するいずれかの単位データが、リストア対象以外のバックアップイメージに含まれる場合は「1」となり、そうでない場合に「0」となる。例えば、単位データ0001に係る組に関しては、単位データ0001が、リストア対象(イメージA及びB)以外のイメージCに含まれる(図10参照)。また、単位データ0002及び0003に係る組に関しては、単位データ0002が、リストア対象以外のイメージCに含まれる(図10参照)。したがって、いずれの組に関しても、EXISTの値は、「1」となる。
なお、EXISTは、リストア対象以外のバックアップイメージにも含まれる単位データの送信を後にするためのパラメータである。斯かる単位データの送信を後にすることにより、新たなリストアが開始された場合に、当該単位データが再度送信される可能性を小さくすることができる。例えば、単位データ0001は、イメージA、B、及びCに含まれる。仮に、単位データ0001をイメージA又はBに係る対象サーバ30に送信した後に、イメージCに関してリストアが開始された場合、単位データ0001は、再送信されなければならない。したがって、単位データ0001の送信順を後にした方が、単位データ0001を、イメージA、B、及びCに関してマルチキャストで一度に送信できる可能性を高めることができる。
MULTIPLICITYは、組に属する各単位データを含むバックアップイメージのうち、リストア対象以外のバックアップイメージの合計数である。例えば、単位データ0001のみが属する組に関して、MULTIPLICITYの値は、1である。単位データ0001を含むリストア対象以外のバックアップイメージは、イメージCの一つだからである(図10参照)。また、単位データ0002を含むリストア対象以外のバックアップイメージは、イメージCの一つである。更に、単位データ0003を含むリストア対象以外のバックアップイメージは無い。したがって、単位データ0002及び単位データ0003が属する組に関するMULTIPLICITYの値は、1+0=1である。
なお、MULTIPLICITYは、EXISTの値が1である複数の組の送信順を決定するためのパラメータである。すなわち、MULTIPLICITYによって、リストア対象以外のバックアップイメージにより多く含まれる単位データが属する組の送信順が後にされる。リストア対象以外のバックアップイメージにより多く含まれる単位データが属する組の方が、新たなリストアの開始においてリストア対象とされるバックアップイメージに対応する可能性が高いからである。すなわち、リストア対象以外のバックアップイメージにより多く含まれる単位データが属する組の送信順を後にした方が、同一の単位データが重複して送信される可能性を低減することができるからである。
DEVIATIONの値は、以下の式によって算出される。
DEVIATION=1÷|組単位の標準偏差σ1−組単位の標準偏差σ2|
組単位の標準偏差σ1は、上記において単位データごとに算出された標準偏差σ1を、組単位で算出した値である。すなわち、組単位の標準偏差σ1は、組に属する各単位データのリストア対象のバックアップイメージに対するイメージ内重複度の集合に関する標準偏差である。組単位の標準偏差σ2は、上記において単位データごとに算出された標準偏差σ2を、組単位で算出した値である。すなわち、組単位の標準偏差σ2は、組に属する各単位データを含む全てのバックアップイメージに対するイメージ内重複度の集合に関する標準偏差である。
例えば、単位データ0001のみが属する組に関する、組単位の標準偏差σ1及び組単位の標準偏差σ2は、単位データ0001に対する標準偏差σ1又は標準偏差σ2と同じ値である。一方、単位データ0002及び0003が属する組に関する、組単位の標準偏差σ1は、単位データ0002のイメージAに対するイメージ内重複度と、単位データ0003のイメージBに対するイメージ内重複度との集合に関する標準偏差である。また、当該組に関する、組単位の標準偏差σ2は、単位データ0002のイメージAに対するイメージ内重複度及びイメージBに対するイメージ内重複度と、単位データ0003のイメージBに対するイメージ内重複度との集合に関する標準偏差である。
なお、DEVIATIONは、リストア対象のバックアップイメージに関するイメージ内重複度のばらつき(標準偏差)と、リストア対象以外のバックアップイメージをも含んだ場合のイメージ内重複度のばらつき(標準偏差)との差が小さい組の送信順を、当該差が大きい組よりも後にするためのパラメータである。当該差が大きいということは、リストア対象のバックアップイメージに関する対象サーバ30側でのリストア時の書き込み回数と、リストア対象以外のバックアップイメージに関する対象サーバ30側でのリストア時の書き込み回数との差が大きいことになる。この場合、リストア対象外であったバックアップイメージに関するリストアが開始されたとしても、当初からリストア対象であったバックアップイメージに含まれる単位データと、新たにバックアップ対象に追加されたバックアップイメージに含まれる単位データとを同時に(並列的に)送信することの利益は、相対的に小さいといえる。対象サーバ30側での書き込み回数の違いにより、一つの組において、いずれかの単位データの書き込みが完了までの待機時間が長くなるからである。一方、当該差が小さい場合、当初からリストア対象であったバックアップイメージに含まれる単位データと、新たにバックアップ対象に追加されたバックアップイメージに含まれる単位データとを同時に(並列的に)送信することの利益は、相対的に大きいといえる。そこで、当該差が小さい組の送信順は、当該差が大きい組よりも後にされるのである。
なお、EXISTに乗ぜられる100、MULTIPLICITYに乗ぜられる10は、各パラメータに対する重み付け係数である。MULTIPLICITYは、EXISTの値が1である組間の送信順を決定するためのパラメータであるため、EXISTに比べて、重み付け係数の値は小さくされている。
続いて、送信順決定部123は、組み合わせリストL2に含まれている各組を、それぞれの組に関して算出された優先度の昇順にソートする(S352)。すなわち、優先度の小さい組から順に整列される。続いて、送信順決定部123は、ソート結果の順番で、各組の単位データのハッシュ値及び優先度を、送信リストL3(図12)に記録する(S353)。なお、送信リストL3において、各組に対する送信状態は、「未」に初期化される。
続いて、図16のステップS302の詳細について説明する。すなわち、或るバックアップイメージのリストアの開始後に、他のバックアップイメージのリストアが開始された場合(すなわち、リストアの途中で、リストア対象のバックアップイメージが追加された場合)に関して説明する。
図21は、リストア対象のバックアップイメージの追加に応じたリストア対象一覧情報の更新処理の処理手順の一例を説明するためのフローチャートである。
ステップS361において、組み合わせ部122は、リストア対象一覧情報L1に含まれている一つの単位データを処理対象(以下、「対象データ」という。)として選択する。なお、ここでのリストア対象一覧情報L1は、リストア対象のバックアップイメージの追加後に、図9のステップS202において改めてイメージ管理サーバ20より取得されたリストア対象一覧情報L1である。具体的には、イメージA及びイメージBに関してリストア中に、イメージCをリストア対象としてリストアの開始指示が入力されたとする(図9:S210でYes)。この場合、送信データ特定部121は、イメージA、B、及びCのいずれかに含まれる単位データに関するリストア対象一覧情報L1をイメージ管理サーバ20より取得する(S202)。ステップS361では、このように改めて取得されたリストア対象一覧情報L1の中から、一つの単位データが対象データとして選択される。したがって、ここでは、図10に示されている単位データ以外に、新たな単位データがリストア対象一覧情報L1に含まれている可能性がある。
続いて、組み合わせ部122は、対象データが送信リストL3に含まれているか否かを判定する(S362)。すなわち、リストア対象の追加前のリストア時において、対象データが送信対象とされていたか否かが判定される。ここで参照される送信リストL3は、リストア対象の追加前のリストア時に生成された送信リストL3である。
対象データが送信リストL3に含まれている場合(S362でYes)、組み合わせ部122は、リストア対象のバックアップイメージのいずれかに関して対象データを送信済みであるか否かを判定する(S363)。具体的には、送信リストL3において、対象データに関する送信状態に、少なくとも一つのイメージ名が記録されているか否かが判定される。
いずれかのバックイメージに関して対象データを送信済みである場合(S363でYes)、組み合わせ部122は、送信済みに係るバックアップイメージのイメージ名を、リストア対象一覧情報L1における、対象データのレコードより除去する(S364)。
図22は、送信済みのバックアップイメージのイメージ名の除去例を示す図である。同図のリストア対象一覧情報L1aを、図10に示されるリストア対象一覧情報L1と比較すると、リストア対象一覧情報L1aでは、単位データ0001に関して、イメージA及びイメージBに対するレコードが削除されている。すなわち、図22は、単位データ0001が対象データであり、送信リストL3が図15に示される状態である場合における、ステップS364の実行結果を示す。
一方、対象データが送信リストL3に含まれていない場合(S362でNo)、又はいずれのバックアップイメージに関しても対象データが送信されていない場合(S363でNo)、対象データに関してステップS364は実行されない。
ステップS361〜S364の処理が、リストア対象一覧情報L1に含まれる全ての単位データに関して実行されると(S365でYes)、図21の処理は終了する。
その後、更新後のリストア対象一覧情報L1に基づいて、図16のステップS303以降の処理が再実行される。その結果、同一の単位データの同一の送信先に関する送信の再実行は回避されて、リストアが実行される。
上述したように、本実施の形態によれば、リストア対象のバックアップイメージにのみ含まれる単位データよりも、リストア対象外のバックアップイメージにも含まれる単位データの方が、リストア時における送信順が後にされる。したがって、当初リストア対象でなかったバックアップイメージに関するリストアが、当初のリストア中に開始された場合であっても、同一の単位データに関する重複送信を回避できる可能性をたかめることができる。その結果、リストア時における、ネットワーク上の通信量(例えば、単位データを転送するためのパケット量)が低減される可能性を高めることができる。
また、本実施の形態では、リストア対象のいずれかのバックアップイメージに含まれる各単位データのうち、相互に異なるバックアップイメージに含まれる単位データ同士が一組とされ、該組単位で送信順が決定される。そして、該組単位の送信順で、各単位データがリストア先の対象サーバ30に送信される。したがって、該組ごとに、組に属する各単位データの送信処理に関して並列性を高めることができる。その結果、リストア処理全体に要する時間を短縮化することができる。
なお、本実施の形態では、バックアップリストアサーバ10とイメージ管理サーバ20とがそれぞれ別個のコンピュータである例を示したが、バックアップリストアサーバ10の機能とイメージ管理サーバ20の機能とは、一つのコンピュータにおいて実装されてもよい。
なお、本実施の形態において、バックアップイメージは、バックアップごとにバックアップされたデータ群の一例である。送信データ特定部121は、特定部の一例である。送信順決定部123は、決定部の一例である。リストア対象一覧情報L1又は単位データ管理ファイルは、関連情報の一例である。
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
以上の説明に関し、更に以下の項を開示する。
(付記1)
コンピュータに、
第1の装置に保持されたデータのバックアップデータに対応する第1のバックアップデータと、第2の装置に保持されたデータのバックアップデータに対応し、且つ前記第1のバックアップデータと一部のデータが重複する第2のバックアップデータを記憶する記憶部から、前記第1の装置へのリストア指示に応じて、前記第1のバックアップデータを読み出して、前記第1の装置にリストアする処理と、
前記リストアする処理において、前記第1のバックアップデータのうちの前記一部のデータについてのリストアを、前記第1のバックアップデータのうちの前記一部のデータを除いたデータについてのリストアよりも実行順序を遅くする制御を行なう処理と、
を実行させることを特徴とするリストア処理プログラム。
(付記2)
ソフトウェア資源のバックアップごとに保存され相互に一部のデータが重複する複数のデータ群と、該データ群を構成する複数の前記データとの関連情報に基づいて、リストア対象として指定された一以上の前記データ群に含まれる前記データを、同一の前記データの重複を排除して特定し、
特定された複数の前記データについて、リストア先への送信順を決定する処理をコンピュータが実行し、
前記決定する処理は、前記特定された複数の前記データの中で、リストア対象として指定された前記データ群にのみ含まれるデータよりも、リストア対象として指定されていない前記データ群にも含まれる前記データを、前記送信順において後にするリストア方法。
(付記3)
前記特定された複数の前記データのうち、リストア対象として指定された相互に異なる前記データ群に含まれる前記データ同士を一組に組み合わせる処理を前記コンピュータが実行し、
前記決定する処理は、前記組単位で前記送信順を決定し、リストア対象として指定された前記データ群にのみ含まれるデータのみが属する前記組よりも、リストア対象として指定されていない前記データ群にも含まれる前記データが属する前記組を、前記送信順において後にする付記2記載のリストア方法。
(付記4)
前記構成情報は、前記データごとに、当該データを含む前記データ群における重複数を示す情報を含み、
前記組み合わせる処理は、リストア対象として指定された前記データ群における前記重複数に基づいて、一組に組み合わせる前記データ同士を判定する付記3記載のリストア方法。
(付記5)
前記決定する処理は、リストア対象として指定されていない前記データ群にも含まれる前記データが属する前記組の中で、当該組に属する前記データを含むリストア対象として指定されていない前記データ群の合計数が多い前記組を、該合計数が少ない前記組よりも前記送信順において後にする付記3又は4記載のリストア方法。
(付記6)
ソフトウェア資源のバックアップごとに保存され相互に一部のデータが重複する複数のデータ群と、該データ群を構成する複数の前記データとの関連情報に基づいて、リストア対象として指定された一以上の前記データ群に含まれる前記データを、同一の前記データの重複を排除して特定する特定部と、
特定された複数の前記データについて、リストア先への送信順を決定する決定部とを有し、
前記決定部は、前記特定された複数の前記データの中で、リストア対象として指定された前記データ群にのみ含まれるデータよりも、リストア対象として指定されていない前記データ群にも含まれる前記データを、前記送信順において後にする情報処理装置。
(付記7)
前記特定された複数の前記データのうち、リストア対象として指定された相互に異なる前記データ群に含まれる前記データ同士を一組に組み合わせる組み合わせ部を有し、
前記決定部は、前記組単位で前記送信順を決定し、リストア対象として指定された前記データ群にのみ含まれるデータのみが属する前記組よりも、リストア対象として指定されていない前記データ群にも含まれる前記データが属する前記組を、前記送信順において後にする付記6記載の情報処理装置。
(付記8)
前記構成情報は、前記データごとに、当該データを含む前記データ群における重複数を示す情報を含み、
前記組み合わせ部は、リストア対象として指定された前記データ群における前記重複数に基づいて、一組に組み合わせる前記データ同士を判定する付記7記載の情報処理装置。
(付記9)
前記決定部は、リストア対象として指定されていない前記データ群にも含まれる前記データが属する前記組の中で、当該組に属する前記データを含むリストア対象として指定されていない前記データ群の合計数が多い前記組を、該合計数が少ない前記組よりも前記送信順において後にする付記7又は8記載の情報処理装置。
(付記10)
ソフトウェア資源のバックアップごとに保存され相互に一部のデータが重複する複数のデータ群と、該データ群を構成する複数の前記データとの関連情報に基づいて、リストア対象として指定された一以上の前記データ群に含まれる前記データを、同一の前記データの重複を排除して特定し、
特定された複数の前記データについて、リストア先への送信順を決定する処理をコンピュータに実行させ、
前記決定する処理は、前記特定された複数の前記データの中で、リストア対象として指定された前記データ群にのみ含まれるデータよりも、リストア対象として指定されていない前記データ群にも含まれる前記データを、前記送信順において後にするリストア処理プログラム。
(付記11)
前記特定された複数の前記データのうち、リストア対象として指定された相互に異なる前記データ群に含まれる前記データ同士を一組に組み合わせる処理を前記コンピュータに実行させ、
前記決定する処理は、前記組単位で前記送信順を決定し、リストア対象として指定された前記データ群にのみ含まれるデータのみが属する前記組よりも、リストア対象として指定されていない前記データ群にも含まれる前記データが属する前記組を、前記送信順において後にする付記10記載のリストア処理プログラム。
(付記12)
前記構成情報は、前記データごとに、当該データを含む前記データ群における重複数を示す情報を含み、
前記組み合わせる処理は、リストア対象として指定された前記データ群における前記重複数に基づいて、一組に組み合わせる前記データ同士を判定する付記11記載のリストア処理プログラム。
(付記13)
前記決定する処理は、リストア対象として指定されていない前記データ群にも含まれる前記データが属する前記組の中で、当該組に属する前記データを含むリストア対象として指定されていない前記データ群の合計数が多い前記組を、該合計数が少ない前記組よりも前記送信順において後にする付記11又は12記載のリストア処理プログラム。