JP2016529633A - スナップショットおよびクローンの複製 - Google Patents

スナップショットおよびクローンの複製 Download PDF

Info

Publication number
JP2016529633A
JP2016529633A JP2016537937A JP2016537937A JP2016529633A JP 2016529633 A JP2016529633 A JP 2016529633A JP 2016537937 A JP2016537937 A JP 2016537937A JP 2016537937 A JP2016537937 A JP 2016537937A JP 2016529633 A JP2016529633 A JP 2016529633A
Authority
JP
Japan
Prior art keywords
snapshot
data
time
snapshot data
destination
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.)
Granted
Application number
JP2016537937A
Other languages
English (en)
Other versions
JP6309103B2 (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.)
Tintri by DDN Inc
Original Assignee
Tintri Inc
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 Tintri Inc filed Critical Tintri Inc
Publication of JP2016529633A publication Critical patent/JP2016529633A/ja
Application granted granted Critical
Publication of JP6309103B2 publication Critical patent/JP6309103B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/128Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

ストレージ・システム間でスナップショットの複製を実施することを開示する。ストレージ・システム間でスナップショットの複製を実施することは、第1の時点におけるデータ・セットの状態を宛先システムで表すためのスナップショット・データを宛先システムに記憶する要求を受け取ることを含み、第1の時点におけるデータ・セットの状態をソース・システムで表す第1のソース・システム・スナップショット・データは、第2の時点におけるデータ・セットの状態をソース・システムで表す第2のソース・システム・スナップショット・データに依存する。さらに、第1の時点におけるデータ・セットの状態を宛先システムで表すためのスナップショット・データを決定することを含み、このスナップショット・データは、第1のソース・システム・スナップショット・データと、第3の時点におけるデータ・セットの状態を宛先システムで表す宛先システム・スナップショット・データとを含むデータに基づいて決定される。【選択図】図8

Description

他の出願の相互参照
本出願は、あらゆる趣旨において参照により本明細書に組み込まれる、2013年9月3日に出願された発明の名称を「REPLICATION OF SNAPSHOTS AND CLONES(スナップショットおよびクローンの複製)」とする米国仮特許出願第61/873,241号に基づく優先権を主張する。
いくつかのシステムでは、スナップショットを、所与の2つの時点の間にストレージ・システムに加えられた変更を追跡するスナップショット・インデックスとして表すことができる。ある時点(ポイント・イン・タイム)におけるデータの状態に関連するスナップショットを複製するとき、多くの従来アプローチは、スナップショットに対応する時点におけるデータの状態を「展開」する。データの展開状態は、その時点において存在するかまたはアクセスされ得る全てのデータ値を含み、通常、デルタ(差分)表現よりもはるかに長い(デルタ表現は、次に古いスナップショット以後に加えられた変更のみを含む)。データの展開状態を宛先システムに送信して宛先システムで記憶することは、非効率的である可能性がある。
本発明の様々な実施形態を、後続の詳細な記述および添付の図面に開示する。
仮想マシン・ストレージ抽象化を使用したVMの記憶のためのストレージ・システムの一実施形態を示す図である。
データおよびメタデータを含むストレージ・システムの一実施形態を例示するブロック図である。
データ・セットに関連するメタデータ・セットの例を示す図である。
ソース・データに関連するメタデータ・セット、およびクローンに関連するメタデータ・セットの例を示す図である。
ソース・システムおよび宛先システムに記憶できるスナップショットの例を示す図である。
ストレージ・システム間でスナップショットの複製を実施するためのシステムの一実施形態を示す図である。
同じ展開データ状態に関連するスナップショット・インデックスが、異なるストレージ・システムでどのように異なる場合があるかに関する例を示す図である。
ソース・システムから宛先システムへの選択されたスナップショットの複製を実施するプロセスの一実施形態を示す流れ図である。
時間t2におけるスナップショットをソース・システムから宛先システムに複製する例を示す図である。 時間t2におけるスナップショットをソース・システムから宛先システムに複製する例を示す図である。
時間t3におけるスナップショットをソース・システムから宛先システムに複製する例を示す図である。 時間t3におけるスナップショットをソース・システムから宛先システムに複製する例を示す図である。
時間t3におけるスナップショットをソース・システムから宛先システムに複製する別の例を示す図である。 時間t3におけるスナップショットをソース・システムから宛先システムに複製する別の例を示す図である。
時間t4におけるスナップショットをソース・システムから宛先システムに複製する別の例を示す図である。 時間t4におけるスナップショットをソース・システムから宛先システムに複製する別の例を示す図である。
より新しいスナップショット・インデックスをより古いスナップショット・インデックスに対してリファクタリングするプロセスの例を示す流れ図である。
クローンに関連する選択されたスナップショットの、ソース・システムから宛先システムへの複製を実施するプロセスの一実施形態を示す流れ図である。
クローンに関連する時間t4におけるスナップショット(S4)をソース・システムから宛先システムに複製する例を示す図である。 クローンに関連する時間t4におけるスナップショット(S4)をソース・システムから宛先システムに複製する例を示す図である。 クローンに関連する時間t4におけるスナップショット(S4)をソース・システムから宛先システムに複製する例を示す図である。
本発明は、プロセス、装置、システム、組成物、コンピュータ可読ストレージ媒体に組み入れられたコンピュータ・プログラム製品、ならびに/または、プロセッサ(プロセッサに結合されたメモリに記憶された命令および/もしくはそのようなメモリによって提供される命令を、実行するように構成されたプロセッサなど)として実現することを含めて、多くの方式で実現することができる。本明細書では、これらの実装形態、または本発明がとり得る他の任意の形を、技法と呼ぶ場合がある。一般に、開示されるプロセスのステップの順序は、本発明の範囲内で改変することができる。別途明記されない限り、タスクを実施するように構成されるものとして記述されるプロセッサやメモリなどのコンポーネントは、所与の時にタスクを実施するように一時的に構成される一般的なコンポーネントとして、またはタスクを実施するように製造された特定のコンポーネントとして、実装される場合がある。本明細書において、用語「プロセッサ」は、コンピュータ・プログラム命令などのデータを処理するように構成された1つまたは複数のデバイス、回路、および/または処理コアを指す。
本発明の1つまたは複数の実施形態に関する詳細な記述を、本発明の原理を例示する添付の図と共に、以下に提供する。本発明をこのような実施形態との関連で述べるが、本発明は、どんな実施形態にも限定されない。本発明の範囲は特許請求の範囲によってのみ限定され、本発明は、多くの代替、修正、および均等物を包含する。後続の記述では、本発明の完全な理解を提供するために、多くの具体的詳細を示す。これらの詳細は例の目的で提供するものであり、本発明は、これらの具体的詳細のいくらかまたは全てがなくても、特許請求の範囲に従って実践することができる。明確にするために、本発明に関係する技術分野で知られている技術要素については、本発明が不必要に曖昧にならないように、詳細には述べていない。
ストレージ・システム間でスナップショットおよびクローンの効率的かつフレキシブルな複製を実施する実施形態について、本明細書に述べる。スナップショットの複製が実施されるストレージ・システムは、相互に遠く離れて位置する場合がある。スナップショットおよびクローンは、データのポイント・イン・タイム・コピーの、空間効率のよい表現を可能にする。スナップショットは一般に、読取専用コピーであり、クローンは一般に、読取りまたは書込みができるコピーである。リモート・ストレージ・システムでスナップショットおよびクローンを通常に複製すると、しばしば、空間効率が失われる結果になるか、または、スナップショットおよびクローンを複製する際に用いなければならないサブセットもしくは順序に対して制限が課される。本明細書に記載の実施形態によれば、スナップショットおよびクローンの複製を、変更またはデルタ(差分)として表される最小限の量の情報を使用して実施することができ、また、複製するストレージ・システム間で伝送および記憶することができる。データおよびメタデータの最小限の表現をストレージ・システム上で保存しながら、スナップショットおよびクローンの任意のサブセットを任意の順序で任意のシステムに複製することができる。
「スナップショット」は、様々な実施形態で、データ・セットのポイント・イン・タイム状態を含み、後で生成されたスナップショットは、前のスナップショットの作成以後に修正されたデータへのマッピングを含む。データ・セットは、例えば、仮想マシン(「VM」と呼ばれることもある)、仮想ディスク(「Vディスク」と呼ばれることもある)、またはファイルに関連するものである場合がある。様々な実施形態で、データ・セット(例えば、VM、Vディスク、またはファイル)に関連するメタデータは、1つまたは複数のスナップショットを含む。様々な実施形態で、データ・セットのポイント・イン・タイム状態に関連するスナップショットは、ストレージ・システムでインデックスとして物理的に表される/記憶される。本明細書で使用される場合、「スナップショット」は、特定の時点におけるデータ・セットの状態を指すのに使用されることがあり、かつ/または、特定のストレージ・システムでのその特定の時点におけるデータ・セットのその状態を表す物理表現(例えばインデックス)を指すのに使用されることがある。「ユーザ」は、「論理オフセット」を使用してスナップショットに対して読取操作を実施し、「論理オフセット」は、データ・セットを構成するスナップショットに関連するインデックスを使用して「物理オフセット」にマッピングされる。次いで、物理オフセットを使用して、基礎をなす物理ストレージ・デバイスからのデータを読み書きすることができる。読取操作は、1つまたは複数のインデックス中で論理オフセットをルックアップして対応する物理オフセットを見つけ、書込操作は、インデックス中で新しいエントリを作成するかまたは既存のエントリを更新する。各スナップショット・インデックスは、直前に生成された(すなわちより古い)スナップショット・インデックス以後に修正されたデータへのマッピングを含むので、データ・セットに関連する各スナップショット・インデックス(最も古いスナップショット・インデックス以外の)は、少なくとも、次に古いスナップショット・インデックスに依存する(例えば、それをポイントする、それにリンクする、かつ/または他の方法でそれを参照する)ことができる。したがって、データ・セットの種々のポイント・イン・タイム状態に関連するスナップショットが、ストレージ・システムでスナップショット・インデックスのシーケンスとして表されるものとすることができる。後でさらに詳細に述べるように、シーケンス中のスナップショット・インデックス間の依存関係のせいで、同じデータ・セットに関連する同じポイント・イン・タイム・スナップショットを有する異なるストレージ・システムが、それぞれのスナップショット・シーケンスに対応するように、いくぶん異なる論理オフセットのセットをマッピングするインデックスを記憶している場合がある。
様々な実施形態で、「クローン」は、既存のデータ・セット(既存のデータ・セットを「ソース・データ」と呼ぶことがある)のコピーを指す。様々な実施形態で、クローンは、ソース・データのスナップショットから生成される。様々な実施形態で、クローンの作成元であるソース・データのスナップショットを「共有スナップショット」と呼ぶ。クローンを生成するには、新しいメタデータ・セットが作成され、クローンの新しいメタデータ・セットをソース・データのメタデータ・セットに関連付けるデータが記憶され、それにより、ソース・データに関連するスナップショット・インデックスの少なくともいくつかが、クローンに関連する新しいメタデータ・セットによって共有されることになり、ソース・データに関連するデータの少なくともいくらかが、クローンによって共有される。
図1は、仮想マシン・ストレージ抽象化を使用したVMの記憶のためのストレージ・システムの一実施形態を示す図である。図示の例では、システム100は、サーバ106、ネットワーク104、およびストレージ・システム102を含む。様々な実施形態で、ネットワーク104は、様々な高速データ・ネットワークおよび/または遠隔通信ネットワークを含む。いくつかの実施形態では、ストレージ・システム102は、ネットワーク104を介してサーバ106と通信する。いくつかの実施形態では、仮想マシン・ストレージ抽象化を使用したVMの記憶のためのファイル・システムは、ネットワーク104を含まず、ストレージ・システム102はサーバ106のコンポーネントである。いくつかの実施形態では、サーバ106は、ストレージ・システム102以外のより多くのストレージ・システムとも通信するように構成される。
様々な実施形態で、サーバ106は、いくつかのVMを実行する。図示の例では、VM108、110、および112(ならびに他のVM)が、サーバ106上で稼働している。VMは、物理マシンのようにプログラムを実行する、物理マシンのソフトウェア実装形態である。例えば、物理マシン(例えばコンピュータ)が、2つ以上のVMを実行するようにプロビジョニングされる場合がある。各VMは、異なるオペレーティング・システムを実行することができる。したがって、異なるオペレーティング・システムが、同時に稼働して、同じ物理マシンのリソースを共有することができる。様々な実施形態で、VMは、2つ以上の物理マシンにまたがることがあり、かつ/または、ある物理マシンから別の物理マシンに移動(例えばマイグレート)されることがある。様々な実施形態で、VMは、1つまたは複数の仮想ディスク(Vディスク)と、特定のVMに関係する他のデータ(例えば、VM管理インフラストラクチャによってサポートされるスナップショットなどの機能を実装するための、構成ファイルおよびユーティリティ・ファイル)とを含む。Vディスクは、VM上で稼働するゲスト・オペレーティング・システムにとっては、普通の物理ディスク・ドライブに見える。様々な実施形態で、1つまたは複数のファイルを使用してVディスクの内容を記憶することができる。いくつかの実施形態では、VM管理インフラストラクチャ(例えばハイパーバイザ)がファイルを作成するが、これらのファイルは、Vディスクの内容(例えば、ゲスト・オペレーティング・システム、プログラム・ファイル、およびデータ・ファイル)と、特定のVMに関連する他のデータとを記憶する。例えば、ハイパーバイザは、特定のVMごとに、ファイルのセットをディレクトリ中に作成することができる。ハイパーバイザによって作成されるファイルの例は、1つまたは複数のVディスクの内容、VMのBIOSの状態、ハイパーバイザによって作成されたスナップショットに関する情報およびメタデータ、特定のVMの構成情報、などを記憶する。様々な実施形態で、特定のVMに関連するデータは、1つまたは複数のファイルとしてストレージ・システムに記憶される。様々な実施形態で、これらのファイルは、仮想マシン・ストレージ抽象化の例である。いくつかの実施形態では、サーバ106上で稼働するVM108、110、および112(少なくとも)に関連するそれぞれのファイルは、ストレージ・システム102に記憶される。
様々な実施形態で、ストレージ・システム102は、どの記憶済みデータ・オブジェクト(ファイルや他の仮想マシン・ストレージ抽象化など)が、どのVMまたはVディスクに関連するかを識別するメタ情報を記憶するように構成される。様々な実施形態で、ストレージ・システム102は、サーバ106上で稼働するVMのデータを記憶し、また、どのデータ・オブジェクトがどの特定のVMに関連するかに関するマッピングまたは他の識別を提供するメタデータも記憶する。様々な実施形態で、特定のVMのマッピングまたは識別は、特定の各VMに関連するストレージ上のファイルへのマッピングを含む。様々な実施形態で、ストレージ・システム102はまた、特定のVMに関連するファイルへのマッピングに加えて、これらのファイルの少なくとも一部も記憶する。様々な実施形態で、ストレージ・システム102は、協働して記憶データ(ファイルや他の記憶されるデータ・オブジェクトなど)の記憶および管理を行うように構成された、1つまたは複数の物理システム、ならびに/または関連するハードウェアおよび/もしくはソフトウェア・コンポーネントを参照する。いくつかの実施形態では、ストレージ・システムを(少なくとも部分的に)実装するのに使用されるハードウェア・コンポーネントは、ディスクとフラッシュとのいずれか、またはディスクとフラッシュとの組合せからなる場合がある。
図2は、データおよびメタデータを含むストレージ・システムの一実施形態を例示するブロック図である。図示の例では、ストレージ・システム102は、ネットワーク接続202と、ネットワーク・インタフェース・カードや他のインタフェースなどの通信インタフェース204とを備え、これらにより、ストレージ・システムは、図1のネットワーク104などのネットワークに接続されそのようなネットワークを介して通信することができる。ストレージ・システム102はさらに、図1のサーバ106などのシステム上で稼働する仮想マシンからのNFS要求を扱うように構成されたネットワーク・ファイル・システム・フロント・エンド206を備える。様々な実施形態で、ネットワーク・ファイル・システム・フロント・エンドは、ストレージ・システム102または他の場所に記憶されたメタ情報を例えば使用して、受け取られ処理されるNFS要求をこの要求が関連する対応する仮想マシンおよび/またはVディスクに関連付けるように構成される。ストレージ・システム102は、VMデータを記憶するように構成および最適化されたファイル・システム208を備える。図示の例では、メタデータ210は、様々なデータ・セットとそれらに関連するスナップショットおよびクローンとに関連するメタデータ・セットを記憶するように構成される。例えば、メタデータ・セットは、VM、Vディスク、またはファイルに関連するものである場合がある。ストレージ212は、少なくとも1段のストレージを含むことができる。いくつかの実施形態では、ストレージ212は少なくとも2段のストレージを含むことができ、1段目のストレージは、フラッシュまたは他の固体ディスク(SSD)を含み、2段目のストレージは、ハード・ディスク・ドライブ(HDD)または他のディスク・ストレージを含む。
様々な実施形態で、メタデータ210に記憶されたメタデータ・セットは、メタデータ・セットに関連するデータ・セット(例えば、VM、Vディスク、またはファイル)が記憶されているストレージ212中の場所へのマッピングを含む少なくとも1つのインデックスを含む。いくつかの実施形態では、メタデータ210に記憶されたメタデータ・セットは、ストレージ212に記憶されたデータ・セットに関連するスナップショットであるインデックスを少なくとも含む。様々な実施形態で、メタデータ210に記憶されたメタデータ・セットは、ストレージ212に記憶されたデータ・セットに関連する1つまたは複数のスナップショット・インデックスのシーケンスを含み、各スナップショット・インデックスは、より古い(すなわちより前に生成された)スナップショット・インデックスがもし存在すれば、少なくともそれに依存する(物理的に)。
クローンは、ストレージ212に記憶された既存の(すなわちソース)データ・セットに基づいて生成することができる。様々な実施形態で、クローンは、メタデータ210に記憶されているソース・データのメタデータ・セット中の、ソース・データ・セットのスナップショットを使用して生成することができる。様々な実施形態で、クローンの生成元であるソース・データのスナップショットを、「共有スナップショット」と呼ぶ。新しいメタデータ・セットがクローンについて作成され、クローン(および/またはクローンのメタデータ・セット)をソース・データに関連するメタデータ・セット(例えば、ソース・データの共有スナップショット)に関連付けられるデータが、メタデータ210に記憶される。ソース・データに関連するメタデータの少なくともいくらかは、クローンと共有される。様々な実施形態で、受け取られた要求が、データ・セット(例えば、VM、Vディスク、またはファイル)からのデータ(例えば、データの現在状態または過去状態)にアクセスする操作(例えば、読取りまたは書込み)を含むとき、このデータに関連するメタデータ・セットが取り出される。要求に関連するデータがクローンを含む場合は、いくつかの例では、ソース・データに関連するメタデータ・セットの少なくとも一部にもアクセスすることができる。
図3は、データ・セットに関連するメタデータ・セットの例を示す図である。メタデータ・セットは、データ・セット(例えば、VM、Vディスク、またはファイル)に関連するものとすることができる。図3の例では、メタデータ・セットがファイルに関連すると仮定する。この例では、メタデータ・セットは、現在スナップショット・インデックス、時間t2におけるスナップショット、および時間t1におけるスナップショットを含む。現在スナップショット・インデックスは、時間t2におけるスナップショットに依存し(例えばリンクされ)、時間t2におけるスナップショットは、時間t1におけるスナップショットに依存する(例えばリンクされる)。この例では、ファイルに関連するデータが、オフセット1、2、3、および4に記憶されているものとすることができる。
メタデータは、ユーザが書き込んだものとすることのできるデータについて、論理的場所(例えば論理オフセット)を、基礎をなすデータ・ストレージの物理的場所(例えば物理オフセット)に変換するために使用されるマッピングと考えることができる。様々な実施形態で、メタデータは、ハッシュ・テーブルやB木など、効率的なインデックス・データ構造として編成することができる。例えば、データの論理オフセットと、インデックスと、データの物理オフセットとの間の関係は、論理オフセット→インデックス→物理オフセットとして記述することができる。
様々な実施形態で、各メタデータ・セットは、少なくとも1つのアクティブ・インデックス、すなわち「現在スナップショット・インデックス」を含む。現在スナップショット・インデックスは、それを修正できるという意味でアクティブである。いくつかの実施形態では、現在スナップショット・インデックスは、前のスナップショットが作成された後にマッピングされた、ファイル中の全てのオフセットを記憶する。スナップショットは通常は読取専用ファイルだが、現在スナップショット・インデックスは、次の所定のスナップショット作成イベントが発生するまでは修正可能である。例えば、所定のスナップショット作成イベントは、ユーザによって構成されてよく、時間間隔の経過、特定のイベントの検出、または新しいスナップショットを作成するユーザ選択の受領、などを含む場合がある。次の所定のスナップショット作成イベントに達すると、現在スナップショット・インデックスの状態が保存されて新しいスナップショットが作成され、新しい空の現在スナップショット・インデックスが作成される。いくつかの実施形態では、データ・セットへの書込操作の結果、現在スナップショット・インデックスが更新される。いくつかの実施形態では、データ・セットの読取操作の結果、現在スナップショット・インデックス内が検索され、その後、所望のデータが現在スナップショット・インデックス内で見つからなかった場合は、スナップショットのシーケンスの中が検索される。様々な実施形態で、各インデックス内が所定方式で検索される。
いくつかの実施形態では、ファイルのスナップショットは、スナップショットが作成されたときのファイルのポイント・イン・タイム状態である。VMのスナップショットは、VMを構成するファイルの、ファイルレベルのスナップショットの集積である。いくつかの実施形態では、ストレージ・システムにおいて、スナップショットは、前のスナップショットが作成された後で修正されたデータへのマッピングを記憶するインデックスとして表される。言い換えれば、いくつかの実施形態では、各スナップショットは、所与の時間期間にわたる(前のスナップショットの作成以後の)、ファイルの更新(すなわちデルタ)のみを含む。結果として、スナップショットは、空間効率のよいコンパクトな構造によって表すことができる。
スナップショットが作成されるとき、現在スナップショット・インデックスはこのスナップショットのインデックスになり、次のスナップショットに備えて、新しい空の現在スナップショット・インデックスが作成される。各スナップショットは、次に新しいスナップショットおよび次に古いスナップショットにリンクされる(または他の方法で物理的に依存する)。いくつかの実施形態では、時間を遡るリンク(すなわち、次に古いスナップショットへのリンク)が、スナップショットおよびクローンの読取操作中にトラバースされる。
図3の例に戻ると、現在スナップショット・インデックスは、時間t2におけるスナップショットにリンクされ(例えば、それをポイントし)、時間t2におけるスナップショットは、時間t1におけるスナップショットにリンクされる。図3の例に示すように、時間t2におけるスナップショットおよび時間t1におけるスナップショットの各々は、対応するインデックスによって表される。時間t1は時間t2よりも前なので、時間t1におけるスナップショットは、時間t2におけるスナップショットよりも「古い」と言うことができ、時間t2におけるスナップショットは、時間t1におけるスナップショットよりも「新しい」と言うことができる。時間t2におけるスナップショットは時間t1におけるスナップショットにリンクされているので、時間t2におけるスナップショットおよび時間t1におけるスナップショットは、ファイルに関連するスナップショットのチェーンまたはシーケンスと呼ぶことができる。いくつかの実施形態では、ファイルに関連するメタデータ・セットの各スナップショット・インデックスは、スナップショットのシーケンスがファイルに属することを識別する記憶済みの「ファイル・グローバルID」に関連する。ファイルの現在状態に対する読取操作は、現在スナップショット・インデックス、ならびに/または時間t2におけるスナップショットおよび時間t1におけるスナップショットから処理されるものとすることができ、ファイルに対する書込操作は、現在スナップショット・インデックスを更新する。図3の例では、時間t1の前にデータAがオフセット1に書き込まれ、次いで、時間t1におけるスナップショットが作成される。時間t1の後、時間t2の前に、データBがオフセット2に書き込まれ、次いで、時間t2におけるスナップショットが作成される。時間t2の後、時間t3で、データ値Cがオフセット3に書き込まれ、現在スナップショット・インデックス中で追跡される。例えば、新しいデータ値D(図示せず)が、オフセット3に現在あるデータ、すなわちデータ値Cを、時間t4で上書きする場合は、現在スナップショット・インデックスのオフセット3は、データ値Dにマッピングするように更新されることになる。
様々な実施形態で、論理ブロック・オフセットについての指定されたスナップショットに対する読取操作は、次のようにして進行することができる。まず、読取操作の論理ブロック・オフセットについて、指定されたスナップショット・インデックスのルックアップが実施される。マッピングが存在する場合は、対応する物理アドレスにおけるデータが物理デバイス(基礎をなすストレージ)から読み取られて返される。そうではなく、指定されたスナップショット・インデックス内にマッピングが存在しない場合は、次に古いスナップショットへのリンクがトラバースされ、このより古いスナップショットのインデックス内の検索が実施される。論理ブロック・オフセットについてのマッピングがスナップショット・インデックス中で見つかるまで、またはチェーン中の最後のスナップショットが調べられるまで、このプロセスが継続する。例えば、データ・セットに対する読取操作が、オフセット1に関連する現在データを要求すると仮定する。まず、データ・セットの現在スナップショット・インデックス内で、オフセット1に関連するデータへのマッピングが検索される。現在スナップショット・インデックス中でマッピングが見つからず、したがって、現在スナップショット・インデックスから時間t2におけるスナップショットへのリンク(例えば、記憶済みの関連付けデータ)がトラバースされ、時間t2におけるスナップショット内の検索が実施される。時間t2におけるスナップショット中でマッピングが見つからず、したがって、時間t2におけるスナップショットから、次に古いスナップショット、すなわち時間t1におけるスナップショットへのリンクがトラバースされ、時間t1におけるスナップショット内の検索が実施される。時間t1におけるスナップショット中で、オフセット1に関連するマッピングが見つかり、検索は終了し、時間t1におけるスナップショットを使用して要求が処理される。
図4は、ソース・データに関連するメタデータ・セット、およびクローンに関連するメタデータ・セットの例を示す図である。いくつかの実施形態では、クローンは、データ・セットの既存のスナップショットから作成することができる。この例では、最初にソース・データのスナップショットが作成され、次いでこのスナップショットからクローンが作成された。前述のように、メタデータおよびデータの空間消費を削減するために、スナップショットは、前のスナップショットの作成以後に関連データ・セットに加えられた変更のみを記憶するコンパクトなフォーマットで表される。ソース・データに関連するメタデータ・セット(ソース・メタデータ)は、時間t3におけるスナップショット、時間t2におけるスナップショット、および時間t1におけるスナップショットを含む。図4の例に示すように、時間t3におけるスナップショット、時間t2におけるスナップショット、および時間t1におけるスナップショットの各々は、対応するインデックスによって表される。この例では、クローンは、ソース・メタデータの時間t2におけるスナップショットから作成される。したがって、時間t2におけるスナップショットは今やソース・データとそのクローンとの間で共有されているので、時間t2におけるスナップショットは今や、共有スナップショットとも呼ばれる。この例には示されていないが、図示のクローンの他に1つまたは複数の他のクローンが、ソース・メタデータの時間t2におけるスナップショットから作成されてもよい。いくつかの実施形態では、各スナップショットには、そのスナップショットから作成されたクローンの総数を追跡する参照カウントが関連する。クローン作成操作が完了した後は、共有スナップショットの参照カウントが、スナップショットから作成された新しいクローンの数だけインクリメントされる。クローンが削除されたときは、クローンの作成元であった共有スナップショットに関連する参照カウントが1つデクリメントされる。いくつかの実施形態では、共有スナップショットが削除されるべきかどうかが決定されるとき、共有スナップショットの参照カウントが考慮される。例えば、スナップショットの参照カウントが0でない場合は、このスナップショットを削除することはできず、よって、クローンによって共有されるデータは保存される。
様々な実施形態で、クローン(例えば、VMのスナップショットの)の作成は、メタデータおよび/またはデータをコピーすることを必要としない。その代わり、新しいメタデータ・セットが、新しいクローンについて作成される。いくつかの実施形態では、新しいクローンについて作成された新しいメタデータ・セットは、次のうちの少なくとも1つまたは複数を含むことができる。すなわち、新しいファイル・グローバルID、現在スナップショット・インデックス(図示せず)、クローンの生成元であった共有スナップショットに関連する識別子、および、ソース・メタデータのセット(例えば、スナップショットのソース・シーケンス)に関連する識別子である。さらに、各クローンをソース・データの共有スナップショットに関連付ける情報が記憶される。例えば、各クローンをソース・データの共有スナップショットに関連付ける情報は、ソース・データに関連するスナップショットのシーケンスからの共有スナップショットである特定のスナップショットを識別する識別子(後でさらに詳細に述べる「スナップショット・グローバルID」)を含むことができる。スナップショット自体は、複数のファイル中のデータのスナップショットからなる場合がある。スナップショット・メタデータは、ファイル・グローバルIDの識別子を使用してファイルを識別し、ローカル・スナップショットIDを使用してファイルの当該スナップショットを識別する。クローンを共有スナップショットに関連付ける情報は、クローン・メタデータと共に、ソース・メタデータと共に、および/または他の場所に、記憶されてよい。例えば、関連付けデータは、クローンの作成元であった共有スナップショットのインデックスをポイントするのにクローンが使用することのできるポインタまたは別のタイプの参照である。共有スナップショットへのこのリンクを、クローンの読取中にトラバースすることができる。
スナップショットは、スナップショットが非クローンについて生成される方式と同じようにして、クローンについても生成することができる。図4の例では、クローンが作成された後、対応するインデックスによって表される時間t4におけるスナップショットが生成された(例えば、クローンに関連する現在スナップショット・インデックスを使用して)。クローンは、共有スナップショット(図4の例では時間t2におけるスナップショット)と、より古いスナップショットがあればそれら(図4の例では時間t1におけるスナップショット)とを含めた、ソース・データの各スナップショットを共有するので、時間t4におけるクローンのスナップショットは、共有スナップショットが作成された後に修正されたデータ(論理オフセット4におけるD)を含む。クローンは今や、ソースからクローニングしたデータ値Bおよびデータ値Aを含み(ソース・データの共有スナップショットに戻るポインタを介して)、また、クローン作成後にクローンに書き込まれてクローンのスナップショット中で取り込まれたデータ値Dも含む。ソース・データは、データDがクローンに書き込まれたこと、および/またはクローンのスナップショット中で取り込まれたことを意識していないことに留意されたい。
クローンのスナップショットの読取りを実施するには、まず、スナップショットのインデックスがアクセスされる。所望のデータがクローンのスナップショット・インデックス中にない場合は、クローンのスナップショットが時間を遡ってトラバース(検証)される。クローンのスナップショット・インデックスのうちの1つが、要求されたデータの論理ブロック・オフセットについてのマッピングを含む場合は、対応する物理アドレスからデータが読み取られて返される。しかし、クローンのスナップショット・インデックスのいずれにも所望のデータがない場合は、ソースのスナップショットが、クローンの基礎であった共有スナップショットから、時間を遡ってトラバースされる(すなわち、要求されたデータへのマッピングがソース・メタデータの共有スナップショット中で見つからない場合は、次に古いスナップショットへのリンクがトラバースされて検索され、以下同様となる)。第1の例では、クローンに対する読取操作が、オフセット4に関連する現在データを要求すると仮定する。まず、クローンの唯一のスナップショット、すなわち時間t4におけるスナップショット内で、オフセット4に関連するデータへのマッピングが検索される。時間t4におけるクローンのスナップショット中で、オフセット4に関連するマッピングが見つかり、検索は終了し、クローンのスナップショット・インデックスからのデータを使用して要求が処理される。第2の例では、クローンに対する読取操作が、オフセット1に関連するデータを要求すると仮定する。まず、クローンの唯一のスナップショット、すなわち時間t4におけるスナップショット内で、オフセット1に関連するデータへのマッピングが検索される。クローンの唯一のスナップショット、すなわち時間t4におけるスナップショット中でマッピングが見つからず、したがって、時間t4におけるクローンのスナップショットから共有スナップショットへのリンク(例えば、記憶済みの関連付けデータ)がトラバースされ、共有スナップショット、すなわち時間t2におけるスナップショット内の検索が実施される。共有スナップショット中でマッピングが見つからず、したがって、共有スナップショットから、次に古いスナップショット、すなわち時間t1におけるスナップショットへのリンクがトラバースされ、時間t1におけるスナップショット内の検索が実施される。ソース・データの時間t1におけるスナップショット中で、オフセット1に関連するマッピングが見つかり、検索は終了し、時間t1におけるスナップショットを使用して要求が処理される。したがって、ソース・データの時間t1におけるスナップショット中で見つかったマッピングを使用して、クローンに対する読取操作が処理される。第2の例に示すように、メタデータ(例えばスナップショット)が非クローンとそのクローンとの間で共有されてよく、したがって、いくつかの例では、ソース・データに関連するメタデータによって、クローンに対する読取操作を処理することができる。
図5は、ソース・システムおよび宛先システムに記憶できるスナップショットの例を示す図である。この例に示すように、他のスナップショット(例えばそのインデックス)に対する様々な異なる依存関係(例えば、それらにリンクする、それらをポイントする、または他の方法でそれらを参照する)を有するスナップショット(例えばそのインデックス)を、ソース・システムおよび宛先システムに記憶することができる。ソース・システムにも示されている次のスナップショット・シーケンスを考えてみる。
t3→t2→t1
ここで、時間t3におけるスナップショットは、その次に古い時間t2におけるスナップショットにリンクされ、時間t2におけるスナップショットは、その次に古い時間t1におけるスナップショットにリンクされる。
時間t1におけるスナップショットは、時間の始めから時間t1まで(時間t1を含む)にストレージ・システムに加えられた全ての変更を含む。
時間t2におけるスナップショットは、時間t2まで(時間t2を含む)に、ただし時間t1の後に加えられた変更を含む。
時間t3におけるスナップショットは、時間t3まで(時間t3を含む)に、ただし時間t2の後に加えられた変更があればそれらを含む。
この変更のセットが与えられれば、時間t1、t2、またはt3におけるデータの状態を、それらに対応するスナップショットを用いて再現することができる。
スナップショットを複製するとき、多くの従来アプローチは、各時点におけるデータの状態を「展開」する。いくつかの実施形態では、ある時点におけるデータの展開状態は、その時点において存在するかまたはアクセスされうる全てのデータ値を含み、通常、同じ時点におけるデルタ表現よりもはるかに長い(デルタ表現は、次に古いスナップショットが生成された後に加えられた変更のみを含む)。したがって、これらの従来アプローチは、デルタのみを送信するのではなく、時間t1におけるデータの完全な展開状態を送信し、次いで時間t2におけるデータの展開状態を送信し、以下同様にする。データの展開状態を送信する結果、デルタのみが送られる場合よりもはるかに多くの状態情報が送信され記憶される。他の従来システムは、状態間のデルタのみを送るが、デルタが時間順に、この例では最初にt1、次いでt2、次いでt3の順に、送られることを必要とする。さらに他の従来システムは、スナップショットおよびクローンを複製する際に用いることのできる順序とサブセットとのいずれかにおいて、他の重大な制約を課す場合がある。
特に、従来システムの順序付け制約のせいで、t1をスキップすること、もしくはt1をt2の後で送ることは不可能である場合があり、または、t1がt2の後で送られる場合は、デルタとしてではなく展開後にしか送ることができず、t2がt1の前に送られる場合は、デルタとしてではなく展開後にしか送ることができない場合がある。同様に、いくつかの従来システムでは、宛先上でt2を削除し、次いでt3をデルタとしてソースから送ることは不可能である場合がある。いくつかの従来システムは、t2が再び送られるまで、より新しいスナップショットを複製することができない場合がある。
いくつかの従来システム上では、ソースと宛先との間で複製するためのデルタを生成するのに使用できる共通のスナップショットがない限り、複製を継続することが全く不可能である場合がある。上の例で、ソースがt3およびt2のみを有し、宛先がt1のみを有する(t2は宛先から削除される)と仮定すると、t3をその最小限の形で複製するのは不可能な場合がある。共通のスナップショットを再確立するには通常、前に宛先上で削除されたスナップショットを、場合によっては完全に展開された形で、再送する必要がある。この場合、t2を宛先に再送する必要があるであろう。
さらに他の従来システム上では、データ・ポイントを失わずに複製を継続するのは不可能である場合がある。ソース・システムが時間t3におけるスナップショットを有し、宛先が時間t1におけるスナップショットを有するシステムを考えてみる。共通のスナップショットも、ソース・システムが送ることのできるインクリメンタルなデルタもないので、t3とt1とのいずれかを削除することなく複製を継続するのは不可能である場合がある。
前述のように、クローンは、「共有スナップショット」インデックスに依存する(例えば、それにリンクする、それをポイントする、または他の方法でそれを参照する)インデックスとして、表すことができる。図5に示す例では、時間t2におけるスナップショットから、クローンc1が作成される。
スナップショットは、任意の数のクローンによって共有されてよく、クローン自体がスナップショットを有することができ、これらのスナップショットは他のクローンによって共有されてよい。図5に示す例では、時間t1におけるスナップショットからクローンc11が作成され、c11から他のクローンc10およびc3が作成されてよい。
スナップショットと同様、ほとんどの従来型のアプローチは、クローンを展開状態として複製するか、または、クローン複製の際に用いることのできるサブセットまたは順序に対して制限を課す。特に、クローンが複製されると、これらのクローンはもはや共有スナップショットからのデルタとしては表されず、したがって、複製宛先において、データおよびメタデータのためにはるかに多くの空間を使用する。
スナップショットとクローニングと複製とを含む使用事例および操作の、完全なセットを考えることは、複雑である。例えば、スナップショットおよびクローンのセットを複製し、複製されたコピーからクローニングし、新しいクローンからスナップショットおよびクローンを作成し、次いで、これらの新しいスナップショットおよびクローンを複製して元のストレージ・システムに戻すことができる。特に、このようなスナップショットに源を発するかまたはこのようなスナップショットから後で導出されたスナップショットを複製して元のシステムに戻すことには、制約がある場合がある。他の際には、元のまたは導出されたスナップショットを複製して元のシステムに戻す結果として、最小限の表現が失われる場合がある。
従来システムが次の2つの特徴をサポートする場合、追加の複雑さが生じる。
スナップショットおよびクローンを、それらが作成された厳密な順序ではなく任意のサブセットまたは順序で複製すること。
スナップショットおよびクローンを、それらの複製ステータスにかかわらず任意の順序で削除すること。
このような条件下で、スナップショットおよびクローンを複製および記憶するための最小限の表現を保存することは、極めて困難である。
本明細書に記載の実施形態によれば、スナップショットおよびクローンの複製を、変更またはデルタとして表される最小限の量の情報を使用して実施することができ、また、複製するストレージ・システム間で伝送および記憶することができる。以下では、一般性を失うことなく、用語「スナップショット」は、非クローン・スナップショットおよびクローン・スナップショットをまとめて指す。しかし、用語「クローン」は、非クローン・スナップショットではなくクローン・スナップショットを特に指す。
図6は、ストレージ・システム間でスナップショットの複製を実施するためのシステムの一実施形態を示す図である。この例に示すように、システム600は、第1のストレージ・システム602、ネットワーク604、第2のストレージ・システム606、およびスナップショット複製システム608を含む。ネットワーク604は、高速データ・ネットワークおよび/または遠隔通信ネットワークを含む。いくつかの実施形態では、第1のストレージ・システム602および第2のストレージ・システム606の各々は、図1のシステム100のストレージ・システム102を用いて実装される。第1のストレージ・システム602および第2のストレージ・システム606は、ネットワーク604を介して、相互におよびスナップショット複製システム608に通信することができる。
第1のストレージ・システム602および第2のストレージ・システム606は、同じデータ・セットに関連する対応するスナップショット・シーケンスをそれぞれ記憶することができる。例えば、データ・セットは、VM、Vディスク、またはファイルに関連するものである場合がある。ある例示的なシナリオでは、第1のストレージ・システム602と第2のストレージ・システム606の両方が、同じデータ・セットに関連するスナップショットを維持することになるが、このシナリオでは、第1のストレージ・システム602は生産システムに関連し、構成された間隔ごとにデータ・セットのスナップショットを生成するように構成される。第1のストレージ・システム602は、新たに作成された各スナップショットのコピーを記憶し、バックアップ・システムである第2のストレージ・システム606にスナップショットのコピーを送ることになる。
しかし、第1のストレージ・システム602と第2のストレージ・システム606とは両方とも、同じデータ・セットに関連する対応するスナップショット・インデックス・シーケンスをそれぞれ記憶することができるが、第1のストレージ・システム602と第2のストレージ・システム606との各々は、同じデータ・セットについて、必ずしも同じポイント・イン・タイム・データ状態を表すスナップショット・インデックスを記憶するとは限らない。例えば、上記と同じシナリオで、生産システムである第1のストレージ・システム602は、その記憶済みスナップショットの少なくともいくつかについては、第2のストレージ・システム606よりも短い保持ポリシを有する場合がある(例えば、生産システムではストレージ空間がより乏しいので)。したがって、生産システムである第1のストレージ・システム602は、その記憶済みスナップショット・シーケンス中で、削除予定のスナップショットのインデックスを隣接スナップショットのインデックスにマージし、次いで、削除予定のスナップショットのインデックスを削除することがある。スナップショット・インデックスのシーケンスからスナップショット・インデックスを削除した後、第1のストレージ・システム602において、このスナップショット・インデックスの除去に適応するように、削除されたスナップショット・インデックスに前に隣接していたスナップショット・インデックスに関連する記憶済みの物理的依存関係を変更することができる。生産システムである第1のストレージ・システム602は、そのシーケンスからスナップショット・インデックスを削除した(例えば、このスナップショットに関連する保持ポリシを施行するために)かもしれないが、バックアップ・システムである第2のストレージ・システム606は、このスナップショットのコピーをまだ維持することができる。生産システムである第1のストレージ・システム602がそのスナップショット・シーケンスからスナップショットを削除した後しばらくして、削除されたスナップショットを第1のストレージ・システム602で複製して戻すことが望まれることがある。例えば、災害復旧の場合、または、スナップショットに関連する、より前のポイント・イン・タイム・データ状態への逆戻りが望まれる場合に、ストレージ・システムでスナップショットが複製されることが望まれることがある。したがって、所望のスナップショットに関連するポイント・イン・タイム・データ状態を第1のストレージ・システム602で表すのに使用できるスナップショット・データのセット(例えばインデックス)を、バックアップ・システムである第2のストレージ・システム606から、生産システムである第1のストレージ・システム602に送ることができる。いくつかの実施形態では、スナップショット・データのセットは、ソース・システム(この例では第2のストレージ・システム606)に記憶された2つのスナップショット・インデックス間のデルタを含む。後でさらに詳細に述べるように、第2のストレージ・システム606によって送られたスナップショット・データのセットを使用して、所望のスナップショットに関連するポイント・イン・タイム・データ状態を表すためのスナップショット・インデックスを生成することができ、次いで、このスナップショット・インデックスを、第1のストレージ・システム602に記憶されたスナップショット・インデックスのシーケンスに挿入することができる。同様に、所望のスナップショットを、第1のストレージ・システム602から複製し、第2のストレージ・システム606に記憶されたスナップショットのシーケンスに挿入することもできる。
あるシステムから別のシステムにスナップショットを複製するとき、順序付け、すなわち、異なるシステムによって維持されるスナップショット間の新旧関係を、各スナップショットに関連する識別情報を使用して推定することができる。各スナップショットに関連する識別情報の例には、次のものが含まれる。
各スナップショットに関連する「スナップショット・グローバルID」は、次の2つの識別子の組合せ(例えば連結)を含む。すなわち、1)「作成側ファイル・システムID」、および、2)「作成側スナップショットID」である。「作成側ファイル・システムID」は、スナップショットを作成したストレージ・システムの、(例えば64ビットの)グローバルな一意の識別子を含む。いくつかの実施形態では、いくつかの異なるストレージ・システムが、データ・セットに関連するスナップショットを記憶することができるが、このデータ・セットからクローンを作成したストレージ・システムのみが、このクローンについての新しいスナップショットを生成することができる。しかし、他のストレージ・システムは、前述のクローンのスナップショットに基づいて新しいクローンを作成し、この新しいクローンについての新しいスナップショットを作成することができる。図6において、いくつかの実施形態では、第1のストレージ・システム602と第2のストレージ・システム606とは両方とも、同じデータ・セットに関連する対応するスナップショット・シーケンスをそれぞれ記憶することができるが、この例では、第1のストレージ・システム602のみが、このデータ・セットについての新しいスナップショットを生成することができると仮定する。「作成側スナップショットID」は、新しいスナップショットがストレージ・システム上で作成されるたびにインクリメントされるカウンタを記憶することによって決定される、(例えば64ビットの)識別子を含む。したがって、より新しいスナップショットはまた、同じストレージ・システムによって作成されたより古いスナップショットよりも高い作成側スナップショットIDを有することになる。スナップショットの「スナップショット・グローバルID」は、スナップショットに関連する時点におけるデータ・セットの「展開」状態を一意に識別する。すなわち、同じスナップショット・グローバルIDを有する、2つの異なるストレージ・システム上のスナップショットの2つの「コピー」は、同じ展開状態に対応する。しかし、同じスナップショット・グローバルIDに関連するスナップショットは、異なるストレージ・システムでは、これらのストレージ・システムに記憶された同じシーケンスの他のスナップショットに応じて、異なる物理表現(例えばインデックス)を使用して表されることがある。例えば、作成側ファイル・システムID「PRODUCTION1」を有するストレージ・システムが、それぞれの作成側スナップショットID「S1、「S2」、および「S3」を有するスナップショットのシーケンスを作成した場合は、スナップショットのシーケンスのスナップショット・グローバルIDは「PRODUCTION1−S1」、「PRODUCTION1−S2」、および「PRODUCTION1−S3」になると仮定する。これらのスナップショットのうちの1つまたは複数が削除されたとしても、スナップショット・グローバルIDの使用により、任意のストレージ・システムまたはスナップショット複製システム608が、3つのスナップショットの順序付け関係を決定することができる。スナップショット・グローバルIDを管理することで、各ストレージ・システムは、「次に新しい」関係のグラフを構築することができ、このグラフは、スナップショットを展開状態ではなくデルタとして効率的に複製および記憶するのに使用することができる。
各スナップショットに関連する「スナップショット・ファイル・グローバルID」は、次の3つの識別子の組合せ(例えば連結)を含む。すなわち、1)「作成側ファイル・システムID」、2)「作成側スナップショットID」、および、3)「ファイル・グローバルID」である。「スナップショット・ファイル・グローバルID」の「作成側ファイル・システムID」および「作成側スナップショットID」は、前述の「スナップショット・グローバルID」の場合と同じである。「ファイル・グローバルID」は、スナップショットが関連するデータ・セットの識別子を含む。例えば、ファイル・グローバルIDは、スナップショットが関連する前述のデータ・セットのいずれかの、特定のファイルまたはVディスクまたはクローニングされたファイルを識別することができる。ファイル・グローバルIDを使用して、どのスナップショットがどのスナップショット・シーケンスおよび/またはメタデータ・セットに属するかを決定することができる。例えば、同じ作成側ファイル・システムIDに関連するが、異なる作成側スナップショットIDに関連する2つのスナップショットのファイル・グローバルIDは、2つのスナップショットが2つの異なるスナップショット・シーケンスに属し、一方は特定のVMに属し他方はこのVMのクローンに属する、と決定する助けとなることができる。
第1のストレージ・システム602および第2のストレージ・システム606の各々に記憶された各スナップショットに関連する前述の識別情報は、第1のストレージ・システム602、第2のストレージ・システム606、およびスナップショット複製システム608のうちの1つまたは複数によって記憶されてよい。識別情報を、第1のストレージ・システム602、第2のストレージ・システム606、およびスナップショット複製システム608のうちの少なくとも1つによって使用して、どのスナップショットがどのシステムに記憶されているかを決定することができ、また、スナップショットの順序付けを推定することもできる。したがって、どのストレージ・システムがスナップショットを作成したか、および/またはスナップショットが複製される順序にかかわらず、このような識別情報を使用して、第1のストレージ・システム602から第2のストレージ・システム606への、およびその逆の、スナップショットの複製を実施することができる。このような識別情報を使用してまた、スナップショットをシステムに記憶されたシーケンス中に複製するときに、このシステムにおけるシーケンス中のスナップショット間の新旧関係を保存することができる。スナップショット複製システム608は、必ずしもスナップショットを記憶しなくてもよいが、所望のスナップショットを宛先システムで複製するためにソース・システムから宛先システムに送られるべきスナップショット・データのセットを決定するように構成されてよい。
スナップショットが常に最も効率的な方式で複製されることを保証するために、スナップショットが全てのシステムから削除されたときにのみ、識別情報を刈り込むことができる。しかし、いくつかの実施形態では、いくらかの情報は、その情報を保持する利益が低いと見なされるときには刈り込むことができる。
以下の様々な例では、例示の目的で、全てのスナップショットが同じ作成側ファイル・システムIDおよびファイル・グローバルIDに関連すると仮定し(別途明記されない限り)、したがって、スナップショットからアクセス可能な展開状態(すなわちポイント・イン・タイム・データ状態)は、作成側スナップショットIDによって一意に示され、作成側スナップショットIDは、「時間tにおけるスナップショット<作成側スナップショットID>」または「tにおけるスナップショット<作成側スナップショットID>」のフォーマットで書かれたものとすることができる。
図7は、同じ展開データ状態に関連するスナップショット・インデックスが、異なるストレージ・システムでどのように異なる場合があるかに関する例を示す図である。この例では、第1のシステムは、特定のデータ・セット(例えば、VM、Vディスク、またはファイル)に関連する3つのスナップショットのシーケンスを記憶し、第2のシステムは、同じデータ・セットに関連する2つのスナップショットのシーケンスを記憶する。各スナップショットは、論理オフセット(例えば1、2、3、または4)を、対応する物理オフセットに記憶されたデータ値にマッピングするインデックスとして表される。
第1のシステムからアクセスできるデータ・セットの展開状態(すなわちポイント・イン・タイム状態)は、時間t1におけるスナップショット、時間t2におけるスナップショット、および時間t3におけるスナップショットを含む。図7の例に示すように、第1のシステムにおける、時間t1におけるスナップショット、時間t2におけるスナップショット、および時間t3におけるスナップショットに関連するそれぞれのインデックスの各々は、次に古いスナップショットにリンクし返す(例えば、物理的に依存する)(例えば、時間t3におけるスナップショットは時間t2におけるスナップショットにリンクし、時間t2におけるスナップショットは時間t1におけるスナップショットにリンクする)。
第2のシステムからアクセスできるデータ・セットの展開状態(すなわちポイント・イン・タイム状態)は、時間t1におけるスナップショット、および時間t3におけるスナップショットを含む。例えば、第2のシステムは、時間t2におけるスナップショットのコピーを前に記憶したが、次いで、時間t2におけるスナップショットを削除することを決定した場合がある。第2のシステムは、時間t2におけるスナップショットのそのコピーを削除する前に、時間t2におけるスナップショットに関連するインデックスからのデータを、時間t3におけるそのスナップショットに関連するインデックス704にマージした。したがって、第2のシステムに記憶された時間t3におけるスナップショットに関連するインデックス704は、時間t2におけるスナップショットからのデータ(例えば、データ値Bへのオフセット2のマッピング)を含み、また、第2のシステムにおける、時間t1におけるスナップショットに関連するインデックスにリンクするように修正される。
第1と第2のシステムは両方とも、時間t3におけるスナップショットからアクセス可能なデータ・セットの展開状態を記憶しているが、各システムに異なるスナップショットが存在するので、2つのシステムの各々で時間t3におけるスナップショットを表すのに使用されるそれぞれのスナップショット・インデックスは異なることに留意されたい。第1のシステムに記憶された時間t3におけるスナップショットは、インデックス702によって表され、第2のシステムに記憶された時間t3におけるスナップショットは、インデックス704によって表される。第1のシステムにおける、時間t3におけるスナップショットのインデックス702は、データ値Cへのオフセット3のマッピングのみを含むが、このインデックス702は、第2のシステムにおける、時間t3におけるスナップショットのインデックス704とは異なり、インデックス704は、データ値Bへのオフセット2のマッピング、およびデータ値Cへのオフセット3のマッピングを含む。というのは、時間t3におけるスナップショットのインデックス702は、時間t2におけるスナップショットに関連するインデックスにリンクし、一方、時間t3におけるスナップショットのインデックス704は、時間t1におけるスナップショットに関連するインデックスにリンクするからである。このように、異なるシステムに、同じデータ・セットに関連する異なるスナップショット(例えば、したがって、スナップショット間における異なる依存関係)が存在するせいで、同じ展開状態に関連するスナップショットが、異なるシステムで異なるインデックスを使用して表される場合がある。
以下の様々な例で述べるように、スナップショットが宛先システムで複製され、宛先システムにおける既存のスナップショット・シーケンスに挿入された後、ソース・システムと宛先システムは両方とも、このスナップショットのコピーを記憶していることになるが、各システムは、システムが記憶している他のスナップショットに応じて、このスナップショットを表すための異なる物理表現(例えばインデックス)を記憶する場合がある。
図8は、ソース・システムから宛先システムに対する選択されたスナップショットの複製を実施するプロセスの一実施形態を示す流れ図である。いくつかの実施形態では、プロセス800のソース・システムおよび宛先システムは、それぞれ図6のシステム600の第1のストレージ・システム602および第2のストレージ・システム606、またはそれぞれ第2のストレージ・システム606および第1のストレージ・システム602を使用して、実装されてよい。いくつかの実施形態では、プロセス800は、図6のシステム600の第1のストレージ・システム602、第2のストレージ・システム606、またはスナップショット複製システム608で実装される。
802において、第1の時点におけるデータ・セットの状態を宛先システムで表すためのスナップショット・データを宛先システムに記憶する要求が受信される。第1の時点におけるデータ・セットの状態をソース・システムで表す第1のソース・システム・スナップショット・データは、第2の時点におけるデータ・セットの状態をソース・システムで表す第2のソース・システム・スナップショット・データに依存する。
例えば、対応する時点(すなわち展開状態)によって識別される、ソース・システムに記憶されたスナップショット(例えば、スナップショット・グローバルIDやスナップショット・ファイル・グローバルIDなどの識別情報に関連する)が、宛先システムで複製されるように選択される(例えば、システム管理者および/またはコンピュータ・プログラムによって)。ソース・システムにおける選択されたスナップショットのスナップショット・データ(例えば、インデックスまたは他のタイプの物理表現)は、ソース・システムに記憶されているスナップショット・データ(例えばインデックス)のシーケンス中の、次に古いスナップショットのスナップショット・データ(例えば、インデックスまたは他のタイプの物理表現)に依存する。選択されたスナップショットのスナップショット・インデックスが、次に古いスナップショットのスナップショット・インデックスに依存することは、選択されたスナップショットのスナップショット・インデックスに記憶されたデータが、次に古いスナップショットのスナップショット・インデックスの生成時に対して、新しい/修正されたデータを含むことを示す。いくつかの実施形態では、選択されたスナップショットは、特定の時間順で複製される必要はない。言い換えれば、選択されたスナップショットが複製されるのは、次に古いスナップショットが複製された後でなければならない必要はない。
804において、第1の時点におけるデータ・セットの状態を宛先システムで表すためのスナップショット・データが決定される。このスナップショット・データは、第1のソース・システム・スナップショット・データと、第3の時点におけるデータ・セットの状態を宛先システムで表す宛先システム・スナップショット・データとを含むデータに、少なくとも部分的に基づいて決定される。
宛先システムにおける既存のスナップショットの時点(すなわち展開状態)を識別して(例えば、記憶済みの識別情報を使用して)、ソース・システムにおける選択されたスナップショットと、宛先システムにおける既存のスナップショットとの間の、新旧関係、および/または時点差関係を決定する助けとすることができる。このような順序付け関係を使用して、どのように(例えば効率的に)データをソース・システムから送って選択されたスナップショットを宛先システムで複製することができるかを決定することができる。ソース・システムから宛先システムに送られると決定されたスナップショット・データ(例えばインデックス)は、メタデータ(例えば、基礎をなすデータへの論理マッピング)と、基礎をなすデータとを含むことができる。様々な実施形態で、ソース・システムから宛先システムに送られると決定されたスナップショット・データは、選択されたスナップショットのスナップショット・インデックスと、ソース・システムに記憶された別のスナップショットのスナップショット・インデックスと、に少なくとも部分的に基づいて決定されたデルタを含む。例えば、この別のスナップショットは、選択されたスナップショットが依存する(例えばリンクする)スナップショットであってよい。従来行われているように、スナップショット・データ(例えばインデックス)間のデルタを送ることは、スナップショットの展開状態を送るよりもはるかに効率的である。いくつかの場合では、より古いスナップショットではなくより新しいスナップショットと比較することによって、より小さいデルタを生み出すことができる。いくつかの実施形態では、スナップショット・データを宛先システムにおける既存のスナップショット・シーケンスに挿入することは、スナップショット・データに対して既存のスナップショットのスナップショット・インデックスからエントリを除去すること(リファクタリング、これについては後でさらに詳細に述べる)、新しいスナップショット・データ(例えばインデックス)を宛先システムにおけるスナップショット・データ・シーケンスに追加して、選択されたスナップショットに関連するポイント・イン・タイム・データ状態を宛先システムで表すこと、および/または、新しいスナップショット・インデックスの追加に適応するように、宛先システムにおけるスナップショット・データ・シーケンスにおいてスナップショット・インデックスの依存関係を変更すること、を含む。
図9Aおよび9Bは、時間t2におけるスナップショットをソース・システムから宛先システムに複製する例を示す図である。図9Aに示すように、ソース・システムにおけるスナップショット・シーケンスは、時間t1におけるスナップショットにリンクする、時間t2におけるスナップショットを含む。時間t2におけるスナップショットは、ソース・システムでインデックス904によって表されることに留意されたい。また、図9Aに示すように、時間t2におけるスナップショットが複製される前、宛先システムにおけるスナップショット・シーケンスは、時間t1におけるスナップショットにリンクする、時間t3におけるスナップショットを含む。時間t2におけるスナップショットが複製される前、時間t3におけるスナップショットは、宛先システムでインデックス902によって表されることに留意されたい。時間t2におけるスナップショットの複製前、時間t3におけるスナップショットのインデックス902は、時間t3まで(時間t3を含む)かつt1後の全ての変更を含み、これは、データ値A(時間t3で記憶された)へのオフセット1のマッピング、およびデータ値C(時間t2で記憶された)へのオフセット3のマッピングを含む。時間t3におけるスナップショットの複製を実施する際、宛先システムで、時間t2におけるスナップショットに関連するインデックスが、時間t3におけるスナップショットと時間t1におけるスナップショットとの間で「スプライス(splice)」されることが必要になる。様々な実施形態で、「スプライシング(splicing)」は、スナップショットがスナップショット・シーケンスに挿入されるためのプロセスである。スナップショットは、シーケンスの2つの既存スナップショット間の中間スナップショットとして、またはシーケンス中の最も新しいスナップショットとして、またはシーケンス中の最も古いスナップショットとして、スプライスされる可能性がある。スプライシングは、スプライスされるスナップショットにシーケンス中で隣接することになるより新しい既存スナップショットを、スプライスされるスナップショットに依存させる(例えば、それにリンクさせる、それをポイントさせる、かつ/または他の方法でそれを参照させる)ように、スナップショット間の物理的依存関係を変更することを含む。スプライシングはまた、スプライスされるスナップショットを、スプライスされるスナップショットにシーケンス中で隣接することになるより古い既存のスナップショットに依存させることを含む。
ソース・システムと宛先システムとのいずれかもしくは両方、および/または第3のシステム(例えばスナップショット複製システム)によって記憶された識別情報から、どの時点(例えば展開状態)に関連するスナップショットがすでに宛先システムに記憶されているか、およびそれらが選択されたスナップショットに対してシーケンス中でどの順序になるかを決定することができる。宛先システムが時間t1におけるスナップショットをすでに記憶していることを考えれば、ソース・システムから宛先システムに送信するデータの量を最小限に抑えるために、ソースは、ソース・システムにおける時間t2におけるスナップショットと、ソース・システムにおける時間t1におけるスナップショットとの間のデルタを送ることができる。ソース・システムにおける時間t2におけるスナップショットと時間t1におけるスナップショットとの間のこのデルタは、図9Bのインデックス904によって表すことができる。(ソース・システムにおける時間t2におけるスナップショットに関連するインデックス904が、時間t1におけるスナップショットの生成以後の変更のみをすでに含むことを考えれば、したがって、ソース・システムにおける時間t2におけるスナップショットと、ソース・システムにおける時間t1におけるスナップショットとの間のデルタは、ソース・システムにおける時間t2におけるスナップショットを表すために使用されるインデックスと同じである。)
インデックス904によって表される、ソース・システムにおける時間t2におけるスナップショットと時間t1におけるスナップショットとの間のデルタは、ソース・システムから宛先システムに送られ、宛先システムで、既存のスナップショット・シーケンス中の時間t3におけるスナップショットと時間t1におけるスナップショットとの間にスプライスされて、時間t2におけるスナップショットが表される。宛先システムにおける、時間t3におけるスナップショットのインデックス902は、時間t3まで(時間t3を含む)かつt1後の全ての変更を含んでいたので、宛先システムでインデックス904が挿入された後、宛先システムで、時間t3におけるスナップショットを表すインデックス902と時間t2におけるスナップショットを表すインデックス904との間の冗長エントリを、インデックス902から除去する必要がある。したがって、本明細書に記載の複製は、宛先で複製スナップショット・データを「リファクタリング」することによって、宛先システム上にすでに存在するスナップショットを利用することができる。様々な実施形態で、「リファクタリング」は、宛先システムの複製スナップショットと既存の隣接スナップショットとの間で、より新しいスナップショットとより古いスナップショットとのいずれかから冗長メタデータ・エントリが除去されるためのプロセスである。冗長エントリはしばしば、異なるシステムでスナップショットが複製されて既存のスナップショット・シーケンスにスプライスされるときに、生み出される。複製スナップショット、および隣接する既存のより新しいまたはより古いスナップショットは、複製スナップショットと同じエントリをいくつか含むことになる場合があり、それにより、複製スナップショットまたはそれに隣接する既存スナップショットの、インデックス中の共有エントリが冗長になる。図9Bに示すように、宛先で時間t2におけるスナップショットが複製された後、データ値Cへのオフセット3のマッピングに関連するエントリは、宛先システムにおける時間t3におけるスナップショットを表すインデックス902から除去される。というのは、同じエントリが、宛先システムにおけるより古い既存スナップショット、すなわち時間t2におけるスナップショットを表すインデックス904中にすでに存在するからである。
複製後、宛先システムでは、スナップショット・シーケンスは、時間t3におけるスナップショット(時間t2におけるスナップショットにリンクするように修正された)と、時間t2におけるスナップショット(時間t1におけるスナップショットにリンクするように修正された)と、時間t1におけるスナップショットとを含む。このように、宛先システムへのスナップショットの複製は、宛先システムにおけるシーケンスのスナップショット間の物理的依存関係を修正することができる。
図10Aおよび10Bは、時間t3におけるスナップショットをソース・システムから宛先システムに複製する例を示す図である。図10Aに示すように、ソース・システムにおけるスナップショット・シーケンスは、時間t1におけるスナップショットにリンクする、時間t3におけるスナップショットを含む。また、図10Aに示すように、時間t3におけるスナップショットが複製される前、宛先システムにおけるスナップショット・シーケンスは、時間t1におけるスナップショットにリンクする、時間t2におけるスナップショットを含む。時間t3におけるスナップショットは、ソース・システムでインデックス1002によって表されることに留意されたい。時間t3におけるスナップショットの複製前、時間t3におけるスナップショットのインデックス1002は、時間t3まで(時間t3を含む)かつt1後の全ての変更を含み、これは、データ値A(時間t3で記憶された)へのオフセット1のマッピング、およびデータ値C(時間t2で記憶された)へのオフセット3のマッピングを含む。時間t3におけるスナップショットの複製を実施する際、宛先システムで、時間t3におけるスナップショットに関連するインデックスが、時間t2におけるスナップショットにリンクするように「スプライス」されることが必要になる。
ソース・システムと宛先システムとのいずれかもしくは両方、および/または第3のシステム(例えばスナップショット複製システム)によって記憶された識別情報から、どの時点(例えば展開状態)に関連するスナップショットがすでに宛先システムに記憶されているか、およびそれらが選択されたスナップショットに対してシーケンス中でどの順序になるかを決定することができる。理想的には、ソース・システムは、時間t3におけるスナップショットと時間t2におけるスナップショットとの間のデルタを生成することになるが、ソースは、時間t2におけるスナップショットを有さない。この場合、ソースは、時間t1におけるスナップショット、すなわち、ソース・システムと宛先システムの両方に記憶されている、時間t3におけるスナップショットよりも古い一番最近のスナップショットに対して、デルタを生成することができる。時間t3におけるスナップショットと時間t1におけるスナップショットとの間のこのデルタは、図10Bのインデックス1002によって表すことができる。(ソース・システムにおける時間t3におけるスナップショットに関連するインデックス1002が、時間t1におけるスナップショットの生成以後の変更のみをすでに含むことを考えれば、したがって、ソース・システムにおける時間t3におけるスナップショットと、ソース・システムにおける時間t1におけるスナップショットとの間のデルタは、ソース・システムにおける時間t3におけるスナップショットを表すのに使用されるインデックスと同じである。)
デルタが宛先で受け取られると、デルタは、宛先システムにおける時間t2におけるスナップショットをポイントするようにスプライスされる。次いで、宛先システムにおける時間t3におけるスナップショットを表すようにリファクタリングされてインデックス1004が生み出されるが、これは、宛先システムにおける既存のより古いスナップショット(インデックス1006によって表される、時間t2におけるスナップショット)と共通のエントリを、インデックス1002を構成するデルタから除去することによって、行われる。図10Bに示すように、宛先で時間t3におけるスナップショットが複製された後、データ値Cへのオフセット3のマッピングに関連するエントリが、インデックス1002を構成するデルタから除去されて、時間t3におけるスナップショットを表すようにインデックス1004が生み出される。というのは、同じエントリが、時間t2におけるスナップショットを表すインデックス1006中にすでに存在するからである。
いくつかの実施形態では、宛先システムにおける時間t3における複製スナップショット(すなわち、インデックス1002を構成するデルタ)を、時間t2におけるスナップショットに対してリファクタリングすることはまた、デルタが宛先で受け取られるのに伴って行われてもよい。言い換えれば、リファクタリングは、スナップショット・データの完全なセット(デルタ)(論理から物理へのオフセット・マッピングと、それらがマッピングする基礎をなすデータとを含む)がソースから宛先に完全に送られる前に実施されてもよい。例えば、図10Bを参照すると、宛先システムにおける時間t2におけるスナップショットを表すインデックス1006と共通の、デルタ・スナップショット・インデックス1002の各オフセットにつき、オフセットがポイントする基礎をなすデータをソース・システムから送る前に、デルタ・スナップショット・インデックス1002中のオフセットによってポイントされる基礎をなすデータに関連するフィンガプリントが、インデックス1006中の同じオフセットによってポイントされる基礎をなすデータに関連するフィンガプリントと一致するかどうかを決定することができる。2つのフィンガプリントが一致する場合は、2つのオフセット・エントリは冗長であると決定され、したがって、このエントリは、宛先システムで時間t3におけるスナップショットを表すのに使用されるインデックス1004から除外され、また、冗長オフセットによってポイントされる基礎をなすデータは、ソース・システムから送られない。言い換えれば、複製は、リファクタリングが実施される前に完了する必要はない。
別の実施形態では、宛先システムは、時間t2におけるスナップショットの一時的なコピーをソース・システムに送ることもでき(例えば、時間t2におけるスナップショットと時間t1におけるスナップショットとの間のデルタとして)、ソース・システムは、この一時的なコピーを使用して、時間t3におけるスナップショットと時間t2におけるスナップショットとの間のデルタを生成することができる。次いで、時間t3におけるスナップショットと時間t2におけるスナップショットとの間のデルタが、ソース・システムから送られて、宛先システムで時間t2におけるスナップショットをポイントするようにスプライスされてよい。
図11Aおよび11Bは、時間t3におけるスナップショットをソース・システムから宛先システムに複製する別の例を示す図である。この例では、時間t1、t2、およびt3におけるスナップショットが、同じスナップショット・シーケンスの一部として逐次的に作成された。いくつかの実施形態では、「共通スナップショット」は、ソース・システムでそれに対してデルタが生成され宛先システムでそれに対してデルタがスプライスされるスナップショットとしての、ポイント・イン・タイム・スナップショットを指す。図11Aに示すように、時間t3におけるスナップショットが複製される前、ソースは、時間t3におけるスナップショットおよび時間t1におけるスナップショットのみを有し、宛先は、時間t2におけるスナップショットのみを有する。言い換えれば、時間t3におけるスナップショットが複製される前、ソース・システムと宛先システムとは、時間t2におけるスナップショットの共通スナップショットを有さない。時間t3におけるスナップショットは、ソース・システムでインデックス1102として表されることに留意されたい。時間t3におけるスナップショットの複製前、ソース・システムにおける時間t3におけるスナップショットのインデックス1102は、時間t3まで(時間t3を含む)かつt1後の全ての変更を含み、これは、データ値B(時間t3において記憶された)へのオフセット2のマッピング、およびデータ値D(時間t2において記憶された)へのオフセット4のマッピングを含む。時間t3におけるスナップショットの複製を実施する際、宛先システムで、時間t3におけるスナップショットに関連するインデックスが、時間t2におけるスナップショットにリンクするように「スプライス」されることが必要になる。この例では、ソース・システムにおける時間t3におけるスナップショットのインデックス1102は、ソース・システムにおける時間t1におけるスナップショットのインデックスに対してリファクタリングされていない。というのは、これらのインデックスは両方とも、データ値Bへのオフセット2のマッピングを含むからである。しかし、後でさらに述べるように、時間t2におけるスナップショットの共通スナップショットがソース・システム上と宛先システム上とにないということから、ソース・システムにおける隣接スナップショット・インデックスにある、同じオフセットに関連する同じデータ値を保存し、これらを、ソース・システムでデルタを生成する際に使用することができる。
ソース・システムと宛先システムとのいずれかもしくは両方、および/または第3のシステム(例えばスナップショット複製システム)によって記憶された識別情報から、どの時点(例えば展開状態)に関連するスナップショットがすでに宛先システムに記憶されているか、およびそれらが選択されたスナップショットに対してシーケンス中でどの順序になるかを決定することができる。この場合、ソースは、時間t1におけるスナップショットに対する、時間t3におけるスナップショットのデルタを生成する。時間t3におけるスナップショットと時間t1におけるスナップショットとの間のこのデルタは、図10Bのインデックス1102によって表すことができる。(ソース・システムにおける時間t3におけるスナップショットに関連するインデックス1102が、時間t1におけるスナップショットの生成以後の変更のみをすでに含むことを考えれば、したがって、ソース・システムにおける時間t3におけるスナップショットと、ソース・システムにおける時間t1におけるスナップショットとの間のデルタは、ソース・システムにおける時間t3におけるスナップショットを表すのに使用されるインデックスと同じである。)ソース・システムと宛先システムとが時間t2におけるスナップショットの共通スナップショットを有さないこの場合では、デルタは、データ値が同じであっても、時間t3とt1におけるスナップショット間で修正された全ての「オフセット」を含まなければならないことに留意されたい。特に、同じオフセットが時間t1、t2、およびt3におけるスナップショットにおいて修正され、したがって、時間t1とt3におけるスナップショット中のデータ値は同じだが、時間t2におけるスナップショット中では異なる、ということがあり得る。このような場合、時間t3とt1におけるスナップショット間のデータ値を比較しても変化が検出されないことになるが、時間t3におけるスナップショットを作成するためには、このデータ値がt2におけるスナップショットに適用されなければならない。時間t3とt1におけるスナップショット間で修正された全てのオフセットを含めることによって、時間t2とt1におけるスナップショット間で修正されたどんなオフセットもまた含められるのを確実にすることに留意されたい。
図11Aに示すように、ソース・システムでは、時間t1および時間t3におけるスナップショットがオフセット2について同じデータ値Bを記憶しているにもかかわらず、時間t1におけるスナップショットが生成されたときと、時間t3におけるスナップショットが生成されたときとの間に、オフセット2が修正された。ソース・システムと宛先システムとが時間t2におけるスナップショットの共通スナップショットを有さないということから、オフセット2におけるデータ値が時間t1とt3における両方のスナップショット中で同じであるにもかかわらず、ソース・システムにおける時間t3におけるスナップショットと、ソース・システムにおける時間t1におけるスナップショットとの間のデルタに関連するインデックス1102は、オフセット2を含む。
対照的に、共通スナップショットがあるときは、前の例で述べたように、2つのスナップショット間で同じであるデータ値については、対応するオフセットがより新しいスナップショット中で修正されたとしても、デルタはこのデータ値を除外することができる。
デルタが宛先で受け取られると、デルタは、宛先システムにおける時間t2におけるスナップショットをポイントするようにスプライスされる。次いで、宛先システムにおける時間t3におけるスナップショットを表すようにリファクタリングされるが、これは、宛先システムでインデックス1104によって表される時間t2におけるスナップショットと共通のエントリを、インデックス1102を構成するデルタから除去することによって、行われる。図11Bに示すように、宛先で時間t3におけるスナップショットが複製された後、データ値Dへのオフセット4のマッピングに関連するエントリが、時間t3におけるスナップショットを表すインデックス1102から除去される。というのは、同じエントリが、宛先システムで時間t2におけるスナップショットを表すインデックス1104中にすでに存在するからである。いくつかの実施形態では、リファクタリングは、宛先システムで時間t3におけるスナップショットの複製が完了する前に実施されてもよい。
図12Aおよび12Bは、時間t4におけるスナップショットをソース・システムから宛先システムに複製する別の例を示す図である。この例では、時間t1、t2、t3、およびt4におけるスナップショットが、同じスナップショット・シーケンスの一部として逐次的に作成された。しかし、図12Aに示すように、時間t4におけるスナップショットが複製される前、ソースは、時間t4、t3、t2、およびt1におけるスナップショットを有し、宛先は、時間t2におけるスナップショットおよび時間t1におけるスナップショットのみを有する。
ソース・システムと宛先システムとのいずれかもしくは両方、および/または第3のシステム(例えばスナップショット複製システム)によって記憶された識別情報から、どの時点(例えば展開状態)に関連するスナップショットがすでに宛先システムに記憶されているか、およびそれらが選択されたスナップショットに対してシーケンス中でどの順序にあるかを決定することができる。宛先システムが時間t2におけるスナップショットをすでに記憶しているということから、ソース・システムから宛先システムに送信するデータの量を最小限に抑えるために、一例では、ソースは、ソース・システムにおける時間t4におけるスナップショットと、ソース・システムにおける時間t2におけるスナップショットとの間のデルタを送ることができる。時間t2におけるスナップショットに対する、時間t4におけるスナップショットのデルタを生成する前に、まず、時間t3におけるスナップショットのエントリが、時間t4におけるスナップショットにマージされる。例えば、時間t2におけるスナップショットに対して相対的な、時間t4におけるスナップショットのデルタを生成する際、まず、時間t3におけるスナップショットのエントリが、時間t4におけるスナップショットに論理的にマージされ(時間t3におけるスナップショットのインデックスをソース・システムから実際に削除することはしない)、次いで、時間t3におけるスナップショットのオフセットとマージされた時間t4におけるスナップショットのインデックスと、時間t2におけるスナップショットとの間のデルタが生成される。この、時間t4におけるスナップショット(時間t3におけるスナップショットのマージ済みエントリを含む)と時間t2におけるスナップショットとの間のデルタは、図12Bのインデックス1202によって表すことができる。デルタが宛先で受け取られると、デルタは、宛先システムで時間t2におけるスナップショットをポイントするようにスプライスされる。この例では、ソース上と宛先上の同じスナップショット(この例では時間t2におけるスナップショット)に対してデルタが生成されスプライスされているので、この場合、宛先システムでリファクタリングの機会はない。したがって、宛先システムで、デルタを表すインデックス1202をt4におけるスナップショットにおいて直接に使用することができる。
別の例(図12Bには示さず)では、宛先システムにおける時間t2におけるスナップショットに対する、宛先システムにおける時間t4におけるスナップショットのデルタをソースが送る代わりに、ソースは、時間t4におけるスナップショットにおけるデータの展開状態を生成する。時間t4におけるスナップショットにおけるデータの展開状態を表すインデックスは、データ値Aへのオフセット1、データ値Eへのオフセット2、データ値Cへのオフセット3、およびデータ値Dへのオフセット4のマッピングを含むことになる。時間t4におけるスナップショットにおけるデータの展開状態を表すインデックスは、宛先に送られることになる。宛先で、時間t4におけるスナップショットにおけるデータの展開状態を表すインデックスは、リファクタリングされて、宛先システムにおける時間t2におけるスナップショットおよび宛先システムにおける時間t1におけるスナップショットからの冗長エントリが除去されることになる。宛先システムで時間t4におけるスナップショットを表すのに使用すべき、結果的に得られるインデックスは、やはり図12Bのインデックス1202になるはずである。
図13は、より新しいスナップショット・インデックスをより古いスナップショット・インデックスに対してリファクタリングするプロセスの例を示す流れ図である。いくつかの実施形態では、プロセス1300は、図6のシステム600の第1のストレージ・システム602、第2のストレージ・システム606、またはスナップショット複製システム608で実装される。いくつかの実施形態では、プロセス1300は、選択されたスナップショットが宛先システムで完全に複製された後で実装される。いくつかの実施形態では、プロセス1300は、選択されたスナップショットが宛先システムで完全に複製される前に実装される(例えば、プロセス1300は、少なくとも部分的には、宛先システムでのスナップショット・データの複製と同時に実装されてもよい)。
上の様々な例で述べたように、宛先システムでスナップショットが複製されて宛先システムにおける既存のスナップショット・シーケンスにスプライスされるとき、いくつかの実施形態では、複製スナップショットと、宛先システムにおける既存の隣接スナップショットとの間の、新しい方のスナップショット・インデックスは、リファクタリングされてエントリが除去される。いくつかの実施形態では、複製スナップショットは、ソース・システムから送られることになるデルタ・データ、またはソース・システムから送られたデルタ・データを参照する。以下のプロセス1300で述べる「より新しいスナップショット・インデックス」は、複製スナップショット・インデックスと、宛先システムにおける隣接する既存スナップショット・インデックスとの間の、相対的により新しいスナップショット・インデックスを指し、以下のプロセス1300で述べる「より古いスナップショット・インデックス」は、複製スナップショット・インデックスと、宛先システムにおける隣接する既存スナップショット・インデックスとの間の、相対的により古いスナップショット・インデックスを指す。図9Bの例を再び参照すると、宛先における時間t3における既存のスナップショット・インデックスは、時間t2における複製スナップショット・インデックスに対してリファクタリングされた、より新しいスナップショット・インデックスであった。図10Bの例を再び参照すると、時間t3における複製スナップショット・インデックスは、宛先における時間t2における既存スナップショット・インデックスに対してリファクタリングされた、より新しいスナップショット・インデックスであった。
いくつかの実施形態では、複製スナップショットは、宛先における隣接する既存のより古いスナップショットと、隣接する既存のより新しいスナップショットとの両方に対してリファクタリングされてよい。したがって、例えば、スナップショットを宛先で既存のスナップショット・シーケンスにスプライスする際、プロセス1300を2回にわたり適用することができる。すなわち、複製スナップショットがプロセス1300の「より新しいスナップショット・インデックス」を構成し、宛先における隣接する既存のより古いスナップショットがプロセス1300の「より古いスナップショット・インデックス」を構成する場合のプロセス1300を、1回目に適用することができ、複製スナップショットがプロセス1300の「より古いスナップショット・インデックス」を構成し、宛先における隣接する既存のより新しいスナップショットがプロセス1300の「新しいスナップショット・インデックス」を構成する場合のプロセス1300を、2回目に適用することができる。
図13に戻ると、1302で、より新しいスナップショット・インデックスに関連するオフセットに対応する第1のフィンガプリントが決定される。フィンガプリントは、より新しいスナップショット・インデックスに含まれる論理オフセットによってマッピングされるデータ値に基づいて決定される。いくつかの実施形態では、オフセットに対応するデータ値が、より新しいスナップショット・インデックスから読み取られ、データ値のフィンガプリントが、(例えばSHA1)ハッシュ技法に基づいて決定されてよい。
1304で、より古いスナップショット・インデックスに関連するオフセットに対応する第2のフィンガプリントが決定される。フィンガプリントは、より古いスナップショット・インデックスに含まれる同じ論理オフセットによってマッピングされるデータ値に基づいて決定される。いくつかの実施形態では、オフセットに対応するデータ値が、より古いスナップショット・インデックスから読み取られる。データ値のこのフィンガプリントは、ステップ1302でフィンガプリントを得るのに使用されたのと同じ技法に基づいて決定されてよい。
1306で、第1のフィンガプリントと第2のフィンガプリントが一致するかどうかが決定される。第1のフィンガプリントと第2のフィンガプリントが一致する場合は、2つのスナップショット・インデックス中の同じオフセットによってポイントされるデータ値は同じ(冗長)であり、制御は1308に移される。そうではなく、第1のフィンガプリントと第2のフィンガプリントが一致しない場合は、2つのスナップショット・インデックス中の同じオフセットによってポイントされるデータ値は同じではなく、制御は1310に移される。
1308で、より新しいスナップショット・インデックスからオフセットが除去される。より新しいスナップショット・インデックスから冗長オフセットが除去され、基礎をなすデータは、宛先システムから削除され、かつ/または、ソース・システムから宛先システムに転送されないようにされる。
1310で、より新しいスナップショット・インデックスとより古いスナップショット・インデックスとに共通するオフセットが他にもあるかどうかが決定される。共通オフセットが他にもある場合は、制御は1312に移される。そうではなく、共通オフセットがこれ以上ない場合は、プロセス1300は終了する。1312で、より新しいスナップショット・インデックスとより古いスナップショット・インデックスとに共通する次のオフセットが選択される。
様々な実施形態で、非クローン・スナップショットを複製できる方式と同様にして、クローンに関連するスナップショットをソース・システムから宛先システムに複製することができる。前述のように、クローンに関連するスナップショットのシーケンスは、ソース・システムにやはり記憶されたソース・データ・セットのスナップショットから生成される。ソース・スナップショットを「共有スナップショット」と呼ぶ。クローンはソース・データの共有スナップショットから生成される(したがってそれに依存する)ので、様々な実施形態で、クローン・スナップショットは、展開状態としてではなく、共有スナップショットのデルタとして複製される。後でさらに詳細に述べるように、クローン・スナップショットをソース・システムから宛先システムに複製する場合は、ソース・データの共有スナップショットが宛先システムにすでに存在するか否かを考慮に入れる。
図14は、クローンに関連する選択されたスナップショットの、ソース・システムから宛先システムへの複製を実施するプロセスの一実施形態を示す流れ図である。いくつかの実施形態では、プロセス1400のソース・システムおよび宛先システムは、それぞれ図6のシステム600の第1のストレージ・システム602および第2のストレージ・システム606、またはそれぞれ第2のストレージ・システム606および第1のストレージ・システム602を使用して、実装されてよい。いくつかの実施形態では、プロセス1400は、図6のシステム600の第1のストレージ・システム602、第2のストレージ・システム606、またはスナップショット複製システム608で実装される。
1402において、選択されたスナップショットを宛先システムで複製する要求が受信される。選択されたスナップショットはクローン・データ・セットに関連し、このクローン・データ・セットは、ソース・データ・セットの共有スナップショットに関連する。クローンに関連するスナップショットが宛先システムで複製されるよう要求される。クローンについて記憶されたメタデータ・セットを使用して、どの特定のソース・データのどの特定の共有スナップショットが、クローンの生成元であった共有スナップショットであるかを識別することができる。例えば、共有スナップショットおよびそれに関連するソース・データをスナップショット・グローバルIDによって識別することができ、スナップショット・グローバルIDは、スナップショットを作成したシステムや、スナップショットに関連する展開状態を示し、また、スナップショットが関連するデータ・セット(例えば、Vディスクまたはファイル)も示す。
1404において、ソース・データ・セットの共有スナップショットが宛先システムにすでに存在するか否かが決定される。クローンの生成元であった共有スナップショットが、宛先システムにすでに存在するかどうかが決定される。例えば、ソース・データの共有スナップショットが宛先システムにすでに存在するか否かは、前述のような記憶済みの識別情報から決定することができる。例えば、記憶済みの識別情報から、宛先システムが共有スナップショットのスナップショット・グローバルIDに関連するスナップショットを現在記憶しているか否かを決定することができる。共有スナップショットが宛先システムにまだ存在しない場合は、制御は1406に移される。そうではなく、共有スナップショットが宛先システムにすでに存在する場合は、制御は1408に移される。
1406において、ソース・データ・セットの共有スナップショットが、宛先システムで複製される。ソース・データの共有スナップショットが宛先システムにまだ存在しない場合は、まず共有スナップショットが宛先システムで複製される。いくつかの実施形態では、図8のプロセス800などのプロセスを使用して、共有スナップショットがソース・システムから宛先システムに複製される。例えば、共有スナップショットは、既存のスナップショット(ソース・システムと宛先システムとのいずれかにおける)のデルタとして複製することができる。共有スナップショットはまた、共有スナップショットにリンクする他の複製クローンのために後で再使用されてもよい。
いくつかの場合では、空間を節約するために、単一のクローンのみによって使用される共有スナップショットは、自動的に削除されて、次に新しいクローン・スナップショットとマージされてもよい。しかし、クローンの削除された基礎に関する情報は、クローンによって保持される。
1408において、クローン・データ・セットに関連するメタデータ・セットが宛先システムにすでに存在するか否かが決定される。クローン・データ・セットに関連するメタデータ・セットが宛先システムにまだ存在しない場合は、制御は1410に移される。そうではなく、共有スナップショットが宛先システムにすでに存在する場合は、制御は1412に移される。
1410において、クローン・データ・セットに関連するメタデータ・セットが宛先システムで生成されるようにする。クローンが宛先にまだ存在しない場合は、クローンに関連するメタデータ・セットを少なくとも生成することによって、クローンが宛先で生成される。例えば、クローンに関連するメタデータ・セットは、クローンに関連するファイル・グローバルIDのセット、クローンを宛先システムにおける共有スナップショットにリンクするデータ、および/または、クローンに関連する後続のスナップショットを作成するのに使用するための、クローンに関連する現在スナップショット・インデックス、を含むことができる。特に、クローンに関連するファイル・グローバルIDを使用して、どのスナップショットがクローンに属しどのスナップショットが属さないか(例えば、クローンの生成元であったソース・データに属するスナップショット)を識別することができる。
1412において、選択されたスナップショットが、宛先システムにおける共有スナップショットに少なくとも部分的に基づいて複製される。共有スナップショットおよびクローン・メタデータが宛先システムに存在すると決定されると、選択されたクローン・スナップショットを宛先システムに複製することができる。いくつかの実施形態では、図8のプロセス800などのプロセスを使用して、選択されたクローン・スナップショットがソース・システムから宛先システムに複製される。例えば、選択されたクローン・スナップショットは、別のスナップショット(例えば共有スナップショット)のデルタとして複製することができる。
図15A、15B、および15Cは、クローンに関連する時間t4におけるスナップショット(S4)をソース・システムから宛先システムに複製する例を示す図である。図15Aに示すように、ソース・システムは、2つのスナップショット・シーケンスを含む。ソース・システムにおける第1のスナップショット・シーケンスは、ファイル・グローバルID「VM1」を有するソース・データ・セットに関連し、時間t3におけるスナップショット(S3)、時間t2におけるスナップショット(S2)、および時間t1におけるスナップショット(S1)を含む。ソース・システムにおける第2のスナップショット・シーケンスは、ファイル・グローバルID「Clone_VM1」を有するクローンに関連し、時間t5におけるスナップショット(S5)、および時間t4におけるスナップショット(S4)を含む。「Clone_VM1」は、「VM1」の、時間t2におけるスナップショット(S2)から生成された(したがってS2に依存する)。したがって、時間t2におけるスナップショット(S2)は、スナップショット・シーケンス「Clone_VM1」に関連する共有スナップショットである。また、図15Aに示すように、宛先システムにおけるスナップショット・シーケンスは、時間t4におけるスナップショット(S4)が複製される前、ファイル・グローバルID「VM1」に関連する時間t1におけるスナップショット(S1)を含む。共有スナップショット、すなわち時間t2におけるスナップショット(S2)が宛先システムに存在しないので、まず、時間t2におけるスナップショット(S2)が宛先システムで複製されることになる。
共有スナップショット、すなわち時間t2におけるスナップショット(S2)を宛先システムで複製することができ、これは例えば、時間t1におけるスナップショット(S1)に対する、時間t2におけるスナップショット(S2)のデルタを、宛先システムに送ることによって行うことができる。図15Bに、時間t2におけるスナップショット(S2)を宛先システムで複製した結果を示すが、この複製は、時間t2におけるスナップショット(S2)を、「VM1」に関連するスナップショット・シーケンス中の時間t1におけるスナップショット(S1)をポイントするようにスプライスすることを含む。
共有スナップショット、すなわち時間t2におけるスナップショット(S2)が宛先システムで複製された後、クローン「Clone_VM1」のメタデータが宛先システムで生成される。図15Bに、クローン「Clone_VM1」に関連するメタデータを宛先システムで生成した結果を、「Clone_VM1」のラベルが付いた点線のボックスとして示すが、このボックスは、「VM1」に関連するスナップショット・シーケンスの、時間t2におけるスナップショット(S2)にリンクする。
クローン「Clone_VM1」のメタデータが宛先システムで生成された後、「Clone_VM1」に関連する時間t4におけるスナップショットが、宛先システムで複製される。時間t4におけるスナップショット(S4)は、非クローン・スナップショットを複製する方式と同様にして、宛先システムで複製することができる。例えば、時間t4におけるスナップショット(S4)は、共有スナップショット、すなわち時間t2におけるスナップショット(S2)に対する、時間t4におけるスナップショット(S4)のデルタを宛先システムに送ることによって、宛先システムで複製することができる。図15Cに、時間t4におけるスナップショット(S4)を宛先システムで複製した結果を示すが、この複製は、時間t4におけるスナップショット(S4)をファイル・グローバルID「Clone_VM1」に関連付けること、および、時間t4におけるスナップショット(S4)を、「VM1」に関連するスナップショット・シーケンス中の時間t2におけるスナップショット(S2)をポイントするようにスプライスすることを含む。
理解を明確にするために前述の実施形態をいくぶん詳細に述べたが、本発明は、提供した詳細に限定されない。本発明を実現するための多くの代替方式がある。開示する実施形態は、例示的なものであり、制限的なものではない。

Claims (25)

  1. 第1の時点におけるデータ・セットの状態を宛先システムで表すためにスナップショット・データを前記宛先システムに記憶するための要求を受け取り、前記第1の時点における前記データ・セットの前記状態をソース・システムで表す第1のソース・システム・スナップショット・データは、第2の時点における前記データ・セットの状態を前記ソース・システムで表す第2のソース・システム・スナップショット・データに依存し、
    前記第1のソース・システム・スナップショット・データと、第3の時点における前記データ・セットの状態を前記宛先システムで表す宛先システム・スナップショット・データとを含むデータに少なくとも部分的に基づいて、前記第1の時点における前記データ・セットの前記状態を前記宛先システムで表すための前記スナップショット・データを決定するように構成されているプロセッサと、
    前記プロセッサに接続され、前記要求を記憶するように構成されているメモリと
    を備えるシステム。
  2. 前記第1のソース・システム・スナップショット・データおよび前記第2のソース・システム・スナップショット・データの各々は、前記ソース・システムに記憶されているスナップショット・データ・シーケンスに含まれる、請求項1に記載のシステム。
  3. 前記プロセッサは、前記スナップショット・データを、前記宛先システムに記憶されているスナップショット・データ・シーケンスに挿入するように構成されている、請求項1に記載のシステム。
  4. 前記プロセッサはさらに、前記第1のソース・システム・スナップショット・データと、前記第2のソース・システム・スナップショット・データと、前記宛先システム・スナップショット・データとの間の順序を決定するために使用可能な識別情報を記憶するように構成されている、請求項1に記載のシステム。
  5. 前記スナップショット・データを決定することは、前記第1のソース・システム・スナップショット・データおよび前記第2のソース・システム・スナップショット・データに少なくとも部分的に基づいてデルタを決定することを含む、請求項1に記載のシステム。
  6. 前記宛先システム・スナップショット・データは第1の宛先システム・スナップショット・データを含み、前記プロセッサはさらに、
    前記宛先システムに記憶されているスナップショット・データ・シーケンスに挿入されるべき、前記第1の時点における前記データ・セットの前記状態を前記宛先システムで表す新しい宛先システム・スナップショット・データを、前記スナップショット・データに少なくとも部分的に基づいて生成し、
    前記新しい宛先システム・スナップショット・データを前記第1の宛先システム・スナップショット・データに依存させるように構成されている、請求項1に記載のシステム。
  7. 前記宛先システムに記憶されている前記スナップショット・データ・シーケンスは、第4の時点における前記データ・セットの状態を前記宛先システムで表す第2の宛先システム・スナップショット・データを含み、前記第1の時点は前記第4の時点よりも前であり、前記新しい宛先システム・スナップショット・データを生成することは、
    前記スナップショット・データと前記第2の宛先システム・スナップショット・データとに共通のオフセットを決定し、
    前記スナップショット・データに関連する前記オフセットに関連する第1のデータ値が、前記第2の宛先システム・スナップショット・データに関連する前記オフセットに関連する第2のデータ値と一致すると決定し、
    前記第1のデータ値が前記第2のデータ値と一致するとの決定に応答して前記第2の宛先システム・スナップショット・データから前記オフセットを除去すること
    を含む、請求項6に記載のシステム。
  8. 前記第1のデータ値が前記第2のデータ値と一致するとの決定に応答してさらに、前記スナップショット・データに関連する前記オフセットに関連する前記第1のデータ値が前記ソース・システムから前記宛先システムに送信されないようにする、請求項7に記載のシステム。
  9. 前記第3の時点は前記第1の時点よりも前であり、前記新しい宛先システム・スナップショット・データを生成することは、
    前記スナップショット・データと前記第1の宛先システム・スナップショット・データとに共通のオフセットを決定し、
    前記スナップショット・データに関連する前記オフセットに関連する第1のデータ値は、前記第1の宛先システム・スナップショット・データに関連する前記オフセットに関連する第2のデータ値と一致すると決定し、
    前記第1のデータ値が前記第2のデータ値と一致するとの決定に応答して前記スナップショット・データから前記オフセットを除去すること
    を含む、請求項6に記載のシステム。
  10. 前記第1のデータ値が前記第2のデータ値と一致するとの決定に応答してさらに、前記スナップショット・データに関連する前記オフセットに関連する前記第1のデータ値が前記ソース・システムから前記宛先システムに送信されないようにする、請求項9に記載のシステム。
  11. 前記新しい宛先システム・スナップショット・データは、前記第1の時点および前記第3の時点に少なくとも部分的に基づいて、前記宛先システムに記憶されている前記スナップショット・データ・シーケンスに挿入される、請求項6に記載のシステム。
  12. 前記スナップショット・データは第1のスナップショット・データを含み、前記宛先システム・スナップショット・データは第1の宛先システム・スナップショット・データを含み、前記プロセッサはさらに、所望の時点における前記データ・セットの状態を前記ソース・システムで表すための第2のスナップショット・データを決定するように構成され、前記第2のスナップショット・データは、前記所望の時点における前記データ・セットの前記状態を前記宛先システムで表す第2の宛先システム・スナップショット・データに少なくとも部分的に基づいて決定される、請求項1に記載のシステム。
  13. 前記第2の時点は、前記第1の時点よりも前であり、前記第3の時点と同じである、請求項1に記載のシステム。
  14. 前記第2の時点は前記第1の時点よりも前であり、前記第3の時点は前記第1の時点よりも前であるが前記第2の時点よりも後である、請求項1に記載のシステム。
  15. 前記データ・セットは、第4の時点におけるソース・データ・セットの状態を前記ソース・システムで表す第3のソース・システム・スナップショット・データから生成されたクローン・データ・セットを含み、前記クローン・データ・セットに関連する前記第2のソース・システム・スナップショット・データは、前記ソース・データ・セットに関連する前記第3のソース・システム・スナップショット・データに依存する、請求項1に記載のシステム。
  16. 前記プロセッサは、
    前記ソース・データ・セットに関連する第3のソース・システム・スナップショット・データに含まれる1つまたは複数のエントリを、前記クローン・データ・セットに関連する前記第2のソース・システム・スナップショット・データにマージすること、および、
    前記ソース・データ・セットに関連する前記第3のソース・システム・スナップショット・データを削除するように構成されている、請求項16に記載のシステム。
  17. 第1の時点におけるデータ・セットの状態を宛先システムで表すためのスナップショット・データを前記宛先システムに記憶する要求を受信し、前記第1の時点における前記データ・セットの前記状態をソース・システムで表す第1のソース・システム・スナップショット・データは、第2の時点における前記データ・セットの状態を前記ソース・システムで表す第2のソース・システム・スナップショット・データに依存し、
    前記第1のソース・システム・スナップショット・データと、第3の時点における前記データ・セットの状態を前記宛先システムで表す宛先システム・スナップショット・データとを含むデータに少なくとも部分的に基づいて、前記第1の時点における前記データ・セットの前記状態を前記宛先システムで表すための前記スナップショット・データを決定すること、
    を備える方法。
  18. 前記スナップショット・データを、前記宛先システムに記憶されているスナップショット・データ・シーケンスに挿入することをさらに備える、請求項17に記載の方法。
  19. 前記スナップショット・データを決定することは、前記第1のソース・システム・スナップショット・データおよび前記第2のソース・システム・スナップショット・データに少なくとも部分的に基づいてデルタを決定することを含む、請求項17に記載の方法。
  20. 前記スナップショット・データを決定することは、前記第1のソース・システム・スナップショット・データおよび前記第2のソース・システム・スナップショット・データに少なくとも部分的に基づいてデルタを決定することを含む、請求項17に記載の方法。
  21. 前記宛先システム・スナップショット・データは第1の宛先システム・スナップショット・データを含み、
    前記宛先システムに記憶されているスナップショット・データ・シーケンスに挿入されるべき、前記第1の時点における前記データ・セットの前記状態を前記宛先システムで表す新しい宛先システム・スナップショット・データを、前記スナップショット・データに少なくとも部分的に基づいて生成し、
    前記新しい宛先システム・スナップショット・データを前記第1の宛先システム・スナップショット・データに依存させること
    をさらに備える、請求項17に記載の方法。
  22. 前記新しい宛先システム・スナップショット・データは、前記第1の時点および前記第3の時点に少なくとも部分的に基づいて、前記宛先システムに記憶された前記スナップショット・データ・シーケンスに挿入される、請求項21に記載の方法。
  23. 前記スナップショット・データは第1のスナップショット・データを含み、前記宛先システム・スナップショット・データは第1の宛先システム・スナップショット・データを含み、前記プロセッサはさらに、所望の時点における前記データ・セットの状態を前記ソース・システムで表すための第2のスナップショット・データを決定するように構成され、前記第2のスナップショット・データは、前記所望の時点における前記データ・セットの前記状態を前記宛先システムで表す第2の宛先システム・スナップショット・データに少なくとも部分的に基づいて決定される、請求項17に記載の方法。
  24. 前記データ・セットは、第4の時点におけるソース・データ・セットの状態を前記ソース・システムで表す第3のソース・システム・スナップショット・データから生成されたクローン・データ・セットを含み、前記クローン・データ・セットに関連する前記第2のソース・システム・スナップショット・データは、前記ソース・データ・セットに関連する前記第3のソース・システム・スナップショット・データに依存する、請求項17に記載の方法。
  25. 非一時的なコンピュータ可読ストレージ媒体に組み込まれたコンピュータ・プログラム製品であって、
    第1の時点におけるデータ・セットの状態を宛先システムで表すためのスナップショット・データを前記宛先システムに記憶する要求を受け取るためのコンピュータ命令と、前記第1の時点における前記データ・セットの前記状態をソース・システムで表す第1のソース・システム・スナップショット・データは、第2の時点における前記データ・セットの状態を前記ソース・システムで表す第2のソース・システム・スナップショット・データに依存し、
    前記第1のソース・システム・スナップショット・データと、第3の時点における前記データ・セットの状態を前記宛先システムで表す宛先システム・スナップショット・データとを含むデータに少なくとも部分的に基づいて、前記第1の時点における前記データ・セットの前記状態を前記宛先システムで表すための前記スナップショット・データを決定するためのコンピュータ命令と、を備えるコンピュータ・プログラム製品。
JP2016537937A 2013-09-03 2014-09-02 スナップショットおよびクローンの複製 Active JP6309103B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361873241P 2013-09-03 2013-09-03
US61/873,241 2013-09-03
US14/472,834 2014-08-29
US14/472,834 US10628378B2 (en) 2013-09-03 2014-08-29 Replication of snapshots and clones
PCT/US2014/053709 WO2015034827A1 (en) 2013-09-03 2014-09-02 Replication of snapshots and clones

Publications (2)

Publication Number Publication Date
JP2016529633A true JP2016529633A (ja) 2016-09-23
JP6309103B2 JP6309103B2 (ja) 2018-04-11

Family

ID=52584674

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016537937A Active JP6309103B2 (ja) 2013-09-03 2014-09-02 スナップショットおよびクローンの複製

Country Status (4)

Country Link
US (1) US10628378B2 (ja)
EP (1) EP3042289A4 (ja)
JP (1) JP6309103B2 (ja)
WO (1) WO2015034827A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022043279A (ja) * 2021-01-06 2022-03-15 バイドゥ ユーエスエイ エルエルシー 仮想化環境内の人工知能アクセラレータ・ステータス確認を用いる仮想マシン移行のための方法
US12039356B2 (en) 2021-01-06 2024-07-16 Baidu Usa Llc Method for virtual machine migration with checkpoint authentication in virtualization environment

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160092313A1 (en) * 2014-09-25 2016-03-31 Empire Technology Development Llc Application Copy Counting Using Snapshot Backups For Licensing
US9940378B1 (en) * 2014-09-30 2018-04-10 EMC IP Holding Company LLC Optimizing replication of similar backup datasets
US9778990B2 (en) * 2014-10-08 2017-10-03 Hewlett Packard Enterprise Development Lp Methods and systems for concurrently taking snapshots of a plurality of virtual machines
US9658924B2 (en) * 2014-12-12 2017-05-23 Schneider Electric Software, Llc Event data merge system in an event historian
US10606704B1 (en) * 2014-12-31 2020-03-31 Acronis International Gmbh Creation of consistent copies of application data
CN105893171B (zh) * 2015-01-04 2019-02-19 伊姆西公司 存储设备中用于故障恢复的方法和装置
US10678650B1 (en) * 2015-03-31 2020-06-09 EMC IP Holding Company LLC Managing snaps at a destination based on policies specified at a source
WO2016190870A1 (en) * 2015-05-28 2016-12-01 Hewlett Packard Enterprise Development Lp Translation of source m-node identifier to target m-node identifier
US10262004B2 (en) * 2016-02-29 2019-04-16 Red Hat, Inc. Native snapshots in distributed file systems
US11080242B1 (en) * 2016-03-30 2021-08-03 EMC IP Holding Company LLC Multi copy journal consolidation
US10055149B2 (en) 2016-04-14 2018-08-21 Seagate Technology Llc Intelligent snapshot tree replication
US10394482B2 (en) 2016-04-14 2019-08-27 Seagate Technology Llc Snap tree arbitrary replication
US10353590B2 (en) 2016-05-19 2019-07-16 Hewlett Packard Enterprise Development Lp Methods and systems for pre-processing sensor measurements
US10642784B2 (en) * 2016-09-15 2020-05-05 International Business Machines Corporation Reducing read operations and branches in file system policy checks
US10474629B2 (en) * 2016-09-28 2019-11-12 Elastifile Ltd. File systems with global and local naming
US10140039B1 (en) * 2016-12-15 2018-11-27 EMC IP Holding Company LLC I/O alignment for continuous replication in a storage system
US10613939B2 (en) 2017-03-28 2020-04-07 Commvault Systems, Inc. Backup index generation process
CN108733541A (zh) * 2017-04-17 2018-11-02 伊姆西Ip控股有限责任公司 用于实时确定数据复制进度的方法和设备
US10379777B2 (en) * 2017-06-19 2019-08-13 Synology Incorporated Method for performing replication control in storage system with aid of relationship tree within database, and associated apparatus
US20190155936A1 (en) * 2017-11-22 2019-05-23 Rubrik, Inc. Replication Catch-up Strategy
US11874794B2 (en) * 2018-10-19 2024-01-16 Oracle International Corporation Entity snapshots partitioning and combining
US11150831B2 (en) * 2019-03-27 2021-10-19 Red Hat, Inc. Virtual machine synchronization and recovery
CN110769062A (zh) * 2019-10-29 2020-02-07 广东睿江云计算股份有限公司 一种分布式存储的异地灾备方法
US11789971B1 (en) * 2019-12-02 2023-10-17 Amazon Technologies, Inc. Adding replicas to a multi-leader replica group for a data set
US11144233B1 (en) * 2020-03-18 2021-10-12 EMC IP Holding Company LLC Efficiently managing point-in-time copies of data within a primary storage system
US11531644B2 (en) * 2020-10-14 2022-12-20 EMC IP Holding Company LLC Fractional consistent global snapshots of a distributed namespace
US11741076B2 (en) 2021-03-22 2023-08-29 Kyndryl, Inc. Adaptive snapshot controller
US11748300B2 (en) * 2021-11-18 2023-09-05 Vmware, Inc. Reverse deletion of a chain of snapshots
US20230409522A1 (en) 2022-06-16 2023-12-21 Oracle International Corporation Scalable and secure cross region and optimized file system delta transfer for cloud scale
WO2023244446A1 (en) * 2022-06-16 2023-12-21 Oracle International Corporation Scalable and secure cross-region and optimized file system replication for cloud scale

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6594744B1 (en) * 2000-12-11 2003-07-15 Lsi Logic Corporation Managing a snapshot volume or one or more checkpoint volumes with multiple point-in-time images in a single repository
US20040030727A1 (en) * 2002-08-06 2004-02-12 Philippe Armangau Organization of multiple snapshot copies in a data storage system
US20040267836A1 (en) * 2003-06-25 2004-12-30 Philippe Armangau Replication of snapshot using a file system copy differential
JP2007102692A (ja) * 2005-10-07 2007-04-19 Hitachi Ltd 記憶制御システム及び方法
JP2009146389A (ja) * 2007-11-22 2009-07-02 Hitachi Ltd バックアップシステム及び方法
JP2010026939A (ja) * 2008-07-23 2010-02-04 Hitachi Ltd 記憶制御装置及び方法
JP2010191647A (ja) * 2009-02-18 2010-09-02 Hitachi Ltd ファイル共有システム、ファイルサーバ、ファイル管理方法
US20120016839A1 (en) * 2010-07-15 2012-01-19 Delphix Corp. De-Duplication Based Backup Of File Systems
JP2012216025A (ja) * 2011-03-31 2012-11-08 Nec Corp データ複製装置、データ複製制御方法、及びデータ複製制御プログラム
US20140095823A1 (en) * 2012-09-28 2014-04-03 Vmware, Inc. Virtual Disk Snapshot Consolidation Using Block Merge

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1005674A4 (en) 1997-07-15 2002-03-13 Pocket Soft Inc SYSTEM FOR DETECTING DIFFERENCES BETWEEN TWO COMPUTER FILES AND UPDATING OF COMPUTER FILES
WO2000021232A2 (en) 1998-10-02 2000-04-13 International Business Machines Corporation Conversational browser and conversational systems
US6772172B2 (en) * 2001-04-27 2004-08-03 Sun Microsystems, Inc. Method, system, program, and computer readable medium for indexing object oriented objects in an object oriented database
US7055058B2 (en) 2001-12-26 2006-05-30 Boon Storage Technologies, Inc. Self-healing log-structured RAID
US6826666B2 (en) 2002-02-07 2004-11-30 Microsoft Corporation Method and system for transporting data content on a storage area network
US7043485B2 (en) 2002-03-19 2006-05-09 Network Appliance, Inc. System and method for storage of snapshot metadata in a remote file
US7016913B2 (en) * 2002-03-20 2006-03-21 Sun Microsystems, Inc. Method, system, data structures, and article of manufacture for implementing a persistent object
EP1486886A1 (en) 2003-06-12 2004-12-15 Hewlett-Packard Development Company, L.P. Systems, protocols and propagation mechanisms for managing information in a network environment
US8959299B2 (en) 2004-11-15 2015-02-17 Commvault Systems, Inc. Using a snapshot as a data source
US7548939B2 (en) 2005-04-15 2009-06-16 Microsoft Corporation Generating storage reports using volume snapshots
US7426618B2 (en) 2005-09-06 2008-09-16 Dot Hill Systems Corp. Snapshot restore method and apparatus
US8364638B2 (en) 2005-09-15 2013-01-29 Ca, Inc. Automated filer technique for use in virtualized appliances and applications
US20070088729A1 (en) 2005-10-14 2007-04-19 International Business Machines Corporation Flexible history manager for manipulating data and user actions
US8549051B2 (en) 2005-11-04 2013-10-01 Oracle America, Inc. Unlimited file system snapshots and clones
US20070208918A1 (en) 2006-03-01 2007-09-06 Kenneth Harbin Method and apparatus for providing virtual machine backup
US7676514B2 (en) 2006-05-08 2010-03-09 Emc Corporation Distributed maintenance of snapshot copies by a primary processor managing metadata and a secondary processor providing read-write access to a production dataset
US8122108B2 (en) 2006-05-16 2012-02-21 Oracle International Corporation Database-less leasing
US8571882B1 (en) 2006-07-05 2013-10-29 Ronald J. Teitelbaum Peer to peer database
US7809759B1 (en) 2006-08-18 2010-10-05 Unisys Corporation Dynamic preconditioning of A B+tree
US7680996B2 (en) 2006-09-28 2010-03-16 Paragon Software GmbH Method and system for shrinking a set of data using a differential snapshot, a watch-list structure along with identifying and retaining updated blocks
US9189265B2 (en) 2006-12-21 2015-11-17 Vmware, Inc. Storage architecture for virtual machines
WO2008121873A1 (en) 2007-03-29 2008-10-09 Vmware, Inc. Synchronization and customization of a clone computer
US7716183B2 (en) 2007-04-11 2010-05-11 Dot Hill Systems Corporation Snapshot preserved data cloning
JP4498409B2 (ja) * 2007-12-28 2010-07-07 株式会社エスグランツ データベースのインデックスキー更新方法及びプログラム
US8365167B2 (en) 2008-04-15 2013-01-29 International Business Machines Corporation Provisioning storage-optimized virtual machines within a virtual desktop environment
US20090276774A1 (en) 2008-05-01 2009-11-05 Junji Kinoshita Access control for virtual machines in an information system
US8566821B2 (en) 2008-11-11 2013-10-22 Netapp Inc. Cloning virtual machines
US20100257403A1 (en) 2009-04-03 2010-10-07 Microsoft Corporation Restoration of a system from a set of full and partial delta system snapshots across a distributed system
US8200633B2 (en) 2009-08-07 2012-06-12 International Business Machines Corporation Database backup and restore with integrated index reorganization
US8463825B1 (en) 2010-04-27 2013-06-11 Tintri Inc. Hybrid file system for virtual machine storage
US8386462B2 (en) 2010-06-28 2013-02-26 International Business Machines Corporation Standby index in physical data replication
US8434081B2 (en) 2010-07-02 2013-04-30 International Business Machines Corporation Storage manager for virtual machines with virtual storage
US20120005672A1 (en) 2010-07-02 2012-01-05 International Business Machines Corporation Image management for virtual machine instances and associated virtual storage
US8412689B2 (en) * 2010-07-07 2013-04-02 Microsoft Corporation Shared log-structured multi-version transactional datastore with metadata to enable melding trees
US8612488B1 (en) 2010-09-15 2013-12-17 Symantec Corporation Efficient method for relocating shared memory
US9304867B2 (en) * 2010-09-28 2016-04-05 Amazon Technologies, Inc. System and method for providing flexible storage and retrieval of snapshot archives
WO2012045021A2 (en) 2010-09-30 2012-04-05 Commvault Systems, Inc. Efficient data management improvements, such as docking limited-feature data management modules to a full-featured data management system
US8468174B1 (en) 2010-11-30 2013-06-18 Jedidiah Yueh Interfacing with a virtual database system
WO2012129191A2 (en) 2011-03-18 2012-09-27 Fusion-Io, Inc. Logical interfaces for contextual storage
US9519496B2 (en) 2011-04-26 2016-12-13 Microsoft Technology Licensing, Llc Detecting and preventing virtual disk storage linkage faults
US8433683B2 (en) 2011-06-08 2013-04-30 Oracle International Corporation Systems and methods of data replication of a file system
US9286182B2 (en) 2011-06-17 2016-03-15 Microsoft Technology Licensing, Llc Virtual machine snapshotting and analysis
US8595238B2 (en) 2011-06-22 2013-11-26 International Business Machines Corporation Smart index creation and reconciliation in an interconnected network of systems
US9116633B2 (en) 2011-09-30 2015-08-25 Commvault Systems, Inc. Information management of virtual machines having mapped storage devices
US9292521B1 (en) 2011-10-20 2016-03-22 Amazon Technologies, Inc. Archiving and querying data updates associated with an electronic catalog system
US10509776B2 (en) * 2012-09-24 2019-12-17 Sandisk Technologies Llc Time sequence data management
US20140136578A1 (en) 2012-11-15 2014-05-15 Microsoft Corporation Techniques to manage virtual files

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6594744B1 (en) * 2000-12-11 2003-07-15 Lsi Logic Corporation Managing a snapshot volume or one or more checkpoint volumes with multiple point-in-time images in a single repository
US20040030727A1 (en) * 2002-08-06 2004-02-12 Philippe Armangau Organization of multiple snapshot copies in a data storage system
US20040267836A1 (en) * 2003-06-25 2004-12-30 Philippe Armangau Replication of snapshot using a file system copy differential
JP2007102692A (ja) * 2005-10-07 2007-04-19 Hitachi Ltd 記憶制御システム及び方法
JP2009146389A (ja) * 2007-11-22 2009-07-02 Hitachi Ltd バックアップシステム及び方法
JP2010026939A (ja) * 2008-07-23 2010-02-04 Hitachi Ltd 記憶制御装置及び方法
JP2010191647A (ja) * 2009-02-18 2010-09-02 Hitachi Ltd ファイル共有システム、ファイルサーバ、ファイル管理方法
US20120016839A1 (en) * 2010-07-15 2012-01-19 Delphix Corp. De-Duplication Based Backup Of File Systems
JP2012216025A (ja) * 2011-03-31 2012-11-08 Nec Corp データ複製装置、データ複製制御方法、及びデータ複製制御プログラム
US20140095823A1 (en) * 2012-09-28 2014-04-03 Vmware, Inc. Virtual Disk Snapshot Consolidation Using Block Merge

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022043279A (ja) * 2021-01-06 2022-03-15 バイドゥ ユーエスエイ エルエルシー 仮想化環境内の人工知能アクセラレータ・ステータス確認を用いる仮想マシン移行のための方法
JP7290708B2 (ja) 2021-01-06 2023-06-13 バイドゥ ユーエスエイ エルエルシー 仮想化環境内の人工知能アクセラレータ・ステータス確認を用いる仮想マシン移行のための方法
US12039356B2 (en) 2021-01-06 2024-07-16 Baidu Usa Llc Method for virtual machine migration with checkpoint authentication in virtualization environment
US12086620B2 (en) 2021-01-06 2024-09-10 Kunlunxin Technology (Beijing) Company Limited Method for virtual machine migration with artificial intelligence accelerator status validation in virtualization environment

Also Published As

Publication number Publication date
US20150066857A1 (en) 2015-03-05
JP6309103B2 (ja) 2018-04-11
EP3042289A1 (en) 2016-07-13
WO2015034827A1 (en) 2015-03-12
EP3042289A4 (en) 2017-03-15
US10628378B2 (en) 2020-04-21

Similar Documents

Publication Publication Date Title
JP6309103B2 (ja) スナップショットおよびクローンの複製
US11086545B1 (en) Optimizing a storage system snapshot restore by efficiently finding duplicate data
US10956364B2 (en) Efficient data synchronization for storage containers
US10776315B2 (en) Efficient and flexible organization and management of file metadata
US11372824B2 (en) Remotely mounted file system with stubs
CN109726044B (zh) 基于数据块名称从重复数据删除存储中高效还原多个文件
CA2736961C (en) Atomic multiple modification of data in a distributed storage system
US11321192B2 (en) Restoration of specified content from an archive
US10248336B1 (en) Efficient deletion of shared snapshots
US10282099B1 (en) Intelligent snapshot tiering
CN110062925A (zh) 用于云集成的快照元数据布置
US10872017B2 (en) Restoring a file system object
US9990156B1 (en) Deduplicating snapshots associated with a backup operation
JP5650982B2 (ja) ファイルの重複を排除する装置及び方法
CN109144416B (zh) 查询数据的方法和装置
US10628298B1 (en) Resumable garbage collection
CN109753381B (zh) 一种基于对象存储的持续数据保护方法
KR102089710B1 (ko) 연속 데이터 관리 시스템 및 방법

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170509

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170725

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20170926

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20171228

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20180123

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: 20180220

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180313

R150 Certificate of patent or registration of utility model

Ref document number: 6309103

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250