(57)【要約】【課題】前回のバックアップ処理からリストア処理を行うまでの間に更新されたデータがあっても効率的にリストア処理を行う。【解決手段】  第１計算機と、第１計算機のデータをバックアップする第２計算機とからなる計算機システム。第１計算機は、自計算機に格納された所定の第１ブロックデータから第１ハッシュデータを生成。バックアップ計算機から、第１ブロックデータに対応するバックアップデータがハッシュ化された第２ハッシュデータを受信。第１ハッシュデータと第２ハッシュデータに差分がある場合、第１ブロックデータを第２計算機に送信すると共にバックアップデータを第２計算機から受信して更新。第２計算機は、第１計算機から送信された第１ブロックデータと、バックアップデータとから、新たなバックアップデータを生成。【選択図】  図１
2013254400.tif 000002
【特許請求の範囲】
【請求項１】
第１計算機と、第１計算機のデータをバックアップする第２計算機とからなる計算機システムあって、
第１計算機は、
自計算機に格納された所定の第１ブロックデータから第１ハッシュデータを生成し、
前記バックアップ計算機から、前記第１ブロックデータに対応するバックアップデータがハッシュ化された第２ハッシュデータを受信し、
第１ハッシュデータと第２ハッシュデータに差分がある場合、前記第１ブロックデータを前記第２計算機に送信すると共に前記バックアップデータを前記第２計算機から受信して更新し、
前記第２計算機は、
第１計算機から送信された第１ブロックデータと、前記バックアップデータとから、新たなバックアップデータを生成する、
計算機システム。
【請求項２】
第１計算機と、第１計算機のデータをバックアップする第２計算機とからなる計算機システムのバックアップデータ生成方法であって、
第１計算機が、
自計算機に格納された所定の第１ブロックデータがハッシュ化された第１ハッシュデータを生成すると、
前記バックアップ計算機から、前記第１ブロックデータに対応するバックアップデータがハッシュ化された第２ハッシュデータを受信する手順と、
第１ハッシュデータと第２ハッシュデータに差分がある場合、前記第１ブロックデータを前記第２計算機に送信すると共に前記バックアップデータを前記第２計算機から受信して更新する手順と、
前記第２計算機が、
第１計算機から送信された第１ブロックデータと、前記バックアップデータとから、新たなバックアップデータを生成する手順と、
を含むバックアップデータ生成方法。
【請求項３】
第１計算機のバックアップデータを格納する記憶部と、
第１計算機から指定されたブロックデータを前記記憶部から読み出し、ハッシュデータとして前記第１計算機に送信し、当該送信に応じて前記第１計算機から受信したブロックデータと、前記第１計算機から要求されたブロックデータとから、新たなバックアップデータを生成する制御部と、
を有するバックアップ計算機。
【請求項４】
第１計算機に格納されたデータのバックアップ計算機に、
第１計算機から指定されたブロックデータを前記バックアップ計算機の記憶部から読み出して、ハッシュデータとして前記第１計算機に送信するステップと、
当該送信に応じて前記第１計算機から受信したブロックデータと、前記第１計算機から要求されたブロックデータとから、新たなバックアップデータを生成するステップと、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データのバックアップ等を行う計算機システム、バックアップデータ生成方法、バックアップ計算機及びプログラムに関する。
【背景技術】
【０００２】
バックアップ処理したデータからリストア処理を行うことが一般的に行われている。リストア処理を行う場合には、前回のバックアップ処理からリストア処理直前までに修正や作成されたファイルが存在する可能性があるため、リストア処理をする前（例えば、直前）に、システム内に残存しているデータを先にバックアップ処理する必要がある。
【０００３】
特許文献１には、ユーザデータ記憶手段に最新版のユーザデータのみを記憶し、ハッシュファイル記憶手段にユーザデータに基づいてブロックごとに計算されるハッシュデータを記憶し、アプリケーションの利用に応じて逐次更新されるユーザデータについて上書き更新があると、差分データ生成手段が、更新後のユーザデータのブロックごとにハッシュデータを計算し、更新前のユーザデータから生成されたハッシュデータと、更新後のユーザデータから生成されたハッシュデータを基に、ブロックごとの更新の有無を検知し、更新前後のユーザデータの差分データを生成する技術が開示されている。また、特許文献１には、リストア時のデータ転送量を減らすデータバックアップ方法が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】ＷＯ  ２００７/００１０７３  Ａ１
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に開示される技術を用いる場合、前回のバックアップ処理からリストア処理を開始するまでに変更されたデータまでは保護されない。このため、保護対象のサーバのバックアップを完了した後に、改めてリストア作業をする手順となる。このため、バックアップ処理が完了するまでリストア処理を開始できず、復旧に時間がかかるという課題がある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、たとえば特許請求の範囲に記載の構成を採用する。
本願は上記課題を解決する手段を複数含んでいるが、その一例を挙げるならば、第１計算機と、第１計算機のデータをバックアップする第２計算機とからなる計算機システムあって、第１計算機は、自計算機に格納された所定の第１ブロックデータから第１ハッシュデータを生成し、前記バックアップ計算機から、前記第１ブロックデータに対応するバックアップデータがハッシュ化された第２ハッシュデータを受信し、第１ハッシュデータと第２ハッシュデータに差分がある場合、前記第１ブロックデータを前記第２計算機に送信すると共に前記バックアップデータを前記第２計算機から受信して更新し、前記第２計算機は、第１計算機から送信された第１ブロックデータと、前記バックアップデータとから、新たなバックアップデータを生成する計算機システムである。
【発明の効果】
【０００７】
本発明によれば、バックアップシステムにおいて、最後にバックアップを実行したときから、リストアを行う直前までに変更した内容の保護をしながら並行してリストア作業も実行することができる。
上記した以外の課題、構成および効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【０００８】
【図１】本発明を適用した一実施形態である計算機システムの構成を示すブロック図。
【図２】ユーザデータ格納部１０４のデータ格納例を示す模式図。
【図３】１次データ格納部２０３のデータ格納例を示す模式図。
【図４】２次データ格納部２０４のデータ格納例を示す模式図。
【図５】２次リストアデータ格納部２０５のデータの格納例を示す模式図。
【図６】バックアップ処理の例を示すフロー図。
【図７】１次リストア処理の例を示すフロー図。
【図８】２次リストア時の処理例を示すフロー図。
【図９】データの合成処理の例を示すフロー図。
【発明を実施するための形態】
【０００９】
以下に、図面を用いて、本発明を実施するための一形態を詳細に説明する。
本実施形態では、バックアップ処理とリストア処理を並列的（例えば、同時並行的）に実行することを特徴の一つとする計算機システムを例に説明する。
【００１０】
図１に、本発明を適用した計算機システムの構成を示す。計算機システムは、復旧対象サーバ１００と、ネットワーク３００を介して互いに通信可能に接続されたバックアップサーバ２００とから構成される。
【００１１】
復旧対象サーバ１００は、ＣＰＵ１０１、主記憶装置１０２、ユーザデータ等を格納する補助記憶としてのユーザデータ格納部１０４及び通信部１０５を備える。主記憶装置１０２上には、プログラムとの協働によりハッシュ計算部１０３が実現される。なお、ユーザデータ格納部１０４は、ＨＤＤやＳＳＤを始め種々の不揮発性記憶装置である。また、ユーザデータを主記憶装置１０２又は主記憶装置１０２並びにユーザデータ格納部１０４の両方に格納（保持）することも可能である。
【００１２】
バックアップサーバ２００は、ＣＰＵ２０１、主記憶装置２０２及び通信部２０９を有すると共に補助記憶上に１次データ格納部２０３、２次データ格納部２０４及び２次リストアデータ格納部２０５を有する。また、主記憶装置２０２上には、プログラムとの協働によりハッシュ計算部２０６、データ合成部２０７及びファイル抽出部２０８を有する。バックアップサーバ２００でも、１次データ格納部２０３、２次データ格納部２０４及び２次リストアデータ格納部２０５に格納されたデータは、その一部又は全部を主記憶装置２０２に格納することも可能である。
【００１３】
ハッシュ計算部１０３およびハッシュ計算部２０６は、データからハッシュ値を生成する装置。この二つは同じデータからは同じハッシュ値を生成するものとする。ハッシュ計算は後述するデータブロック単位に行い、ひとつのデータブロックからひとつのハッシュ値を生成する。具体的なハッシュ計算方法はＭＤ５を用いるものとするが、他の方法を用いてもよい。
【００１４】
データ合成部２０７は、１次データ格納部２０３及び２次データ格納部２０４から２次リストアデータ格納部２０５を生成する。具体的な機能は図６を用いて後述する。
【００１５】
ファイル抽出部２０８は、２次リストアデータ格納部２０５からリストア対象のファイルを抽出する。具体的な機能は図８を用いて後述する。
【００１６】
図２に、ユーザデータ格納部１０４のデータの格納例を模式的に示す。本図では例となるデータを記載しているが、記録されるデータは任意である。
ユーザデータ格納部１０４は、データブロック３０１で構成される。データブロック３０１は、データを一定のサイズで区切ったものである。データブロック３０１のサイズは任意であるが、ハッシュ計算部によるハッシュ値の計算アルゴリズムに依存する。データブロック３０１は、ユーザデータ格納部１０４等のどの場所にそのデータが記録されているかを特定するアドレスを保持する。
【００１７】
図３に、１次データ格納部２０３のデータの格納例を模式的に示す。図では例となるデータを記載しているが、記録されるデータは任意である。
１次データ格納部２０３は、アドレスデータ３０２、バックアップブロックデータ３０３及びハッシュデータ３０４を保持する。
【００１８】
アドレスデータ３０２は、バックアップブロックデータ３０３がユーザデータ格納部１０４でどのアドレスに記録されていたかを示す。バックアップブロックデータ３０３は、通常のバックアップ時に復旧対象サーバ１００から渡されたデータブロック３０１である。ハッシュデータ３０４は、バックアップブロックデータ３０３のハッシュ値である。
【００１９】
図４に、２次データ格納部２０４のデータの格納例を模式的に示す。本図では例となるデータを記載しているが、記録されるデータは任意である。２次データ格納部２０４は、アドレスデータ３０５及びバックアップブロックデータ３０６を保持する。
【００２０】
アドレスデータ３０５は、バックアップブロックデータ３０６がユーザデータ格納部１０４でどのアドレスに記録されていたかを示す。バックアップブロックデータ３０６は、リストア直前のバックアップ時に復旧対象サーバ１００から渡されたデータブロック３０１である。
【００２１】
図５に、２次リストアデータ格納部２０５のデータ格納例を模式的に示す。本図では例となるデータを記載しているが、記録されるデータは任意である。
２次リストアデータ格納部２０５は、リストアブロックデータ３０７で構成される。リストアブロックデータ３０７は、１次データ格納部２０３のバックアップブロックデータ３０３と２次データ格納部２０４のバックアップブロックデータ３０６をデータ合成部２０７により生成したデータが格納される。アドレスの順序は、ユーザデータ格納部１０４と同じである。
以上が、計算機システムの構成である。
【００２２】
以下に、計算機システムで実行する処理について説明する。なお、処理はＣＰＵとプログラムとの協働により実現される制御機能部によって実行される。以下の説明では、便宜上ＣＰＵを主体として処理が実行するものとして説明する。
【００２３】
図６のフロー図に、バックアップ処理の流れを示す。
ステップ４００は、繰り返し処理である。全データをバックアップ対象とするため、すべてのデータブロックに対し、ステップ４０１、ステップ４０２、ステップ４０３、ステップ４０４が繰り返される。
【００２４】
ステップ４０１で、ＣＰＵ１０１は、ユーザデータ格納部１０４からデータブロック３０１をひとつ読む。このとき、ステップ４００の繰り返しのなかでデータブロックは重複して読まない。また、選び方に順序はない。
【００２５】
ステップ４０２で、ＣＰＵ１０１は、読み取ったデータブロック３０１とそのアドレスを、ネットワーク３００を介して通信部１０５から通信部２０９に送信する。
【００２６】
ステップ４０３で、バックアップサーバ２００のＣＰＵ２０１は、ハッシュ計算部２０６において、受け取ったデータブロックのハッシュ値を計算する。
【００２７】
ステップ４０４で、ＣＰＵ２０１は、１次データ格納部２０３からアドレス、データブロック及びハッシュ値を、アドレスデータ３０２、バックアップブロックデータ３０３及びハッシュデータ３０４に記録する。
以上が、バックアップ処理である。
【００２８】
図７のフロー図に、１次リストア処理の流れを示す。
【００２９】
ステップ５００は、繰り返し処理である。全データをリストア対象とするため、すべてのデータブロックに対し、ステップ５０１、ステップ５０２、ステップ５０３、ステップ５１０が繰り返される。
【００３０】
ステップ５０１で、復旧対象サーバのＣＰＵ１０１は、リストア対象のデータブロックのアドレスを一つ、通信部１０５を通じてバックアップサーバ２００に送信する。このとき、ステップ５００の繰り返しの中でデータブロックは重複して読まない。また、選び方に順序はない。
【００３１】
また、バックアップサーバ２００のＣＰＵ２０１は、受信したアドレスと、１次データ格納部２０３のアドレスデータ３０２とが一致する組のハッシュ値を、ハッシュデータ３０４から読み取る。ＣＰＵ２０１は、ハッシュ値を復旧対象サーバ１００へ送信する。
【００３２】
ステップ５０２で、ＣＰＵ１０１は、ユーザデータ格納部１０４からアドレスに対応したデータブロックをデータブロック３０１から読み取る。
【００３３】
ステップ５０３で、ＣＰＵ１０１は、ハッシュ計算部１０３において、読み取ったデータブロックのハッシュ値を計算する。
【００３４】
ステップ５１０で、ＣＰＵ１０１は、ステップ５０１で受信したハッシュ値と、ステップ５０３で計算されたハッシュ値とを比較する。ハッシュ値同士が異なる場合、ステップ５１１を実施する。同じである場合でステップ５００の最後の繰り返しではない場合、ステップ５０１を実施する。最後の繰り返しである場合、本処理は終了する。
【００３５】
ステップ５１１で、ＣＰＵ１０１は、通信部１０５を通じて、ステップ５０２で読み取ったデータブロックとアドレスをバックアップサーバ２００へ送信する。バックアップサーバのＣＰＵ２０１は、１次データ格納部２０３で、アドレスをキーにしてバックアップブロックデータ３０３を読み取り、復旧対象サーバ１００へ送信する。
【００３６】
ステップ５１２で、ＣＰＵ１０１は、ユーザデータ格納部１０４に、受信したバックアップブロックデータをステップ５０１で指定したアドレスの指す位置に記録する。
【００３７】
ステップ５１３で、バックアップサーバ２００のＣＰＵ２０１は、ステップ５１１で受信したアドレスとデータブロックの組をアドレスデータ３０５とバックアップブロックデータ３０６に格納する。
【００３８】
ここまでの処理で、ユーザデータ格納部１０４はバックアップした時点の状態に復旧する。また、２次データ格納部２０４には、前回のバックアップからリストア時点までに変更があったデータブロックとそのアドレスが格納される。これによりバックアップとリストアが並行して実施されることになる。
【００３９】
また、ここまでの処理で、復旧対象サーバ１００のＣＰＵ１０１は、ユーザデータ格納部１０４の全データの読み取り１回実行し、バックアップサーバ２００のＣＰＵ２０１は、前回のバックアップから変更のあった部分のみへの書き込み１回を実施している。
【００４０】
もし、単純にリストア前に全データのバックアップをした後、全データのリストアをしたとすると、全データの読み取り１回、全データの書き込み１回が実施される。
【００４１】
特許文献１の技術を使用したとしても、直前のバックアップが必要なため、全データ読み込み２回、前回のバックアップから変更のあった部分のみへの書き込み１回が必要になる。
【００４２】
図８のフロー図に、２次リストア処理の流れを示す。
ステップ６００で、ＣＰＵ２０１は、データ合成部２０７において、１次データ格納部２０３と２次データ格納部２０４に格納されたデータを基に、２次リストアデータ格納部２０５にデータを格納する。具体的な処理は図９を用いて後述する。
【００４３】
ここまでのステップで、２次リストアデータ格納部２０５には、復旧直前にユーザデータ格納部１０４に格納されていたデータが再現される。
【００４４】
ステップ６０１で、ＣＰＵ２０１は、データ抽出部２０８において、２次リストアデータ格納部２０５からリストア対象のファイルを抽出する。ファイルの抽出はファイルシステムによる。これは、たとえば、復旧対象サーバ１００で使用していたのと同じオペレーティングシステムを使用することで実現できる。
ここまでのステップで、復旧対象サーバ１００には負荷をかけず読み取り可能なファイルを取得することが出来る。
【００４５】
ステップ６０２で、ＣＰＵ２０１は、ステップ６０１で抽出したファイルを、データ通信部２０９を通じて復旧対象サーバ１００に転送する。
【００４６】
ステップ６０３で、ＣＰＵ１０１は、転送されたファイルをユーザデータ格納１０４に書き込む。
【００４７】
図９のフロー図に、図８に示したデータの合成（ステップ６００）処理を示す。
ステップ７００で、ＣＰＵ２０１は、２次データ格納部２０４のアドレスデータ３０５からアドレスをすべて読み込む。
【００４８】
ステップ７０１で、ＣＰＵ２０１は、１次データ格納部２０３において、アドレスデータ３０２からアドレスを１つ読み込む。どの順序で読み込んでもよいが、一度読んだアドレスは図９において二度とは読まない。
【００４９】
ステップ７０２で、ＣＰＵ２０１は、ステップ７００で読みこんだアドレスの集合の中にステップ７０１で読んだアドレスが存在しないと判断する場合、ステップ７０３に進み、存在すると判断する場合、ステップ７０４に進む。
【００５０】
ステップ７０３で、ＣＰＵ２０１は、１次データ格納部において、アドレスをキーにしてバックアップブロックデータ３０３からデータブロックを読み込む。
【００５１】
ステップ７０４で、ＣＰＵ２０１は、２次データ格納部において、アドレスをキーにしてバックアップブロックデータ３０６からデータブロックを読み込む。
【００５２】
ステップ７０５で、ＣＰＵ２０１は、２次リストアデータ格納部２０５において、アドレスの場所に読み込んだデータブロックをリストアブロックデータ３０７へ記録する。
【００５３】
ステップ７０６で、ＣＰＵ２０１は、ステップ７０１で読み込んだデータが最後の場合、処理を終了する。まだ、残っている場合、ステップ７０１へ処理を移る。
【００５４】
ここまでの処理で、２次リストアデータ格納部２０５へはバックアップとリストアを開始した時のユーザデータ格納部１０３が再現される。
【００５５】
以上の様に、本実施形態によれば、前回のバックアップからリストア直前までに変更のあったデータを保護しつつバックアップ処理とリストア処理を、計算機システムに負荷をかけることなく効率的に実施することができる。
【００５６】
また、本実施形態では、復旧対象サーバ１００のデータと、バックアップデータとの異同を判断する際、ハッシュ値を用いることから、比較する処理の高速化及び負荷低減も期待できる。
【００５７】
また、本実施形態では、一つのブロックデータを処理単位としていたが、本発明はこれに限ることなく、全データ量よりも少ない所定の複数のデータブロックを纏めて処理するようにしても同様の効果が期待できる。
【００５８】
なお、本実施形態の処理は、プログラムによって実現されるが、このようなプログラムは、可搬可能な非一時的な記録媒体によって計算機システムにインストールことも可能であるし、外部ネットワーク接続によりダウンロードしてインストールことが可能である。  更に、本発明の趣旨を逸脱しない範囲で、処理の一部をハードウェアで構成することも可能である。
【図１】
2013254400.tif 000003
【図２】
2013254400.tif 000004
【図３】
2013254400.tif 000005
【図４】
2013254400.tif 000006
【図５】
2013254400.tif 000007
【図６】
2013254400.tif 000008
【図７】
2013254400.tif 000009
【図８】
2013254400.tif 000010
【図９】
2013254400.tif 000011