JP2016524220A - 効率的なデータ複製及びガベージコレクション予測 - Google Patents
効率的なデータ複製及びガベージコレクション予測 Download PDFInfo
- Publication number
- JP2016524220A JP2016524220A JP2016513944A JP2016513944A JP2016524220A JP 2016524220 A JP2016524220 A JP 2016524220A JP 2016513944 A JP2016513944 A JP 2016513944A JP 2016513944 A JP2016513944 A JP 2016513944A JP 2016524220 A JP2016524220 A JP 2016524220A
- Authority
- JP
- Japan
- Prior art keywords
- data
- remote server
- source
- store
- pool
- 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
Links
- 230000010076 replication Effects 0.000 title abstract description 52
- 238000000034 method Methods 0.000 claims abstract description 158
- 230000001186 cumulative effect Effects 0.000 claims abstract description 26
- 238000013500 data storage Methods 0.000 claims description 48
- 239000002131 composite material Substances 0.000 claims description 24
- 230000003362 replicative effect Effects 0.000 claims description 9
- 238000012217 deletion Methods 0.000 claims description 4
- 230000037430 deletion Effects 0.000 claims description 4
- 230000037406 food intake Effects 0.000 claims description 3
- 230000003213 activating effect Effects 0.000 claims 1
- 238000013481 data capture Methods 0.000 claims 1
- 238000003860 storage Methods 0.000 description 302
- 238000013523 data management Methods 0.000 description 73
- 230000008569 process Effects 0.000 description 45
- 230000002123 temporal effect Effects 0.000 description 44
- 230000006870 function Effects 0.000 description 41
- 230000000875 corresponding effect Effects 0.000 description 33
- 238000007726 management method Methods 0.000 description 27
- 238000005457 optimization Methods 0.000 description 27
- 238000010586 diagram Methods 0.000 description 24
- 230000002085 persistent effect Effects 0.000 description 22
- 238000004422 calculation algorithm Methods 0.000 description 19
- 230000008859 change Effects 0.000 description 18
- 238000011084 recovery Methods 0.000 description 16
- 230000014759 maintenance of location Effects 0.000 description 15
- 230000007246 mechanism Effects 0.000 description 15
- 238000004364 calculation method Methods 0.000 description 12
- 230000007774 longterm Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 239000000835 fiber Substances 0.000 description 9
- 238000013507 mapping Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 8
- 238000002360 preparation method Methods 0.000 description 8
- 230000000717 retained effect Effects 0.000 description 8
- 230000001360 synchronised effect Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 6
- 230000003993 interaction Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 239000000470 constituent Substances 0.000 description 5
- 238000010276 construction Methods 0.000 description 5
- 238000013508 migration Methods 0.000 description 5
- 230000005012 migration Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 230000004913 activation Effects 0.000 description 4
- 230000006399 behavior Effects 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 4
- 230000001276 controlling effect Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000010899 nucleation Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000003786 synthesis reaction Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000006378 damage Effects 0.000 description 3
- 238000013499 data model Methods 0.000 description 3
- 238000011010 flushing procedure Methods 0.000 description 3
- 230000008014 freezing Effects 0.000 description 3
- 238000007710 freezing Methods 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 2
- 238000013506 data mapping Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 230000001404 mediated effect Effects 0.000 description 2
- 230000008092 positive effect Effects 0.000 description 2
- 230000007958 sleep Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 206010002091 Anaesthesia Diseases 0.000 description 1
- 230000037005 anaesthesia Effects 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000003090 exacerbative effect Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000009396 hybridization Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000002147 killing effect Effects 0.000 description 1
- 238000012005 ligant binding assay Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- WCJNRJDOHCANAL-UHFFFAOYSA-N n-(4-chloro-2-methylphenyl)-4,5-dihydro-1h-imidazol-2-amine Chemical compound CC1=CC(Cl)=CC=C1NC1=NCCN1 WCJNRJDOHCANAL-UHFFFAOYSA-N 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000010257 thawing Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 230000002747 voluntary effect Effects 0.000 description 1
- 230000003442 weekly effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1727—Details of free space management performed by the file system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1748—De-duplication implemented within the file system, e.g. based on file segments
- G06F16/1752—De-duplication implemented within the file system, e.g. based on file segments based on file chunks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
効率的なデータ複製のためのシステム及び方法が本明細書に記載される。リモートサーバは、リモートサーバ上に既に存在するソースオブジェクト内のデータを表すオブジェクトハッシュのセットと、リモートサーバ上に存在しないソースオブジェクトハッシュを示すデータと、を生成する。ソースローカル重複排除ストアは、ソースオブジェクトの特定された部分を、リモートサーバに送信して、リモートサーバ上にソースオブジェクトを複製する。ガベージコレクション予測のためのシステム及び方法もまた、本明細書に記載される。累積差分カウントは、ノードが時間グラフに追加されると更新され、剥奪差分カウントは、ノードが時間グラフから除去されると更新される。ガベージコレクションの結果は、累積差分カウント及び剥奪差分カウントのうちの少なくとも1つに基づいて予測される。
Description
本発明は、概して、データ管理、データ保護、障害復旧、及びビジネス継続に関する。より具体的には、本発明は、効率的なデータ複製及びガベージコレクション予測のためのシステム及び方法に関する。
アプリケーションデータのライフサイクルを管理するためのビジネス要件は、従来的に、それぞれがライフサイクルの一部に対応する複数の点ソリューションを展開することによって達成されてきた。これは、結果として、データの複数のコピーが作成され、個々の記憶装置レポジトリに複数回移動される、複雑かつ高価な基盤をもたらしている。サーバ仮想化の採用により、単純で軽く低費用のコンピュータ基盤が増えてきた。これは、仮想ホスト及び記憶装置のより大規模な展開をもたらし、新たな計算モデルと現在のデータ管理実装との間のギャップをさらに悪化させている。
ビジネスサービスを提供するアプリケーションは、それらのデータの、そのライフサイクルの種々の段階での記憶に依存する。図1は、給与管理等のビジネスサービスの基底となるデータベース等のアプリケーションのデータに適用される、典型的なデータ管理操作セットを示す。ビジネスサービスを提供するために、アプリケーション102は、何らかの契約レベルの信頼性及び可用性を有する一次データ記憶装置122を必要とする。
バックアップ104は、ハードウェアもしくはソフトエアの故障または人的過誤による破損からの保護、または一次データ記憶装置の保護のために作製される。典型的には、バックアップは、1日1回または週1回、ローカルディスクまたはテープ124に作製され、より少ない頻度(週1回または月1回)でリモートの物理的に安全な位置125に移動され得る。
同じデータベースに基づく新しいアプリケーションの同時の開発及び試験106は、開発チームが、データのもう1つのコピー126へのアクセスを有することを必要とする。そのようなスナップショットは、開発スケジュールに応じて、週1回作製され得る。
法的及び自発的なポリシーのコンプライアンス108は、一部のデータが将来的に安全にアクセスするために数年間保管されることを必要とし、通常、データは、長期アーカイビングシステム128に定期的に(例えば、月1回)コピーされる。
障害復旧サービス110は、一次ビジネスサービスを提供するシステムが何らかの物理的障害により障害を起こした場合にデータの壊滅的な消失から保護する。一次データは、他の制約(費用等)を考慮して実現可能な程度に頻繁に、物理的に異なる位置にコピーされる130。障害が起きた場合には、一次サイトが再構築され、データは安全なコピーから戻される。
ビジネス継続サービス112は、一次サイトに障害が起きた場合に、ビジネスサービスの継続を確保するための設備を提供する。通常、これは、一次データのロックステップ直前(in near−locksteps)にある一次データのホットコピー132、ならびに入来する要求をビジネス継続サーバに切り替えるための重複システム及びアプリケーション及び機序を必要とする。
このように、データ管理は、現在のところ、ライフサイクルの異なる部分を管理する点アプリケーションの集合である。これは、過去20年間にわたるデータ管理ソリューションの進化の結果である。
上述のもの等、現在のデータ管理アーキテクチャ及び実装は、複数のアプリケーションがデータライフサイクル管理の異なる部分に対応することを伴い、これらのすべては、ある特定の共通の機能:(a)アプリケーションデータのコピーを作製すること(この動作の頻度は、一般には目標復旧時点(RPO)と称される)、(b)専用の記憶レポジトリに、典型的には独自の形式で、データのコピーを記憶すること、ならびに(c)保持時間として測定される、ある特定の期間の間、コピーを保持すること、を行う。点ソリューションのそれぞれにおける主な違いは、RPOの頻度、保持時間、及び使用される個々のレポジトリの特徴、例えば、容量、費用、及び地理的な位置におけるものである。
一連の先行特許出願、例えば、米国第12/947,375号において、データ管理仮想化を使用した、データを管理するためのシステム及び方法が提示されている。バックアップ、複製、及びアーカイビングといったデータ管理アクティビティは、それらが、個々にかつ別個に構成及び起動される必要がないという点で、仮想化されている。代わりに、ユーザは、データのライフサイクルに関してそれらのビジネス要件を定義し、データ管理仮想化システムが、これらの操作を自動で行う。スナップショットが一次記憶装置から二次記憶装置に取られ、このスナップショットが、次いで、他の二次記憶装置へのバックアップ操作に使用される。本質的に、任意の数のこれらのバックアップが作製され、サービスレベル合意によって示されるレベルのデータ保護を提供する。
任意の近傍オブジェクトの使用は、それと、複製されているオブジェクトとの差分の程度に関わらず、インデックス内のこれらのデータハッシュの検索が必要とされないため、複製効率を、リモートシステム上に既に存在するその構成的データチャンクの割合に比例する程度まで増加させ得る。
コンテンツアドレス可能ストア(例えば、図12を参照されたい)にツリーとしてオブジェクトを集め、それを表すための方法を参照すると、所与の深度の任意のハッシュがリモートストア上に存在する場合、それよりも低深度の構成ハッシュも、したがって存在しているはずであることがさらに推察され得る。このように、複製する際により高深度の(greater-depth)ハッシュを一致させることは、通常、より低深度のハッシュの一致よりも効率的である。例として1つのそのような実装において、各深度1ハッシュは2MiBのデータを表し得、512個の深度0ハッシュはそれぞれが4KiBのデータを表す。この例を考えると、深度1ハッシュの検索の成功は、インデックス検索操作の回数を511回低減させるであろう。
参照されない記憶データにおおよそ近い量が、どの時点においても即座に計算され得るように、重複排除ストアへのオブジェクトの取り込み及び重複排除ストアからのオブジェクトの消去を通じて統計セットを維持することによって、ガベージコレクションプロセス(例えば、マーク/スイーププロセス)の実行の可能性のあるペイオフを推算するためのシステム及び方法もまた、本明細書に記載される。これは、実行プロセスによって、またはエンドユーザによって、ガベージコレクションのマーク及びスイーププロセスに時間を投じることが妥当であるかどうかに関しての決定がなされ得ることを可能にする。これを提供する重複排除ストアの特徴には、オブジェクトの時間的ツリー、差分付け、及び/または処理中のわずかなコピーが含まれ得る。
開示される主題によると、ガベージコレクションの有効性を予測するために合成の近傍値及び履歴ツリーに基づく統計を複製に使用するためのシステム、方法、及び非一過性コンピュータ可読媒体が、提供される。
開示される主題は、複製のためのデータオブジェクトを作成するための方法を含む。コンピューティングデバイスは、ソースデータストア及びターゲットデータストアの両方に、複製のための空のデータオブジェクトを作成する。コンピューティングデバイスは、ソースデータストア上の複製されるソースデータオブジェクトのハッシュ値セットを決定する。コンピューティングデバイスは、このハッシュ値セットをリモートデータストアに伝送する。コンピューティングデバイスは、リモートデータストアから応答データを受信し、この応答データは、ハッシュ値セットのうちのどのハッシュ値がリモートデータストアに存在しているかを示す第1のデータと、ハッシュ値セットのうちのどのハッシュ値がリモートデータストアに存在していないかを示す第2のデータと、を含む。コンピューティングデバイスは、第1のデータ、第2のデータ、及び複製のための空のデータオブジェクトに基づいて複製のための完全なデータオブジェクトを生成する。
開示される主題は、記憶デバイスから返還され得る記憶の量を予測するための方法を含む。コンピューティングデバイスは、基本オブジェクトと、記憶デバイスに記憶されている基本オブジェクトの1つ以上のより新しい代のオブジェクトとの間の差分の累積差分を計算する。コンピューティングデバイスは、記憶デバイスから除去されているより新しい代のオブジェクトのうちの1つ以上に基づいて、剥奪差分を計算する。コンピューティングデバイスは、累積差分及び剥奪差分に基づいて、記憶デバイスから返還され得る記憶の量を計算する。
いくつかの実施形態において、本明細書に記載される技法は、リモートサーバに既に記憶されているデータに基づいて、ソースローカル重複排除ストアからリモートサーバにオブジェクトを複製して、ローカル重複排除ストアからリモートサーバに送信される重複データの量を低減する、コンピュータで処理される方法を提供する。本方法は、ソースローカル重複排除ストアからリモートサーバに、ソースローカル重複排除ストアからリモートサーバに複製されるソースオブジェクトのハッシュのセットを送信することを含む。本方法は、ソースローカル重複排除ストアによって、リモートサーバ上に既に存在しているソースオブジェクト内のデータを表すオブジェクトハッシュのセットと、リモートサーバ上に存在しないソースオブジェクトハッシュを示すデータと、を含むデータを、リモートサーバから受信することを含む。本方法は、ソースローカル重複排除ストアによって、受信されたデータに基づいて、リモートサーバ上に存在しないソースオブジェクトの部分を特定することを含む。本方法は、ソースローカル重複排除ストアによって、ソースオブジェクトを複製するためにリモートサーバ上に存在しないソースオブジェクトの部分のみがリモートサーバにコピーされるように、ソースオブジェクトの特定された部分をリモートサーバに伝送して、リモートサーバ上にソースオブジェクトを複製することを含む。
いくつかの実施形態において、本明細書に記載される技法は、リモートサーバに既に記憶されているデータに基づいて、ソースローカル重複排除ストアからリモートサーバにオブジェクトを複製して、ローカル重複排除ストアからリモートサーバに送信される重複データの量を低減する、コンピュータで処理される方法を提供する。本方法は、リモートサーバによって、ソースローカル重複排除ストアからリモートサーバに複製されるソースオブジェクトのハッシュのセットを受信することを含む。本方法は、リモートサーバによって、リモートサーバ上に既に存在するソースオブジェクト内のデータを表すオブジェクトハッシュのセットと、リモートサーバ上に存在しないソースオブジェクトハッシュを示すデータと、を生成することを含む。本方法は、ソースローカル重複排除ストアが、リモートサーバ上に既に存在するソースオブジェクトからのデータを特定することができ、それによって、ソースオブジェクトを複製するためにリモートサーバ上に存在しないソースオブジェクトの残りのデータのみがリモートサーバにコピーされるように、リモートサーバによって、生成されたデータをソースローカル重複排除ストアに送信することを含む。
いくつかの実施形態において、本明細書に記載される技法は、リモートサーバに既に記憶されているデータに基づいて、ソースローカル重複排除ストアからリモートサーバにオブジェクトを複製して、ローカル重複排除ストアからリモートサーバに送信される重複データの量を低減する、コンピュータで処理される方法を提供する。本方法は、ソースローカル重複排除ストアからリモートサーバに、ソースローカル重複排除ストアからリモートサーバに複製されるソースオブジェクトのハッシュのセットを送信することを含む。本方法は、リモートサーバによって、リモートサーバ上に既に存在するソースオブジェクト内のデータを表すオブジェクトハッシュのセットと、リモートサーバ上に存在しないソースオブジェクトハッシュを示すデータと、を生成することを含む。本方法は、リモートサーバによって、生成されたデータをソースローカル重複排除ストアに伝送することを含む。本方法は、ソースローカル重複排除ストアによって、受信されたデータに基づいて、リモートサーバ上に存在しないソースオブジェクトの部分を特定することを含む。本方法は、ソースローカル重複排除ストアによって、ソースオブジェクトを複製するためにリモートサーバ上に存在しないソースオブジェクトの部分のみがリモートサーバにコピーされるように、ソースオブジェクトの特定された部分をリモートサーバに伝送して、リモートサーバ上にソースオブジェクトを複製することを含む。本方法は、リモートサーバによって、リモートサーバ上に既に存在するソースオブジェクト内のデータを表すオブジェクトハッシュのセットを含むリモートオブジェクトと、特定された部分と、を集めることを含み、ここで、リモートオブジェクトは、ソースオブジェクトと同一である。
いくつかの実施形態において、本明細書に記載される技法は、重複排除化データストアについてのファイルシステムデータの取り込み及び消去の情報を流すことを維持して、ガベージコレクション操作を行うことなく重複排除化データストアでのガベージコレクション操作の結果を予測するコンピュータで処理される方法を提供する。本方法は、コンピュータデバイスによって、時間グラフを維持することを含み、時間グラフはノードを含み、ノードはオブジェクトに対するハッシュ参照を含む。本方法は、コンピュータデバイスによって、ノードが時間グラフに追加されたときに、時間グラフにおける親ノードとその子ノードとの間のいくつかのハッシュ差分を含む累積差分カウントを更新することを含む。本方法は、コンピュータデバイスによって、ノードが時間グラフから除去されたときに、除去されたノードによって参照されるが除去されたノードの親ノードまたは除去されたノードの任意の子ノードのいずれによっても参照されないいくつかのハッシュ差分を含む剥奪差分カウントを更新することを含む。本方法は、コンピュータデバイスによって、累積差分カウントと剥奪差分カウントのうちの少なくとも1つに基づいて、ガベージコレクションの結果を予測することを含む。
いくつかの実施形態において、本明細書に記載される技法は、重複排除化データストアについてのファイルシステムデータの取り込み及び消去の情報を流すことを維持して、ガベージコレクション操作を行うことなく重複排除化データストアでのガベージコレクション操作の結果を予測するためのコンピュータ化されたシステムを提供し、このシステムは、プロセッサに時間グラフを維持させるように構成される、メモリに記憶されたモジュールを起動するように構成されるプロセッサを含み、時間グラフはノードを含み、ノードはオブジェクトに対するハッシュ参照を含む。メモリに記憶されたモジュールは、プロセッサに、ノードが時間グラフに追加されたときに累積差分カウントを更新させるように構成され、累積差分カウントは、時間グラフにおける親ノードとその子ノードとの間のいくつかのハッシュ差分を含む。メモリに記憶されたモジュールは、プロセッサに、ノードが時間グラフから除去されたときに、除去されたノードによって参照されるが除去されたノードの親ノードまたは除去されたノードの任意の子ノードのいずれによっても参照されないいくつかのハッシュ差分を含む剥奪差分カウントを更新させるように構成される。メモリに記憶されたモジュールは、プロセッサに、累積差分カウント及び剥奪差分カウントのうちの少なくとも1つに基づいてガベージコレクションの結果を予測させるように構成される。
いくつかの実施形態において、本明細書に記載される技法は、装置に、時間グラフ(時間グラフはノードを含み、ノードはオブジェクトに対するハッシュ参照を含む)を維持させるように操作可能な実行可能命令を有する、非一過性コンピュータ可読媒体を提供する。実行可能命令は、装置に、ノードが時間グラフに追加されたときに、時間グラフにおける親ノードとその子ノードとの間のいくつかのハッシュ差分を含む累積差分カウントを更新させるように操作可能である。実行可能命令は、装置に、ノードが時間グラフから除去されたときに、除去されたノードによって参照されるが除去されたノードの親ノードまたは除去されたノードの任意の子ノードのいずれによっても参照されないいくつかのハッシュ差分を含む剥奪差分カウントを更新させるように操作可能である。実行可能命令は、装置に、累積差分カウント及び剥奪差分カウントのうちの少なくとも1つに基づいて、ガベージコレクションの結果を予測させるように操作可能である。
開示される手段のこれら及び他の機能は、図面、発明を実施するための形態、及び特許請求の範囲を考察した後に、より完全に理解されるであろう。本明細書に用いられる表現及び用語は、説明の目的のためであり、制限するとみなされるものではないことを理解されたい。
以下の説明において、開示される主題の十分な理解を提供するために、開示される主題のシステム及び方法、ならびにそのようなシステム及び方法が動作し得る環境に関する多数の具体的な詳細が記載される。しかしながら、当業者であれば、開示される主題が、そのような具体的な詳細なしに実施され得ること、ならびに当該技術分野で周知のある特定の特徴が、開示される主題の不必要な混乱を避けるために、詳細には記載されていないことを理解するであろう。加えて、以下に提供される実施形態は例示であること、ならびに開示される主題の範囲内の他のシステム及び方法が存在することが企図されることが、理解されるであろう。
本開示は、2つのオブジェクトをそれらのデータオブジェクトのライフにわたって比較するために使用され得る仮想記憶プールに記憶されたオブジェクトのデータフィンガープリントを生成することに関する。
本開示はまた、異なる仮想記憶プールを使用したコピー及び差分付け操作を行うためにハイブリッドシーディングを使用する、改善されたインクリメンタルコピー性能のための方法にも関する。
本開示はまた、記憶プールのパイプラインを使用した障害復旧及びビジネス継続のためのデータ複製の機序にも関する。
以下に記載されるデータ管理仮想化システムにおいて、ユーザは、データのライフサイクルに関するビジネス要件を定義し、データ管理仮想化システムが、これらの操作を自動で行う。スナップショットが一次記憶装置から二次記憶装置に取られ、このスナップショットが、次いで、他の二次記憶装置へのバックアップ操作に使用される。本質的に、任意の数のこれらのバックアップが作製され、サービスレベル合意によって示されるレベルのデータ保護を提供する。
データ管理エンジンは、第1の記憶プールにアプリケーションデータのポイントインタイム(point−in−time)イメージを作成するためのスナップショット操作のシーケンスを実行するように操作可能であり、各継続的なポイントインタイムイメージは、アプリケーションデータの特定の継続した時間状態に対応し、各スナップショット操作は、どのアプリケーションデータが変化したか、及び対応する時間状態の変化したアプリケーションデータのコンテンツを示す差分情報を作成する。データ管理エンジンはまた、非連続的な時間状態で実行がスケジュールされているアプリケーションデータに対して少なくとも1つのバックアップ機能を実行するように操作可能であり、データの対応するバックアップコピーについてアプリケーションデータに行われた最後のバックアップ機能の時間状態を示す、時間状態情報を有する履歴情報も十分に維持する。データ管理エンジンは、アプリケーションデータに行われた最後のバックアップ機能の時間状態と、アプリケーションデータに行われる現在スケジュールされているバックアップ機能の時間状態との間の各時間状態の差分情報から、複合(composite)差分情報を作成し、複合差分情報を第2の記憶プールに送信し、最後の時間状態におけるデータのバックアップコピーでコンパイルして、現在の時間状態のためのデータのバックアップコピーを作成する。
本開示によるデータ管理仮想化技術は、以下の原理に基づくアーキテクチャ及び実装に基づく。
第1に、アプリケーションのビジネス要件を、そのデータライフサイクル全体のサービスレベル合意(SLA)により定義する。SLAは、単一のRPOである目標保持及び復旧時間(RTO)よりも上位である。それは、データライフサイクルの各段階のデータ保護特徴について記述する。各アプリケーションは、異なるSLAを有し得る。
第2に、データ保護ライフサイクルを管理する統一データ管理仮想化エンジンを提供し、データを、記憶容量及びネットワーク帯域が改善された種々の記憶レポジトリにわたって移動させる。データ管理仮想化システムは、経時的に変化したデータの部分を追跡すること、ならびにコピー及び移動が行われる必要があるデータ量を低減させるデータ重複排除及び圧縮アルゴリズムによって、現代の記憶システムの拡張機能を利用することによりこれらの改善を達成する。
第3に、ライフサイクル内の複数の要素の基礎となるアプリケーションデータの単一のマスターコピーを活用する。バックアップ、アーカイブ、及び複製等のデータ管理操作の多くは、保護されるデータの安定な一貫性コピーに依存する。データ管理仮想化システムは、複数の目的のためにデータの単一のコピーを活用する。このシステムによって維持されるデータの単一のインスタンスは、各データ管理機能が必要に応じてそこから追加のコピーを作成することができる、ソースとして機能し得る。これは、従来のアプローチではアプリケーションデータが複数の独立したデータ管理アプリケーションによって複数回コピーされる必要があることと対照的である。
第4に、物理的記憶リソースを抽象化して、ローカル及びリモートディスク、ソリッドステートメモリ、テープ及び光媒体、プライベート、パブリック、及び/またはハイブリッド記憶クラウドを含む異なるクラスの記憶装置から仮想化される一連のデータ保護記憶プールにする。記憶プールは、種類、物理的位置、または基底の記憶技術に依存しないアクセスを提供する。データのライフサイクルに関するビジネス要件は、データを異なる時点で異なる種類の記憶媒体にコピーすることを要求し得る。データ管理仮想化システムは、ユーザが異なる記憶媒体を記憶プール、例えば、早期復旧(Quick Recovery)プール(これには、高速ディスクが含まれ得る)及び費用効率的な長期記憶プール(これは、高容量ディスク上の重複排除化ストアまたはテープライブラリであり得る)に分類及び統合することを可能にする。データ管理仮想化システムは、これらのプールの間でデータを移動させて、各記憶媒体の固有の特徴を活用することができる。記憶プールの抽象化は、種類、物理的位置、または基底の記憶技術に依存しないアクセスを提供する。
第5に、基底のデバイスの機能及び重複排除後のアプリケーションデータを用いて、記憶プールと障害位置との間のデータの移動を改善する。データ管理仮想化システムは、記憶プールを含む記憶システムの機能を発見し、これらの機能を利用して、データを効率的に移動させる。記憶システムが、あるデータ量のスナップショットまたはクローンを作成する機能をサポートするディスクアレイである場合、データ管理仮想化システムは、1つの場所からデータを読み出し、それを別の場所に書き込むのではなく、この機能を利用し、スナップショットを使用して、データのコピーを作製する。同様に、記憶システムが、変更追跡をサポートする場合、データ管理仮想化システムは、その変更のみを古いコピーに更新して、新しいコピーを効率的に作成する。データをネットワーク全体で移動させるとき、データ管理仮想化システムは、ネットワークの反対側で既に利用可能なデータを送信することを回避する重複排除及び圧縮アルゴリズムを使用する。
データ移動を改善する1つの重要な態様は、アプリケーションデータが長期にわたり徐々に変化することを認識することである。今日作製されるアプリケーションのコピーは、一般に、昨日作製された同じアプリケーションのコピーに多くの類似性を有する。実際に、データの今日のコピーは、一連のデルタ変換を伴う昨日のコピーとして表すことができ、ここで、デルタ変換自体のサイズは、通常、コピーそのものにおけるデータのすべてよりも大幅に小さい。データ管理仮想化システムは、これらの変換を、ビットマップまたはエクステントリストの形式でキャプチャし、記録する。本システムの一実施形態において、基底の記憶リソース、すなわちディスクアレイまたはサーバ仮想化システムは、ボリュームまたはファイルになされた変更を追跡することができ、これらの環境において、データ管理仮想化システムは、これらの変更リストを得るように記憶リソースに問い合わせし、保護されているデータとともにそれらを保存する。
データ管理仮想化システムの好ましい実施形態において、アプリケーションの一次データアクセス経路を傍受(eavesdrop)する機序が存在し、これは、データ管理仮想化システムが、アプリケーションデータのどの部分が修正されたかを調べ、修正されたデータ自体のビットマップを生成することを可能にする。例えば、アプリケーションが、特定の期間にブロック100、200、及び300を修正すると、データ管理仮想化システムは、これらのイベントを傍受し、これらの特定のブロックが修正されたことを示すビットマップを作成する。アプリケーションデータの次のコピーを処理するときに、データ管理仮想化システムは、これらのみが修正されたブロックであることを認識しているため、ブロック100、200、及び300のみを処理することになる。
本システムの一実施形態において、アプリケーションのための一次記憶装置が、現代のディスクアレイまたは記憶装置仮想化機器である場合、データ管理仮想化システムは、データの初期コピーを作製する基底の記憶デバイスのポイントインタイムスナップショット機能を利用する。この仮想コピー機序は、初期コピーを作製する迅速、効率的、かつ影響の少ない技法であり、これは、すべてのビットが一緒にコピーまたは記憶されることを保証するものではない。代わりに、仮想コピーは、コピーがアクセス時に再構築されることを可能にする、コピーオンライトボリュームビットマップまたはエクステント等、メタデータ及びデータ構造を維持することによって構築される。コピーは、アプリケーション及び一次記憶デバイスに軽い影響を有する。別の実施形態において、アプリケーションがVMwareまたはXen等のサーバ仮想化システムに基づく場合、データ管理仮想化システムは、サーバ仮想化システムに内蔵された類似の仮想マシンスナップショット機能を使用する。仮想コピー機能が利用できない場合、データ管理仮想化システムは、その独自の内蔵スナップショット機序を含み得る。
システムがサポートするデータ管理機能のすべての基底にあるデータプリミティブとしてスナップショットを使用することが可能である。これは軽量であるため、要求された操作自体はスナップショットでない場合ですら、スナップショットを内部操作として使用することができ、これは、他の操作を可能にし、促進するために作成される。
スナップショットの作成時には、イメージがアプリケーションによって使用することができる状態に復元され得るように、固有のスナップショットまたは固有のイメージを作成するために伴われるある特定の準備操作が存在し得る。これらの準備操作は、ポリシーに従ってスケジュールされているバックアップコピー等、スナップショットがシステム内の複数のデータ管理機能にわたって活用される場合ですら、1回行われるだけでよい。準備操作には、データキャッシュのフラッシュ及びアプリケーション状態の凍結を含むアプリケーション休止が含まれ得、さらに、当該技術分野で既知の他の操作及びアプリケーションからイメージとともに記憶されるメタデータ情報を収集することといった完全なイメージを保持するのに有用な他の操作も含まれ得る。
図2は、仮想化データ管理システムが、これらの原理に従って上述のデータライフサイクル要件に対処することができる、1つの手段を図示する。
ローカルバックアップ要件を満たすために、効率的なスナップショットのシーケンスが、ローカル高可用性記憶装置202内に作製される。これらのスナップショットうちのいくつかを使用して、別のコピーを作製することなく開発/試験要件を満たす。ローカルバックアップのより長期の保持のために、コピーが長期ローカル記憶装置204に効率的に作製され、これは、この実装では、重複排除を用いてコピーの繰り返しを低減させる。長期記憶装置内のコピーは、SLAによって適用される保持ポリシーに応じて、バックアップとしてアクセスされ得るか、またはアーカイブとして扱われる。データのコピーが、リモートバックアップ及びビジネス継続の要件を満たすためにリモート記憶装置206に作製され、ここでも、単一のコピーセットが両方の目的を満たす。リモートバックアップ及び障害復旧の代替策として、データのさらなるコピーが、商業的またはプライベートのクラウド記憶プロバイダによってホストされるリポジトリ208に効率的に作製され得る。
データ管理仮想化システム
図3は、上述の原理を実装するデータ管理仮想化システムの高レベルの構成要素を図示する。好ましくは、本システムは、以下にさらに記載されるこれらの基本的な機能構成要素を含む。
図3は、上述の原理を実装するデータ管理仮想化システムの高レベルの構成要素を図示する。好ましくは、本システムは、以下にさらに記載されるこれらの基本的な機能構成要素を含む。
アプリケーション300は、データを作製し、それを所有する。これは、何らかのコンピュータ計算の必要性を満たすためにユーザによって展開されているソフトウェア、例えば、電子メールシステム、データベースシステム、または財務報告システムである。アプリケーションは、典型的に、サーバ上で起動し、記憶装置を利用する。例示の目的で、1つのアプリケーションのみが示されている。現実的には、単一のデータ管理仮想化システムによって管理される数百またはさらには数千のアプリケーションが存在し得る。
記憶リソース302は、アプリケーションデータがそのライフサイクルを通して記憶される場所である。記憶リソースは、ユーザがデータ記憶要件に対処するために所有している、内部ディスクドライブ、ディスクアレイ、光学及びテープ記憶ライブラリ、ならびにクラウドに基づく記憶システムを含む、物理的な記憶資源である。記憶リソースには、アプリケーションデータのオンラインのアクティブなコピーが記憶される一次記憶装置310、及び追加のアプリケーションデータコピーがバックアップ、障害復旧、アーカイブ、報告、及び他の用途といった目的で記憶される二次記憶装置312が含まれる。二次記憶リソースは、一次記憶装置と同じ筐体内の追加の記憶装置、ならびに同じデータセンタ、別の位置、またはインターネット上の類似または異なる記憶技術に基づく記憶装置を含み得る。
1つ以上の管理ワークステーション308は、ユーザが、アプリケーションデータのライフサイクルを定義するサービスレベル合意(SLA)304を規定することを可能にする。管理ワークステーションは、データ管理仮想化システムを構成、監視、または制御するために使用されるデスクトップもしくはラップトップコンピュータ、またはモバイルコンピューティングデバイスである。サービスレベル合意は、アプリケーションデータの二次コピーの作成、保持、及び消去に関連する詳細なビジネス要件をキャプチャする詳細な規定である。SLAは、従来的なデータ管理アプリケーションにおいて単一のクラスの二次記憶装置に関するコピーの頻度及び予測される復元時間を表すのに使用される単純なRTO及びRPOよりも上位である。SLAは、データライフサイクル規定内の複数の段階をキャプチャし、各クラスの二次記憶装置内で不均一な頻度及び保持規定を可能にする。SLAは、図7により詳細に記載される。
データ管理仮想化エンジン306は、アプリケーションデータのライフサイクルのすべてをSLAで指定される通りに管理する。それは、潜在的に、多数のアプリケーションに関する多数のSLAを管理する。データ管理仮想化エンジンは、管理ワークステーションを通じてユーザからの入力を受け取り、アプリケーションとやりとりして、アプリケーションの一次記憶リソースを発見する。データ管理仮想化エンジンは、どのデータを保護する必要があり、どの二次記憶リソースがこの保護の必要性を満たすのに最良であるかを決定する。例えば、企業が、ビジネス継続目的ならびにバックアップ目的で、非常に短い間隔でその会計データのコピーを必要とすると指定する場合、エンジンは、適切なSLAセットに従って、短い間隔で第1の記憶プールに会計データのコピーを作成し、さらにより長い間隔で第2の記憶プールに会計データのバックアップコピーを作成することを決定し得る。これは、記憶アプリケーションのビジネス要件によって決定され得る。
エンジンは、次いで、利用可能な記憶リソースの高度な機能を使用して、アプリケーションデータのコピーを作製する。上述の例において、エンジンは、記憶機器の内蔵仮想コピーまたはスナップショット機能を使用して、短い間隔のビジネス継続コピーをスケジュールし得る。データ管理仮想化エンジンは、SLAにおいてキャプチャされるビジネス要件を満たすために、記憶リソース間でアプリケーションデータを移動させる。データ管理仮想化エンジンは、図4により詳細に記載される。
全体としてのデータ管理仮想化システムは、単一のホストコンピュータシステムまたは機器内に配置され得るか、またはそれは、1つの論理エンティティであるが、汎用及び専用システムのネットワーク全体に物理的に分配されたものであり得る。本システムのある特定の構成要素はまた、コンピューティングまたは記憶クラウド内に配置されてもよい。
データ管理仮想化システムの一実施形態において、データ管理仮想化エンジンは、大部分が、フォールトトレラントな冗長コンピュータ対上の複数のプロセスとして動作する。データ管理仮想化エンジンのある特定の構成要素は、アプリケーションサーバ内のアプリケーション付近で動作し得る。いくつかの他の構成要素は、記憶ファブリックまたは記憶システム自体内で、一次及び二次記憶装置の付近で動作し得る。管理ステーションは、典型的に、安全なネットワークを介してエンジンに接続する、デスクトップ及びラップトップコンピュータ、ならびにモバイルデバイスである。
データ管理仮想化エンジン
図4は、本発明のある特定の実施形態によるデータ管理仮想化エンジン306の構造的概要を図示する。306エンジンには、以下のモジュールが含まれる。
図4は、本発明のある特定の実施形態によるデータ管理仮想化エンジン306の構造的概要を図示する。306エンジンには、以下のモジュールが含まれる。
アプリケーション特化モジュール402。このモジュールは、アプリケーション300からのメタデータを制御及び収集することに関与する。アプリケーションのメタデータには、アプリケーションの種類、その構造に関する詳細、そのデータストアの位置、その現在の動作状態等、アプリケーションに関する情報が含まれる。アプリケーションの動作を制御することには、キャッシュデータをディスクにフラッシュすること、アプリケーションのI/Oを凍結及び解凍すること、ログファイルのローテーション及び打ち切りを行うこと、ならびにアプリケーションを強制終了及び再起動すること等の動作が含まれる。アプリケーション特化モジュールは、以下に記載されるサービスレベルポリシーエンジン406からのコマンドに応答して、これらの動作を行い、メタデータを送信及び受信する。アプリケーション特化モジュールは、図8と関連してより詳細に記載される。
サーバレベルポリシーエンジン406。このモジュールは、ユーザがアプリケーションデータのコピーの作成、移動、及び消去に関する決定を行うことによって提供される、SLA304上で動作する。各SLAは、1つのアプリケーションの保護に関するビジネス要件について記述する。サーバレベルポリシーエンジンは、各SLAを分析し、それぞれが1つの記憶位置から別の記憶位置へのアプリケーションデータのコピーを伴う一連の動作に到達する。サービスレベルポリシーエンジンは、次いで、これらの動作をレビューして、優先順位及び従属性を決定し、データ移動作業をスケジュールし、それを開始する。サービスレベルポリシーエンジンは、図9と関連してより詳細に記載される。
オブジェクトマネージャ及びデータ移動エンジン410。このモジュールは、アプリケーションデータ、アプリケーションメタデータ、及びポリシーエンジンからの命令に従って異なる記憶プールを経て移動するSLAからなる複合オブジェクトを作成する。オブジェクトマネージャは、アプリケーション300に属するライブ一次データ413に基づいて、または別のプール内の既存のコピー、例えば、415から、特定のプールにアプリケーションデータのコピーを作成するコマンドの形態で、サービスポリシーエンジン406から命令を受信する。オブジェクトマネージャ及びデータ移動エンジンによって作成される複合オブジェクトのコピーは、それが、アプリケーションデータだけでなく、アプリケーションメタデータ及びアプリケーションに関するSLAもまた含むという点で、自己包含型かつ自己記述型である。オブジェクトマネージャ及びデータ移動エンジンは、図5と関連してより詳細に記載される。
記憶プールマネージャ412。このモジュールは、基底の物理記憶リソース302を適合してそれらを抽象化し、それらを仮想記憶プール418として提示する、構成要素である。物理記憶リソースは、ユーザが、ユーザのアプリケーションのデータのライフサイクルをサポートする目的で配置した、ディスクアレイ及びテープライブラリといった実際の記憶資源である。これらの記憶リソースは、ディスク、テープ、フラッシュメモリ、または光学記憶装置といった、異なる記憶技術に基づき得る。記憶リソースはまた、異なる地理的な位置、費用、及び速度属性を有し得、異なるプロトコルをサポートし得る。記憶プールマネージャの役割は、記憶リソースを組み合わせ、統合し、それらのプログラミングインターフェース間の違いをマスクすることである。記憶プールマネージャは、特徴のある記憶プールのセットとして物理記憶リソースをオブジェクトマネージャ410に提示し、これらの特徴が、これらのプールをアプリケーションデータのライフサイクルにおける特定の段階に好適なものにしている。記憶プールマネージャは、図6と関連してより詳細に記載される。
オブジェクトマネージャ及びデータ移動エンジン
図5は、オブジェクトマネージャ及びデータ移動エンジン410を図示する。オブジェクトマネージャ及びデータ移動エンジンは、プールマネージャ504によってそれに提示される仮想記憶リソース510を発見し、それを用いる。それは、サービスレベルポリシーエンジン406からの要求を受けて、仮想記憶プール内のリソースからデータ記憶オブジェクのトインスタンスを作成してそれを維持し、これは、サービスレベルポリシーエンジンからの命令に従って、仮想記憶プールから、記憶オブジェクトのインスタンス間でアプリケーションデータをコピーする。コピーのために選択されたターゲットプールは、選択されているビジネス動作、例えば、バックアップ、複製、または復元を暗に示す。サービスレベルポリシーエンジンは、オブジェクトマネージャ(同じシステム上)に対してローカルか、またはリモートのいずれかで存在し、標準的なネットワーク通信上のプロトコルを使用して通信する。好ましい実施形態ではTCP/IPが使用され得るが、これは、十分に理解されており、広く利用可能であり、わずかな修正によりサービスレベルポリシーエンジンがオブジェクトマネージャに対してローカルまたはリモートに位置付けられることを可能にするためである。
図5は、オブジェクトマネージャ及びデータ移動エンジン410を図示する。オブジェクトマネージャ及びデータ移動エンジンは、プールマネージャ504によってそれに提示される仮想記憶リソース510を発見し、それを用いる。それは、サービスレベルポリシーエンジン406からの要求を受けて、仮想記憶プール内のリソースからデータ記憶オブジェクのトインスタンスを作成してそれを維持し、これは、サービスレベルポリシーエンジンからの命令に従って、仮想記憶プールから、記憶オブジェクトのインスタンス間でアプリケーションデータをコピーする。コピーのために選択されたターゲットプールは、選択されているビジネス動作、例えば、バックアップ、複製、または復元を暗に示す。サービスレベルポリシーエンジンは、オブジェクトマネージャ(同じシステム上)に対してローカルか、またはリモートのいずれかで存在し、標準的なネットワーク通信上のプロトコルを使用して通信する。好ましい実施形態ではTCP/IPが使用され得るが、これは、十分に理解されており、広く利用可能であり、わずかな修正によりサービスレベルポリシーエンジンがオブジェクトマネージャに対してローカルまたはリモートに位置付けられることを可能にするためである。
一実施形態において、本システムは、実装の簡易さのため、オブジェクトマネージャと同じコンピュータシステム上にサービスレベルポリシーエンジンを配置し得る。別の実施形態において、本システムは、アプリケーションに有益または便宜的である場合に、設計を変更することなく、それぞれが構成要素のサブセットをホストする、複数のシステムを採用してもよい。
オブジェクトマネージャ501及び記憶プールマネージャ504は、記憶リソースとそれらの記憶リソースを使用するコンピュータシステム(ユーザのアプリケーションが存在する)とを相互接続する、コンピュータシステムプラットフォーム上に存在し得るソフトウェア構成要素である。相互接続プラットフォームへのこれらのソフトウェア構成要素の設置は、好ましい実施形態として指定され、そのようなアプリケーションに広く使用される通信プロトコル(例えば、ファイバーチャネル(Fibre Channel)、iSCSI等)を介して顧客システムを記憶装置に接続する能力を提供し得、さらに種々のソフトウェア構成要素の配置の容易さを提供し得る。
オブジェクトマネージャ501及び記憶プールマネージャ504は、プラットフォームによって利用可能となるアプリケーションプログラミングインターフェースを介して基底の記憶装置仮想化プラットフォームと通信する。これらのインターフェースは、ソフトウェア構成要素がコンピュータシステムの挙動、ならびにそれがどのようにして記憶リソースとユーザのアプリケーションが存在するコンピュータシステムとを相互接続するかを問い合わせし、それを制御することを可能にする。構成要素は、実施では一般的なモジュール方式技術を適用して、所与のプラットフォームに特有の相互通信コードの置き換えを可能にする。
オブジェクトマネージャ及び記憶プールマネージャは、プロトコルを介して通信する。これらは、コンピュータシステムで典型的に利用可能な標準的なネットワーキングプロトコル、例えば、TCP/IP、または標準的なプロセス間通信(IPC)機序で伝送される。これにより、構成要素が同じコンピュータプラットフォーム上、またはネットワークによって接続される複数のコンピュータプラットフォーム上に存在する場合に、具体的なコンピュータプラットフォームに応じて、構成要素間での同程度の通信が可能となる。現在の構成は、配置の容易さのため、すべてのローカルソフトウェア構成要素が同じコンピュータシステム上に存在している。これは、上述のように、設計の厳格な要件ではなく、必要に応じて将来的に再構成されてもよい。
オブジェクトマネージャ
オブジェクトマネージャ501は、データ記憶オブジェクトを維持するためのソフトウェア構成要素であり、それを制御するためのプロトコル操作セットを提供する。操作には、オブジェクト間のデータの作成、破壊、複写、及びコピー、オブジェクトへのアクセスを維持すること、ならびに特に、コピーを作成するために使用される記憶プールの指定を可能にすることが含まれる。すべてのプールにサポートされる共通の機能サブセットはないが、しかしながら、好ましい実施形態においては、一次プールは、性能が最適化されたもの、すなわち、待ち時間が短いものであり得、一方で、バックアップまたは複製プールは、容量が最適化されたもの、すなわち、大きなデータ量をサポートし、コンテンツアドレス可能なものであり得る。プールは、リモートまたはローカルであり得る。記憶プールは、ユーザがビジネス決定を行うことができる手段を含む、種々の基準、例えば、1ギガバイト当たりの記憶の費用に従って分類される。
オブジェクトマネージャ501は、データ記憶オブジェクトを維持するためのソフトウェア構成要素であり、それを制御するためのプロトコル操作セットを提供する。操作には、オブジェクト間のデータの作成、破壊、複写、及びコピー、オブジェクトへのアクセスを維持すること、ならびに特に、コピーを作成するために使用される記憶プールの指定を可能にすることが含まれる。すべてのプールにサポートされる共通の機能サブセットはないが、しかしながら、好ましい実施形態においては、一次プールは、性能が最適化されたもの、すなわち、待ち時間が短いものであり得、一方で、バックアップまたは複製プールは、容量が最適化されたもの、すなわち、大きなデータ量をサポートし、コンテンツアドレス可能なものであり得る。プールは、リモートまたはローカルであり得る。記憶プールは、ユーザがビジネス決定を行うことができる手段を含む、種々の基準、例えば、1ギガバイト当たりの記憶の費用に従って分類される。
第1に、装置が異なるビジネス目的に割り当てられるため、記憶装置が引き出される特定の記憶デバイスは、関連する費用及び他の実施上の考慮点とともに、考慮する点であり得る。いくつかのデバイスは、実際のハードウェアですらないがサービスとして提供される容量であり得、そのようなリソースの選択は、現実的なビジネス目的で行われ得る。
第2に、ネットワークトポロジーの「近接性」が考慮され、近い記憶装置は、典型的に、待ち時間が短く高価でないネットワークリソースによって接続されるが、遠い記憶装置は、待ち時間が長く帯域が制限される高価なネットワークリソースによって接続され得、逆に言うと、リソースに対する記憶プールの距離は、地理的な多様性によりローカルリソースに影響を及ぼす物理的障害から保護する場合に、有益であり得る。
第3に、記憶装置最適化の特徴が考慮され、ここで、一部の記憶装置は、空間効率的に最適化されるが、データを記憶し得る前にその分析または変換を行うための計算時間及びリソースを必要とし、一方で他の記憶装置は、比較して「性能的に最適化」され、この場合、比較してより多くの記憶リソースを使用するが、データを変換するとしても比較して非常に短い計算時間またはリソースを使用する。
第4に、「アクセス速度」の特徴が考慮され、ここで、記憶装置コンピュータプラットフォームに固有の一部のリソースは、例えば、仮想SCSIブロックデバイスとして、ユーザのアプリケーションに容易かつ迅速に利用可能となり、一方でいくつかは、間接的に使用することしかできない。これらの復旧の容易さ及び速度は、しばしば、使用される記憶装置の種類によって左右され、これにより、それが好適に分類されることを可能にする。
第5に、使用される記憶の量及び所与のプール内で利用可能な量が考慮され、これは、使用される記憶装置の容量の集中または拡散のいずれかを行うことが有益であり得るためである。
以下に記載されるサービスレベルポリシーエンジンは、ユーザによって提供されるSLAと分類基準とを組み合わせて、アプリケーションデータをいつどのように維持するか、及びサービスレベル合意(SLA)を満たすために必要とされるリソースをどの記憶プールから引き出すかを決定する。
オブジェクトマネージャ501は、性能プール内のデータオブジェクト上で実行される一連の操作を追跡し、それらの操作を、オブジェクトを他の記憶プール、特に、容量的に最適化されたものに移動させる他の操作と相関させるために、履歴機序を作成、維持、及び利用する。各データオブジェクトに関するこの一連の記録は、一次プール内のすべてのデータオブジェクトについてオブジェクトマネージャで維持され、まず一次データオブジェクトによって相関された後、操作順序、すなわち、各オブジェクトのタイムライン及びすべてのそのようなタイムラインのリストによって相関される。実行される各操作は、所与の時点におけるデータオブジェクトの状態をキャプチャするために、基底の仮想化プリミティブを用いる。
加えて、基底の記憶装置仮想化機器は、データオブジェクト内のデータの部分の修正を示す、ビットマップ等内部データ構造を露出させ、その取り出しを可能にするように修正され得る。これらのデータ構造を利用して、ある時点におけるデータオブジェクトの状態、例えば、データオブジェクトのスナップショットをキャプチャし、特定の時点で取得されたスナップショット間の差分を提供し、それによって、最適なバックアップ及び復元を可能にする。具体的な実装及びデータ構造は、様々な供給業者からの様々な機器によって多様であり得るが、データ構造は、データオブジェクトに対する変更を追跡するために用いられ、記憶装置は、変化したオブジェクトの部分の元の状態を保持するために用いられ、データ構造における指標は、記憶装置に保持されているデータに対応する。スナップショットにアクセスする際、データ構造が参照され、変更された部分については、現在のデータではなく、保存されたデータがアクセスされるが、これは、データオブジェクトが、その範囲が示されるように修正されているためである。用いられる典型的なデータ構造は、各ビットがデータオブジェクトのセクションに対応するものである。ビットの設定は、セクションがスナップショット操作の時点の後に修正されたことを示す。基底のスナップショットのプリミティブ機序は、スナップショットオブジェクトが存在する限り、これを維持する。
上述のタイムラインは、それを基底のシステムから得ることができるように、操作が開始された時間、それが停止された時間(発生した場合)、スナップショットオブジェクトへの参照、内部データ構造(例えば、ビットマップまたはエクステントリスト)への参照を含む、所与の一次データオブジェクトに対するスナップショット操作のリストを維持する。所与の時点におけるデータオブジェクトの状態を別のプールにコピーした結果への参照もまた維持され、例として、データオブジェクトの状態を、コンテンツアドレス指定を使用して容量最適化プール407にコピーすることにより、オブジェクトハンドルが得られる。そのオブジェクトハンドルは、所与のスナップショットに対応し、スナップショット操作とともにタイムラインに記憶される。この相関は、好適な開始点を特定するために使用される。
最適なバックアップ及び復元は、所望される開始点から終了点までの操作のリストを参照する。時間順の操作リスト及びそれらの対応するデータ構造(ビットマップ)は、開始から終了までの連続した時系列が実現されるように構築され、この系列には操作の開始時間の間にギャップは存在しない。これにより、データオブジェクトに対するすべての変更が、対応するビットマップデータ構造によって表されることを確実にする。開始から終了までのすべての操作を取り出す必要はなく、同時に存在するデータオブジェクト及び基底のスナップショットは、時間が重複しており、追跡されていない変更が発生した時間に、ギャップが存在しないことのみが必要とされる。ビットマップは、ある特定の記憶ブロックが変化したことを示すが、その変化が何であるかは示さず、ビットマップは、時間間隔で生じるすべての変化のセットを認識するために追加され得るか、または一緒に構成され得る。ある時点の状態にアクセスするためにこのデータ構造を使用する代わりに、本システムは、データ構造が、時間が進むにつれて修正されるデータを表すという事実を利用する。むしろ、データオブジェクトの最終状態は示される範囲でアクセスされ、したがって、所与の開始時間から終了時間までの所与のデータオブジェクトに対する変更のセットが返却される。
バックアップ操作は、この時系列、相関参照、及び内部データ構造へのアクセスを利用して、バックアップ操作を実現する。同様に、これは、相補的な方式のシステムを使用して、復元操作を達成する。特定のステップは、以下に、「最適なバックアップ/復元」の節に記載される。
仮想記憶プールの種類
図5は、代表的な記憶プールの種類を図示する。1つの一次記憶プール及び2つの二次記憶プールがこの図では示されているが、さらに多数のものがいくつかの実施形態では構成されてもよい。
図5は、代表的な記憶プールの種類を図示する。1つの一次記憶プール及び2つの二次記憶プールがこの図では示されているが、さらに多数のものがいくつかの実施形態では構成されてもよい。
一次記憶プール507−ユーザアプリケーションがそのデータを記憶するデータオブジェクトを作成するために使用される記憶リソースを含む。これは、主としてデータ管理仮想化エンジンの操作を達成するために存在する他の記憶プールとは対照的である。
性能最適化プール508−高性能バックアップ(すなわち、以下に記載されるポイントインタイム複製)、ならびにユーザアプリケーションによるバックアップイメージへの高速アクセスを提供することができる、仮想記憶プール。
容量最適化プール509−主として、以下に記載される重複排除技法の使用によって高度に空間効率的な方式でのデータオブジェクトの記憶を提供する、仮想記憶プール。この仮想記憶プールは、データオブジェクトのコピーへのアクセスを提供するが、その主要な目的のため、上述の性能最適化プールとは対照的に、高性能ではない。
初期配置は、上述の記憶プールを、最小限の操作セットとして含む。設計は、上に例示された基準の種々の組み合わせを表す様々な種類の複数のプール、ならびに将来的な配置において記憶装置のすべてを表すのに便利なように、複数のプールマネージャを十分に予期する。上に例示されるトレードオフは、コンピュータデータ記憶システムの典型である。
実用的な観点から、これらの3つのプールは、非常に単純な方式でほとんどのユーザ要件に対処する、好ましい実施形態を表す。ほとんどのユーザは、早期復旧を可能にする、緊急の復元の必要性のための1つの記憶プールと、低費用で、多数のイメージを長期間保持することができる1つの他のプールとを有する場合に、データ保護のビジネス要件のほぼすべてが、ほとんど妥協することなく満たされ得ることを見出すであろう。
各プールにおけるデータの形式は、プール内で使用される目的及び技術によって決定される。例えば、早期復旧プールは、必要とされる変換(translation)を最小化させ、復旧の速度を改善するために、元のデータに非常に類似した形式で維持される。長期記憶プールは、一方で、重複排除及び圧縮を用いてデータのサイズを低減させ、それによって記憶装置の費用を低減させる。
オブジェクト管理操作505
オブジェクトマネージャ501は、サービスレベルポリシーエンジン406によってそれに送信される命令に従って、仮想記憶プール418から、データ記憶オブジェクト503のインスタンスを作成し、それを維持する。オブジェクトマネージャは、5つの主要な領域のデータオブジェクト操作を提供する:ポイントインタイム重複またはコピー作成(広く「スナップショット」と称される)、標準的なコピー作成、オブジェクト維持、マッピング及びアクセス維持、ならびに収集。
オブジェクトマネージャ501は、サービスレベルポリシーエンジン406によってそれに送信される命令に従って、仮想記憶プール418から、データ記憶オブジェクト503のインスタンスを作成し、それを維持する。オブジェクトマネージャは、5つの主要な領域のデータオブジェクト操作を提供する:ポイントインタイム重複またはコピー作成(広く「スナップショット」と称される)、標準的なコピー作成、オブジェクト維持、マッピング及びアクセス維持、ならびに収集。
オブジェクト管理操作にはまた、仮想記憶プール自体を維持し、それらに関する情報を取り出すための一連のリソース発見操作が含まれる。プールマネージャ504は、最終的に、これらに関する機能性を提供する。
ポイントインタイムコピー(「スナップショット」)操作
スナップショット操作は、特定の時点で、初期オブジェクトインスタンスを表すデータオブジェクトインスタンスを作成する。より具体的には、スナップショット操作は、指定された仮想記憶プールのリソースを使用して、ある集合のメンバの完全な仮想コピーを作成する。これは、データ記憶オブジェクトと呼ばれる。ある時点で存在していたデータ記憶オブジェクトが利用可能となるように、データ記憶オブジェクトの複数の状態が長期間維持される。上述のように、仮想コピーは、重複データのすべてのビットをディスクにコピー及び記憶する代わりに、コピーオンライトまたは他のインバンド技術を使用して、軽量な方式でコピーが作成されることを可能にする、基底の記憶装置仮想化APIを使用して実装されるコピーである。これは、いくつかの実施形態では、EMC、vmware、またはIBMによって提供されるもの等、市販の基底の記憶装置仮想化システムの機能にアクセスするように記述されるソフトウェアモジュールを使用して実装され得る。そのような基底の仮想化が利用可能でない場合には、記載されるシステムは、知力の劣ったハードウェアとのインターフェース接続のためのその独自の仮想化層を提供し得る。
スナップショット操作は、特定の時点で、初期オブジェクトインスタンスを表すデータオブジェクトインスタンスを作成する。より具体的には、スナップショット操作は、指定された仮想記憶プールのリソースを使用して、ある集合のメンバの完全な仮想コピーを作成する。これは、データ記憶オブジェクトと呼ばれる。ある時点で存在していたデータ記憶オブジェクトが利用可能となるように、データ記憶オブジェクトの複数の状態が長期間維持される。上述のように、仮想コピーは、重複データのすべてのビットをディスクにコピー及び記憶する代わりに、コピーオンライトまたは他のインバンド技術を使用して、軽量な方式でコピーが作成されることを可能にする、基底の記憶装置仮想化APIを使用して実装されるコピーである。これは、いくつかの実施形態では、EMC、vmware、またはIBMによって提供されるもの等、市販の基底の記憶装置仮想化システムの機能にアクセスするように記述されるソフトウェアモジュールを使用して実装され得る。そのような基底の仮想化が利用可能でない場合には、記載されるシステムは、知力の劣ったハードウェアとのインターフェース接続のためのその独自の仮想化層を提供し得る。
スナップショット操作は、イメージデータが固有となるように、また、スナップショットが、スナップショットの時点におけるアプリケーションの状態を復元するために使用され得るように、アプリケーションが、データの状態を特定の時点に凍結させることを必要とする。他の準備ステップもまた必要とされ得る。これらは、後続の節で記載されるアプリケーション特化モジュール302によってハンドルされる。ライブアプリケーションについては、したがって、最も軽量な操作が所望される。
スナップショット操作は、システム内のすべてのより高レベルの操作のためのプリミティブデータとして使用される。実際には、それらは、特定の時点におけるデータの状態へのアクセスを提供する。同様に、スナップショットは、典型的に、ディスク上で何が変化したかと何が存在するかを区別する、コピーオンライト技法を使用して実装されるため、これらのスナップショットは、データをシステム全体にわたって効率的にコピーするためにも構築されるか、または一緒に追加され得る、差分を提供する。スナップショットの形式は、以下に記載されるデータムーバ502によってコピーされるデータの形式であり得る。
標準的なコピー操作
コピー操作がスナップショットではない場合、これは、標準的なコピー操作と考えられ得る。標準的なコピー操作は、1つの記憶プール内のソースデータオブジェクトのすべてまたはサブセットを、別の記憶プール内のデータオブジェクトにコピーする。結果は、2つの異なるオブジェクトである。使用され得る標準的なコピー操作の1つの種類は、初期「ベースライン」コピーである。これは、典型的に、データが、最初に1つの仮想記憶プールから別のものに、例えば、性能最適化プールから容量最適化プールにコピーされるときに行われる。変更されたデータまたは差分のみが、ターゲットオブジェクトを更新するためにターゲット記憶プールにコピーされる、別の種類の標準的なコピー操作が使用されてもよい。これは、初期ベースラインコピーが、既に行われた後に生じる。
コピー操作がスナップショットではない場合、これは、標準的なコピー操作と考えられ得る。標準的なコピー操作は、1つの記憶プール内のソースデータオブジェクトのすべてまたはサブセットを、別の記憶プール内のデータオブジェクトにコピーする。結果は、2つの異なるオブジェクトである。使用され得る標準的なコピー操作の1つの種類は、初期「ベースライン」コピーである。これは、典型的に、データが、最初に1つの仮想記憶プールから別のものに、例えば、性能最適化プールから容量最適化プールにコピーされるときに行われる。変更されたデータまたは差分のみが、ターゲットオブジェクトを更新するためにターゲット記憶プールにコピーされる、別の種類の標準的なコピー操作が使用されてもよい。これは、初期ベースラインコピーが、既に行われた後に生じる。
データ仮想化システムが最初に初期化される際にベースラインコピーが必要とされるとはいえ、オブジェクトの完全に網羅したバージョンが、毎回コピーが作製されるたびにシステムに保存される必要はない。これは、各仮想コピーが、完全なコピーへのアクセスを提供するためである。いずれのデルタまたは差分も、ベースラインに関連してではなく、仮想コピーに関連して表され得る。これは、一連の変化リストを通過する一般的なステップを事実上排除することの肯定的な影響を有する。
標準的なコピー操作は、データ記憶オブジェクト間のデータの移動をもたらし、データ記憶オブジェクト自体を維持するための、プールマネージャによって供給され、データムーバによって受信される一連の命令または要求によって開始される。このコピー操作は、指定された仮想記憶プールのリソースを使用して指定されたデータ記憶オブジェクトのコピーを作成することを可能にする。結果は、記憶プール内のターゲットデータオブジェクト内にあるソースデータオブジェクトのコピーである。
スナップショット及びコピーの操作は、それぞれ、準備操作及び起動操作を伴って構成される。準備及び起動の2つのステップは、準備段階の典型である長時間のリソース割り当て操作が、起動から分離されることを可能にする。スナップショット操作のポイントインタイム特徴を満たすために短時間中断するだけでよく、実際には、達成するのに有限だがゼロではない時間を要する、アプリケーションが、これを必要とする。コピー及びスナップショットの操作についても同様に、この2ステップの準備及び起動構造は、ポリシーエンジンが、すべての集合メンバについてリソースが割り当てられ得る場合にのみ、操作を進めることを可能にする。
オブジェクト維持
オブジェクト維持操作は、作成、破壊、複写を含む、データオブジェクトを維持するための一連の操作である。オブジェクトマネージャ及びデータムーバは、プール要求ブローカ(詳細は以下)によって提供される機能性を使用して、これらの操作を実装する。データオブジェクトは、グローバルレベルで、各記憶プールで、または好ましくはその両方で、維持され得る。
オブジェクト維持操作は、作成、破壊、複写を含む、データオブジェクトを維持するための一連の操作である。オブジェクトマネージャ及びデータムーバは、プール要求ブローカ(詳細は以下)によって提供される機能性を使用して、これらの操作を実装する。データオブジェクトは、グローバルレベルで、各記憶プールで、または好ましくはその両方で、維持され得る。
コレクション
コレクション操作は、補助的な機能である。コレクションは、オブジェクトマネージャによってメモリに維持されるリストである、抽象的なソフトウェア概念である。それらは、ポリシーエンジン206が、コレクション内のメンバのすべてにわたって一連の操作を要求することを可能にし、すべてのメンバに対して要求の一貫性アプリケーションを可能にする。コレクションの使用は、複数のデータ記憶オブジェクトが、すべて正確に同時にキャプチャされるように、ポイントインタイムスナップショットの同時起動を可能にし、これは、典型的に論理的に正しい復元のためにアプリケーションによって必要とされるためである。コレクションの使用は、コレクションのすべてのメンバにわたるコピー操作の便宜的な要求を可能にし、ここで、アプリケーションは、複数の記憶オブジェクトを論理的な統一体として使用する。
コレクション操作は、補助的な機能である。コレクションは、オブジェクトマネージャによってメモリに維持されるリストである、抽象的なソフトウェア概念である。それらは、ポリシーエンジン206が、コレクション内のメンバのすべてにわたって一連の操作を要求することを可能にし、すべてのメンバに対して要求の一貫性アプリケーションを可能にする。コレクションの使用は、複数のデータ記憶オブジェクトが、すべて正確に同時にキャプチャされるように、ポイントインタイムスナップショットの同時起動を可能にし、これは、典型的に論理的に正しい復元のためにアプリケーションによって必要とされるためである。コレクションの使用は、コレクションのすべてのメンバにわたるコピー操作の便宜的な要求を可能にし、ここで、アプリケーションは、複数の記憶オブジェクトを論理的な統一体として使用する。
リソース発見操作
オブジェクトマネージャは、オブジェクト管理操作505をプールマネージャ504に発行することによって、仮想記憶プールを発見し、プールのそれぞれに関して得られた情報を使用して、所与の要求に関して必要とされる基準を満たすものを選択するか、または一致するものがない場合には、デフォルトのプールを選択し、オブジェクトマネージャが、次いで、選択された仮想記憶プールからのリソースを使用してデータ記憶オブジェクトを作成し得る。
オブジェクトマネージャは、オブジェクト管理操作505をプールマネージャ504に発行することによって、仮想記憶プールを発見し、プールのそれぞれに関して得られた情報を使用して、所与の要求に関して必要とされる基準を満たすものを選択するか、または一致するものがない場合には、デフォルトのプールを選択し、オブジェクトマネージャが、次いで、選択された仮想記憶プールからのリソースを使用してデータ記憶オブジェクトを作成し得る。
マッピング及びアクセス
オブジェクトマネージャはまた、外部アプリケーションに対するこれらのオブジェクトの可用性を許容及び維持するために、オブジェクト管理操作セットを提供する。第1のセットは、ユーザのアプリケーションが存在するコンピュータを登録及び登録削除するための操作である。コンピュータは、使用中の記憶ネットワークに典型的な識別(例えば、ファイバーチャネルWWPN、iSCSI識別等)によって登録される。第2のセットは、「マッピング」操作であり、オブジェクトが作成される記憶プールによって許可されると、データ記憶オブジェクトは、ユーザアプリケーションが存在するコンピュータに対して「マッピング」され得る、すなわち、使用が可能となり得る。
オブジェクトマネージャはまた、外部アプリケーションに対するこれらのオブジェクトの可用性を許容及び維持するために、オブジェクト管理操作セットを提供する。第1のセットは、ユーザのアプリケーションが存在するコンピュータを登録及び登録削除するための操作である。コンピュータは、使用中の記憶ネットワークに典型的な識別(例えば、ファイバーチャネルWWPN、iSCSI識別等)によって登録される。第2のセットは、「マッピング」操作であり、オブジェクトが作成される記憶プールによって許可されると、データ記憶オブジェクトは、ユーザアプリケーションが存在するコンピュータに対して「マッピング」され得る、すなわち、使用が可能となり得る。
この可用性は、記憶装置、例えば、ネットワーク上のファイバーチャネルディスクまたはiSCSIデバイス、ファイル共有ネットワーク上のファイルシステム等としてSANに提示されるブロックデバイスに適切な形式を取り、アプリケーションコンピュータ上でオペレーティングシステムによって使用可能である。同様に、「マッピング解除」操作は、ユーザアプリケーションに対するネットワーク上の仮想記憶デバイスの可用性を逆転させる。この方式では、1つのアプリケーション、すなわち、バックアップのために記憶されるデータは、その後で別のコンピュータでの別のアプリケーション、すなわち、復元に利用可能となり得る。
502データムーバ
データムーバ502は、スナップショット(ポイントインタイム)コピー要求及び標準的なコピー要求に関するオブジェクトマネージャから受信した命令に従って、種々のデータ記憶オブジェクト503間でデータの読み出し及び書き込みを行う、オブジェクトマネージャ及びデータムーバ内のソフトウェア構成要素である。データムーバは、システム全体にわたってデータオブジェクト間でデータの読み出し及び書き込みを行うための操作を提供する。データムーバはまた、オブジェクトマネージャがその実行を要求している、長時間の操作の状態の問い合わせ及び維持を行う操作を提供する。
データムーバ502は、スナップショット(ポイントインタイム)コピー要求及び標準的なコピー要求に関するオブジェクトマネージャから受信した命令に従って、種々のデータ記憶オブジェクト503間でデータの読み出し及び書き込みを行う、オブジェクトマネージャ及びデータムーバ内のソフトウェア構成要素である。データムーバは、システム全体にわたってデータオブジェクト間でデータの読み出し及び書き込みを行うための操作を提供する。データムーバはまた、オブジェクトマネージャがその実行を要求している、長時間の操作の状態の問い合わせ及び維持を行う操作を提供する。
データムーバは、その操作を達成するために、プール機能性プロバイダ(図6を参照されたい)からの機能性を使用する。スナップショット機能性プロバイダ608は、特定の時点における初期オブジェクトインスタンスを表すデータオブジェクトインスタンスの作成を可能にする。差分エンジン機能性プロバイダ614は、時間的連鎖で関連する2つのデータオブジェクト間の差分に関する記述を要求するために使用される。コンテンツアドレス可能プールに記憶されたデータオブジェクトについては、いずれの2つの任意のデータオブジェクト間の差分を提供することができる、特別な機能性が提供される。この機能性はまた、いくつかの事例においては、基底の記憶装置仮想化システムによって、また他の事例においては、商品記憶に加えてこれを実装するモジュールによって、性能最適化プールに提供される。データムーバ502は、差分に関する情報を使用して、データオブジェクト503のインスタンス間でコピーするデータセットを選択する。
所与のプールについては、差分エンジンプロバイダは、データ記憶オブジェクトの長期にわたる2つの状態の間の差分の具体的な表示を提供する。スナップショットプロバイダについては、2つの時点の間の変化は、データ記憶オブジェクトの所与の部分への書き込みとして記録される。一実施形態において、差分は、ビットマップとして表される。各ビットが、第1のもので始まり、最後まで昇順で順序付けられたデータオブジェクト範囲のリストに対応する、ビットマップとして表され、ここで、セットビットは、修正された領域を示す。このビットマップは、基底の記憶装置仮想化システムによって使用されるコピーオンライトビットマップから導出される。別の実施形態において、差分は、変更されたデータ範囲に対応するエクステントのリストとして表され得る。コンテンツアドレス可能記憶プロバイダ610については、表示は、以下に記載され、2つのコンテンツアドレス可能データオブジェクトの異なる部分を効率的に決定するために使用される。
データムーバは、この情報を使用して、異なるセクションのみをコピーし、その結果、データオブジェクトの新しいバージョンが、既存のバージョンから、まずそれを複製し、差分のリストを取得した後に、そのリスト内のそれらの差分に対応するデータのみ移動させることによって、作成され得るようになる。データムーバ502は、差分のリストをトラバースし、ソースデータオブジェクトからターゲットデータオブジェクトに、示された範囲を移動させる。(データバックアップ及び復元の最適な方法を参照されたい)。
506コピー操作−要求変換及び命令
オブジェクトマネージャ501は、仮想記憶プール418内のデータオブジェクト間でデータをコピーするように、一連の操作を通じてデータムーバ502に命令する。このプロシージャには、以下のステップが含まれ、これは命令の受信で開始する。
オブジェクトマネージャ501は、仮想記憶プール418内のデータオブジェクト間でデータをコピーするように、一連の操作を通じてデータムーバ502に命令する。このプロシージャには、以下のステップが含まれ、これは命令の受信で開始する。
第1に、コレクション要求を作成する。コレクションの名称が返却される。
第2に、オブジェクトをコレクションに追加する。上記からのコレクション名称、ならびにコピーされるソースデータオブジェクトの名称及び2つの先行物、すなわち、差分が取得されるソース記憶リソースプール内のデータオブジェクト、及びターゲット記憶リソースプール内の対応するデータオブジェクトの名称が使用される。このステップは、このセットで操作される各ソースデータオブジェクトに対して繰り返される。
第3に、コピー要求を準備する。コレクション名称、ならびにターゲットとして機能する記憶リソースプールが供給される。準備コマンドは、オブジェクトマネージャに、記憶プールマネージャに接触して、コレクション内のソースのそれぞれに対応する、必要なターゲットデータオブジェクトを作成するように命令する。準備コマンドはまた、複写されるターゲット記憶リソースプール内の対応するデータオブジェクトを供給し、それによって、プロバイダは、提供されたオブジェクトを複写し、それをターゲットオブジェクトとして使用することができる。コピー要求の参照名称が返却される。
第4に、コピー要求を起動する。上記で返却されたコピー要求の参照名称が供給される。データムーバは、所与のソースオブジェクトを、その対応するターゲットオブジェクトにコピーするように命令される。各要求は、参照名称、ならびに全体のジョブ(ソースターゲット対の全セット)を記述するシーケンス番号、ならびに各個別のソースターゲット対について記述するシーケンス番号を含む。ソースターゲット対に加えて、対応する先行物の名称が、コピー命令の一部として供給される。
第5に、コピーエンジンは、ソースプール内のデータオブジェクトの名称を使用して、先行物とソースとの間の差分を、ソースにおいて差分エンジンから取得する。示される差分が、次いで、ソースからターゲットに伝送される。一実施形態において、これらの差分は、ビットマップ及びデータとして伝送される。別の実施形態において、これらの差分は、エクステントリスト及びデータとして伝送される。
503データ記憶オブジェクト
データ記憶オブジェクトは、コンピュータデータ処理装置及びソフトウェアによく知られたイディオム及び方法を使用して、アプリケーションデータの記憶及び取り出しを可能にする、ソフトウェア構築物である。実際には、これらは、現在のところ、コンテンツの指定子がそこから構築され、その中のデータを一意に特定する、記憶ネットワーク上のSCSIブロックデバイス、例えば、SCSI LUN、またはコンテンツアドレス可能コンテナの形態を取る。データ記憶オブジェクトは、プールマネージャに命令を発行することによって作成及び維持される。アプリケーションを持続させるための実際の記憶は、データ記憶オブジェクトが作成された仮想記憶プールから引き出される。
データ記憶オブジェクトは、コンピュータデータ処理装置及びソフトウェアによく知られたイディオム及び方法を使用して、アプリケーションデータの記憶及び取り出しを可能にする、ソフトウェア構築物である。実際には、これらは、現在のところ、コンテンツの指定子がそこから構築され、その中のデータを一意に特定する、記憶ネットワーク上のSCSIブロックデバイス、例えば、SCSI LUN、またはコンテンツアドレス可能コンテナの形態を取る。データ記憶オブジェクトは、プールマネージャに命令を発行することによって作成及び維持される。アプリケーションを持続させるための実際の記憶は、データ記憶オブジェクトが作成された仮想記憶プールから引き出される。
データ記憶オブジェクトの構造は、それが作成される記憶プールに応じて多様である。記憶ネットワーク上のブロックデバイスの形態を取るオブジェクトについては、所与のブロックデバイスのデータオブジェクトのデータ構造は、デバイス識別子に対するデータオブジェクト内のブロックのそれぞれの論理ブロックアドレス(LBA)と実際の記憶位置のLBAとの間のマッピングを実装する。データオブジェクトの識別子を使用して、使用されるマッピングのセットを特定する。現在の実施形態は、基底の物理的コンピュータプラットフォームによって提供されるサービスに頼っており、また、ビットマップまたはエクステントリストといったその内部データ構造に頼っている。
コンテンツアドレス可能コンテナの形態を取るオブジェクトについては、コンテンツ署名が識別子として使用され、データオブジェクトは、重複排除に関する節で以下に記載されるように記憶される。
504プールマネージャ
プールマネージャ504は、仮想記憶リソースを管理するためのソフトウェア構成要素であり、関連する機能性及び特徴は以下に記載される通りである。オブジェクトマネージャ501及びデータ移動エンジン502は、データ記憶オブジェクト503を維持するために、1つ以上のプールマネージャ504と通信する。
プールマネージャ504は、仮想記憶リソースを管理するためのソフトウェア構成要素であり、関連する機能性及び特徴は以下に記載される通りである。オブジェクトマネージャ501及びデータ移動エンジン502は、データ記憶オブジェクト503を維持するために、1つ以上のプールマネージャ504と通信する。
510仮想記憶リソース
仮想記憶リソース510は、以下に記載されるように、記憶プール機能を実装するためにプールマネージャに利用可能となる様々な種類の記憶装置である。この実施形態において、記憶装置バーチャライザを使用して、種々の外部ファイバーチャネルまたはiSCSI記憶装置LUNを、仮想化された記憶装置として、プールマネージャ504に提示する。
仮想記憶リソース510は、以下に記載されるように、記憶プール機能を実装するためにプールマネージャに利用可能となる様々な種類の記憶装置である。この実施形態において、記憶装置バーチャライザを使用して、種々の外部ファイバーチャネルまたはiSCSI記憶装置LUNを、仮想化された記憶装置として、プールマネージャ504に提示する。
記憶プールマネージャ
図6は、記憶プールマネージャ504をさらに図示する。記憶プールマネージャの目的は、基底の仮想記憶リソースを記憶リソースプールとしてオブジェクトマネージャ/データムーバに提示することであり、これらは、システムの他の構成要素によって利用される、共通のインターフェースを有する記憶装置及びデータ管理機能性を抽象化したものである。典型的には、これらの共通のインターフェースには、特定の時間状態と関連付けられたデータオブジェクトを特定及びアドレス指定するための機序、ならびにビットマップまたはエクステントの形態でデータオブジェクト間の差分を生成するための機序が含まれる。この実施形態において、プールマネージャは、一次記憶プール、性能最適化プール、及び容量最適化プールを提示する。共通のインターフェースは、オブジェクトマネージャが、これらのプール内のデータ記憶オブジェクトを、他のデータ記憶オブジェクトのコピーとして、または新しいオブジェクトとしてのいずれかとして、作成及び消去することを可能にし、データムーバは、データ記憶オブジェクト間でデータを移動させることができ、また、データオブジェクトの差分付け操作の結果を使用することができる。
図6は、記憶プールマネージャ504をさらに図示する。記憶プールマネージャの目的は、基底の仮想記憶リソースを記憶リソースプールとしてオブジェクトマネージャ/データムーバに提示することであり、これらは、システムの他の構成要素によって利用される、共通のインターフェースを有する記憶装置及びデータ管理機能性を抽象化したものである。典型的には、これらの共通のインターフェースには、特定の時間状態と関連付けられたデータオブジェクトを特定及びアドレス指定するための機序、ならびにビットマップまたはエクステントの形態でデータオブジェクト間の差分を生成するための機序が含まれる。この実施形態において、プールマネージャは、一次記憶プール、性能最適化プール、及び容量最適化プールを提示する。共通のインターフェースは、オブジェクトマネージャが、これらのプール内のデータ記憶オブジェクトを、他のデータ記憶オブジェクトのコピーとして、または新しいオブジェクトとしてのいずれかとして、作成及び消去することを可能にし、データムーバは、データ記憶オブジェクト間でデータを移動させることができ、また、データオブジェクトの差分付け操作の結果を使用することができる。
記憶プールマネージャは、類似の機能性の多様な実装に共通のインターフェースを実装するための典型的なアーキテクチャを有し、ここでは、いくつかの機能性が、「スマートな」基底のリソースによって提供され、他の機能性が、あまり機能性でない基底のリソースの上に実装されるはずである。
プール要求ブローカ602及びプール機能性プロバイダ604は、オブジェクトマネージャ/データムーバと同じプロセスでか、またはローカルもしくはネットワークプロトコル、例えばTCPを介して通信する別のプロセスでのいずれかで実行する、ソフトウェアモジュールである。この実施形態において、プロバイダには、一次記憶プロバイダ606、スナップショットプロバイダ608、コンテンツアドレス可能プロバイダ610、及び差分エンジンプロバイダ614が含まれ、これらは、以下にさらに記載される。別の実施形態において、プロバイダのセットは、本明細書に示されるものの上位セットであり得る。
仮想記憶リソース510は、記憶プール機能を実装するためにプールマネージャに利用可能となる異なる種類の記憶装置である。この実施形態において、仮想記憶リソースには、プールマネージャと同じハードウェアで動作し、プログラムに基づくインターフェースを通じてアクセス可能な(データ及び管理操作の両方に)記憶装置仮想化システムからのSCSI論理ユニットのセットが含まれ、標準的なブロック記憶機能性に加えて、スナップショットの作成及び消去、ならびにボリュームの変化した部分の追跡を含む追加の機能が、利用可能である。別の実施形態において、仮想リソースは、類似の機能を呈する外部記憶システムからのものであり得るか、あるいはインターフェース(例えば、ファイルシステムを通じて、またはCIFS、iSCSI、もしくはCDMI等のネットワークインターフェースを通じてアクセスされる)、機能(例えば、リソースがコピーオンライトスナップショットを作製する操作をサポートするかどうか)、または非機能的側面(例えば、高速/容量の制限、例えば、ソリッドステートディスクと、SATAディスク等の低速/高容量)が異なり得る。利用可能な機能及びインターフェースは、どのプロバイダが、仮想記憶リソースを消費することができるか、及びどのプール機能性が1つ以上のプロバイダによってプールマネージャ内に実装される必要があるかを決定し、例えば、コンテンツアドレス可能記憶プロバイダのこの実装は、「ダム」記憶装置のみを必要とし、この実装は、すべてがコンテンツアドレス可能プロバイダ610内であり、基底のコンテンツアドレス可能仮想記憶リソースは、より単純な「パススルー」プロバイダの代わりに使用され得る。対照的に、スナップショットプロバイダのこの実装は、ほとんどが「パススルー」であり、早期ポイントインタイムコピー操作を呈する記憶装置を必要とする。
プール要求ブローカ602は、構成された仮想記憶リソース510に対してプール機能性プロバイダの適切なセットを実行することによって、記憶プールに特化した機能に関する要求にサービスする、単純なソフトウェア構成要素である。サービスされ得る要求には、プールにオブジェクトを作成すること、プールからオブジェクトを消去すること、データをオブジェクトに書き込むこと、データをオブジェクトから読み出すこと、プール内でオブジェクトをコピーすること、プール間でオブジェクトをコピーすること、プール内の2つのオブジェクト間の差分の概要を要求することが含まれるが、これらに限定されない。
一次記憶プロバイダ606は、管理が、ファイバーチャネル、iSCSI、NFS、またはCIFS等のインターフェースを介してアプリケーションに直接公開されもする仮想記憶リソースとインターフェース接続すること(例えば、スナップショットの作成及び消去、ならびにファイルの変更された部分の追跡)を可能にする。
スナップショットプロバイダ608は、一次リソースプールからデータのポイントインタイムコピーを作製する機能を実装する。これにより、スナップショットが入った別のリソースプールの抽象化が作成される。実装されるとき、ポイントインタイムコピーは、一次リソースプールからのオブジェクトのコピーオンライトスナップショットであり、コピーオンライトコピーを収容するために第2の仮想記憶リソースを消費し、これは、この管理機能性が、一次記憶装置及びスナップショットプロバイダに使用される仮想記憶リソースによって呈されるためである。
差分エンジンプロバイダ614は、時間的連鎖で関連付けられた、比較されるプール内の2つのオブジェクトに関する要求を満たし得る。2つのオブジェクト間の差分セクションは、例えば、ビットマップまたはエクステントを使用して、プロバイダに特化した手段で特定及び要約される。例えば、差分セクションは、各セットビットが、2つのオブジェクトが異なる場所の固定のサイズ領域を示すビットマップとして表され得るか、または差分は、一連の機能コールまたはコールバックとしてプロシージャ的に表されてもよい。
プールが基づく仮想記憶リソースに応じて、またはプールを実装する他のプロバイダに応じて、差分エンジンは、種々の手段で効率的に結果を生成することができる。実装されるとき、スナップショットプロバイダを介して実装されたプールで作動する差分エンジンは、スナップショットプロバイダのコピーオンライトの性質を使用して、スナップショットが作製されているオブジェクトに対する変更を追跡する。単一の変化する一次オブジェクトの連続したスナップショットは、したがって、スナップショットプロバイダによってそれらとともに記憶される差分の記録を有し、スナップショットプールの差分エンジンは、単純に、この変更の記録を取り出す。さらに、実装されるとき、コンテンツアドレス可能プロバイダを介して実装されたプールで作動する差分エンジンは、コンテンツアドレス可能実装の効率的なツリー構造(下記、図12を参照されたい)を使用して、必要に応じてオブジェクト間の迅速な比較を行う。
コンテンツアドレス可能プロバイダ610は、1度だけ書き込めるコンテンツアドレス可能インターフェースをそれが消費する仮想記憶リソースに実装する。これは、読み出し、書き込み、複写、及び消去操作を満たす。それぞれの書き込みまたはコピーされたオブジェクトは、そのコンテンツから導出される固有のハンドルによって特定される。コンテンツアドレス可能プロバイダは、以下にさらに記載される(図11)。
プールマネージャ操作
動作時に、プール要求ブローカ502は、プールまたはオブジェクトに対するコピー、スナップショット、または消去といったデータ操作動作に関する要求を許容する。要求ブローカは、プールもしくはオブジェクトの名称を確認するか、またはそれを参照することにより、プール504からのどのプロバイダコードを実行するかを決定する。次いで、ブローカは、入来するサービス要求を、特定のプール機能性プロバイダによってハンドルされ得る形態に変換させ、適切なプロバイダ操作シーケンスを呼び出す。
動作時に、プール要求ブローカ502は、プールまたはオブジェクトに対するコピー、スナップショット、または消去といったデータ操作動作に関する要求を許容する。要求ブローカは、プールもしくはオブジェクトの名称を確認するか、またはそれを参照することにより、プール504からのどのプロバイダコードを実行するかを決定する。次いで、ブローカは、入来するサービス要求を、特定のプール機能性プロバイダによってハンドルされ得る形態に変換させ、適切なプロバイダ操作シーケンスを呼び出す。
例えば、入来要求は、一次記憶プール内のボリュームから、スナップショットプールにスナップショットを作製するように依頼し得る。入来要求は、名称によって一次記憶プール内のオブジェクト(ボリューム)を特定し、名称と操作(スナップショット)の組み合わせが、基底のスナップショット機能を使用して一次プールからポイントインタイムスナップショットを作製することができるスナップショットプロバイダが呼び出されるべきであることを決定する。このスナップショットプロバイダは、要求を、基底の記憶装置仮想化機器によって実行される本来のコピーオンライト機能によって必要とされる正確な形態、例えば、ビットマップまたはエクステントに変換し、これは、本来のコピーオンライト機能の結果を、オブジェクトマネージャに返却され、プールマネージャに対する今後の要求に使用され得る、記憶ボリュームハンドルに変換する。
オブジェクトマネージャ及びデータムーバを使用したデータバックアップの最適な手段
データバックアップの最適な手段は、ビットマップ、エクステント、またはオブジェクトムーバによって記憶される他の時間的差分情報を使用することによって、コピーする必要のあるデータの量を最小化しながら、長期にわたるアプリケーションデータオブジェクトの連続したバージョンを作製する、一連の操作である。それは、アプリケーションデータをデータ記憶オブジェクトに記憶し、それを、経時的な変化が容易に特定できるように、種々の変化を経時的にアプリケーションデータに関連付けるメタデータと関連付ける。
データバックアップの最適な手段は、ビットマップ、エクステント、またはオブジェクトムーバによって記憶される他の時間的差分情報を使用することによって、コピーする必要のあるデータの量を最小化しながら、長期にわたるアプリケーションデータオブジェクトの連続したバージョンを作製する、一連の操作である。それは、アプリケーションデータをデータ記憶オブジェクトに記憶し、それを、経時的な変化が容易に特定できるように、種々の変化を経時的にアプリケーションデータに関連付けるメタデータと関連付ける。
好ましい実施形態において、プロシージャには以下のステップが含まれる:
1.機序は、データ記憶オブジェクト内のアプリケーションデータの初期参照状態、例えば、T0を提供する。
2.後続のインスタンス(バージョン)が、差分エンジンプロバイダを有する仮想記憶プール内のデータ記憶オブジェクトの経時的な必要性に基づいて作成される。
3.各連続したバージョン、例えば、T4、T5は、仮想記憶プールに差分エンジンプロバイダを使用して、T5が、T4に対する参照として、かつT5とT4との間の差分のセットとして記憶されるように、それと、それよりも前に作成されたインスタンスとの間の差分を取得する。
4.コピーエンジンは、1つのデータオブジェクト(ソース)から別のデータオブジェクト(目的地)にデータをコピーする要求を受信する。
5.目的地オブジェクトが作成される仮想記憶プールが、ソースデータオブジェクトの以前のバージョンから作成された他のオブジェクトを含まない場合、新しいオブジェクトが、目的地の仮想記憶プールに作成され、ソースデータオブジェクトの全コンテンツが、目的地オブジェクトにコピーされ、プロシージャは完了する。それ以外の場合は、次のステップに続く。
6.目的地オブジェクトが作成される仮想記憶プールが、ソースデータオブジェクトの以前のバージョンから作成されたオブジェクトを含有する場合、ソースデータオブジェクトの仮想記憶プール内の対応する以前のバージョンが存在する、目的地仮想記憶プール内の最近作成された以前のバージョンが選択される。例えば、T5のコピーが、スナップショットプールから開始され、時間T3で作成されるオブジェクトがターゲットで利用可能な最も最近のバージョンである場合、T3が以前のバージョンとして選択される。
7.前のステップで特定された初期バージョンで開始し、これからコピーされるソースデータオブジェクトで終了する、ソースデータオブジェクトのバージョンに関する時間順のリストを構築する。上述の例では、スナップショットプールにおいて、オブジェクトのすべての状態が利用可能であるが、T3を含み、それ以降の状態、すなわち、T3、T4、T5のみが、対象のものである。
8.リストの最初のバージョンから最後のものまで、差分のすべてが表示されるように、各連続したバージョン間の差分の対応するリストを構築する。両方の差分付けを行い、データのどの部分が変化し、どの部分が対応する時間の新しいデータを含むかを特定する。これにより、ターゲットバージョンからソースバージョンの差分、例えば、T3とT5との間の差分のセットを作成する。
9.ステップ6で特定された、以前のバージョンのオブジェクトを目的地仮想記憶プールに、例えば、オブジェクトT3をターゲットストアに、複製することによって、目的地オブジェクトを作成する。
10.ステップ8で作成されたリスト内の特定された差分のセットを、ソースデータオブジェクトから目的地オブジェクトにコピーし、プロシージャが完了する。
1.機序は、データ記憶オブジェクト内のアプリケーションデータの初期参照状態、例えば、T0を提供する。
2.後続のインスタンス(バージョン)が、差分エンジンプロバイダを有する仮想記憶プール内のデータ記憶オブジェクトの経時的な必要性に基づいて作成される。
3.各連続したバージョン、例えば、T4、T5は、仮想記憶プールに差分エンジンプロバイダを使用して、T5が、T4に対する参照として、かつT5とT4との間の差分のセットとして記憶されるように、それと、それよりも前に作成されたインスタンスとの間の差分を取得する。
4.コピーエンジンは、1つのデータオブジェクト(ソース)から別のデータオブジェクト(目的地)にデータをコピーする要求を受信する。
5.目的地オブジェクトが作成される仮想記憶プールが、ソースデータオブジェクトの以前のバージョンから作成された他のオブジェクトを含まない場合、新しいオブジェクトが、目的地の仮想記憶プールに作成され、ソースデータオブジェクトの全コンテンツが、目的地オブジェクトにコピーされ、プロシージャは完了する。それ以外の場合は、次のステップに続く。
6.目的地オブジェクトが作成される仮想記憶プールが、ソースデータオブジェクトの以前のバージョンから作成されたオブジェクトを含有する場合、ソースデータオブジェクトの仮想記憶プール内の対応する以前のバージョンが存在する、目的地仮想記憶プール内の最近作成された以前のバージョンが選択される。例えば、T5のコピーが、スナップショットプールから開始され、時間T3で作成されるオブジェクトがターゲットで利用可能な最も最近のバージョンである場合、T3が以前のバージョンとして選択される。
7.前のステップで特定された初期バージョンで開始し、これからコピーされるソースデータオブジェクトで終了する、ソースデータオブジェクトのバージョンに関する時間順のリストを構築する。上述の例では、スナップショットプールにおいて、オブジェクトのすべての状態が利用可能であるが、T3を含み、それ以降の状態、すなわち、T3、T4、T5のみが、対象のものである。
8.リストの最初のバージョンから最後のものまで、差分のすべてが表示されるように、各連続したバージョン間の差分の対応するリストを構築する。両方の差分付けを行い、データのどの部分が変化し、どの部分が対応する時間の新しいデータを含むかを特定する。これにより、ターゲットバージョンからソースバージョンの差分、例えば、T3とT5との間の差分のセットを作成する。
9.ステップ6で特定された、以前のバージョンのオブジェクトを目的地仮想記憶プールに、例えば、オブジェクトT3をターゲットストアに、複製することによって、目的地オブジェクトを作成する。
10.ステップ8で作成されたリスト内の特定された差分のセットを、ソースデータオブジェクトから目的地オブジェクトにコピーし、プロシージャが完了する。
目的地仮想記憶プール内の各データオブジェクトは、完全である、すなわち、それは、全データオブジェクトを表し、他の時点での状態または表示に対する外部参照を必要とすることなく、その時点のアプリケーションデータのすべてへのアクセスを可能にする。オブジェクトは、ベースライン状態から現在の状態まで、すべてのデルタを再生することなく、アクセス可能である。さらに、目的地仮想記憶プールにおけるデータオブジェクトの初期及び後続のバージョンの複写は、その中のアプリケーションデータコンテンツの徹底的な複写を必要としない。最後に、第2及び後続の状態に到達するためには、上述のように、データ記憶オブジェクトのコンテンツの徹底的なトラバーサル、伝送、または複製を伴うことなく、追跡及び維持される変更の伝送のみを必要とする。
オブジェクトマネージャ及びデータムーバを使用したデータ復元の最適な手段
直感的に、データ復元のための最適な手段は、データバックアップのための最適な手段の逆である。所与の時点における目的地仮想記憶プール内のデータオブジェクトの所望される状態を再現するためのプロシージャには、以下のステップが含まれる。
1.再現される所望の状態に対応する、差分エンジンプロバイダを有する別の仮想プール内のデータオブジェクトのバージョンを特定する。これは、ソース仮想記憶プール内のソースデータオブジェクトである。
2.目的地仮想記憶プール内の再現されるデータオブジェクトの先行するバージョンを特定する。
3.ステップ2においてデータオブジェクトのバージョンが特定されない場合は、目的地仮想記憶プールに新しい目的地オブジェクトを作成し、ソースデータオブジェクトから目的地データオブジェクトにデータをコピーする。プロシージャが完了する。それ以外の場合は、以下のステップに続く。
4.データオブジェクトのバージョンがステップ2で特定された場合、ステップ2で特定されたデータオブジェクトに対応する、ソース仮想記憶プール内のデータオブジェクトを特定する。
5.ステップ4でデータオブジェクトが特定されない場合、目的地仮想記憶プールに新しい目的地オブジェクトを作成し、ソースデータオブジェクトから目的地データオブジェクトにデータをコピーする。プロシージャが完了する。それ以外の場合は、以下のステップに続く。
6.ステップ2で特定されたデータオブジェクトを複写することによって、目的地仮想記憶プールに新しい目的地データオブジェクトを作成する。
7.差分エンジンプロバイダをソース仮想記憶プールに用いて、ステップ1で特定されたデータオブジェクトとステップ4で特定されたデータオブジェクトとの間の差分のセットを得る。
8.ステップ7で作成されたリストによって特定されるデータを、ソースデータオブジェクトから目的地データオブジェクトにコピーする。プロシージャが完了する。
直感的に、データ復元のための最適な手段は、データバックアップのための最適な手段の逆である。所与の時点における目的地仮想記憶プール内のデータオブジェクトの所望される状態を再現するためのプロシージャには、以下のステップが含まれる。
1.再現される所望の状態に対応する、差分エンジンプロバイダを有する別の仮想プール内のデータオブジェクトのバージョンを特定する。これは、ソース仮想記憶プール内のソースデータオブジェクトである。
2.目的地仮想記憶プール内の再現されるデータオブジェクトの先行するバージョンを特定する。
3.ステップ2においてデータオブジェクトのバージョンが特定されない場合は、目的地仮想記憶プールに新しい目的地オブジェクトを作成し、ソースデータオブジェクトから目的地データオブジェクトにデータをコピーする。プロシージャが完了する。それ以外の場合は、以下のステップに続く。
4.データオブジェクトのバージョンがステップ2で特定された場合、ステップ2で特定されたデータオブジェクトに対応する、ソース仮想記憶プール内のデータオブジェクトを特定する。
5.ステップ4でデータオブジェクトが特定されない場合、目的地仮想記憶プールに新しい目的地オブジェクトを作成し、ソースデータオブジェクトから目的地データオブジェクトにデータをコピーする。プロシージャが完了する。それ以外の場合は、以下のステップに続く。
6.ステップ2で特定されたデータオブジェクトを複写することによって、目的地仮想記憶プールに新しい目的地データオブジェクトを作成する。
7.差分エンジンプロバイダをソース仮想記憶プールに用いて、ステップ1で特定されたデータオブジェクトとステップ4で特定されたデータオブジェクトとの間の差分のセットを得る。
8.ステップ7で作成されたリストによって特定されるデータを、ソースデータオブジェクトから目的地データオブジェクトにコピーする。プロシージャが完了する。
所望の状態へのアクセスは、完全なものであり、他のコンテナまたは他の状態への外部参照を必要としない。参照状態を考慮して所望の状態を確立することは、徹底的なトラバースも徹底的な伝送も必要とせず、ソース仮想記憶プール内の提供される表示によって示される、取り出された変更のみが必要である。
サービスレベル合意
図7は、サービスレベル合意を図示する。サービスレベル合意は、アプリケーションデータの二次コピーに関する詳細なビジネス要件をキャプチャする。最も単純な記述では、ビジネス要件は、コピーがいつ及びどの頻度で作成されるか、それらがどのくらい保持されるか、ならびにこれらのコピーがどの種類の記憶プールに存在するかを定義する。この単純化した記述は、ビジネス要件のいくつかの側面をキャプチャしない。所与の種類のプールに関するコピー作成の頻度は、一日のうちのすべての時間、及び1週間のうちのすべての日にわたって、均一である必要はない。一日のうちのある特定の時間、または1週間もしくは1カ月のうちのある特定の日は、アプリケーションデータにおけるより重要な(またはあまり重要でない)期間を表し得、したがって、より頻繁な(またはあまり頻繁でない)コピーを要求し得る。同様に、特定のプール内のアプリケーションデータのすべてのコピーが、同じ期間保持されることが必要とされない場合がある。例えば、月1回の処理の最後に作成されたアプリケーションデータは、月の中頃に作成された同じ記憶プール内のコピーよりも長い期間保持される必要がある場合がある。
図7は、サービスレベル合意を図示する。サービスレベル合意は、アプリケーションデータの二次コピーに関する詳細なビジネス要件をキャプチャする。最も単純な記述では、ビジネス要件は、コピーがいつ及びどの頻度で作成されるか、それらがどのくらい保持されるか、ならびにこれらのコピーがどの種類の記憶プールに存在するかを定義する。この単純化した記述は、ビジネス要件のいくつかの側面をキャプチャしない。所与の種類のプールに関するコピー作成の頻度は、一日のうちのすべての時間、及び1週間のうちのすべての日にわたって、均一である必要はない。一日のうちのある特定の時間、または1週間もしくは1カ月のうちのある特定の日は、アプリケーションデータにおけるより重要な(またはあまり重要でない)期間を表し得、したがって、より頻繁な(またはあまり頻繁でない)コピーを要求し得る。同様に、特定のプール内のアプリケーションデータのすべてのコピーが、同じ期間保持されることが必要とされない場合がある。例えば、月1回の処理の最後に作成されたアプリケーションデータは、月の中頃に作成された同じ記憶プール内のコピーよりも長い期間保持される必要がある場合がある。
ある特定の実施形態のサービスレベル合意304は、ビジネス要件に存在するこれらの複雑性のすべてを表すように設計されている。サービスレベル合意は、名称属性、説明属性、ハウスキーピング属性、及びサービスレベルポリシーのコレクションという4つの主要な部分を有する。上述のように、1つのアプリケーションに1つのSLAがある。
名称属性701は、各サービスレベル合意が、固有の名称を有することを可能にする。
説明属性702は、ユーザが、サービスレベル合意に有用な説明を割り当てることができるものである。
サービスレベル合意はまた、それの維持及び訂正を可能にする、いくつかのハウスキーピング属性703を有する。これらの属性には、所有者識別、作成日時、修正及びアクセス、優先順位、有効/無効フラグが含まれるが、これらに限定されない。
サービスレベル合意はまた、複数のサービスレベルポリシー705を含有する。いくつかのサービスレベル合意は、単一のサービスレベルポリシーを有するだけであり得る。より具体的には、単一のSLAは、数十のポリシーを含有し得る。
各サービスレベルポリシーは、ある特定の実施形態において、少なくとも次のものを含む:ソース記憶プール位置706及び種類708;ターゲット記憶プール位置710及び種類712;期間として表されるコピー作成の頻度714;期間として表されるコピー保持の長さ716;この特定のサービスレベルポリシーに関して一日の間の操作時間718;ならびにこのサービスレベルポリシーが適用される週、月、または年間の日数720。
各サービスレベルポリシーは、ソース及びターゲット記憶プール、ならびにこれらの記憶プール間の所望されるアプリケーションデータのコピーの頻度を指定する。さらに、サービスレベルポリシーは、その操作時間、及びそれが適用される日数を指定する。各サービスレベルポリシーは、アプリケーションデータの保護のためのビジネス要件における、1つのステートメントの表示である。例えば、特定のアプリケーションが、毎月、月締めの後にアーカイブコピーが作成され、3年間保持されるビジネス要件を有する場合、これは、その月の最終日の夜中12時にローカルバックアップ記憶プールから長期アーカイブ記憶プールへのコピーを3年間の保持とともに必要とするサービスレベルポリシーに変換され得る。
すべてのサービスレベルポリシーは、ソース及び目的地のプール及び位置の特定の組み合わせを有し、例えば、ソース一次記憶プールと目的地ローカルスナップショットプールは、総合すると、その特定の目的地プールにコピーを作成するためのビジネス要件を指定する。ビジネス要件は、例えば、スナップショットコピーが通常の作業時間の間は1時間に1回作成されるが、これらの時間外では4時間に1回作成されることを指示し得る。同じソース及びターゲット記憶プールを有する2つのサービスレベルポリシーは、サービスポリシーエンジンによって実施され得る形態で、これらの要件を効果的にキャプチャする。
サービスレベル合意のこれらの形態は、毎日、毎週、及び毎月のビジネスアクテビティのスケジュールの表示を可能にし、したがって、従来的なRPO及びRPOに基づくスキームよりもさらに正確にアプリケーションデータを保護及び管理するためのビジネス要件をキャプチャする。操作時間、及び1年のうちの数日、数週間、及び数ヶ月での操作を可能にすることにより、スケジューリングは、「カレンダーベース」で発生し得る。
総合すると、ある特定の組み合わせのソースと目的地、例えば、「ソース:ローカル一次及び目的地:ローカル性能最適化」を有するサービスレベルポリシーのすべてが、1種類の記憶について非均一のデータ保護要件をキャプチャする。単一のRPO数は、一方で、1日中及びすべての日にわたって、データ保護の1つの均一な頻度を強制する。例えば、ある組み合わせのサービスレベルポリシーは、多数のスナップショットが10分間等の短い時間の間保存され、より少ない数のスナップショットが8時間等のより長期間保存されるように要求し得、これは、誤って削除されてしまった少量の情報が、10分前以内の状態に戻り得ると同時に、10分に1回取得されるすべてのスナップショットの記憶オーバーヘッドを必要とすることなく、より長い対象期間(time horizon)で、実質的なデータ保護を提供することを可能にする。別の例として、バックアップデータ保護機能は、作業の週の間は1つの頻度で、週末の間は別の頻度で動作する、所与の1つのポリシーであり得る。
異なるクラスのソース及び目的地記憶装置のすべてに関するサービスレベルポリシーが含まれる場合、サービスレベル合意は、ローカルスナップショット、ローカル長期ストア、オフサイト記憶装置、アーカイブ等を含む、アプリケーション全体のデータ保護要件のすべてを完全にキャプチャする。SLA内のポリシーのコレクションは、所与の機能がいつ実行されるべきであるかを表すことができ、所与のデータソースに行われるべき複数のデータ管理機能を表すことができる。
サービスレベル合意は、管理ワークステーション上のユーザインターフェースを通じてユーザによって作成及び修正される。これらの合意は、サービスポリシーエンジンによって構造化SQLデータベースまたはそれが管理する他のレポジトリに記憶される、電子文書である。ポリシーは、その通常のスケジューリングアルゴリズムを通じて、サービスポリシーエンジンによって取り出され、電子的に分析され、それに基づいて起動される。
図8は、アプリケーション特化モジュール402を図示する。アプリケーション特化モジュールは、アプリケーション300(以下に記載される)に近接して動作し、アプリケーション及びその動作環境とやりとりして、データ管理操作に必要とされるメタデータを集め、アプリケーションに問い合わせし、それを制御する。
アプリケーション特化モジュールは、アプリケーションサービスプロセス及びデーモン801、アプリケーション構成データ802、オペレーティングシステム記憶サービス803(Windows(登録商標)でのVSS及びVDS等)、論理ボリューム管理及びファイルシステムサービス804、ならびにオペレーティングシステムドライバ及びモジュール805を含む、アプリケーションの種々の構成要素及び動作環境とやりとりする。
アプリケーション特化モジュールは、サービスポリシーエンジン406からの制御コマンドに応答してこれらの操作を行う。アプリケーションとのこれらのやりとりには、メタデータ収集及びアプリケーション一貫性の2つの目的がある。
メタデータ収集は、アプリケーション特化モジュールが、アプリケーションに関するメタデータを収集するプロセスである。いくつかの実施形態において、メタデータには、アプリケーションの構成パラメータ;アプリケーションの状態及びステータス;アプリケーションの制御ファイル及び起動/終了スクリプト;アプリケーションのデータファイル、ジャーナル、及びトランザクションログの位置;ならびにシンボリックリンク、ファイルシステムマウントポイント、論理ボリューム名称、及びアプリケーションデータへのアクセスに影響を及ぼし得る他のそのようなエンティティといった情報が含まれる。
メタデータは、アプリケーションデータ及びSLA情報とともに収集され、保存される。これにより、システム内のアプリケーションデータの各コピーがそこに含まれ、アプリケーションデータの再構築に必要とされる詳細のすべてを含むことが保証される。
アプリケーション一貫性は、アプリケーションデータのコピーが作成されるときに、そのコピーが有効であり、アプリケーションの有効なインスタンスに復元され得ることを確実にする動作のセットである。これは、アプリケーションが有効であり、そのオンラインの操作可能な状態であると同時に、保護されることをビジネス要件が指定する場合に、重要である。アプリケーションは、そのデータストア内で相互依存的なデータ関係を有し得、これらが一貫性のある状態でコピーされない場合、有効な復元可能イメージを提供することはない。
アプリケーション一貫性を達成する実際のプロセスは、アプリケーションによって様々である。いくつかのアプリケーションは、キャッシュデータをディスクへと出す単純なフラッシュコマンドを有する。いくつかのアプリケーションは、アプリケーションが、アプリケーションデータが変化している場合ですら一貫性を保証する様式でその操作がジャーナルされることを確実にする、ホットバックアップモードをサポートする。いくつかのアプリケーションは、一貫性を確保するために、VSS及びVDS等のオペレーティングシステム記憶サービスとのやりとりを必要とする。アプリケーション特化モジュールは、特定のアプリケーションで機能し、そのアプリケーションの一貫性を確保する、特別な目的で作られたものである。アプリケーション特化モジュールは、アプリケーションデータの一貫したスナップショットを提供するために、基底の記憶装置仮想化デバイス及びオブジェクトマネージャとやりとりする。
効率のために、アプリケーション特化モジュール402の好ましい実施形態は、アプリケーション300と同じサーバ上で動作する。これにより、アプリケーションとのやりとりにおける最小限の待ち時間を保証し、アプリケーションホスト上の記憶サービス及びファイルシステムへのアクセスを提供する。アプリケーションホストは、典型的に、一次記憶装置とみなされ、これは、次いで、性能最適化ストアにスナップショットされる。
準備ステップを最小化することを含めて、動作しているアプリケーションの干渉を最小化するために、アプリケーション特化モジュールは、特定の時間におけるアプリケーションデータへのアクセスが必要とされる場合、及びその時間のスナップショットが、オブジェクトマネージャによって追跡したときにシステム内のどこにも存在しない場合に、スナップショットを作成するようにトリガされるのみである。スナップショットが作製された時間を追跡することによって、オブジェクトマネージャは、二次容量最適化プールから発行することができるバックアップ及び複製についての複数の要求を満たすことを含む、性能最適化データストアからの後続のデータ要求を満たすことができる。オブジェクトマネージャは、性能最適化ストアにオブジェクトハンドルを提供することができる可能性があり、スナップショットの形式に特異的な本来の形式で、性能最適化ストアに指示することができ、これは、基底の記憶機器に依存する。いくつかの実施形態において、この形式は、どのブロックが変化したかを示す1つ以上のLUNビットマップと組み合わされたアプリケーションデータであり得、他の実施形態では、これは、特定のエクステントであり得る。データ移行に使用される形式は、したがって、ビットマップまたはエクステントを使用して、2つのスナップショット間のデルタまたは差分のみを移行することができるものである。
アプリケーションのバージョン番号等のメタデータもまた、スナップショットとともに各アプリケーションに関して記憶され得る。SLAポリシーが実行されると、アプリケーションメタデータが読み出され、ポリシーに使用される。このメタデータは、データオブジェクトとともに記憶される。各SLAについて、アプリケーションメタデータは、軽量スナップショット操作の際に1度読み出されるのみであり、そのときに発生するキャッシュのフラッシュ等の準備操作は、軽量スナップショット操作の際に1度行われるのみであるが、そのメタデータとともに、アプリケーションデータのこのコピーが、複数のデータ管理機能に使用され得る。
サービスポリシーエンジン
図9は、サービスポリシーエンジン406を図示する。サービスポリシーエンジンは、サービスポリシースケジューラ902を含み、これは、ユーザによって構成されるサービスレベル合意のすべてを調べ、サービスレベル合意を満たすスケジューリング決定を行う。これは、情報をキャプチャし、それを長期間保持するために、いくつかの実施形態において、構成されたサービスレベル合意が保持及び更新されるSLAストア904;論理記憶プール名称と実際の記憶プールとの間のマッピングを提供するリソースプロファイルストア906;情報が、期限が切れていない種々のプール内への作成が成功した以前のコピーに関して分類される、保護カタログストア908;ならびに、集中型履歴ストア910を含む、複数のデータストアに頼る。
図9は、サービスポリシーエンジン406を図示する。サービスポリシーエンジンは、サービスポリシースケジューラ902を含み、これは、ユーザによって構成されるサービスレベル合意のすべてを調べ、サービスレベル合意を満たすスケジューリング決定を行う。これは、情報をキャプチャし、それを長期間保持するために、いくつかの実施形態において、構成されたサービスレベル合意が保持及び更新されるSLAストア904;論理記憶プール名称と実際の記憶プールとの間のマッピングを提供するリソースプロファイルストア906;情報が、期限が切れていない種々のプール内への作成が成功した以前のコピーに関して分類される、保護カタログストア908;ならびに、集中型履歴ストア910を含む、複数のデータストアに頼る。
履歴ストア910は、タイムスタンプ、種々の記憶プール内の各アプリケーションの以前のコピーの順序及び階層を含む、過去のアクティビティに関する履歴情報が、すべてのデータ管理アプリケーションの使用のために保存されるところである。例えば、午後1時に開始し、午後9時に失効するようにスケジュールされる、一次データストアから容量最適化データストアへのスナップショットコピーは、午前11時及び午後12時に行われた同じソース及びターゲットのスナップショットについての関連オブジェクトデータもまた含む、時間的データストア内の履歴ストア910に記録される。
これらのストアは、サービスポリシーエンジンによって管理される。例えば、ユーザが、管理ワークステーションを通じて、サービスレベル合意を作成すると、またはその中のポリシーのうちの1つを修正すると、この新しいSLAをそのストアに保持し、SLAによって指定されるようにコピーをスケジューリングすることによってこの修正に反応するのは、サービスポリシーエンジンである。同様に、サービスポリシーエンジンが、記憶プールにアプリケーションの新しいコピーをもたらすデータ移動ジョブを無事に完了させると、記憶ポリシーエンジンは、履歴ストアを更新し、結果としてこのコピーが、将来的な決定に組み込まれるようになる。
サービスポリシーエンジンによって使用される種々のストアの好ましい実施形態は、サービスポリシーエンジンに近接した関係データベース管理システム内のテーブルの形態である。これは、ストアに問い合わせし、それを更新するときに一貫したトランザクション動作を確実にし、相互依存データの取り出しにおける柔軟性を可能にする。
サービスポリシースケジューラ902のスケジューリングアルゴリズムを、図10に図示する。サービスポリシースケジューラが、1つの記憶プールから別の記憶プールに、アプリケーションデータのコピーを作成する必要があると決定すると、それは、データ移動リクエスタ及びモニタのタスクを開始する912。これらのタスクは、再発生するタスクではなく、それらが完了したときに終結する。サービスレベルポリシーが指定される方式に応じて、複数のこれらのリクエスタが、同時に操作可能であり得る。
サービスポリシースケジューラは、どの追加タスクに取り組むかを決定する際、サービスレベル合意の優先順位を考慮する。例えば、1つのサービスレベル合意は、ミッションクリティカルなアプリケーションの保護を指定しているために高い優先順位を有し、一方で別のSLAは、試験データベースの保護を指定しているために、低い優先順位を有する場合、サービスポリシーエンジンは、ミッションクリティカルなアプリケーションの保護のみを実行することを選択し得、低い優先順位のアプリケーションの保護を延期するか、または完全に省略し得る。これは、サービスポリシーエンジンが、より高い優先順位のSLAをより低い優先順位のSLAよりも前にスケジューリングすることによって達成される。好ましい実施形態において、そのような状況では、監査の目的で、サービスポリシーエンジンはまた、管理ワークステーションへの通知イベントをトリガする。
ポリシースケジューリングアルゴリズム
図10は、ポリシースケジュールエンジンのフローチャートを図示する。ポリシースケジュールエンジンは、定義されたすべてのSLAを継続的に繰り返す。SLAのすべての最後に到達すると、短い時間、例えば、10秒間スリープし、再びSLAの確認を再開する。各SLAには、1つのアプリケーションについての完全なデータ保護ビジネス要件が含まれ、したがって、SLAのすべては、アプリケーションのすべてを表す。
図10は、ポリシースケジュールエンジンのフローチャートを図示する。ポリシースケジュールエンジンは、定義されたすべてのSLAを継続的に繰り返す。SLAのすべての最後に到達すると、短い時間、例えば、10秒間スリープし、再びSLAの確認を再開する。各SLAには、1つのアプリケーションについての完全なデータ保護ビジネス要件が含まれ、したがって、SLAのすべては、アプリケーションのすべてを表す。
各SLAについて、スケジュールエンジンは、同じソースプール及び目的地プールを有するサービスレベルポリシーのすべてを一緒に収集し1004、プロセスは1000で記載され、1002においてSLAセット内のSLAのへと反復される。総合すると、サービスレベルポリシーのこのサブセットは、ソース記憶プールからその特定の目的地記憶プールへのコピーに関する要件のすべてを表す。
サービスレベルポリシーのこのサブセットのうち、サービスポリシースケジューラは、その日に適用されないか、またはそれらの操作時間外であるポリシーを破棄する。残っているポリシー中で、最も短い頻度を有するポリシーを見出し1006、履歴データ及び履歴ストア910に基づいて、次の1008で実行される必要のある最も長い保持時間を有するものを見出す。
次に、新しいコピーの期限はまだであるため、コピーが既に進行中であるため、またはコピーする新しいデータが存在しないため、現時点でアプリケーションデータの新しいコピーを作製することを無視する一連のチェック1010〜1014が存在する。これらの条件のうちのいずれかが当てはまる場合、サービスポリシースケジューラは、ソース及び目的地プールの次の組み合わせに進む1004。これらの条件がいずれも当てはまらない場合、新しいコピーが開始される。コピーは、このSLA内の対応するサービスレベルポリシーに指定されるように実行される1016。
次に、スケジューラは、同じサービスレベル合意の次のソース及び目的地プールの組み合わせに進む1018。異なる組み合わせがそれ以上に存在しない場合、スケジューラは、次のサービスレベル合意に進む1020。
サービスポリシースケジューラは、すべてのサービスレベル合意のすべてのソース/目的地プールの組み合わせを経た後、短期間一時停止し、その後でサイクルを再開する。
スナップショットストア及びバックアップストアを有する、2つのポリシーのみが定義された単純な例示的システムは、以下のようにサービスポリシースケジューラとやりとりする。1つが「1時間に1回バックアップし、バックアップを4時間保持する」と示し、もう1つが「2時間に1回バックアップし、バックアップを8時間保持する」と示す、2つのポリシーを考慮すると、結果は、毎時間1つのスナップショットを取り、このスナップショットは、それぞれがバックアップストアにコピーされるが、スナップショットストア及びバックアップストアの両方で、異なる時間の間保持される。「2時間に1回のバックアップ」ポリシーは、システムアドミニストレータによって午後12時に実施されるようにスケジュールされる。
午後4時に、サービスポリシースケジューラがステップ1000での操作を開始すると、ステップ1002では2つのポリシーを発見する。(午後12時から2時間の倍数が経過しているため、両方のポリシーが適用される)。ステップ1004では1つのソース及び目的地プールの組み合わせしか存在しない。ステップ1006では2つの頻度が存在し、システムは、2時間の頻度よりも短いため、1時間の頻度を選択する。ステップ1008では異なる保持時間を有する2つの操作が存在し、システムは、より長い保持時間値を有するため、8時間の保持時間を有する操作を選択する。4時間の要件を満たすために1つのコピーが作製され、8時間の要件を満たす別のコピーが作製される代わりに、2つの要件は、より長い8時間の要件に融合され、単一のスナップショットコピー操作によって満たされる。システムは、ステップ1010がコピーの期限であることを判定し、履歴ストア910で関連オブジェクトをチェックし、コピーが既にターゲット(ステップ912で)及びソース(ステップ914で)において作製されているかどうかを判定する。これらのチェックを通過すると、システムは、ステップ916でコピーを開始し、そのプロセスにおいて、スナップショットが作製され、スナップショットストアに保存されるようにトリガする。スナップショットは、次いで、スナップショットストアからバックアップストアにコピーされる。システムは、次いで、スリープに進み1022、10秒間等の短期間の後に再度起動する。結果は、バックアップストアにおけるコピー及びスナップショットストアにおけるコピーであり、ここで、偶数時間のスナップショットは8時間持続し、奇数時間のスナップショットは4時間持続する。バックアップストア及びスナップショットストアの偶数時間のスナップショットには、いずれも、8時間の保持期間がタグされ、その時間になると別のプロセスによってシステムから自動で消去される。
両方のポリシーが適用されるとはいえ、いずれのポリシーも、単一のコピーによって満たされるため、2時に2つのスナップショットを取るか、または2つのバックアップコピーを作製する理由はないことに留意されたい。これらのスナップショットを組み合わせ、融合させることは、結果として、複数の別個のポリシーの柔軟性を保持しながら、不必要な操作を減少させる。同様に、異なる保持時間を有する同じターゲットに関して同時に2つのポリシーが有効となることが、有用であり得る。所与の例では、2時間毎のコピーよりもより多くの1時間毎のコピーが保持され、結果として現在により近い時点での復元のためのさらなる精度をもたらす。例えば、以前のシステムでは、午後7時30分に、損傷が午後の早い時間から発見された場合、バックアップは、過去4時間の各時間、午後4時、5時、6時、7時が利用可能となる。同様に、さらに2つのバックアップが、午後2時から午後12時まで保持されているだろう。
コンテンツアドレス可能ストア
図11は、コンテンツアドレス可能プロバイダ510のコンテンツアドレスストアを実装するモジュールのブロック図である。
図11は、コンテンツアドレス可能プロバイダ510のコンテンツアドレスストアを実装するモジュールのブロック図である。
コンテンツアドレス可能ストア510の実装は、前述のスナップショットを通じて実装される性能最適化プールの場合のように、コピーインまたはコピーアウトよりも容量に関して最適化された記憶リソースプールを提供し、したがって、典型的に、オフラインバックアップ、複製、及びリモートバックアップに使用される。コンテンツアドレス可能記憶装置は、1度のみ異なるオブジェクトの共通のサブセットを記憶する手段を提供し、ここで、それらの共有のサブセットは、サイズが様々であり得るが、典型的には4キロバイト程度に小さいものであり得る。コンテンツアドレス可能ストアの記憶オーバーヘッドは、スナップショットストアと比較して低いが、アクセス時間は、通常、より高い。一般に、コンテンツアドレス可能ストア内のオブジェクトは、それらのコンテンツを大きな割合で共有し得るにも関わらず、互いに固有の関係性を持たないが、この実装では、履歴の関係性もまた維持され、これが、記述される種々の最適化を可能にするものである。これは、スナップショットが、固有に連鎖を形成し、それぞれが以前のスナップショットまたはベースラインコピーからのデルタだけを記憶する、スナップショットストアとは対照的である。具体的には、コンテンツアドレス可能ストアは、単一のオブジェクト内で複数回繰り返されるデータサブセットの1つのコピーのみを記憶し、一方でスナップショットに基づくストアは、あらゆるオブジェクトの少なくとも1つの完全なコピーを記憶する。
コンテンツアドレス可能ストア510は、同じプロセスでか、またはTCP等のローカルトランスポートを介して通信する別個のプロセスでのいずれかで、プールマネージャと同じシステムで実行するソフトウェアモジュールである。この実施形態において、コンテンツアドレス可能ストアモジュールは、異なる構成要素からのソフトウェア障害の影響を最小化することができるように、別個のプロセスで起動する。
このモジュールの目的は、高度に速度効率的な方式でコンテンツを重複排除すること(すなわち、1つまたは複数のデータオブジェクト内で繰り返されるコンテンツが1度だけ記憶されることを確実にすること)によって、データ記憶オブジェクト403の記憶を可能にすることができる。
コンテンツアドレス可能ストアモジュールは、プログラムに基づくAPIを介してプールマネージャにサービスを提供する。これらのサービスには、以下のものが含まれる。
マッピングをハンドルするためのオブジェクト1102:オブジェクトは、APIを介してデータをストアに書き込むことによって作成され得、データが完全に書き込まれると、APIは、オブジェクトのコンテンツによって決定されるオブジェクトハンドルを返却する。対照的に、データは、ハンドルを提供することによってオブジェクト内のオフセットからバイトストリームとして読み出され得る。ハンドルがどのように構築されるかについての詳細は、図12の説明と併せて説明される。
時間的ツリー管理1104は、記憶されたデータオブジェクト間の親/子関係を追跡する。データオブジェクトがストア510に書き込まれると、APIは、それが、既にストア内にある親オブジェクトに対する子として関連付けられることを可能にする。これは、コンテンツアドレス可能ストアに、子オブジェクトが親の変化形であることを示す。単一の親は、異なる変化形を有する複数の子を有し得、例えば、アプリケーションデータが、ある期間定期的にストアに保存された場合などには、初期のコピーが復元され、後続の変化形のための新しい開始点として使用される。時間的ツリー管理操作及びデータモデルは、以下により詳細に説明される。
差分エンジン1106は、ストア内の2つの任意のオブジェクト間の差分領域の概要を生成し得る。差分付け操作は、比較される2つのオブジェクトのハンドルを指定するAPIを介して呼び出され、差分概要の形態は、連続的な差分セクションのオフセット及びサイズを有するコールバックのシーケンスである。差分は、並行して、2つのハッシュ化オブジェクト表示を比較することによって計算される。
ガベージコレクタ1108は、ストアを分析して、いずれのオブジェクトハンドルによっても参照されない保存データを見出し、このデータに与えられた記憶空間の返還要求を行うサービスである。多くのデータが複数のオブジェクトハンドルによって参照されること、すなわち、データがデータオブジェクト間で共有されることは、コンテンツアドレス可能ストアの性質であり、一部のデータが単一のオブジェクトハンドルによって参照されるが、どのオブジェクトハンドルによっても参照されない(オブジェクトハンドルが、コンテンツアドレス可能システムから消去されている場合のように)データは、新しいデータで安全に上書きされ得る。
オブジェクトレプリケータ1110は、2つの異なるコンテンツアドレス可能ストア間でデータオブジェクトを複写するためのサービスである。複数のコンテンツアドレス可能ストアを使用して、オフラインバックアップまたはリモートバックアップ等の追加のビジネス要件を満たすことができる。
これらのサービスは、図11に示される機能モジュールを使用して実装される。データハッシュモジュール1112は、固定のサイズ上限まで、データチャンクに関する固定長キーを生成する。例えば、この実施形態において、ハッシュジェネレータがキーを作製するチャンクの最大サイズは、64KiBである。固定長キーは、使用されたハッシュスキームを示すようにタグ付けされたハッシュか、または損失を伴わないアルゴリズム符号化のうちのいずれかである。この実施形態で使用されるハッシュスキームは、SHA−1であり、これは、分配が均一であり、ハッシュ衝突の可能性がほぼゼロであり、衝突を検出し、それに対処するために設備をこのシステムに組み込む必要がない、安全な暗号的ハッシュを生成する。
データハンドルキャッシュ1114は、データの一時的な記憶及びハンドル対データのマッピングを提供する、メモリ内のデータベースを管理するソフトウェアモジュールである。
永続的ハンドル管理インデックス1104は、CAH対データのマッピングの信頼性のある永続的データベースである。この実施形態において、これは、ハッシュジェネレータからのハッシュを、このハッシュのデータを含む永続的データストア1118内のページにマッピングする、Bツリーとして実装される。完全なBツリーは、ある時点でメモリ内に保有されないため、効率のために、この実施形態はまた、メモリ内のブルームフィルタを使用して、存在しないことがわかっているハッシュの高価なBツリー検索を回避する。
永続的データ記憶モジュール1118は、長期永続的記憶装置にデータ及びハンドルを記憶し、データが記憶されている場所を示すトークンを返却する。ハンドル/トークン対は、後で、データの取り出しに使用される。データは、永続的記憶装置に書き込まれているため、それは、この実施形態ではzlibを使用して実装されている、損失のないデータ圧縮1120の層と、この実施形態では有効でない任意選択的な可逆的暗号化1122の層を通過する。
例えば、データオブジェクトをコンテンツアドレス可能ストアにコピーすることは、オブジェクト/ハンドルマッパーサービスによって提供される操作であり、これは、入来するオブジェクトが記憶され、ハンドルがリクエスタに返却されるためである。オブジェクト/ハンドルマッパーは、入来するオブジェクトを読み取り、ハッシュがデータハッシュジェネレータによって生成されるように要求し、データを永続的データ記憶装置に記憶し、ハンドルを永続的ハンドル管理インデックスに記憶する。データハンドルキャッシュは、ハンドルに関するデータの将来的な早期検索のために更新され続ける。永続的データ記憶装置に記憶されたデータは、ディスクに書き込まれる前に圧縮され、(任意で)暗号化される。典型的に、データオブジェクトにおいてコピーを行う要求は、オブジェクトに関する履歴の記録を作製するために時間的ツリー管理サービスも呼び出し、これはまた、永続的データ記憶装置を介して継続される。
別の例として、そのハンドルが与えられたコンテンツアドレス可能ストアからデータオブジェクトをコピーすることは、オブジェクト/ハンドルマッパーサービスによって提供される別の操作である。ハンドルは、対応するデータの位置を特定するために、データハンドルキャッシュ内で検索され、データが、キャッシュ内で紛失している場合、永続的インデックスが使用され、データの位置がディスク上で特定されると、それが、永続的データ記憶モジュール(これが、ディスクデータを復号化し、解凍する)によって取り出され、再構築されて、リクエスタに返却される。
コンテンツアドレス可能ストアハンドル
図12は、コンテンツアドレス指定されたオブジェクトのハンドルがどのように生成されるかを示す。データオブジェクトマネージャは、コンテンツアドレス可能ハンドルを有するすべてのコンテンツアドレス可能オブジェクトを参照する。このハンドルは、3つの部から作製されている。第1の部1201は、ハンドルが直接示す基底のデータオブジェクトのサイズである。第2の部1202は、それが示すオブジェクトの深度である。第3の1203は、それが示すオブジェクトのハッシュである。フィールド1203は、任意で、ハッシュが基底のデータの損失を伴わない符号化であることを示すタグを含む。このタグは、アルゴリズム符号化として使用されるデータのランレングス符号化(RLE)の形態(データチャンクが、十分に短いRLEとして完全に表され得る場合に)等、使用される符号化スキームを示す。基底のデータオブジェクトが、損失を伴わない符号化として表すには大きすぎる場合、ハッシュからポインタへのマッピングまたはデータへの参照は、永続的ハンドル管理インデックス1104に別個に記憶される。
図12は、コンテンツアドレス指定されたオブジェクトのハンドルがどのように生成されるかを示す。データオブジェクトマネージャは、コンテンツアドレス可能ハンドルを有するすべてのコンテンツアドレス可能オブジェクトを参照する。このハンドルは、3つの部から作製されている。第1の部1201は、ハンドルが直接示す基底のデータオブジェクトのサイズである。第2の部1202は、それが示すオブジェクトの深度である。第3の1203は、それが示すオブジェクトのハッシュである。フィールド1203は、任意で、ハッシュが基底のデータの損失を伴わない符号化であることを示すタグを含む。このタグは、アルゴリズム符号化として使用されるデータのランレングス符号化(RLE)の形態(データチャンクが、十分に短いRLEとして完全に表され得る場合に)等、使用される符号化スキームを示す。基底のデータオブジェクトが、損失を伴わない符号化として表すには大きすぎる場合、ハッシュからポインタへのマッピングまたはデータへの参照は、永続的ハンドル管理インデックス1104に別個に記憶される。
コンテンツアドレス可能オブジェクトに関するデータは、チャンク1204に分割される。各チャンクのサイズは、1つのコンテンツアドレス可能ハンドル1205によってアドレス可能なはずである。データは、データハッシュモジュール1102によってハッシュされ、チャンクのハッシュを使用してハンドルが作製される。オブジェクトのデータが1つのチャンクに収まる場合、作成されたハンドルが、オブジェクトの最終的なハンドルである。そうでない場合、ハンドル自体が、一緒にチャンク1206に分類され、ハッシュが、各ハンドル群に対して生成される。ハンドルのこの分類は、生成されるハンドル1208が1つだけになるまで継続し1207、これが、オブジェクトのハンドルとなる。
オブジェクトが、コンテンツハンドルから再構築される(記憶リソースプールのコピーアウト操作)とき、上位レベルのコンテンツハンドルの参照先を取得して、次のレベルのコンテンツハンドルのリストを得る。深度0のハンドルが得られるまでコンテンツハンドルのさらなるリストを得るために、今度はこれらの参照先が取得される。これらは、ハンドル管理インデックスもしくはキャッシュ内のハンドルを検索することによって、または(ランレングス符号化等のアルゴリズムハッシュの場合には)確定的に全コンテンツに拡張することによってのいずれかで、データに拡張される。
時間的ツリー管理
図13は、コンテンツアドレス可能ストア内に記憶されたデータオブジェクトに関して作成される、時間的ツリーの関係を図示する。この特定のデータ構造は、コンテンツアドレス可能ストア内でのみ用いられる。時間的ツリー管理モジュールは、永続的ストア内に、各コンテンツアドレス指定されたデータオブジェクトを親(これは、ヌルであり得、一連のリビジョンの最初のものを示す)と関連付けるデータ構造1302を維持する。ツリーの個々のノードは、単一のハッシュ値を含む。このハッシュ値は、ハッシュが深度0のハッシュである場合はデータのチャンクを参照するか、またはハッシュが深度1またはそれ以上のハッシュである場合は他のハッシュのリストを参照する。ハッシュ値にマッピングされた参照は、永続的ハンドル管理インデックス1104内に含まれる。いくつかの実施形態において、ツリーのエッジは、重さまたは長さを有し得、これらは、近傍を見出すためのアルゴリズムで使用され得る。
図13は、コンテンツアドレス可能ストア内に記憶されたデータオブジェクトに関して作成される、時間的ツリーの関係を図示する。この特定のデータ構造は、コンテンツアドレス可能ストア内でのみ用いられる。時間的ツリー管理モジュールは、永続的ストア内に、各コンテンツアドレス指定されたデータオブジェクトを親(これは、ヌルであり得、一連のリビジョンの最初のものを示す)と関連付けるデータ構造1302を維持する。ツリーの個々のノードは、単一のハッシュ値を含む。このハッシュ値は、ハッシュが深度0のハッシュである場合はデータのチャンクを参照するか、またはハッシュが深度1またはそれ以上のハッシュである場合は他のハッシュのリストを参照する。ハッシュ値にマッピングされた参照は、永続的ハンドル管理インデックス1104内に含まれる。いくつかの実施形態において、ツリーのエッジは、重さまたは長さを有し得、これらは、近傍を見出すためのアルゴリズムで使用され得る。
これは、標準的なツリーデータ構造であり、モジュールは、標準的な操作の動作をサポートする、具体的には:1310追加:親の下にリーフを追加することであり、これは、初期状態1302と追加後の状態1304との間としてツリーに変化をもたらす;ならびに1312除去:ノードを除去すること(及び、その子をその親に再び親子関係付けること)であり、これは、追加後の状態1304と除去後の状態1306との間としてツリーに変化をもたらす。
「追加」操作は、オブジェクトが外部プールからCASにコピーインされる場合に使用され得る。コピーインが、データバックアップに最適な手段によるものである場合、またはオブジェクトが異なるCASプールを起源とする場合、プレディセッサ(predecessor)オブジェクトが指定されることが要求され、追加操作は、このプレディセッサ/サクセッサ(successor)の関係を記録するために呼び出される。
「除去」操作は、ポリシーマネージャがオブジェクトの保持期間の期限が切れたと判定した場合に、オブジェクトマネージャによって呼び出される。これは、時間的ツリー内にそれを参照するオブジェクトを有さないCASに記憶されたデータを導き得、したがって、後続のガベージコレクションパスは、そのデータのために記憶空間を再利用が可能であるとして解放することができる。
単一のプレディセッサが複数のサクセッサまたは子ノードを有することが可能であることに留意されたい。例えば、これは、オブジェクトが、元々T1時点で作成され、T2時点で修正され、修正形が、復元操作によって元に戻され、後続の修正形が、T3時点で作成された場合に、生じ得る。この例において、T1は、状態T2及び状態T3という2つの子を有する。
異なるCASプールを使用して、リモート位置において障害復旧を提供すること等、異なるビジネス目標を達成することができる。1つのCASから別のCASにコピーする際、コピーは、ターゲットCASの本来の重複排除機能を利用するために、ハッシュ及びオフセットとして送信され得る。任意の新しいハッシュによって示される基底のデータもまた、必要に応じて送信される。
時間的ツリー構造は、種々のサービスの実装の一部として読み出されるか、ナビゲートされる。
・ガベージコレクションは、以下に記載されるように、「マーク」段階の費用を低減させるために、ツリーをナビゲートする
・異なるCASプールへの複製は、既に他のCASプールに移行されていることも既知である時間的ツリー内の近傍セットを見出し、それによって、小さな差分セットのみを追加で移行することが必要となる
・データ復元に最適な手段は、時間的ツリーを使用して、復元操作の基礎として使用することができるプレディセッサを見出す。CASの時間的ツリーデータ構造において、子は、例えば、アーカイブポリシーによって指示される、後続のバージョンである。複数の子が、同じ親ノードでサポートされ、この事例は、親ノードが変更され、復元の基礎として使用され、その後で再度変更される場合に生じ得る。
・ガベージコレクションは、以下に記載されるように、「マーク」段階の費用を低減させるために、ツリーをナビゲートする
・異なるCASプールへの複製は、既に他のCASプールに移行されていることも既知である時間的ツリー内の近傍セットを見出し、それによって、小さな差分セットのみを追加で移行することが必要となる
・データ復元に最適な手段は、時間的ツリーを使用して、復元操作の基礎として使用することができるプレディセッサを見出す。CASの時間的ツリーデータ構造において、子は、例えば、アーカイブポリシーによって指示される、後続のバージョンである。複数の子が、同じ親ノードでサポートされ、この事例は、親ノードが変更され、復元の基礎として使用され、その後で再度変更される場合に生じ得る。
CAS差分エンジン
CAS差分エンジン1106は、図11及び12にあるように、ハッシュ値またはハンドルによって特定される2つのオブジェクトを比較し、オブジェクトデータが異なることがわかっているオブジェクト内のオフセット及びエクステントのシーケンスを生成する。このシーケンスは、図12のハッシュデータ構造において並行して2つのオブジェクトツリーをトラバースすることによって達成される。ツリートラバーサルは、標準的な深度または幅優先トラバーサルである。トラバーサル中に、現在の深度のハッシュが比較される。ノードのハッシュが、両側間で同一である場合、ツリーをさらに降下する必要はなく、そのため、トラバーサルは停止され得る。ノードのハッシュが同一でない場合、トラバーサルは、次の最も低いレベルのツリーへの降下を継続する。トラバーサルが、その対応物に同一でない深度0ハッシュに達すると、非同一のデータが発生した比較されているデータオブジェクトへの絶対オフセットが、データ長とともに、出力シーケンスに排出される。一方のオブジェクトのサイズがもう一方よりも小さい場合、そのトラバーサルは、より早期に完了し、他方のトラバーサルで遭遇するすべての後続のオフセットは、差分として排出される。
CAS差分エンジン1106は、図11及び12にあるように、ハッシュ値またはハンドルによって特定される2つのオブジェクトを比較し、オブジェクトデータが異なることがわかっているオブジェクト内のオフセット及びエクステントのシーケンスを生成する。このシーケンスは、図12のハッシュデータ構造において並行して2つのオブジェクトツリーをトラバースすることによって達成される。ツリートラバーサルは、標準的な深度または幅優先トラバーサルである。トラバーサル中に、現在の深度のハッシュが比較される。ノードのハッシュが、両側間で同一である場合、ツリーをさらに降下する必要はなく、そのため、トラバーサルは停止され得る。ノードのハッシュが同一でない場合、トラバーサルは、次の最も低いレベルのツリーへの降下を継続する。トラバーサルが、その対応物に同一でない深度0ハッシュに達すると、非同一のデータが発生した比較されているデータオブジェクトへの絶対オフセットが、データ長とともに、出力シーケンスに排出される。一方のオブジェクトのサイズがもう一方よりも小さい場合、そのトラバーサルは、より早期に完了し、他方のトラバーサルで遭遇するすべての後続のオフセットは、差分として排出される。
差分付けによるガベージコレクション
図11のもとに示されるように、ガベージコレクタは、特定のCASストアを分析して、CASストア時間的データ構造内のいずれのオブジェクトハンドルによっても参照されない保存データを見出し、このデータに与えられた記憶空間の返還要求を行う、サービスである。ガベージコレクションは、標準的な「マーク及びスイープ」のアプローチを使用する。「マーク」段階は、非常に高価であり得るため、マーク段階に使用されるアルゴリズムが、同じデータが何度も参照され得るとしてもそれを複数回マークすることを最小化させるように試みるが、しかしながら、マーク段階を完了させる必要があり、スイープ段階後にマークされていないデータは後で新しいデータによって上書きされ、結果としてストアからのデータ消失をもたらし得るため、マークされないまま残る参照データがないことを確実にする。
図11のもとに示されるように、ガベージコレクタは、特定のCASストアを分析して、CASストア時間的データ構造内のいずれのオブジェクトハンドルによっても参照されない保存データを見出し、このデータに与えられた記憶空間の返還要求を行う、サービスである。ガベージコレクションは、標準的な「マーク及びスイープ」のアプローチを使用する。「マーク」段階は、非常に高価であり得るため、マーク段階に使用されるアルゴリズムが、同じデータが何度も参照され得るとしてもそれを複数回マークすることを最小化させるように試みるが、しかしながら、マーク段階を完了させる必要があり、スイープ段階後にマークされていないデータは後で新しいデータによって上書きされ、結果としてストアからのデータ消失をもたらし得るため、マークされないまま残る参照データがないことを確実にする。
参照データをマークするのに用いられるアルゴリズムは、CAS内のオブジェクトが、図13に示されるデータ構造を使用して時間的関係でグラフに配置されるという事実を使用する。これらのグラフのエッジを共有するオブジェクトは、それらのデータの小さなサブセットのみが異なる傾向にあり、オブジェクトがプレディセッサから作成されるときに出現する任意の新しいデータチャンクが、任意の2つの他のオブジェクト間に再度出現することは稀である。したがって、ガベージコレクションのマーク段階は、時間的グラフの各関連する構成要素をプロセスする。
図14は、ある特定の実施形態において時間的関係を使用するガベージコレクションの例である。矢印1402によって示される、時間的関係を有するデータ構造の深度優先の検索が行われる。ツリートラバーサルを開始する開始ノード1404を取る。ノード1404は、ツリーのルーツであり、どのオブジェクトも参照しない。ノード1406は、オブジェクト1のハッシュ値及びオブジェクト2のハッシュ値を示す、オブジェクトH1及びH2への参照を含む。ノード1406によって参照されるすべての深度0、深度1、及びより高位のデータオブジェクト、ここではH1及びH2が列挙され、参照されるとしてマークされる。
次に、ノード1408がプロセスされる。これは、マークが行われているノード1406とエッジを共有するため、差分エンジンが1406によって参照されるオブジェクトと、1408によって参照されるオブジェクトとの間の差分に適用され、マークされていないオブジェクトに存在するが、マークされたオブジェクトには存在しない、深度0、深度1、及びより高位のハッシュのセットを得る。この図において、ノード1408には存在するが、ノード1406には存在しないハッシュは、H3であり、そのため、H3が参照されるとしてマークされる。このプロシージャは、すべてのエッジが網羅されるまで継続される。
先行技術のアルゴリズム1418及び現在の実施形態1420によって生成される結果の比較は、ノード1408が先行技術のアルゴリズムによってプロセスされると、既に確認されたハッシュH1及びH2が、新しいハッシュH3とともに出力ストリームに排出されることを示す。現在の実施形態1420は、既に確認されたハッシュを出力ストリームに排出せず、新しいハッシュH3、H4、H5、H6、H7のみが、出力ストリームに排出され、対応して性能が改善される。この方法は、データが、1回を上回ってマークされないことを保証するものではないことに留意されたい。例えば、ハッシュ値H4が、ノード1416で独立して発生する場合、これは、独立して二回目のマークが行われるであろう。
オブジェクトをCASにコピーする
別のプールからCASへのオブジェクトのコピーは、図12にあるようにオブジェクトハンドルによって参照されるデータ構造を生成するために、図11に記載されるソフトウェアモジュールを使用する。プロセスへの入力は、(a)深度0ハンドルを作製するのに適切にサイズ設定された指定のオフセットのデータチャンクのシーケンス、及び任意に(b)同じオブジェクトの以前のバージョンである。黙示的に、新しいオブジェクトは、入力データが提供され、それ自体が以前のバージョンとは異なる場合を除き、以前のバージョンと同一となる。コピーイン操作のアルゴリズムは、図15のフローチャートに図示される。
別のプールからCASへのオブジェクトのコピーは、図12にあるようにオブジェクトハンドルによって参照されるデータ構造を生成するために、図11に記載されるソフトウェアモジュールを使用する。プロセスへの入力は、(a)深度0ハンドルを作製するのに適切にサイズ設定された指定のオフセットのデータチャンクのシーケンス、及び任意に(b)同じオブジェクトの以前のバージョンである。黙示的に、新しいオブジェクトは、入力データが提供され、それ自体が以前のバージョンとは異なる場合を除き、以前のバージョンと同一となる。コピーイン操作のアルゴリズムは、図15のフローチャートに図示される。
以前のバージョン(b)が提供される場合、シーケンス(a)は、(b)からの変化の希薄なセットであり得る。オブジェクトがコピーされ、数カ所のみが以前のオブジェクトと異なることがわかっている場合、これは、コピーインされるデータの量を大幅に低減させ、したがって、必要とされる計算及びi/oアクティビティを低減させ得る。これは、例えば、オブジェクトが前述のデータバックアップに最適な手段によってコピーされる場合に当てはまる。
シーケンス(a)が、大部分がプレディセッサから変化していないセクションを含むとしても、プレディセッサ(b)を特定することにより、コピーインプロシージャが、データが実際に変化したかに関する早期チェックを行うことを可能にし、したがって、CASへの入力を提供するいくつかの他の記憶プールにおいて差分エンジンに可能となり得るものよりも精細なレベルの粒度で、データの重複を回避することを可能にする。
黙示的には、そのため、新しいオブジェクトは、入力データが提供され、それ自体が以前のバージョンとは異なる場合を除き、以前のバージョンと同一となる。コピーイン操作のアルゴリズムは、図15のフローチャートに図示される。
プロセスは、時間的ストア内の任意にサイズ決定されたデータオブジェクトが提供されると、ステップ1500で開始して、1502に進み、ここで、プレディセッサオブジェクト内のハッシュ値が提供される場合、それによって参照されるありとあらゆるハッシュ(深度0から最高レベルまで)が列挙される。これが、プレディセッサ内に既に含まれているデータを記憶することを回避するための迅速なチェックとして使用されることになる。
ステップ1504において、プレディセッサが入力される場合、コンテンツアドレス可能データストアの時間的データ構造にそのクローンの参照を作成する。このクローンが更新されて、新しいオブジェクトとなる。したがって、新しいオブジェクトは、コピーするソースプールからCASにコピーされる差分によって修正されるプレディセッサのコピーとなる。
ステップ1506、1508において、データムーバ502は、データをCASへと押し出す。このデータは、オブジェクト参照及びオフセットによって達成され、これは、データのターゲット位置である。新しいオブジェクトに移動される必要があるのはプレディセッサからの差分のみであるため、このデータは、わずかであり得る。この時点で、入来データは、それぞれが単一の深度0ハッシュによって参照され得るのに十分に小さくサイズ決定された深度0チャンクに分割される。
ステップ1510において、データハッシュモジュールは、各深度0チャンクについてのハッシュを生成する。
ステップ1512において、同じオフセットでプレディセッサハッシュを読み出す。データのハッシュが、同じオフセットでプレディセッサのハッシュと一致する場合、どのデータも記憶する必要がなく、深度1及びより高位のオブジェクトは、この深度0チャンクに関して更新される必要がない。この場合、データの次の深度0チャンクの許容に戻る。これにより、高価なグローバル検索を行う必要なく、時間的重複排除を達成する。ソースシステムは、理想的には、CAS内に既に記憶されているデータからの差分のみを送信するとはいえ、このチェックは、ソースシステムが、異なるレベルの粒度で差分付けを行う場合、またはデータが変更されたとしてマークされるが、その以前に記憶された値に変更し戻されている場合に、必要であり得る。差分付けは、例えば、ソースシステムが、32KiB境界値でデルタを作成するスナップショットプールであり、CASストアが、4KiBのチャンクにハッシュを作成する場合に、異なるレベルの粒度で行われ得る。
一致が見出されない場合、データは、ハッシュされ、記憶され得る。データの書き込みは、提供されたオフセットで開始し、新しいデータがなくなったら終了する。データが記憶されると、ステップ1516で、オフセットが依然として同じ深度1のオブジェクト内に含まれている場合、深度1、深度2、及びすべてのより高位のオブジェクト1518が更新され、各レベルで新しいハッシュを生成し、深度0、深度1、及びすべてのより高位のオブジェクトが、ステップ1514でローカルキャッシュに記憶される。
しかしながら、ステップ1520で、記憶されるデータの量が、深度1のチャンクサイズを上回り、オフセットが、新しい深度1オブジェクトに含まれる場合、現在の深度1は、ストアにフラッシュされる必要があり、これは、それが既にそこに記憶されることが決定している場合を除く。第1に、グローバルインデックス1116において検索する。そこでそれが見出された場合、深度1及びすべての関連する深度0オブジェクトをローカルキャッシュから除去し、新しいチャンク1522に進む。
ステップ1524において、グローバルインデックスを訪問することを回避するための迅速なチェックとして、ローカルキャッシュ内の各深度0、深度1、及びより高位のオブジェクトを検索し、1502において確立されたローカルストア内のそのハッシュを検索する。一致するものをすべて破棄する。
ステップ1526において、ローカルキャッシュ内の各深度0、深度1、及びより高位のオブジェクトに対して、グローバルインデックス1116内のそのハッシュを検索する。一致するものをすべて破棄する。これにより、データがグローバルに重複排除されることを確実にする。
ステップ1528において、ローカルキャッシュから永続的ストアにすべての残りのコンテンツを記憶し、次いで、新しいチャンクのプロセスを継続する。
CASからオブジェクトを読み出すことは、より単純なプロセスであり、CASの多くの実装で共通している。オブジェクトのハンドルは、グローバルインデックスによって永続的データオブジェクトにマッピングされ、必要とされるオフセットは、この永続的データ内から読み出される。いくつかの場合において、オブジェクトハンドルツリー内の複数の深度を通して再帰することが必要な場合がある。
CASオブジェクトネットワーク複製
図11の下に記載されるように、レプリケータ1110は、2つの異なるコンテンツアドレス可能ストア間でデータオブジェクトを複写するサービスである。複製のプロセスは、1つのストアから読み出して、別のストアに書き込むことを通じて達成され得るが、このアーキテクチャは、ローカルまたはワイドエリアネットワーク等の帯域幅が制限される接続よりも効率的な複製を可能にする。
図11の下に記載されるように、レプリケータ1110は、2つの異なるコンテンツアドレス可能ストア間でデータオブジェクトを複写するサービスである。複製のプロセスは、1つのストアから読み出して、別のストアに書き込むことを通じて達成され得るが、このアーキテクチャは、ローカルまたはワイドエリアネットワーク等の帯域幅が制限される接続よりも効率的な複製を可能にする。
各CASストア上で動作する複製システムは、図13に記載される時間的関係構造とともに、上述の差分エンジンサービスを使用し、CASストアによって使用される時間的データ構造内に、オブジェクト毎に、どのリモートストアにオブジェクトが複製されているかについての記録を記憶する。これは、ある特定のデータストアにおけるオブジェクトの存在に関する決定的な認識を提供する。
時間的データ構造を使用することにより、システムが、どのオブジェクトがどのデータストアに存在するかを決定することを可能にする。この情報は、データムーバ及び差分エンジンによって、ターゲットデータストアを最新にするためのコピー操作中に、ネットワーク上で送信されるデータの最小のサブセットを決定するために使用される。例えば、データオブジェクトOが、T3時点でボストンにあるサーバからシアトルにあるリモートサーバにコピーされた場合、保護カタログストア908は、T3時点のオブジェクトOがボストン及びシアトルの両方に存在することを記憶する。T5時点で、ボストンからシアトルへの後続のコピー中に、時間的データ構造は、ボストンにあるソースサーバでの差分付けに使用されるはずの、シアトルにあるオブジェクトOの以前の状態を判定するように構築される。ボストンのサーバは、T5とT3との差分を取得し、その差分をシアトルのサーバに送信する。
オブジェクトAを複製するプロセスが、次に続き、既にターゲットストアに複製されており、ローカルストア内のAの近傍であるとして記録されているオブジェクトA0を特定する。そのようなオブジェクトA0が存在しない場合、Aをリモートストアに送信し、それを送信されたとしてローカルに記録する。ローカルオブジェクトをリモートストアに送信するために、本明細書で具現化される典型的な方法は、オブジェクト内のすべてのハッシュ及びデータチャンクのオフセットを送信し、どのハッシュがリモートで存在しないデータを表すかに関してリモートストアに問い合わせし、必要とされるデータをリモートストアに送信する(この実施形態では、データ及びハッシュの送信は、それらをTCPデータストリームに組み込むことによって実装される)。
対照的に、A0が特定された場合、差分エンジンを起動して、Aに存在するが、A0には存在しないデータチャンクを特定する。これは、リモートストアに送信する必要があるデータの上位セットであるはずである。Aに存在するがA0には存在しないチャンクのハッシュ及びオフセットを送信する。どのハッシュがリモートに存在しないデータを表すかに関してリモートストアに問い合わせ、必要とされるデータをリモートストアに送信する。
サンプル配置アーキテクチャ
図16は、データ管理仮想化(DMV)システムの一実施形態におけるソフトウェア及びハードウェア構成要素を示す。システム内のソフトウェアは、3つの分散された構成要素として実行する。
図16は、データ管理仮想化(DMV)システムの一実施形態におけるソフトウェア及びハードウェア構成要素を示す。システム内のソフトウェアは、3つの分散された構成要素として実行する。
ホストエージェントソフトウェア1602a、1602b、1602cは、上述のアプリケーション特化モジュールのうちのいくつかを実装する。これは、そのデータが管理されているものと同じサーバ1610a、1610b、1610cで実行する。
DMVサーバソフトウェア1604a、1604bは、本明細書に記載されるシステムの残りを実装する。これは、高度に利用可能な仮想化記憶サービスも提供する1セットのLinux(登録商標)サーバ1612、1614上で動作する。
システムは、デスクトップまたはラップトップコンピュータ1620で動作する管理クライアントソフトウェア1606によって制御される。
これらのソフトウェア構成要素は、IPネットワーク1628上でネットワーク接続を介して互いと通信する。データ管理仮想化システムは、パブリックインターネット基幹等、IPネットワーク上の一次サイト1622とデータ複製(DR)サイト1624との間で互いに通信する。
一次及びDRサイトにおいてDMVシステムは、ファイバーチャネルネットワーク1626を介して1つ以上のSAN記憶システム1616、1618にアクセスする。一次アプリケーションを起動しているサーバは、DMVシステムによって仮想化された記憶装置にアクセスし、DMVシステムは、ファイバーチャネルネットワーク上のファイバーチャネルを介して、またはIPネットワーク上のiSCSIを介して記憶装置にアクセスする。リモートDRサイトにおいてDMVシステムは、Linux(登録商標)サーバ1628上のDMVサーバソフトウェア1604cの並列インスタンスを起動する。Linux(登録商標)サーバ1628はまた、Amazon Web Searvice EC2インスタンスまたは他の同様のクラウドコンピューテーションリソースであり得る。
図17は、本発明のある特定の実施形態に従って、ある特定の要素が実装され得る、コンピュータ化されたシステムの様々な構成要素を示す図である。示される論理モジュールは、揮発性メモリ1702、ハードドライブ等の永続的記憶デバイス1708、プロセッサ1703、及びネットワークインターフェース1704を含む、ホストコンピュータ1701上に実装され得る。ネットワークインターフェースを使用して、システムコンピュータは、他の実施形態の中でも、SANまたはファイバーチャネルデバイス上で記憶プール1705、1706とやりとりする。図17は、システムコンピュータが、種々の記憶プールとは分かれているシステムを図示するが、記憶プールのうちのいくつかまたはすべてが、ホストコンピュータ内に収容され、ネットワークインターフェースの必要性を排除してもよい。プログラムプロセスは、図17に示されるように、単一のホストで実行され得るか、または複数のホストに分配されてもよい。
図17に示されるホストコンピュータは、アドミニストラティブワークステーションとして機能し得るか、またはアプリケーション及びアプリケーション特化エージェント402を実装し得るか、またはデータ仮想化システム自体を含む、本明細書に記載されるありとあらゆる論理的モジュールを実装し得るか、または物理的媒体の記憶プールをシステムに提示するための記憶コントローラとして機能し得る。ワークステーションは、グラフィック表示デバイス1707、ならびにマウス1709及びキーボード1710等の入力デバイスに接続され得る。あるいは、アクティブなユーザのワークステーションには、ハンドヘルドデバイスが含まれ得る。
本明細書全体を通じて、ソフトウェア構成要素を参照するが、ソフトウェア構成要素へのすべての参照は、ハードウェア上で動作するソフトウェアに適用されることが意図される。同様に、本明細書で参照されるオブジェクト及びデータ構造は、揮発性または不揮発性のいずれかのメモリに実際に記憶されるデータ構造に適用されることが意図される。同様に、サーバは、ソフトウェアに適用されることが意図され、エンジンは、ソフトウェアに適用されることが意図され、これらはすべて図17に記載されるコンピュータシステム等のハードウェアで動作する。
コピーの正確性保証のためのデータフィンガープリント
図18は、本発明のある特定の実施形態に従って、仮想記憶プール内に記憶されたオブジェクトについてのデータフィンガープリントを生成するための方法を図示する。
図18は、本発明のある特定の実施形態に従って、仮想記憶プール内に記憶されたオブジェクトについてのデータフィンガープリントを生成するための方法を図示する。
データフィンガープリントは、データオブジェクトがどのように記憶されるかにかかわらず、独立して生成され得る、データオブジェクトの短いバイナリダイジェストであり、同一のパラメータで同一の入力データに対して複数回生成される場合は同一である。フィンガープリントの有用な特性は、固定サイズであること、すべての記憶プール内のデータオブジェクトを生成するのが早いこと、及び異なるデータオブジェクトが同一のフィンガープリントを有する可能性が低いことである。
データフィンガープリントは、チェックサムまたはハッシュとは異なる。例えば、フィンガープリントは、オブジェクト全体ではなくオブジェクトのサンプルに関してのみ取得される。データオブジェクトの小さい割合のバイナリダイジェストを取得することは、データオブジェクト全体のフィンガープリントを提供するのに十分である。データフィンガープリントは、データのごく一部における読み出し及び計算のみを必要とするため、このようなフィンガープリントは、チェックサムまたはハッシュと比較して、コンピュータ的に安価または効率的である。
これらのデータフィンガープリントはまた、単一のデータオブジェクトが複数のフィンガープリントを有し得る点でも異なる。データオブジェクトのライフにわたって、複数のフィンガープリントが、データオブジェクトの代毎に1回、メタデータとしてオブジェクトとともに記憶される。複数のフィンガープリントは、データオブジェクトの複数のコピー及び代にわたって持続する。
データフィンガープリントは、2つのオブジェクトを比較して、それらが同じデータオブジェクトであるかを決定するために、使用され得る。2つのオブジェクトのデータフィンガープリントが異なる場合、2つのオブジェクトは、決定的に、異なると言うことができる。チェックサムのように、データフィンガープリントは、したがって、データオブジェクトのコピーされたかまたは記憶されたバージョンの間のデータの整合性の測定または試験を提供するために使用され得る。同じデータフィンガープリントを有する2つのデータオブジェクトは、必ずしも同じオブジェクトではない場合がある。
複数のフィンガープリントが、1つのオブジェクトから取得されるため、データフィンガープリントは、増加した信頼性で2つのオブジェクトを比較するために使用され得る。後続のリビジョンでのフィンガープリントの一致は、すべての以前のコピーが正確であったという信頼度を増加させる。フィンガープリントが一致しない場合、これは、このコピーまたは以前のコピーのいずれかが正確でないことを示す。コピーのそれぞれの次の代について、その代またはリビジョンの対応するフィンガープリントに対して新しいフィンガープリントが計算され、検証され得る。
2つのデータオブジェクトが、それらの対応するデータフィンガープリントを比較することによって比較される場合、対応するフィンガープリントは、2つのデータオブジェクトが異なることを、確実性を有して結論付けることが可能である。しかしながら、対応するフィンガープリントが一致した場合、対応するデータオブジェクトが同一である必要があると結論付けることはできない。例えば、デジタル写真またはイメージデータを示す2つのデータオブジェクトを想定し、データフィンガープリントを取得することは、各イメージの一部分のチェックサムまたはバイナリダイジェストを取得することを含み得る。各イメージの単一の部分に基づいて2つのデータオブジェクトを比較することは、それらが同じイメージであることを必ずしも示すわけではない。しかしながら、2つのイメージの複数の部分が同一である場合、増加した信頼性で、2つのイメージが同じイメージであると結論付けることが可能である。
データフィンガープリントの計算は、入力データオブジェクトのサブセットまたは部分を選択する、選択機能を必要とし得、これは、動的であり得る。任意のそのような機能が使用され、1つの具体的な例は、ある特定の実施形態と関連して以下に記載される。この機能は、データオブジェクトの全体にわたって展開されるデータオブジェクトの小さな部分を選択し得る。データの部分を選択するこの戦略は、大きなデータチャンクが1つの時点で修正されることが多い典型的な記憶ワークロードに有用であり得、データオブジェクト内で後半に分散された比較的多数の非連続的なデータの部分またはエクステントを選択することによって、選択機能は、データオブジェクトにおける大きな連続的な変更が検出され得る確率を増加させる。この機能は時間とともに変化し得るか、またはその出力を、種々の入力またはパラメータに基づいて行い得る。
選択機能の選定は、理想的には、データオブジェクトのコンテンツの認識により行われるべきである。代によって変化する傾向にあるデータオブジェクトの部分は、フィンガープリントの計算に含まれるべきである。静的であるか、または類似のオブジェクトでは同一である傾向にあるデータオブジェクトの部分は、フィンガープリントに含まれないはずである。例えば、静的な傾向にあるディスクラベル及びパーティションテーブルは、通常、フィンガープリントに含まれないはずであり、これは、これらが同じオブジェクトの多数の代にわたって一致するためである。ファイルシステムを含むボリュームの末端は、未使用空間となることが多く、この領域は、フィンガープリントの計算に使用されるものではなく、これは、その差別値を増加させることなく、計算及びIOコストをフィンガープリントに追加することになるためである。
選択機能によって選択されるサブセットの合計サイズが増加するにつれ、データフィンガープリントがデータに対するすべての変更をキャプチャする確率が、サブセットがデータオブジェクト全体に等しくなりこの時点で確率が1となるまで増加することは、明らかである。しかしながら、選択機能は、変化を検出する確率の増加という目標と、一貫して早いフィンガープリンティング時間を提供するという目標とのバランスを取ることができる。本開示のシステムは、複数のデータフィンガープリントが同じデータオブジェクトに対して取得されることを可能にするため、このトレードオフは、明示的に許容される。複数のフィンガープリントは、フィンガープリントの数が多くなるにつれ、データオブジェクト内のチェックされないバイト数がゼロに向かって減少するため、エラーチェックの確率の増加も同様に提供することができる。
データフィンガープリンティング機能は、いくつかの実施形態において、以下のように動作し得る。データオブジェクト1810は、任意の仮想記憶プール内に記憶された任意のファイルであり、例えば、データ保護またはアーカイビングワークフローの一部として記憶されたディスクイメージである。スタート1820は、ファイル内のオフセットまたは位置を表す数である。ピリオド1830は、ファイル内のオフセット間の距離を表す数である。データサンプル1840は、データオブジェクト内からのデータのサブセットである。チャンクチェックサム1850は、ファイル内の特定のデータに適用される算術的チェックサム操作の結果である。データフィンガープリント1860は、データオブジェクト1810のコンテンツならびにパラメータスタート1820及びピリオド1830から確定的に導出される単一の数値である。他のパラメータ及び他のパラメータ的機能が、ある特定の実施形態で使用されてもよい。
データサンプル1840は、この図では4KBである、固定長のチャンクに分割される。各チャンクに関して、チャンクチェックサム1850が、データストリームについて計算され、ここで、チェックサムには、チャンク内のデータ及びチャンク内のデータのSHA−1ハッシュが含まれる。使用される1つのチェックサムアルゴリズムは、フレッチャー−32法(http://en.wikipedia.org/wiki/Fletcher's_checksum)である。これらのチャンクチェックサムは、次いで、一緒にモジュロ264に追加され、チャンクのチェックサムの算術的合計は、データフィンガープリント1860であり、スタート及びピリオドによってパラメータ化される。複数のハッシュ値またはチェックサムを合わせて単一のハッシュ値にするための他の方法が、本発明のある特定の実施形態において企図され得る。単一のハッシュ値が、簡略化のためには好ましい。単一のハッシュ値が、どのデータサブセットがチャンクチェックサムの生成に使用されたかを示す必要はない。
一実施形態において、データフィンガープリントは、データオブジェクトの対象のセクションに焦点を当てる他の機能を使用して行われ得、ここで、ある特定のセクションは、種々の手段を使用して、対象であると決定され得る。対象のセクションは、頻繁に変化すると判定されるか、または頻繁に変化する傾向にある、セクションであり得る。データオブジェクトのコンテンツまたはデータオブジェクトの部分の変化の頻度に関する先験的情報が使用され得る。例えば、システムが、データオブジェクトがディスクイメージであることを検出する場合、システムは、分割マップはほとんど変化しないため、ボリューム分割マップを無視し得る。別の例として、システムが、Microsoft Word文書を記憶していること、及びその文書のヘッダが変化する可能性は低いことを認識している場合、それは、文書の本文及びテキスト領域を「対象」として指定し得、それらの領域をフィンガープリントすることを選択し得る。「対象」領域のフィンガープリンティングは、いくつかの実施形態において、データサンプルが、まず対象データ領域を特定し、次に対象データ領域のわずかなサブセットを生成するアルゴリズムを使用して、対象データ領域内でサンプルを取る領域を特定することによって選択される、図18に類似の手段で行われ得る。
好ましい実施形態において、記載されるフィンガープリンティングアルゴリズムは、非常に小さなオーバーヘッドを有し、したがって、フィンガープリンティングは、しばしば行われ得る。しかしながら、プールがオフラインテープを含む等の場合には、すべてのデータをフィンガープリンティングすることは、合理的なオーバーヘッドを有することができない。
図19は、本発明のある特定の実施形態に従って、データフィンガープリントがどのようにしてコピー操作における正確性の保証に使用されるかを図示する。
オブジェクトマネージャ501に関して上述された操作に加えて、パラメータのセットを考慮してデータオブジェクトのフィンガープリントを生成する追加の操作が定義される(操作1930)。分類されるすべてのデータオブジェクトのフィンガープリンティングが行われ、このフィンガープリントは、すべての他のメタデータとともに記憶される。
オブジェクトが分類されると、オブジェクトマネージャ501は、データオブジェクトのフィンガープリントの要求を各プールに行い得る。第1のフィンガープリントは、第1の記憶最適化プールまたはスナップショットプールで生成され、カタログストアに記憶される。データオブジェクトが軽量スナップショット操作を使用してまず性能最適化プール508に記憶された後、データ移動リクエスタ912は、フィンガープリントに関するパラメータセットを生成し、それらを使用して、オブジェクトマネージャ501からフィンガープリントを要求する(操作1910)。代わりに、オブジェクトマネージャは、性能最適化プールからフィンガープリントを要求する(操作1940)。性能最適化プールは、フィンガープリントを生成することができる。好ましい実施形態において、プールマネージャ504によって管理されるすべてのプールは、フィンガープリントを生成することができる。新しいフィンガープリントは、上述のオブジェクトに関する他のメタデータとともに保護カタログストア908に記憶される(操作1930)。
容量最適化プールへのコピー(操作1950)等、任意の後続のコピー要求(操作1910)の後、フィンガープリントが、ターゲットオブジェクトに関してターゲットプールから要求される(操作1930、操作1960)。いったん生成されると、記憶されているフィンガープリントは、次いで、各後続のプールに送られ、ここで、新たに計算されたフィンガープリントが、次いで、コピーによるエラーが生じていないことを保証するために、記憶されているフィンガープリントに対して検証される。各後続のプールは、再度フィンガープリントを計算し、計算されたフィンガープリントを、記憶されているフィンガープリントに対して検証してもよい。
フィンガープリントを生成するために、データオブジェクト1810は、スタート1820及びピリオド1830のパラメータによって定義される通常の間隔でサンプリングされる。各サンプルは、固定サイズであり、この図では64KBである。一実施形態において、パラメータピリオドは、それが、データオブジェクトのおおよそ1/1000のサイズとなるように選定され、スタートは、擬似乱数ジェネレータに従って、0からピリオドの範囲で選定される。
データオブジェクトの各新しいリビジョンまたは代について、スタートパラメータが修正され得、データオブジェクトの異なる領域のデータフィンガープリントをもたらす。オブジェクトのサイズは、しかしながら、ある特定の状況でのみ変化する。オブジェクトサイズが一定にとどまる場合、ピリオドも一定にとどまる。オブジェクトサイズが変化すると、ピリオドも同様に変化することになる。フィンガープリントの計算が、短時間及び/または一定時間で行われることを確実にするために、1/1000(0.001)または別のわずかなピリオドが選択される。データフィンガープリンティング操作に使用されるデータオブジェクトのサブセットを生成するために使用される関数に応じて、他のパラメータが、スタートパラメータの代わりに修正されてもよい。結果は、データフィンガープリントが、データオブジェクトの異なる領域から生成されることももたらすことであり、その結果、累積データフィンガープリントが、時間とともに増加するデータオブジェクトの比率のフィンガープリンティングをもたらす。
複数の代のデータオブジェクトが、本開示の別の箇所に記載されるように、サービスレベル合意(SLA)とのやりとりの結果として作成される。例えば、1時間に1回のスナップショット操作をスケジュールするSLAを考えると、追加の代のデータオブジェクトが、1時間に1回作成されることになる。各追加の代について、新しいデータフィンガープリントが作成され、送信される。データオブジェクトが以前の代から現在の代で変化していない場合、データそのものは送信される必要はないが、わずかなデータフィンガープリンティング操作がデータオブジェクト全体にわたってすべての変化をキャプチャする確率をインクリメンタルに増加させるために、フィンガープリントは関係なくターゲットデータプールに送信される。
異なる記憶プールは、異なる操作をサポートし得るため、フィンガープリント操作は、システム内の1つ以上の記憶プールによってサポートされ得る。プールは、プール要求ブローカ602等の操作マネージャによって仲介される。好ましい実施形態において、フィンガープリント操作は、すべてのプールによってサポートされる。
フィンガープリンティングは、データオブジェクトのライフタイムの間、メタデータとともにとどまる。これにより、フィンガープリンティングが、復元の際、ならびにコピーまたはデータ記憶、アクセス、及び復旧の他の段階の際にも使用されることを可能にし、これが、データの観点から真のデータツーデータメタデータを提供する。復元の際のフィンガープリンティングは、以下のように行われる。復元操作がオブジェクトマネージャ501によって要求されると、フィンガープリント操作が、復元されたデータで行われ得る。このフィンガープリント操作は、復元操作の前または後に行われ得る。フィンガープリント操作を用いることによって、データオブジェクトの以前に記憶されたすべてのリビジョンが、上述のフィンガープリント検証方法に従って、データの現在の復元コピーを検証するために使用される。これは、典型的なI/O経路CRC保護とは異なる手段で、インクリメンタル認識を利用する。
上述のように、仮想記憶プール間のオブジェクトの各コピーは、インクリメンタルであり、ターゲットプールに存在しないことがわかっているソースオブジェクトからのデータのみを移行する。オブジェクトの1つの代におけるコピーの際の任意のエラーは、後続の代においても依然として存在することになるということが、これから導かれる。実際に、そのようなエラーが生成され得る。データフィンガープリントの使用は、異なる仮想記憶プール内のオブジェクトのコピーが、同じコンテンツを有するというチェックを提供する。
データフィンガープリント方法の選定はまた、チェックにおける信頼性レベルを制御する:ピリオド(1830)がより小さく作成されるにつれ、フィンガープリントを生成する費用は上昇し、プールから読み出す必要のあるデータが多いほど、データがコピーエラーを有するにもかかわらず、一致するフィンガープリントを生成する確率は減少する。
しかしながら、単一のオブジェクトの連続する代については、異なる値がパラメータスタート(1820)に使用され得る。これは、単一のオブジェクトの連続する代のコピーを繰り返すことより、任意のコピーエラーが最終的に捕捉され得ない確率が、漸近的にゼロまで減少することを確実にする。
改善されたインクリメンタルコピー性能のためのハイブリッドシーディング
データ管理仮想化が使用される場合、プール間でデータオブジェクトのライフサイクル中に必要とされる異なる操作を分離し、それによって、各プールの最高品質のものを利用して、より優れた性能を提供することが可能となる。各プールが異なる特性を有するためにオブジェクトが複数の場所に記憶されるのと同様に、他の操作もまた、データが記憶されている各場所の最良の特性に基づき得る。以下に記載される方法では、所与のプールからデータを移行させるのが早い場合、そのプールは、データを移行するのに使用され得る。これは、そのプールの属性に基づいて、ある種の多重化を効果的に行っている。特定の状況に最良であるプールに基づいて、異なるプールが選択され得る。
データ管理仮想化が使用される場合、プール間でデータオブジェクトのライフサイクル中に必要とされる異なる操作を分離し、それによって、各プールの最高品質のものを利用して、より優れた性能を提供することが可能となる。各プールが異なる特性を有するためにオブジェクトが複数の場所に記憶されるのと同様に、他の操作もまた、データが記憶されている各場所の最良の特性に基づき得る。以下に記載される方法では、所与のプールからデータを移行させるのが早い場合、そのプールは、データを移行するのに使用され得る。これは、そのプールの属性に基づいて、ある種の多重化を効果的に行っている。特定の状況に最良であるプールに基づいて、異なるプールが選択され得る。
図20は、移動されるオブジェクトのコピーが、1つを上回る仮想記憶プールに既に存在するいくつかの実施形態において、オブジェクトマネージャ及びデータムーバを使用するデータのバックアップ及び復元のための改善された方法を図示する。
以下に記載されるプロシージャは、ハイブリッドシーディングと称され、これは、データが、複数の記憶プールにコピーまたは「シード」され、これが後でデータを別のプールにコピーするために使用されるという事実にちなんで名付けられている。移行される大量のデータが存在する場合に、大きな価値がある。しかしながら、この方法を行う費用は低く、そのためこの方法は、大小両方の移行に使用され得る。
性能最適化プール2010は、プール内のオブジェクトからデータ及びメタデータを取り出すことが迅速であるという特性を有する仮想記憶プールであり、例えば、スナップショットプールである。
容量最適化プール2020は、より遅いデータ及びメタデータの取り出し特徴を有する仮想記憶プール、例えば、コンテンツアドレス可能ストアである。ターゲットプール2030は、データをプール2020からコピーするためのターゲットである仮想記憶プール、例えば、リモートシステム上のコンテンツアドレス可能ストアである。各プールは、異なる性能特徴を有する:容量最適化プールは、差分を行うときに良好に機能し、性能最適化プールは、バルクデータを取り出す際に良好に機能する。特定のタスクに関して一方のプールがもう一方のプールよりも良好に機能する場合、それは、他のプールと比較してそのタスクに関して比較的高性能を有すると言うことができる。
オブジェクトA2、2040は、記憶プール2020に既にコピーされているデータオブジェクトである。オブジェクトA3、2050は、記憶プール2030内のオブジェクトA2の以前のコピーである。オブジェクトB1 2060は、記憶プール2010内のデータオブジェクトであり、これは、オブジェクトAに対する変化の結果である、すなわち、これは、Aのより新しい代またはバージョンである。オブジェクトB2、2070は、記憶プール2020内のオブジェクトB1の以前のコピーの結果である。オブジェクトB3、2080は、ターゲットプール2030内のオブジェクトB2のコピーの意図される結果である。
オブジェクトマネージャ501(示されない)は、データオブジェクトを含むデータストアにデータオブジェクトをコピーするためのコマンドを指示するコントローラとして働く。この場合、容量最適化プール2020から容量最適化プール2030へのコピーであるオブジェクトB2、2070のコピー操作は、ハイブリッドシーティングを使用して最適化される。
操作2100において、差分エンジン614は、そこでオブジェクトに適用される差分をターゲットプール2030にコピーする前にオブジェクトA2とB2との間の差分を計算するように、オブジェクトマネージャによって命令される。これは、結果として、記憶プール2020が、記憶プール2030よりも高い性能の差分付けを行うことができ、したがって記憶プール2020が差分付け操作を行うべきであることを決定する、論理の実行をもたらす。この論理は、記憶プール2020内に存在し得るか、またはオブジェクトマネージャ501内に存在し得るか、または記憶装置仮想化システム内の他の場所に存在し得る。A2は、記憶プール2030にA3としてコピーされているため、及びB2は、記憶プール2010からプール2020にB1としてコピーされているため、操作2100の結果もまた、オブジェクトA3とB1とのデルタである。このデルタまたは差分のセットは、ある種の差分詳細として特徴付けられ得る。
操作2200において、A3とB1とのデルタ(示されない)は、記憶プール2020において以前に計算された差分に従って、記憶プール2010から記憶プール2030にコピーされ、オブジェクトA3に適用されるように、オブジェクトマネージャによって要求される。コピーは、いくつかの実施形態において、記憶プール2010と記憶プール2030との間の直接接続によって行われ得る。この差分付け操作とバルクデータコピー操作との区別は、結果として、容量最適化プール2020において、性能最適化プール2010において可能であろうものよりも高性能な差分付け操作をもたらす。この区別はまた、コピーが容量最適化プール2020から行われた場合に可能であったであろうものよりも高性能な、性能最適化プール2020からのコピーをもたらす。
ある特定の実施形態において、各記憶プールの論理は、単一の集中コントローラによって提供され得、この場合、本明細書に記載されるメッセージは、コントローラ内で生じるが、他の実施形態において、1つ以上の記憶モジュールの論理は、記憶プール自体のコンピューティングリソースで実行され得る。コピー操作は、データムーバによって、またはいくつかの実施形態においては容量最適化プール2020もしくは他のプールによって、要求され得る。
これにより、Aから変更されたすべてのデータのプール2010からプール2030へのコピーが完了し、結果として、オブジェクトB1、B2、及びB3は、プール2010、2020、及び2030間で同期される。
この方法は、少なくとも以下の前提条件下で適用される:オブジェクトAが、2つのプールに同一のコピー、すなわち、容量最適化プール2020にコピーA2(2040)、及び別のターゲット容量最適化プール2030にコピーA3(2050)を有する。これらは、例えば、記憶プール2010から、プール2020を介してプール2030に、以前にコピーした結果であり得る。オブジェクトBは、Aのより新しいバージョンであり、2つのプールに同一のコピー、第1の性能最適化プール2010にコピーB1及び容量最適化プール2020にコピーB2を有する。例えば、Bは、プール2010からプール2020にバックアップとして既にコピーされている。オブジェクトBは、第1の容量最適化プール2020から、第2のターゲットプール2030にコピーされることになる。第1のプール2010からのデータの取り出し時間は、第2のプール2020からのものよりもさらに良好である。例えば、プール2010は、企業クラスの一次記憶装置に基づくが、プール2020は、アーカイビングまたはバックアップにより好適な低費用または長待ち時間デバイスである。
この方法は、第2のプールから第3のプールへの全体的なオブジェクトコピー時間を改善する。前述のように、コピーは、プール2020内の差分付けエンジンを呼び出すことによって、A2とB2との間の差分セットを提供するように実行される。具体的には、差分エンジンによって生成される差分は、オブジェクトの変化したセクションについての記述であり、データそのものではない。例えば、差分は、変化したデータオブジェクト内のエクステントを示す(オフセット、長さ)対のセットを含み得る。
以前の実装においては、セクション間の差分は、オブジェクトB2及びオブジェクトB3からの読み出しによって生成され、次いで、差分をオブジェクトB3に適用して、必要とされるコピーを達成する。しかしながら、本明細書に例示される方法では、差分は、プール2020内の差分エンジンによって生成されるが、データは、プール2010内のオブジェクトから読み出される、すなわち、セクションが、オブジェクトB1及びB2から読み出され、次いで、オブジェクトB3に適用されて、必要とされるコピーを達成する。
1つの前提条件が、プール2010からの読み出し時間がプール2020からのものよりも良好であることであったため、これは、改善されたコピー速度を得ることができる。
類似の方法もまた、復元操作の際に使用され得る。復元を行う際、差分付け及びバルクデータコピーは分離され得、バルクコピー作業は、差分付け操作を行うストアからではなく、最速であるデータストアから行われ得る。
別の一般的な意味では、このプールによる操作の分離は、操作のハイブリダイゼーションを構築する。異なる操作は、異なる記憶プールで行われ、これらの操作は、仮想化層によって組み合わされて単一の操作となる。さらなるそのようなアプリケーションが存在し得る。例えば、性能プールにおける2つのオブジェクトを比較することは、困難な作業であり得るが、比較操作は、同じデータオブジェクトを含む2つのコンテンツアドレス可能プールで行われ得る。
ビジネス継続性の複製
図21は、いくつかの実施形態による障害復旧及びビジネス継続のためのデータ複製の機序を図示する。
図21は、いくつかの実施形態による障害復旧及びビジネス継続のためのデータ複製の機序を図示する。
複製及びフェイルオーバーは、ビジネス論理及びデータが、リモートサイトにおいてホットバックアップで維持される、十分に理解された操作である。フェイルオーバーは、操作をリモートサイトに移行させる。複製は、データをリモートサイトに移行させる。これによって、記憶プールのパイプラインがデータ管理仮想化と併せて使用され、移行されるデータの量を低減させる、新しい複製方法が、以下に記載される。この方法はまた、双方向の継続的重複排除化複製を可能にする。
ビジネス継続及び障害復旧は、IT業界において十分に確立された業務である。操作のために、データが一次位置から二次位置に定期的に複製されることに依存する。二次位置における複製物は、一貫していなければならない、すなわち、それは、二次位置で二次アプリケーションサーバを起動するのに使用され得るように、一次位置のある時点におけるデータの状態を表す必要がある。一次アプリケーションサーバが利用不可能となった場合に、二次アプリケーションサーバが、データを非常に迅速に使用して起動され得るように、複製物は、素早くアクセスできる必要がある。また、複製物は、待ち時間が短い必要がある、すなわち、データが二次位置でアプリケーションサーバに利用可能となると、それは、典型的には分単位で測定される、可能な限り最近である一次サーバ上の時点の一致時点を表す必要がある。
複製に加えて、同期バック(sync−back)操作もまたサポートされ得る。同期バックは、データが、バックアップ部位から主サイトに移行し戻されるときに行われる操作である。言い換えると、データコピー矢印の方向は、逆方向を指す。同期バックは、フェイルバックをサポート及び可能にし、これは、フェイルオーバーを逆転させ、操作を一次サーバに移行し戻す、操作である。
典型的に、ビジネスップリケーションは、同期が発生している間、動作し続けるため、複数の同期バックを行うことができる必要がある。したがって、同期バックは効率的である必要がある。
一次位置2100は、ビジネスがアプリケーションまたはデータサービスを提供する位置である。
一次アプリケーションサーバ2101は、何らかのネットワークインターフェース上でローカルまたはリモートに消費され得るビジネスサービスを送達する、1つ以上のそのようなサーバを表す、位置2100にあるサーバである。
スタンバイ位置2110は、ビジネスが、一次位置においてサービスの可用性に何らかの障害が起きた場合に、代替的にアプリケーションまたはデータサービスを提供することができる位置である。例えば、一次位置での停電は、ウェブサーバが利用不可能となることを引き起こし得、この場合、バックアップ位置にあるウェブサーバが、通常は一次位置に導かれるであろう要求に応答するように構成され得る。
一次データA、2120は、一次アプリケーションサーバの操作のために読み出し及び書き込みが行われるライブデータである。これには、例えば、ウェブアプリケーションインターフェースのためのトランザクションをサービスするデータベースが含まれ得る。好ましい実施形態において、これは、記憶ネットワーク上で一次アプリケーションサーバにエクスポートされるLUNである。別の好ましい実施形態において、これは、仮想マシンのディスクイメージである。
一次位置2100において、一次プール2130は、一次アプリケーションサーバの操作についての記憶がそこから割り当てられる、一次記憶リソースプールである。これは、典型的に、企業クラスのSAN記憶アレイであろう。性能最適化プール2131は、前述のように、軽量スナップショット操作及び差分付けをサポートする、データ保護のための記憶プールである。好ましい実装において、これは、低費用ネットワーク化記憶装置に基づくスナップショットプールである。容量最適化プール2132は、差分付け操作をサポートする記憶プールである。好ましい実装において、これは、重複排除コンテンツアドレス可能ストアである。
スタンバイ位置2110において、容量最適化プール2133は、スタンバイ位置にある記憶プールであり、これが、差分付け操作をサポートする。ここでも、好ましい実装において、これは、重複排除コンテンツアドレス可能ストアである。性能最適化プール2134は、典型的にはコンテンツアドレス可能ストアの場合よりも早いアクセス時間を有する、スタンバイ位置にある記憶プールである。好ましい実装において、これは、低費用ネットワーク化記憶装置に基づくスナップショットプールである。一次プール2135は、記憶が、スタンバイアプリケーションサーバの実行のためにそこから割り当てられる、記憶プールである。これは、例えば、企業クラスのSAN記憶アレイであり得る。
一次データオブジェクトAのコピーA1 2121、A2 2122、A3 2123、A4 2124、A5 2125は、記載されるように、記憶プールのそれぞれに作成される正確なデータコピーである。連続的なコピー操作2140は、以下により詳細に記載されるであろう。これらの操作は、前述のように、サービスポリシーエンジン501によって発行され、オブジェクトマネージャ501によって各記憶プールに仲介される。サービスポリシーエンジン、オブジェクトマネージャ、及び他のコントローラの論理的な実装は、集中サーバに実装され得るか、またはネットワーク全体に分配され得る。
前述のように操作及び構成要素を合わせるこの方法の目的は、ビジネス継続のためのこれらの目標を満たし、同時にネットワーク接続に対する負荷を低減させること、及びデータ保護のための複製に加えて、ビジネス継続のために専用のネットワーク帯域を全く必要としないことである。言い換えると、この目的は、一次位置から二次位置へのデータの非同期ミラーリングの効果を提供することであり得る。
要約される3つの操作フローがある。
通常のデータ複製
フェイルオーバー:複製されたデータを使用する
同期バック:スタンバイ変化を一次プールに提示し戻す
1.通常のデータ複製
サービスポリシーエンジンは、一次データAの仮想コピーが、順に各プールに作成されるように、操作を整列させることに関与する。サービスポリシーエンジンは、オブジェクトマネージャへのコピー要求を発行し、オブジェクトマネージャは、これらの要求を、プール対の間で軽量スナップショットまたは効率的なインクリメンタルコピー操作に仲介する。したがって、実行される第1の操作は、一次データAの現在の状態の軽量スナップショットを作製することであり;実行される第2の操作は、スナップショットA1内の変化したエクステントのみを容量最適化プールにコピーし、新しいコンテンツアドレス指定されたオブジェクトA2を生成することであり;第3の操作は、コンテンツアドレス可能ストア間の効率的な複製を使用して、第1の容量最適化プールにおけるデータ重複排除に起因して最小限のデータを有する新しいコンテンツアドレス指定されたオブジェクトA3を生成することであり;第4の操作は第2の性能最適なプール内の以前のオブジェクトをA4に更新するために、A3とその以前のリビジョンとの間の変化のみを適用することである。
仮想A4が完全に定義され、かつ好ましい実装では前述のようにフィンガープリント一致機序を用いて検証された時点で、同じオブジェクトのいくつかの以前のリビジョンが、ここで、第2の性能最適化プールから及び他の中継プールから除去され得る。好ましい実装においては、最新のリビジョン及び1つ前のリビジョンが保持されるが、他のリビジョンは除去される。これにより、各プール内の差分エンジン実装が、新しい仮想コピーが移行されると毎回、的確に近い一致を見出すことを可能にする。
いくつかの実施形態において、スタンバイ位置にある容量最適化プール2133は、一次位置にある容量最適化プール2132からメタデータを受信し、一次位置の性能最適化プール2131からデータを受信し、それによって、バルクデータ移行により高速なスループットを提供することができる。他の実施形態において、容量最適化プール2133は、一次位置からメタデータを受信し得、それを性能最適化プール2134に即座に送信し得る。他の実施形態において、一次位置にある容量最適化プール2132または性能最適化プール2131のうちの1つまたは両方が、容量最適化プール2133及び性能最適なプール2134を目的地として、メタデータ及びデータをリモート位置に送信し得る。性能最適化プール2134を目的地として指定し、データを即座に性能最適化プール2134にコピーすることにより、可能な限り短い時間でリモート性能プールに更新されたデータを提供し、データ消失が生じ得るバックアップ間の時間ウインドウを低減させ、リモートフェイルオーバー位置が、可能な限り少ないデータ消失で操作を再開することを可能にする。
リモート性能最適化プールは、常に、少なくとも1つの完全なより古いデータコピーを元のシステム上に有するため、リモートプール上のデータへのアクセスは、ほぼ瞬時に提供され得る。リモートサイト上のデータは、ローカルサイトのデータに依存するものではなく、ビジネスアプリケーションによって容易に使用することができる本来の形式で記憶される。フェイルオーバーが発生した場合、リモート性能最適化プール上のデータは、限られた時間長内で利用可能となり、この時間長は、記憶されたデータのサイズ及びローカルサイトとリモートサイトとの間のデータリンクの待ち時間もしくは可用性に依存しない。データは、リモートサイトにおいて本来の形式で記憶されるため、いくつかの実施形態では、ローカルサイトとリモートサイトとの間でデータを本来の形式で直接コピーすることが可能である。
好ましい実装において、これらの仮想コピー操作は、それらの間に遅延を有してか、または遅延を有さずに、継続的または連続的に実行するようにスケジュールされ、オペレータによって選択され得る通常の間隔で起動される全シーケンスは、数分から数時間まで多様である。
別の実装において、全シーケンスは、それが完了すると、再開するようにプログラムされる。
別の実装において、操作は、シーケンスの開始付近の操作が、シーケンスの終了付近の操作と重なるように、緊密にパイプライン化される。これにより、待ち時間を低減させるが、最大のリソース消費を被る。
他の実装において、システムは、複数の動作が同時に発生し得るように、並列の様式で動作する。
2.フェイルオーバー−複製されたデータを使用する
一次アプリケーションサーバが損傷するか、またはそうでなければ利用不可能となった場合、スタンバイアプリケーションサーバは、可能な限り最近の一次側からの既知の良好なデータを用いて操作を行う必要がある。本明細書に記載される機序において、スタンバイ性能最適化プールに最も最近のデータオブジェクトから仮想コピーが作製されて、スタンバイアプリケーションサーバによって参照及び修正されるディスクイメージまたは論理ユニット番号(LUN)としてもう一度使用され得る、データオブジェクトを得る。好ましい実装において、仮想コピーは、軽量コピー操作を使用してスタンバイ一次プールに作製される。
3.同期バック:スタンバイ変化を一次プールに提示し戻す
典型的に、スタンバイサイトは、一次サイトほど良好にリソースまたは接続性がプロビジョニングされておらず、そのため、一次サイトがもう一度利用可能となると、問題のビジネスサービスは、もう一度一次サイトで提供されることが好ましい。しかしながら、二次サイトがビジネスサービスを提供している間にデータになされたいずれの変更も、一次サイトに複製して戻される必要がある。
この機序において、これは、A5の修正されたバージョンから、一次データAの新しいバージョンへの効率的な仮想コピー操作のシーケンスによって達成され、したがって、
B5の空間効率的なスナップショットであり、A5の修正されたバージョンであるB4は、性能最適化プール2134で作製される。
スタンバイ容量最適化プールにおいてコンテンツアドレス指定されたオブジジェクトであるB3は、B4において変更されたエクステントのみの効率的なコピーによって作製される。
B3のコピーであるB2は、重複排除化データの最小限の移行によって、一次容量最適化データに作製される。
一次性能最適化プールにおけるBiは、差分エンジンを使用した効率的コピーによって、効率的に生成される。
Biは、次いで、種々の手段で一次アプリケーションサーバに復元するためにオペレータに利用可能となる。好ましい実装において、B^の仮想コピーが、軽量スナップショット操作を使用して作製され、LUNまたはディスクイメージとして一次アプリケーションサーバに提示される。別の実装において、B^からのデータは、LUNまたはディスクイメージA上に完全にコピーされる。別の実装において、B^の仮想コピーが、軽量スナップショット操作を使用して作製され、LUNまたはディスクイメージとして新しい一次アプリケーションサーバ(物理サーバまたは仮想マシンであり得る)に提示される。
この方法は、フェイルオーバー/複製サイト一次プール2135が、瞬間的アクセスまたは非常に短いアクセス時間、及び効率的かつ最近の一次プール2130データの移行を提供すると同時に、データ管理仮想化システムの利点も提供する、高性能データストアとなることを可能にする。最適化は、上述のインテリジェント重複排除及び他の方法の使用によって、可能となる。
前述のものは、本主題のより適当な特徴のうちの一部をまとめたものである。これらの特徴は、単なる例示とみなされるべきである。多数の他の有益な結果は、本主題を異なる方式で適用することによって、または後述のように本主題を修正することによって、得ることができる。
データ複製及びガベージコレクション予測
図11において上述のように、2つのコンテンツアドレス可能ストア(610)間での効率的なオブジェクト複製は、複製されるオブジェクトとともに差分エンジンプロバイダ(614)に指定される近傍オブジェクトの選定によって促進され得る。存在する場合、近傍は、複製されているオブジェクトと同じ時間的ツリー内に存在する。
図11において上述のように、2つのコンテンツアドレス可能ストア(610)間での効率的なオブジェクト複製は、複製されるオブジェクトとともに差分エンジンプロバイダ(614)に指定される近傍オブジェクトの選定によって促進され得る。存在する場合、近傍は、複製されているオブジェクトと同じ時間的ツリー内に存在する。
オブジェクトが初めて複製されている場合、そのような近傍は存在しないことが多い。オブジェクトの構成的データチャンクが一度も複製されたことがない程度は、複製の効率に良い影響を及ぼす。これは、一度も複製されたことがないデータのハッシュは、それらのデータが保持される必要が有るかどうかを決定するためにインデックス検索を必要としないため、しばしば起こる。対照的に、構成的データチャンクが、以前のワークフローによって既に複製されているオブジェクトの複製は、近傍オブジェクトなしに提示される場合、オブジェクトの構成的データチャンクがリモートシステムに提示されるかどうかに関して迅速な決定的な解答を展開することができないため、非効率的である。非効率性の程度は、リモートシステムに存在する構成的データチャンクの割合に正比例し得る。
したがって、リソース及びネットワーク可用性が要因として排除されているクラスタの対を複製することを考えると、効率が最も低い複製ワークフローは、差分付けのために提示されている近傍オブジェクトは存在しないが、複製されているオブジェクト内のデータの一部または大部分がリモートシステム上に存在するものであることが多い。このワークフローは、少なくとも2つの実質的なシナリオで発生する。第1のシナリオは、所与のオブジェクトがリモートで重複排除化されており、「ビジネス継続のための複製」(例えば、図21を参照されたい)が初めてそれに適用されているものである。例えば、図13において時間的ツリーを参照すると、システムは、「ビジネス継続のための複製」を行うときに、新しい時間的ツリーを作製し、このツリーは、時間的ツリーによって参照される同じハッシュの一部または全部を参照し得る。このシナリオには近傍は存在しない。
第2のシナリオは、適切な近傍オブジェクトがリモート重複排除ストア上で期限切れとなるが、近傍値オブジェクトデータの一部または全部が、リモート重複排除ストア上に依然として存在しているものである。例えば、近傍は、ディスク記憶を保存するために、誤って消去されるか、またはポリシー(例えば、図7に示されるサービスレベルポリシーを参照されたい)によって消去されてしまう可能性がある。このような例においては、基底のハッシュの一部またはすべては、リモートシステム上に依然として存在し得る。
上で説明されたもの等、重複排除コンテンツアドレス可能ストアにおいて、いったん記憶されたデータチャンクは、いくつかの異なるオブジェクトによって参照され得る。書き込みデータによって消費されている記憶装置は、通常、そこに記憶されたデータが必要とされなくなった場合にのみ、再使用のために解放され得る。特定の位置に記憶されたデータが、必要とされなくなったことを決定することは、しばしば、種々の手段によって達成され得る高価なプロセスである。しばしば採用される方法は、ガベージコレクション、典型的には、マーク/スイープガベージコレクションプロセスである。
数十または数百テラバイト規模の記憶データでは、ガベージコレクションのマーク及びスイープの両方の段階は、時間がかかり得る(数日または数週間)。ほとんどの場合では、スイープ段階が開始するまで使用のために返却される記憶がないため、ガベージコレクションの「マーク」段階を実行する前に、マーク及びスイーププロセスが実行された場合におおよそどれほどのペイオフになるか(例えば、どれほどの記憶空間が、現在、重複排除ストア内に記憶された非参照データによって消費されているか)を認識することが有用である。
ガベージコレクションの有効性を予測するための履歴ツリーに基づく統計
本明細書に開示される技法の実施形態は、(a)コンテンツアドレス可能重複排除ストアに適した統計のセット、(b)それらの統計の計算及び維持のための操作のセット、(c)特定のビジネス値を得るために統計に適用され得る式のセットからなり得る。例えば、LOGICAL_ACCUMULATED_DIFFS及びLOGICAL_DIVESTED_DIFFSの定義、ならびにガベージコレクションによって返還要求される可能性のある空間をこれらから予測するために使用される式が、本明細書に記載される。このような統計は、追加及び消去操作を通じて正確に維持され得る。
本明細書に開示される技法の実施形態は、(a)コンテンツアドレス可能重複排除ストアに適した統計のセット、(b)それらの統計の計算及び維持のための操作のセット、(c)特定のビジネス値を得るために統計に適用され得る式のセットからなり得る。例えば、LOGICAL_ACCUMULATED_DIFFS及びLOGICAL_DIVESTED_DIFFSの定義、ならびにガベージコレクションによって返還要求される可能性のある空間をこれらから予測するために使用される式が、本明細書に記載される。このような統計は、追加及び消去操作を通じて正確に維持され得る。
図22は、いくつかの実施形態に従って計算され得る新しい統計を定義する例示的なテーブルである。このテーブルには、40001 LOGICAL_ACCUMULATED_DIFFS(または「LAD」)、40002 LOGICAL_DIVESTED_DIFFS(または「LDD」)、40003 TOTAL_CHUNKS_INDEXED(または「TCI」)、及び40004 PHYSICAL_SPACE_USED(または「PSU」)が含まれる。
これらの統計は、永続的データベースまたはシステムメモリに記憶され得る数値であり得、可能性のあるガベージコレクション(「GC」)のマーク及びスイープ段階の費用及び値に関する計算を行うために任意の時点で問い合わせられ得る。特定の実装において、これらの統計は、重複排除ストア自体と同じ記憶媒体上に永続的メタデータとして記憶され、ストアに変更がなされたときにトランザクション的に更新される。
40001 LOGICAL_ACCUMULATED_DIFFS(LAD)は、重複排除ストア内のオブジェクトの連続した代の間のデータの異なるチャンクのカウントの合計である。LADの例示的な定義は、図23Aに関連して記載され、LADの例示的な計算は、図24に関連して記載される。
40002 LOGICAL_DIVESTED_DIFFS(LDD)は、LOGICAL_ACCUMULATED_DIFFSが、重複排除ストアから1つ以上のオブジェクトを除去する操作によって低減されていることがわかっている量である。LDDの例示的な計算は、図25A〜25Bに関連して記載される。
40003 PHYSICAL_SPACE_USED(PSU)は、データが書き込まれているすべての記憶装置によって占有されているサイズであり、参照されるデータと参照されないデータの両方を含めてデータが記憶装置に書き込まれる際の可能性のある圧縮を考慮に入れる。PSUの計算例は、図26A〜26Bに関連して記載される。
図23Aは、いくつかの実施形態による時間的ツリー構造の例示的な図を図示する。図23Aは、重複排除ストア内のオブジェクトの代が追跡される、時間的ツリー構造を示す。時間的ツリー構造は、空またはヌルのオブジェクト41001、オブジェクト41002(A)、オブジェクト41003(B)、オブジェクト41004(C)、オブジェクト41005(D)、及びオブジェクト41006(E)を含む。オブジェクト(例えば、4103(B))の任意の代と、その親(例えば、4102(A))との間で、いくつかの対応するデータチャンクが同一であり、いくつかは異なる。
LADは、異なるデータチャンクのカウントの合計である。
41001は、空またはヌルのオブジェクトであり、データチャンクを含まない。
41002(A)オブジェクトは、H1、H2として示されるチャンクを含む。その親(O)からの差分カウントは、2である。
41003(B)オブジェクトは、H1、H2、H3として示されるチャンクを含む。対応するその親(A)からの差分のセットは、{H3}であり、差分のカウントは1である。
41004(C)オブジェクトは、H1、H2、H3、H4として示さえるチャンクを含む。対応するその親(B)からの差分のセットは、{H4}であり、差分のカウントは1である。
41005(D)オブジェクトは、H1、H2、H3、H4、H5として示されるチャンクを含む。対応するその親(C)からの差分のセットは、{H5}であり、差分のカウントは1である。
41006(E)オブジェクトは、H1、H2、H3、H6として示されるチャンクを含む。これは、親(B)を41004(C)と共有する。対応するその親(B)からの差分のセットは、{H6}であり、差分のカウントは1である。
図23Bは、いくつかの実施形態による統計40001LADの図である。図23Bは、この時間的ツリー内のオブジェクトの代間の累積差分41007の完全なセットを示し、差分カウントの完全なセットを計算するとLAD=6となる。大規模な用途では、多数の時間的ツリーが親として(O)を共有し、LADが、これらのツリーすべての累積差分カウントの合計であり得ることに留意されたい。
したがって、LADの値は、重複排除ストアに記憶されているおおよその総データである。それは、すべての固有のデータチャンクを少なくとも1回カウントするため、過少見積もりとはならない。実際には、例えば、同じデータチャンクが2つの無関係のオブジェクトで使用される場合、または同じデータチャンクが同じ特定のオブジェクトか、もしくはその後続の代の2つの異なる位置で使用される場合、またはデータチャンクが、オブジェクトの1つの代で使用され、後続の代では使用されず、それよりも後の代で再度使用される場合に、多数のデータチャンクが2回カウントされるため、過大見積もりとなる。これは、過大見積もりは定数因子であり、ωと示すことができると仮定するための合理的な見積もりである。
図24は、いくつかの実施形態によるLOGICAL ACCUMULATED DIFFSを計算する例示的な図である。図24は、オブジェクト42002(F)及び結果として得られるオブジェクト42002(F)からの累積差分42003を図23Aの時間的ツリー上に構築する。LADは、時間的オブジェクトツリーを通し、差分付けエンジンを使用してオブジェクトの後続の代の間の差分を計算することによって、任意の時点で評価され得る。しかしながら、大きなストアでは、このような計算は、GCマーク段階に時間が匹敵し得る。より現実的に、かついくつかの実施形態において実装されるように、LAD統計は、1回計算され、オブジェクトが重複排除ストアに追加されるか、またはそこから削除されると、更新され得る。
42001は、オブジェクトF(42002)をオブジェクトE(41006)の子として追加する。
42002オブジェクトFは、オブジェクトEのより新しい代であり、少しの変化を有する:第2のオフセットでH2がH5となり、第4のオフセットでH4がH6となる。
42003は、オブジェクトFが作成されるときに計算される累積差分を示す。H5及びH6は、オブジェクトFの作成の際に新しいコンテンツとして特定され、そのため、累積差分カウントは2となる。結果として、図23Bからの7のLADは、2ずつインクリメントされ、9のLADをもたらす。
データチャンクがF等の新しいオブジェクトの作成時にどのように特定されるかを確認するためには、例えば、図15を参照されたい。上述のように、新しいオブジェクトの変更されたデータを、ステップ1512でプレディセッサ内のデータと比較して、一致が見出された場合さらなるチェック及びデータ記憶を回避する。LADの正しい値を維持するために、LAD統計は、ステップ1512が一致を見出さないたびに(例えば、1512と1516との間のグラフのエッジがトラバースされるたびに)毎回1ずつインクリメントされ得る。
図25Aは、いくつかの実施形態による時間的ツリー構造からオブジェクトを除去する例示的な図である。図25Aに示されるプロセスは、各ノードに異なる数のハッシュ値が存在する場合、例えば、FがH1、H2のみを有し、GがH1、H2、H3、及びH4を有し、HがH3、H6を有する場合に適用されることに留意されたい。異なる数のハッシュ値が存在する場合、いくつかの実施形態において、より小さいハッシュ値セットを有するノードには、より大きなセット内のハッシュ値の数と等しくなるようにハッシュ値の数を増加させるために、所定の値(例えば、ゼロ)を有する追加のハッシュ値がパディングされ得る。上述の例を継続すると、F及びHには、Gの長さと一致するように、ゼロがパディングされ得る。
43002オブジェクトFは、重複排除ストア内のオブジェクトであり、この例においては、データチャンクH1、H5、H3、H6から構成される。
43004オブジェクトGは、オブジェクトFの中間サクセッサであり、これは、オフセット3にデータチャンクH7を有し、オフセット4にH8を有することが、オブジェクトFとは異なる。
43006オブジェクトHは、オブジェクトGの中間サクセッサであり、これは、オフセット2にデータチャンクH2を有し、オフセット4にH9を有することが、オブジェクトGとは異なる。
43008オブジェクトGは、オブジェクトFとオブジェクトHとの間から43008で除去され、LDDが、適宜更新される。
図25Bは、いくつかの実施形態による、LOGICAL DIVESTED DIFFS統計を計算するための例示的な図である。LDDは、単調に増加するLAD値(例えば、図24に記載のように計算される)と、図23BからのLADの定義との間の差分をカウントする。オブジェクトが、重複排除ストアから除去されると、LADの影響が計算され、LADを即座に減少されるのではなく、負の変更が、LDDに累積される。
43010は、差分リストG−Fであり、Fの同じ位置におけるデータチャンクとは異なるGからのデータチャンクのリストである。このリストは、G−Fが、オフセット3のデータチャンクH7及びオフセット4のH8からなることを示す。
43012は、差分リストH−Gであり、これは、Gの対応する位置におけるデータチャンクとは異なる、Hからのデータチャンクのリストである。このリストは、H−Gが、オフセット2のデータチャンクH2及びオフセット4のH9からなることを示す。
43014は、剥奪差分のリスト、すなわち、G内のある特定のオフセットには存在したが、そのオフセットのFにもHにも存在しなかったデータチャンクである。これは、2つの差分リストG−F及びH−Gを比較し、H−Gの同じオフセットに異なるチャンクが存在するG−Fからのチャンクのみを保持することによって、計算される。「Bを削除する」操作のためのLDDの計算は、したがって、43014でキャプチャされる差分の数である。したがって、43010におけるH8から43012におけるH9への変化のように、値が両方の時間で変化した場合、それは剥奪される。F、G、Hが、すべて同じサイズでない場合に、より短いオブジェクトが、ゼロだけを含むチャンク等何らかの固定コンテンツデータチャンクの一連の反復を使用してより長いオブジェクトの長さにパディングされることを想定することによって、剥奪差分計算カウントが計算され得る。
図26Aは、いくつかの実施形態による、図26Bに示されるツリーのPHYSICAL SPACE USED(「PSU」)統計の計算の例示的な図である。この図において、オブジェクトA〜Hは、前の図に記載されるものと同じ内容である。各オブジェクトは、固有であるか、または時間的ツリーにおいて、近傍または遠位のいずれかの他のオブジェクトと共有される、データチャンクの混合を含み得る。いくつかの実施形態において、各ハッシュ値(H1〜H9)に対応するデータチャンクは、1回だけ記憶媒体に書き込まれる。さらに、データは記憶媒体に書き込まれる際、それは、複数の標準的または周知の圧縮ツールを使用して、圧縮され得る。統計的PHYSICAL SPACE USEDは、ハッシュH1〜H9に対応するデータチャンクの圧縮後のサイズの合計である。図26A〜2Bに示される例において、PSUは、オブジェクトGが消去されたとマークされているにもかかわらず、H8のデータのサイズを組み込む。H8の物理的空間は、完全なガベージコレクション操作までは返還要求されず、そのためその操作までは、H8は依然としてPSUに寄与する。
これらの統計を考えると、重複排除ストアによって使用される記憶の見積もりは、任意のオブジェクトによって参照されるデータを含まず、したがって、完全なガベージコレクション操作によって返還要求され得る物理的な記憶の量は、この式によって考慮され得る:
式中、
Sreclaimableは、使用されるが参照されない記憶の量である。
Sreclaimableは、使用されるが参照されない記憶の量である。
LDDは、上述の統計的LOGICAL_DIVESTED_DIFFSである。
LADは、上述の統計的LOGICAL_ACCUMULATED_DIFFSである。
PSUは、上述の統計的PHYSICAL_SPACE_USEDである。
有利なことに、Sreclaimableに関して上に示される式は、ガベージコレクションのマーク及びスイープ両方の段階を実行することによって返還要求され得る記憶の量の良好な即座の見積もりとして使用され得る。
図26A〜26Bの例において、完全な図を分析することによって、記憶されたちょうど1つのデータチャンク(参照されない)、すなわち、H8としてインデックス付けされたチャンクが存在することを理解することができる。これは、完全なガベージコレクション及びスイープ操作によって返還要求され得る実際の物理的空間が、1つのデータチャンクのための記憶空間であろうことを意味する。この例において、Sreclaimableは、PSU*LDD/LAD=9*1/11=0.82として計算される。したがって、0.82というSreclaimable値は、GC操作により返還要求され得る1つの参照されないデータチャンクの良好な見積もりである。当業者であれば、これは、例証的な例であることを意味することを認識することができる。いくつかの例では、数十、数百、または数千の返還要求可能なオブジェクト(例えば、合計数百ギガバイト)が存在し得る。別の例として、9個のH1〜H9のそれぞれは、サイズがテラバイト(TB)であり得る。システムは、GC操作を実行する前に、3つ以上のTBが返還要求され得るようになるまで待機するように構成され得る。より大規模な例では、正しい値と見積もられた値との間のエラーは、さらに大きくなり得るが、正確な値を得るために全ストアを分析する費用は、見積もりを計算するものよりもかなり大きくなり得るため、実用的ではない。
Sreclaimable見積もりは、ガベージコレクション操作をトリガするための閾値として使用され得る。例えば、閾値は、周期的に評価され得、次いで、ガベージコレクションは、所与の固定値または所与のPSUのパーセンテージを超えた場合に開始される。上述のように、9個のデータチャンクH1〜H9のそれぞれのサイズがテラバイト(TB)である場合、閾値は、Sreclaimableが3を上回るまで待機するように設定され得る(例えば、3つ以上のTBがGC操作を実行する前に変換要求され得るように)。
いくつかの実施形態において、容量プランニングのため等、(LDD/LAD)*PSUの上昇は、重複排除ストア内のオブジェクトのセットの複数の代を記憶するために必要とされる未加工記憶の上昇率を示すために使用され得、したがって、追加の記憶装置をそのようなシステムに利用可能にするための長期計画に含まれ得る。
データ複製のための合成近傍
データオブジェクトをワイドエリアネットワーク上で1つのサーバから別のサーバに複製する際、そのオブジェクトのどの部分が既に複製されているかに関する知識を用いて複製を開始することが効率的である。この知識は、送信されていないそのオブジェクトの基底のデータの部分のみを送信する必要があるという点で、複製プロセスをより効率的にするのを補助し得る。この知識なしでは、元のサーバは、しばしば、目的地サーバ上のそのオブジェクトにおいて各データ片を検索しなければならない。両方のサーバに記憶されたデータの量が大きくなるにつれ、このようなナイーブ検索の費用が、幾何学的により高価となり得る。
データオブジェクトをワイドエリアネットワーク上で1つのサーバから別のサーバに複製する際、そのオブジェクトのどの部分が既に複製されているかに関する知識を用いて複製を開始することが効率的である。この知識は、送信されていないそのオブジェクトの基底のデータの部分のみを送信する必要があるという点で、複製プロセスをより効率的にするのを補助し得る。この知識なしでは、元のサーバは、しばしば、目的地サーバ上のそのオブジェクトにおいて各データ片を検索しなければならない。両方のサーバに記憶されたデータの量が大きくなるにつれ、このようなナイーブ検索の費用が、幾何学的により高価となり得る。
理想的には、操作サーバが、近傍オブジェクトへの参照を提供することができる。これが可能でない場合には、合成近傍プロセスが、ある時点のリモートサーバ上のデータのある時点の大部分を検索し、次いで、この参照オブジェクトを、元のサーバ及び目的地サーバの両方に人工的に作成することによって、そのような参照オブジェクトを作成する。この近傍が作成されると、複製は、より効率的に進行し、前回のデータ検索の際に見出されなかったデータのみを送信する。これは、近傍オブジェクトが指定されていない場合に、複製時間を大幅に低減させることができる。
図27は、それ以外には決定され得る既存の近傍がない場合に、複製のための近傍オブジェクトを合成で作成するための方法を図示する。図27に示されるように、ローカル重複排除ストア2450とリモート重複排除ストア2456との間の発見メッセージ交換によって達成されるこのワークフローるは、複製されるオブジェクトOR2401(ローカル重複排除ストア2450に記憶される)の近傍オブジェクトOSA2400を作成し、これは、複製されているオブジェクトの一部であり、リモート重複排除ストア2456に存在することが、リモートデバイス2458に既知であるより高深度のオブジェクトからなり、オブジェクトの最初からそれらの適切なオフセットにおいて、適切なより高深度のハッシュがリモートターゲット上で見出されなかったエクステントにゼロ充填マッピング実行が点在している。
この方法は、選定されたより高深度の(greater-depth)サイズ(例えば、2MiB)のゼロOz2402からなるオブジェクトが、すべてのシステムで利用可能となるように、合成近傍オブジェクトのゼロ充填部分の作成のための基礎として機能するように構成され得る。例えば、Ozが、各コンテンツアドレス可能ストア上に、その初期化中に作成され得る。Ozは、すべての装置で同じ好ましいより高深度のサイズを有して構成され得、これは、ゼロだけで構成されるため、その構築には、特別な考慮は必要とされない。
いくつかの実施形態において、近傍合成の効率に追加するために、完全に密集されたより高深度のオブジェクトのみが一致される。例えば、すべての高深度オブジェクトが、Ozのサイズの倍数としてサイズ付けされるわけではなく、そうなるであろうこともない。したがって、例えば、近傍を構築する際、システムは、切り捨てられてOzのサイズの最も近い倍数とされるサイズで近傍を構築するように構成され得る。これは、長さが選択されたより高深度のオブジェクトのサイズの整数倍ではないオブジェクトの最後でハッシュを一致させるために、長さが1〜選択されたより高深度のオブジェクトのサイズとの間である、可変長のより高深度のオブジェクトが事前に作成される必要性、及びその存在を継続的に管理する必要性を回避することができる。例えば、これは、Ozにカスタムサイズのゼロ充填リマインダを構築する必要性を排除することができる。Ozは、その導入及び初期化の際に各コンテンツアドレス可能ストアに作成される(例えば、図27のローカル重複排除ストア、及びリモート重複排除ストア)。
リモート重複排除ワークフロー中に、実行可能な近傍が存在しないと判断された場合、合成アンセストリーワークフローが呼び出される。結果として得られる近傍OSA2400が、それが、前述のように、近傍として指定されたか、または共通の近傍のネゴシエーションによって到達したかのように、代わりにリモート重複排除ワークフローに入れられる。
この時点で、リモート重複排除ワークフローにおいて、ソースローカル重複排除ストア2450とターゲットリモート重複排除ストア2456との間に接続が既に確立されている(例えば、ローカルビジネスプロセスエンジン2452及びリモートビジネスプロセスエンジン2454によって)。ローカルビジネスプロセスエンジン2452は、ローカル重複排除ストア2450上に空のオブジェクトを作成し、リモートビジネスプロセスエンジン2454は、リモート重複排除ストア2456上に空のオブジェクトを作成し、この空のオブジェクトは、合成近傍を生成するための段階において発達する。
図28は、それ以外には決定され得る既存の近傍がない場合に、複製のための合成近傍を合成で作成するための方法を図示する。図27及び28を参照して、ステップ2500で、ソースオブジェクトは、その構成的高深度ハッシュに関してスキャンされ、これが、次いで、リモートクラスタに送信されるネットワークメッセージMSA2403にグループ分けされる。ローカルビジネスプロセスエンジン2452は、ネットワークメッセージ2403を使用して、2405でリモートビジネスプロセスエンジン2454によりハッシュの存在を調べる。リモートビジネスプロセスエンジン2454は、より高深度のハッシュのそれぞれに関して、2403でリモートクラスタに存在するかどうかを決定する。見出されなかったメッセージ内の各ハッシュについては、ゼロのハッシュが代わりにメッセージに入れられる。ステップ2501において、ハッシュのすべてに関して検索された後、リモートデバイス2458は、結果として得られたメッセージを使用して、それが表すデータ2501の量(例えば、2GiB)(図27の2406に示される)によって、リモート重複排除ストア2456で構築中の合成近傍OSA2400を発達させる。ステップ2502において、リモートビジネスプロセスエンジン2454は、次に、メッセージ(見出されたハッシュのアセンブルページ2407)をソースローカル重複排除ストア2450に送信し戻し、ここで、ステップ2503において、それが、ローカル重複排除ストアで構築中の合成近傍OSA2400を発達させるためにに同様に使用される(図27の2408で示される)。複製されるオブジェクト内のより高深度のハッシュの完全なセットは、ハッシュがデータの全高深度ハッシュを表さない場合に、最大で最終の高深度ハッシュまで(これは含まない)、一連のこれらのメッセージとして送信される。図27に示されるように、ステップ2409において、ステップ2403、2405、2406、2407、及び2408は、さらなるハッシュが存在しなくなるまで繰り返す。これらのメッセージが構築され、交換されると、同じ合成近傍オブジェクトが、ソース及びターゲットの両方のクラスタに存在することになる。
合成近傍OSA2400が構築されたため、上述のリモート複製ワークフローは、近傍(そこではA0と称される)が合成されたというよりは発見されたかのように継続される(図27のステップ2410及び2411)。複製されているオブジェクトOR2401と合成近傍との間の差分は、したがって、リモートコンテンツアドレス可能ストア(リモートコンテンツのアドレス可能なストア:remote content addressable store)に伝送され、オブジェクトOR2401は、そこでアセンブルされ、結果として、上述のフローが完了し、オブジェクトOR2401がリモートコンテンツアドレス可能ストアに存在するようになる。
「ビジネス継続のための複製」下の「通常のデータ複製」の実装では、複製を行うオブジェクトOR2401とその近傍との間の相違は、いずれもスタンバイ位置にあるコンテンツアドレス可能ストアのオブジェクトターゲット及び目的地デバイスDOUT2404の両方に、同時に書き込まれる。この戦略は、この事例のターゲットデバイスが、これらの差分を適用する前に既に近傍オブジェクトと同期されているという事実に基づく。近傍が以前には存在していなかった合成近傍ワークフローの場合には、しかしながら、ターゲットデバイスは、近傍オブジェクトと同期されていない場合がある。このように、合成アンセストリが行われる時にターゲットデバイスDOUT2404にステップ2412及び2413(例えば、図29に示される)で必要とされる追加の完全復元段階が存在する。完全復元段階の間に、オブジェクトOR2401全体が、コンテンツアドレス可能ストアからターゲットデバイスDOUT2404に書き込まれる。図29は、それ以外には決定され得る既存の近傍がない場合に、複製のための完全な復元段階を合成で行うための方法を図示する。このプロセスにおいて、オブジェクトは、合理的なサイズ2510(一実装では64KiB)の小片で読み出され、これらの小片が、効率的な方式2511でターゲットデバイスDOUT2404に書き込まれる。データの各セットがターゲットデバイスDOUT2404に書き込まれた後、この操作の進捗報告を更新する時間であるかどうかを決定するために、チェックが行われる。そうである場合、進捗が、リモートコンテンツアドレス可能ストアからローカルコンテンツアドレス可能ストア2512に送信される。もうコピーするデータが存在しないため、操作は完了する。
進捗報告
この方法はまた、進捗を表す技法を組み込むことができる。進捗報告は、ユーザがそれを認識することができるように、ユーザインターフェースに利用可能に作製され得る。それは、通常、0から、複製されているオブジェクトの長さの間の数として表される。例えば、進捗は、おおよそ一定の速度で複製の2つの段階を通じて表され得る。例えば、2つの段階は、合成近傍構築及びリモート複製として特徴付けられる。進捗報告は、しばしば、送信されるデータのセットを前もって認識していないネットワーク通信ワークフローにとっては困難な問題である。例えば、その複製が完了までに数日かかり得る企業顧客では、意味のある進捗報告を提供することができることは、顧客がIT操作を計画するのを補助する。本明細書に記載される技法を使用して、正確な進捗報告を提供することができる。
この方法はまた、進捗を表す技法を組み込むことができる。進捗報告は、ユーザがそれを認識することができるように、ユーザインターフェースに利用可能に作製され得る。それは、通常、0から、複製されているオブジェクトの長さの間の数として表される。例えば、進捗は、おおよそ一定の速度で複製の2つの段階を通じて表され得る。例えば、2つの段階は、合成近傍構築及びリモート複製として特徴付けられる。進捗報告は、しばしば、送信されるデータのセットを前もって認識していないネットワーク通信ワークフローにとっては困難な問題である。例えば、その複製が完了までに数日かかり得る企業顧客では、意味のある進捗報告を提供することができることは、顧客がIT操作を計画するのを補助する。本明細書に記載される技法を使用して、正確な進捗報告を提供することができる。
合成アンセストリ構築段階の間の進捗は、複製されるオブジェクトのサイズ(例えば、全体の進捗)の0〜50%の数で報告される:
式中、
Qは、複製されているオブジェクトOのサイズである。
L1fは、複製オブジェクトOから見出されたより高レベルのハッシュの数である。
L1tは、複製オブジェクトO内に含まれるより高レベルのハッシュの総数である。
Qは、複製されているオブジェクトOのサイズである。
L1fは、複製オブジェクトOから見出されたより高レベルのハッシュの数である。
L1tは、複製オブジェクトO内に含まれるより高レベルのハッシュの総数である。
合成アンセストリ段階が完了すると、これまでにエラーが存在しないと仮定して、従来的な複製段階が取られ、合成近傍オブジェクトが、複製されているオブジェクトに対する近傍として使用される。
リモート複製段階の間の進捗は、PSAの最終値から全体の進捗の50%の間の数として報告される:
式中、
PSAは、上述のように、合成アンセストリ段階中に前もって計算された全進捗である。
Pmergeは、複製段階の直線進捗(0から複製されるオブジェクトの長さまで)である。
Qは、複製されているオブジェクトOのサイズである。
PSAは、上述のように、合成アンセストリ段階中に前もって計算された全進捗である。
Pmergeは、複製段階の直線進捗(0から複製されるオブジェクトの長さまで)である。
Qは、複製されているオブジェクトOのサイズである。
合成近傍とビジネス継続のための複製とを組み合わせた完全なターゲット復元段階の間の進捗は、複製されているオブジェクトのサイズの50%〜100%として報告される:
式中、
Osizeは、複製されるオブジェクトのバイト単位でのサイズである。
PRSTは、ターゲットデバイスへの復元から報告される進捗(複製されるオブジェクトのサイズの50%〜100%)であり、:
Osizeは、複製されるオブジェクトのバイト単位でのサイズである。
PRSTは、ターゲットデバイスへの復元から報告される進捗(複製されるオブジェクトのサイズの50%〜100%)であり、:
によって計算され、式中、
PRRは、上述のように、リモートデバイスの復元の直線進捗である。
PRRは、上述のように、リモートデバイスの復元の直線進捗である。
本明細書に記載される主題は、デジタル電子回路、またはコンピュータソフトウェア、ファームウェア、もしくはハードウェア(本明細書に開示される構造的手段及びその構造的同等物、またはそれらの組み合わせを含む、)において実装され得る。本明細書に記載される主題は、データ処理装置(例えば、プログラム可能なプロセッサ、コンピュータ、または複数のコンピュータ)による実行のため、またはその操作の制御のために、情報担体(例えば、機械可読記憶デバイス)に明確に具現化されるか、または伝播シグナルに具現化される1つ以上のコンピュータプログラム等の1つ以上のコンピュータプログラム製品として実装され得る。コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、またはコードとしても知られる)は、コンパイラ型言語またはインタープリタ型言語を含む、任意の形態のプログラミング言語で記述され得、これは、独立型プログラムとして、またはモジュール、コンポーネント、サブルーチン、もしくはコンピューティング環境での使用に好適な他の単位として含む、任意の形態で展開され得る。コンピュータプログラムは、必ずしもファイルに対応するわけではない。プログラムは、他のプログラムまたはデータを保持するファイルの一部分、問題のプログラム専用の単一のファイル、または複数の調整されたファイル(coordinated file)(例えば、1つ以上のモジュール、サブプログラム、またはコードの部分を記憶するファイル)に記憶され得る。コンピュータプログラムは、1つのコンピュータ上、または1つのサイト、もしくは複数のサイトにわたって分配され、通信ネットワークによって相互接続される、複数のコンピュータ上で実行されるように配置され得る。
本明細書に記載されるプロセス及び論理フロー(本明細書に記載される主題の方法ステップを含む)は、入力データを操作し、出力を生成することによって、本明細書に記載される主題の機能を実行するように、1つ以上のコンピュータプログラムを実行する1つ以上のプログラム可能なプロセッサによって実行され得る。プロセス及び論理フローはまた、特殊目的論理回路、例えば、FPGA(フィールドプログラム可能ゲートアレイ)またはASIC(特定用途向け集積回路)によって実行され得、本明細書に記載される主題の装置は、それらとして実装され得る。
コンピュータプログラムの実行に好適なプロセッサには、例として、汎用及び特殊目的の両方のマイクロプロセッサ、ならびにあらゆる種類のデジタルコンピュータの任意の1つ以上のプロセッサが挙げられる。一般に、プロセッサは、読み出し専用メモリもしくはランダムアクセスメモリまたはその両方から、命令及びデータを受信するであろう。コンピュータの必須の構成要素は、命令を実行するためのプロセッサと、命令及びデータを記憶するための1つ以上のメモリデバイスである。一般に、コンピュータには、データを記憶するための1つ以上の大容量記憶デバイス、例えば、磁気、光磁気ディスク、または光ディスクが、それらからデータを受信するか、もしくはそれらにデータを移行させるか、またはその両方のために、含まれるか、またはそれらに操作可能に接続されるであろう。コンピュータプログラム命令及びデータを具現化するのに好適な情報担体には、あらゆる形態の不揮発性メモリが挙げられ、例としては、半導体メモリデバイス(例えば、EPROM、EEPROM、及びフラッシュメモリデバイス);磁気ディスク(例えば、内蔵ハードディスクまたは取り外し可能ディスク);光磁気ディスク;及び光ディスク(例えば、CD及びDVDディスク)が挙げられる。プロセッサ及びメモリは、特殊目的論理回路が補充されるか、またはそこに組み込まれ得る。
ユーザとのやりとりを提供するために、本明細書に記載される主題は、ユーザに情報を提示するためのディスプレイデバイス、例えば、CRT(陰極線管)またはLCD(液晶ディスプレイ)モニタ、ならびに、ユーザがそれによってコンピュータに入力を提供することができるキーボード及びポインティングデバイス(例えば、マウスまたはトラックボール)を有するコンピュータに実装され得る。他の種類のデバイスもまた、ユーザとのやりとりを提供するために使用され得る。例えば、ユーザに提供されるフィードバックは、感覚的フィードバック(例えば、視覚的フィードバック、聴覚的フィードバック、または触知的フィードバック)の任意の形態であり得、ユーザからの入力は、音、音声、または触覚による入力を含む、任意の形態で受信され得る。
本明細書に記載される主題は、バックエンド構成要素(例えば、データサーバ)、ミドルウェア構成要素(例えば、アプリケーションサーバ)、またはフロントエンド構成要素(例えば、ユーザがそれを通じて本明細書に記載される主題の実装とやりとりし得る、グラフィカルユーザインターフェースを有するクライアントコンピュータまたはウェブブラウザ)、またはこのようなバックエンド、ミドルウェア、及びフロントエンド構成要素の任意の組み合わせを含むコンピューティングシステムに実装され得る。本システムの構成要素は、デジタルデータ通信の任意の形態または媒体、例えば、通信ネットワークによって相互接続され得る。通信ネットワークの例には、ローカルエリアネットワーク(「LAN」)及びワイドエリアネットワーク(「WAN」)、例えば、インターネットが含まれる。
開示される主題は、その用途が、以下の説明に記載されるかまたは図面に例示される、構成の詳細及び構成要素の配置に制限されないことを理解されたい。開示される主題は、他の実施形態及び種々の手段での実施及び実行が可能である。さらに、本明細書に用いられる表現及び用語は、説明の目的のためであり、制限するものと考えられるものではない。
このように、当業者であれば、本開示が基づく概念が、開示される主題のいくつかの目的を実行するために、他の構造、方法、及びシステムの設計の基礎として容易に利用され得ることを理解するであろう。したがって、特許請求の範囲が、開示される主題の精神及び範囲を逸脱することがない限り、そのような同等の構造を含むとみなされることが、重要である。
開示される主題は、前述の例示的な実施形態において記載され、例示されてきたが、本開示が、単なる例として作製されていること、ならびに添付の特許請求の範囲によってのみ制限される開示される主題の趣旨及び範囲から逸脱することなく、開示される主題の実装の詳細に多数の変更がなされ得ることを理解されたい。
Claims (25)
- リモートサーバ上に既に記憶されているデータに基づいて、ソースローカル重複排除ストアから前記リモートサーバにオブジェクトを複製して、前記ローカル重複排除ストアから前記リモートサーバに送信される重複データの量を低減する、コンピュータで処理される方法であって、
前記ソースローカル重複排除ストアによって、前記リモートサーバに、前記ソースローカル重複排除ストアから前記リモートサーバに複製されるソースオブジェクトのハッシュセットを送信することと、
前記ソースローカル重複排除ストアによって、前記リモートサーバから、
前記リモートサーバ上に既に存在する前記ソースオブジェクト内のデータを表すオブジェクトハッシュセットと、
前記リモートサーバ上に存在しないソースオブジェクトハッシュを示すデータと、を含む、データを受信することと、
前記ソースローカル重複排除ストアによって、前記受信されたデータに基づいて前記リモートサーバ上に存在しない前記ソースオブジェクトの部分を特定することと、
前記ソースローカル重複排除ストアによって、前記ソースオブジェクトを複製するために前記リモートサーバ上に存在しない前記ソースオブジェクトの前記部分のみが前記リモートサーバにコピーされるように、前記ソースオブジェクトの前記特定された部分を、前記リモートサーバに伝送して、前記リモートサーバ上に前記ソースオブジェクトを複製することと、を含む、前記方法。 - 前記ソースオブジェクトのハッシュを生成することは、前記ソースオブジェクトの一部であるより高深度のオブジェクトのハッシュセットを生成することを含む、請求項1に記載の前記方法。
- 前記リモートオブジェクトセットを前記リモートサーバに送信することにより、前記リモートサーバに、前記ソースハッシュセットに基づいて第1の合成オブジェクトを作成させる、請求項1に記載の前記方法。
- 前記リモートサーバからの前記データに基づいて第2の合成オブジェクトを作成することをさらに含み、前記第2の合成オブジェクトは、前記第1の合成オブジェクトと同一である、請求項3に記載の前記方法。
- 特定することは、
前記第2の合成オブジェクトと、前記ソースオブジェクトとの間の差分のセットを計算することと、
前記差分のセットを前記リモートサーバに伝送することと、をさらに含む、請求項4に記載の前記方法。 - 前記差分のセットを前記リモートサーバに送信することにより、前記リモートコンテンツアドレス可能ストアに、前記第1の合成オブジェクトと前記差分のセットとを含むリモートオブジェクトを集めさせ、前記リモートオブジェクトは、前記ソースオブジェクトと同一である、請求項5に記載の前記方法。
- リモートサーバ上に既に記憶されているデータに基づいて、ソースローカル重複排除ストアから前記リモートサーバにオブジェクトを複製して、前記ローカル重複排除ストアから前記リモートサーバに送信される重複データの量を低減する、コンピュータで処理される方法であって、
前記リモートサーバによって、前記ソースローカル重複排除ストアから前記リモートサーバに複製されるソースオブジェクトのハッシュセットを受信することと、
前記リモートサーバによって、
前記リモートサーバ上に既に存在する前記ソースオブジェクト内のデータを表すオブジェクトハッシュセットと、
前記リモートサーバ上に存在しないソースオブジェクトハッシュを示すデータと、を含む、データを生成することと、
前記ソースローカル重複排除ストアが、前記リモートサーバ上に既に存在する前記ソースオブジェクトからのデータを特定することができ、それによって、前記ソースオブジェクトを複製するために前記リモートサーバ上に存在しない前記ソースオブジェクトの残りのデータのみが前記リモートサーバにコピーされるように、前記リモートサーバによって、前記生成されたデータを前記ソースローカル重複排除ストアに送信することと、を含む、前記方法。 - 前記ソースオブジェクトの前記ハッシュセットを受信することは、前記ソースオブジェクトの一部であるより高深度のオブジェクトのハッシュを受信することを含む、請求項7に記載の前記方法。
- 前記ソースハッシュセットに基づいて第1の合成オブジェクトを作成することをさらに含む、請求項7に記載の前記方法。
- 前記生成されたデータを前記リモートサーバから前記ソースローカル重複排除ストアに送信することにより、前記ソースローカル重複排除ストアに、前記リモートサーバからの前記データに基づいて第2の合成オブジェクトを作成させ、前記第2の合成オブジェクトは、前記第1の合成オブジェクトと同一である、請求項9に記載の前記方法。
- 前記ソースローカル重複排除ストアから、前記第2の合成オブジェクトと前記ソースオブジェクトとの間の差分のセットを受信することをさらに含む、請求項10に記載の前記方法。
- 前記第1の合成オブジェクトと、前記差分セットとを含む、リモートオブジェクトを集めることをさらに含み、前記リモートオブジェクトは、前記ソースオブジェクトと同一である、請求項11に記載の前記方法。
- リモートサーバ上に既に記憶されているデータに基づいて、ソースローカル重複排除ストアから前記リモートサーバにオブジェクトを複製して、前記ローカル重複排除ストアから前記リモートサーバに送信される重複データの量を低減する、コンピュータで処理される方法であって、
前記ソースローカル重複排除ストアによって、前記リモートサーバに、前記ソースローカル重複排除ストアから前記リモートサーバに複製されるソースオブジェクトのハッシュセットを送信することと、
前記リモートサーバによって、
前記リモートサーバ上に既に存在する前記ソースオブジェクト内のデータを表すオブジェクトハッシュセットと、
前記リモートサーバ上に存在しないソースオブジェクトハッシュを示すデータと、を含む、データを生成することと、
前記リモートサーバによって、前記生成されたデータを前記ソースローカル重複排除ストアに伝送することと、
前記ソースローカル重複排除ストアによって、前記受信されたデータに基づいて、前記リモートサーバ上に存在しない前記ソースオブジェクトの部分を特定することと、
前記ソースローカル重複排除ストアによって、前記ソースオブジェクトを複製するために前記リモートサーバ上に存在しない前記ソースオブジェクトの前記部分のみが前記リモートサーバにコピーされるように、前記ソースオブジェクトの前記特定された部分を、前記リモートサーバに伝送して、前記リモートサーバ上に前記ソースオブジェクトを複製することと、
前記リモートサーバによって、前記リモートサーバ上に既に存在する前記ソースオブジェクト内のデータを表す前記オブジェクトハッシュセットを含むリモートオブジェクトと、前記特定された部分と、を集めることと、を含み、前記リモートオブジェクトは、前記ソースオブジェクトと同一である、前記方法。 - 重複排除化データストアについてのファイルシステムデータの取り込み及び消去の情報を流すことを維持して、ガベージコレクション操作を行うことなく前記重複排除化データストアでの前記ガベージコレクション操作の結果を予測する、コンピュータで処理される方法であって、
コンピュータデバイスによって、時間グラフを維持することであって、前記時間グラフはノードを含み、前記ノードはオブジェクトに対するハッシュ参照を含む、時間グラフを維持することと、
前記コンピュータデバイスによって、ノードが前記時間グラフに追加されたときに、前記時間グラフにおける親ノードとその子ノードとの間のいくつかのハッシュ差分を含む累積差分カウントを更新することと、
前記コンピュータデバイスによって、ノードが前記時間グラフから除去されたときに、前記除去されたノードによって参照されるが、前記除去されたノードの親ノードまたは前記除去されたノードの任意の子ノードのいずれによっても参照されないいくつかのハッシュ差分を含む剥奪差分カウントを更新することと、
前記コンピュータデバイスによって、前記累積差分カウント及び前記剥奪差分カウントのうちの少なくとも1つに基づいて、前記ガベージコレクションの結果を予測することと、を含む、前記方法。 - 前記ガベージコレクションの結果を予測することは、前記重複排除化データストアによって使用されるが、オブジェクトによって参照されない、データ記憶の量を決定することを含む、請求項14に記載の前記方法。
- 前記重複排除化データストアによって使用されるが、オブジェクトによって参照されないデータ記憶の量を決定することは、前記累積差分カウントと前記剥奪差分カウントとの比率を決定することを含む、請求項15に記載の前記方法。
- 前記重複排除化データストアによって使用されるが、オブジェクトによって参照されないデータ記憶の前記量が閾値を超えたときに、前記コンピュータデバイスによってガベージコレクションを行うことをさらに含む、請求項15に記載の前記方法。
- 重複排除化データストアのファイルシステムデータの取り込み及び削除の情報を流すことを維持して、ガベージコレクション操作を行うことなく、前記重複排除化データストアでの前記ガベージコレクション操作の結果を予測するためのコンピュータで処理されるシステムであって、プロセッサに、
時間グラフを維持することであって、前記時間グラフはノードを含み、前記ノードはオブジェクトへのハッシュ参照を含む、時間グラフを維持することと、
ノードが前記時間グラフに追加されたときに、前記時間グラフにおける親ノードとその子ノードとの間のいくつかのハッシュ差分を含む累積差分カウントを更新することと、
ノードが前記時間グラフから除去されたときに、前記除去されたノードによって参照されるが、前記除去されたノードの親ノードまたは前記除去されたノードの任意の子ノードのいずれによっても参照されないいくつかのハッシュ差分を含む剥奪差分カウントを更新することと、
前記累積差分カウント及び前記剥奪差分カウントのうちの少なくとも1つに基づいて、前記ガベージコレクションの結果を予測することと、を行わせるように構成される、メモリに記憶されたモジュールを起動するように構成される、前記プロセッサを含む、前記システム。 - 前記ガベージコレクションの結果を予測することは、前記重複排除化データストアによって使用されるが、オブジェクトによって参照されない、データ記憶の量を決定することを含む、請求項18に記載の前記コンピュータで処理されるシステム。
- 前記重複排除化データストアによって使用されるが、オブジェクトによって参照されないデータ記憶の量を決定することは、前記累積差分カウントと前記剥奪差分カウントとの比率を決定することを含む、請求項19に記載の前記コンピュータで処理されるシステム。
- メモリに記憶される前記モジュールは、さらに、前記プロセッサに、前記重複排除化データストアによって使用されるが、オブジェクトによって参照されないデータ記憶の前記量が閾値を超えたときに、ガベージコレクションを行わせるように構成される、請求項19に記載の前記方法。
- 非一過性コンピュータ可読媒体であって、装置に、
時間グラフを維持することであって、前記時間グラフはノードを含み、前記ノードはオブジェクトへのハッシュ参照を含む、時間グラフを維持することと、
ノードが前記時間グラフに追加されたときに、前記時間グラフにおける親ノードとその子ノードとの間のいくつかのハッシュ差分を含む累積差分カウントを更新することと、
ノードが前記時間グラフから除去されたときに、前記除去されたノードによって参照されるが、前記除去されたノードの親ノードまたは前記除去されたノードの任意の子ノードのいずれによっても参照されないいくつかのハッシュ差分を含む剥奪差分カウントを更新することと、
前記累積差分カウント及び前記剥奪差分カウントのうちの少なくとも1つに基づいて、前記ガベージコレクションの結果を予測することと、を行わせるように操作可能な実行可能命令を有する、前記非一過性コンピュータ可読媒体。 - 前記ガベージコレクションの結果を予測することは、前記重複排除化データストアによって使用されるが、オブジェクトによって参照されないデータ記憶の量を決定することを含む、請求項22に記載の前記非一過性コンピュータ可読媒体。
- 前記重複排除化データストアによって使用されるが、オブジェクトによって参照されないデータ記憶の量を決定することは、前記累積差分カウントと前記剥奪差分カウントとの比率を決定することを含む、請求項23に記載の前記非一過性コンピュータ可読媒体。
- 前記実行可能命令は、さらに、装置に、前記重複排除化データストアによって使用されるが、オブジェクトによって参照されないデータ記憶の前記量が、閾値を超えたときに、ガベージコレクションを行わせるように操作可能である、請求項23に記載の前記非一過性コンピュータ可読媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361823210P | 2013-05-14 | 2013-05-14 | |
US61/823,210 | 2013-05-14 | ||
PCT/US2014/000111 WO2014185974A2 (en) | 2013-05-14 | 2014-05-14 | Efficient data replication and garbage collection predictions |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2016524220A true JP2016524220A (ja) | 2016-08-12 |
Family
ID=50977039
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016513944A Pending JP2016524220A (ja) | 2013-05-14 | 2014-05-14 | 効率的なデータ複製及びガベージコレクション予測 |
Country Status (6)
Country | Link |
---|---|
US (2) | US9563683B2 (ja) |
EP (1) | EP2997501A2 (ja) |
JP (1) | JP2016524220A (ja) |
AU (1) | AU2014265979A1 (ja) |
CA (1) | CA2912394A1 (ja) |
WO (1) | WO2014185974A2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021119461A (ja) * | 2020-07-20 | 2021-08-12 | ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッド | バックアップ管理方法、システム、電子機器、及び媒体 |
JP2023011448A (ja) * | 2021-07-12 | 2023-01-24 | 株式会社日立製作所 | バックアップシステム及び方法 |
Families Citing this family (79)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104166673B (zh) | 2008-12-22 | 2017-09-19 | 谷歌公司 | 用于复制内容可寻址存储集群的异步分布式去重 |
US8819208B2 (en) | 2010-03-05 | 2014-08-26 | Solidfire, Inc. | Data deletion in a distributed data storage system |
US9054992B2 (en) | 2011-12-27 | 2015-06-09 | Solidfire, Inc. | Quality of service policy sets |
US9838269B2 (en) | 2011-12-27 | 2017-12-05 | Netapp, Inc. | Proportional quality of service based on client usage and system metrics |
US9053216B1 (en) | 2013-08-09 | 2015-06-09 | Datto, Inc. | CPU register assisted virtual machine screenshot capture timing apparatuses, methods and systems |
US20150244795A1 (en) | 2014-02-21 | 2015-08-27 | Solidfire, Inc. | Data syncing in a distributed system |
US10656864B2 (en) | 2014-03-20 | 2020-05-19 | Pure Storage, Inc. | Data replication within a flash storage array |
US9823842B2 (en) | 2014-05-12 | 2017-11-21 | The Research Foundation For The State University Of New York | Gang migration of virtual machines using cluster-wide deduplication |
US9672165B1 (en) * | 2014-05-21 | 2017-06-06 | Veritas Technologies Llc | Data management tier coupling primary storage and secondary storage |
US9594636B2 (en) * | 2014-05-30 | 2017-03-14 | Datto, Inc. | Management of data replication and storage apparatuses, methods and systems |
US9542119B2 (en) * | 2014-07-09 | 2017-01-10 | Toshiba Corporation | Solid-state mass storage media having data volumes with different service levels for different data types |
JP2016057876A (ja) * | 2014-09-10 | 2016-04-21 | 富士通株式会社 | 情報処理装置、入出力制御プログラム、及び入出力制御方法 |
US9753955B2 (en) | 2014-09-16 | 2017-09-05 | Commvault Systems, Inc. | Fast deduplication data verification |
US10621143B2 (en) * | 2015-02-06 | 2020-04-14 | Ashish Govind Khurange | Methods and systems of a dedupe file-system garbage collection |
US9971821B1 (en) | 2015-02-17 | 2018-05-15 | Cohesity, Inc. | Search and analytics for a storage systems |
US11836369B1 (en) * | 2015-02-27 | 2023-12-05 | Pure Storage, Inc. | Storing data in an expanded storage pool of a vast storage network |
US9639274B2 (en) | 2015-04-14 | 2017-05-02 | Commvault Systems, Inc. | Efficient deduplication database validation |
US9817599B2 (en) | 2015-05-11 | 2017-11-14 | Hewlett Packard Enterprise Development Lp | Storing indicators of unreferenced memory addresses in volatile memory |
US9826030B1 (en) * | 2015-06-04 | 2017-11-21 | Amazon Technologies, Inc. | Placement of volume partition replica pairs |
US10452641B1 (en) * | 2015-06-30 | 2019-10-22 | EMC IP Holding Company LLC | Snapshot conscious internal file data modification for network-attached storage |
US10769212B2 (en) * | 2015-07-31 | 2020-09-08 | Netapp Inc. | Extensible and elastic data management services engine external to a storage domain |
RU2015139057A (ru) | 2015-09-14 | 2017-03-17 | ИЭмСи КОРПОРЕЙШН | Способ и система распределенного хранения данных |
US10061697B2 (en) * | 2015-12-16 | 2018-08-28 | EMC IP Holding Company LLC | Garbage collection scope detection for distributed storage |
US10133770B2 (en) | 2015-12-16 | 2018-11-20 | EMC IP Holding Company LLC | Copying garbage collector for B+ trees under multi-version concurrency control |
US11182344B2 (en) * | 2016-03-14 | 2021-11-23 | Vmware, Inc. | File granular data de-duplication effectiveness metric for data de-duplication |
US10372683B1 (en) * | 2016-03-29 | 2019-08-06 | EMC IP Holding Company LLC | Method to determine a base file relationship between a current generation of files and a last replicated generation of files |
US10565058B1 (en) * | 2016-03-30 | 2020-02-18 | EMC IP Holding Company LLC | Adaptive hash-based data replication in a storage system |
CN107852349B (zh) * | 2016-03-31 | 2020-12-01 | 慧与发展有限责任合伙企业 | 用于多节点集群的事务管理的系统、方法及存储介质 |
CN107534445B (zh) | 2016-04-19 | 2020-03-10 | 华为技术有限公司 | 用于分割哈希值计算的向量处理 |
CN107004031A (zh) | 2016-04-19 | 2017-08-01 | 华为技术有限公司 | 采用向量处理的同时分割 |
US10929022B2 (en) * | 2016-04-25 | 2021-02-23 | Netapp. Inc. | Space savings reporting for storage system supporting snapshot and clones |
US10802922B2 (en) * | 2016-08-26 | 2020-10-13 | International Business Machines Corporation | Accelerated deduplication block replication |
US11176097B2 (en) | 2016-08-26 | 2021-11-16 | International Business Machines Corporation | Accelerated deduplication block replication |
US11630735B2 (en) | 2016-08-26 | 2023-04-18 | International Business Machines Corporation | Advanced object replication using reduced metadata in object storage environments |
US10169167B2 (en) | 2016-09-19 | 2019-01-01 | International Business Machines Corporation | Reduced recovery time in disaster recovery/replication setup with multitier backend storage |
US10642763B2 (en) | 2016-09-20 | 2020-05-05 | Netapp, Inc. | Quality of service policy sets |
US10320907B2 (en) * | 2016-09-26 | 2019-06-11 | Netapp, Inc. | Multi-stage prefetching to exploit long-term future data access sequence knowledge |
US9690701B1 (en) * | 2016-09-27 | 2017-06-27 | International Business Machines Corporation | Probabilistic, parallel collection of memory no longer in use |
CN108228083A (zh) * | 2016-12-21 | 2018-06-29 | 伊姆西Ip控股有限责任公司 | 用于数据去重的方法和设备 |
US10372605B2 (en) * | 2016-12-27 | 2019-08-06 | EMC IP Holding Company LLC | Generational garbage collector for trees under multi-version concurrency control |
US10168948B2 (en) | 2017-02-20 | 2019-01-01 | International Business Machines Corporation | Replicating data in a data storage system |
US10324806B1 (en) * | 2017-04-27 | 2019-06-18 | EMC IP Holding Company LLC | Snapshot visualization for content-based storage |
US10331350B1 (en) * | 2017-04-27 | 2019-06-25 | EMC IP Holding Company LLC | Capacity determination for content-based storage |
US11429587B1 (en) | 2017-06-29 | 2022-08-30 | Seagate Technology Llc | Multiple duration deduplication entries |
US10706082B1 (en) * | 2017-06-29 | 2020-07-07 | Seagate Technology Llc | Deduplication database management |
US10620843B2 (en) * | 2017-07-26 | 2020-04-14 | Netapp, Inc. | Methods for managing distributed snapshot for low latency storage and devices thereof |
US10496674B2 (en) | 2017-08-07 | 2019-12-03 | International Business Machines Corporation | Self-describing volume ancestry for data synchronization |
JP2019057178A (ja) | 2017-09-21 | 2019-04-11 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
US11269531B2 (en) | 2017-10-25 | 2022-03-08 | International Business Machines Corporation | Performance of dispersed location-based deduplication |
US10555278B2 (en) * | 2017-11-03 | 2020-02-04 | Comptel Oy | Method and arrangement for allocating communication resources in a communication network |
US10572184B2 (en) | 2018-01-11 | 2020-02-25 | International Business Machines Corporation | Garbage collection in data storage systems |
US10922280B2 (en) | 2018-04-10 | 2021-02-16 | Nutanix, Inc. | Policy-based data deduplication |
US10445022B1 (en) | 2018-04-26 | 2019-10-15 | Alibaba Group Holding Limited | Optimization of log-structured merge (LSM) tree-based databases using object solid state drive (SSD) devices |
US10592363B2 (en) * | 2018-06-04 | 2020-03-17 | International Business Machines Corporation | Asynchronous remote mirror cloud archival |
US10795861B2 (en) | 2018-06-20 | 2020-10-06 | International Business Machines Corporation | Online measurement of potential deduplication efficiency |
KR102567111B1 (ko) | 2018-08-02 | 2023-08-14 | 삼성전자주식회사 | 스토리지 디바이스 및 스토리지 디바이스의 동작 방법 |
US10783022B2 (en) | 2018-08-03 | 2020-09-22 | EMC IP Holding Company LLC | Immediate replication for dedicated data blocks |
US11120147B2 (en) * | 2018-09-11 | 2021-09-14 | International Business Machines Corporation | Operating system garbage-collection with integrated clearing of sensitive data |
KR102620731B1 (ko) * | 2018-09-27 | 2024-01-05 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
US11372991B1 (en) * | 2018-11-27 | 2022-06-28 | Amazon Technologies, Inc. | Database operational continuity |
US11860743B1 (en) | 2018-11-27 | 2024-01-02 | Amazon Technologies, Inc. | Database operational compatibility safeguards |
US11469881B2 (en) * | 2018-12-26 | 2022-10-11 | Korea Institute Of Science And Technology | Apparatus and method for forgery prevention of digital information |
US11099942B2 (en) * | 2019-03-21 | 2021-08-24 | International Business Machines Corporation | Archival to cloud storage while performing remote backup of data |
CN111858143A (zh) * | 2019-04-24 | 2020-10-30 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法、设备和计算机可读存储介质 |
US11341106B2 (en) | 2019-07-19 | 2022-05-24 | Commvault Systems, Inc. | Deduplication system without reference counting |
US11507422B2 (en) * | 2019-08-01 | 2022-11-22 | EMC IP Holding Company LLC | Method and system for intelligently provisioning resources in storage systems |
US11232094B2 (en) * | 2019-12-16 | 2022-01-25 | Vast Data Ltd. | Techniques for determining ancestry in directed acyclic graphs |
US11360866B2 (en) * | 2020-04-14 | 2022-06-14 | International Business Machines Corporation | Updating stateful system in server cluster |
US11550712B2 (en) | 2020-06-11 | 2023-01-10 | Google Llc | Optimizing garbage collection based on survivor lifetime prediction |
US11809910B2 (en) | 2020-10-14 | 2023-11-07 | Bank Of America Corporation | System and method for dynamically resizing computational infrastructure to accommodate unexpected demands |
US11782641B2 (en) * | 2021-06-09 | 2023-10-10 | International Business Machines Corporation | Backend aware virtualized storage |
US11556562B1 (en) | 2021-07-29 | 2023-01-17 | Kyndryl, Inc. | Multi-destination probabilistic data replication |
US11989421B2 (en) | 2021-08-19 | 2024-05-21 | Micron Technology, Inc. | Adjustable data protection scheme using artificial intelligence |
US11698858B2 (en) | 2021-08-19 | 2023-07-11 | Micron Technology, Inc. | Prediction based garbage collection |
US11960504B2 (en) | 2021-09-02 | 2024-04-16 | Bank Of America Corporation | Data replication over low-latency network |
US11687416B2 (en) | 2021-09-27 | 2023-06-27 | Kyndryl, Inc. | Data backup optimization |
US20230205641A1 (en) * | 2021-12-27 | 2023-06-29 | Dell Products L.P. | Disaster recovery drills based on checksum validations |
US11809713B1 (en) * | 2022-07-12 | 2023-11-07 | Silicon Motion, Inc. | Method and apparatus for performing data access management of memory device with aid of randomness-property control |
WO2024085681A1 (ko) * | 2022-10-20 | 2024-04-25 | 삼성전자 주식회사 | 가비지 컬렉션 수행 방법 및 이를 지원하는 전자 장치 |
Family Cites Families (88)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4626829A (en) | 1985-08-19 | 1986-12-02 | Intelligent Storage Inc. | Data compression using run length encoding and statistical encoding |
EP0516900B1 (en) | 1991-06-04 | 1996-05-01 | International Business Machines Corporation | Data backup and recovery in a data processing system |
US5410667A (en) | 1992-04-17 | 1995-04-25 | Storage Technology Corporation | Data record copy system for a disk drive array data storage subsystem |
US5497483A (en) | 1992-09-23 | 1996-03-05 | International Business Machines Corporation | Method and system for track transfer control during concurrent copy operations in a data processing storage subsystem |
DE69425658T2 (de) | 1993-06-03 | 2001-04-19 | Network Appliance Inc | Anordnung eines dateisystems zum beschreiben beliebiger bereiche |
US5963962A (en) | 1995-05-31 | 1999-10-05 | Network Appliance, Inc. | Write anywhere file-system layout |
US5535381A (en) | 1993-07-22 | 1996-07-09 | Data General Corporation | Apparatus and method for copying and restoring disk files |
KR970076238A (ko) | 1996-05-23 | 1997-12-12 | 포만 제프리 엘 | 클라이언트 데이타 화일의 다수의 복사본을 생성하고 관리하는 서버, 방법 및 그 프로그램 제품 |
US5857208A (en) | 1996-05-31 | 1999-01-05 | Emc Corporation | Method and apparatus for performing point in time backup operation in a computer system |
US5828876A (en) | 1996-07-31 | 1998-10-27 | Ncr Corporation | File system for a clustered processing system |
US6119208A (en) | 1997-04-18 | 2000-09-12 | Storage Technology Corporation | MVS device backup system for a data processor using a data storage subsystem snapshot copy capability |
US6081875A (en) | 1997-05-19 | 2000-06-27 | Emc Corporation | Apparatus and method for backup of a disk storage system |
US6192444B1 (en) | 1998-01-05 | 2001-02-20 | International Business Machines Corporation | Method and system for providing additional addressable functional space on a disk for use with a virtual data storage subsystem |
US6212531B1 (en) | 1998-01-13 | 2001-04-03 | International Business Machines Corporation | Method for implementing point-in-time copy using a snapshot function |
US6131148A (en) | 1998-01-26 | 2000-10-10 | International Business Machines Corporation | Snapshot copy of a secondary volume of a PPRC pair |
US6065018A (en) | 1998-03-04 | 2000-05-16 | International Business Machines Corporation | Synchronizing recovery log having time stamp to a remote site for disaster recovery of a primary database having related hierarchial and relational databases |
US6199146B1 (en) | 1998-03-12 | 2001-03-06 | International Business Machines Corporation | Storage management system and method for increasing capacity utilization of nonvolatile storage devices using partially filled substitute storage devices for continuing write operations |
US6330614B1 (en) | 1998-03-20 | 2001-12-11 | Nexabit Networks Llc | Internet and related networks, a method of and system for substitute use of checksum field space in information processing datagram headers for obviating processing speed and addressing space limitations and providing other features |
US6092085A (en) | 1998-03-24 | 2000-07-18 | International Business Machines Corporation | Method and system for improved database disaster recovery |
US6163856A (en) | 1998-05-29 | 2000-12-19 | Sun Microsystems, Inc. | Method and apparatus for file system disaster recovery |
US6269381B1 (en) | 1998-06-30 | 2001-07-31 | Emc Corporation | Method and apparatus for backing up data before updating the data and for restoring from the backups |
US6269431B1 (en) | 1998-08-13 | 2001-07-31 | Emc Corporation | Virtual storage and block level direct access of secondary storage for recovery of backup data |
US6226759B1 (en) | 1998-09-28 | 2001-05-01 | International Business Machines Corporation | Method and apparatus for immediate data backup by duplicating pointers and freezing pointer/data counterparts |
US6487561B1 (en) | 1998-12-31 | 2002-11-26 | Emc Corporation | Apparatus and methods for copying, backing up, and restoring data using a backup segment size larger than the storage block size |
US6654772B1 (en) | 1999-04-28 | 2003-11-25 | Emc Corporation | Multi-volume extent based file system |
US6324548B1 (en) | 1999-07-22 | 2001-11-27 | Unisys Corporation | Database backup and recovery using separate history files for database backup and audit backup |
US6772302B1 (en) | 1999-11-12 | 2004-08-03 | International Business Machines Corporation | Virtual copy method for data spanning storage boundaries |
US6434681B1 (en) | 1999-12-02 | 2002-08-13 | Emc Corporation | Snapshot copy facility for a data storage system permitting continued host read/write access |
US6460055B1 (en) | 1999-12-16 | 2002-10-01 | Livevault Corporation | Systems and methods for backing up data files |
US6484186B1 (en) | 2000-02-15 | 2002-11-19 | Novell, Inc. | Method for backing up consistent versions of open files |
US6779094B2 (en) | 2000-06-19 | 2004-08-17 | Storage Technology Corporation | Apparatus and method for instant copy of data by writing new data to an additional physical storage area |
US6665815B1 (en) | 2000-06-22 | 2003-12-16 | Hewlett-Packard Development Company, L.P. | Physical incremental backup using snapshots |
US7072916B1 (en) | 2000-08-18 | 2006-07-04 | Network Appliance, Inc. | Instant snapshot |
US6823336B1 (en) | 2000-09-26 | 2004-11-23 | Emc Corporation | Data storage system and method for uninterrupted read-only access to a consistent dataset by one host processor concurrent with read-write access by another host processor |
US6654912B1 (en) | 2000-10-04 | 2003-11-25 | Network Appliance, Inc. | Recovery of file system data in file servers mirrored file system volumes |
US6557089B1 (en) | 2000-11-28 | 2003-04-29 | International Business Machines Corporation | Backup by ID-suppressed instant virtual copy then physical backup copy with ID reintroduced |
US6850929B2 (en) | 2001-03-08 | 2005-02-01 | International Business Machines Corporation | System and method for managing file system extended attributes |
US6510500B2 (en) | 2001-03-09 | 2003-01-21 | International Business Machines Corporation | System and method for minimizing message transactions for fault-tolerant snapshots in a dual-controller environment |
US6668264B1 (en) | 2001-04-03 | 2003-12-23 | Network Appliance, Inc. | Resynchronization of a target volume with a source volume |
US6915397B2 (en) | 2001-06-01 | 2005-07-05 | Hewlett-Packard Development Company, L.P. | System and method for generating point in time storage copy |
US6625704B2 (en) | 2001-08-08 | 2003-09-23 | Sangate Systems, Inc. | Data backup method and system using snapshot and virtual tape |
JP2005505045A (ja) | 2001-09-28 | 2005-02-17 | コムヴォールト・システムズ・インコーポレーテッド | クイックリカバリボリュームを作成及び管理する方法及び装置 |
US6823436B2 (en) | 2001-10-02 | 2004-11-23 | International Business Machines Corporation | System for conserving metadata about data snapshots |
US7296125B2 (en) | 2001-11-29 | 2007-11-13 | Emc Corporation | Preserving a snapshot of selected data of a mass storage system |
US6948039B2 (en) | 2001-12-14 | 2005-09-20 | Voom Technologies, Inc. | Data backup and restoration using dynamic virtual storage |
JP4108973B2 (ja) | 2001-12-26 | 2008-06-25 | 株式会社日立製作所 | バックアップシステム |
US6898688B2 (en) | 2001-12-28 | 2005-05-24 | Storage Technology Corporation | Data management appliance |
US7072915B2 (en) | 2002-01-22 | 2006-07-04 | International Business Machines Corporation | Copy method supplementing outboard data copy with previously instituted copy-on-write logical snapshot to create duplicate consistent with source data as of designated time |
US6957362B2 (en) | 2002-08-06 | 2005-10-18 | Emc Corporation | Instantaneous restoration of a production copy from a snapshot copy in a data storage system |
US7707184B1 (en) | 2002-10-09 | 2010-04-27 | Netapp, Inc. | System and method for snapshot full backup and hard recovery of a database |
US6928526B1 (en) | 2002-12-20 | 2005-08-09 | Datadomain, Inc. | Efficient data storage system |
JP4325211B2 (ja) | 2003-02-14 | 2009-09-02 | 富士ゼロックス株式会社 | 情報処理システム |
US7814128B2 (en) | 2003-05-30 | 2010-10-12 | Symantec Operating Corporation | Multi-volume file support |
US7143251B1 (en) | 2003-06-30 | 2006-11-28 | Data Domain, Inc. | Data storage using identifiers |
US20050004954A1 (en) * | 2003-07-01 | 2005-01-06 | Hand Held Products, Inc. | Systems and methods for expedited data transfer in a communication system using hash segmentation |
US7865485B2 (en) | 2003-09-23 | 2011-01-04 | Emc Corporation | Multi-threaded write interface and methods for increasing the single file read and write throughput of a file server |
US7647355B2 (en) | 2003-10-30 | 2010-01-12 | International Business Machines Corporation | Method and apparatus for increasing efficiency of data storage in a file system |
US7539685B2 (en) | 2003-12-30 | 2009-05-26 | Microsoft Corporation | Index key normalization |
US8180742B2 (en) | 2004-07-01 | 2012-05-15 | Emc Corporation | Policy-based information management |
US7689633B1 (en) | 2004-09-15 | 2010-03-30 | Data Domain, Inc. | Network file system-based data storage system |
US8725705B2 (en) | 2004-09-15 | 2014-05-13 | International Business Machines Corporation | Systems and methods for searching of storage data with reduced bandwidth requirements |
JP4239940B2 (ja) | 2004-09-22 | 2009-03-18 | セイコーエプソン株式会社 | ファイル管理プログラム、及びファイル管理装置 |
GB0428108D0 (en) | 2004-12-23 | 2005-01-26 | Ibm | Storage system with multiple copy targeting |
CN101495970B (zh) | 2005-06-24 | 2013-07-17 | 信科索尔特公司 | 用于高性能企业数据保护的系统和方法 |
JP4668763B2 (ja) | 2005-10-20 | 2011-04-13 | 株式会社日立製作所 | ストレージ装置のリストア方法及びストレージ装置 |
US7325111B1 (en) | 2005-11-01 | 2008-01-29 | Network Appliance, Inc. | Method and system for single pass volume scanning for multiple destination mirroring |
US8706833B1 (en) | 2006-12-08 | 2014-04-22 | Emc Corporation | Data storage server having common replication architecture for multiple storage object types |
US20080270436A1 (en) * | 2007-04-27 | 2008-10-30 | Fineberg Samuel A | Storing chunks within a file system |
US8139575B2 (en) | 2007-06-29 | 2012-03-20 | International Business Machines Corporation | Device, system and method of modification of PCI express packet digest |
US9098432B1 (en) | 2008-04-08 | 2015-08-04 | Emc Corporation | System and method for data deduplication of backup images |
US8037032B2 (en) | 2008-08-25 | 2011-10-11 | Vmware, Inc. | Managing backups using virtual machines |
US9275067B2 (en) * | 2009-03-16 | 2016-03-01 | International Busines Machines Corporation | Apparatus and method to sequentially deduplicate data |
US9223793B1 (en) * | 2009-06-03 | 2015-12-29 | American Megatrends, Inc. | De-duplication of files for continuous data protection with remote storage |
US8046326B2 (en) * | 2009-07-24 | 2011-10-25 | Sap Ag | Adaptive synchronization of business objects |
US8180740B1 (en) | 2009-08-12 | 2012-05-15 | Netapp, Inc. | System and method for eliminating duplicate data by generating data fingerprints using adaptive fixed-length windows |
US8161077B2 (en) | 2009-10-21 | 2012-04-17 | Delphix Corp. | Datacenter workflow automation scenarios using virtual databases |
US8150808B2 (en) | 2009-10-21 | 2012-04-03 | Delphix Corp. | Virtual database system |
US8108447B2 (en) * | 2010-03-11 | 2012-01-31 | Symantec Corporation | Systems and methods for garbage collection in deduplicated data systems |
US8417904B2 (en) * | 2010-03-17 | 2013-04-09 | Seagate Technology Llc | Garbage collection management in a data storage device |
US8442942B2 (en) * | 2010-03-25 | 2013-05-14 | Andrew C. Leppard | Combining hash-based duplication with sub-block differencing to deduplicate data |
US8468135B2 (en) | 2010-04-14 | 2013-06-18 | International Business Machines Corporation | Optimizing data transmission bandwidth consumption over a wide area network |
US8407191B1 (en) | 2010-06-29 | 2013-03-26 | Emc Corporation | Priority based data scrubbing on a deduplicated data store |
US8548944B2 (en) | 2010-07-15 | 2013-10-01 | Delphix Corp. | De-duplication based backup of file systems |
US8843489B2 (en) | 2010-11-16 | 2014-09-23 | Actifio, Inc. | System and method for managing deduplicated copies of data using temporal relationships among copies |
US8788769B2 (en) | 2010-11-16 | 2014-07-22 | Actifio, Inc. | System and method for performing backup or restore operations utilizing difference information and timeline state information |
US8299944B2 (en) | 2010-11-16 | 2012-10-30 | Actifio, Inc. | System and method for creating deduplicated copies of data storing non-lossy encodings of data directly in a content addressable store |
US8468174B1 (en) | 2010-11-30 | 2013-06-18 | Jedidiah Yueh | Interfacing with a virtual database system |
US9639543B2 (en) | 2010-12-28 | 2017-05-02 | Microsoft Technology Licensing, Llc | Adaptive index for data deduplication |
-
2014
- 2014-05-14 AU AU2014265979A patent/AU2014265979A1/en not_active Abandoned
- 2014-05-14 WO PCT/US2014/000111 patent/WO2014185974A2/en active Application Filing
- 2014-05-14 US US14/120,340 patent/US9563683B2/en active Active
- 2014-05-14 EP EP14731405.8A patent/EP2997501A2/en not_active Withdrawn
- 2014-05-14 CA CA2912394A patent/CA2912394A1/en not_active Abandoned
- 2014-05-14 JP JP2016513944A patent/JP2016524220A/ja active Pending
- 2014-05-14 US US14/120,368 patent/US9646067B2/en active Active
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021119461A (ja) * | 2020-07-20 | 2021-08-12 | ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッド | バックアップ管理方法、システム、電子機器、及び媒体 |
JP2023011448A (ja) * | 2021-07-12 | 2023-01-24 | 株式会社日立製作所 | バックアップシステム及び方法 |
US11762574B2 (en) | 2021-07-12 | 2023-09-19 | Hitachi, Ltd. | Backup system and method |
JP7387679B2 (ja) | 2021-07-12 | 2023-11-28 | 株式会社日立製作所 | バックアップシステム及び方法 |
Also Published As
Publication number | Publication date |
---|---|
US9563683B2 (en) | 2017-02-07 |
US20140351214A1 (en) | 2014-11-27 |
WO2014185974A2 (en) | 2014-11-20 |
EP2997501A2 (en) | 2016-03-23 |
CA2912394A1 (en) | 2014-11-20 |
US9646067B2 (en) | 2017-05-09 |
AU2014265979A1 (en) | 2015-12-10 |
US20140344216A1 (en) | 2014-11-20 |
WO2014185974A3 (en) | 2015-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11953993B2 (en) | Computerized methods and apparatus for data cloning | |
JP2016524220A (ja) | 効率的なデータ複製及びガベージコレクション予測 | |
US10037154B2 (en) | Incremental copy performance between data stores | |
US9372758B2 (en) | System and method for performing a plurality of prescribed data management functions in a manner that reduces redundant access operations to primary storage | |
US10275474B2 (en) | System and method for managing deduplicated copies of data using temporal relationships among copies | |
US9372866B2 (en) | System and method for creating deduplicated copies of data by sending difference data between near-neighbor temporal states | |
US8396905B2 (en) | System and method for improved garbage collection operations in a deduplicated store by tracking temporal relationships among copies | |
US8402004B2 (en) | System and method for creating deduplicated copies of data by tracking temporal relationships among copies and by ingesting difference data | |
US20120124306A1 (en) | System and method for performing backup or restore operations utilizing difference information and timeline state information | |
JP2013543198A (ja) | データ管理仮想化のためのシステムおよび方法 |