JP5647624B2 - I/oを中断しないマルチサーバ・アプリケーション同期の方法、プログラム、及び、システム - Google Patents

I/oを中断しないマルチサーバ・アプリケーション同期の方法、プログラム、及び、システム Download PDF

Info

Publication number
JP5647624B2
JP5647624B2 JP2011546647A JP2011546647A JP5647624B2 JP 5647624 B2 JP5647624 B2 JP 5647624B2 JP 2011546647 A JP2011546647 A JP 2011546647A JP 2011546647 A JP2011546647 A JP 2011546647A JP 5647624 B2 JP5647624 B2 JP 5647624B2
Authority
JP
Japan
Prior art keywords
time
server
handler
communication
application
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2011546647A
Other languages
English (en)
Other versions
JP2012517042A (ja
Inventor
テビス、グレゴリー、ジョン
ライチェスティン、エラン
エルロム、オファー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2012517042A publication Critical patent/JP2012517042A/ja
Application granted granted Critical
Publication of JP5647624B2 publication Critical patent/JP5647624B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1461Backup scheduling policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)
  • Retry When Errors Occur (AREA)

Description

本発明は、全般的に、改善されたデータ処理システムおよび方法に関し、特に、複数のサーバにわたるアプリケーション同期を使用して、業務データを保護する方法に関する。
業務データの保護は、現代の情報技術(IT:Information Technology)運用の重要な役割である。業務データは多数の形式で生じ、データベース、ファイル・システム、電子メール・アプリケーション、オンライン・トランザクション・システムなどを含む様々な業務アプリケーションにより管理される。この業務データおよび当該データを管理する業務アプリケーションを保護する、多岐にわたるデータ保護システム、方法および技法がある。データ保護のためのこうしたシステム、方法および技法には、従来のファイル・バックアップ、イメージ・バックアップ技法、ストレージ・ハードウェア・レプリケーション機能、スナップショット、継続的データ保護、ミラーリング、および同様のものが含まれる。
現代の業務アプリケーションおよびそれに関連する業務データは、複数のサーバにわたって分散して、アプリケーションの拡張性およびパフォーマンスのさらなる向上を可能にすることが増えている。現代のアプリケーション・アーキテクチャでは、こうしたアプリケーションおよびデータはさらに、局所、地域、国家、または場合によっては地球規模の距離にまでもわたって分散することもある。これは、データ保護の非常に大きな課題を、既存のシステム、方法および技法に対してもたらす。これがもたらす最も大きな課題の1つは、アプリケーションおよびそのデータの一貫性のあるビューを持つデータ・コピーを得るために、アプリケーションの様々なコンポーネントおよびその関連するデータを同期させることである。あるポイント・イン・タイム(point in time)におけるアプリケーションおよびデータの一貫性のあるビューがなければ、ある程度のアプリケーションまたはデータの破損なしにはアプリケーションおよびそのデータを回復することができなくなる危険性がある。これは、例えば、完了していないインフライト・トランザクション(inflight transaction)が原因であることが多い。これは、どのようなアプリケーションにも関連し、単一サーバ・アプリケーションにさえも関連する問題である。複数のボリュームおよび複数のサーバに、特に距離を隔ててまたがるアプリケーションは、さらに困難な課題をもたらす。
この分野の一連の従来技術は、ボリュームのハードウェアまたはソフトウェア・スナップショット、およびグループとして共に複製されてその同期が保証される整合性グループ(consistency group)へのボリュームのグループ化を使用することである。ハードウェア・スナップショット・ソリューションの手法に関連する重要な問題の1つは、ソリューションが、ストレージ・ハードウェアまたはストレージ・ネットワーク・レベルで実装されるため、必要とされるいかなるアプリケーション親和性(application affinity)も認識しないということである。さらに、ソフトウェア・スナップショット・ソリューションは、下記のように、アプリケーションとのさらなる同期を必要とする。
したがって、当該技術分野では、前述の問題に対処する必要がある。
ストレージ・ハードウェア、ソフトウェア、およびアプリケーション・ベースのスナップショット技術の利点を結集するソリューションは、有利であると考えられる。アプリケーションおよびアプリケーション・データの効率的で一貫性のあるスナップショットを、単一または複数のサーバにわたる複数のストレージ・デバイスにわたってもとることができ、アプリケーション認識およびダウンタイムを最小限に抑えるかまたはなくし、一部のアプリケーション・インターフェース特有の効率の悪さを一部回避する形で実行することができるソリューションが追求される。
一実施形態による方法は、複数のサーバ上で実行されているアプリケーションに関連するデータのバックアップを実行するリクエストを受信するステップと、サーバとの通信に基づき時間値を計算するステップであって、時間値の計算は、通信のうちの少なくとも1つのレイテンシ、および参照時間クロック値と、サーバのうちの少なくとも1つの時間クロック値との間の差のうちの少なくとも1つを含む、該ステップと、データに対する連係バックアップ動作(coordinated backup operation)をほぼ同じスタート時間に開始するよう、サーバ上のI/Oハンドラと通信するステップとを含む。
別の実施形態による方法は、複数のサーバ上で実行されているアプリケーションに関連するデータのバックアップを実行するリクエストを受信するステップと、サーバとの通信に基づき時間値を計算するステップであって、時間値の計算は、通信のうちの少なくとも1つのレイテンシ、および参照時間クロック値と、サーバのうちの少なくとも1つの時間クロック値との間の差のうちの少なくとも1つを含み、時間値は、サーバが同期するための時間の最大偏差(maximum deviation)を表す、該ステップと、データに対する連係バックアップ動作をほぼ同じスタート時間に開始するよう、サーバ上のI/Oハンドラに命令するステップとを含み、I/Oハンドラは、アプリケーションのインスタンスと、それに関連するデータ・ストレージ・ボリュームとの間の通信を、バックアップ動作を開始する間延長(stretch)する。
さらに別の実施形態によるコンピュータ・プログラム製品は、コンピュータ使用可能媒体により具現化されたコンピュータ使用可能プログラム・コードを有する、該コンピュータ使用可能媒体を含む。コンピュータ使用可能プログラム・コードは、複数のサーバとの通信に基づく時間値の計算であって、時間値の計算は、通信のうちの少なくとも1つのレイテンシ、および参照時間クロック値と、サーバのうちの少なくとも1つの時間クロック値との間の差のうちの少なくとも1つを含む、該計算を行うために構成されたコンピュータ使用可能プログラム・コードと、データに対する連係バックアップ動作をほぼ同じスタート時間に開始するよう、サーバ上のI/Oハンドラと通信するために構成されたコンピュータ使用可能プログラム・コードとを含む。
一実施形態によるシステムは、プロセッサおよびコンピュータ使用可能媒体を含み、コンピュータ使用可能媒体は、それにより具現化されたコンピュータ使用可能プログラム・コードを有し、コンピュータ使用可能プログラム・コードは、プロセッサによって実行されると、プロセッサに、サーバとの通信に基づき時間値を計算することであって、時間値の計算は、通信のうちの少なくとも1つのレイテンシ、および参照時間クロック値と、サーバのうちの少なくとも1つの時間クロック値との間の差のうちの少なくとも1つを含む、該計算すること、ならびに、データに対する連係バックアップ動作をほぼ同じスタート時間に開始するよう、サーバ上のI/Oハンドラと通信することを行わせる。
別の実施形態によるシステムは、複数のサーバ上の時間同期モジュール(time synchronizer module)と通信する時間同期サーバ(time synchronizer server)であって、それ自体と、時間同期モジュールとの間の時間差同期(time difference synchronization)を計算する、該時間同期サーバと、サーバ上で実行されているアプリケーションに関連するデータの同期化バックアップ動作(synchronized backup operation)をほぼ同じポイント・イン・タイムに開始するよう、サーバ上のI/Oハンドラと通信するバックアップ・サーバであって、同期化バックアップ動作のスタート時間は、時間同期サーバによって計算された時間差同期に少なくとも部分的に基づく、該バックアップ・サーバとを含む。
これらの実施形態の任意のものが、例えばソリッド・ステート・ドライブ(SSD:solid state drive)、フラッシュ・メモリ、テープ・ドライブ・システムなどの磁気データ・ストレージ・システム、光学デバイス、ネットワーク・ストレージ・デバイス、仮想化ストレージ・デバイスなど、任意のストレージ・デバイスにおいて実装され得る。
本発明の他の側面および実施形態が、以下の詳細な説明から明らかになる。詳細な説明は、図面と併せて理解されることで、本発明の原理を例として示す。
以下、本発明について、下記の図面に示されている好適な実施形態を参照して、単なる例として記載する。
一実施形態による、マルチサーバ・アプリケーションの一貫性のあるデータ保護のためのシステムの簡略図である。 一実施形態による方法のフローチャートを示す。
以下の説明は、本発明の全般的な原理を示すように構成されており、本願明細書において請求される発明概念を限定することは意図されていない。さらに、本願明細書に記載される特定の特徴は、様々な可能な組み合わせおよび置換それぞれにおいて、記載されている他の特徴と組み合わせて使用可能である。
本願明細書で明確に他の定義がない限り、すべての用語には、明細書が暗示する意味、ならびに当業者により理解される意味または辞書、論文などで定義されている意味あるいはその両方を含め、その最大限広範な解釈が与えられるものとする。
なお、さらに、本明細書および添付の特許請求の範囲で使用される単数形の「a」、「an」および「the」は、他の指定がない限り複数の指示対象を含む。
アプリケーションによって提供される、複数のサーバにわたる同期は、他の者も試みてきたが、こうした手法は、アプリケーション・レベルで実装され、アプリケーション特有であって他のアプリケーションには適用されず、典型的にはアプリケーションAPIへの書き込みを必要とし、通常はパフォーマンス・コストを伴うという点において、不完全である。さらに、ホスト・ベースのボリューム・レプリケーション・ソリューションが存在するが、複数のシステム上の複数のボリュームにわたってレプリケーションを同期させるものではない。
この分野への関心にもかかわらず、アプリケーションの単一サーバ実装でさえも、同期チェックポイントおよびインターフェースが有効なアプリケーションはほとんどない。アプリケーションの複数サーバ実装に関しては、効果的かつ効率的な同期チェックポイント・インターフェースがあることはさらにまれである。場合によっては、従来技術では、アプリケーションの完全シャットダウン、それに続くアプリケーションの完全バックアップ、それに続くアプリケーションの再起動が必要である。これは、業務に不可欠な環境の多くで容認できないことである。さらに、複数のサーバにわたってこれを行うことは非常に困難である。さらに、アプリケーションが同期を可能にし、データ保護ソリューションが当該インターフェースを使用する場合でも、やはりこの手法は効率がかなり悪い。例えば、データ保護スキームは、アプリケーションが当該インターフェースを提供することに依存するが、当該インターフェースは利用できないことが多く、利用できても非常に非効率的である(例えば実行が遅い)ことが多い。最後に、ハードウェア・ミラーリングおよびレプリケーション・ソリューションは、典型的には、継続的な業務運営に焦点を当てており、以前のポイント・イン・タイムへの回復を必要とする破損問題からの回復は不可能である。
本発明の実施形態は、前述の欠点を克服する。
以下の説明は、単一または複数のサーバにわたる複数のストレージ・デバイスにわたるアプリケーション同期を使用して、業務データまたは他のタイプのデータあるいはその両方を保護するシステムおよび方法を開示する。
本願明細書で使用される「I/Oハンドラ」は、任意のボリューム・ドライバ、ディスク・ドライバ、I/Oフィルタ・ドライバなどであればよく、入出力動作を効果的に凍結(freeze)または延長することができ、I/Oハンドラの関連するすべてのボリューム、ディスク、ドライブなどのデータのバックアップ動作を開始することができる。
本願明細書で使用される「アプリケーション」は、1つ以上のマシン、サーバなどで実行されているいくつかのアプリケーション・インスタンスから構成されるとよく、各アプリケーション・インスタンスは、それが管理するデータ間の何らかのデータ整合性を保ち、すべてのアプリケーション・インスタンスの組み合わせが全体でアプリケーションを構成する。さらに、アプリケーションは、多数の異なる動作、部分またはアクティビティ、あるいはそのいずれかの組み合わせ(例えば索引付け、データベース、およびウェブ・インターフェースなど)を有することもでき、各部分、動作、またはアクティビティ、あるいはそのいずれかの組み合わせが、異なるマシンから機能することもできる。こうしたアプリケーションの部分、動作、またはアクティビティ、あるいはそのいずれかの組み合わせのすべてが、全体でアプリケーションを構成する。
本願明細書で使用される「スナップショット」は、ハードウェア・スナップショット、ソフトウェア・スナップショット、またはその他任意のポイント・イン・タイム・バックアップ・メカニズムから作られるポイント・イン・タイム・バックアップなど、任意のポイント・イン・タイム・バックアップを指す。
概略の一実施形態において、方法が提供される。動作中、複数のサーバ上で実行されているアプリケーションに関連するデータのバックアップを実行するリクエストが受信される。さらに、サーバとの通信に基づく時間値が計算され、時間値の計算は、通信のうちの少なくとも1つのレイテンシ、および参照時間クロック値と、サーバのうちの少なくとも1つの時間クロック値との間の差のうちの少なくとも1つを含む。さらに、データに対する連係バックアップ動作をほぼ同じスタート時間に開始するよう、各サーバ上のI/Oハンドラとの通信が行われる。
別の概略の実施形態において、方法が提供される。動作中、複数のサーバ上で実行されているアプリケーションに関連するデータのバックアップを実行するリクエストが受信される。さらに、サーバとの通信に基づき時間値が計算され、時間値の計算は、通信のうちの少なくとも1つのレイテンシ、および参照時間クロック値と、サーバのうちの少なくとも1つの時間クロック値との間の差のうちの少なくとも1つを含み、時間値は、サーバが同期するための時間の最大偏差を表す。さらに、サーバ上のI/Oハンドラが、データに対する連係バックアップ動作をほぼ同じスタート時間に開始するよう命令され、I/Oハンドラは、バックアップ動作を開始する間、アプリケーションのインスタンスと、それに関連するデータ・ストレージ・ボリュームとの間の通信を延長する。
別の概略の実施形態において、コンピュータ・プログラム製品が提供される。コンピュータ・プログラム製品は、コンピュータ使用可能媒体により具現化されたコンピュータ使用可能プログラム・コードを有する、該コンピュータ使用可能媒体を含み、コンピュータ使用可能プログラム・コードは、複数のサーバとの通信に基づき時間値を計算するために構成されたコンピュータ使用可能プログラム・コードを含み、時間値の計算は、通信のうちの少なくとも1つのレイテンシ、および参照時間クロック値と、サーバのうちの少なくとも1つの時間クロック値との間の差のうちの少なくとも1つを含む。コンピュータ使用可能プログラム・コードはさらに、データに対する連係バックアップ動作をほぼ同じスタート時間に開始するよう、サーバ上のI/Oハンドラと通信するために構成されたコンピュータ使用可能プログラム・コードを含む。
別の概略の実施形態において、システムが提供される。システムは、プロセッサおよびコンピュータ使用可能媒体を含み、コンピュータ使用可能媒体は、それにより具現化されたコンピュータ使用可能プログラム・コードを有する。コンピュータ使用可能プログラム・コードは、プロセッサによって実行されると、プロセッサに、サーバとの通信に基づき時間値を計算することであって、時間値の計算は、通信のうちの少なくとも1つのレイテンシ、および参照時間クロック値と、サーバのうちの少なくとも1つの時間クロック値との間の差のうちの少なくとも1つを含む、該計算すること、ならびに、データに対する連係バックアップ動作をほぼ同じスタート時間に開始するよう、サーバ上のI/Oハンドラと通信することを行わせる。
別の概略の実施形態において、システムが提供される。システムは、複数のサーバ上の時間同期モジュールと通信する時間同期サーバを含み、時間同期サーバは、それ自体と、時間同期モジュールとの間の時間差同期を計算する。さらに、システムは、サーバ上で実行されているアプリケーションに関連するデータの同期化バックアップ動作をほぼ同じポイント・イン・タイムに開始するよう、サーバ上のI/Oハンドラと通信するバックアップ・サーバを含み、同期化バックアップ動作のスタート時間は、時間同期サーバによって計算された時間差同期に少なくとも部分的に基づく。
当業者であれば当然のことであるが、本発明は、システム、方法またはコンピュータ・プログラム製品として具現化され得る。したがって、本発明は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、または本願明細書においてすべて一般に「回路」、「モジュール」または「システム」と呼ばれ得る、ソフトウェアおよびハードウェアの側面を兼ね備えた実施形態の形態をとり得る。さらに、本発明は、任意の有形の表現媒体において具現化されたコンピュータ使用可能プログラム・コードを有する該媒体において具現化されたコンピュータ・プログラム製品の形態をとることもできる。
1つ以上のコンピュータ使用可能またはコンピュータ可読媒体(単数または複数)の任意の組み合わせが利用され得る。コンピュータ使用可能またはコンピュータ可読媒体は、例えば、次に限定はされないが、電子、磁気、光学、電磁気、赤外線、もしくは半導体システム、装置、デバイス、または伝播媒体とされ得る。コンピュータ可読媒体のより具体的な例(包括的でないリスト)には、1つ以上のワイヤを有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read−only memory)、消去可能プログラム可能読み取り専用メモリ(EPROM(erasable programmable read−only memory)すなわちフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD−ROM:compact disc read−only memory)、光学式ストレージ・デバイス、インターネットもしくはイントラネットをサポートする伝送媒体などの伝送媒体、または磁気ストレージ・デバイスが含まれるであろう。なお、プログラムは、例えば紙または他の媒体の光学式走査により電子的に獲得され、続いて必要に応じコンパイル、解釈、または適切な方法により別の形で処理され、続いてコンピュータ・メモリに記憶されることが可能なため、コンピュータ使用可能またはコンピュータ可読媒体は、プログラムが印刷される紙または別の適切な媒体とすることさえもできる。この文書の文脈では、コンピュータ使用可能またはコンピュータ可読媒体は、命令実行システム、装置もしくはデバイスによって、もしくはそれに関連して使用されるプログラムを含むこと、記憶すること、伝達すること、伝播させること、または搬送することができる任意の媒体であればよい。コンピュータ使用可能媒体は、ベースバンドにおいて、または搬送波の一部として伝播データ信号により具現化されたコンピュータ使用可能プログラム・コードを備える該伝播データ信号を含むこともできる。コンピュータ使用可能プログラム・コードは、次に限定はされないが、無線、有線、光ファイバ・ケーブル、RFなどを含め、任意の適切な媒体を使用して伝送されることもできる。
本発明の動作を実行するコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++または同様のものなどのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは同様のプログラミング言語などの従来の手続きプログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで書かれることもできる。プログラム・コードは、スタンド・アロン・ソフトウェア・パッケージとして、完全にユーザのコンピュータ上で実行されること、部分的にユーザのコンピュータ上で実行されること、または部分的にユーザのコンピュータ上で、かつ部分的にリモート・コンピュータ上で実行されること、または完全にリモート・コンピュータもしくはサーバ上で実行されることもできる。後者のシナリオでは、ローカル・エリア・ネットワーク(LAN:local area network)、もしくは広域ネットワーク(WAN:wide area network)を含む任意のタイプのネットワークを介してリモート・コンピュータがユーザのコンピュータに接続されてもよく、または、外部コンピュータに対する接続が行われてもよい(例えば、インターネット・サービス・プロバイダを使用しインターネットを介して)。
本発明の好適な実施形態による方法、装置(システム)およびコンピュータ・プログラム製品のフローチャート図またはブロック図、あるいはその両方を参照して、本発明について以下に記載する。当然のことながら、フローチャート図またはブロック図、あるいはその両方の各ブロック、およびフローチャート図またはブロック図、あるいはその両方の複数ブロックの組み合わせは、コンピュータ・プログラム命令により実装されることが可能である。マシンを生じるよう、当該コンピュータ・プログラム命令が、汎用コンピュータ、専用コンピュータ、またはその他のプログラム可能データ処理装置のプロセッサに提供されて、この命令が、コンピュータまたはその他のプログラム可能データ処理装置のプロセッサにより実行されて、フローチャートまたはブロック図あるいはその両方のブロックもしくは複数ブロックにおいて指定された機能/動作を実装する手段を作り出すようにすることもできる。
さらに、特定の形で機能するようコンピュータまたはその他のプログラム可能データ処理装置に指示することができる当該コンピュータ・プログラム命令は、コンピュータ可読媒体に記憶されて、コンピュータ可読媒体に記憶されたこの命令が、フローチャートまたはブロック図あるいはその両方のブロックもしくは複数ブロックにおいて指定された機能/動作を実装する命令手段を含む製品を生じるようにすることもできる。
さらに、コンピュータ・プログラム命令は、コンピュータまたはその他のプログラム可能データ処理装置にロードされて、コンピュータまたはその他のプログラム可能装置上で一連の動作ステップが実行されるようにしてコンピュータに実装されるプロセスを生じさせ、コンピュータまたはその他のプログラム可能装置上で実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックもしくは複数ブロックにおいて指定された機能/動作を実装するためのプロセスを提供するようにすることもできる。
新たなブロックおよび変更されたブロックの効率的なコピー、およびボリューム・ドライバ、ディスク・ドライバ、I/Oフィルタ・ドライバなどのI/Oハンドラを使用する、複数のサーバにわたるアプリケーション同期の新規な方法の使用により、スナップショットを実行する方法が開示される。
具体的には、アプリケーション統合を用いない、複数のストレージ・デバイスおよび複数のサーバにわたるアプリケーション・データの一貫性のある同期のための、種々のプロダクション・サーバ上で実行されている複数のI/OハンドラにわたるI/Oレベルのポイント・イン・タイム同期を含む、データ保護システムおよび方法を含んだいくつかの実施形態が、本願明細書に開示される。
別の実施形態は、I/Oの凍結を必要とすることなく、複数のストレージ・デバイスおよび複数のサーバにわたって実行されているアプリケーションの一貫性のあるバックアップを実現するために、時間同期モジュールを備える種々のプロダクション・サーバ上で実行されている多数のI/Oハンドラを連係させるデータ保護システムおよび方法を含む。
さらに別の実施形態は、マルチサーバ・レベルでアプリケーションとインターフェースをとることなく、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)の距離を介する複数のストレージ・デバイスおよび複数のサーバにわたってとられる、アプリケーション・データの一貫性のあるポイント・イン・タイム・スナップショットを含む。
別の手法は、ローカル接続ディスク、直接接続ディスク、およびストレージ・エリア・ネットワーク(SAN:Storage Area Network)接続ディスクを含め、複数のサーバにわたる複数のストレージ・デバイスにわたってとられるアプリケーション・データの一貫性のあるポイント・イン・タイム・スナップショットを含む。
さらに別の手法は、通信レイテンシを含む時間問い合わせの分析によって2つの異なるサーバ間の時間差の程度を判断する方法を含む。
さらなる実施形態は、ホストのグループおよびこれらのホストが生成するI/Oリクエストの間の、見込まれる最大の時間差および通信レイテンシの間での同期方法を含む。
各図面のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の考えられる実装のアーキテクチャ、機能性および動作を示す。この関連で、フローチャートまたはブロック図内の各ブロックは、指定の論理機能(単数または複数)を実装する1つ以上の実行可能命令を含むモジュール、セグメント、またはコードの一部を表すこともできる。なお、さらに、いくつかの代わりの実装では、ブロック内に示されている機能が、図面に示されているのとは異なる順序で生じてもよい。例えば、関連する機能性次第で、連続して示されている2つのブロックが実際には事実上同時に実行されてもよく、または、各ブロックが逆順で実行されることがあってもよい。なお、さらに、ブロック図またはフローチャート図、あるいはその両方の各ブロック、およびブロック図またはフローチャート図、あるいはその両方の複数ブロックの組み合わせは、指定の機能または動作を実行する専用ハードウェア・ベース・システム、または専用ハードウェアおよびコンピュータ命令の組み合わせにより実装することができる。
一部の好適な実施形態では、マルチサーバ・アプリケーションを保護する新規なシステム、方法、およびコンピュータ製品が、一貫性のある形で実装され得る。図1を参照する。マルチサーバ業務アプリケーション102は、複数のアプリケーション・インスタンス104から成るとよく、各インスタンスが、別々のプロダクション・サーバ108または仮想サーバ上、あるいはその両方で実行されている。アプリケーション・インスタンス104は、関連のある従来技術の当業者には既知であるように、ピア・ツー・ピア、マスタ・スレーブ、またはその他のアーキテクチャによって共に連係して、マルチサーバ業務アプリケーション102を形成するとよい。同期化スナップショット・サーバ116は、マルチサーバ業務アプリケーション102のスナップショットを実行するリクエストを受信するとよく、一貫性のあるスナップショットを実行するよう1つ以上のI/Oハンドラ110を連係させるとよい。
I/Oハンドラ110は、マルチサーバ業務アプリケーション102と、データ・ストレージ・デバイス106またはボリュームあるいはその両方との間のI/O動作を実行することを許可する、可能にする、または他の形で支援する任意のドライバ、ソフトウェア、ハードウェアなどのモジュールであればよい。
好適な実施形態では、ソリューションは、図1に示されているモジュールを使用するとよい。アプリケーション・インスタンス(単数または複数)104が実行されている全部または一部のプロダクション・サーバ108に、時間同期モジュール114が存在するとよい。時間同期モジュール114は、所定のアプリケーションに関連する2つ以上のサーバ間の時間を同期させるための、時間同期サーバ112からのリクエスト(単数または複数)に応答するとよい。さらに、時間同期モジュール114は、それら自体の間で、どのサーバからも独立して時間を同期させてもよい。
I/Oハンドラ110は、アプリケーション・インスタンス(単数または複数)104が実行されている、それぞれの実もしくは仮想プロダクション・サーバ108、またはいくつかの実もしくは仮想プロダクション・サーバ108、または1つの実もしくは仮想プロダクション・サーバ108に存在するとよい。I/Oハンドラ110は、1つ以上のアプリケーション・インスタンス104からのI/O動作(例えばI/Oリクエスト、データ転送など)を傍受する能力を有するとよい。I/Oハンドラ110はさらに、要求に応じて、または特定のイベントがあると、すべての待ち状態のI/O動作を凍結し、I/O動作を凍結解除(thaw)するようリクエストされるか、または別の特定のイベントが発生するまで、I/O動作を凍結状態にしておくことができる。I/O動作の凍結は、あらゆる待ち状態のI/O動作または指定のディスクに送信されるあらゆるI/O動作が、凍結解除まで遅延させられるか、または拒否されるということを意味する。さらに、これらのI/Oハンドラは、I/O動作が、処理はされるがある指定の期間後まで完了を許可されないように、I/O動作を延長することができる。これらのI/Oハンドラ110は、複数のサーバにわたって同期化データ保護動作を連係させるよう、新規な形で利用されるとよい。
同期化スナップショット・サーバ116は、別個のホスト上に存在するとよく、このホストは、プロダクション・サーバ108のうちの1つであっても、そうでなくてもよい。このサーバは、時間同期モジュール114またはI/Oハンドラ110あるいはその両方のインスタンス(単数または複数)の全部、一部、または1つ、あるいはそのいずれかの組み合わせと通信できる。同期化スナップショット・サーバ116は、時間同期サーバ112を用いて時間値を得るとよく、時間値は、一部の実施形態では、所定のアプリケーションに関連するすべてのサーバの間の最大時間差分(maximum time delta)である。さらに、同期化スナップショット・サーバ116は、この時間値を、マルチボリューム、マルチサーバ業務アプリケーション102の、同期化されたI/Oレベルの一貫性のあるスナップショットの実行において使用するとよい。
時間同期サーバ112は、同期化スナップショット・サーバ116内で実行されるとよく、所定のアプリケーションに関連するサーバ(単数または複数)108のうちの全部、一部、または1つ、あるいはそのいずれかの組み合わせの間の最大時間差分などの時間値を判断するために、リクエストに応じて、それ自体と、時間同期モジュール114の全部、一部、または1つ、あるいはそのいずれかの組み合わせとの間の時間差同期を促進するとよい。
特に好適な実施形態では、本アプリケーション・ボリューム同期方法は、複数のストレージ・デバイスおよび複数のサーバにわたって同期を実現するために、いかなるアプリケーション・インターフェースとの統合も必要としない。一方、同期を開始するのにより望ましく効率的な、何らかの時またはデータ管理ポイントがあることもある(例えば、複数のI/O動作を含み得るアプリケーション・トランザクション完了の後)。こうしたポイントのうち、どれが同期の実行に最も有益かは、アプリケーションのみに分かることもあり得る。この好適な実施形態は、それ自体の新規な同期と併せて、アプリケーション特有のインターフェースと統合し、アプリケーションからの入力に基づき(すなわちアプリケーションの観点から)最適なポイント・イン・タイムに同期が生じることを保証することもできる。
引き続き図1を参照する。同期化スナップショット・サーバ116は、そのドメイン内のすべてのI/Oハンドラ110を継続的に追跡するとよい。同期化スナップショット・サーバ116はさらに、これらのI/Oハンドラ110のうちどれが任意のマルチサーバ業務アプリケーション102に関連するかを認識するとよい。この認識は、関連のある従来技術の当業者には既知であるように、手入力によって、または自動アプリケーション・リソース発見によって、あるいはその両方によって実現されるとよい。さらに、任意の関連するオペレーティング・システムおよび構成情報(例えば、Microsoft(R)の、関係のあるWindows(R)レジストリ・キー・データ、デバイス構成など)、ならびにアプリケーションに関与するストレージ・デバイス106と、サーバ108との間の接続の全部、一部、または1つ、あるいはそのいずれかの組み合わせが、同期および保存されるとよい。(MicrosoftおよびWindowsは、米国、その他の国々、または両方における、Microsoft Corporationの商標である)。
同期は、アプリケーションに関連する1つ以上のストレージ・デバイス106またはボリュームに対するI/O動作の全部、一部、または1つ、あるいはそのいずれかの組み合わせを凍結するようI/Oハンドラ110にリクエストすることによって、I/Oハンドラ110の全部、一部、または1つ、あるいはそのいずれかの組み合わせにわたって実現可能である。しかし、各I/Oハンドラ110が、同期およびスナップショット開始プロセスの持続期間全体にわたって他のすべてのI/Oハンドラ110を待たなければならず、この持続期間全体の間、すべてのI/O動作がブロックされ得るため、この同期の方法はパフォーマンス上の問題をもたらすこともある。この問題は、時間同期オブジェクトを追加すること、およびI/O動作を凍結させるのではなく延長することによって、以下の新規な方法で解決可能である。
一部の実施形態では、本願明細書において開示される方法は、システムに含まれるとよい。このシステムは、プロセッサおよびコンピュータ可読媒体を含むとよく、コンピュータ可読媒体は、それにより具現化されたコンピュータ使用可能プログラム・コードを有し、コンピュータ使用可能プログラム・コードは、プロセッサによって実行されると、プロセッサに、サーバとの通信に基づき時間値を計算することであって、時間値の計算は、通信のうちの少なくとも1つのレイテンシ、および参照時間クロック値と、サーバのうちの少なくとも1つの時間クロック値との間の差のうちの少なくとも1つを含む、該計算すること、ならびに、データに対する連係バックアップ動作をほぼ同じスタート時間に開始するようサーバ上のI/Oハンドラと通信することを行わせる。
他の実施形態では、本願明細書において開示される方法は、別のシステムに含まれるとよい。システムは、複数のサーバ上の時間同期モジュールと通信する時間同期サーバを含むとよく、時間同期サーバは、時間同期サーバと、時間同期モジュールとの間の時間差同期を計算する。さらに、システムは、サーバ上で実行されているアプリケーションに関連するデータの同期化バックアップ動作をほぼ同じポイント・イン・タイムに開始するよう、サーバ上のI/Oハンドラと通信するバックアップ・サーバ(例えば同期化スナップショット・サーバ)を含むとよく、同期化バックアップ動作のスタート時間は、時間同期サーバによって計算された時間差同期に少なくとも部分的に基づく。なお、時間同期サーバおよびバックアップ・サーバは、同じホストまたは異なるホストに存在し得る。さらに、時間同期サーバは、バックアップ・サーバのサブコンポーネントであってもよい。
以下、図2を参照する。I/O動作を延長することにより、アプリケーションに関連する複数のストレージ・デバイスおよび複数のサーバにわたって同期を実現し、一貫性のあるバックアップを実行するプロセス・フローチャートが示されている。この方法200は、図1の機能性を背景として実行されるとよい。当然、方法200は、任意の所望の環境において実行されてもよく、図1に関係しての使用に限定はされない。
図2に示されている動作は、説明のみを目的としており、追加の、またはより少ない動作が、任意の実施形態に含まれ得る。さらに、所望の結果に応じて、一部の動作が、除外、変更または改変されてもよい。例えば、一部の実施形態では、動作202および210が、データのスナップショットを得る十分に動作可能かつ有効な方法を構成し得る。
動作202において、同期化スナップショット・サーバが、マルチデバイス、マルチサーバ業務アプリケーションの同期化データ・バックアップを実行するリクエストを受信するとよい。一部の実施形態によれば、バックアップ動作はデータのスナップショットであるとよく、簡潔性のために、本願明細書に記載されるバックアップ動作はスナップショットと呼ばれることもある。なお、これは、データのバックアップおよびデータのスナップショットを行う能力を含む本発明の範囲を限定するものではない。リクエストが開始され得るのは、ユーザ入力によって、スケジューリング・モジュールから、所定のイベントの発生によって、所定の時間の経過によって、前のスナップショット試行が失敗に終わることによってなどである。
一部の実施形態では、バックアップ動作は、マルチサーバ業務アプリケーションとの通信なしに開始されてもよい。
動作204において、同期化スナップショット・サーバは、指定のアプリケーションに関連するすべてのデバイスおよびサーバにわたる同期に使用する時間値、すなわちmax_time_deltaなどの時間値を得るよう、時間同期サーバに問い合わせるとよい。一部の実施形態によれば、時間値は、関与するサーバすべてが同期するために必要とされる時間の最大偏差を表すよう、アプリケーションに関連するすべてのサーバの時間クロックの差およびレイテンシの正規化値であるとよい。時間値は、下記の「時間値の判断」セクションに記載されるように計算されるとよい。
動作206において、同期化スナップショット・サーバは、すべてのI/Oハンドラが、T1などの指定の時間に、I/O動作を延長することによって同期化アプリケーション・インスタンス・スナップショットを実行することをリクエストするとよい。このスナップショットは、Initiate_Stretch_IO_Snapshotコマンドなどの非同期のコマンドを、アプリケーションに関連する全部、一部、または1つのI/Oハンドラに送信することによって実行されるとよい。T1、時間値、スナップショットをとるディスクまたはボリュームあるいはその両方のリスト、およびその他の適切なデータが、非同期のコマンドと共に各I/Oハンドラに渡されるとよい。
一部の実施形態では、I/Oハンドラ以外の何らかのオブジェクトが、I/Oハンドラに関連するアプリケーション・インスタンスのスナップショットを開始してもよい。他の実施形態では、I/O動作を凍結または延長したI/Oハンドラが、そのアプリケーション・インスタンスに対するスナップショットを開始してもよい。
例えば、ハード・ディスク・ドライブがアクセスされず、リクエストされたデータを求めて探索が行われないように、ハード・ディスク・ドライブのデータにアクセスするリクエストが、凍結プロセスによって割り込みおよび中断されるとよい。別の例では、文書がプリンタへ出力されないように、プリンタ・キューへ文書を出力するリクエストが割り込みされ、凍結プロセスの間保留されてもよく、ただし凍結プロセスが完了した後、続いてその文書が印刷されるようプリンタ・キューへ送られるとよい。
延長プロセスの一例としては、ファイルをハード・ディスクに書き込むリクエストが受信される場合が考えられ、この場合書き込みの開始は許可され、ファイルの相当な部分がハード・ディスクに書き込まれることができるが、その完了は延長プロセスの完了後まで許可されない。延長プロセスが完了すると、ファイルの残りがハード・ディスクに書き込まれるとよく、その結果、新たなファイルの存在を反映することができる。別の例としては、データをCD−ROMからハード・ディスク上にコピーするリクエストが受信される場合が考えられ、この場合、延長プロセスの間データはCD−ROMから読み出されてもよいが、延長プロセスの終了後までハード・ディスクに書き込まれてはならない。
さらに多くの凍結および延長の実施形態があり得、前述の例は、本発明をいかなる形でも限定することは意図されておらず、例としてのみ提示されている。
動作208において、各I/Oハンドラが、それ自体のサーバの時間クロックに従って、T1マイナス時間値などの所定時間に、I/Oハンドラが制御しており保護対象のアプリケーションに関連する任意のボリュームまたはディスクあるいはその両方に関して受信する、あらゆるI/O動作に関する通信を、延長し始めるとよい。一部の実施形態では、I/Oハンドラは、バックアップ動作を開始する間、マルチサーバ業務アプリケーションのインスタンスと、それに関連するデータ・ストレージ・ボリュームまたはディスクとの間の通信を延長するとよい。他の実施形態では、I/Oハンドラは、バックアップ動作を開始する間、アプリケーション・インスタンスと、それに関連するデータ・ストレージ・ボリュームまたはディスクあるいはその両方との間の通信を凍結してはならない。
一部の実施形態では、延長I/Oプロセスは、I/O動作が開始することは許可してもよいが、延長期間が終わるまでI/O動作の終了を許可してはならない。延長I/Oプロセスは、式1に示されているように、I/O延長時間が時間値の2倍以上になるよう、T1プラス時間値(一部の実施形態によれば最大時間差分とするとよい)までの時間など、特定の時間が経過するまで継続するとよい。
(IO_end_time−IO_start_time)≧(2*time_value) 式1
一部の実施形態によれば、時間値は、任意の2つのサーバ間で同期するための「最悪」差時間とするとよい。最も早いサーバがその延長I/Oプロセスを始める時であるIO_start_timeから、最も遅いサーバがその延長I/Oプロセスを終える時であるrelease_timeまでの時間の長さが、最大時間差分(max_time_delta)などの時間値の2倍であるとよい。I/O動作を(2*max_time_delta)延長することによって、すべての関与するサーバにわたるすべてのI/O動作にわたり、アプリケーション・データの一貫性のあるイメージを伴う、サーバ間の一貫性のある状態が実現され得る。I/Oハンドラはさらに、延長I/O期間の間に受信されるすべてのI/O動作にタグ付け(IO_start_timeを用いて)するとよく、それを監視するとよい。I/Oハンドラは、続いて、式2に示されているように別の時点で、個々のI/O動作を解放する(すなわち、当該のI/O動作の延長を中断し、その完了を許可する)ことができる。
release_time=IO_start_time+(2*max_time_delta) 式2
release_timeに達するまでの期間延長を実行することによって、個々のI/Oレベルで、すべてのサーバにわたる同期がかなり確実に実現され得る。
一部の手法では、延長は、ほぼスタート時間(例えばIO_start_time)マイナス時間値(例えばmax_time_delta)から開始されるとよい。さらなる手法では、延長は、ほぼスタート時間プラス時間値後に終了されるとよい。
動作210において、T1などの所定時間に、すべてのI/Oハンドラが、アプリケーションに関連しI/Oハンドラが制御するいずれかまたはすべてのボリュームに対するスナップショットを開始するとよい。開始が完了すると、すべてのI/Oハンドラが、スナップショットの開始が完了したという報告を同期化スナップショット・サーバに返すとよい。一部の好適な実施形態では、各I/Oハンドラが、同じ同期ウィンドウ(window of synchronization)内でバックアップ動作を開始するとよく、例えば、各サーバにおけるバックアップ動作は、非常に短い時間差の中で開始されるとよい。
動作212において、同期化スナップショット・サーバは、すべてのI/Oハンドラがスナップショットの開始の完了が実現されたという報告を返すのを待つとよい。同期化スナップショット・サーバは、何らかの通信喪失またはその他I/Oハンドラに関する障害の場合に待ち状態のままとなることを防ぐ、タイム・アウト値を有するとよい。
動作214において、アプリケーションに関連するいずれかまたはすべてのI/Oハンドラですべてのスナップショットの開始が完了すると、同期化スナップショット・サーバは、通常の動作を再開するとよい。さらに、すべてのI/Oハンドラが、式2において定義されたrelease_timeにおいて、通常のI/O動作を再開するとよい。一部の実施形態によれば、動作全体を通じてどのI/O動作も中断されず、代わりにI/O動作は延長されたのみであることが分かる。さらに、他の実施形態では、I/Oハンドラは、延長期間の間にI/O動作を処理して、release_time後までI/O完了のみを遅らせるとよい。これは、延長されたI/O動作の、release_timeにおける非常に高速なI/O完了を可能にすることによって、さらなる効率性を提供する。
動作216において、I/Oハンドラのいずれかが、アプリケーション・インスタンス・スナップショットの開始が発生したことを報告していなければ、同期化スナップショット・サーバは、スナップショットの開始が発生したという報告をすべてのI/Oハンドラが返すのを待つとよい。タイム・アウト値に達すると、同期化スナップショット・サーバは、それ以上は待たずに動作218に進むとよい。
動作218において、時間同期サーバは、最悪時間差(worst case time difference)がmax_time_deltaなどの時間値よりも大きいかどうかを判断するとよい。大きくなければ、方法200は動作212に戻る。最悪時間差が時間値よりも大きければ、その結果、方法200は動作220に進み、現在のスナップショット・プロセスは中止されるとよく、スナップショット・プロセスは動作202において再び開始される。
時間値の判断
一部の好適な実施形態の一側面は、所定のアプリケーションに関連する様々なサーバすべての間の時間の差を表す時間値の判断である。一手法による、適切な時間値を判断する一方法が本願明細書に記載される。簡潔にするために、時間値を変数max_time_deltaと呼ぶことにするが、これは決して本発明の範囲を限定せず、時間値の変数名の例としてのみ含まれている。時間値を判断する他の適切な実装が、本発明の範囲を狭めることなく使用され得る。
リクエストに応じて、または所定のイベントが発生した後、時間同期サーバは、すべてのサーバ間のmax_time_deltaを判断するとよい。max_time_deltaに組み込まれる3つの要素がある:1)同期される、所定のアプリケーションに関連するサーバ間の時間クロックの差、2)そのサーバ間の通信レイテンシ、および3)下記のファクタK。なお、一部の実施形態によれば、max_time_deltaの判断は、サーバ間の時間クロックの差およびレイテンシの問題を必ずしも解決する必要はない。max_time_deltaが表すものは、時間クロックの差およびレイテンシの問題を所与とし、複数のサーバにわたるデータ同期が時間値内で達成できる、該時間値であればよい。
アプリケーションに関連するいずれかまたはすべてのサーバ上の時間同期モジュールとの協働によって、所定のアプリケーションのmax_time_deltaを判断する時間同期サーバが、同期化スナップショット・サーバ内にあるとよい。
一部の実施形態では、時間同期サーバは、それ自体のサーバのクロックに時刻Tの問い合わせを行うとよい。この時間は、典型的には、1/100秒またはさらに小さい単位まで得られる。max_time_deltaの計算はすべて、時間同期サーバ上のサーバ・クロックに基づき判断されるとよい。他の実施形態は、max_time_deltaを、他の何らかのサーバ・クロック基準またはその他の手段に基づき判断するとよい。
時間同期サーバは、Time_Synchronization_Checkなどの時間同期確認リクエスト(time synchronization check request)を、所定のアプリケーションに関連するすべてのサーバ上のいずれかまたはすべての時間同期モジュールに送信するとよい。時間同期確認リクエストは、後からの参照用にTを含むとよい。時間同期サーバはさらに、時間同期モジュールからのレスポンスを待つとよい。
各時間同期モジュールは、時間同期確認リクエストを受信し、即座にそれ自体のサーバのクロックに時刻Tの問い合わせを行うとよく、この時間を時間同期サーバへ返すとよい。時間同期モジュールがレスポンスを返すと、時間同期サーバはそれを処理するとよい。ほぼすぐに、時間同期サーバは、再びそれ自体のサーバのクロックに時刻Tの問い合わせを行うとよい。次に、式3に従って、その特定の時間同期モジュールの総レイテンシLが計算されるとよい。
=T−T 式3
サーバとこのモジュールとの間のレイテンシのより正確な表現は、上記のプロセスを反復プロセスにおいて多数(「n」)回行い、観測されたレイテンシを式4に従って平均することによって実現可能である。
L_Ave=(S1−n)/n 式4
当該の時間同期モジュールと、時間同期サーバとの間のTD_Aveなどの平均時間差は、2つの時間差TDx1およびTDx2の平均を使用しても計算され得る。これらの時間は、式5に従って、2つのサーバの時刻クロック問い合わせ間の差の絶対値として計算されてもよい。
TDx1=|T−T|およびTDx2=|T−T| 式5
これらの時間差は、本質的に、時間同期サーバと、当該の時間同期モジュールとの間の部分的なレイテンシ(すなわち、片方向通信)を含み得る。次に、2つの時間差が式6に従って平均されるとよい。
TD_Ave=(TDx1+TDx2)/2 式6
差の絶対値は、時間同期サーバおよび時間同期モジュール上のサーバ・クロックがわずかに同期ずれしている(例えば、TがTより前の時間であるかのようである)可能性を補償すると見なされるとよい。総時間差(例えば、時刻クロックが不正確にセットされている)は、ある妥当なクロック差よりも大きなTD値を拒否することによって処理されてもよい。時間同期モジュールからの時間と、時間同期サーバの開始および終了時間とを比較することによって、2つのサーバ間のクロック差を正規化するために平均がとられるとよい。
アプリケーションに関連するすべての時間同期モジュールに関してTDx1およびTDx2を計算する間、時間同期サーバは、max_time_deltaを追跡するとよい。任意の時点の最大のmax_time_deltaが、最悪時間差値として使用されるとよく、これは、明確にするためにworst_case_time_differenceと表現できる。これらの値をさらに評価することによって、2つの異なるサーバの時間クロックがどの程度近いかについて、より正確に判断が下され得る。これは、2つのサーバ上の2つの時間クロックが完全に同期されていれば、TプラスTD_AveがTに非常に近くなるであろうことに注目することによって可能となると考えられる。この関係が分かっていれば、それらの間の時間の差を観測できる。これを何度も計算して時間の差を反復して平均することによって、2つのサーバ間の時間差を概算することができる。
すべての時間同期モジュールが報告を返すと、時間同期サーバは、モジュールのいずれかに関して計算され得る、最悪時間差値worst_case_time_differenceを使用するとよい。上記のように、この最悪時間差は、通信レイテンシおよび関与するすべてのサーバ間の時間差の両方を正規化するとよく、この値を、複数サーバにわたって同期を実現するために必要な最大同期期間として表すとよい。本方法は、あらゆる場合に有効であるが、通信レイテンシに突然の予期しない大幅な増加がある場合は別である。この状況は、例えば、I/Oハンドラが時間(T1−max_time_delta)後までI/Oを延長する命令を受信しないという結果になる可能性があるであろう。この状況は、max_time_deltaが、最悪時間差を掛けたファクタKと等しくなるよう調節されるように、追加のファクタKを導入することによって対処され得る。
ファクタKは、アプリケーションの寿命中、手動で、または動的に調節されるとよい。次に、max_time_deltaが、スナップショット・プロセスの開始において使用されるよう、時間同期サーバによって同期化スナップショット・サーバに返されるとよい。なお、時間同期サーバは、スナップショット開始期間全体にわたってworst_case_time_differenceの値を監視し続けてもよい。I/Oハンドラが、I/Oを延長して同期化スナップショットを実行する間、時間同期サーバは、時間同期モジュールと協働し続けて、worst_case_time_differenceを継続的に確認してもよい。スナップショット開始プロセスの間の任意の時点で、worst_case_time_differenceがmax_time_delta、すなわち現在のスナップショット同期プロセスで使用されているmax_time_deltaよりも大きくなれば、これは、同期を損なう可能性がある何らかの新たな大きなレイテンシがあり得るということを示す。この場合には、時間同期サーバが同期化スナップショット・サーバに、スナップショットが再び開始されるべきであることを通知するとよく、同期化スナップショット・サーバは、現在のスナップショットを中止し、より新しいworst_case_time_differenceを用いて計算されたmax_time_deltaを用いて、スナップショットを再び開始するとよい。
様々な実施形態を上記に記載したが、当然のことながら、それらは限定ではなく単なる例として提示された。したがって、好適な実施形態の幅および範囲は、上記の例示の実施形態のいずれによっても限定されてはならず、以下の特許請求の範囲およびその等価物に従ってのみ定義されるべきである。

Claims (26)

  1. 複数のサーバにわたるアプリケーション同期を実行するための同期化スナップショット・サーバが前記アプリケーション同期化する方法であって、
    前記同期化スナップショット・サーバが、複数のサーバ上で実行されているアプリケーションに関連するデータのバックアップを実行するリクエストを受信するステップと、
    前記同期化スナップショット・サーバが、前記サーバとの通信に基づき時間値を計算するステップであって、前記時間値の計算は、前記通信のうちの少なくとも1つのレイテンシ、および前記同期化スナップショット・サーバに基づく参照時間のクロック値と、前記サーバのうちの少なくとも1つの時間のクロック値との間の時間差、を含む、前記ステップと、
    前記同期化スナップショット・サーバが、前記データに対する連係バックアップ動作を同じスタート時間に開始するよう、前記サーバ上のI/Oハンドラと通信するステップと、
    を含む方法。
  2. 前記アプリケーションのインスタンスと、それに関連するデータ・ストレージ・ボリュームとの間の通信を、前記バックアップ動作を開始する間延長するよう前記I/Oハンドラに命令するステップをさらに含む、請求項1に記載の方法。
  3. I/Oハンドラは、前記延長の間にI/O動作を処理し、前記延長が終了された後にI/O動作を完了する、請求項2に記載の方法。
  4. 前記延長は、前記スタート時間マイナス前記時間値から開始される、請求項2または3のいずれかに記載の方法。
  5. 前記延長は、前記スタート時間プラス前記時間値後に終了される、請求項2〜4のいずれか1項に記載の方法。
  6. 前記I/Oハンドラが前記バックアップ動作を開始したという確認を受信するステップと、前記I/Oハンドラが前記バックアップ動作を開始したという前記確認を受信した後に、通常の動作を再開するよう前記I/Oハンドラに命令するステップとをさらに含む、請求項2〜5のいずれか1項に記載の方法。
  7. 前記時間値は、前記サーバが同期するための時間の最大偏差を表す、請求項1〜6のいずれか1項に記載の方法。
  8. 前記バックアップ動作を開始する間、前記I/Oハンドラは、前記アプリケーションのインスタンスと、それに関連するデータ・ストレージ・ボリュームとの間の通信を凍結しない、請求項1〜7のいずれか1項に記載の方法。
  9. 前記バックアップ動作は、前記データのスナップショットである、請求項1〜8のいずれか1項に記載の方法。
  10. 前記バックアップ動作は、前記アプリケーションとの通信なしに開始される、請求項1〜9のいずれか1項に記載の方法。
  11. 前記方法は、前記バックアップ動作を開始する間書き込み動作を延長するよう前記I/Oハンドラに命令するステップをさらに含み、読み取り動作は通常通り提供される、請求項1〜10のいずれか1項に記載の方法。
  12. 複数のサーバにわたるアプリケーション同期を実行するための同期化スナップショット・サーバが前記アプリケーション同期化する方法であって、
    前記同期化スナップショット・サーバが、複数のサーバ上で実行されているアプリケーションに関連するデータのバックアップを実行するリクエストを受信するステップと、
    前記同期化スナップショット・サーバが、前記サーバとの通信に基づき時間値を計算するステップであって、前記時間値の計算は、前記通信のうちの少なくとも1つのレイテンシ、および前記同期化スナップショット・サーバに基づく参照時間のクロック値と、前記サーバのうちの少なくとも1つの時間のクロック値との間の時間差を含み、前記時間値は、前記サーバが同期するための時間の最大偏差を表す、前記ステップと、 前記データに対する連係バックアップ動作を同じスタート時間に開始するよう、前記サーバ上のI/Oハンドラに命令するステップと、
    を含む方法であって、
    前記I/Oハンドラは、前記アプリケーションのインスタンスと、それに関連するデータ・ストレージ・ボリュームとの間の通信を、前記バックアップ動作を開始する間延長する、方法。
  13. 前記延長は、前記スタート時間マイナス前記時間値から開始される、請求項12に記載の方法。
  14. 前記延長は、前記スタート時間プラス前記時間値後に終了される、請求項12または13のいずれかに記載の方法。
  15. 前記I/Oハンドラが前記バックアップ動作を開始したという確認を受信するステップと、前記I/Oハンドラが前記バックアップ動作を開始したという前記確認を受信した後に、通常の動作を再開するよう前記I/Oハンドラに命令するステップとをさらに含む、請求項12〜14のいずれか1項に記載の方法。
  16. 前記バックアップ動作を開始する間、前記I/Oハンドラは、前記アプリケーションのインスタンスと、それに関連するデータ・ストレージ・ボリュームとの間の通信を凍結しない、請求項12〜15のいずれか1項に記載の方法。
  17. I/Oハンドラは、前記延長の間にI/O動作を処理し、前記延長が終了された後にI/O動作を完了する、請求項12〜15のいずれか1項に記載の方法。
  18. 前記バックアップ動作は、前記アプリケーションとの通信なしに開始される、請求項12〜17のいずれか1項に記載の方法。
  19. 複数のサーバにわたるアプリケーション同期を実行するためのコンピュータ・プログラムであって、
    前記サーバとの通信に基づき時間値を計算するステップであって、前記時間値の計算は、前記通信のうちの少なくとも1つのレイテンシ、および同期化スナップショット・サーバに基づく参照時間のクロック値と、前記サーバのうちの少なくとも1つの時間のクロック値との間の時間差とを含む、前記ステップと、
    データに対する連係バックアップ動作を同じスタート時間に開始するよう、前記サーバ上のI/Oハンドラと通信するステップと、
    を前記同期化スナップショット・サーバに実行させるコンピュータ・プログラム。
  20. 前記アプリケーションのインスタンスと、それに関連するデータ・ストレージ・ボリュームとの間の通信を、前記バックアップ動作を開始する間延長するよう前記I/Oハンドラに命令するステップを更に実行させる、請求項19に記載のコンピュータ・プログラム。
  21. 前記時間値は、前記サーバが、同期化スナップショット・サーバと同期するための時間の最大偏差を表し、バックアップ・サーバは、前記データに対する前記連係バックアップ動作を同じ同期ウィンドウ内で開始するよう、前記サーバ上のI/Oハンドラとほぼ非同期的に通信する、請求項19または20のいずれかに記載のコンピュータ・プログラム。
  22. 前記バックアップ動作を開始する間、前記I/Oハンドラは、前記アプリケーションのインスタンスと、それに関連するデータ・ストレージ・ボリュームとの間の通信を凍結しない、請求項19〜21のいずれか1項に記載のコンピュータ・プログラム。
  23. 複数のサーバにわたるアプリケーション同期を実行するためのシステムであって、
    前記サーバとの通信に基づき時間値を計算することであって、前記時間値の計算は、前記通信のうちの少なくとも1つのレイテンシ、および同期化スナップショット・サーバに基づく参照時間のクロック値と、前記サーバのうちの少なくとも1つの時間のクロック値との間の時間差を含む、前記計算することと、
    データに対する連係バックアップ動作を同じスタート時間に開始するよう、前記サーバ上のI/Oハンドラと通信することと、
    を実行するシステム。
  24. 複数のサーバ上の時間同期モジュールと通信する時間同期サーバであって、それ自体と、前記時間同期モジュールとの間の通信に基づき時間値を計算し、前記通信のうちの少なくとも1つのレイテンシ、および前記時間同期サーバに基づく参照時間のクロック値と、前記サーバのうちの少なくとも1つの時間のクロック値との間の時間差を含むように計算する、前記時間同期サーバと、
    前記サーバ上で実行されているアプリケーションに関連するデータの同期化バックアップ動作を同じポイント・イン・タイムに開始するよう、前記サーバ上のI/Oハンドラと通信するバックアップ・サーバであって、前記同期化バックアップ動作のスタート時間は、前記時間同期サーバによって計算された前記時間に少なくとも部分的に基づく、前記バックアップ・サーバと、
    を含むシステム。
  25. 前記バックアップ動作は、前記アプリケーションに関連する前記データのスナップショットである、請求項24に記載のシステム。
  26. 前記バックアップ・サーバは、前記アプリケーションのインスタンスと、それに関連するデータ・ストレージ・ボリュームとの間の通信を、前記バックアップ動作を開始する間延長するよう前記I/Oハンドラに命令するコンピュータ・コードを含む、請求項24または25のいずれかに記載のシステム。
JP2011546647A 2009-02-03 2009-12-16 I/oを中断しないマルチサーバ・アプリケーション同期の方法、プログラム、及び、システム Active JP5647624B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/365,051 US8108575B2 (en) 2009-02-03 2009-02-03 Methods of multi-server application synchronization without stopping I/O
US12/365,051 2009-02-03
PCT/EP2009/067266 WO2010089003A1 (en) 2009-02-03 2009-12-16 Method and system for multi-server application synchronization without stopping i/o

Publications (2)

Publication Number Publication Date
JP2012517042A JP2012517042A (ja) 2012-07-26
JP5647624B2 true JP5647624B2 (ja) 2015-01-07

Family

ID=41785620

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011546647A Active JP5647624B2 (ja) 2009-02-03 2009-12-16 I/oを中断しないマルチサーバ・アプリケーション同期の方法、プログラム、及び、システム

Country Status (5)

Country Link
US (3) US8108575B2 (ja)
EP (1) EP2366150B1 (ja)
JP (1) JP5647624B2 (ja)
CN (1) CN102308286B (ja)
WO (1) WO2010089003A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8108575B2 (en) 2009-02-03 2012-01-31 International Business Machines Corporation Methods of multi-server application synchronization without stopping I/O
US9325789B2 (en) * 2009-02-17 2016-04-26 International Business Machines Corporation Distributed server election with imperfect clock synchronization
US9723074B2 (en) * 2011-11-15 2017-08-01 Alcatel Lucent Method and apparatus for in the middle primary backup replication
EP2615511A1 (de) * 2012-01-12 2013-07-17 Siemens Aktiengesellschaft Verfahren zur synchronen Ausführung von Programmen in einem redundanten Automatisierungssystem
US9218255B2 (en) * 2012-08-27 2015-12-22 International Business Machines Corporation Multi-volume instant virtual copy freeze
US9411811B2 (en) 2014-01-06 2016-08-09 International Business Machines Corporation Coordinated point-in-time snapshots of multiple computing platforms
CN106293998A (zh) * 2015-05-29 2017-01-04 北京中科同向信息技术有限公司 一种基于快照技术的系统备份方法
CN105099649B (zh) * 2015-08-14 2018-10-16 宋亚玲 一种网络时间同步嵌入的方法和系统
CN105208104B (zh) * 2015-08-26 2018-10-02 浪潮(北京)电子信息产业有限公司 一种远程镜像数据一致性检测方法及装置
CN107450969A (zh) * 2016-05-31 2017-12-08 中兴通讯股份有限公司 一种应用程序状态设置的方法和装置
US10417096B2 (en) * 2017-07-20 2019-09-17 Vmware, Inc. Multi-virtual machine time consistent snapshots
CN107704550B (zh) * 2017-09-26 2021-04-30 深圳前海微众银行股份有限公司 文件迁移方法、装置以及计算机可读存储介质
CN109710498B (zh) * 2017-10-26 2020-09-29 华为技术有限公司 一种管理日志的方法和装置
US10705927B2 (en) 2018-07-19 2020-07-07 Hewlett Packard Enterprise Development Lp Freeze a volume of a replication set and unfreeze the volume based on at least one of a snapshot permit message, a snapshot abort message, and expiration of a timeout
CN113821362B (zh) * 2021-11-25 2022-03-22 云和恩墨(北京)信息技术有限公司 数据复制方法及装置

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4021A (en) * 1845-05-01 Isaac l
US4015A (en) * 1845-04-26 Hand-loom for weaving figured fabrics
US7021A (en) * 1850-01-15 Substitute for the clevis
JPH09198269A (ja) * 1996-01-23 1997-07-31 Toshiba Corp 耐故障性型コンピュータシステム及び通信処理方法
US5854754A (en) * 1996-02-12 1998-12-29 International Business Machines Corporation Scheduling computerized backup services
US6157971A (en) * 1998-06-02 2000-12-05 Adaptec, Inc. Source-destination re-timed cooperative communication bus
US6731600B1 (en) * 1999-02-08 2004-05-04 Realnetworks, Inc. System and method for determining network conditions
US6801921B2 (en) 2000-09-08 2004-10-05 Hitachi, Ltd. Method and system for managing multiple database storage units
US6636875B1 (en) 2000-10-25 2003-10-21 International Business Machines Corporation System and method for synchronizing related data elements in disparate storage systems
US7139932B2 (en) 2002-01-03 2006-11-21 Hitachi, Ltd. Data synchronization of multiple remote storage after remote copy suspension
US7337195B2 (en) 2002-12-31 2008-02-26 International Business Machines Corporation Method and device for establishing synchronized recovery log points
US8037264B2 (en) * 2003-01-21 2011-10-11 Dell Products, L.P. Distributed snapshot process
US7937551B2 (en) * 2003-01-21 2011-05-03 Dell Products L.P. Storage systems having differentiated storage pools
US7127577B2 (en) 2003-01-21 2006-10-24 Equallogic Inc. Distributed snapshot process
JP2006525724A (ja) * 2003-05-06 2006-11-09 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ クロックの時間同期方法
US7107420B2 (en) 2003-08-29 2006-09-12 International Business Machines Corporation Apparatus and method to adjust data transfer rate
JP4545529B2 (ja) 2004-08-27 2010-09-15 株式会社日立製作所 スナップショットの作成方法及びプログラム並びにストレージシステム
US7437388B1 (en) * 2004-12-21 2008-10-14 Symantec Corporation Protecting data for distributed applications using cooperative backup agents
EP1677192A3 (en) 2004-12-29 2009-02-18 International Business Machines Corporation A computing system and a method for calculating a recovery time of an application system
JP4806557B2 (ja) 2005-10-18 2011-11-02 株式会社日立製作所 ログを管理するストレージ装置及び計算機システム
US7386675B2 (en) * 2005-10-21 2008-06-10 Isilon Systems, Inc. Systems and methods for using excitement values to predict future access to resources
US7343447B2 (en) 2005-11-08 2008-03-11 International Business Machines Corporation Method and system for synchronizing direct access storage volumes
JP5085031B2 (ja) * 2005-11-10 2012-11-28 株式会社東芝 X線アンギオ撮影装置
US7941404B2 (en) 2006-03-08 2011-05-10 International Business Machines Corporation Coordinated federated backup of a distributed application environment
US7571268B2 (en) 2006-04-06 2009-08-04 International Business Machines Corporation Consistent updates across storage subsystems coupled to a plurality of primary and secondary units at selected times
US8108575B2 (en) 2009-02-03 2012-01-31 International Business Machines Corporation Methods of multi-server application synchronization without stopping I/O
US7930359B2 (en) 2009-02-03 2011-04-19 International Business Machines Corporation Methods of consistent data protection for multi-server applications

Also Published As

Publication number Publication date
CN102308286B (zh) 2013-11-13
US8321610B2 (en) 2012-11-27
CN102308286A (zh) 2012-01-04
WO2010089003A1 (en) 2010-08-12
US8108575B2 (en) 2012-01-31
US20100198793A1 (en) 2010-08-05
US20130007315A1 (en) 2013-01-03
US20120023068A1 (en) 2012-01-26
EP2366150B1 (en) 2012-09-05
US8656073B2 (en) 2014-02-18
EP2366150A1 (en) 2011-09-21
JP2012517042A (ja) 2012-07-26

Similar Documents

Publication Publication Date Title
JP5647624B2 (ja) I/oを中断しないマルチサーバ・アプリケーション同期の方法、プログラム、及び、システム
USRE47852E1 (en) Snapshot and replication of a multi-stream application on multiple hosts at near-sync frequency
US8788772B2 (en) Maintaining mirror and storage system copies of volumes at multiple remote sites
EP2820531B1 (en) Interval-controlled replication
US9098454B2 (en) Speculative recovery using storage snapshot in a clustered database
US8548949B2 (en) Methods for dynamic consistency group formation
US9377964B2 (en) Systems and methods for improving snapshot performance
US9600487B1 (en) Self healing and restartable multi-steam data backup
US20220179565A1 (en) Data resychronization methods and systems in continuous data protection
US8250036B2 (en) Methods of consistent data protection for multi-server applications
EP3163447B1 (en) Data replication method, device and system
US9268811B1 (en) Replay of writes in replication log
US10649862B1 (en) Reducing failback performance duration in data replication systems
CN116601610A (zh) 连续数据保护单元、用于数据保护的恢复单元及其方法
Glass et al. Logical Synchronous Replication in the Tintri {VMstore} File System
US10152415B1 (en) Techniques for backing up application-consistent data using asynchronous replication
JP2008097155A (ja) データ記憶制御装置およびデータ記憶装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120705

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131018

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140303

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140408

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140703

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140729

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140929

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20141021

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141107

R150 Certificate of patent or registration of utility model

Ref document number: 5647624

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150