(57)【要約】【課題】第１サーバから第２サーバにネットワークを介して複数のデータ・ファイルをバックアップするシステム、方法、およびプログラムを提供する。【解決手段】第２サーバで第１サーバからダウンロードされた２以上の圧縮データ・ファイルが解凍待ちであると判定される。第２サーバで利用可能なプロセッサ資源の量が所定の閾値を超えるかどうかを判定する。第２サーバで利用可能なプロセッサ資源の量が所定の閾値を超える場合、第２サーバ内の複数のデータ解凍プログラムを呼び出して複数の圧縮データ・ファイルを実質的に同時に解凍し、解凍データ・ファイルのデータ更新を第２サーバの対応するファイルに適用する。【選択図】図１
2008305404.tif 000002
【特許請求の範囲】
【請求項１】
第１サーバから第２サーバにネットワークを介して複数のデータ・ファイルをバックアップする方法で、前記方法が、
前記第１サーバからダウンロードした、前記第２サーバの２以上の圧縮データ・ファイルが解凍待ちであると判定するステップと、
前記第２サーバで利用可能なプロセッサ資源の量が所定の閾値を超えているかどうかを判定するステップと、
前記第２サーバの前記利用可能なプロセッサ資源の量が前記所定の閾値を超えている場合、前記第２サーバの複数のデータ解凍プログラムを呼び出して前記複数の圧縮データ・ファイルを実質的に同時に解凍し、前記解凍データ・ファイルのデータ更新を前記第２サーバの対応するファイルに適用するステップとを有する、
方法。
【請求項２】
第１サーバから第２サーバにネットワークを介して複数のデータ・ファイルをバックアップするコンピュータ・プログラムで、前記コンピュータ・プログラムが、
コンピュータ読み取り可能媒体と、
前記第１サーバからダウンロードした、前記第２サーバの２以上の圧縮データ・ファイルが解凍待ちであると判定する第１プログラム命令と、
前記第２サーバで利用可能なプロセッサ資源の量が所定の閾値を超えているかどうかを判定する第２プログラム命令と、
前記第２サーバの前記利用可能なプロセッサ資源の量が前記所定の閾値を超えていることに応じて、前記第２サーバの複数のデータ解凍プログラムを呼び出して前記複数の圧縮データ・ファイルを実質的に同時に解凍し、前記解凍データ・ファイルのデータ更新を前記第２サーバの対応するファイルに適用する第３プログラム命令とを有し、
前記第１、第２、および第３プログラム命令を前記媒体上に機能的な形で格納するコンピュータ・プログラム。
【請求項３】
第１サーバから第２サーバにネットワークを介して複数のデータ・ファイルをバックアップする方法で、前記方法が、
前記第１サーバで２以上のデータ・ファイルが圧縮待ちであると判定するステップと、
前記第１サーバで利用可能なプロセッサ資源の量が第１所定の閾値を超えるかどうか、および前記ネットワークの利用可能な帯域幅の量が第２所定の閾値を超えるかどうかを判定するステップと、
前記第１サーバで前記利用可能なプロセッサ資源の量が前記第１所定の閾値を超え、かつ前記ネットワークの前記利用可能な帯域幅の量が前記第２所定の閾値を超える場合、前記第１サーバの複数のデータ圧縮プログラムを呼び出して前記複数のデータ・ファイルを実質的に同時に圧縮し、圧縮後前記複数のデータ・ファイルを前記第１サーバから前記第２サーバにダウンロードするステップとを有する、
方法。
【請求項４】
前記第１サーバからダウンロードした、前記第２サーバの２以上のデータ・ファイルが解凍待ちであると判定するステップと、
前記第２サーバで利用可能なプロセッサ資源の量が所定の閾値を超えるかどうかを判定するステップと、
前記第２サーバで前記利用可能なプロセッサ資源の量が前記所定の閾値を超える場合、前記第２サーバの複数のデータ解凍プログラムを呼び出して前記複数のデータ・ファイルを実質的に同時に解凍し、前記解凍データ・ファイルのデータ更新を前記第２サーバの対応するファイルに適用するステップとをさらに有する、請求項３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的に分散型コンピュータ・システムに関し、より具体的には本番サーバからバックアップ・サーバへのデータのバックアップに関する。
【背景技術】
【０００２】
周知の災害復旧ソリューションは、本番サーバから遠隔のバックアップ・サーバにネットワークを介してデータを定期的にコピーまたはバックアップすることに係わる。バックアップ・データは通例本番サーバで実行するアプリケーションにより生成される銀行口座などのデータを有する。バックアップ・サーバは通例本番サーバにインストールされるアプリケーションおよびオペレーティング・システムを含む。本番サーバのアプリケーションおよびオペレーティング・システムに更新がなされると、アドミニストレータは通例これら更新を製造者から受取り、それを本番サーバおよびバックアップ・サーバの両方にインストールする。したがって、本番サーバが障害を起こして所定の時間内に復旧できないと、本番サーバはバックアップ・サーバにある最新データとアプリケーションおよびオペレーティング・システムの最新版を使用し続けることができる。元の本番サーバが動作を再開すると、その間にバックアップ・サーバに行われたデータの更新を元の本番サーバにコピーできる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
前述の状況において、通例本番サーバでのデータの更新は本番サーバに記録され、更新ログ（本番サーバのファイル全体ではない）をバックアップ・サーバにコピーする。これによりネットワークを介してバックアップ・サーバにダウンロードしなければならないデータ量を減らす。また、通例、本番サーバはバックアップ・サーバにダウンロードする前にデータを圧縮して、バックアップ・サーバにダウンロードしなければならないデータ量を更に減らす。それでも、ダウンロードは本番サーバとバックアップ・サーバ間のネットワーク帯域幅のかなりの部分を消費する。また、大きなファイルを圧縮するプロセスは、本番サーバのプロセッサ資源をかなりの量使う。
【０００４】
バックアップ・サーバが圧縮された更新ログを受信すると、バックアップ・サーバはそれを解凍してから、対応するファイルをバックアップ・サーバで復元しなければならない、すなわちバックアップ・サーバで対応する既存のデータ・ファイルに更新を適用しないと、それが最新のものとなって本番サーバのものと同期しない。解凍プロセスは解凍するデータ量によってはバックアップ・サーバのプロセッサ資源をかなりの量消費することがある。
【０００５】
本発明の目的は、本番サーバからバックアップ・サーバへのデータの更新のダウンロードを迅速に処理するとともに、それら更新をバックアップ・サーバの対応するファイルに適用するのを迅速に処理することである。
【課題を解決するための手段】
【０００６】
本発明は、第１サーバから第２サーバにネットワークを介して複数のデータ・ファイルをバックアップするシステム、方法、およびプログラムにある。第２サーバに第１サーバからダウンロードした２以上の圧縮データ・ファイルが解凍待ちであると判定される。第２サーバで利用可能なプロセッサ資源の量が所定の閾値を超えているかどうかを判定する。第２サーバで利用可能なプロセッサ資源の量が所定の閾値を超えている場合、第２サーバで複数のデータ解凍プログラムを呼び出して、複数の圧縮データ・ファイルを実質的に同時に解凍し、解凍したデータ・ファイルのデータの更新を第２サーバの対応するファイルに適用する。
【０００７】
本発明はまた、第１サーバから第２サーバにネットワークを介して複数のデータ・ファイルをバックアップするシステム、方法、およびプログラムにある。第１サーバの２以上のデータ・ファイルが圧縮待ちであると判定される。第１サーバの利用可能なプロセッサ資源の量が第１所定の閾値を超えているかどうか、およびネットワークの利用可能な帯域幅の量が第２所定の閾値を超えているかどうかを判定する。第１サーバの利用可能なプロセッサ資源の量が第１所定の閾値を超えており、かつネットワークの利用可能な帯域幅の量が第２所定の閾値を超えている場合、第１サーバで複数のデータ圧縮プログラムを呼び出して、複数のデータ・ファイルを実質的に同時に圧縮する。圧縮後、複数のデータ・ファイルを第１サーバから第２サーバにダウンロードする。
【０００８】
本発明の特徴によると、第２サーバで第１サーバからダウンロードした２以上のデータ・ファイルが解凍待ちであると判定される。第２サーバの利用可能なプロセッサ資源の量が所定の閾値を超えているかどうかを判定する。第２サーバの利用可能なプロセッサ資源の量が所定の閾値を超えている場合、第２サーバで複数のデータ解凍プログラムを呼び出して、複数のデータ・ファイルを実質的に同時に解凍し、解凍したデータ・ファイルのデータの更新を第２サーバの対応するファイルに適用する。
【発明を実施するための最良の形態】
【０００９】
ここで、本発明を図面を参照しながら詳細に説明していく。図１は本発明を実施する本番サーバ２０とバックアップ・サーバ４０を含む分散型コンピュータ・システムを図示し、全体を１０で示す。
【００１０】
本番サーバ２０は共通のバス２６および記憶装置２７上に周知のプロセッサ２２、オペレーティング・システム２３、ＲＡＭ２４およびＲＯＭ２５を含む。本番サーバ２０はさらに周知の本番アプリケーション２８（マイクロソフトＳＱＬサーバ・アプリケーションなど）、本番アプリケーション２８用のデータ・ファイル２９、およびデータ・ファイル２９、本番アプリケーション２８並びにオペレーティング・システム２３への変更のすべてを記録する更新ログ３０も含む。データ・ファイル２９、本番アプリケーション２８またはオペレーティング・システム２３に変更があるたびに、ログ管理プログラム３４がこれら変更を更新ログ３０に周知の方法で記録する。本番サーバ２０は例えば周知の圧縮プログラム３１ａ、ｂ、ｃ、ｄ、ｅも含んで、ＷｉｎＲＡＲ（ユージン・ローシャルの商標）圧縮またはＷｉｎＺｉｐ圧縮（限られたサイズのファイルの場合）を実行する。本番サーバ２０はネットワーク３５（ＷＡＮ  ＤＳ３、ＭＡＮ、またはインターネットなど）を介してバックアップ・サーバ４０にデータの実際のダウンロードを行う周知のダウンロード・プログラム３３も含む。ファイルをバックアップ・サーバ５０にダウンロードするには、ダウンロード・プログラム３３はまずバックアップ・サーバとの接続／セッションを確立してから、Ｉ／Ｏシステム３４を制御してＴＣＰ／ＩＰアダプタ・カード３６を介してファイルを物理的にダウンロードする。（バックアップ・サーバ５０がダウンしている場合、またはネットワーク３５に問題がある場合、ダウンロード・プログラム３３はダウンロードを完了できないことがある。このような場合、プログラム３３は何度も再試行して、それでもうまくいかない場合、アドミニストレータに通知する。）本番サーバ２０は本発明によるデータ・ダウンロード管理プログラム３２も含み、データ（すなわち、典型的にはアプリケーション２８で生成したデータ）のダウンロードを管理し、データを圧縮およびダウンロードするのに２以上のデータ圧縮プログラム３１ａ、ｂ、ｃ、ｄ、ｅを並列で使用するかどうかを判定する。詳しく説明すると、この決定は圧縮待ちのファイルの数とその長さ、圧縮を並列で行うプロセッサ２２の可用性、および並列圧縮で生成される大量のデータのダウンロードを処理できるネットワーク帯域幅３５の可用性に基づく。
【００１１】
バックアップ・サーバ４０は、共通のバス４６および記憶装置４７上に周知のプロセッサ４２、オペレーティング・システム２３’、ＲＡＭ４４およびＲＯＭ４５を含む。オペレーティング・システム２３’はオペレーティング・システム２３と同一でもよい。バックアップ・サーバ４０はまた周知の本番アプリケーションのコピー２８’、データ・ファイルのコピー２９’（本番サーバ２０の本番データ・ファイル２９から定期的に同期される）も含む。バックアップ・サーバ４０は例えば周知の解凍プログラム５１ａ、ｂ、ｃ、ｄ、ｅも含み、ダウンロードされたファイルの圧縮形式に必要な形式の解凍を行う。バックアップ・サーバ４０は、本番サーバ２０から更新を受信して解凍されるときデータ・ファイル２９’を復元する周知のデータ復元プログラム５３も含む。先行技術で周知のように、復元プログラム５３は本番データ・ファイル２９’に本番サーバから受信して解凍されたデータの更新を適用して、バックアップ・サーバ内の本番データ・ファイル２９’を本番サーバ２０内の本番データ・ファイル２９に同期させる。バックアップ・サーバ４０は本発明によるデータ・バックアップ管理プログラム５２も含み、データの更新の解凍および復元を管理して、本番サーバから受信したデータを解凍するのに２以上の解凍プログラムを並列で使用するかどうかを判定する。詳しく説明すると、この決定は、解凍待ちのファイル数、および解凍を行うプロセッサ４２の可用性に基づく。
【００１２】
図２、３、および４は、データ・ダウンロード管理プログラム３２の実装と使用を詳しく記述している。ログ管理プログラム３４は更新ログ３０にデータ・ファイル２９の各更新を記録する。典型的には、データ・ファイル２９の更新はアプリケーション２８で行う（ただし、他のプログラムでも同様に行うことができよう）。ログ管理プログラム３４は本番アプリケーション２８からデータ・ファイル２９の更新を知る。定期的、例えば１５分毎に、ログ更新プログラム３４は、直前の所定の間隔の間、例えば直前１５分の間に記録されたデータ・ファイル２９’の更新を有する新たなログ更新ファイルを定義する。各新たなログ更新ファイルを定義する際、ログ管理プログラム３４はステータス・テーブル３８にこの新たなログ更新ファイルの名前、タイムスタンプまたは他の順序識別子、および状態（すなわち、「圧縮およびダウンロード待機中」）を識別する対応の記入項目を記録する。ログ管理プログラム３４はログ更新ファイル自体にも名前とタイムスタンプを埋め込む。アドミニストレータは最初に所定の期間毎、例えば１５分毎に実行して本番サーバ２０からバックアップ・サーバ５０にデータをバックアップするプログラム３２を構成する（ステップ９０）。
【００１３】
ステップ１００で、オペレーティング・システム２３は、１５分毎など、構成された定周期タイマに基づいて、プログラム３２を呼び出す。それに応じて、プログラム２３はステータス・テーブル３８から、圧縮してバックアップ・サーバ４０にダウンロードした本番サーバ２０内の最後のログ更新ファイルのタイムスタンプまたは他の順序識別子を読み出す（ステップ１０２）。（各同ファイルは、１５分など、それぞれの所定の期間内にアプリケーション２８が行った更新ログ３０からのデータ更新の集合体である。ログ管理プログラム３４は、プログラム３４がログ更新ファイルを定義したときに各ログ更新ファイルにタイムスタンプまたは順序識別子を割り当てている。）次に、プログラム３２は次の順序のログ更新ファイル、すなわちステータス・テーブル３８に定義した１つ前のタイプスタンプまたは順序識別子をもつログ更新ファイルを識別してフェッチする（ステップ１０４）。次に、プログラム３２はステータス・テーブル３８から、この次のログ更新ファイルがすでに圧縮およびダウンロードされているかどうかを点検する（決定１０６）。すでにされていれば（決定１０６、はいの分岐）、プログラム３２はステップ１０４に戻って次の順序のログ更新ファイルを識別してフェッチする。この次の順序のログ圧縮ファイルがまだ圧縮またはダウンロードされていなければ（決定１０６、いいえの分岐）、プログラム３２は圧縮およびダウンロードができる状態にある追加ログ更新ファイルの数とその平均長さを判定する。圧縮待ちのログ更新ファイルの数が所定の閾値、例えば５を超えないで、平均長さが所定の閾値、例えば１０ＧＢを超える場合（または、圧縮およびダウンロードができる状態にある全ファイルの総バイト数が５０ＧＢなどの所定の閾値数を超えない場合（決定１０７、いいえの分岐）、プログラム３２はステップ１１０に進んでこれらログ更新ファイルを逐次圧縮する。逐次処理モードでは、プログラム３２は（現在処理中の）ログ更新ファイルの名前、そのタイムスタンプ、および状態ビット（すなわち、「圧縮およびダウンロードに選択される」）をステータス・テーブル３８に挿入して、処理中の最新のログ更新ファイルの状態を記録する（ステップ１１０）。次に、プログラム３２はデータ圧縮プログラム３１ａを呼び出して、最新のログ更新ファイルのメモリ内のアドレスを識別する（ステップ１１２）。それに応じて、データ圧縮プログラム３１ａは処理中の最新のログ更新ファイルを圧縮する。圧縮プログラム３１ａが最新のログ更新ファイルを圧縮した後、プログラム３２はダウンロード・プログラム３３を呼び出して、現在圧縮したログ更新ファイルをバックアップ・サーバ４０にダウンロードするとともに、ステータス・テーブル３８を最新のログ更新ファイルが圧縮およびダウンロードされたことを示すように更新する（ステップ１１６）。
【００１４】
次に、プログラム３２はステータス・テーブル３８から、圧縮およびダウンロードができる状態にある一または複数の追加ログ更新ファイルがあるかどうかを判定する（決定１１８）。あれば（決定１１８、はいの分岐）、プログラム３２はステップ１１０、１１２、および１１６に戻って、次の順序のログ更新ファイルを以下に説明するように処理する（すなわち、ステータス・テーブルを更新して、圧縮およびダウンロードする）。プログラム３２は処理待ちの各追加の順序のログ更新ファイルについてステップ１１０、１１２および１１６を反復的、逐次的に繰り返す。順次処理モードではすべてのログ更新ファイルに単一のデータ圧縮プログラム３１ａを使用しているため、これによりプロセッサおよびネットワーク帯域幅への負担を最小限に抑える。圧縮する追加ログ更新ファイルがない場合（決定１１８、いいえの分岐）、プログラム３２はうまく圧縮してバックアップ・サーバ５０にダウンロードできたログ更新ファイルの定義およびコンテンツを削除する（ステップ１２０）。
【００１５】
再び決定１０７を参照すると、はいの分岐では、圧縮およびダウンロード待ちのログ更新ファイルの数が所定の閾値、例えば５を超え、かつログ更新ファイルの平均長さが所定の閾値、例えば１０ＧＢを超える（または代わりに、圧縮およびダウンロードができる状態にある全ログ更新ファイルの総バイト数が所定の閾値、例えば５０ＧＢを超える）。このような場合、プログラム３２は利用可能なＣＰＵ資源のパーセンテージが所定の閾値、例えば４０％より大きいかどうか、および利用可能なネットワーク帯域幅のパーセンテージが所定の閾値、例えば６０％より大きいかどうかを判定する（決定１３４）。大きくなければ（決定１３４、いいえの分岐）、プログラム３２はステップ１１０に戻って次の順序のログ更新ファイルを上記ステップ１１０、１１２、および１１６で説明したように逐次処理する（すなわち、それを定義して、データ圧縮プログラム３１ａが前のログ更新ファイルの圧縮を完了した後データ圧縮プログラム３１ａで圧縮する）、ダウンロード・プログラム３３が前のログ更新ファイルのダウンロードを完了した後ダウンロード・プログラム３３でダウンロードする）。しかし、利用可能なＣＰＵ資源のパーセンテージがそれぞれの所定の閾値より大きく、かつ利用可能なネットワーク帯域幅のパーセンテージがそれぞれの所定の閾値より大きい場合（決定１３４、はいの分岐）、プログラム３２は圧縮を待っている次の順序のログ更新ファイル（すなわち、「１番最新」のログ更新ファイル）を識別して、ステータス・テーブル３８を１番最新のログ更新ファイルの処理を示すように更新する（ステップ１３５）。次に、プログラム３２はデータ圧縮プログラム３１ａを呼び出して、１番最新のログ更新ファイルを圧縮して、１番最新のログ更新ファイルの圧縮が完了するとデータ圧縮プログラム３１に通知してダウンロード・プログラム３３を呼び出し、圧縮した１番目のログ更新ファイルをバックアップ・サーバにダウンロードする（ステップ１３６）。データ圧縮プログラム３１ａを呼び出した直後（かつデータ圧縮プログラム３１ａが１番最新のログ更新ファイルの圧縮を完了する前）に、プログラム３２はステータス・テーブル３８から、圧縮を待っている一または複数の追加ログ更新ファイルがあると判定すると（決定１３８、はいの分岐）、決定１３４に戻って利用可能なＣＰＵ資源のパーセンテージがそれぞれの所定の閾値よりもまだ大きいかどうか、および利用可能なネットワーク帯域幅のパーセンテージがそれぞれの所定の閾値よりもまだ大きいかどうかを判定する。大きくなければ（決定１３４、いいえの分岐）、プログラム３２はステップ１１０に戻って、次の順序のログ更新ファイルを逐次的に、すなわち１番最新のログ更新ファイルの圧縮後に処理する。しかし、利用可能なＣＰＵ資源のパーセンテージがそれぞれの所定の閾値よりもまだ大きく、かつ利用可能なネットワーク帯域幅のパーセンテージがそれぞれの所定の閾値よりもまだ大きい場合（決定１３４、はいの分岐）、プログラム３２は圧縮を待っている次の順序のログ更新ファイル（すなわち、「２番目に最新」のログ更新ファイル）を識別して、ステータス・テーブル３８を２番目に最新のログ更新ファイルの処理を示すように更新する（ステップ１３５）。次に、プログラム３２はデータ圧縮プログラム３１ｂを呼び出して、２番目に最新のログ更新ファイルを圧縮する（ステップ１３６）。データ圧縮プログラム３１ｂを呼び出した直後（かつデータ圧縮プログラム３１ｂが２番目に最新のログ更新ファイルの圧縮を完了する前）に、プログラム３２はステータス・テーブル３８から、圧縮を待っている一または複数の追加ログ更新ファイルがあると判定すると（決定１３８、はいの分岐）、決定１３４に戻って利用可能なＣＰＵ資源のパーセンテージがそれぞれの所定の閾値よりまだ大きいかどうか、および利用可能なネットワーク帯域幅のパーセンテージがそれぞれの所定の閾値よりもまだ大きいかどうかを判定する。大きくなければ（決定１３４、いいえの分岐）、プログラム３２はステップ１１０に戻って次の順序のログ更新ファイルを逐次的に、すなわち２番目に最新のログ更新ファイルの圧縮後に処理する。しかし、利用可能なＣＰＵ資源のパーセンテージがそれぞれの所定の閾値よりもまだ大きく、かつ利用可能なネットワーク帯域幅のパーセンテージがそれぞれの所定の閾値よりもまだ大きい場合（決定１３４、はいの分岐）、プログラム３２は圧縮を待っている次の順序のログ更新ファイル（すなわち、「３番目に最新」のログ更新ファイル）を識別して、ステータス・テーブル３８を３番目に最新のログ更新ファイルの処理を示すように更新する（ステップ１３５）。次に、プログラム３２がデータ圧縮プログラム３１ｃを呼び出して、３番目に最新のログ更新ファイルを圧縮する（ステップ１３６）。データ圧縮プログラム３１ｃを呼び出した直後（かつデータ圧縮プログラム３１ｃが３番目に最新のログ更新ファイルの圧縮を完了する前）に、プログラム３２はステータス・テーブル３８から、圧縮を待っている一または複数の追加ログ更新ファイルがあると判定すると（決定１３８、はいの分岐）、決定１３４に戻って利用可能なＣＰＵ資源のパーセンテージがそれぞれの所定の閾値よりもまだ大きいかどうか、および利用可能なネットワーク帯域幅のパーセンテージがそれぞれの所定の閾値よりまだ大きいかどうかを判定する。大きくなければ（決定１３４、いいえの分岐）、プログラム３２はステップ１１０に戻って次の順序のログ更新ファイルを逐次的に、すなわち３番目に最新のログ更新ファイルの圧縮後に処理する。しかし、利用可能なＣＰＵ資源のパーセンテージがそれぞれの所定の閾値よりもまだ大きく、かつ利用可能なネットワーク帯域幅のパーセンテージがそれぞれの所定の閾値よりもまだ大きい場合（決定１３４、はいの分岐）、プログラム３２は圧縮を待っている次の順序のログ更新ファイル（すなわち、「４番目に最新」のログ更新ファイル）を識別して、ステータス・テーブル３８を４番目に最新のログ更新ファイルの処理を示すように更新する（ステップ１３５）。次に、プログラム３２はデータ圧縮プログラム３１ｄを呼び出して、４番目に最新のログ更新ファイルを圧縮する（ステップ１３６）。データ圧縮プログラム３１ｄを呼び出した直後（かつデータ圧縮プログラム３１ｄが４番目に最新のログ更新ファイルの圧縮を完了する前）に、プログラム３２はステータス・テーブル３８から、圧縮を待っている一または複数の追加ログ更新ファイルがあると判定すると（決定１３８、はいの分岐）、決定１３４に戻って利用可能なＣＰＵ資源のパーセンテージがそれぞれの所定の閾値よりもまだ大きいかどうか、および利用可能なネットワーク帯域幅のパーセンテージがそれぞれの所定の閾値よりもまだ大きいかどうかを判定する。大きくなければ（決定１３４、いいえの分岐）、プログラム３２はステップ１１０に戻って次の順序のログ更新ファイルを逐次的に、すなわち、１番最新のログ更新ファイルの圧縮後に処理する。しかし、利用可能なＣＰＵ資源のパーセンテージがそれぞれの所定の閾値よりもまだ大きく、かつ利用可能なネットワーク帯域幅のパーセンテージがそれぞれの所定の閾値よりもまだ大きい場合（決定１３４、はいの分岐）、プログラム３２は圧縮を待っている次の順序のログ更新ファイル（すなわち、「５番目に最新」のログ更新ファイル）を識別して、ステータス・テーブル３８を５番目に最新のログ更新ファイルの処理を示すように更新する（ステップ１３５）。次に、プログラム３２はデータ圧縮プログラム３１ｅを呼び出して、５番目に最新のログ更新ファイルを圧縮する（ステップ１３６）。以上のプロセスを圧縮を待っている各追加のログ更新ファイルについて繰り返す。ただし、ステップ１３６の実行は、圧縮プログラム３１ａ〜ｅの１つがプログラム３２がそれに割り当てた最後のログ更新ファイルの圧縮を完了した後利用できるようになるまで待つ。このように、利用可能なプロセッサ資源とネットワーク帯域幅が十分ある場合、プログラム３２は待機しているログ更新ファイルの並列／同時圧縮を命じて、待機しているログ更新ファイルの圧縮およびダウンロードを迅速に処理する。
【００１６】
本番サーバ２０とバックアップ・サーバ５０とのネットワーク接続３５が障害を起こす場合、またはバックアップ・サーバ５０が障害を起こす場合、データ・ダウンロード・プログラム３３は圧縮したファイルがあってもバックアップ・サーバ５０にダウンロードしない。それにもかかわらず、データ・ダウンロード管理プログラム３２はなお、ネットワーク接続またはバックアップ・サーバ５０がダウンしている間に蓄積するログ更新ファイルの圧縮を命じる。その結果、ネットワーク接続３５およびバックアップ・サーバ５０が動作を再開すると、本番サーバ２０はバックアップ・サーバ５０にダウンロードができる状態にある圧縮されたログ更新ファイルを多数もつことになる。このような場合、プログラム３２はデータ・ダウンロード・プログラム３３に多数の圧縮されたログ更新ファイルをバックアップ・サーバ５０にダウンロードするよう命じるので、迅速に行われる。
【００１７】
図５および６は、バックアップ・サーバ４０内のデータ・バックアップ管理プログラム５２の動作と実装を図示する。本番サーバ２０から一または複数の圧縮されたログ更新ファイルを受信したことに応じて、バックアップ・サーバ４０はデータ・バックアップ管理プログラム５２を呼び出す（ステップ１４０）。それに応じて、プログラム５２は受信した圧縮ログ更新ファイルから名前とタイムスタンプを読み出し、名前、タイムスタンプ、および状態（すなわち、「解凍ができる状態にある」）をステータス・テーブル５８に記録する（ステップ１４２）。解凍を待っている圧縮ファイルの数が所定の数（例えば、５）未満の場合（決定１４３、いいえの分岐）、データ・バックアップ管理プログラム５２はその解凍を逐次的に開始する。さらに、プログラム５２はステータス・テーブル５８から最も早く（圧縮された）ログ更新ファイル（本番サーバ２０からダウンロードした）を最も早いタイムスタンプに基づいて、またはその状態が「処理完了」された最後のログ更新ファイルの次の順序番号に基づいて識別し（ステップ１４２）、さらに最も早く（圧縮された）ログ更新ファイルをバックアップ・サーバ４０のメモリからフェッチする（ステップ１４４）。次に、プログラム５２はデータ解凍プログラム５１ａを呼び出して、この最も早く圧縮されたログ更新ファイルを解凍する（ステップ１４８）。解凍の完了後、プログラム５２はステータス・テーブル５８をこのログ更新ファイルが解凍されたことを示すように更新する（ステップ１４８）。
【００１８】
ステップ１４８で各ログ更新ファイルの解凍が完了した後、プログラム５２はスケジュール・テーブル５７を最後に解凍されたログ更新ファイル（本番サーバ２０から圧縮された形で受信した）の日時を識別するように更新する（ステップ１５０）。最後に解凍されるログ更新ファイルのこのタイムスタンプ（それに加えて、解凍したログ更新ファイルのデータを復元するまでの時間）は、バックアップ・サーバのデータが本番サーバのデータと同期していない時間をほぼ示す。典型的には、カスタマはその期間を所定の範囲内になるようにしたい。次に、プログラム５２はステータス・テーブル５９から、解凍待ちの本番サーバ２０からの圧縮ログ更新ファイルが他にも一または複数あるかどうかを判定する（決定１５２）。あれば（決定１５２、はいの分岐）、プログラム５２はステップ１４２に戻って、この次のログ更新ファイルを前のログ更新ファイルを解凍したのと同じ解凍プログラム５１ａ（前のログ更新ファイルの解凍をちょうど完了したもの）を使って、ステップ１４２、１４４、１４８、１５０を参照して上記説明したように逐次的に解凍する。しかし、現在解凍待ちの圧縮ログ更新ファイルがそれ以上ない場合（決定１５２、いいえの分岐）、プログラム５２はその実行を終了する（次の圧縮ログ更新ファイルを受信するまで）。
【００１９】
再び決定１４３を参照して、はいの分岐では、本番サーバ２０からダウンロードされて、バックアップ・サーバ４０で解凍を待っている圧縮ログ更新ファイルが所定の数（例えば、５）以上ある。このような場合（決定１４３、はいの分岐）、プログラム５２はバックアップ・サーバ４０で利用可能なプロセッサ資源が閾値、例えば４０％より大きいかどうかを判定する（決定１７２）。大きくない場合（決定１７２、いいえの分岐）、プログラム５２はステップ１４２に進んで、最も早く圧縮されたログ更新ファイルを逐次的に、すなわち、ちょうど今解凍したログ更新ファイルの解凍後に処理する。しかし、バックアップ・サーバ４０で利用可能なプロセッサ資源が閾値よりも大きい場合（決定１７２、はいの分岐）、プログラム５２はステータス・テーブル５８から、本番サーバ２０から受信し、解凍の開始を待っている圧縮ログ更新ファイルのすべてを識別する（ステップ１７３）。次に、プログラム５２はデータ解凍プログラム５１ｂを呼び出して、解凍がまだ開始されていない１つ前に圧縮されたログ更新ファイルを解凍する（ステップ１７４）。次に、プログラム５２は解凍を待っている一または複数の他の圧縮ログ更新ファイルがあるかどうかを判定する（決定１７６）。あれば（決定１７６、はいの分岐）、プログラム５２はバックアップ・サーバ４０で利用可能なプロセッサ資源が閾値、例えば４０％よりもまだ大きいかどうかを判定する（決定１７２）。大きくなければ（決定１７２、いいえの分岐）、プログラム５２はステップ１４２に進んで、１つ前に圧縮されたログ更新ファイルを逐次的に、すなわち、現在解凍しているログ更新ファイルの解凍後に処理する。しかし、バックアップ・サーバ４０で利用可能なプロセッサ資源が閾値よりも大きい場合（決定１７２、はいの分岐）、プログラム５２はステータス・テーブル５８から、本番サーバ２０から受信し解凍を待っている圧縮ログ更新ファイルのすべてを識別する（ステップ１７３）。次に、プログラム５２はデータ解凍プログラム５１ｃを呼び出して、解凍がまだ開始されていない１つ前に圧縮されたログ更新ファイルを解凍する（ステップ１７４）。次に、プログラム５２は解凍を待っている一または複数の他の圧縮ログ更新ファイルがあるかどうかを判定する（決定１７６）。あれば（決定１７６、はいの分岐）、プログラム５２はバックアップ・サーバ４０で利用可能なプロセッサ資源が閾値、例えば４０％よりもまだ大きいかどうかを判定する。大きくなければ（決定１７２、いいえの分岐）、プログラム５２はステップ１４２に進んで、１つ前に圧縮されたログ更新ファイルを逐次的に、すなわち、現在解凍しているログ更新ファイルの解凍後に処理する。しかし、バックアップ・サーバ４０で利用可能なプロセッサ資源が閾値よりも大きい場合（決定１７２、はいの分岐）、プログラム５２はステータス・テーブル５８から、本番サーバ２０から受信し解凍を待っている圧縮ログ更新ファイルのすべてを識別する（ステップ１７３）。次に、プログラム５２はデータ解凍プログラム５１ｄを呼び出して、解凍がまだ開始されていない１つ前に圧縮されたログ更新ファイルを解凍する（ステップ１７４）。次に、プログラム５２は解凍を待っている一または複数の他の圧縮ログ更新ファイルがあるかどうかを判定する（決定１７６）。あれば（決定１７６、はいの分岐）、プログラム５２はバックアップ・サーバ４０で利用可能なプロセッサ資源が閾値、例えば４０％よりもまだ大きいかどうかを判定する。大きくなければ（決定１７２、いいえの分岐）、プログラム５２はステップ１４２に進んで、１つ前に圧縮されたログ更新ファイルを逐次的に、すなわち、現在解凍しているログ更新ファイルの解凍後に処理する。しかし、バックアップ・サーバ４０で利用可能なプロセッサ資源が閾値より大きい場合（決定１７２、はいの分岐）、プログラム５２はステータス・テーブル５８から、本番サーバ２０から受信して解凍を待っている圧縮ログ更新ファイルのすべてを識別する（ステップ１７３）。次に、プログラム５２はデータ解凍プログラム５１ｄを呼び出して、解凍がまだ開始されていない１つ前に圧縮されたログ更新ファイルを解凍する（ステップ１７４）。次に、プログラム５２は解凍を待っている一または複数の他の圧縮ログ更新ファイルがあるかどうかを判定する（決定１７６）。あれば（決定１７６、はいの分岐）、プログラム５２はバックアップ・サーバ４０で利用可能なプロセッサ資源が閾値、例えば４０％よりもまだ大きいかどうかを判定する。大きくなければ（決定１７２、いいえの分岐）、プログラム５２はステップ１４２に進み、１つ前に圧縮されたログ更新ファイルを逐次的に、すなわち、現在解凍しているログ更新ファイルの解凍後に処理する。しかし、バックアップ・サーバ４０で利用可能なプロセッサ資源が閾値よりも大きい場合（決定１７２、はいの分岐）、プログラム５２はステータス・テーブル５８から、本番サーバ２０から受信し解凍を待っている圧縮ログ更新ファイルのすべてを識別する（ステップ１７３）。次に、プログラム５２はデータ解凍プログラム５１ｅを呼び出して、解凍がまだ開始されていない１つ前に圧縮されたログ更新ファイルを解凍する（ステップ１７４）。このように、バックアップ・サーバで十分なプロセッサ資源が利用できれば、複数の圧縮ログ更新ファイルを並列／同時に解凍する。次に、プログラム５２は解凍を待っている一または複数の他の圧縮ログ更新ファイルがあるかどうかを判定する（決定１７６）。あれば（決定１７６、はいの分岐）、プログラム５２はバックアップ・サーバ４０で利用可能なプロセッサ資源が閾値、例えば４０％よりもまだ大きいかどうかを判定する（決定１７２）。大きくなければ（決定１７２、いいえの分岐）、プログラム５２はステップ１４２に進んで、１つ前に圧縮されたログ更新ファイルを逐次的に、すなわち、現在解凍しているログ更新ファイルの解凍後に処理する。しかし、バックアップ・サーバ４０で利用可能なプロセッサ資源が閾値よりも大きい場合（決定１７２、はいの分岐）、プログラム５２はステータス・テーブル５８から、本番サーバ２０から受信し解凍を待っている圧縮ログ更新ファイルのすべてを識別する（ステップ１７３）。次に、プログラム５２は解凍がまだ開始されていない１つ前に圧縮されたログ更新ファイルを解凍するために、次に利用可能なデータ解凍プログラム５１ａ〜ｅの呼び出しを試みる（ステップ１７４）。しかし、プログラム５２は解凍プログラム５１ａ〜ｅのいずれかがそれに割り当てられた前のログ更新ファイルの解凍を完了して、利用できるようになるまで待たなければならないことがある。以上のプロセスを解凍を待っている他のログ更新ファイルについて行う。解凍プログラム５１ａ〜ｅはすべて自身が解凍したログ更新ファイルのアイデンティティ、タイムスタンプ、およびアドレスを所定のファイルに送る。
【００２０】
図７はデータ復元プログラム５３の実装および動作を図示する。定期的、例えば５分毎に、データ復元プログラム５３は実行を開始し（ステップ１６０）、本番サーバから受信しバックアップ・サーバで本番データ・ファイル２９’に適用されるのを待っている解凍ログ更新ファイルがあるかどうかを点検する（決定１６２）。決定１６２の間、データ復元プログラム５３は解凍プログラムのいずれかが解凍した解凍ファイルのアイデンティティ、タイムスタンプ、およびアドレスを点検する。バックアップ・サーバで本番データ・ファイルに適用されるのを待っている該解凍ログ更新ファイルがあれば（決定１６２、はいの分岐）、データ復元プログラム５３は解凍ログ更新ファイルからの更新をバックアップ・サーバ内のデータ・ファイル２９’に適用する（ステップ１６３）。これによりバックアップ・サーバ内のデータ・ファイル２９’はより最新レベルで「復元」される。データ復元プログラム５３は、それ以上解凍ログ更新ファイルがなくなるまで（決定１６２、いいえの分岐）、各解凍ファイルについてステップ１６３を完了する（決定１６２、はいの分岐）。データ復元プログラム５３は、解凍ファイルが逐次か並列かで解凍されるかによらず、各解凍ファイルについてステップ１６３を完了する（決定１６２、はいの分岐）。データ復元プログラムは解凍されたログ更新をそのそれぞれのタイムスタンプに基づいた順番で適用する。すべての解凍ログ更新ファイルのデータ更新をデータ・ファイル２９’に適用し終えたら、プログラム５３はデータ・ファイル２９’にうまく適用した解凍ログ更新ファイルを削除する（ステップ１６４）。
【００２１】
データ・ダウンロード管理プログラム３２、データ圧縮プログラム３１ａ〜ｅ、ダウンロード・プログラム３３、およびログ管理プログラム３４は、磁気テープまたは磁気ディスク、光学媒体、ＤＶＤ、メモリ・スティックまたは半導体メモリなどのコンピュータ読み取り可能媒体２２０から本番サーバ２０にロードでき、またはＴＣＰ／ＩＰアダプタ・カード３６を介してインターネットからダウンロードできる。
【００２２】
データ・バックアップ管理プログラム５２、データ解凍プログラム５１ａ〜ｅ、およびデータ復元プログラム５３は、磁気テープまたは磁気ディスク、光学媒体、ＤＶＤ、メモリ・スティックまたは半導体メモリなどのコンピュータ読み取り可能媒体２４０からバックアップ・サーバ４０にロードでき、またはＴＣＰ／ＩＰアダプタ・カード５６を介してインターネットからダウンロードできる。
【００２３】
図１には示していないが、本番サーバ２０は、バックアップ・サーバ４０のデータ・バックアップ管理プログラム５２、データ解凍プログラム５１ａ〜ｅ、データ復元プログラム５３、およびステータス・テーブル５９とそれぞれ同様のデータ・バックアップ管理プログラム、データ解凍プログラム、データ復元プログラム、およびもう１つのステータス・テーブルも含む。また、バックアップ・サーバ４０は、本番コンピュータ２０のデータ・ダウンロード管理プログラム３２、データ圧縮プログラム３１ａ〜ｅ、ステータス・テーブル３８、ダウンロード・プログラム３３、Ｉ／Ｏシステム３４、ログ管理プログラム３４、および記録済みの本番データ・ファイルの更新３０とそれぞれ同様のデータ・ダウンロード管理プログラム、データ圧縮プログラム、もう１つのステータス・テーブル、ダウンロード・プログラム、Ｉ／Ｏシステム、ログ管理プログラム、および記録済みの本番データ・ファイルの更新も含む。従って、本番サーバ２０が障害を起こして、本番の演算がバックアップ・サーバ４０に復帰しても、バックアップ・サーバ４０は本番の演算を行い、本番サーバ２０の動作が再開すると本番サーバ２０にログ更新ファイルをバックアップするためのプログラム機能のすべてを備える。同様に、本番サーバ２０は、動作が再開すると、バックアップ・サーバ４０からログ更新ファイルを処理するためのプログラム機能のすべてを備える。
【００２４】
以上に基づいて、データをバックアップするシステム、方法、およびプログラムを開示してきた。しかし、本発明の範囲を逸脱することなく数多くの変更および代替が行える。例えば、ダウンロード周期は圧縮を行うのに必要な時間に基づいて変更できるので、圧縮の多くが当初のダウンロード周期よりも長くかかる場合に、ダウンロード時間を増やせる。また、ネットワーク３５またはバックアップ・サーバの長時間にわたる稼動停止の後、プログラム３２はバックアップ・サーバを本番サーバに再同期させるのに要する時間を、本番サーバから圧縮ファイルをダウンロードするのに要する時間、およびバックアップ・サーバで圧縮ファイルを解凍するのに要する時間に基づいて見積もることができる。この見積もりは圧縮ファイルの長さ、利用可能なネットワーク帯域幅と速度、およびバックアップ・サーバの解凍プログラムの速度に基づく。そのため、本発明は制限ではなく例示によって開示しており、本発明の範囲の判断には本請求項を参照するべきである。
【図面の簡単な説明】
【００２５】
【図１】本発明を実施する本番サーバおよびバックアップ・サーバを含む分散型コンピュータ・システムのブロック図。
【図２】本発明による図１の本番サーバのデータ・ダウンロード管理プログラムのフローチャート。
【図３】本発明による図１の本番サーバのデータ・ダウンロード管理プログラムのフローチャート。
【図４】本発明による図１の本番サーバのデータ・ダウンロード管理プログラムのフローチャート。
【図５】本発明による図１のバックアップ・サーバのデータ・バックアップ管理プログラムのフローチャート。
【図６】本発明による図１のバックアップ・サーバのデータ・バックアップ管理プログラムのフローチャート。
【図７】図１のバックアップ・サーバ内のデータ復元プログラムのフローチャート。
【図１】
2008305404.tif 000003
【図２】
2008305404.tif 000004
【図３】
2008305404.tif 000005
【図４】
2008305404.tif 000006
【図５】
2008305404.tif 000007
【図６】
2008305404.tif 000008
【図７】
2008305404.tif 000009