JP2023548373A - 非同期領域間ブロックボリューム複製 - Google Patents

非同期領域間ブロックボリューム複製 Download PDF

Info

Publication number
JP2023548373A
JP2023548373A JP2023527053A JP2023527053A JP2023548373A JP 2023548373 A JP2023548373 A JP 2023548373A JP 2023527053 A JP2023527053 A JP 2023527053A JP 2023527053 A JP2023527053 A JP 2023527053A JP 2023548373 A JP2023548373 A JP 2023548373A
Authority
JP
Japan
Prior art keywords
data
snapshot
volume
computer system
generating
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.)
Pending
Application number
JP2023527053A
Other languages
English (en)
Inventor
マリペッディ,ベンカタ・ハリシュ
ポーツ,トラビス・ジョン
ラーセン,イェッペ・オスカー・マイヤー
タヤー,マリオ
Original Assignee
オラクル・インターナショナル・コーポレイション
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 オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2023548373A publication Critical patent/JP2023548373A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/263Network storage, e.g. SAN or NAS

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)

Abstract

ブロックボリュームデータの領域間複製のための技術を提供する。本技術は、コンピュータシステムが複数の動作を実現する方法を含む。当該複数の動作は、第1の地理的領域において第1の論理時間に複数のパーティションを含むブロックボリュームの第1のスナップショットを作成する動作と、第2の地理的領域におけるオブジェクトストレージシステムに第1のスナップショットデータを送信する動作と、第1の地理的領域において第2の論理時間にブロックボリュームの第2のスナップショットを作成する動作と、複数のデルタを生成する動作と、複数のデルタに対応する複数のデルタデータセットを第2の地理的領域におけるオブジェクトストレージシステムに送信する動作と、複数のデルタおよび第1のスナップショットに関連付けられたオブジェクトメタデータを少なくとも部分的に集約することによってチェックポイントを生成する動作と、復元ボリュームを生成するための復元要求を受信する動作と、チェックポイントから復元ボリュームを生成する動作とを含む。

Description

関連出願の相互参照
本願は、「非同期領域間ブロックボリューム複製(ASYNCHRONOUS CROSS-REGION BLOCK VOLUME REPLICATION)」と題されて2020年11月6日に出願された米国非仮出願第17/091,635号の利益および優先権を主張する。米国非仮出願第17/091,635号の内容はその全体が、あらゆる目的のために引用により本明細書に援用されている。
背景
クラウドベースのプラットフォームは、スケーラブルでフレキシブルなコンピューティングリソースをユーザに提供する。このようなクラウドベースのプラットフォームは、サービスとしてのインフラストラクチャ(infrastructure as a service:IaaS)とも呼ばれ、顧客のデータに基づいたクラウドソリューションの一式全体、例えば、変換をオーサリングし、データをロードし、データを提示するためのソリューションを提供し得る。場合によっては、顧客データは、分散ストレージシステム(例えば、クラウドストレージ)内のブロックボリュームストレージおよび/またはオブジェクトストレージに格納されてもよい。
概要
非同期領域間ブロックボリューム複製のための技術(例えば、1つ以上のプロセッサによって実行可能なコードまたは命令を格納する方法、システム、非一時的なコンピュータ可読媒体)が提供される。
ある実施形態では、方法は、コンピュータシステムによって、第1の地理的領域において、第1の論理時間に、複数のパーティションを含むブロックボリュームの第1のスナップショットを作成するステップを含む。当該方法は、コンピュータシステムによって、第1のスナップショットに対応する第1のスナップショットデータを、第2の地理的領域におけるオブジェクトストレージシステムに送信するステップを含む。当該方法は、コンピュータシステムによって、第1の地理的領域おいて、第2の論理時間に、ブロックボリュームの第2のスナップショットを作成するステップを含む。当該方法は、コンピュータシステムによって複数のデルタを生成するステップを含み、当該複数のデルタの各デルタは、複数のパーティションのうちの1つのパーティションに対応する。当該方法は、コンピュータシステムによって、複数のデルタに対応する複数のデルタデータセットを、第2の地理的領域におけるオブジェクトストレージシステムに送信するステップを含む。当該方法は、コンピュータシステムによって、複数のデルタおよび第1のスナップショットに関連付けられたオブジェクトメタデータを少なくとも部分的に集約することによって、チェックポイントを生成するステップを含む。当該方法は、コンピュータシステムによって、復元ボリュームを生成するための復元要求を受信するステップを含む。当該方法はまた、コンピュータシステムによって、チェックポイントから復元ボリュームを生成するステップを含む。
ある変形例では、複数のデルタを生成するステップは、第2のスナップショットと第1のスナップショットとの比較を生成するステップを含む。複数のデルタを生成するステップは、当該比較に基づいて、第1のスナップショットデータと、第2のスナップショットに対応する第2のスナップショットデータとの間の変化に対応する修正済みデータを判定するステップを含み得る。複数のデルタは、複数のパーティションについて修正済みデータを記述し得る。第1のスナップショットを作成するステップは、論理時間に対応して、複数のパーティションのための入出力動作を中断するステップと、複数のパーティション内のボリュームデータを記述する複数のブロックイメージを生成するステップと、複数のパーティションのための入出力動作を可能にするステップとを含み得る。復元要求はフェイルオーバー要求であり得るかまたはフェイルオーバー要求を含み得る。当該方法は、復元ボリュームを第2の地理的領域において生成することを可能にするステップと、第2の地理的領域において復元ボリュームを用いて入出力動作を可能にするステップとをさらに含み得る。復元要求はフェイルバック要求であり得るかまたはフェイルバック要求を含み得る。当該方法は、第2の地理的領域において復元ボリュームを生成するステップと、復元ボリュームを少なくとも部分的にクローニングすることによって第1の地理的領域においてフェイルバックボリュームを生成することを可能にするステップと、第1の地理的領域において第1のスナップショットデータを復元するステップとをさらに含み得る。複数のデルタデータセットを送信するステップは、複数のデルタデータセットから複数のチャンクオブジェクトを生成するステップと、複数のデルタを転送するステップと、複数のチャンクオブジェクトをオブジェクトストレージシステムに転送するステップとを含み得る。チェックポイントは、オブジェクトメタデータのマニフェストを含み得る。オブジェクトメタデータは、オブジェクトストレージシステム内の複数のチャンクオブジェクトに対応するチャンクポインタを含み得る。オブジェクトメタデータを集約するステップは、複数のデルタデータセットと第1のスナップショットデータとの間の複数の差異を反映するようにマニフェストを更新するステップを含み得る。
いくつかの実施形態では、コンピュータシステムは、1つ以上のプロセッサと、当該1つ以上のプロセッサと通信するメモリとを含み、当該メモリは、コンピュータ実行可能命令を格納するように構成され、当該コンピュータ実行可能命令を実行することにより、1つ以上のプロセッサに、上述した方法またはその変形例のステップのうちの1つ以上を実行させる。
いくつかの実施形態では、コンピュータ可読記憶媒体はコンピュータ実行可能命令を格納しており、当該コンピュータ実行可能命令は、実行されると、コンピュータシステムの1つ以上のプロセッサに、上述した方法またはその変形例の1つ以上のステップを実行させる。
1つ以上の実施形態に従った、非同期領域間ブロックボリューム複製のための例示的なシステムを示す図である。 1つ以上の実施形態に従った、非同期ブロックボリューム複製のための例示的技術を示す図である。 1つ以上の実施形態に従った、非同期複製によってブロックボリュームシステムを復元するための例示的技術を示す図である。 1つ以上の実施形態に従った、ブロックボリューム複製メタデータを集約するための例示的技術を示す図である。 1つ以上の実施形態に従った、スタンバイボリュームからフェイルオーバーボリュームを生成するための例示的技術を示す図である。 1つ以上の実施形態に従った、スタンバイボリュームをサイズ変更するための例示的技術を示す図である。 1つ以上の実施形態に従った、復元ボリュームを生成するための例示的なフローを示す図である。 1つ以上の実施形態に従った、フェイルオーバーボリュームを生成するための例示的なフローを示す図である。 1つ以上の実施形態に従った、フェイルバックボリュームを生成するための例示的なフローを示す図である。 1つ以上の実施形態に従った、スタンバイシステムを用いてブロックボリュームシステムを復元するための例示的なフローを示す図である。 1つ以上の実施形態に従った、ブロックボリュームシステムおよびスタンバイシステムをサイズ変更するための例示的なフローを示す図である。 少なくとも1つの実施形態に従った、クラウドインフラストラクチャをサービスシステムとして実装するための1つのパターンを示すブロック図である。 少なくとも1つの実施形態に従った、クラウドインフラストラクチャをサービスシステムとして実装するための別のパターンを示すブロック図である。 少なくとも1つの実施形態に従った、クラウドインフラストラクチャをサービスシステムとして実装するための別のパターンを示すブロック図である。 少なくとも1つの実施形態に従った、クラウドインフラストラクチャをサービスシステムとして実装するための別のパターンを示すブロック図である。 少なくとも1つの実施形態に従った例示的なコンピュータシステムを示すブロック図である。
添付の図面では、同様の構成要素および/または特徴は同じ参照ラベルを有し得る。さらに、同様の構成要素同士を識別するダッシュおよび第2のラベルが当該参照ラベルの後に続くことによって同じタイプの様々な構成要素が区別され得る。第1の参照ラベルのみが本明細書中で用いられる場合、第2の参照ラベルに関わらず、当該記載は、同じ第1の参照ラベルを有する同様の構成要素のいずれか1つに適用可能である。
詳細な説明
以下の説明では、様々な実施形態について説明する。説明の目的で、実施形態を十分に理解できるようにするために、具体的な構成および詳細を記載する。しかしながら、実施形態がこれらの具体的な詳細なしに実施され得ることも当業者には明らかであるだろう。さらに、周知の特徴は、説明されている実施形態を不明瞭にしないようにするために省略または簡略化されている場合もある。
クラウドベースのプラットフォームは、スケーラブルでフレキシブルなコンピューティングリソースをユーザに提供する。このようなクラウドベースのプラットフォームは、サービスとしてのインフラストラクチャ(IaaS)とも呼ばれ、顧客のデータに基づいてクラウドソリューションの一式全体、例えば、変換をオーサリングし、データをロードし、データを提示するためのソリューション等を提供し得る。場合によっては、顧客データは、分散ストレージシステム(例えば、クラウドストレージ)内のブロックボリュームストレージおよび/またはオブジェクトストレージに格納されてもよい。顧客データは、例えば、広域の分散ストレージシステムの一部として、地理的領域に位置するデータセンタに格納されてもよい。データセンタは、待ち時間、入出力操作毎秒(Input-Output operations per second:IOPS)、スループット、コスト、安定性等を含む1つ以上の性能メトリックに少なくとも部分的に基づいて選択され得る。場合によっては、データセンタの最適な位置は、(例えば、顧客がかなりの量の内部データを生成する場合には)顧客の位置に対応し得る。場合によっては、最適な位置は、(例えば、顧客がコンテンツ配信ネットワークを運用する場合には)顧客のクライアントおよび/またはユーザの位置に対応し得る。
顧客データは、別の地理的領域またはデータセンタ(可用性ドメイン(availability domain)または「AD」とも称される)内のバックアップシステムにコピーされ、バックアップシステムをプライマリシステムとして指定することによって障害後に回復され得る(「フェイルオーバー」と称される)。フェイルオーバーシステムは目標復旧ポイント(recovery point objective:RPO)、目標復旧時間(recovery time objective:RTO)、および災害復旧(disaster recovery:DR)を含む複数のメトリックによって特徴付けられ得る。一般に、RPOはフェイルオーバー中にどれだけ多くのデータが失われる可能性があるかを記述するものであり、このため、RPOを最小限に抑えることがバックアップシステムの目標となり得る。典型的には、バックアップコピーを生成することは、1つの領域においてバックアップを取り、バックアップがクラウドシステムにアップロードされるのを待ち、次いで領域間のコピー動作を開始し、宛先領域においてコピーが完了するのを待つことを含む。かなりのメタデータオーバーヘッドが各バックアップに関連付けられてもよく、これにより、計算需要およびリソース費用が高反復レートで増大する可能性がある。このため、RPOは、典型的にはバックアップシステムに関して数時間のオーダーで利用可能である(ここで、時間は、平均データ転送速度を考慮した場合のデータ量を示す)。
同様に、RTOは、フェイルオーバー後にデータを復元することに関係する時間の長さを示すので、フェイルオーバーシステムの重要なメトリックであり得る。バックアップが別の地理的領域から復元される場合、入出力動作は、ボリュームが完全に復元されるまで、典型的な条件よりも待ち時間が長くなる可能性がある。さらに、復元時間およびオンデマンドデータ動作の待ち時間は、例えば、領域全体の障害に応じてデータトラフィックがシフトすることに対応するシステム負荷のスパイクに応答して、著しく増加する可能性がある。分散データストレージシステムが領域間バックアップコピーからバックアップ復元を実装している間も、待ち時間がさらに長くなる可能性がある。
顧客データは有益であり得るので、顧客は、例えば、ストレージ安定性(例えば、電源強化、サージ保護等)を高めるために実装されるデータ冗長性およびインフラストラクチャを含む1つ以上のアプローチによってデータが保護されることを期待する可能性がある。データ冗長性は、ローカル記憶媒体(例えば、物理記憶媒体)、分散ストレージシステムおよび/または別の分散ストレージシステムに顧客データを複製することを含むがこれに限定されない複数の形態をとり得る。場合によっては、顧客データは一括して複製されてもよく、これはバックアップと称される。このようなアプローチは、バックアップの実行中にシステム入出力動作にかなりの待ち時間を含む可能性がある。例えば、ストレージシステムは、バックアップの実行中に全ての読出しおよび書込み動作を中止することで、顧客データの完全な複製が確実に保存されるようにしてもよい。このような場合、分散ストレージシステム内に新しいデータを一時的に格納するために追加のバッファ容量が採用されてもよく、および/または、顧客データ要求を遅延させてもよい。
ボリューム全体のバックアップとは対照的に、顧客データは、以下でいくつかの図を参照してより詳細に説明するように、非同期的に複製され得る。例えば、顧客データは、データストレージシステムのサブユニットにおける増分変化を記述するオブジェクト(例えば、ブロックボリュームシステムのパーティション)を少なくとも部分的に生成することによって、持続的に(例えば、バックアップシステムに特有であり得る数時間の間隔とは対照的に、数分間隔で)複製され得る。以下の段落では、増分変化を記述するオブジェクトを「デルタ」とも称する。デルタは、図1を参照してより詳細に説明するように、2つの非同期記録間の顧客データに対する1つ以上の変更を記述し得る。分散ストレージシステムにおけるユーザデータの状態の記録は、「スナップショット」とも称され、以下で図を参照してより詳細に説明するように、単一の時系列時間とは対照的に、単一の論理時間でのデータの状態を表わし得る。場合によっては、デルタが生成されてもよく、当該デルタは、生成されると格納および/または転送/複製されてもよい。したがって、非同期複製は、バックアップではなく、デルタを転送することによって顧客データを複製することを可能にし得る。
少なくともこれらの理由から、本明細書に記載の技術は、バックアップ顧客データに依拠するデータ冗長性アプローチを上回る1つ以上の利点を提示する。例えば、スナップショット後のデータに対する変更を複製するために複数のデルタを生成することにより、データ複製プロセスを時系列で細分することが可能になり得るとともに、待ち時間、IOPSおよび/または他の性能メトリックに対するデータ複製の影響を低減させ得る。
ボリューム全体をバックアップすることに依拠するアプローチは、利用可能なバックアップが顧客データへの有益な変更を反映しないときにシステム障害が発生した場合(例えば、既存のバックアップの実行後長期にわたり障害が発生している場合、または最後のバックアップ以降に顧客データに対する大幅な変更が発生していた場合)、データ損失のリスクがあるかもしれない。非同期複製を実装することによっても、全体的なシステム性能が改善され、さらに場合によっては顧客データの保存が改善され得る。したがって、非同期複製アプローチは、バックアップシステムと比べて、RPO、RTO、およびDRを改善させ得る。
具体例として、ブロックボリュームシステムは、世界中の複数の地理的領域に複数のデータセンタを有する分散ストレージシステムにおいて実装され得る。データセンタのうちの1つにおけるブロックボリュームシステムに格納された顧客データは、第1のデータセンタが壊滅的な障害を被った場合には第2のデータセンタにおいて複製されてデータ損失から保護され得る。顧客データは、スナップショットおよびデルタの両方を生成することによって複製されてもよく、この場合、スナップショットは、複数のパーティションにわたって顧客データの全体的な複製を提供し得るとともに、デルタは、先行するスナップショットの後に続く単一のパーティションに関する顧客データに対する変更の増分的追跡を可能にし得る。デルタが生成されると、デルタは、それが記述する顧客データとともに第2のデータセンタに転送されてもよく、第1のデータセンタで障害が発生した場合に顧客データを復元するために第2のデータセンタにおけるストレージシステムによって用いられてもよい。1つのパーティションに対してデルタが生成されている間、他のパーティションは、入出力動作のために利用可能なままであり、第1のデータセンタにおけるストレージシステムが所望の性能レベルを維持することを可能にし得る。第1のデータセンタで障害が発生した場合、第2のデータセンタが第1のデータセンタの役割を担ってもよく(「フェイルオーバー」と称される)、および/または、顧客データが第1のデータセンタに返されて動作を再開させてもよい(「フェイルバック」と称される)。
図1は、1つ以上の実施形態に従った、非同期領域間ブロックボリューム複製のための例示的なシステム100を示す。上述したように、システム100は、障害回復中に顧客データを提供するために、ソースシステムから宛先システムに顧客データを複製することによってデータ冗長性を促進し得る。いくつかの実施形態では、第1のデータセンタ120(例えば、ソースシステム)は、ブロックボリュームシステム122にデータを格納し得る。いくつかの実施形態では、第1のデータセンタ120は、ブロックボリュームシステムではなくオブジェクトストレージシステムにデータを格納し得る。データは、第1のデータセンタ120のユーザによって生成および/または提供され得る。第1のデータセンタ120は、ユーザの位置に近接し得る、および/または、例えば、性能メトリック(例えば、待ち時間、IOPS、スループット、コスト、安定性等)等の1つ以上の動作基準に対応し得る、第1の地理的領域(例えば、領域A)に位置してもよい。場合によっては、第1のデータセンタ120の通常動作時に中断(例えば、停電、データ破損、分散型サービス拒否攻撃(distributed denial of service attack:DDOS)、自然災害等)が起こる可能性があるため、データ損失のリスクが生じる可能性がある。データ損失のリスクを潜在的に低減するために、データは、第2のデータセンタ130(例えば、宛先システム)において複製され得る。いくつかの実施形態では、第2のデータセンタ130は、第1のデータセンタ120の位置とは異なる地理的領域に位置してもよく、これにより、自然災害またはインフラストラクチャ障害によって引起こされるデータ損失のリスクを低減し得る。同様に、第1のデータセンタ120とは別個の第2のデータセンタ130にデータを格納することにより、入出力動作を中断する可能性のある、および/または第1のデータセンタを対象にすることによってデータ損失をもたらす可能性のある、悪意のあるアクション(例えば、DDOS、データ破損等)に対する潜在的な脆弱性を低下させ得る。以下でより詳細に説明するように、第2のデータセンタ130は、(例えば、顧客構成および/または好みに基づいて)スタンバイボリューム、オブジェクトストレージ、および/または他のストレージフォーマットとしてデータをデータストア132に格納し得る。
いくつかの実施形態では、第1のデータセンタ120に格納されたデータは、非同期複製140システムを介して第2のデータセンタ130において複製され得る。上述したように、非同期複製は、動作の復元(例えば、RTO)時における通常の入出力プロセスの中断を減らし得るとともに第1のデータセンタ120における途絶(例えば、RPO)によって引起こされるデータ損失の程度を低下させ得るという点で、定期的なバックアップ複製に勝る技術的利点を提供し得る。いくつかの実施形態では、非同期複製140は、新しいバックアップイメージと定期的に置換され得る、特定の時系列で生成されるコヒーレントなバックアップイメージとしてではなく、複製されたデータを増分的に生成して第1のデータセンタ120から第2のデータセンタ130におよび転送することを含み得る。代わりに、以下で図2を参照してより詳細に説明するように、非同期複製140は、例えば、データを生成するとともに第1のデータセンタ120に格納されたデータおよび/またはデータの変更の記録を転送することによって、第2のデータセンタ130に格納されたデータを動的に更新してもよい。いくつかの実施形態では、ブロックボリュームシステム122の顧客および/またはユーザは、構成ボリュームが作成されるときに、および/またはブロックボリュームシステム122が分散データストレージシステムとしてすでに動作している後に利用可能な後続のオプションとして、非同期複製140を構成し得る。いくつかの実施形態では、非同期複製140を構成することは、宛先領域(例えば、第2の地理的領域、すなわち「領域B」)を指定することを含み得る。いくつかの実施形態では、例えば、複製されたデータがスタンバイブロックボリュームシステムに格納されるべきである場合、非同期複製140を構成することは、宛先領域内の宛先ADを指定することを含み得る。
いくつかの実施形態では、非同期複製140は、ブロックボリュームシステム122に格納されたデータのスナップショットを生成し得るスナップショット生成142サブシステムを含み得る。場合によっては、スナップショットは、以下でより詳細に説明するように、特定の論理時間においてブロックボリュームシステム122に格納されたユーザデータの瞬間状態を記述し得る。バックアップ複製アプローチとは対照的に、非同期複製140はデルタ生成144サブシステムを含んでもよく、これにより、スナップショットの後にブロックボリュームシステム122内のデータに対してなされた変更が確認され得る。これらの変更は、次に、スナップショット全体を置換えるのではなく、スナップショットを更新するために使用可能なデルタとして表現され得る。スナップショット生成142は、定期的に、例えば分単位のオーダー(例えば、1~10分、10~20分、20~30分等の範囲)で、および/または時間単位のオーダー(例えば、1~10時間)で、新しいスナップショットを生成し得る。
いくつかの実施形態では、スナップショット生成142は、ブロックボリュームシステム122の1つ以上のパーティションを伴う2相コミットプロトコルにより進行し得る。2相コミットは、パーティションに対する入出力動作が中断されたというコミットメントをスナップショット生成142がブロックボリュームシステムから受信した後にパーティションイメージを生成することを含み得る。パーティションイメージが完成した後、パーティションを解放して入出力動作を再開し得る。いくつかの実施形態では、2相コミットが全体としてブロックボリュームシステム122に適用されてよく、これにより、スナップショットが生成されている間、ブロックボリュームシステム全体に関するすべての読出し動作および書込み動作がブロックされ得る。いくつかの実施形態では、スナップショットは、ミリ秒(例えば、1~15ミリ秒、5~10ミリ秒等)のオーダーで生成され得る。
いくつかの実施形態では、スナップショット生成142は、ブロックボリュームシステム122に格納されたデータのイメージをパーティション単位で生成することを含む。ブロックボリュームシステム122がデータを1つ以上のパーティションに格納する場合、スナップショット生成142は、パーティションの入出力動作に干渉しないようにパーティションイメージの生成をスケジュールし得る。スナップショット生成142は、ブロックボリュームシステムに含まれるすべてのパーティションのイメージを生成およびコンパイルし得るとともに、場合によっては、イメージ化されるパーティション以外のパーティションの通常の入出力動作の中断を回避し得る。
スナップショットは、特定の論理時間にデータのイメージを記録し得る。ここで、論理時間はスナップショット生成142の実装を指す。例えば、スナップショット生成142によって生成された第1のスナップショットは、第1の論理時間で識別され得るとともに、ブロックボリュームシステム122の1つ以上のパーティションがスナップショット生成142によって処理される時間の長さの間にわたって生成され得る。同様に、スナップショット生成142は、スナップショット生成142サブシステムの第2の反復に対応する、第2の論理時間で識別され得る期間(例えば、1~10分等)が経過した後、ブロックボリュームシステム122の第2のスナップショットを生成し得る。
いくつかの実施形態では、デルタ生成144は、未変更のデータを送信することもなく、非同期複製140が新しいデータまたは修正済みデータを第2のデータセンタ130に転送することを少なくとも部分的に可能にすることによって、非同期複製140を容易にし得る。場合によっては、デルタは、第1のスナップショットと第2のスナップショットとの間のブロックボリュームシステム122のパーティションに格納されたデータの変更を記述し得る。例えば、デルタ生成144は、第2のスナップショットを第1のスナップショットと比較し得るとともに、どのブロックが追加、除去、修正等されたかを確認し得る。このようにして、デルタはまた、2つの連続するスナップショット間で除去されたデータを記述し得る。
場合によっては、デルタは、固有の識別子、さらにはメモリポインタのリストを含む論理構造であり得る。メモリポインタは、2つの連続するスナップショット間で変化したデータについての、第1のデータセンタ120および/または第2のデータセンタ130内のメモリ位置を記述し得る。以下で図2~図6を参照してより詳細に説明するように、非同期複製140を実装することは、スナップショット全体を転送するのではなく、パーティションについてのデルタを第2のデータセンタ130に転送することを含み得る。
いくつかの実施形態では、第2のデータセンタ130におけるデータストア132は、複製されたデータをオブジェクトストレージとして格納し得る。したがって、非同期複製140は、第1のデータセンタ120からのデータをチャンクオブジェクトに変換するためのデータ変換146サブシステムを含み得る。いくつかの実施形態では、ブロックボリュームシステム122からのデータは4MBチャンクオブジェクトに組込まれてもよい。いくつかの実施形態では、チャンクオブジェクトは、システムバックアップ動作のために用いられるものと同様のフォーマットを実装してもよく、これにより、非同期複製140を、バックアップおよび/または階層型アップロード技術を採用する既存の分散ストレージシステムに統合することが可能になり得る。
いくつかの実施形態では、非同期複製140は、ブロックボリュームシステム122のパーティションに対応するデルタが生成された後にチェックポイントを生成し得る。いくつかの実施形態では、チェックポイント生成148サブシステムは、以下で図4を参照してより詳細に説明するように、デルタを集約し、集約された変更を予め生成されたチェックポイントに適用することによって、チェックポイントを生成し得る。
第1のデータセンタが障害(例えば、壊滅的な障害)を被り、例えば、ブロックボリュームシステム122のユーザおよび/または顧客によってシステムの復元が望まれる場合、フェイルオーバー/フェイルバック要求150が非同期複製140に提供され得る。フェイルオーバー/フェイルバック要求150は、非同期複製140に、第2の地理的領域に格納された複製済みデータを用いて復元ボリュームを生成させる復元要求の形態であってもよい。いくつかの実施形態では、非同期複製140は、フェイルオーバー/フェイルバック要求150を受信したことに応答して1つ以上の復元動作を実装し得る。いくつかの実施形態では、フェイルオーバー/フェイルバック要求150は、分散ストレージシステムの外部サービスによる要求および/または分散ストレージシステムのユーザによる要求を含み得る。場合によっては、データストア132がブロックボリュームシステム122(例えば、スタンバイボリューム)の複製である場合と同様に、フェイルオーバー要求は、データストア132がブロックボリュームシステム122の役割を担うように構成されるべきであることを示し得る。例えば、データストアは、ユーザデータを伴う入出力動作を処理し得る。いくつかの実施形態では、フェイルオーバー/フェイルバック要求150は、第1のデータセンタ120が、上述のように複製済みデータを受信するように構成され、かつフェイルオーバー要求に起因する障害よりも前に行なわれていた動作を再開する(例えば、フェイルバック復元)ように構成されるべきであることを示し得る。
図2は、1つ以上の実施形態に従った、非同期ブロックボリューム複製についての例示的技術200を示す。上述したように、非同期複製は、ユーザデータが、単一のバックアップイメージとしてではなく、増分単位でソースシステムから宛先システムに転送されることを可能にし得る。いくつかの実施形態では、ブロックボリュームシステム122は、ユーザから受信され得るとともに入出力(input-output:I/O)動作210によりユーザに提供され得るユーザデータを格納し得る。このように受信されたデータは、ブロックボリュームシステム122の1つ以上の構成パーティション220に格納されてもよい。非同期複製システム(例えば、図1の非同期複製140)は、以下で説明するように、1つ以上のプロセスによって、ユーザデータを複製してブロックボリュームシステム122からデータストア132に転送し得る。
いくつかの実施形態では、ユーザデータは、第1のスナップショット230を作成することによって複製され得る(例えば、動作250)。図1を参照してより詳細に説明するように、スナップショットは、ブロックボリュームシステム122に格納されたデータの記録であり得る。第1のスナップショット130のスナップショット生成(例えば、図1のスナップショット生成142)は第1の論理時間260に起こり得る。図1を参照してより詳細に説明するように、論理時間は、例えば、スナップショット生成がパーティション単位で進行する場合、ブロックボリュームシステム122の構成パーティション220の各々で2相コミットプロトコルを実装する、スナップショット生成動作(例えば、動作250)の反復を記述し得る。このような場合、第1の論理時間260は、スナップショットが作成されている期間に対応し得る。
場合によっては、第1のスナップショット230は、ブロックボリュームシステム122に格納されたユーザデータの非同期複製の第1の実装例である。このような場合、第1のスナップショット230によって表わされるデータセット全体がデータストア132に転送され得る。このようにして、第1のスナップショット130は、少なくともユーザデータおよびメタデータ(例えば、以下で説明するようなマニフェスト)の記録全体がソースシステムから宛先システムに転送され得る(例えば、動作252)という点でバックアップと同様であり得る。
いくつかの実施形態では、第1のスナップショットは、ブロックボリュームシステム122および/または構成パーティション220のディスクイメージであり得る。いくつかの実施形態では、第1のスナップショット230は複数のブロックイメージ232を含んでもよく、このため、少なくとも部分的にブロックイメージ232を個々におよび/またはグループごとに転送することによって、第1のスナップショット230によって記述されるデータがデータストア132に非同期的に転送され得るようになり得る。図3を参照してより詳細に説明するように、ブロックイメージ232は、例えば、データストア132がオブジェクトストレージシステムである場合、データストア132に格納されるべきチャンクオブジェクトに変換され得る。
いくつかの実施形態では、非同期複製は、第2の論理時間262に第2のスナップショット240を作成すること(例えば、動作254)を含み得る。いくつかの実施形態では、第2の論理時間262は、図1を参照してより詳細に上述したように、第1の論理時間260の後に続く期間に対応する。例えば、第2のスナップショット240は、第1のスナップショット230の作成後に数分(例えば、1~15分、5~10分等)で上述の2相コミットプロトコルによって作成されてもよい。いくつかの実施形態では、第2のスナップショット240は、第1のスナップショット230に関するブロックボリュームシステム122に格納されたデータに対する1つ以上の変更を含み得る。
技術200は、第2のスナップショット240を直接転送するのではなく、ブロックボリュームシステム122の構成パーティションに対応するデルタ242を生成すること(例えば、動作256)を含み得る。図1を参照してより詳細に上述したように、デルタ生成(例えば、図1のデルタ生成144)は、パーティション220ごとにデルタ242に含まれるデータの少なくとも一部を構成し得る、宛先システム(例えば、データストア132)の参照チャンク識別子とペアにされた(ポインタによって識別される)修正済みブロックのリストを生成するために、第1のスナップショット230に反映されたデータの状態を第2のスナップショット240のそれと比較することを含み得る。いくつかの実施形態では、デルタは、固有のデルタ識別子も含み得る。いくつかの実施形態では、固有のデルタ識別子は第2のスナップショット240の識別子に対応し得る。このようにして、デルタ242は、例えば、I/O履歴を提供するためのアプローチとして、第2の論理時間262にまでトレース可能なデータに対する変更を反映し得る。
デルタ242は、生成されると、宛先システム、例えば、データストア132に転送され得る(例えば、動作258)。いくつかの実施形態では、デルタ242は、ブロックボリュームシステム122に追加された任意の新しいデータとともに転送され得る。第1の論理時間260と第2の論理時間262との間でブロックボリュームシステム122から除去されるデータは、ソースシステムから宛先システムにデータ(例えば、チャンクオブジェクト)を転送することなく、デルタ242に含まれるメタデータによって反映され得る。
図3は、1つ以上の実施形態に従った、非同期複製によってブロックボリュームシステムを復元するための例示的技術300を示す。図1および図2を参照して上述した非同期複製システムの一部として、宛先システム、例えば、第2のデータセンタ130は、ソースシステム(例えば、図1の第1のデータセンタ120)に格納されたデータの複製を受信して維持し得る。いくつかの実施形態では、第2のデータセンタ130は、ソースシステム(例えば、領域Aと対照的な領域B)の地理的領域とは異なる地理的領域に位置していてもよい。第2のデータセンタ130は、1つ以上のデータオブジェクト310として、複製されたデータをオブジェクトストレージに格納し得るデータストア132を含み得る。
いくつかの実施形態では、データストア132は、非同期複製システムの構成に少なくとも部分的に基づいてオブジェクトストレージシステムとして動作し得るので、非同期複製は、複製されたデータをブロックとしてではなくチャンクオブジェクトとして格納するように構成され得る。とは言うものの、いくつかの実施形態では、第2のデータセンタ130はスタンバイボリュームを含んでもよく、これにより、スタンバイボリュームにデルタを直接適用することが可能になり得る。データストア132がスタンバイボリュームを含む実施形態では、ブロックをオブジェクトに変換すること(例えば、データ変換146)なしに非同期複製が完了することもある。
いくつかの実施形態では、非同期複製は、第1のチェックポイント320を生成すること(例えば、動作350)を含み得る。チェックポイントは、図4を参照してより詳細に説明するように、少なくとも、データストア132に格納されたチャンクオブジェクトの位置および識別子を記述するマニフェスト(例えば、メタデータ)を含み得るという点でスナップショットとは異なり得る。例えば、あるチェックポイントが非同期複製の一部として生成された第1の時間に第1のチェックポイント320が対応する場合、当該第1のチェックポイントは、複製されたデータを構成するチャンクオブジェクトの各々についてのチャンクポインタのリストを含み得る。
非同期複製の一部として、第2のデータセンタ130は、ソースシステムからデルタ330および対応するデータを受信する(例えば、動作352)。上述したように、デルタは、第1のスナップショットと第2のスナップショットとの間の入出力動作(図2のI/O動作210)によって生じるソースシステムに格納されたデータに対する変更を記述するメタデータを含み得る。対応するデータはチャンクオブジェクト(例えば、4MBチャンクオブジェクト)として受信され得る。
デルタ330は、第2のチェックポイント340を生成すること(例えば、動作354)の一部として、第1のチェックポイント320に適用され得る。第2のチェックポイントを生成することは、デルタ330において識別された1つ以上のチャンクオブジェクトを識別することと、デルタによって示される指示された修正を適用することとを含み得る。例えば、チャンクデータへの1つ以上の変換はデルタ330の第1のデルタ330-1によって示されてもよく、この場合、第1のデルタ330-1は、所与のパーティションに関して参照されたデータのデータストア132のオブジェクトストレージ内の位置を(例えば、チャンクポインタによって)示す。いくつかの実施形態では、非同期複製は、参照されたデータを直接修正するのではなく、以下で図4を参照してより詳細に説明するように、第2のチェックポイント340の生成の一環として、第1のデルタ330-1によって示される変更を反映するように第1のチェックポイント320を更新することを含み得る。
いくつかの実施形態では、第2のデータセンタ130(例えば、宛先システム)は、非同期複製システム(例えば、動作356による図1の非同期複製システム140)のユーザから受信され得るフェイルオーバー/フェイルバック要求(例えば、図1のフェイルオーバー/フェイルバック要求150)の対象であり得る。フェイルオーバー/フェイルバック要求は、ソースシステム(例えば、図1の第1のデータセンタ120)に影響を及ぼす障害(例えば、自然災害)に応答し得る。フェイルオーバー/フェイルバック要求は、以下で図7~図10を参照してより詳細に説明するように、ブロックボリュームシステムが複製済みデータおよび第2のチェックポイントからどのように復元されるべきかをガイドするパラメータを含み得る。
フェイルオーバー/フェイルバック要求を実装することは、復元ボリュームとも称されるフェイルオーバー/フェイルバックボリュームを生成すること(例えば、動作358)を含み得る。上述したように、フェイルオーバーシステムは宛先システムにおいてホストされ得る一方で、フェイルバックシステムはソースシステムでホストされ得る。いくつかの実施形態では、フェイルバック要求が受信されると、第2のチェックポイント340を用いて、オブジェクト310に格納されたデータをソースシステム(例えば、ブロックボリュームシステム122)内のブロックにマッピングし得る。フェイルバックボリュームを生成するプロセスについては以下で図5を参照してより詳細に説明する。同様に、フェイルオーバーは、例えば、第1のデータ120センタが障害から回復するまで、入出力動作に関する第1のデータセンタ120の役割を担うために、第2のデータセンタ130においてブロックボリュームシステムを生成することを含み得る。第2のデータセンタ130においてフェイルオーバーボリュームを生成することは、以下で図4を参照してより詳細に説明するように、例えば第2のチェックポイント340を用いることによって、オブジェクト310に格納されたデータをブロックにマッピングすることを含み得る。いくつかの実施形態では、ブロックボリュームデータを復元することは、宛先領域において新しいブロックボリュームを作成することと、宛先領域においてフェイルオーバーを実装することと、ソース領域において新しいボリュームに対する領域間複製を可能にすることと、ソース領域においてフェイルオーバーを実行することとを含むがこれらに限定されない1つ以上の動作を含み得る。
いくつかの実施形態では、第2のデータセンタ130が複製済みデータを格納するようにスタンバイボリュームを維持する場合と同様に、スタンバイボリュームは、障害時にソースシステムから転送されなかったデルタからの変更を除いて、ソースボリュームからの変更のすべてを既に含んでいる可能性がある。したがって、フェイルオーバーは、以下で図5を参照してより詳細に説明するように、比較的少量の失われたデータ(例えば、1~15分のスナップショット生成時間のオーダーでのRPO)で直ちに利用可能であり得る(例えば、低いRTOを示す)。対照的に、バックアップイメージ全体の同期複製を実装するバックアップシステムは、結果として数時間程度のRPOをもたらし得る。
いくつかの実施形態では、非同期複製は、フェイルオーバー/フェイルバックボリュームを生成するのではなく、逆複製を含み得る。このような場合、宛先システムはソースシステムとして指定され得るが、前のソースシステムは宛先システムとして再指定され得る。このようにして、入出力動作は、第2のデータセンタ130において行なわれてもよく、この場合、データは、データストア132において書込みおよび読取りがなされ、スナップショット作成およびデルタ生成もそこで行なわれる。これに対応して、複製済みデータが第1のデータセンタ120に転送され得る。
図4は、1つ以上の実施形態に従った、ブロックボリューム複製メタデータを集約するための例示的技術400を示す。非同期複製は、データが複製され得る期間にわたる1つ以上の構成動作(例えば、スナップショット作成、デルタ生成等)の複数回の反復を含み得る。このような場合、宛先システム(例えば、図1~図3の第2のデータセンタ130)を更新することは、複製されたデータに対応するメモリ位置の更新済み記録を維持し、後続の各反復によって導入された変更を反映することを含み得る。
いくつかの実施形態では、非同期複製は、デルタ(例えば、図3のデルタ330)および第1のチェックポイント320に対する1つ以上の動作により第2のチェックポイント340を生成することを含み得る。例えば、複数のデルタが第1のチェックポイント320の生成の後にソースシステムから宛先システムにおいて受信される場合、メモリ位置の正確な記録は、第1のチェックポイントのみを参照するのではなく、第1のチェックポイント320に適用されるように、デルタによって示される変更によってより適切に表現され得る。
いくつかの実施形態では、第1のチェックポイント320はマニフェスト420を含み得る。マニフェスト420は、(例えば、フェイルオーバー/フェイルバック動作をガイドするために)ソースシステムのパーティションに対応し得るので、ソースシステムが複数のパーティションを含む場合、複数のマニフェストはソースシステムからのデータの非同期複製を記述し得る。マニフェスト420は、チャンクポインタ422のリストを含み得る(例えば、チャンクポインタ1~Nであり、ここで、「N」は、マニフェスト420に含まれるチャンクポインタ422の数を指す整数である)。チャンクポインタ422は、(例えば、チャンクオブジェクトとしてデータストア132に格納される)複製されたデータに関連付けられたメモリ位置を記述し得る。第1のチェックポイント320を生成した後、宛先システムは、例えばスナップショット作成およびデルタ生成を反復することによって生成されるような複数のデルタを受信し得る。このようにして、第2のチェックポイント340を生成することは、デルタを集約すること(例えば、動作450)を含み得る。例えば、デルタを集約することは、デルタが生成されたスナップショットを確認するために第1のチェックポイント320の識別子を参照することを含み得る。このようにして、チェックポイント参照は、(スナップショットを参照する識別子も含む)受信されたデルタがマニフェスト420にすでに反映されているかどうか判断することを可能にし得る。
いくつかの実施形態では、更新済みマニフェスト440を提供するために、デルタを第1のチェックポイントと組合わせてもよい。デルタを組合わせることは、デルタによって示されるようにマニフェスト内の第1のチャンクポインタ422-1を修正することを含み得る(例えば、データの位置を指すポインタは、デルタによって記述される複製済みデータに対する変換に応答して変化し得る)。このように、すべての受信されたデルタにおいて示されるすべての変換をマニフェストに適用することによって、更新されたマニフェスト440は、以前のマニフェスト(例えば、マニフェスト420)が用いられた場合よりも場合によっては低いRPOでフェイルオーバー/フェイルバックボリュームを生成することを可能にし得る。同様に、非同期複製の反復ごとに、新しく生成されたデルタが生成されて宛先システムに転送され得る。この場合、それらデルタは、直近のマニフェスト(例えば、更新されたマニフェスト)と集約され得る。
図5は、1つ以上の実施形態に従った、スタンバイボリュームからフェイルバックボリュームを生成するための例示的技術500を示す。上述したように、フェイルバック要求(例えば、図1のフェイルオーバー/フェイルバック要求150)は、ソースシステム、例えば、第1のデータセンタ120、における障害回復の一部として受信され得る。フェイルバックボリュームは、宛先システムでホストされるフェイルオーバーボリュームまたは逆複製とは対照的に、ユーザデータ(例えば、性能メトリック、安定性等)をホストするために第1のデータセンタ120が選択されるのと同じ理由で好ましい可能性がある。
いくつかの実施形態では、宛先システム、例えば、第2のデータセンタ130は、スタンバイボリューム560を実装してソースボリューム522でデータを複製し得る。スタンバイボリューム560は、スタンバイボリュームがソースボリューム522の現在の状態を反映するように、ソースボリュームから受信したすべてのデルタを含み得る。例えば、第1のデルタ540は、(例えば、動作512によって)ソースボリューム522から生成され得るとともに、第1のデルタ540は、(例えば、動作514によって)スタンバイボリューム560に直接適用され得る。いくつかの実施形態では、スタンバイボリューム560にデルタを適用することは、ソースボリュームから参照されたデータ(例えば、修正されたブロック)をコピーすることと、入出力動作(例えば、ユーザ書込み動作)と同様の態様でスタンバイボリュームにおいて参照されたデータを複製することとを含み得る。さらに、デルタを適用することは、図4を参照して説明したようにマニフェストを更新することを含み得る。図4はチャンクポインタに関してマニフェストを説明しているが、マニフェストは同様に、複製済みデータが格納され得るスタンバイボリューム内のメモリ位置を記述し得る。
いくつかの実施形態では、スタンバイボリューム560を更新することは、デルタがスタンバイボリューム560に部分的に適用され得ることのないように、個別の動作においてデルタを適用することを含み得る。例えば、スタンバイボリューム560の第1のスナップショット530は、デルタを適用する動作(例えば、動作514)中にフェイルオーバー/フェイルバック要求が受信される場合にフォールバック位置を提供するために生成され得る。このようにして、システムリカバリは、デルタが適用されるのを待つのではなく、RPOの漸増を犠牲にして、改善されたRTOを提供し得る第1のスナップショット530を実装し得る。いくつかの実施形態では、第1のスナップショット530は、第1のデルタ540がスタンバイボリューム560に適用されると削除され得る。次に、第2のデルタ550(またはデルタ)が生成されると(例えば、動作516)、第2のスナップショット532が、第2のデルタを適用する(例えば、動作520)前に、スタンバイボリューム560において生成され得る(例えば、動作518)。第2のデルタを完全に適用した後、第2のスナップショット550も同様に削除され得る。
いくつかの実施形態では、スタンバイボリューム560は、フェイルオーバー/フェイルバック要求を受信した(例えば、動作522)ことに応答してフェイルオーバーボリュームまたはフェイルバックボリュームを生成するために用いられ得る。いくつかの実施形態では、データ復元は、フェイルオーバーボリュームに対する領域間複製を可能にすることによって、ソース領域にデータを転送し返すことを含み得る。いくつかの実施形態では、要求がフェイルバック要求である場合、スタンバイボリューム560は、第1のデータセンタ120においてクローニングされて復元され得る(例えば、動作524)。スタンバイボリューム560をクローニングすることは、第1のデータセンタ120においてフェイルバックボリューム562を作成することと、データを復元する(例えば、「クローンをハイドレートする」とも称される)こととを含み得る。いくつかの実施形態では、フェイルバック要求が実装された時に第2のデルタが完全に適用されていた場合、復元されたデータは、第2のデルタ550によって示される修正を含み得る。クローニングを用いてフェイルオーバー復元を実装することは、場合によっては、既存のスタンバイボリュームに対して領域間複製を継続することを可能にし得る。有利には、クローンボリュームは、待ち時間をほとんどまたは全く伴うことなく利用可能であり得るので、RTOに対する影響を些細なものにすることが可能になり得る。
図6は、1つ以上の実施形態に従った、スタンバイボリュームをサイズ変更するための例示的技術600を示す。第1のデータセンタ120におけるソースボリューム522等のソースシステムの通常動作は、(例えば、パーティションを追加するため、パーティションを除去するため、ソースボリューム522の1つ以上のパーティションをサイズ変更する等のために)ソースボリューム522をサイズ変更することを含み得る。いくつかの実施形態では、デルタがパーティションのために生成されるので、ソースボリューム522をサイズ変更すると、ソースボリュームデルタ522をスタンバイボリューム560にマッピングすることに影響が及び得る。したがって、スタンバイボリューム560は、ソースボリューム522をサイズ変更することによって導入されるデルタ適用における潜在的な誤差を制限するための1つ以上のアプローチを実装した後、ソースボリューム522のサイズ変更を考慮に入れるようにサイズ変更され得る。
いくつかの実施形態では、1つ以上のデルタ620は、上述した図1および図2を参照してより詳細に説明したように、ソースボリューム522から生成され得る(例えば、動作610)。デルタ620は、図5を参照して上述したように、スタンバイボリューム560に適用され得る(例えば、動作612)。場合によっては、ソースボリューム522をサイズ変更することは、ユーザまたは別のシステムからサイズ変更要求を受信すること(例えば、動作614)を含み得る。RPOに対するサイズ変更の影響を潜在的に制限するために、最後のデルタ630は、サイズ変更要求を受信した後、ソースボリューム522をサイズ変更する前に生成されてもよい(例えば、動作616)。いくつかの実施形態では、最後のデルタ630を生成することは、ソースボリューム522の新しいスナップショットを作成することと、新しいスナップショットに少なくとも部分的に基づいてデルタを生成することと、このように生成されたデルタを適用することとを含み得る。このようにして、スタンバイボリューム560は、ソースボリューム522をサイズ変更すること(例えば、動作618)によって、サイズ変更要求の実施直前のソースボリュームの状態を記述し得る。最後のデルタを適用すること(例えば、動作620)は、ソースボリューム522のサイズ変更から切り離され得てもよく、このため、最後のデルタ630が生成されると、ソースボリュームがサイズ変更されてから、最後のデルタがスタンバイボリューム560に適用され得るようになる。いくつかの実施形態では、スタンバイボリューム560は、最後のデルタの適用後に、対応する態様でサイズ変更され得る(例えば、動作622)。
図7は、1つ以上の実施形態に従った、復元ボリュームを生成するための例示的なフロー700を示す。フロー700の動作は、ハードウェア回路として実装することができ、および/または、図1の非同期複製システム140等のコンピュータシステムの非一時的コンピュータ可読媒体上にコンピュータ可読命令として格納することができる。当該命令は、実装されると、コンピュータシステムのプロセッサによって実行可能な回路またはコードを含むモジュールを表わす。このような命令の実行は、本明細書に記載の特定の動作を実行するようにコンピュータシステムを構成する。各回路またはコードは、プロセッサと組合わされてそれぞれの動作を実行する。これらの動作は特定の順序で示されているが、特定の順序は不要であり、1つ以上の動作が省略、スキップ、および/または並べ替えされる可能性があることを理解されたい。
一例では、フロー700は、コンピュータシステムが第1の地理的領域におけるブロックボリュームのスナップショットを作成する動作702を含む。図1および図2を参照してより詳細に説明するように、ブロックボリューム(例えば、図1のブロックボリュームシステム122)は、第1の地理的領域内の第1のデータセンタ(例えば、図1の第1のデータセンタ120)においてホストされ得るが、これは、入出力動作、安定性、コスト等に関連付けられた1つ以上の性能メトリックに少なくとも部分的に基づいて判定され得る。第1のスナップショットを作成すること(例えば、図2の動作250)は、ブロックボリュームを構成する1つ以上のブロックの1つ以上のブロックイメージ(例えば、図2のブロックイメージ232)を生成することを含み得る。スナップショットを作成することは、2相コミットプロトコルを実装することを含み得るとともに、これにより、ブロックボリュームのうちのあるパーティションのために入出力動作(例えば、図2のI/O動作210)が中断されてもよく、その間に、当該パーティションについてのブロックイメージが作成される。パーティションまたはブロックボリュームシステムのためのスナップショットを作成した後、コンピュータシステムはブロックボリュームに対する入出力動作を再開し得る。
一例では、フロー700は、コンピュータシステムが、第1のスナップショットに対応するスナップショットデータを第2の地理的領域にある第2のストレージシステムに送信する動作704を含む。いくつかの実施形態では、第1のスナップショットがブロックボリュームから作成された第1のスナップショットである場合と同様に、または以前に作成されたスナップショットが利用可能でない場合、スナップショットデータはブロックイメージを含み得る。したがって、ブロックイメージは、システム(例えば、図1のデータストア132)に送信され得る。いくつかの実施形態では、ブロックイメージは、チャンクオブジェクトに変換され、スナップショットデータとして第2のストレージシステムに送信され得る(例えば、図2の動作252)。場合によっては、チャンクオブジェクトは、例えば、メモリ内のスナップショットデータの位置を識別するチャンクポインタを列挙するマニフェストを含む、スナップショットデータを記述するメタデータとともに送信される。
一例では、フロー700は、コンピュータシステムが第1の地理的領域においてブロックボリュームの第2のスナップショットを作成する動作706を含む。図2を参照してより詳細に説明するように、第2のスナップショット(例えば、図2の第2のスナップショット240)は、第1のスナップショットが作成された第1の論理時間(例えば、図2の第1の論理時間260)の後に続く第2の論理時間(例えば、図2の第2の論理時間262)におけるブロックボリュームの状態を記述し得る。第2のスナップショットは、第1のスナップショットの作成後に生じたブロックボリュームシステムに格納されたデータに対する修正(例えば、データに対する読出し・書込み動作)に関する情報を含み得る。
一例では、フロー700は、コンピュータシステムが複数のデルタを生成する動作708を含む。複数のデルタは、第2のスナップショットを第2のストレージシステムに直接送信するのではなく、第2のスナップショットの作成(例えば、第2の論理時間)の作成と第1のスナップショットの作成(例えば、第1の論理時間)との間にブロックボリュームに格納されたデータに対する1つ以上の変更を記述し得る。デルタを生成することは、第2のスナップショット内のパーティションのブロックイメージを第1のスナップショット内のパーティションの対応するイメージと比較することと、パーティション内のデータに対する1つ以上の修正を識別することとを含み得る。図1および図2を参照してより詳細に説明するように、デルタは、スナップショットに対応するデルタ識別子、修正されたブロックボリューム内のデータを記述する1つ以上のブロック識別子、および/または、ブロック識別子によって識別されるデータの位置を記述する対応する数のオブジェクト識別子を含むがこれらに限定されないメタデータを含み得る。
一例では、フロー700は、コンピュータシステムが複数のデルタに関するデータを送信する動作710を含む。図2を参照してより詳細に説明するように、データを送信することは、ブロックボリュームシステムから第2のストレージシステムへのデータの複製を作成することを含み得る。これは、複製されたデータがオブジェクトストレージに格納される場合と同様に、チャンクオブジェクトを生成することと、チャンクオブジェクトを第2のストレージシステム(例えば、宛先システム)にコピーすることとを含み得る。データは、チャンクオブジェクトとブロックボリュームシステムのブロックとの間の対応関係をパーティション単位で記述するメタデータを提供し得る複数のデルタを伴い得る。
一例では、フロー700は、コンピュータシステムが第2の地理的領域においてチェックポイントを生成する動作712を含む。図3および図4を参照してより詳細に説明するように、チェックポイント(例えば、図3の第1のチェックポイント320)は、複数のチャンクポインタを記述するマニフェスト(例えば、図4のマニフェスト420)を含み得る。いくつかの実施形態では、チェックポイントを生成することは、チェックポイントに適用されるような複数のデルタに含まれる修正を反映する第2の複数のチャンクポインタを記述する更新されたマニフェスト(例えば、図4の更新されたマニフェスト420)を含み得る、更新されたチェックポイント(例えば、図3の第2のチェックポイント340)を生成するために、デルタを以前に生成されたチェックポイントと集約すること(例えば、図4の動作450)を含み得る。
一例では、フロー700は、コンピュータシステムが復元要求を受信する動作714を含む。復元要求(例えば、図1のフェイルオーバー/フェイルバック要求150)は、フェイルオーバーボリュームとも称される、第2の地理的位置における復元ボリュームを生成するためのユーザ要求を含み得る。いくつかの実施形態では、復元要求は、フェイルバックボリュームとも称される、第1の地理的位置における復元ボリュームを生成するためのユーザ要求を含み得る。いくつかの実施形態では、復元要求は、非同期複製を反転させる要求を含んでもよく、これにより、第2のストレージシステム(例えば、図1のデータストア132)をソースシステムとして指定し、ブロックボリュームシステム(例えば、図1のブロックボリュームシステム122)を非同期複製のための宛先システムとして指定し得る。いくつかの実施形態では、復元要求は、非同期複製の構成の一部として自動的に(例えば、ユーザ対話なしで)生成され得る。例えば、非同期複製システムは、ソースシステムで発生した障害に応答して復元要求を自動的に生成するように構成され得る。
一例では、フロー700は、コンピュータシステムが復元ボリュームを生成する動作716を含む。図3および図5を参照して説明したように、復元ボリュームを生成することは、例えば、更新されたマニフェスト(例えば、図4の更新されたマニフェスト440)を参照して、オブジェクトストレージに格納されたチャンクオブジェクトからのレプリカデータをブロックボリューム内のブロックにマッピングすることによってブロックボリュームを生成することを含み得る。このようにして、復元ボリュームは、バックアップシステムによって達成され得るよりも低いRPOで生成され得る。同様に、復元要求の受信と通常の入出力動作の再開との間の時間を反映し得るシステム復元動作のRTOは、復元要求がフェイルオーバー要求であるかまたはフェイルバック要求であるかに依存し得るが、これについては、以下で図8および図9を参照してより詳細に説明する。
図8は、1つ以上の実施形態に従った、フェイルオーバーボリュームを生成するための例示的なフロー800を示す。フロー800の動作は、ハードウェア回路として実装することができ、および/または、図1の非同期複製システム140等のコンピュータシステムの非一時的なコンピュータ可読媒体上にコンピュータ可読命令として格納することができる。当該命令は、実装されると、コンピュータシステムのプロセッサによって実行可能な回路またはコードを含むモジュールを表わす。このような命令の実行は、本明細書に記載の特定の動作を実行するようにコンピュータシステムを構成する。各回路またはコードは、プロセッサと組合わされてそれぞれの動作を実行する。これらの動作は特定の順序で示されているが、特定の順序は不要であり、1つ以上の動作が省略、スキップ、および/または並べ替えされる可能性があることを理解されたい。
一例では、フロー800は、コンピュータシステムがフェイルオーバー要求である復元要求を受信する動作802を含む。図1~図6を参照してより詳細に上述したように、分散ストレージシステム(例えば、クラウドストレージ)の一部を形成し得るブロックボリュームシステム(例えば、図1のブロックボリュームシステム122)が災害または他の障害によって影響を受けた後、フェイルオーバー要求が非同期複製(例えば、図1の非同期複製140)によって受信され得る。いくつかの実施形態では、フェイルオーバー要求は、ブロックボリュームシステムに影響を与える障害によって場合によっては影響を受けない第2の地理的領域においてブロックボリュームシステムを再生するフェイルオーバーボリュームを生成するための要求を含み得る。
一例では、フロー800は、コンピュータシステムが第2の地理的領域においてフェイルオーバーボリュームを生成する動作804を含む。フェイルオーバーボリュームは、場合によっては、ブロックボリュームシステムに影響を及ぼす障害が解決される前に入出力動作(例えば、図2のI/O動作210)の再開を可能にし得る。このような場合、RTOは、フェイルバックボリュームと比較して、フェイルオーバーボリュームを生成することによって改善され得る。図7を参照して上述したように、オブジェクトストレージに格納されたレプリカデータを用いてフェイルオーバーボリュームを生成することは、非同期複製中に生成された直近に集約されたデルタで更新される、レプリカデータのメモリ内の位置を記述する更新済みマニフェスト(例えば、図4の更新されたマニフェスト440)を参照してフェイルオーバーボリュームを生成することを含み得る。
一例では、フロー800は、コンピュータシステムがフェイルオーバーボリュームをハイドレートする動作806を含む。より詳細に上述したように、フェイルオーバーボリュームをハイドレートすることは、更新されたマニフェストに記述されたデータを、(例えば、図1を参照して上述したチャンクオブジェクトと同様に)オブジェクトストレージから、ブロックボリュームシステムの読出し/書込み動作(例えば、図2のI/O動作210)によって対応可能であり得るブロックに復元することを含み得る。いくつかの実施形態では、ブロックボリュームシステムのパーティションは、フェイルオーバーボリューム内に保存され得る。
一例では、フロー800は、コンピュータシステムが入出力動作を開始する動作808を含む。ブロックボリュームシステムからの複製済みデータが復元され、フェイルオーバーボリュームにマッピングされた「ハイドレーション」の後、フェイルオーバーボリュームは、入出力動作を開始してもよく、障害が解決され得る間、ブロックボリュームシステムの役割を担ってもよい。
図9は、1つ以上の実施形態に従った、フェイルバックボリュームを生成するための例示的なフロー900を示す。フロー900の動作は、ハードウェア回路として実装することができ、および/または、図1の非同期複製システム140等のコンピュータシステムの非一時的なコンピュータ可読媒体上にコンピュータ可読命令として格納することができる。当該命令は、実装されると、コンピュータシステムのプロセッサによって実行可能な回路またはコードを含むモジュールを表わす。このような命令の実行は、本明細書に記載の特定の動作を実行するようにコンピュータシステムを構成する。各回路またはコードは、プロセッサと組合わされてそれぞれの動作を実行する。これらの動作は特定の順序で示されているが、特定の順序は不要であり、1つ以上の動作が省略、スキップ、および/または並べ替えされる可能性があることを理解されたい。
一例では、フロー900は、コンピュータシステムがフェイルバック要求である復元要求を受信する動作902を含む。いくつかの実施形態では、復元要求を引起こす障害は、無期限の期間ではない可能性がある。例えば、障害が確実に克服可能である一時的な電力またはネットワークの中断によって引起こされる場合と同様に、当該障害は、予測可能な時間の長さの範囲内で解決可能であり得る。したがって、フェイルバック要求は、フェイルオーバーボリュームと、フェイルオーバーボリュームに対するRTOに関して潜在的に制限された差とを生成するための好ましい代替例を(例えば、分散ストレージ性能の観点から)表わし得る。
一例では、フロー900は、コンピュータシステムが第2の地理的領域においてスタンバイボリュームを生成する動作904を含む。いくつかの実施形態では、スタンバイボリュームは、第2の地理的領域(例えば、図1の第2のデータセンタ130)において入出力動作を実行するように設計されていないことを除いては、フェイルオーバーボリュームと同様のブロックボリュームシステムを含み得る。例えば、スタンバイボリュームは、分散ストレージシステムのユーザから見えていなくてもよく、および/または入出力動作に不適格となるように構成されてもよい。いくつかの実施形態では、スタンバイボリュームは、(例えば、パーティショニング、サイズ等の観点から)ブロックボリュームシステムの構造と、チャンクオブジェクトとして格納された複製済みデータへのブロックのマッピングとを再現し得る。
一例では、フロー900は、コンピュータシステムが第1の地理的領域においてスタンバイボリュームをクローニングする動作906を含む。図5を参照してより詳細に上述したように、スタンバイボリュームをクローニングすること(例えば、図5の動作524)は、スタンバイボリュームの構造を少なくとも部分的に用いることによってフェイルバックボリュームを生成することにより、ブロックボリュームシステムを第1の地理的領域に復元することを含み得る。例えば、スタンバイボリュームは、複製されたデータが第2の地理的領域から第1の地理的領域にコピーして返されると、フェイルバックボリュームが新しいマッピングで復元されるように構成され得るように、複製されたデータの構造およびマッピングを(例えば、更新されたマニフェストを参照して)記述し得る。
一例では、フロー900は、コンピュータシステムが第1の地理的領域においてフェイルバックボリュームをハイドレートする動作908を含む。いくつかの実施形態では、フェイルバックボリュームをハイドレートすることは、フェイルバックボリュームが入出力動作を再開し得るように、複製されたデータを第1の地理的領域(例えば、図1の第1のデータセンタ120)に復元することを含み得る。複製されたデータを復元することは、データを第2の地理的領域から第1の地理的領域にコピーすることを含み得る。複製されたデータを復元することはまた、非同期複製反復(例えば、デルタ適用によって生成されるもの)からのマッピングから、フェイルバックブロックボリュームシステム内の新しいデータ位置に対応する新しいマッピングへと、データを再マッピングすることを含み得る。
一例では、フロー900は、コンピュータシステムが第1の地理的領域において入出力動作を開始する動作910を含む。入出力動作は、フェイルバックボリュームを用いてデータにアクセスし、当該データを格納して修正することを記述する。システム復元の一環として、低いRTOおよび低いRPOであればシステム性能が改善し得る。少なくともこの理由により、いくつかの実施形態では、入出力動作は、動作908のデータ復元の進行中に開始され得る。例えば、読取り・書込み動作が開始されてから、当該複製されたデータが第2の地理的領域から第1の地理的領域に完全にコピーして返されてもよい。いくつかの実施形態では、コピーオーバーおよび再マッピングが完全に完了されてから、フェイルバックボリューム上で入出力動作が開始され得る。
図10は、1つ以上の実施形態に従った、フェイルバックボリュームを生成するための例示的なフロー1000を示す。フロー1000の動作は、ハードウェア回路として実装することができ、および/または、図1の非同期複製システム140等のコンピュータシステムの非一時的なコンピュータ可読媒体上にコンピュータ可読命令として格納することができる。当該命令は、実装されると、コンピュータシステムのプロセッサによって実行可能な回路またはコードを含むモジュールを表わす。このような命令の実行は、本明細書に記載の特定の動作を実行するようにコンピュータシステムを構成する。各回路またはコードは、プロセッサと組合わされてそれぞれの動作を実行する。これらの動作は特定の順序で示されているが、特定の順序は不要であり、1つ以上の動作が省略、スキップ、および/または並べ替えされる可能性があることを理解されたい。
図6を参照してより詳細に説明するように、いくつかの実施形態では、非同期複製は、第2の地理的位置に、付加的または代替的には複製されたデータのオブジェクトストレージに、スタンバイボリュームを含んでもよい。(例えば、図1のデータ変換146を参照して説明するように)デルタによって記述されるデータをチャンクオブジェクトに変換するのではなく、スタンバイボリュームは、ブロックボリュームシステムからスタンバイボリュームへのブロックデータの直接転送を含み得る。いくつかの実施形態では、スタンバイボリュームは、ブロックボリュームシステムのユーザから見えない(例えば、入出力動作に利用できない)可能性もあるが、ブロックボリュームシステムに影響を及ぼす途絶が起こった場合にRTOおよびRPOを潜在的に最小限に抑えるために、更新されたブロックデータを維持し得る。いくつかの実施形態では、スタンバイボリュームは、オブジェクトストレージデータに対するチェックポイント動作を実装しながら、例えば、デルタからデータをキャッシュすることによって、宛先領域内のオブジェクトストレージと対話し得る。
一例では、フロー1000は、コンピュータシステムが第1の地理的領域においてブロックボリュームシステムからデルタを生成する動作1002を含む。デルタは、図2を参照してより詳細に説明するように、第1の論理時間における第1のスナップショットと第2の論理時間における第2のスナップショットとの間のブロックボリュームシステムに格納されたデータに対する修正を表わし得る。
一例では、フロー1000は、コンピュータシステムが第2の地理的領域においてスタンバイボリュームシステムのスナップショットを作成する動作1004を含む。いくつかの実施形態では、スタンバイボリュームを更新するよりも前に、スタンバイボリュームのスナップショットの作成が先に行なわれてもよい。図1を参照してより詳細に説明するように、スナップショットを作成することは、スタンバイボリュームを構成するブロックの複数のブロックイメージをパーティション単位で作成することを含み得る。これらのイメージは、組合わされると、(例えば、2相コミットプロトコルに関連付けて上述したように)スナップショットの作成に対応する論理時間におけるスタンバイボリューム内のデータの状態を記述し得る。スナップショットは、ブロックボリュームシステムを復元するときに非同期複製システムが用いるべきフォールバック位置を提供し得る。例えば、スタンバイボリュームが新しいデルタで更新されている間に復元要求が受信された場合、非同期複製は、スナップショットを用いて復元ボリュームを生成してもよい。
一例では、フロー1000は、コンピュータシステムがデルタをスタンバイボリュームシステムに適用する動作1006を含む。オブジェクトストレージを用いてデータ複製に関連付けて説明したアプローチとは対照的に、スタンバイボリュームは、デルタを直接適用することによって更新され得る。例えば、図2を参照してより詳細に説明するように、デルタは、修正の結果として複製されているデータについてのブロックボリュームシステムのメモリ内の位置を記述するメタデータ(例えば、ブロック識別子)を含み得る。このようにして、デルタからの指示された修正を適用することによって、スタンバイボリュームに修正を行なってもよい。
一例では、フロー1000は、コンピュータシステムがフェイルバック要求を受信する動作1008を含む。上述したように、途絶が解決された後にフェイルバックシステムを生成するためにスタンバイシステムが用いられ得るように、フェイルバック要求は、ブロックボリュームシステムにおける動作の障害または他の中断の後に受信され得る。
一例では、フロー1000は、コンピュータシステムがスタンバイボリュームをクローニングする動作1010を含む。図5を参照してより詳細に説明するように、スタンバイボリュームをクローニングすること(例えば、図5の動作524)は、(例えば、サイズ、パーティション等の観点で)スタンバイボリュームの構造を再現し得る第1の地理的領域(例えば、図1の第1のデータセンタ120)においてフェイルバックボリューム(例えば、図5のフェイルバックボリューム562)を作成することを含み得る。
一例では、フロー1000は、コンピュータシステムが第1の地理的領域において複製済みデータをフェイルバックボリュームに復元する動作1012を含む。上述したように、複製済みデータを復元することは、第2の地理的領域から第1の地理的領域にブロックデータをコピーすること(「ハイドレートすること」とも称される)と、ブロックデータをフェイルバックボリュームにマッピングすることとを含み得る。いくつかの実施形態では、入出力動作は、複製済みデータが復元されると、および/または、複製済みデータを復元しながら、フェイルバックボリューム上で開始されてもよい。
図11は、1つ以上の実施形態に従った、フェイルバックボリュームを生成するための例示的なフロー1100を示す。フロー1100の動作は、ハードウェア回路として実装することができ、および/または、図1の非同期複製システム140等のコンピュータシステムの非一時的なコンピュータ可読媒体上にコンピュータ可読命令として格納することができる。当該命令は、実装されると、コンピュータシステムのプロセッサによって実行可能な回路またはコードを含むモジュールを表わす。このような命令の実行は、本明細書に記載の特定の動作を実行するようにコンピュータシステムを構成する。各回路またはコードは、プロセッサと組合わされてそれぞれの動作を実行する。これらの動作は特定の順序で示されているが、特定の順序は不要であり、1つ以上の動作が省略、スキップ、および/または並べ替えされる可能性があることを理解されたい。
一例では、フロー1100は、コンピュータシステムが第1の地理的領域においてサイズ変更要求を受信する動作1102を含む。非同期複製システムの動作中、例えば、スナップショット作成の反復の間、またはデルタ生成中、第1の地理的領域におけるブロックボリュームシステムはサイズ変更要求を受け得る。サイズ変更要求は、1つ以上のパーティションの追加および/もしくは除去、またはブロックボリュームシステムの1つ以上のパーティションのサイズの変更を含み得るので、サイズ変更前に生成されたデルタは、サイズ変更された後のスタンバイボリュームと互換性がない可能性がある。
一例では、フロー1100は、コンピュータシステムが第1の地理的領域において最後のデルタを生成する動作1104を含む。いくつかの実施形態では、非同期複製システムは、ブロックボリュームシステムによるサイズ変更要求の受信に応答して、修正された複製プロトコルを実装し得る。例えば、サイズ変更要求の受信直後にブロックボリュームシステムをサイズ変更するのではなく、別のスナップショットを作成し、1つ以上の最後のデルタを生成してもよい。このようなアプローチは、複製されたデータがサイズ変更の前にブロックボリュームシステムの更新された状態を反映することを可能にし得るので、さらに、複製されたデータから生成される復元ボリュームのRPOが低減し得る。
一例では、フロー1100は、コンピュータシステムが第2の地理的領域においてスタンバイボリュームに最後のデルタを適用する動作1106を含む。最後のデルタを適用することは、上述したように、動作1104において生成された1つ以上の最後のデルタによって記述されるブロックボリュームシステムに対する修正を反映するようにスタンバイボリュームを修正することを含み得る。
一例では、フロー1100は、コンピュータシステムが第1の地理的領域においてブロックボリュームをサイズ変更する動作1108を含む。動作1104の後、サイズ変更要求がブロックボリュームシステムに適用されてもよい。
一例では、フロー1100は、コンピュータシステムがサイズ変更要求に対応するスタンバイボリュームをサイズ変更する動作1110を含む。同様に、動作1106の後、スタンバイボリュームも、サイズ変更要求に対応する態様でサイズ変更され得る。非同期複製は、パーティション固有のデルタを生成し得るので、スタンバイボリュームは、ブロックボリュームシステムの構造を再現するように構成され得る。例えば、スタンバイボリュームは、ブロックボリュームシステムと同じサイズの同じ数のパーティションを含み得る。
上述のように、サービスとしてのインフラストラクチャ(IaaS)は、1つの特定のタイプのクラウドコンピューティングである。IaaSは、公衆ネットワーク(例えば、インターネット)を介して、仮想化されたコンピューティングリソースを提供するよう構成され得る。IaaSモデルでは、クラウドコンピューティングプロバイダは、インフラストラクチャ構成要素(例えば、サーバ、ストレージデバイス、ネットワークノード(例えば、ハードウェア)、展開ソフトウェア、プラットフォーム仮想化(例えば、ハイパーバイザ層)など)をホストし得る。場合によっては、IaaSプロバイダはまた、それらのインフラストラクチャ構成要素に付随するよう、様々なサービス(例えば、課金、監視、ロギング、セキュリティ、負荷分散およびクラスタリングなど)を供給してもよい。したがって、これらのサービスはポリシー駆動型であり得るので、IaaSユーザは、アプリケーションの可用性および性能を維持するように負荷分散を駆動するためにポリシーを実現することが可能であり得る。
いくつかの事例では、IaaS顧客は、インターネット等のワイドエリアネットワーク(WAN)を通してリソースおよびサービスにアクセスしてもよく、クラウドプロバイダのサービスを用いて、アプリケーションスタックの残りの要素をインストールしてもよい。例えば、ユーザは、IaaSプラットフォームにログインして、仮想マシン(VM)を作成し、各VMにオペレーティングシステム(OS)をインストールし、データベース等のミドルウェアを展開し、ワークロードおよびバックアップのためにストレージバケットを作成し、さらには企業ソフトウェアをそのVMにインストールし得る。次いで、顧客は、プロバイダのサービスを用いて、ネットワークトラフィックの均衡化、アプリケーション問題のトラブルシューティング、パフォーマンスの監視、災害復旧の管理などを含む様々な機能を実行し得る。
ほとんどの場合、クラウドコンピューティングモデルは、クラウドプロバイダの参加を必要とすることになる。クラウドプロバイダは、IaaSの提供(例えば、進呈、レンタル、販売)に特化した第三者サービスであってもよいが、その必要はない。エンティティも、プライベートクラウドを展開することを選択し、インフラストラクチャサービスの独自のプロバイダになる可能性がある。
いくつかの例では、IaaS展開は、新たなアプリケーションまたはアプリケーションの新たなバージョンを準備されたアプリケーションサーバなどに置くプロセスであり、サーバを準備する(例えば、ライブラリ、デーモンなどをインストールする)プロセスも、含み得る。これは、多くの場合、クラウドプロバイダによって、ハイパーバイザ層(例えば、サーバ、ストレージ、ネットワークハードウェア、および仮想化)の下で管理される。したがって、顧客は、((例えば、オンデマンドで起動可能な)例えば、セルフサービス仮想マシン上での)ハンドリング(OS)、ミドルウェア、および/またはアプリケーション展開などを担い得る。
いくつかの例では、IaaSプロビジョニングは、使用のためにコンピュータまたは仮想ホストを取得すること、および必要とされるライブラリまたはサービスをそれらにインストールすることさえも指すことがある。ほとんどの場合、展開はプロビジョニングを含まず、プロビジョニングは最初に実行される必要があり得る。
場合によっては、IaaSプロビジョニングには2つの異なる問題がある。第1に、何かが動作する前にインフラストラクチャの初期セットをプロビジョニングするという最初の課題がある。第2に、すべてのものがプロビジョニングされると、既存のインフラストラクチャを発展させる(例えば、新たなサービスの追加、サービスの変更、サービスの削除など)という課題がある。場合によっては、これらの2つの課題は、インフラストラクチャの構成が宣言的に定義されることを可能にすることによって対処されてもよい。言い換えれば、インフラストラクチャ(例えば、どのような構成要素が必要とされるか、およびそれらがどのように対話するか)は、1つ以上の構成ファイルによって定義され得る。したがって、インフラストラクチャの全体的なトポロジー(例えば、どのようなリソースがどのリソースに依存するか、およびそれらの各々がどのように協働するか)は、宣言的に記述され得る。いくつかの例では、トポロジーが定義されると、構成ファイルに記述される様々な構成要素を作成および/または管理するワークフローを生成することができる。
いくつかの例では、インフラストラクチャは、多くの相互接続された要素を有し得る。例えば、コアネットワークとしても公知である1つ以上の仮想プライベートクラウド(VPC)(例えば、構成可能および/または共有されるコンピューティングリソースの、潜在的にオンデマンドのプール)があり得る。いくつかの例では、ネットワークのセキュリティが如何にセットアップされ得るかを定義するためにプロビジョニングされる1つ以上のセキュリティグループルール、および1つ以上の仮想マシン(VM)も、あり得る。ロードバランサ、データベース等の他のインフラストラクチャ要素もプロビジョニングされ得る。ますます多くのインフラストラクチャ要素が所望および/または追加されるにつれて、インフラストラクチャは漸進的に進化し得る。
いくつかの例では、様々な仮想コンピューティング環境にわたるインフラストラクチャコードの展開を可能にするために、連続展開技術が採用されてもよい。加えて、説明される技術は、これらの環境内でインフラストラクチャ管理を可能にし得る。いくつかの例では、サービスチームが、1つ以上の、但ししばしば多くの、(例えば、時として世界全体に及ぶ、種々の異なる地理的位置にわたる)様々な生産環境に展開されることが望まれるコードを書き込むことができる。しかしながら、いくつかの例では、コードが展開され得るインフラストラクチャは、最初にセットアップされなければならない。いくつかの事例では、プロビジョニングは、手動で行なうことができ、プロビジョニングツールを利用してリソースをプロビジョニングしてもよく、および/または、インフラストラクチャがプロビジョニングされると、展開ツールを利用してコードを展開してもよい。
図12は、少なくとも1つの実施形態に従った、IaaSアーキテクチャの例示的なパターンを示すブロック図1200である。サービスオペレータ1202は、仮想クラウドネットワーク(VCN)1206およびセキュアホストサブネット1208を含み得るセキュアホストテナンシー1204に通信可能に結合され得る。いくつかの例では、サービスオペレータ1202は、1つ以上のクライアントコンピューティングデバイスを用いていてもよく、それらは、手持ち式の携帯型デバイス(例えば、iPhone(登録商標)、セルラー電話、iPad(登録商標)、コンピューティングタブレット、携帯情報端末(PDA))またはウェアラブルデバイス(例えばGoogle(登録商標) Glass(登録商標)頭部装着型ディスプレイ)であってもよく、Microsoft Windows Mobile(登録商標)等のソフトウェア、および/もしくは、iOS、Windows Phone、Android、BlackBerry 8、Palm OS等の様々なモバイルオペレーティングシステムを実行し、インターネット、電子メール、ショートメッセージサービス(SMS)、Blackberry(登録商標)、または他のイネーブルにされた通信プロトコルであり得る。代替的に、クライアントコンピューティングデバイスは、例として、様々なバージョンのMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、および/もしくはLinux(登録商標)オペレーティングシステムを実行するパーソナルコンピュータならびに/またはラップトップコンピュータを含む汎用パーソナルコンピュータであり得る。クライアントコンピューティングデバイスは、例えばGoogle(登録商標) Chrome OS等の様々GNU/Linuxオペレーティングシステムを含むがこれに限定されない、様々な市販のUNIX(登録商標)またはUNIX様オペレーティングシステムのいずれかを実行するワークステーションコンピュータであり得る。代替として、または加えて、クライアントコンピューティングデバイスは、VCN1206および/またはインターネットにアクセスし得るネットワークを介して通信することが可能な、シンクライアントコンピュータ、インターネット対応ゲームシステム(例えば、Kinect(登録商標)ジェスチャ入力装置を有するかまたは有さないMicrosoft Xboxゲームコンソール)、および/またはパーソナルメッセージングデバイス等の任意の他の電子デバイスであってもよい。
VCN1206は、SSH VCN1212に含まれるLPG1210を介してセキュアシェル(SSH)VCN1212に通信可能に結合され得るローカルピアリングゲートウェイ(LPG)1210を含み得る。SSH VCN1212は、SSHサブネット1214を含み得、SSH VCN1212は、制御プレーンVCN1216に含まれるLPG1210を介して制御プレーンVCN1216に通信可能に結合され得る。また、SSH VCN1212は、LPG1210を介してデータプレーンVCN1218に通信可能に結合され得る。制御プレーンVCN1216およびデータプレーンVCN1218は、IaaSプロバイダによって所有および/または運用され得るサービステナンシー1219に含まれ得る。
制御プレーンVCN1216は、周辺ネットワーク(例えば、企業イントラネットと外部ネットワークとの間の企業ネットワークの部分)として機能する制御プレーンデミリタライズドゾーン(DMZ)層1220を含み得る。DMZベースのサーバは、その責任が限られており、セキュリティ侵害が含まれたままになるのを助長する可能性がある。加えて、DMZ層1220は、1つ以上のロードバランサ(LB)サブネット1222と、アプリサブネット1226を含み得る制御プレーンアプリ層1224と、データベース(DB)サブネット1230(例えば、フロントエンドDBサブネットおよび/またはバックエンドDBサブネット)を含み得る制御プレーンデータ層1228とを含み得る。制御プレーンDMZ層1220に含まれるLBサブネット1222は、制御プレーンアプリ層1224に含まれるアプリサブネット1226と、制御プレーンVCN1216に含まれ得るインターネットゲートウェイ1234とに通信可能に結合することができ、アプリサブネット1226は、制御プレーンデータ層1228に含まれるDBサブネット1230と、サービスゲートウェイ1236と、ネットワークアドレス変換(NAT)ゲートウェイ1238とに通信可能に結合することができる。制御プレーンVCN1216は、サービスゲートウェイ1236およびNATゲートウェイ1238を含み得る。
制御プレーンVCN1216は、アプリサブネット1226を含み得るデータプレーンミラーアプリ層1240を含み得る。データプレーンミラーアプリ層1240に含まれるアプリサブネット1226は、計算インスタンス1244を実行し得る仮想ネットワークインターフェイスコントローラ(VNIC)1242を含み得る。計算インスタンス1244は、データプレーンミラーアプリ層1240のアプリサブネット1226を、データプレーンアプリ層1246に含まれ得るアプリサブネット1226に、通信可能に結合することができる。
データプレーンVCN1218は、データプレーンアプリ層1246と、データプレーンDMZ層1248と、データプレーンデータ層1250とを含み得る。データプレーンDMZ層1248は、データプレーンアプリ層1246のアプリサブネット1226およびデータプレーンVCN1218のインターネットゲートウェイ1234に通信可能に結合され得るLBサブネット1222を含み得る。アプリサブネット1226は、データプレーンVCN1218のサービスゲートウェイ1236およびデータプレーンVCN1218のNATゲートウェイ1238に通信可能に結合され得る。データプレーンデータ層1250も、データプレーンアプリ層1246のアプリサブネット1226に通信可能に結合され得るDBサブネット1230を含み得る。
制御プレーンVCN1216およびデータプレーンVCN1218のインターネットゲートウェイ1234は、公衆インターネット1254に通信可能に結合され得るメタデータ管理サービス1252に通信可能に結合され得る。公衆インターネット1254は、制御プレーンVCN1216およびデータプレーンVCN1218のNATゲートウェイ1238に通信可能に結合され得る。制御プレーンVCN1216およびデータプレーンVCN1218のサービスゲートウェイ1236は、クラウドサービス1256に通信可能に結合され得る。
いくつかの例では、制御プレーンVCN1216またはデータプランVCN1218のサービスゲートウェイ1236は、公衆インターネット1254を通過することなくクラウドサービス1256にアプリケーションプログラミングインターフェイス(API)呼出しを行い得る。サービスゲートウェイ1236からのクラウドサービス1256へのAPI呼出しは、一方向であり得、サービスゲートウェイ1236は、クラウドサービス1256にAPI呼出しを行い得、クラウドサービス1256は、要求されたデータをサービスゲートウェイ1236に送信し得る。しかし、クラウドサービス1256は、サービスゲートウェイ1236へのAPI呼出しを開始しなくてもよい。
いくつかの例では、セキュアホストテナンシー1204は、サービステナンシー1219に直接接続することができ、サービステナンシーは、それ以外の場合は隔離されてもよい。セキュアホストサブネット1208は、他の態様では隔離されたシステムを介して双方向通信を可能にし得るLPG1210を通じてSSHサブネット1214と通信することができる。セキュアホストサブネット1208をSSHサブネット1214に接続することにより、セキュアホストサブネット1208にサービステナンシー1219内の他のエンティティへのアクセスを与えてもよい。
制御プレーンVCN1216は、サービステナンシー1219のユーザが所望のリソースをセットアップまたはプロビジョニングすることを可能にし得る。制御プレーンVCN1216内でプロビジョニングされる所望のリソースは、データプレーンVCN1218内で展開または使用されてもよい。いくつかの例では、制御プレーンVCN1216は、データプレーンVCN1218から隔離され得るとともに、制御プレーンVCN1216のデータプレーンミラーアプリ層1240は、データプレーンミラーアプリ層1240およびデータプレーンアプリ層1246に含まれ得るVNIC1242を介して、データプレーンVCN1218のデータプレーンアプリ層1246と通信し得る。
いくつかの例では、システムのユーザまたは顧客は、メタデータ管理サービス1252に要求を通信し得る公衆インターネット1254を介して、要求、例えば、作成、読出、更新、または削除(CRUD)動作を行い得る。メタデータ管理サービス1252は、インターネットゲートウェイ1234を介して制御プレーンVCN1216に要求を通信し得る。この要求は、制御プレーンDMZ層1220に含まれるLBサブネット1222によって受信され得る。LBサブネット1222は、要求が有効であると判断してもよく、この判断に応答して、LBサブネット1222は、制御プレーンアプリ層1224に含まれるアプリサブネット1226に要求を送信し得る。要求が検証され、公衆インターネット1254への呼出しを必要とする場合、公衆インターネット1254への呼出しは、公衆インターネット1254への呼出しを行い得るNATゲートウェイ1238に送信されてもよい。要求によって格納されることが望まれる可能性のあるメモリは、DBサブネット1230に格納されてもよい。
いくつかの例では、データプレーンミラーアプリ層1240は、制御プレーンVCN1216とデータプレーンVCN1218との間の直接通信を容易にし得る。例えば、構成の変更、更新、または他の適切な修正が、データプレーンVCN1218に含まれるリソースに適用されることが望まれる場合がある。VNIC1242を介して、制御プレーンVCN1216は、データプレーンVCN1218に含まれるリソースと直接通信することができ、これにより、データプレーンVCN1218に含まれるリソースに対する変更、更新、または他の好適な修正を実行することができる。
いくつかの実施形態では、制御プレーンVCN1216およびデータプレーンVCN1218はサービステナンシー1219に含まれ得る。この場合、システムのユーザまたは顧客は、制御プレーンVCN1216またはデータプレーンVCN1218のいずれかを所有または操作しなくてもよい。代わりに、IaaSプロバイダは、制御プレーンVCN1216およびデータプレーンVCN1218を所有または動作してもよく、これらはともにサービステナンシー1219に含まれてもよい。この実施形態は、ユーザまたは顧客が他のユーザまたは他の顧客のリソースと対話することを防止し得るネットワークの隔離を可能にし得る。また、この実施形態は、システムのユーザまたは顧客が、格納のために、所望のレベルのセキュリティを有さない場合がある公衆インターネット1254に依拠する必要なく、データベースをプライベートに格納することを可能にし得る。
他の実施形態では、制御プレーンVCN1216に含まれるLBサブネット1222は、サービスゲートウェイ1236から信号を受信するよう構成され得る。この実施形態では、制御プレーンVCN1216およびデータプレーンVCN1218は、公衆インターネット1254を呼び出すことなく、IaaSプロバイダの顧客によって呼び出されるように構成されてもよい。IaaSプロバイダの顧客は、顧客が使用するデータベースがIaaSプロバイダによって制御され得るとともに公衆インターネット1254から隔離され得るサービステナンシー1219上に記憶され得るため、この実施形態を所望する可能性がある。
図13は、少なくとも1つの実施形態に従った、IaaSアーキテクチャの別の例示的なパターンを示すブロック図1300である。サービスオペレータ1302(例えば、図12のサービスオペレータ1202)は、仮想クラウドネットワーク(VCN)1306(例えば、図12のVCN1206)およびセキュアホストサブネット1308(例えば、図12のセキュアホストサブネット1208)を含み得るセキュアホストテナンシー1304(例えば、図12のセキュアホストテナンシー1204)に通信可能に結合され得る。VCN1306は、SSH VCN1312に含まれるLPG1210を介してセキュアシェル(SSH)VCN1312(例えば、図12のSSH VCN1212)に通信可能に結合され得るローカルピアリングゲートウェイ(LPG)1310(例えば、図12のLPG1210)を含み得る。SSH VCN1312は、SSHサブネット1314(例えば、図12のSSHサブネット1214)を含み得るとともに、SSH VCN1312は、制御プレーンVCN1316に含まれるLPG1310を介して制御プレーンVCN1316(例えば、図12の制御プレーンVCN1216)に通信可能に結合され得る。制御プレーンVCN1316は、サービステナンシー1319(例えば、図12のサービステナンシー1219)に含まれ得るとともに、データプレーンVCN1318(例えば、図12のデータプレーンVCN1218)は、システムのユーザまたは顧客によって所有または運用される可能性のある顧客テナンシー1321に含まれ得る。
制御プレーンVCN1316は、LBサブネット1322(例えば、図12のLBサブネット1222)を含み得る制御プレーンDMZ層1320(例えば、図12の制御プレーンDMZ層1220)と、アプリサブネット1326(例えば、図12のアプリサブネット1226)を含み得る制御プレーンアプリ層1324(例えば、図12の制御プレーンアプリ層1224)と、(例えば、図12のDBサブネット1230に類似した)データベース(DB)サブネット1330を含み得る制御プレーンデータ層1328(例えば、図12の制御プレーンデータ層1228)とを含み得る。制御プレーンDMZ層1320に含まれるLBサブネット1322は、制御プレーンアプリ層1324に含まれるアプリサブネット1326と、制御プレーンVCN1316に含まれ得るインターネットゲートウェイ1334(例えば、図12のインターネットゲートウェイ1234)とに通信可能に結合され得るとともに、アプリサブネット1326は、制御プレーンデータ層1328に含まれるDBサブネット1330と、サービスゲートウェイ1336(例えば、図12のサービスゲートウェイ)と、ネットワークアドレス変換(NAT)ゲートウェイ1338(例えば、図12のNATゲートウェイ1238)とに通信可能に結合され得る。制御プレーンVCN1316は、サービスゲートウェイ1336およびNATゲートウェイ1338を含み得る。
制御プレーンVCN1316は、アプリサブネット1326を含み得るデータプレーンミラーアプリ層1340(例えば、図12のデータプレーンミラーアプリ層1240)を含み得る。データプレーンミラーアプリ層1340に含まれるアプリサブネット1326は、(例えば、図12の計算インスタンス1244に類似する)計算インスタンス1344を実行し得る仮想ネットワークインターフェイスコントローラ(VNIC)1342(例えば、1242のVNIC)を含み得る。計算インスタンス1344は、データプレーンミラーアプリ層1340に含まれるVNIC1342とデータプレーンアプリ層1346に含まれるVNIC1342とを介して、データプレーンミラーアプリ層1340のアプリサブネット1326と、データプレーンアプリ層1346(例えば、図12のデータプレーンアプリ層1246)に含まれ得るアプリサブネット1326との間の通信を容易にし得る。
制御プレーンVCN1316に含まれるインターネットゲートウェイ1334は、公衆インターネット1354(例えば、図12の公衆インターネット1254)に通信可能に結合され得るメタデータ管理サービス1352(例えば、図12のメタデータ管理サービス1252)に通信可能に結合され得る。公衆インターネット1354は、制御プレーンVCN1316に含まれるNATゲートウェイ1338に通信可能に結合され得る。制御プレーンVCN1316に含まれるサービスゲートウェイ1336は、クラウドサービス1356(例えば、図12のクラウドサービス1256)に通信可能に結合され得る。
いくつかの例では、データプレーンVCN1318は、顧客テナンシー1321に含まれ得る。この場合、IaaSプロバイダは、顧客ごとに制御プレーンVCN1316を提供してもよく、IaaSプロバイダは、顧客ごとに、サービステナンシー1319に含まれる固有の計算インスタンス1344をセットアップしてもよい。各計算インスタンス1344は、サービステナンシー1319に含まれる制御プレーンVCN1316と顧客テナンシー1321に含まれるデータプレーンVCN1318との間の通信を可能にし得る。計算インスタンス1344は、サービステナンシー1319に含まれる制御プレーンVCN1316においてプロビジョニングされるリソースが、顧客テナンシー1321に含まれるデータプレーンVCN1318において展開されるかまたは使用されることを可能にし得る。
他の例では、IaaSプロバイダの顧客は、顧客テナンシー1321に在住するデータベースを有してもよい。この例では、制御プレーンVCN1316は、アプリサブネット1326を含み得るデータプレーンミラーアプリ層1340を含み得る。データプレーンミラーアプリ層1340は、データプレーンVCN1318内に存在し得るが、データプレーンミラーアプリ層1340は、データプレーンVCN1318内に在住しなくてもよい。すなわち、データプレーンミラーアプリ層1340は、顧客テナンシー1321にアクセスし得るが、データプレーンミラーアプリ層1340は、データプレーンVCN1318内に存在しなくてもよく、またはIaaSプロバイダの顧客によって所有もしくは運用されなくてもよい。データプレーンミラーアプリ層1340は、データプレーンVCN1318への呼出しを行うように構成されてもよいが、制御プレーンVCN1316に含まれる任意のエンティティへの呼出しを行うように構成されなくてもよい。顧客は、制御プレーンVCN1316内にプロビジョニングされるデータプレーンVCN1318内のリソースを展開または使用することを所望する可能性もあり、データプレーンミラーアプリ層1340は、顧客のリソースの所望の展開または他の使用を容易にし得る。
いくつかの実施形態では、IaaSプロバイダの顧客は、フィルタをデータプレーンVCN1318に適用し得る。この実施形態では、顧客は、データプレーンVCN1318が何にアクセスできるかを判断し得るとともに、顧客は、データプレーンVCN1318から公衆インターネット1354へのアクセスを制限してもよい。IaaSプロバイダは、データプレーンVCN1318からの任意の外部ネットワークもしくはデータベースへのアクセスをフィルタ処理するかまたは制御することができない可能性がある。顧客テナンシー1321に含まれるデータプレーンVCN1318に対して顧客がフィルタおよび制御を適用することにより、データプレーンVCN1318を他の顧客および公衆インターネット1354から隔離するのを支援することができる。
いくつかの実施形態では、クラウドサービス1356は、公衆インターネット1354上、制御プレーンVCN1316上、またはデータプレーンVCN1318上に存在しない可能性があるサービスにアクセスするために、サービスゲートウェイ1336によって呼び出され得る。クラウドサービス1356と制御プレーンVCN1316またはデータプレーンVCN1318との間の接続は、ライブまたは連続的でなくてもよい。クラウドサービス1356は、IaaSプロバイダによって所有または運営される別のネットワーク上に存在してもよい。クラウドサービス1356は、サービスゲートウェイ1336から呼出しを受信するよう構成されてもよく、公衆インターネット1354から呼出しを受信しないように構成されてもよい。いくつかのクラウドサービス1356は、他のクラウドサービス1356から隔離されてもよく、制御プレーンVCN1316は、制御プレーンVCN1316と同じ領域にない可能性があるクラウドサービス1356から隔離されてもよい。例えば、制御プレーンVCN1316は「領域1」に位置してもよく、クラウドサービス「展開12」は領域1および「領域2」に位置してもよい。展開12への呼出しが、領域1に位置する制御プレーンVCN1316に含まれるサービスゲートウェイ1336によって行われる場合、その呼出しは、領域1内の展開12に伝送されてもよい。この例では、制御プレーンVCN1316、または領域1の展開12は、領域2の展開12に通信可能に結合されなくてもよく、または通信していなくてもよい。
図14は、少なくとも1つの実施形態に従った、IaaSアーキテクチャの別の例示的なパターンを示すブロック図1400である。サービスオペレータ1402(例えば、図12のサービスオペレータ1202)は、仮想クラウドネットワーク(VCN)1406(例えば、図12のVCN1206)およびセキュアホストサブネット1408(例えば、図12のセキュアホストサブネット1208)を含み得るセキュアホストテナンシー1204(例えば、図12のセキュアホストテナンシー1204)に通信可能に結合され得る。VCN1406は、SSH VCN1412に含まれるLPG1410を介してSSH VCN1412(例えば、図12のSSH VCN1212)に通信可能に結合され得るLPG1410(例えば、図12のLPG1210)を含み得る。SSH VCN1412は、SSHサブネット1214(例えば、図12のSSHサブネット1214)を含み得るとともに、SSH VCN1412は、制御プレーンVCN1416に含まれるLPG1410を介して制御プレーンVCN1416(例えば、図12の制御プレーンVCN1216)に通信可能に結合され得るとともに、データプレーンVCN1418に含まれるLPG1410を介してデータプレーンVCN1418(例えば、図12のデータプレーン1218)に通信可能に結合され得る。制御プレーンVCN1416およびデータプレーンVCN1418は、サービステナンシー1419(例えば、図12のサービステナンシー1219)に含まれ得る。
制御プレーンVCN1416は、ロードバランサ(LB)サブネット1422(例えば、図12のLBサブネット1222)を含み得る制御プレーンDMZ層1420(例えば、図12の制御プレーンDMZ層1220)と、(例えば、図12のアプリサブネット1226に類似している)アプリサブネット1426を含み得る制御プレーンアプリ層1424(例えば、図12の制御プレーンアプリ層1224)と、DBサブネット1430を含み得る制御プレーンデータ層1428(例えば、図12の制御プレーンデータ層1228)とを含み得る。制御プレーンDMZ層1420に含まれるLBサブネット1422は、制御プレーンアプリ層1424に含まれるアプリサブネット1426と、制御プレーンVCN1416に含まれ得るインターネットゲートウェイ1234(例えば、図12のインターネットゲートウェイ1234)とに通信可能に結合され得るとともに、アプリサブネット1426は、制御プレーンデータ層1428に含まれるDBサブネット1430と、サービスゲートウェイ1436(例えば、図12のサービスゲートウェイ)およびネットワークアドレス変換(NAT)ゲートウェイ1438(例えば、図12のNATゲートウェイ1238)とに通信可能に結合され得る。制御プレーンVCN1416は、サービスゲートウェイ1436およびNATゲートウェイ1438を含み得る。
データプレーンVCN1418は、データプレーンアプリ層1446(例えば、図12のデータプレーンアプリ層1246)、データプレーンDMZ層1448(例えば、図12のデータプレーンDMZ層1248)、およびデータプレーンデータ層1450(例えば、図12のデータプレーンデータ層1250)を含み得る。データプレーンDMZ層1448は、データプレーンアプリ層1446の信頼できるアプリサブネット1460および信頼できないアプリサブネット1462と、データプレーンVCN1418に含まれるインターネットゲートウェイ1234とに通信可能に結合され得るLBサブネット1422を含み得る。信頼できるアプリサブネット1460は、データプレーンVCN1418に含まれるサービスゲートウェイ1436と、データプレーンVCN1418に含まれるNATゲートウェイ1438と、データプレーンデータ層1450に含まれるDBサブネット1430とに通信可能に結合され得る。信頼できないアプリサブネット1462は、データプレーンVCN1418に含まれるサービスゲートウェイ1436と、データプレーンデータ層1450に含まれるDBサブネット1430とに通信可能に結合され得る。データプレーンデータ層1450は、データプレーンVCN1418に含まれるサービスゲートウェイ1436に通信可能に結合され得るDBサブネット1430を含み得る。
信頼できないアプリサブネット1462は、テナント仮想マシン(VM)1466(1)~(N)に通信可能に結合され得る1つ以上のプライマリVNIC1464(1)~(N)を含み得る。各テナントVM1466(1)~(N)は、それぞれの顧客テナンシー1470(1)~(N)に含まれ得るそれぞれのコンテナエグレスVCN1468(1)~(N)に含まれ得るそれぞれのアプリサブネット1467(1)~(N)に通信可能に結合され得る。それぞれのセカンダリVNIC1472(1)~(N)は、データプレーンVCN1418に含まれる信頼できないアプリサブネット1462とコンテナエグレスVCN1468(1)~(N)に含まれるアプリサブネットとの間の通信を容易にし得る。各コンテナエグレスVCN1468(1)~(N)は、公衆インターネット1454(例えば、図12の公衆インターネット1254)に通信可能に結合され得るNATゲートウェイ1438を含み得る。
制御プレーンVCN1416に含まれ、データプレーンVCN1418に含まれるインターネットゲートウェイ1234は、公衆インターネット1454に通信可能に結合され得るメタデータ管理サービス1452(例えば、図12のメタデータ管理システム1252)に通信可能に結合され得る。公衆インターネット1454は、制御プレーンVCN1416に含まれ、データプレーンVCN1418に含まれるNATゲートウェイ1438に通信可能に結合され得る。制御プレーンVCN1416に含まれ、データプレーンVCN1418に含まれるサービスゲートウェイ1436は、クラウドサービス1456に通信可能に結合され得る。
いくつかの実施形態では、データプレーンVCN1418は顧客テナンシー1470と統合され得る。この統合は、コードを実行するときにサポートを望む可能性がある場合等のいくつかの場合において、IaaSプロバイダの顧客にとって有用であり得るかまたは望ましくあり得る。顧客は、破壊的であるか、他の顧客リソースと通信するか、または望ましくない影響引き起こす可能性がある、実行すべきコードを与える場合がある。これに応答して、IaaSプロバイダは、顧客によってIaaSプロバイダに与えられたコードを実行するかどうかを判断してもよい。
いくつかの例では、IaaSプロバイダの顧客は、IaaSプロバイダへの一時的なネットワークアクセスを許可し、ある機能がデータプレーン層アプリ1446にアタッチされるよう要求する場合がある。当該機能を実行するためのコードは、VM1466(1)~(N)において実行されてもよく、データプレーンVCN1418上の他のどこかで実行するように構成されなくてもよい。各VM1466(1)~(N)は、1つの顧客テナンシー1470に接続されてもよい。VM1466(1)~(N)に含まれるそれぞれのコンテナ1471(1)~(N)は、コードを実行するよう構成されてもよい。この場合、二重隔離があってもよく(例えば、コンテナ1471(1)~(N)は、コードを実行し、コンテナ1471(1)~(N)は、信頼できないアプリサブネット1462に含まれる少なくともVM1466(1)~(N)に含まれてもよく)、これにより、不正確または不所望なコードが、IaaSプロバイダのネットワークを破損させること、または別の顧客のネットワークを破損させることを防ぐのを支援し得る。コンテナ1471(1)~(N)は、顧客テナンシー1470に通信可能に結合されてもよく、顧客テナンシー1470との間でデータを送信または受信するよう構成されてもよい。コンテナ1471(1)~(N)は、データプレーンVCN1418内の任意の他のエンティティとの間でデータを送信または受信するよう構成されなくてもよい。コードの実行が完了すると、IaaSプロバイダは、コンテナ1471(1)~(N)を無効にするかまたは廃棄してもよい。
いくつかの実施形態では、信頼できるアプリサブネット1460は、IaaSプロバイダによって所有または操作され得るコードを実行し得る。この実施形態では、信頼できるアプリサブネット1460は、DBサブネット1430に通信可能に結合されてもよく、DBサブネット1430内でCRUD動作を実行するように構成されてもよい。信頼できないアプリサブネット1462は、DBサブネット1430に通信可能に結合されてもよいが、この実施形態では、信頼できないアプリサブネットは、DBサブネット1430内で読出動作を実行するよう構成されてもよい。各顧客のVM1466(1)~(N)に含めることができるとともにその顧客からのコードを実行し得るコンテナ1471(1)~(N)は、DBサブネット1430と通信可能に結合されなくてもよい。
他の実施形態では、制御プレーンVCN1416およびデータプレーンVCN1418は、直接通信可能に結合されなくてもよい。この実施形態では、制御プレーンVCN1416とデータプレーンVCN1418との間に直接通信がなくてもよい。しかしながら、通信は、少なくとも1つの方法により間接的に行なうことができる。制御プレーンVCN1416とデータプレーンVCN1418との間の通信を容易にし得るLPG1410が、IaaSプロバイダによって確立されてもよい。別の例では、制御プレーンVCN1416またはデータプレーンVCN1418は、サービスゲートウェイ1436を介してクラウドサービス1456に呼出しを行い得る。例えば、制御プレーンVCN1416からのクラウドサービス1456への呼出しは、データプレーンVCN1418と通信し得るサービスの要求を含み得る。
図15は、少なくとも1つの実施形態に従った、IaaSアーキテクチャの別の例示的なパターンを示すブロック図1500である。サービスオペレータ1502(例えば、図12のサービスオペレータ1202)は、仮想クラウドネットワーク(VCN)1506(例えば、図12のVCN1206)およびセキュアホストサブネット1508(例えば、図12のセキュアホストサブネット1208)を含み得るセキュアホストテナンシー1504(例えば、図12のセキュアホストテナンシー1204)に通信可能に結合され得る。VCN1506は、SSH VCN1512に含まれるLPG1510を介してSSH VCN1512(例えば、図12のSSH VCN1212)に通信可能に結合され得るLPG1510(例えば、図12のLPG1210)を含み得る。SSH VCN1512は、SSHサブネット1514(例えば、図12のSSHサブネット1214)を含み得るとともに、SSH VCN1512は、制御プレーンVCN1516に含まれるLPG1510を介して制御プレーンVCN1516(例えば、図12の制御プレーンVCN1216)に通信可能に結合され得るとともに、データプレーンVCN1518に含まれるLPG1510を介してデータプレーンVCN1518(例えば、図12のデータプレーン1218)に通信可能に結合され得る。制御プレーンVCN1516およびデータプレーンVCN1518は、サービステナンシー1519(例えば、図12のサービステナンシー1219)に含まれ得る。
制御プレーンVCN1516は、LBサブネット1522(例えば、図12のLBサブネット1222)を含み得る制御プレーンDMZ層1520(例えば、図12の制御プレーンDMZ層1220)と、アプリサブネット1526(例えば、図12のアプリサブネット1226)を含み得る制御プレーンアプリ層1524(例えば、図12の制御プレーンアプリ層1224)と、DBサブネット1530(例えば、図14のDBサブネット1430)を含み得る制御プレーンデータ層1528(例えば、図12の制御プレーンデータ層1228)とを含み得る。制御プレーンDMZ層1520に含まれるLBサブネット1522は、制御プレーンアプリ層1524に含まれるアプリサブネット1526と、制御プレーンVCN1516に含まれ得るインターネットゲートウェイ1534(例えば、図12のインターネットゲートウェイ1234)とに通信可能に結合され得るとともに、アプリサブネット1526は、制御プレーンデータ層1528に含まれるDBサブネット1530と、サービスゲートウェイ1536(例えば、図12のサービスゲートウェイ)およびネットワークアドレス変換(NAT)ゲートウェイ1538(例えば、図12のNATゲートウェイ1238)とに通信可能に結合され得る。制御プレーンVCN1516は、サービスゲートウェイ1536およびNATゲートウェイ1538を含み得る。
データプレーンVCN1518は、データプレーンアプリ層1546(例えば、図12のデータプレーンアプリ層1246)、データプレーンDMZ層1548(例えば、図12のデータプレーンDMZ層1248)、およびデータプレーンデータ層1550(例えば、図12のデータプレーンデータ層1250)を含み得る。データプレーンDMZ層1548は、データプレーンアプリ層1546の信頼できるアプリサブネット1560(例えば、図14の信頼できるアプリサブネット1460)および信頼できないアプリサブネット1562(例えば、図14の信頼できないアプリサブネット1462)と、データプレーンVCN1518に含まれるインターネットゲートウェイ1534とに通信可能に結合され得るLBサブネット1522を含み得る。信頼できるアプリサブネット1560は、データプレーンVCN1518に含まれるサービスゲートウェイ1536と、データプレーンVCN1518に含まれるNATゲートウェイ1538と、データプレーンデータ層1550に含まれるDBサブネット1530とに通信可能に結合され得る。信頼できないアプリサブネット1562は、データプレーンVCN1518に含まれるサービスゲートウェイ1536と、データプレーンデータ層1550に含まれるDBサブネット1530とに通信可能に結合され得る。データプレーンデータ層1550は、データプレーンVCN1518に含まれるサービスゲートウェイ1536に通信可能に結合され得るDBサブネット1530を含み得る。
信頼できないアプリサブネット1562は、信頼できないアプリサブネット1562内に常駐するテナント仮想マシン(VM)1566(1)~(N)に通信可能に結合され得るプライマリVNIC1564(1)~(N)を含み得る。各テナントVM1566(1)~(N)は、それぞれのコンテナ1567(1)~(N)においてコードを実行し得るとともに、コンテナエグレスVCN1568に含まれ得るデータプレーンアプリ層1546に含まれ得るアプリサブネット1526に通信可能に結合され得る。それぞれのセカンダリVNIC1572(1)~(N)は、データプレーンVCN1518に含まれる信頼できないアプリサブネット1562とコンテナエグレスVCN1568に含まれるアプリサブネットとの間の通信を容易にし得る。コンテナエグレスVCNは、公衆インターネット1554(例えば、図12の公衆インターネット1254)に通信可能に結合され得るNATゲートウェイ1538を含み得る。
制御プレーンVCN1516に含まれるとともにデータプレーンVCN1518に含まれるインターネットゲートウェイ1534は、公衆インターネット1554に通信可能に結合され得るメタデータ管理サービス1552(例えば、図12のメタデータ管理システム1252)に通信可能に結合され得る。公衆インターネット1554は、制御プレーンVCN1516に含まれるとともにデータプレーンVCN1518に含まれるNATゲートウェイ1538に通信可能に結合され得る。制御プレーンVCN1516に含まれるとともにデータプレーンVCN1518に含まれるサービスゲートウェイ1536は、クラウドサービス1556に通信可能に結合され得る。
いくつかの例では、図15のブロック図1500のアーキテクチャによって示されるパターンは、図14のブロック図1400のアーキテクチャによって示されるパターンの例外と見なされてもよく、IaaSプロバイダが顧客と直接通信することができない場合(例えば切断された領域)にはIaaSプロバイダの顧客にとって望ましい場合がある。顧客ごとにVM1566(1)~(N)に含まれるそれぞれのコンテナ1567(1)~(N)は、顧客によってリアルタイムでアクセスされ得る。コンテナ1567(1)~(N)は、コンテナエグレスVCN1568に含まれ得るデータプレーンアプリ層1546のアプリサブネット1526に含まれるそれぞれのセカンダリVNIC1572(1)~(N)への呼出しを行うように構成されてもよい。セカンダリVNIC1572(1)~(N)はNATゲートウェイ1538に呼出しを送信することができ、NATゲートウェイ1538は公衆インターネット1554に呼出しを送信してもよい。この例では、顧客によってリアルタイムでアクセスされ得るコンテナ1567(1)~(N)は、制御プレーンVCN1516から隔離され得るとともに、データプレーンVCN1518に含まれる他のエンティティから隔離され得る。コンテナ1567(1)~(N)は、他の顧客からのリソースからも隔離されてもよい。
他の例では、顧客は、コンテナ1567(1)~(N)を用いてクラウドサービス1556を呼出し得る。この例では、顧客は、コンテナ1567(1)~(N)内において、クラウドサービス1556にサービスを要求するコードを実行してもよい。コンテナ1567(1)~(N)はこの要求をセカンダリVNIC1572(1)~(N)に送信し得、セカンダリVNIC1572(1)~(N)はその要求をNATゲートウェイに送信し得、NATゲートウェイはその要求を公衆インターネット1554に送信し得る。公衆インターネット1554は、インターネットゲートウェイ1534を介して、制御プレーンVCN1516に含まれるLBサブネット1522に要求を送信し得る。要求が有効であるとの判定に応答して、LBサブネットはその要求をアプリサブネット1526に送信し得るとともに、アプリサブネット1526はその要求をサービスゲートウェイ1536を介してクラウドサービス1556に送信し得る。
図示されるIaaSアーキテクチャ1200、1300、1400、1500は、図示される以外の構成要素を有してもよいことを諒解されたい。さらに、図示される実施形態は、本開示の実施形態を組込み得るクラウドインフラストラクチャシステムのいくつかの例にすぎない。いくつかの他の実施形態では、IaaSシステムは、図示されるよりも多いまたは少ない構成要素を有してもよく、2つ以上の構成要素を組合わせてもよく、または構成要素の異なる構成または配置を有してもよい。
いくつかの実施形態では、本明細書に記載のIaaSシステムは、セルフサービスであり、サブスクリプションベースであり、弾性的にスケーラブルであり、信頼性があり、可用性が高く、セキュアな態様で顧客に配信される、アプリケーション、ミドルウェア、およびデータベースサービス提供の一式を含んでもよい。そのようなIaaSシステムの例は、本譲受人によって提供されるOracle Cloud Infrastructure(OCI)である。
図16は、本開示の様々な実施形態が実現され得る例示的なコンピュータシステム1600を示す。システム1600は、上述のコンピュータシステムのうちのいずれかを実現するために使用され得る。図示のように、コンピュータシステム1600は、バスサブシステム1602を介していくつかの周辺サブシステムと通信する処理ユニット1604を含む。これらの周辺サブシステムは、処理加速ユニット1606、I/Oサブシステム1608、ストレージサブシステム1618、および通信サブシステム1624を含んでもよい。ストレージサブシステム1618は、有形のコンピュータ可読記憶媒体1622およびシステムメモリ1610を含む。
バスサブシステム1602は、コンピュータシステム1600の様々なコンポーネントおよびサブシステム同士を意図されるように互いに通信させるための機構を提供する。バスサブシステム1602は、単一のバスとして概略的に示されるが、バスサブシステムの代替的な実施形態は複数のバスを利用してもよい。バスサブシステム1602は、様々なバスアーキテクチャのうちのいずれかを用いるメモリバスまたはメモリコントローラ、周辺バスおよびローカルバスを含むいくつかのタイプのバス構造のうちのいずれかであり得る。例えば、そのようなアーキテクチャは、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA)ローカルバス、およびIEEE P1386.1規格に従って製造されるメザニンバスとして実現され得る周辺コンポーネントインターコネクト(PCI)バスを含んでもよい。
処理ユニット1604は、1つ以上の集積回路(例えば、従来のマイクロプロセッサまたはマイクロコントローラ)として実現することができ、コンピュータシステム1600の動作を制御する。1つ以上のプロセッサが処理ユニット1604に含まれてもよい。これらのプロセッサは、シングルコアプロセッサまたはマルチコアプロセッサを含んでもよい。特定の実施形態では、処理ユニット1604は、シングルコアプロセッサもしくはマルチコアプロセッサが各処理ユニットに含まれる1つ以上の独立した処理ユニット1632および/または1634として実現されてもよい。他の実施形態では、処理ユニット1604はまた、2つのデュアルコアプロセッサを単一のチップに統合することによって形成されるクワッドコア処理ユニットとして実現されてもよい。
様々な実施形態では、処理ユニット1604は、プログラムコードに応答して様々なプログラムを実行することができ、複数の同時に実行されるプログラムまたはプロセスを維持することができる。如何なる時でも、実行されるべきプログラムコードの一部またはすべてはプロセッサ1604、および/またはストレージサブシステム1618に常駐し得る。好適なプログラミングにより、プロセッサ1604は、上述した種々の機能性を提供することができる。コンピュータシステム1600は、付加的に、デジタル信号プロセッサ(DSP)、特殊目的プロセッサなどを含み得る処理加速ユニット1606を含んでもよい。
I/Oサブシステム1608は、ユーザインターフェイス入力デバイスおよびユーザインターフェイス出力デバイスを含み得る。ユーザインターフェイス入力デバイスは、キーボード、マウスまたはトラックボール等のポインティングデバイス、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを備えた音声入力デバイス、マイクロフォン、および他のタイプの入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、例えば、ユーザが、ジェスチャおよび発話コマンドを用いて、ナチュラルユーザインターフェイスを通じて、Microsoft Xbox(登録商標)360ゲームコントローラ等の入力デバイスを制御し、それと相互作用することを可能にする、Microsoft Kinect(登録商標)モーションセンサ等のモーション感知および/またはジェスチャ認識デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、ユーザから目の動き(例えば、写真を撮っている間および/またはメニュー選択を行なっている間の「まばたき」)を検出し、アイジェスチャを入力デバイス(例えばGoogle Glass(登録商標))への入力として変換するGoogle Glass(登録商標)瞬き検出器等のアイジェスチャ認識デバイスも含んでもよい。加えて、ユーザインターフェイス入力デバイスは、ユーザが音声コマンドを介して音声認識システム(例えばSiri(登録商標)ナビゲータ)と対話することを可能にする音声認識感知デバイスを含んでもよい。
ユーザインターフェイス入力デバイスは、三次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびに、聴覚/視覚デバイス、例えば、スピーカ、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレーヤ、ウェブカム、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザレンジファインダ、および視線追跡デバイス等も含み得るが、それらに限定されない。加えて、ユーザインターフェイス入力デバイスは、例えば、コンピュータ断層撮影、磁気共鳴撮像、ポジトロン断層撮影、医療用超音波検査装置等の医療用撮像入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスはまた、例えば、MIDIキーボード、デジタル楽器等の音声入力デバイスを含んでもよい。
ユーザインターフェイス出力デバイスは、ディスプレイサブシステム、インジケータライト、または音声出力デバイス等の非視覚的ディスプレイを含んでもよい。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使用するもの等のフラットパネルデバイス、投影デバイス、タッチスクリーンなどであってもよい。一般に、「出力デバイス」という語の使用は、コンピュータシステム1600からユーザまたは他のコンピュータに情報を出力するための考えられ得るすべてのタイプのデバイスおよび機構を含むことが意図される。例えば、ユーザインターフェイス出力デバイスは、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力デバイスおよびモデム等の、テキスト、グラフィックスならびに音声/映像情報を視覚的に伝える様々な表示デバイスを含み得るが、それらに限定されない。
コンピュータシステム1600は、現在のところシステムメモリ1610内に位置しているものとして示されているソフトウェア要素を含むストレージサブシステム1618を備え得る。システムメモリ1610は、処理ユニット1604上でロード可能および実行可能なプログラム命令、ならびにこれらのプログラムの実行中に生成されるデータを格納し得る。
コンピュータシステム1600の構成およびタイプに応じて、システムメモリ1610は、揮発性(ランダムアクセスメモリ(RAM)など)および/または不揮発性(読出し専用メモリ(ROM)、フラッシュメモリなど)であってもよい。RAMは、典型的には、処理ユニット1604に即座にアクセス可能である、ならびに/もしくは処理ユニット1604によって現在操作および実行されている、データならびに/またはプログラムモジュールを含む。いくつかの実現例では、システムメモリ1610は、スタティックランダムアクセスメモリ(SRAM)またはダイナミックランダムアクセスメモリ(DRAM)など、複数の異なるタイプのメモリを含んでもよい。いくつかの実現例では、起動中などにコンピュータシステム1600内の要素間で情報を転送するのに役立つ基本的なルーチンを含むベーシックインプット/アウトプットシステム(BIOS)が、典型的にはROMに格納されてもよい。限定ではなく例として、システムメモリ1610はまた、クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS)などを含み得るアプリケーションプログラム1612、プログラムデータ1614、およびオペレーティングシステム1616も示す。例として、オペレーティングシステム1616は、様々なバージョンのMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、および/もしくはLinux(登録商標)オペレーティングシステム、様々な市販のUNIX(登録商標)もしくはUNIX様オペレーティングシステム(様々なGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含むが、これらに限定されない)、ならびに/またはiOS, Windows(登録商標)Phone, Android(登録商標)OS、BlackBerry(登録商標)16OS、およびPalm(登録商標)OSオペレーティングシステム等のモバイルオペレーティングシステムを含み得る。
ストレージサブシステム1618はまた、いくつかの実施形態の機能を提供する基本的なプログラミングおよびデータ構造を格納するための有形のコンピュータ可読記憶媒体も提供し得る。プロセッサによって実行されると上述の機能を提供するソフトウェア(プログラム、コードモジュール、命令)が、ストレージサブシステム1618に格納されてもよい。これらのソフトウェアモジュールまたは命令は、処理ユニット1604によって実行されてもよい。ストレージサブシステム1618はまた、本開示に従って使用されるデータを格納するためのリポジトリを提供し得る。
ストレージサブシステム1600はまた、コンピュータ可読記憶媒体1622にさらに接続され得るコンピュータ可読記憶媒体リーダ3220を含み得る。システムメモリ1610とともに、およびオプションとして、システムメモリ1610と組合わせて、コンピュータ可読記憶媒体1622は、コンピュータ可読情報を、一時的および/またはより恒久的に収容、格納、伝送、および検索するために、遠隔の、ローカルな、固定された、および/またはリムーバブルなストレージデバイスに記憶媒体を加えたものを包括的に表わし得る。
コードまたはコードの一部を含むコンピュータ可読記憶媒体1622はまた、情報の格納および/または伝送のための任意の方法または技術で実現される揮発性および不揮発性の、リムーバブルおよび非リムーバブル媒体などを含むがこれらに限定されない、記憶媒体ならびに通信媒体を含む、当該技術において公知であるかまたは用いられる任意の適切な媒体を含み得る。これは、RAM、ROM、電子的に消去可能プログラマブルROM(EEPROM)、フラッシュメモリもしくは他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD)、または他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または他の有形のコンピュータ可読媒体等の有形のコンピュータ可読記憶媒体を含み得る。これはまた、データ信号、データ伝送、または所望の情報を伝送するために使用可能であるとともに、コンピューティングシステム1600によってアクセス可能である、任意の他の媒体等の非有形のコンピュータ可読媒体を含み得る。
例として、コンピュータ可読記憶媒体1622は、非リムーバブル不揮発性磁気媒体に対して読書きを行なうハードディスクドライブ、リムーバブル不揮発性磁気ディスクに対して読書きを行なう磁気ディスクドライブ、CD ROM、DVDおよびBlu-Ray(登録商標)ディスク等の、リムーバブル不揮発性光ディスクに対して読書きを行なう光ディスクドライブ、または他の光学媒体を含んでもよい。コンピュータ可読記憶媒体1622は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープなどを含み得るが、これらに限定されない。コンピュータ可読記憶媒体1622はまた、フラッシュメモリベースのSSD、エンタープライズフラッシュドライブ、ソリッドステートROM等の不揮発性メモリに基づくソリッドステートドライブ(SSD)、ソリッドステートRAM、ダイナミックRAM、スタティックRAM等の揮発性メモリに基づくSSD、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSD、およびDRAMとフラッシュメモリベースのSSDとの組合わせを使用するハイブリッドSSDを含み得る。ディスクドライブおよびそれらに関連するコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの不揮発性ストレージをコンピュータシステム1600に提供し得る。
通信サブシステム1624は、他のコンピュータシステムおよびネットワークに対するインターフェイスを提供する。通信サブシステム1624は、他のシステムとコンピュータシステム1600との間のデータの送受のためのインターフェイスとして機能する。例えば、通信サブシステム1624は、コンピュータシステム1600がインターネットを介して1つ以上のデバイスに接続することを可能にし得る。いくつかの実施形態では、通信サブシステム1624は、(例えば、セルラー電話技術、3G、4GもしくはEDGE(グローバル進化のための高速データレート)等の先進データネットワーク技術、WiFi(IEEE802.11ファミリー規格、もしくは他のモバイル通信技術、またはそれらのいずれかの組合わせを用いて)無線音声および/もしくはデータネットワークにアクセスするための無線周波数(RF)送受信機コンポーネント、グローバルポジショニングシステム(GPS)受信機コンポーネント、ならびに/または他のコンポーネントを含み得る。いくつかの実施形態では、通信サブシステム1624は、無線インターフェイスに加えて、またはその代わりに、有線ネットワーク接続(例えば、イーサネット(登録商標))を提供することができる。
いくつかの実施形態では、通信サブシステム1624はまた、コンピュータシステム1600を用い得る1人以上のユーザの代わりに、構造化されたおよび/または構造化されていないデータフィード1626、イベントストリーム1628、イベント更新1630等の形式で入力通信を受信し得る。
例として、通信サブシステム1624は、Twitter(登録商標)フィード、Facebook(登録商標)更新、Rich Site Summary(RSS)フィード等のウェブフィード、および/もしくは1つ以上の第三者情報源からのリアルタイム更新等の、ソーシャルネットワークならびに/または他の通信サービスのユーザからリアルタイムでデータフィード1626を受信するよう構成されてもよい。
加えて、通信サブシステム1624はまた、連続データストリームの形式でデータを受信するよう構成されてもよく、これは、明示的な終端を伴わない、本質的に連続的または無限であり得るリアルタイムイベントのイベントストリーム1628および/またはイベント更新1630を含み得る。連続データを生成するアプリケーションの例としては、例えば、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(例えば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通監視などが含まれ得る。
通信サブシステム1624はまた、構造化されたおよび/または構造化されていないデータフィード1626、イベントストリーム1628、イベント更新1630などを、コンピュータシステム1600に結合される1つ以上のストリーミングデータソースコンピュータと通信し得る1つ以上のデータベースに出力するよう構成され得る。
コンピュータシステム1600は、手持ち式の携帯型デバイス(例えば、iPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(例えば、Google Glass(登録商標)頭部装着型ディスプレイ)、PC、ワークステーション、メインフレーム、キオスク、サーバラック、または任意の他のデータ処理システムを含む種々のタイプのうちの1つであり得る。
コンピュータおよびネットワークの性質が常に変化するものであるので、図に示されるコンピュータシステム1600の記載は、具体例としてのみ意図されている。図に示されるシステムよりも多くのコンポーネントまたは少ないコンポーネントを有するその他多くの構成が実現可能である。例えば、カスタマイズされたハードウェアが使用されてもよく、および/または、特定の要素が、ハードウェア、ファームウェア、(アプレットを含む)ソフトウェア、または組合わせで実現されてもよい。さらに、ネットワーク入力/出力デバイス等の他のコンピューティングデバイスへの接続が採用されてもよい。当業者であれば、本明細書に記載の開示および教示に基づいて、さまざまな実施形態を実現するための他の態様および/または方法を理解するだろう。
本開示の特定の実施形態について説明してきたが、様々な修正、変更、代替的構成、および同等例も本開示の範囲内に包含される。本開示の実施形態は、ある特定のデータ処理環境内での動作に限定されず、複数のデータ処理環境内で自由に運用可能である。加えて、本開示の実施形態は、特定の一連のトランザクションおよびステップを用いて説明されてきたが、本開示の範囲は、説明された一連のトランザクションおよびステップに限定されないことが、当業者に明白となるはずである。上述した実施形態の様々な特徴および局面は個別にまたは一緒に用いられてもよい。
さらに、本開示の実施形態は、ハードウェアとソフトウェアとの特定の組合わせを用いて説明されてきたが、ハードウェアとソフトウェアとの他の組合わせも本開示の範囲内であることを認識されたい。本開示の実施形態は、ハードウェアのみで、またはソフトウェアのみで、またはそれらの組合せを用いて実現されてもよい。本明細書に記載の様々なプロセスは、同じプロセッサまたは任意の組合わせの異なるプロセッサ上で実現され得る。したがって、構成要素またはモジュールが特定の動作を実行するように構成されるものとして記載されている場合、そのような構成は、例えば、動作を実行するための電子回路を設計すること、プログラミング可能な電子回路(マイクロプロセッサなど)をプログラミングして動作を実行すること、またはそれらの任意の組合わせによって達成可能である。プロセスは、プロセス間通信のための従来の技術を含むがこれに限定されない様々な技術を用いて通信することができ、異なる対のプロセスが異なる技術を用いてもよく、または、同じ対のプロセスが異なる時間に異なる技術を用いてもよい。
したがって、明細書および図面は、限定的な意味ではなく例示的な意味で見なされるべきである。しかしながら、特許請求の範囲に記載された、より広範な精神および範囲から逸脱することなく、追加、削減、削除、ならびに他の修正および変更がなされ得ることは明らかであろう。したがって、特定の開示の実施形態を説明してきたが、これらは限定を意図するものではない。様々な変更例および同等例が特許請求の範囲内にある。
開示された実施形態を説明する文脈における(特に特許請求の範囲の文脈における)文言「ある(a)」および「ある(an)」および「その(the)」ならびに同様の指示対象の使用は、本明細書において別段の指示がない限り、または文脈によって明らかに矛盾しない限り、単数形および複数形の両方を包含すると解釈されるべきである。「備える(comprising)」、「有する(having)」、「含む(including)」、および「含有する(containing)」という文言は、特に規定のない限り、非限定的な文言(すなわち、「~を含むがそれに限定されない」を意味する)として解釈されるべきである。「接続される」という文言は、何かが介在する場合であっても、部分的または全体的に内部に含まれる、取り付けられる、または共に合わせられるものとして解釈されるべきである。本明細書における値の範囲の記載は、本明細書において別段の指示がない限り、単に、その範囲内に入る各別個の値を個々に言及する簡潔な方法としての役割を果たすことを意図しており、各別個の値は、あたかもそれが本明細書において個々に記載されているかのように本明細書に組み込まれる。本明細書に記載するすべての方法は、本明細書に別段の指示がない限り、または文脈によって明らかに矛盾しない限り、任意の好適な順序で実施され得る。本明細書で提供される任意のおよびすべての例、または例示的な言葉(例えば、「等(など)」)の使用は、単に、本開示の実施形態をよりよく説明することを意図するものであり、別段の請求がない限り、本開示の範囲を限定するものではない。本明細書におけるいかなる文言も、任意の請求されていない要素を本開示の実施に不可欠であることを示すものとして解釈されるべきではない。
「X、Y、またはZの少なくとも1つ」といった句などの離接的文言は、特に別段の記載がない限り、項目、用語などがX、Y、もしくはZ、またはそれらの任意の組合せ(例えば、X、Y、および/またはZ)のいずれかであり得ることを提示するために概略的に使用される文脈内で理解されることが意図される。したがって、そのような離接的文言は、概して、特定の実施形態が、Xの少なくとも1つ、Yの少なくとも1つ、またはZの少なくとも1つが各々存在することを必要とすることを包含することを意図するものではなく、かつ包含するべきではない。
本開示を実施するために公知の最良の形態を含む、本開示の好ましい実施形態が本明細書に記載されている。これらの好ましい実施形態の変形例は、前述の説明を読むことで当業者には明らかになるであろう。当業者は、適宜、そのような変形例を採用することができるはずであり、本開示は、本明細書に具体的に説明されるものとは別様に実践されてもよい。したがって、本開示は、適用可能な法によって許可されるように、特許請求の範囲に記載される主題のすべての変更例および同等例を含む。さらに、そのすべての可能な変形例における上述の要素の任意の組合わせは、本明細書において別段の指示がない限り、本開示によって包含される。
本明細書に引用される刊行物、特許出願、および特許を含むすべての文献は、あたかも各文献が個々にかつ具体的に引用により援用されるよう示され、その全体がここに記載されるのと同程度に、ここに引用により援用されるものである。
上述の明細書では、本開示の局面についてその具体的な実施形態を参照して説明しているが、本開示がそれに限定されるものではないことを当業者は認識するであろう。上述の開示の様々な特徴および局面は、個々にまたは一緒に用いられてもよい。さらに、実施形態は、本明細書の、より広い精神および範囲から逸脱することなく、本明細書に説明されるものを超えて、任意の数の環境および用途で利用され得る。したがって、明細書および図面は、限定的ではなく例示的であると見なされるべきである。
以下の項は開示した実装例の実施形態を説明する。
項1:方法であって、
コンピュータシステムによって、第1の地理的領域において、第1の論理時間に、複数のパーティションを含むブロックボリュームの第1のスナップショットを作成するステップと、
当該コンピュータシステムによって、当該第1のスナップショットに対応する第1のスナップショットデータを第2の地理的領域におけるオブジェクトストレージシステムに送信するステップと、
当該コンピュータシステムによって、当該第1の地理的領域において第2の論理時間に当該ブロックボリュームの第2のスナップショットを作成するステップと、
当該コンピュータシステムによって複数のデルタを生成するステップとを含み、当該複数のデルタの各デルタは当該複数のパーティションのうちの1つのパーティションに対応し、当該方法はさらに、
当該コンピュータシステムによって、当該複数のデルタに対応する複数のデルタデータセットを、当該第2の地理的領域における当該オブジェクトストレージシステムに送信するステップと、
当該コンピュータシステムによって、当該複数のデルタおよび当該第1のスナップショットに関連付けられたオブジェクトメタデータを少なくとも部分的に集約することによってチェックポイントを生成するステップと、
当該コンピュータシステムによって、復元ボリュームを生成するための復元要求を受信するステップと、
当該コンピュータシステムによって、当該チェックポイントから当該復元ボリュームを生成するステップとを含む、方法。
項2:当該複数のデルタを生成するステップは、
当該第2のスナップショットと当該第1のスナップショットとの比較を生成するステップと、
当該比較に基づいて、当該第1のスナップショットデータと、当該第2のスナップショットに対応する第2のスナップショットデータとの間の変化に対応する修正済みデータを判定するステップと、
当該複数のパーティションについて当該修正済みデータを記述する当該複数のデルタを生成するステップとを含む、項1に記載の方法。
項3:当該第1のスナップショットを作成するステップは、
論理時間に対応して、当該複数のパーティションのための入出力動作を中断するステップと、
当該複数のパーティション内のボリュームデータを記述する複数のブロックイメージを生成するステップと、
当該複数のパーティションのための入出力動作を可能にするステップとを含む、項1に記載の方法。
項4:当該復元要求はフェイルオーバー要求であり、当該方法はさらに、
当該第2の地理的領域において当該復元ボリュームを生成することを可能にするステップと、
当該第2の地理的領域において当該復元ボリュームを用いて入出力動作を可能にするステップとを含む、項1に記載の方法。
項5:当該復元要求はフェイルバック要求であり、当該方法はさらに、
当該第2の地理的領域において当該復元ボリュームを生成するステップと、
当該第1の地理的領域においてフェイルバックボリュームを生成することを可能にするステップと、
当該第1の地理的領域において当該第1のスナップショットデータを復元するステップとを含む、項1に記載の方法。
項6:当該複数のデルタデータセットを送信するステップは、
当該複数のデルタデータセットから複数のチャンクオブジェクトを生成するステップと、
当該複数のデルタを転送するステップと、
当該複数のチャンクオブジェクトを当該オブジェクトストレージシステムに転送するステップとを含む、項1に記載の方法。
項7:当該チェックポイントは、当該オブジェクトメタデータのマニフェストを含み、
当該オブジェクトメタデータは、当該オブジェクトストレージシステムにおける当該複数のチャンクオブジェクトに対応するチャンクポインタを含む、項6に記載の方法。
項18:当該オブジェクトメタデータを集約するステップは、当該複数のデルタデータセットと当該第1のスナップショットデータとの間の複数の差異を反映するように当該マニフェストを更新するステップを含む、項7に記載の方法。
項9:コンピュータシステムであって、
1つ以上のプロセッサと、
当該1つ以上のプロセッサと通信するメモリとを含み、当該メモリは、コンピュータ実行可能命令を格納するように構成され、当該コンピュータ実行可能命令を実行することにより、当該1つ以上のプロセッサに以下のステップを実行させ、当該以下のステップは、
コンピュータシステムによって、第1の地理的領域において、第1の論理時間に、複数のパーティションを含むブロックボリュームの第1のスナップショットを作成するステップと、
当該コンピュータシステムによって、当該第1のスナップショットに対応する第1のスナップショットデータを第2の地理的領域におけるオブジェクトストレージシステムに送信するステップと、
当該コンピュータシステムによって、当該第1の地理的領域において第2の論理時間に当該ブロックボリュームの第2のスナップショットを作成するステップと、
当該コンピュータシステムによって複数のデルタを生成するステップとを含み、当該複数のデルタの各デルタは当該複数のパーティションのうちの1つのパーティションに対応し、当該以下のステップはさらに、
当該コンピュータシステムによって、当該複数のデルタに対応する複数のデルタデータセットを、当該第2の地理的領域における当該オブジェクトストレージシステムに送信するステップと、
当該コンピュータシステムによって、当該複数のデルタおよび当該第1のスナップショットに関連付けられたオブジェクトメタデータを少なくとも部分的に集約することによってチェックポイントを生成するステップと、
当該コンピュータシステムによって、復元ボリュームを生成するための復元要求を受信するステップと、
当該コンピュータシステムによって、当該チェックポイントから当該復元ボリュームを生成するステップとを含む、コンピュータシステム。
項10:当該複数のデルタを生成するステップは、
当該第2のスナップショットと当該第1のスナップショットとの比較を生成するステップと、
当該比較に基づいて、当該第1のスナップショットデータと、当該第2のスナップショットに対応する第2のスナップショットデータとの間の変化に対応する修正済みデータを判定するステップと、
当該複数のパーティションについて当該修正済みデータを記述する当該複数のデルタを生成するステップとを含む、項9に記載のコンピュータシステム。
項11:当該第1のスナップショットを作成するステップは、
論理時間に対応して、当該複数のパーティションのための入出力動作を中断するステップと、
当該複数のパーティション内のボリュームデータを記述する複数のブロックイメージを生成するステップと、
当該複数のパーティションのための入出力動作を可能にするステップとを含む、項9に記載のコンピュータシステム。
項12:当該復元要求はフェイルオーバー要求であり、当該方法はさらに、
当該第2の地理的領域において当該復元ボリュームを生成することを可能にするステップと、
当該第2の地理的領域において当該復元ボリュームを用いて入出力動作を可能にするステップとを含む、項9に記載のコンピュータシステム。
項13:当該復元要求はフェイルバック要求であり、当該方法はさらに、
当該第2の地理的領域において当該復元ボリュームを生成するステップと、
当該第1の地理的領域においてフェイルバックボリュームを生成することを可能にするステップと、
当該第1の地理的領域において当該第1のスナップショットデータを復元するステップとを含む、項9に記載のコンピュータシステム。
項14:当該複数のデルタデータセットを送信するステップは、
当該複数のデルタデータセットから複数のチャンクオブジェクトを生成するステップと、
当該複数のデルタを転送するステップと、
当該複数のチャンクオブジェクトを当該オブジェクトストレージシステムに転送するステップとを含む、項9に記載のコンピュータシステム。
項15:当該チェックポイントは、当該オブジェクトメタデータのマニフェストを含み、
当該オブジェクトメタデータは、当該オブジェクトストレージシステムにおける当該複数のチャンクオブジェクトに対応するチャンクポインタを含む、項14に記載のコンピュータシステム。
項16:当該オブジェクトメタデータを集約するステップは、当該複数のデルタデータセットと当該第1のスナップショットデータとの間の複数の差異を反映するように当該マニフェストを更新するステップを含む、項15に記載のコンピュータシステム。
項17:コンピュータ実行可能命令を格納するコンピュータ可読記憶媒体であって、当該コンピュータ実行可能命令は、実行されるとコンピュータシステムの1つ以上のプロセッサに以下のステップを実行させ、当該以下のステップは、
コンピュータシステムによって、第1の地理的領域において、第1の論理時間に、複数のパーティションを含むブロックボリュームの第1のスナップショットを作成するステップと、
当該コンピュータシステムによって、当該第1のスナップショットに対応する第1のスナップショットデータを第2の地理的領域におけるオブジェクトストレージシステムに送信するステップと、
当該コンピュータシステムによって、当該第1の地理的領域において第2の論理時間に当該ブロックボリュームの第2のスナップショットを作成するステップと、
当該コンピュータシステムによって複数のデルタを生成するステップとを含み、当該複数のデルタの各デルタは当該複数のパーティションのうちの1つのパーティションに対応し、当該以下のステップはさらに、
当該コンピュータシステムによって、当該複数のデルタに対応する複数のデルタデータセットを、当該第2の地理的領域における当該オブジェクトストレージシステムに送信するステップと、
当該コンピュータシステムによって、当該複数のデルタおよび当該第1のスナップショットに関連付けられたオブジェクトメタデータを少なくとも部分的に集約することによってチェックポイントを生成するステップと、
当該コンピュータシステムによって、復元ボリュームを生成するための復元要求を受信するステップと、
当該コンピュータシステムによって、当該チェックポイントから当該復元ボリュームを生成するステップとを含む、コンピュータ可読記憶媒体。
項18:当該複数のデルタを生成するステップは、
当該第2のスナップショットと当該第1のスナップショットとの比較を生成するステップと、
当該比較に基づいて、当該第1のスナップショットデータと、当該第2のスナップショットに対応する第2のスナップショットデータとの間の変化に対応する修正済みデータを判定するステップと、
当該複数のパーティションについて当該修正済みデータを記述する当該複数のデルタを生成するステップとを含む、項17に記載のコンピュータ可読記憶媒体。
項19:当該複数のデルタデータセットを送信するステップは、
当該複数のデルタデータセットから複数のチャンクオブジェクトを生成するステップと、
当該複数のデルタを転送するステップと、
当該複数のチャンクオブジェクトを当該オブジェクトストレージシステムに転送するステップとを含む、項17に記載のコンピュータ可読記憶媒体。
項20:当該チェックポイントは、当該オブジェクトメタデータのマニフェストを含み、
当該オブジェクトメタデータは、当該オブジェクトストレージシステムにおける当該複数のチャンクオブジェクトに対応するチャンクポインタを含む、項19に記載のコンピュータ可読記憶媒体。

Claims (20)

  1. 方法であって、
    コンピュータシステムによって、第1の地理的領域において、第1の論理時間に、複数のパーティションを含むブロックボリュームの第1のスナップショットを作成するステップと、
    前記コンピュータシステムによって、前記第1のスナップショットに対応する第1のスナップショットデータを第2の地理的領域におけるオブジェクトストレージシステムに送信するステップと、
    前記コンピュータシステムによって、前記第1の地理的領域において第2の論理時間に前記ブロックボリュームの第2のスナップショットを作成するステップと、
    前記コンピュータシステムによって複数のデルタを生成するステップとを含み、前記複数のデルタの各デルタは前記複数のパーティションのうちの1つのパーティションに対応し、前記方法はさらに、
    前記コンピュータシステムによって、前記複数のデルタに対応する複数のデルタデータセットを、前記第2の地理的領域における前記オブジェクトストレージシステムに送信するステップと、
    前記コンピュータシステムによって、前記複数のデルタおよび前記第1のスナップショットに関連付けられたオブジェクトメタデータを少なくとも部分的に集約することによってチェックポイントを生成するステップと、
    前記コンピュータシステムによって、復元ボリュームを生成するための復元要求を受信するステップと、
    前記コンピュータシステムによって、前記チェックポイントから前記復元ボリュームを生成するステップとを含む、方法。
  2. 前記複数のデルタを生成するステップは、
    前記第2のスナップショットと前記第1のスナップショットとの比較を生成するステップと、
    前記比較に基づいて、前記第1のスナップショットデータと、前記第2のスナップショットに対応する第2のスナップショットデータとの間の変化に対応する修正済みデータを判定するステップと、
    前記複数のパーティションについて前記修正済みデータを記述する前記複数のデルタを生成するステップとを含む、請求項1に記載の方法。
  3. 前記第1のスナップショットを作成するステップは、
    論理時間に対応して、前記複数のパーティションのための入出力動作を中断するステップと、
    前記複数のパーティション内のボリュームデータを記述する複数のブロックイメージを生成するステップと、
    前記複数のパーティションのための入出力動作を可能にするステップとを含む、請求項1に記載の方法。
  4. 前記復元要求はフェイルオーバー要求であり、前記方法はさらに、
    前記第2の地理的領域において前記復元ボリュームを生成することを可能にするステップと、
    前記第2の地理的領域において前記復元ボリュームを用いて入出力動作を可能にするステップとを含む、請求項1に記載の方法。
  5. 前記復元要求はフェイルバック要求であり、前記方法はさらに、
    前記第2の地理的領域において前記復元ボリュームを生成するステップと、
    前記第1の地理的領域においてフェイルバックボリュームを生成することを可能にするステップと、
    前記第1の地理的領域において前記第1のスナップショットデータを復元するステップとを含む、請求項1に記載の方法。
  6. 前記複数のデルタデータセットを送信するステップは、
    前記複数のデルタデータセットから複数のチャンクオブジェクトを生成するステップと、
    前記複数のデルタを転送するステップと、
    前記複数のチャンクオブジェクトを前記オブジェクトストレージシステムに転送するステップとを含む、請求項1に記載の方法。
  7. 前記チェックポイントは、前記オブジェクトメタデータのマニフェストを含み、
    前記オブジェクトメタデータは、前記オブジェクトストレージシステムにおける前記複数のチャンクオブジェクトに対応するチャンクポインタを含む、請求項6に記載の方法。
  8. 前記オブジェクトメタデータを集約するステップは、前記複数のデルタデータセットと前記第1のスナップショットデータとの間の複数の差異を反映するように前記マニフェストを更新するステップを含む、請求項7に記載の方法。
  9. コンピュータシステムであって、
    1つ以上のプロセッサと、
    前記1つ以上のプロセッサと通信するメモリとを含み、前記メモリは、コンピュータ実行可能命令を格納するように構成され、前記コンピュータ実行可能命令を実行することにより、前記1つ以上のプロセッサに以下のステップを実行させ、前記以下のステップは、
    コンピュータシステムによって、第1の地理的領域において、第1の論理時間に、複数のパーティションを含むブロックボリュームの第1のスナップショットを作成するステップと、
    前記コンピュータシステムによって、前記第1のスナップショットに対応する第1のスナップショットデータを第2の地理的領域におけるオブジェクトストレージシステムに送信するステップと、
    前記コンピュータシステムによって、前記第1の地理的領域において第2の論理時間に前記ブロックボリュームの第2のスナップショットを作成するステップと、
    前記コンピュータシステムによって複数のデルタを生成するステップとを含み、前記複数のデルタの各デルタは前記複数のパーティションのうちの1つのパーティションに対応し、前記以下のステップはさらに、
    前記コンピュータシステムによって、前記複数のデルタに対応する複数のデルタデータセットを、前記第2の地理的領域における前記オブジェクトストレージシステムに送信するステップと、
    前記コンピュータシステムによって、前記複数のデルタおよび前記第1のスナップショットに関連付けられたオブジェクトメタデータを少なくとも部分的に集約することによってチェックポイントを生成するステップと、
    前記コンピュータシステムによって、復元ボリュームを生成するための復元要求を受信するステップと、
    前記コンピュータシステムによって、前記チェックポイントから前記復元ボリュームを生成するステップとを含む、コンピュータシステム。
  10. 前記複数のデルタを生成するステップは、
    前記第2のスナップショットと前記第1のスナップショットとの比較を生成するステップと、
    前記比較に基づいて、前記第1のスナップショットデータと、前記第2のスナップショットに対応する第2のスナップショットデータとの間の変化に対応する修正済みデータを判定するステップと、
    前記複数のパーティションについて前記修正済みデータを記述する前記複数のデルタを生成するステップとを含む、請求項9に記載のコンピュータシステム。
  11. 前記第1のスナップショットを作成するステップは、
    論理時間に対応して、前記複数のパーティションのための入出力動作を中断するステップと、
    前記複数のパーティション内のボリュームデータを記述する複数のブロックイメージを生成するステップと、
    前記複数のパーティションのための入出力動作を可能にするステップとを含む、請求項9に記載のコンピュータシステム。
  12. 前記復元要求はフェイルオーバー要求であり、前記方法はさらに、
    前記第2の地理的領域において前記復元ボリュームを生成することを可能にするステップと、
    前記第2の地理的領域において前記復元ボリュームを用いて入出力動作を可能にするステップとを含む、請求項9に記載のコンピュータシステム。
  13. 前記復元要求はフェイルバック要求であり、前記方法はさらに、
    前記第2の地理的領域において前記復元ボリュームを生成するステップと、
    前記第1の地理的領域においてフェイルバックボリュームを生成することを可能にするステップと、
    前記第1の地理的領域において前記第1のスナップショットデータを復元するステップとを含む、請求項9に記載のコンピュータシステム。
  14. 前記複数のデルタデータセットを送信するステップは、
    前記複数のデルタデータセットから複数のチャンクオブジェクトを生成するステップと、
    前記複数のデルタを転送するステップと、
    前記複数のチャンクオブジェクトを前記オブジェクトストレージシステムに転送するステップとを含む、請求項9に記載のコンピュータシステム。
  15. 前記チェックポイントは、前記オブジェクトメタデータのマニフェストを含み、
    前記オブジェクトメタデータは、前記オブジェクトストレージシステムにおける前記複数のチャンクオブジェクトに対応するチャンクポインタを含む、請求項14に記載のコンピュータシステム。
  16. 前記オブジェクトメタデータを集約するステップは、前記複数のデルタデータセットと前記第1のスナップショットデータとの間の複数の差異を反映するように前記マニフェストを更新するステップを含む、請求項15に記載のコンピュータシステム。
  17. コンピュータ実行可能命令を格納するコンピュータ可読記憶媒体であって、前記コンピュータ実行可能命令は、実行されるとコンピュータシステムの1つ以上のプロセッサに以下のステップを実行させ、前記以下のステップは、
    コンピュータシステムによって、第1の地理的領域において、第1の論理時間に、複数のパーティションを含むブロックボリュームの第1のスナップショットを作成するステップと、
    前記コンピュータシステムによって、前記第1のスナップショットに対応する第1のスナップショットデータを第2の地理的領域におけるオブジェクトストレージシステムに送信するステップと、
    前記コンピュータシステムによって、前記第1の地理的領域において第2の論理時間に前記ブロックボリュームの第2のスナップショットを作成するステップと、
    前記コンピュータシステムによって複数のデルタを生成するステップとを含み、前記複数のデルタの各デルタは前記複数のパーティションのうちの1つのパーティションに対応し、前記以下のステップはさらに、
    前記コンピュータシステムによって、前記複数のデルタに対応する複数のデルタデータセットを、前記第2の地理的領域における前記オブジェクトストレージシステムに送信するステップと、
    前記コンピュータシステムによって、前記複数のデルタおよび前記第1のスナップショットに関連付けられたオブジェクトメタデータを少なくとも部分的に集約することによってチェックポイントを生成するステップと、
    前記コンピュータシステムによって、復元ボリュームを生成するための復元要求を受信するステップと、
    前記コンピュータシステムによって、前記チェックポイントから前記復元ボリュームを生成するステップとを含む、コンピュータ可読記憶媒体。
  18. 前記複数のデルタを生成するステップは、
    前記第2のスナップショットと前記第1のスナップショットとの比較を生成するステップと、
    前記比較に基づいて、前記第1のスナップショットデータと、前記第2のスナップショットに対応する第2のスナップショットデータとの間の変化に対応する修正済みデータを判定するステップと、
    前記複数のパーティションについて前記修正済みデータを記述する前記複数のデルタを生成するステップとを含む、請求項17に記載のコンピュータ可読記憶媒体。
  19. 前記複数のデルタデータセットを送信するステップは、
    前記複数のデルタデータセットから複数のチャンクオブジェクトを生成するステップと、
    前記複数のデルタを転送するステップと、
    前記複数のチャンクオブジェクトを前記オブジェクトストレージシステムに転送するステップとを含む、請求項17に記載のコンピュータ可読記憶媒体。
  20. 前記チェックポイントは、前記オブジェクトメタデータのマニフェストを含み、
    前記オブジェクトメタデータは、前記オブジェクトストレージシステムにおける前記複数のチャンクオブジェクトに対応するチャンクポインタを含む、請求項19に記載のコンピュータ可読記憶媒体。
JP2023527053A 2020-11-06 2021-09-29 非同期領域間ブロックボリューム複製 Pending JP2023548373A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/091,635 2020-11-06
US17/091,635 US11537633B2 (en) 2020-11-06 2020-11-06 Asynchronous cross-region block volume replication
PCT/US2021/052600 WO2022098450A1 (en) 2020-11-06 2021-09-29 Asynchronous cross-region block volume replication

Publications (1)

Publication Number Publication Date
JP2023548373A true JP2023548373A (ja) 2023-11-16

Family

ID=78500701

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023527053A Pending JP2023548373A (ja) 2020-11-06 2021-09-29 非同期領域間ブロックボリューム複製

Country Status (6)

Country Link
US (2) US11537633B2 (ja)
EP (1) EP4241158A1 (ja)
JP (1) JP2023548373A (ja)
KR (1) KR20230097184A (ja)
CN (1) CN116457760A (ja)
WO (1) WO2022098450A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114270321A (zh) * 2020-03-04 2022-04-01 华为技术有限公司 用于快速备份的设备和方法
US11693828B2 (en) 2021-03-22 2023-07-04 Sap Se Real-time data replication in a multiple availability zone cloud platform
US11687565B2 (en) * 2021-03-22 2023-06-27 Sap Se Asynchronous data replication in a multiple availability zone cloud platform
US11683201B2 (en) * 2021-10-22 2023-06-20 Vmware, Inc. Fast provisioning of machines using network cloning
US11716377B2 (en) 2021-10-22 2023-08-01 Vmware, Inc. Fast provisioning of machines using network cloning
US11899537B2 (en) 2021-10-27 2024-02-13 EMC IP Holding Company LLC Near continuous data protection without using snapshots
US11914866B2 (en) 2021-10-27 2024-02-27 EMC IP Holding Company LLC Optimized one pass delta streaming filter
US11822432B2 (en) * 2021-10-27 2023-11-21 EMC IP Holding Company LLC Near continuous data protection without using snapshots
US11797236B2 (en) 2021-10-27 2023-10-24 EMC IP Holding Company LLC Near continuous data protection without using snapshots
US11853166B2 (en) * 2022-01-07 2023-12-26 Dell Products L.P. Storage system recovery without data retransmission
CN116737466B (zh) * 2023-08-15 2023-11-03 中移(苏州)软件技术有限公司 备份处理方法、装置、系统、电子设备及可读存储介质

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8176272B2 (en) 2008-09-04 2012-05-08 International Business Machines Corporation Incremental backup using snapshot delta views
US9727262B2 (en) * 2015-12-28 2017-08-08 Netapp, Inc. Low overhead resynchronization snapshot creation and utilization
US10095506B2 (en) * 2016-02-12 2018-10-09 Nutanix, Inc. Virtualized file server data sharing
US11327846B2 (en) 2017-09-28 2022-05-10 Oracle International Corporation System and method for backup and recovery of services in a cloud computing environment
US11023157B2 (en) * 2018-04-30 2021-06-01 Amazon Technologies, Inc. Intermediary duplication to facilitate copy requests in distributed storage systems
US20220083245A1 (en) * 2019-07-18 2022-03-17 Pure Storage, Inc. Declarative provisioning of storage
US11036594B1 (en) * 2019-07-25 2021-06-15 Jetstream Software Inc. Disaster recovery systems and methods with low recovery point objectives
US11016671B2 (en) * 2019-09-27 2021-05-25 Amazon Technologies, Inc. Snapshot block storage path structure wherein identification of blocks that are identical between two snapshots are determined without performing block by block comparison between the two snapshots
US11537553B2 (en) * 2020-03-10 2022-12-27 EMC IP Holding Company LLC Managing snapshots stored locally in a storage system and in cloud storage utilizing policy-based snapshot lineages

Also Published As

Publication number Publication date
US11537633B2 (en) 2022-12-27
CN116457760A (zh) 2023-07-18
US20230029465A1 (en) 2023-02-02
EP4241158A1 (en) 2023-09-13
KR20230097184A (ko) 2023-06-30
US20220147541A1 (en) 2022-05-12
WO2022098450A1 (en) 2022-05-12

Similar Documents

Publication Publication Date Title
US11537633B2 (en) Asynchronous cross-region block volume replication
JP7379599B2 (ja) クラウドデータストアにわたるファイルシステム階層ミラーリング
US11079966B2 (en) Enhanced soft fence of devices
US10073747B2 (en) Reducing recovery time in disaster recovery/replication setup with multitier backend storage
CN114341792B (zh) 存储集群之间的数据分区切换
US20130091376A1 (en) Self-repairing database system
US9632724B1 (en) Point-in-time copy with chain cloning
US11182094B2 (en) Performing a recovery copy command using a recovery copy data structure for a backup volume lookup
US10289322B2 (en) Delayed consistent point-in-time copy from a secondary volume of a consistent asynchronous mirror copy
US11799839B2 (en) Cross-regional replication of keys
US11182081B2 (en) Performing a recovery copy command to restore a safeguarded copy backup to a production volume
US10789132B2 (en) Performing a recovery copy command to create a recovery volume for a consistency group
US20220382637A1 (en) Snapshotting hardware security modules and disk metadata stores
US11704289B2 (en) Role reversal of primary and secondary sites with minimal replication delay
US10528593B2 (en) Consistent point-in-time copy of a consistent asynchronous mirror target without pausing a consistent asynchronous mirror copy
WO2022250826A1 (en) Managing keys across a series of nodes, based on snapshots of logged client key modifications
JP2024521322A (ja) スナップショットハードウェアセキュリティモジュールおよびディスクメタデータストア