JP2013543198A - データ管理仮想化のためのシステムおよび方法 - Google Patents

データ管理仮想化のためのシステムおよび方法 Download PDF

Info

Publication number
JP2013543198A
JP2013543198A JP2013539918A JP2013539918A JP2013543198A JP 2013543198 A JP2013543198 A JP 2013543198A JP 2013539918 A JP2013539918 A JP 2013539918A JP 2013539918 A JP2013539918 A JP 2013539918A JP 2013543198 A JP2013543198 A JP 2013543198A
Authority
JP
Japan
Prior art keywords
data
content
state
hash
storage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2013539918A
Other languages
English (en)
Inventor
アシュトシュ アシュトシュ
クリストファー エイ プロヴェンザノ
ディヴィッド エフ チャン
フィリップ ジェイ アバクロンビー
マダヴ ムタリク
マーク エイ ローマン
Original Assignee
アクティフィオ インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US12/947,375 external-priority patent/US8843489B2/en
Priority claimed from US12/947,385 external-priority patent/US9858155B2/en
Priority claimed from US12/947,393 external-priority patent/US8788769B2/en
Priority claimed from US12/947,418 external-priority patent/US8402004B2/en
Priority claimed from US12/947,438 external-priority patent/US8299944B2/en
Priority claimed from US12/947,436 external-priority patent/US8904126B2/en
Priority claimed from US12/947,513 external-priority patent/US8417674B2/en
Priority claimed from US12/947,383 external-priority patent/US8396905B2/en
Application filed by アクティフィオ インコーポレイテッド filed Critical アクティフィオ インコーポレイテッド
Publication of JP2013543198A publication Critical patent/JP2013543198A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1453Management of the data involved in backup or backup restore using de-duplication of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1456Hardware arrangements for backup
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

Abstract

データ管理仮想化のためのシステムおよび方法が開示される。システムは、少なくともスナップショット機能およびバックアップ機能を含むデータ管理機能を実行するためのデータ管理機関と、電子的形式のサービスレベルアグリーメントを用いてデータ管理機能のスケジューリングを制御するサービスレベルポリシー機関とを有する。データオブジェクトは、時間の経過に伴ってデータの状態を表わすために時間的構造の編成された配列を用いて、重複排除された内容ストアにおいて編成される。ハッシュ署名は、第1の重複排除されたストアから第2の重複排除されたストアに重複排除されたコピーを実行するための内容区分を追跡するために使用される。ガーベジコレクションは、所与のデータオブジェクトの直前状態に対して変化した内容区分だけのために、重複排除された内容ストア上で実行される。
【選択図】図4

Description

関連出願の相互参照
この出願は、2010年11月16日に出願され、System and Method for Performing Backup or Restore Operations Utilizing Difference Information and Timeline State Informationと題された米国特許出願第12/947,393号と、2010年11月16日に出願され、System and Method for Managing Data with Service Level Agreements That May Specify Non‐Uniform Copying of Dataと題された米国特許出願第12/947,385号と、2010年11月16日に出願され、System and Method for Performing a Plurality of Prescribed Data Management Functions in a Manner That Reduces Redundant Access Operations to Primary Storageと題された米国特許出願第12/947,436号と、2010年11月16日に出願され、System and Method for Creating Deduplicated Copies of Data by Tracking Temporal Relationships Among Copies and by Ingesting Difference Dataと題された米国特許出願第12/947,418号と、2010年11月16日に出願され、System and Method for Managing Deduplicated Copies of Data Using Temporal Relationships Among Copiesと題された米国特許出願第12/947,375号と、2010年11月16日に出願され、System and Method for Improved Garbage Collection Operations in a Deduplicated Store by Tracking Temporal Relationships Among Copiesと題された米国特許出願第12/947,383号と、2010年11月16日に出願され、System and Method for Creating Deduplicated Copies of Data by Sending Difference Data Between Two Near‐Neighbor Temporal Statesと題された米国特許出願第12/947,947,513号と、2010年11月16日に出願され、System and Method for Creating Deduplicated Copies of Data Storing Non−Lossy Encodings of Data Directly in a Content Addressable Storeと題された米国特許出願第12/947,438号とに優先権を主張する。
技術分野
この発明は、データ管理、データ保護、災害復旧および事業継続に一般に関するものである。より詳細には、この発明は、差分情報および時系列状態情報を利用して、バックアップまたは復元動作を実行するためのシステムおよび方法に関するものである。
アプリケーションデータのライフサイクルを管理するための事業要求は、伝統的に、複数ポイントソリューションをデプロイすることによって満たされており、その複数ポイントソリューションのそれぞれは、ライフサイクルの一部に対処する。このことは、データの複数コピーが複数回生成され個々のストレージリポジトリに移動される、複雑で高価なインフラストラクチャを結果として招いている。サーバ仮想化の採用は、簡単な、敏速なおよび低価格なコンピュータ処理インフラストラクチャのためのきっかけとなった。このことは、仮想ホストおよびストレージのより広範なデプロイメントにつながっており、コンピュータを使用する新興のモデルと現行のデータ管理インプリメンテーションとの間のずれを更に悪化させている。
事業サービスを提供するアプリケーションは、そのアプリケーションのデータのライフサイクルの様々な段階でのそのアプリケーションのデータのストレージに依存する。図1は、例えば給与支払い管理などの事業サービスの基礎をなすデータベースなどのアプリケーションのデータに適用されることになるデータ管理動作の典型的な組を示す。事業サービスを提供するために、アプリケーション102は、いくらかの契約されたレベルの信頼性および可用性を有する1次データストレージ122を必要とする。
バックアップ104は、ハードウェアもしくはソフトウェア障害または人的エラーによる1次データストレージの破損から守るために取られる。典型的には、バックアップは、ローカルディスクまたはテープ124に毎日または毎週取られてもよく、また、遠隔の物理的に安全な位置125に少ない頻度で(毎週または毎月)移動されてもよい。
同じデータベースに基づく新しいアプリケーションの同時の開発および試験106は、データ126の別のコピーにアクセスできる開発チームを必要とする。そのようなスナップショットは、開発スケジュール次第で、毎週取られてもよい。
法的または自発的ポリシーの遵守108は、いくつかのデータが、安全に将来のアクセスのために数年間保持されることを要求し得る。通常、データは、長期アーカイビングシステム128に定期的に(例えば、毎月)コピーされる。
災害復旧サービス110は、1次事業サービスを提供するシステムが、いくらかの物理的災害に起因して故障する場合に、データの破局的損失から守る。1次データは、所与の他の制約(例えば費用など)を実現可能な限り、頻繁に物理的に別個の位置にコピーされる130。万一災害の場合には、1次サイトは再構築され得るし、データは安全なコピーから戻され得る。
事業継続サービス112は、1次サイトが障害された場合に事業サービスの継続を確実にするための機能を提供する。通常、このことは、1次データとほぼ段階が揃った(lock‐step)1次データの最新のコピー132のみならず、複製システムおよびアプリケーションと、入ってくる要求を事業継続サーバに交換するための機構とを必要とする。
したがって、データ管理は、現在、ライフサイクルの様々な部分を管理するポイントアプリケーションを収集することである。これは、この20年にわたるデータ管理ソリューションの発展の人工物になっている。
事業サービスについてのデータライフサイクルを管理するためにデプロイされた現行方法の簡略図である。 単一のデータ管理仮想化システムによるデータライフサイクル全体にわたるデータの管理の概要図である。 データ管理仮想化システムの簡略ブロック図である。 データ管理仮想化機関の図である。 オブジェクト管理およびデータ移動機関を例示する。 ストレージプールマネージャを示す。 サービスレベルアグリーメントの分解を示す。 アプリケーション特定モジュールを例示する。 サービスポリシーマネージャを示す。 サービスポリシースケジューラのフローチャートである。 内容参照可能ストレージ(CAS)プロバイダのブロック図である。 CASシステム内のオブジェクトハンドルの定義を示す。 CAS内のオブジェクト用に格納された時間的関係グラフのためのデータモデルおよび動作を示す。 CASにおけるガーベジコレクションアルゴリズムの動作を表わす図である。 オブジェクトをCASの中にコピーする動作についてのフローチャートである。 データ管理仮想化システムの典型的なデプロイメントのシステム図である。 データ管理仮想化システムと使用されるための特徴的な物理的サーバデバイスの概略図である。
例えば上記などの現行のデータ管理アーキテクチャおよびインプリメンテーションは、データライフサイクル管理の様々な部分に対処する複数アプリケーションを伴い、それらのアプリケーションの全ては、ある一定の共通機能、すなわち、(a)アプリケーションデータのコピーを作ること(この行為の頻度は、目標復旧時点(RPO)と通例呼ばれる)と、(b)排他的なストレージリポジトリに、典型的には所有権のある形式で、データのコピーを格納することと、(c)保持時間として測定される、ある一定の期間にコピーを保持することとを実行する。ポイントソリューションのそれぞれにおける主な差異は、RPOの頻度と、保持時間と、使用される個々のストレージリポジトリの、容量、費用および地理的位置を含む、特徴とにある。
この開示は、データ管理仮想化に関するものである。例えばバックアップ、レプリケーションおよびアーカイビングなどのデータ管理アクティビティは、それらのデータ管理アクティビティが個々に分離して構成され動かされる必要がないという点で、仮想化される。代わりに、ユーザは、データのライフサイクルに関してそれらのデータ管理アクティビティの事業要求を定義し、データ管理仮想化システムは、それらのデータ管理アクティビティの動作を自動的に実行する。スナップショットは、1次ストレージから2次ストレージに取られる。次いで、このスナップショットは、他の2次ストレージへのバックアップ動作のために使用される。本質的に、任意の数のこれらのバックアップが作られてもよく、サービスレベルアグリーメントによって指定されたデータ保護のレベルを提供する。
この開示はまた、時間状態間の差分情報を用いて、第1のストレージプールから第2のストレージプールにデータをバックアップするためのシステムであって、データのバックアップコピーを生成するバックアップ機能を少なくとも含むデータ管理機能を実行するためのデータ管理機関を包含する、システムに関するものである。データ管理機関は、第1のストレージプール上のアプリケーションデータの一時点画像を生成するために一連のスナップショット動作を実行するように動作可能であり、連続的な一時点画像のそれぞれは、アプリケーションデータの規定の連続的な時間状態に対応し、スナップショット動作のそれぞれは、どのアプリケーションデータが変化したか、および対応する時間状態について変化したアプリケーションデータの内容を示す差分情報を生成する。データ管理機関はまた、非連続的な時間状態での実行のためにスケジュールされたアプリケーションデータのために少なくとも1つのバックアップ機能を実行するように動作可能であり、また、データの対応するバックアップコピー用のアプリケーションデータ上で実行される最後のバックアップ機能の時間状態を示す時間状態情報を有する保持履歴情報で満ちてもいる。データ管理機関は、アプリケーションデータ上で実行された最後のバックアップ機能の時間状態と、アプリケーションデータ上で実行される現在スケジュールされたバックアップ機能の時間状態との間の時間状態のそれぞれについての差分情報から複合差分情報を生成し、最後の時間状態でのデータのバックアップコピーでコンパイルされるように第2のストレージプールに複合差分情報を送信し、現在の時間状態についてのデータのバックアップコピーを生成する。
この開示に従うデータ管理仮想化技術は、以下の指導原理に基づくアーキテクチャおよびインプリメンテーションに基づいている。
第1に、アプリケーションのデータライフサイクル全体についてサービスレベルアグリーメント(SLA)で、そのアプリケーションの事業要求を定義する。SLAは、単一のRPO、目標保持時間(Retention Time Objective)および目標復旧時間(RTO)をはるかに超えている。そのSLAは、データライフサイクルの各段階についてデータ保護特徴を記載する。各アプリケーションは、異なるSLAを有してもよい。
第2に、改良されたストレージ容量およびネットワーク帯域幅で、様々なストレージリポジトリにわたってデータを移動し、データ保護ライフサイクルを管理する統一されたデータ管理仮想化機関を提供する。データ管理仮想化システムは、時間の経過に伴って変化したデータの一部を追跡することによって、ならびに、コピーされ移動される必要があるデータの量を削減するデータ重複排除および圧縮アルゴリズムによって、現代のストレージシステムの拡張された能力に影響を及ぼすことにより、これらの改良を実現する。
第3に、ライフサイクル内の複数要素のための基準となるアプリケーションデータの単一のマスターコピーに影響を及ぼす。例えばバックアップ、アーカイバルおよびレプリケーションなどのデータ管理動作の多くは、保護されるデータの安定した、不変のコピーに依存する。データ管理仮想化システムは、複数目的のためにデータの単一のコピーに影響を及ぼす。システムによって保持されたデータの単一のインスタンスは、ソースとして機能することができ、各データ管理機能は、必要に応じてそのソースから追加のコピーを作ってもよい。このことは、伝統的なアプローチにおいて複数の独立したデータ管理アプリケーションによって複数回コピーされるアプリケーションデータを要求することとは対照的である。
第4に、物理的ストレージリソースを一連のデータ保護ストレージプールの中に抽象化し、その一連のデータ保護ストレージプールは、ローカルディスクおよびリモートディスク、ソリッドステートメモリ、テープ媒体および光学媒体、私用のストレージクラウド、公共のストレージクラウドおよび/またはハイブリッドのストレージクラウドを含む様々な種類のストレージの中から仮想化される。ストレージプールは、種類、物理的位置または基礎をなすストレージ技術に依存しないでアクセスを与える。データのライフサイクルのための事業要求は、異なる時間に異なる種類のストレージ媒体にデータをコピーすることを要求してもよい。データ管理仮想化システムは、ユーザが、異なるストレージ媒体をストレージプール、例えば、高速ディスクから成る迅速復旧プール、および大容量ディスク上の重複排除されたストア(store)であり得る費用効果の高い長期ストレージプール、またはテープライブラリに分類し集約することを可能にする。データ管理仮想化システムは、各ストレージ媒体の固有の特徴をうまく利用するためにこれらのプール間でデータを移動することができる。ストレージプールを抽象化することは、種類、物理的位置または基礎をなすストレージ技術に依存しないでアクセスを与える。
第5に、基礎をなすデバイス機能および後の重複排除されるアプリケーションデータを利用して、ストレージプールと災害位置との間のデータの移動を改良する。データ管理仮想化システムは、ストレージプールを備えるストレージシステムの機能を発見し、データを効率的に動かすためにこれらの機能をうまく利用する。ストレージシステムが、データボリュームのスナップショットまたはクローンを生成する機能をサポートするディスクアレイである場合、データ管理仮想化システムは、データを1つの場所から読み出し、そのデータを別の場所に書き込む代わりに、この機能をうまく利用して、スナップショットを使用し、データのコピーを作ることになる。同様に、ストレージシステムが、変化追跡をサポートする場合、データ管理仮想化システムは、新しいコピーを効率的に生成するために変化分だけで古いコピーを更新することになる。ネットワークを通じてデータを移動する際には、データ管理仮想化システムは、ネットワークの他側上で既に利用可能であるデータを送信することを回避する重複排除および圧縮アルゴリズムを使用する。
データ移動を改良する1つの重要な態様は、アプリケーションデータが、時間の経過に伴ってゆっくりと変化することを認識することである。今日作られるアプリケーションのコピーは、一般に、昨日作られた同じアプリケーションのコピーに多くの類似点を有することになる。実際、データの今日のコピーは、一連のデルタ変換を用いて昨日のコピーとして表わされ得、デルタ変換自体のサイズは、通常、コピー自体におけるデータの全てよりもはるかに小さい。データ管理仮想化システムは、ビットマップまたはエクステントリストの形式にこれらの変換を取り込み、記録する。システムの一実施形態では、基礎をなすストレージリソース、つまりディスクアレイまたはサーバ仮想化システムは、ボリュームまたはファイルになされた変化を追跡可能である。これらの環境では、データ管理仮想化システムは、ストレージリソースに問い合わせてこれらの変化リストを取得し、その変化リストを保護されるデータと共に保存する。
データ管理仮想化システムの好適な実施形態では、アプリケーションの1次データアクセス経路上で傍受するための機構があり、その機構は、データ管理仮想化システムが、アプリケーションデータのどの部分が修正されたかを観察し、修正されたデータ自体のビットマップを生成することを可能にする。例えば、アプリケーションが、特定期間の間にブロック100、200および300を修正する場合、データ管理仮想化システムは、これらの事象について傍受し、これらの特定ブロックが修正されたことを示すビットマップを生成することになる。アプリケーションデータの次のコピーを処理する際、データ管理仮想化システムは、ブロック100、200および300だけが修正されたブロックであることを知っているので、これらのブロック100、200および300だけを処理することになる。
システムの一実施形態では、アプリケーション用の1次ストレージが現代のディスクアレイまたはストレージ仮想化アプライアンスであり、データ管理仮想化システムは、データの最初のコピーを作るために、基礎をなすストレージデバイスの一時点スナップショット機能をうまく利用する。この仮想コピー機構は、最初のコピーを生成する迅速な、効率的なかつ低負荷な技術であって、全てのビットがコピーされるか一緒に格納されることになることを保証しない技術である。代わりに、仮想コピーは、例えばコピーオンライトボリュームビットマップまたはエクステントなどの、メタデータおよびデータ構造を保持することによって構築され、そのことは、コピーがアクセス時に再構築されることを可能にする。コピーは、アプリケーションおよび1次ストレージデバイスに与える負荷が軽量である。別の実施形態では、アプリケーションが例えばVMwareまたはXenなどのサーバ仮想化システムに基づいており、データ管理仮想化システムは、サーバ仮想化システムに組み込まれている類似の仮想機械スナップショット機能を使用する。仮想コピー機能が利用可能ではない場合、データ管理仮想化システムは、そのシステム自体に組み込まれているスナップショット機構を含んでもよい。
システムによってサポートされるデータ管理機能の全ての基礎をなす基本データとして、スナップショットを使用することが可能である。スナップショットは軽量であるので、要求された動作がスナップショット自体ではない場合でさえも、スナップショットは内部動作として使用され得る。スナップショットは、他の動作を可能にし容易にするために生成される。
スナップショットを生成する時に、画像がアプリケーションによって使用可能である状態に復元され得るように、整合のとれたスナップショットまたは整合のとれた画像を生成するために必要とされるある一定の準備動作があってもよい。これらの準備動作は、スナップショットが、例えばポリシーに従ってスケジュールされるバックアップコピーなどの、システムにおける複数データ管理機能にわたって影響を及ぼされることになる場合でさえも、1度だけしか実行される必要がない。準備動作はアプリケーション静止状態を含んでもよく、その静止状態は、データキャッシュをフラッシュすることと、アプリケーションの状態をフリーズすることとを含む。その静止状態はまた、当技術分野に知られる他の動作と、完全な画像を保持するために有用な他の動作、例えば画像と共に格納されるアプリケーションからメタデータ情報を収集することとを含んでもよい。
図2は、仮想化データ管理システムが、これらの原理に従って、前に記載したデータライフサイクル要求に対処することができる1つの手法を例示する。
ローカルバックアップ要求を満たすために、一連の効率的なスナップショットが、ローカル高可用性ストレージ202内で作られる。これらのスナップショットのいくつかは、別のコピーを作ることなく、開発/試験要求を満たすように使用される。ローカルバックアップのより長期的な保持のために、コピーが長期ローカルストレージ204の中に効率的に作られ、その長期ローカルストレージは、このインプリメンテーションにおいて、繰り返されるコピーを削減するために重複排除を使用する。長期ストレージ内のコピーは、SLAで適用された保持ポリシー次第で、バックアップとしてアクセスされてもよいし、アーカイブとして取り扱われてもよい。データのコピーは、遠隔バックアップおよび事業継続のための要求を満たすために遠隔ストレージ206に作られ、また、コピーの単一組は両目的を満たす。遠隔バックアップおよび災害復旧のための代替案として、データの更なるコピーが、商業用または私用クラウドストレージプロバイダによってホスト提供されるリポジトリ208に効率的に作られてもよい。
データ管理仮想化システム
図3は、上記原理を実施するデータ管理仮想化システムの高レベル構成要素を例示する。好適には、システムは、以下に更に記載されるこれらの基本機能構成要素を備える。
アプリケーション300は、データを生成し所有する。これは、いくつかのコンピュータを使用するニーズを満たすために、ユーザによってデプロイされているソフトウェアシステム、例えば、電子メールシステム、データベースシステム、または財務報告システムである。アプリケーションは、典型的には、サーバ上で動き、ストレージを利用する。例示を目的として、1つのアプリケーションだけが示されている。現実には、単一のデータ管理仮想化システムによって管理される百個または千個ものアプリケーションが存在してもよい。
ストレージリソース302は、アプリケーションデータがそのアプリケーションデータのライフサイクルを通じて格納される所である。ストレージリソースは、物理的ストレージ資産であり、ユーザがデータストレージ要求に対処するために入手している内部ディスクドライブ、ディスクアレイ、光学式ストレージライブラリおよびテープストレージライブラリ、ならびにクラウドをベースとするストレージシステムを含む。ストレージリソースは、アプリケーションデータのオンラインのアクティブコピーが格納される1次ストレージ310と、例えばバックアップ、災害復旧、アーカイビング、インデックス付け、報告および他の使用などの目的のためにアプリケーションデータの追加コピーが格納される2次ストレージ312とからなる。2次ストレージリソースは、1次ストレージと同じ筺体内に追加ストレージを含むのみならず、同じデータセンタ内に、別の位置に、またはインターネット上に、類似または異なるストレージ技術に基づくストレージを含んでもよい。
1つ以上の管理ワークステーション308は、ユーザが、アプリケーションデータについてのライフサイクルを定義するサービスレベルアグリーメント(SLA)304を規定することを可能にする。管理ワークステーションは、データ管理仮想化システムを設定し、監視し、制御するために使用されるデスクトップコンピュータもしくはラップトップコンピュータまたはモバイルコンピューティングデバイスである。サービスレベルアグリーメントは、アプリケーションデータの二次的コピーの生成、保持、および削除に関連する詳細な事業要求を記録する詳細な規定である。SLAは、単一種類の2次ストレージについてのコピーの頻度および予想される復元時間を表わす伝統的なデータ管理アプリケーションに使用される簡単なRTOおよびRPOをはるかに超えるものである。SLAは、データライフサイクルの規定において複数段階を記録し、2次ストレージの各種類内における均一ではない頻度および保持の規定を可能にする。SLAは、図7により詳しく図示される。
データ管理仮想化機関306は、SLAに規定されるようなアプリケーションデータのライフサイクルの全てを管理する。そのデータ管理仮想化機関は、場合によっては、多数のアプリケーションについての多数のSLAを管理する。データ管理仮想化機関は、管理ワークステーションを通してユーザからの入力を受け取り、アプリケーション1次ストレージリソースを発見するためにアプリケーションとやり取りする。データ管理仮想化機関は、どのデータが保護される必要があるのか、および、どの2次ストレージリソースが保護ニーズを最もうまくかなえるのかに関する決断を下す。例えば、企業が、事業継続目的のためのみならずバックアップ目的のために非常に短い間隔でコピーが作られる必要があるとしてその企業の会計データを指定する場合、その機関は、適切な組のSLAに従って、第1のストレージプールに短い間隔で会計データのコピーを生成することと、また、第2のストレージプールに長い間隔で会計データのバックアップコピーも生成することとを決めてもよい。このことは、ストレージアプリケーションの事業要求によって決定される。
次いで、その機関は、利用可能である際にはストレージリソースの高度な機能を用いてアプリケーションデータのコピーを作る。上記例において、その機関は、ストレージアプライアンスの内蔵された仮想コピー機能またはスナップショット機能を用いて、短い間隔の事業継続コピーをスケジュールしてもよい。データ管理仮想化機関は、SLAに記録された事業要求を満たすためにアプリケーションデータをストレージリソースの間で移動させる。データ管理仮想化機関は、図4により詳しく図示される。
データ管理仮想化システムは、全体として、単一のホストコンピュータシステムまたはアプライアンス内でデプロイされてもよいし、あるいは、そのデータ管理仮想化システムは、1つの論理構成体であってもよいが、汎用および特定目的用システムのネットワーク上に物理的に分配されてもよい。システムのある一定の構成要素はまた、コンピューティングまたはストレージクラウド内でデプロイされてもよい。
データ管理仮想化システムの一実施形態では、データ管理仮想化機関は、耐故障性の、余剰な対のコンピュータ上で複数プロセスとして大規模に動く。データ管理仮想化機関のある一定の構成要素は、アプリケーションサーバ内でアプリケーションの近くを動いてもよい。いくつかの他の構成要素は、ストレージ構造内でまたはストレージシステム自体において、1次および2次ストレージの近くを動いてもよい。管理ステーションは、典型的には、安全なネットワーク上でその機関に接続するデスクトップコンピュータおよびラップトップコンピュータならびにモバイルデバイスである。
データ管理仮想化機関
図4は、本発明のある実施形態に係るデータ管理仮想化機関306の構築的な概要図を例示する。機関306は、以下のモジュールを含む。
アプリケーション特定モジュール402。このモジュールは、アプリケーション300からのメタデータを制御することと収集することとを担当する。アプリケーションメタデータは、例えば、アプリケーションの種類、そのアプリケーションの設定についての詳細、そのアプリケーションのデータストアの位置、そのアプリケーションの現在の動作状態などの、アプリケーションについての情報を含む。アプリケーションの動作を制御することは、例えば、キャッシュされたデータをディスクにフラッシュすることと、アプリケーション入出力をフリーズすることおよび解凍することと、ログファイルを回転することまたは切り捨てることと、アプリケーションをシャットダウンすることおよび再始動することとなどの、行為を含む。アプリケーション特定モジュールは、以下に記載されるサービスレベルポリシー機関406からのコマンドに応答して、これらの動作を実行し、メタデータを送受信する。アプリケーション特定モジュールは、図8に関してより詳細に図示される。
サービスレベルポリシー機関406は、ユーザによって提供されたSLA304に基づいて作動し、アプリケーションデータのコピーの生成、移動および削除に関して決断を下す。各SLAは、1つのアプリケーションの保護に関連する事業要求を記載する。サービスレベルポリシー機関は、各SLAを解析し、アプリケーションデータを1つのストレージ位置から別のストレージ位置にコピーすることをそれぞれ伴う一連の動作を成し遂げる。次いで、サービスレベルポリシー機関は、優先度および従属性を判断するためにこれらの動作を再検討し、データ移動作業をスケジュールして開始する。サービスレベルポリシー機関は、図9に関してより詳細に図示される。
オブジェクトマネージャおよびデータ移動機関410は、アプリケーションデータと、アプリケーションメタデータと、SLAとからなる複合オブジェクトであって、ポリシー機関からの命令ごとに異なるストレージプールを通って移動する複合オブジェクトを生成する。オブジェクトマネージャは、サービスポリシー機関406からコマンドの形態で命令を受信し、アプリケーション300に属している生の1次データ413に基づいて、または、別のプール、例えば415に存在するコピーから、特定プールにアプリケーションデータのコピーを生成する。オブジェクトマネージャおよびデータ移動機関によって生成される複合オブジェクトのコピーは、そのコピーがアプリケーションデータのみならず、アプリケーションメタデータおよびアプリケーション用SLAをも包含するという点で、自己充足式および自己記述式である。オブジェクトマネージャおよびデータ移動機関は、図5に関してより詳細に図示される。
ストレージプールマネージャ412は、基礎をなす物理的ストレージリソース302を適合させ抽象化し、その物理的ストレージリソースを仮想ストレージプール418として示す構成要素である。物理的ストレージリソースは、例えばユーザがユーザのアプリケーションのデータのライフサイクルをサポートする目的でデプロイしているディスクアレイおよびテープライブラリなどの、実際のストレージ資産である。これらのストレージリソースは、様々なストレージ技術、例えばディスク、テープ、フラッシュメモリまたは光学式ストレージなどに基づいていてもよい。ストレージリソースはまた、様々な地理的位置、費用および速度属性を有していてもよいし、様々なプロトコルをサポートしてもよい。ストレージプールマネージャの役割は、ストレージリソースを組み合わせて集約することと、それらのストレージリソースのプログラミングインターフェース間の差分を覆い隠すことである。ストレージプールマネージャは、アプリケーションデータのライフサイクルにおける特定段階に適したこれらのプールを作る特徴を有するストレージプールの組として、物理的ストレージリソースをオブジェクトマネージャ410に示す。ストレージプールマネージャは、図6に関してより詳細に図示される。
オブジェクトマネージャおよびデータ移動機関
図5は、オブジェクトマネージャおよびデータ移動機関410を例示する。オブジェクトマネージャおよびデータ移動機関は、プールマネージャ504によってそのオブジェクトマネージャに示された仮想ストレージリソース510を発見して使用する。そのオブジェクトマネージャは、サービスレベルポリシー機関406からの要求を受け入れ、仮想ストレージプール内のリソースからのデータストレージオブジェクトインスタンスを生成して保持し、そのオブジェクトマネージャは、サービスレベルポリシー機関からの命令に従って、仮想ストレージプールからのストレージオブジェクトのインスタンスの中からアプリケーションデータをコピーする。コピー用に選択されたターゲットプールは、選択されている事業動作、例えばバックアップ、レプリケーションまたは復元を暗黙のうちに指定する。サービスレベルポリシー機関は、(同一システム上の)オブジェクトマネージャの近くにまたは遠隔にあり、標準ネットワーク通信上でプロトコルを用いて通信する。TCP/IPは、好適な実施形態において使用されてもよいし、よく理解されるように、広く利用可能であってもよいし、サービスレベルポリシー機関が、オブジェクトマネージャの近くにまたはわずかな修正で遠隔に位置することを可能にする。
一実施形態では、システムは、インプリメンテーションの容易さのために、オブジェクトマネージャと同じコンピュータシステム上でサービスレベルポリシー機関をデプロイしてもよい。別の実施形態では、システムは、アプリケーションのために有益または便利である場合、設計を変更することなく、下位の組の構成要素をそれぞれホスト提供する、複数システムを用いてもよい。
オブジェクトマネージャ501およびストレージプールマネージャ504は、ユーザのアプリケーションがあるストレージリソースを使用するコンピュータシステムと、それらのストレージリソースとを相互接続するコンピュータシステムプラットフォーム上にあり得るソフトウェア構成要素である。相互接続プラットフォーム上のこれらのソフトウェア構成要素の配置は、好適な実施形態として指定され、そのようなアプリケーション(例えば、ファイバチャネル、iSCSIなど)のために広く使用される通信プロトコルによって顧客システムをストレージに接続する能力を与えてもよいし、また、様々なソフトウェア構成要素のデプロイメントの容易さを与えてもよい。
オブジェクトマネージャ501およびストレージプールマネージャ504は、プラットフォームによって利用可能とされたアプリケーションプログラミングインターフェース経由で、基礎をなすストレージ仮想化プラットフォームと通信する。これらのインターフェースは、ソフトウェア構成要素が、コンピュータシステムの挙動を、および、どのようにそのインターフェースがストレージリソースとユーザのアプリケーションがあるコンピュータシステムとを相互接続するかを、問い合わせて制御することを可能にする。その構成要素は、所与のプラットフォームに特有の相互通信コードの置き換えを可能にするために、実際に普通にあるような、モジュラリティ技術を利用する。
オブジェクトマネージャおよびストレージプールマネージャは、プロトコルによって通信する。これらは、標準ネットワークプロトコル、例えばTCP/IP、または、典型的にはコンピュータシステム上で利用可能な標準プロセス間通信(IPC)機構上で送信される。このことは、それらの構成要素が同じコンピュータプラットフォーム上またはネットワークにより接続された複数コンピュータプラットフォーム上にある場合、特定コンピュータプラットフォームに依存して、構成要素間で類似の通信を可能にする。現行の構成は、デプロイメントの容易さのために同じコンピュータシステム上にあるローカルソフトウェア構成要素の全てを有する。このことは、上記のような設計の要求を制限するものではなく、必要に応じて将来再構成され得る。
オブジェクトマネージャ
オブジェクトマネージャ501は、データストレージオブジェクトを保持するためのソフトウェア構成要素であり、そのソフトウェア構成要素を制御するためにプロトコル動作の組を提供する。その動作は、オブジェクトの間でのデータの生成、破壊、複製、およびコピーを含み、オブジェクトへのアクセスを保持し、特に、コピーを生成するために使用されるストレージプールの特定を可能にする。全てのプールによってサポートされる機能の共通の下位の組はない。しかしながら、好適な実施形態では、1次プールは、性能を最適化されてもよく、すなわち待ち時間が少なく、その一方で、バックアップまたはレプリケーションプールは、容量を最適化されてもよく、大量のデータおよび内容参照可能をサポートする。プールは、遠隔またはローカルであってもよい。ストレージプールは、様々な基準に従って分類され、ユーザが、例えばストレージのギガバイト毎の費用などの事業決断を下し得る手段を含む。
第1に、装置が様々な事業目的のために割り当てられるので、ストレージが引き出される特定のストレージデバイスは、関係のある費用および他の実用上の考慮事項と共に、考慮事項であり得る。いくつかのデバイスは、実際のハードウェアでさえないことがあるが、サービスとして提供される容量であり得、そのようなリソースの選択は、実用上の事業目的のために行われ得る。
第2に、近くのストレージは、典型的には、少ない待ち時間の、安価なネットワークリソースにより接続される一方で、遠くのストレージは、長い待ち時間の、帯域幅が制限された高価なネットワークリソースにより接続され得るため、ネットワークトポロジー上の「近接性」が考慮される。逆に、ソースに関するストレージプールの距離は、地理的相違がローカルリソースに影響を及ぼす物理的災害から保護する場合に有益であり得る。
第3に、ストレージ最適化特徴が考慮される。ここで、いくつかのストレージは、ストレージの空間効率をよくするために最適化されるが、データが格納され得る前にデータを解析するか変換するために計算時間およびリソースを要求し、その一方で、これに比べて他のストレージは、「性能を最適化され」、これに比べてより多くのストレージリソースを取るが、仮にそうであるとしても、データを変換するために比較的短い計算時間またはリソースを使用する。
第4に、「アクセスの速度」特徴が考慮され、ここで、ストレージコンピュータプラットフォームに固有のリソースのいくつかは、容易にかつ迅速にユーザのアプリケーションに、例えば仮想SCSIブロックデバイスとして、利用可能になるものの、いくつかは間接的にのみ使用され得る。復旧のこれらの容易性および速度は、使用されるストレージの種類によって支配されることが多く、このことは、それが適切に分類されることを可能にする。
第5に、使用されるストレージ容量を集中させることまたは分配することに役に立ち得るので、使用されるストレージの量および所与のプールにおいて利用可能な量が考慮される。
以下に記載されるサービスレベルポリシー機関は、どのようにおよびいつアプリケーションデータを保持するかと、どのストレージプールからサービスレベルアグリーメント(SLA)にかなう必要とされるリソースを引き出すかとを判断するために、ユーザによって提供されるSLAを分類基準と組み合わせる。
オブジェクトマネージャ501は、実行プール内のデータオブジェクト上で実行される一連の動作を追跡するために、および、オブジェクトを他のストレージプールに移動するその他のもの、特に容量を最適化されたものとそれらの一連の動作を相関付けるために、履歴機構を生成し、保持し、用いる。各データオブジェクトについてのこの一連の記録は、1次データオブジェクトによって最初に相関付けられ、次に動作順序、すなわち、各オブジェクトについての時系列およびそのような時系列の全てのリストによって相関付けられた1次プール内の全データオブジェクトについてオブジェクトマネージャで保持される。実行される各動作は、所与の時点におけるデータオブジェクトの状態を取り込むために、基礎をなす仮想化基本を活用する。
それに加えて、基礎をなすストレージ仮想化アプライアンスは、データオブジェクト内のデータの一部の修正を示す、例えばビットマップなどの、内部データ構造の回復を受けさせたり可能にしたりするために、修正されてもよい。これらのデータ構造は、ある一時点におけるデータオブジェクトの状態、例えばデータオブジェクトのスナップショットを取り込むために、および、規定の時間に取られるスナップショット間の差分を与えるために活用され、それによって、最適なバックアップおよび復元を可能にする。特定のインプリメンテーションおよびデータ構造が、異なるベンダからの異なるアプライアンスの間で変化してもよいが、一方で、データ構造は、データオブジェクトの変化を追跡するために用いられ、ストレージは、変化したオブジェクトの部分、すなわち、ストレージに保持されたデータに対応するデータ構造における指示、の元の状態を保持するために用いられる。スナップショットにアクセスする際に、データ構造は考慮され、変化している部分のために、保存されたデータは、データオブジェクトが、指示されるような領域で修正されているので、現データの代わりにアクセスされる。用いられる典型的なデータ構造は、各ビットがデータオブジェクトのセクションに対応する、ビットマップである。ビットを設定することは、スナップショット動作の時点の後にセクションが修正されていることを示す。基礎をなすスナップショット基本機構は、スナップショットオブジェクトが存在する限りこれを保持する。
上記した時系列は、所与の1次データオブジェクトに対するスナップショット動作のリストを保持し、動作が開始された時間、その動作が停止した時間(仮にそうである場合)、スナップショットオブジェクトへの参照、および内部データ構造(例えば、ビットマップまたはエクステントリスト)への参照を含み、そのため、そのリストは、基礎をなすシステムから取得され得る。更に保持されるものは、別のプールの中への任意の所与の時点におけるデータオブジェクトの状態をコピーすること、例として、オブジェクトハンドルにおける内容参照可能結果を用いて、容量を最適化されたプール407の中へのデータオブジェクトの状態をコピーすること、の結果への参照である。そのオブジェクトハンドルは、所与のスナップショットに対応し、時系列におけるスナップショット動作と共に格納される。この相関付けは、適切な開始点を識別するために使用される。
最適なバックアップおよび復元は、所望の開始点から終了点までの動作のリストを考慮する。開始から終了までの連続的な時系列が実現されるように、動作の時間順のリストおよびそれの対応するデータ構造(ビットマップ)が構築される。その時系列において動作の開始時間の間に隔たりはない。このことは、データオブジェクトの全変化が、対応するビットマップデータ構造によって表わされることを確実にする。開始から終了までの全動作を検索する必要はない。同時に存在するデータオブジェクトおよび基礎をなすスナップショットは、時間が重複する。追跡されなかった変化が生じていたかもしれない時間に隔たりがないことだけが必要である。ビットマップは、ストレージのある一定のブロックが変化していることを示すが、何が変化であるかは示さないので、ビットマップは、その時間間隔に生じた全変化の組を具体化するために共に追加されるか構成されてもよい。ある一時点における状態にアクセスするためにこのデータ構造を用いる代わりに、システムは、データ構造が、時間が前に進むにつれて修正されたデータを表わすという事実を代わりに活用する。むしろ、データオブジェクトの終了状態は、指示された領域でアクセスされるので、所与の開始時間から終了時間までの所与のデータオブジェクトへの変化の組を戻す。
バックアップ動作は、当バックアップ動作を実現するために、この時系列、相関参照、および内部データ構造へのアクセスを活用する。同様に、そのバックアップ動作は、当復元動作を成し遂げるために、補足的なやり方でシステムを使用する。特定のステップは、「最適なバックアップ/復元」についての項目において以下に記載される。
仮想ストレージプールの種類
図5は、いくつかの代表的なストレージプールの種類を例示する。1つの1次ストレージプールおよび2つの2次ストレージプールが図中に描かれるが、より数多くのプールが、いくつかの実施形態において配置されてもよい。
1次ストレージプール507は、データオブジェクト生成するために使用されるストレージリソースを含み、ユーザアプリケーションは、そのアプリケーションのデータをそのストレージリソースに格納する。このことは、他のストレージプールとは対照的であり、他のストレージプールは、データ管理仮想化機関の動作を主として遂行するためにある。
性能を最適化されたプール508は、高性能バックアップ(すなわち、以下に記載される、一時点複製)を提供することのみならず、ユーザアプリケーションによるバックアップ画像への迅速なアクセスを与えることができる仮想ストレージプールである。
容量を最適化されたプール509は、以下に記載される重複排除技術の使用によって空間に関して高効率的な手法で、データオブジェクトのストレージを主として提供する仮想ストレージプールである。その仮想ストレージプールは、データオブジェクトのコピーへのアクセスを与えるが、上記の性能を最適化されたプールとは対照的に、その主とした目的のように高性能をもたらさない。
最初のデプロイメントは、上記したようなストレージプールを最小限の動作可能な組として含む。その設計は、上記で例示された基準の様々な組み合わせを表わす様々な種類の複数プールと、将来のデプロイメントにおけるストレージの全てを表わすために便利であるような複数プールマネージャとを十分に予測する。上記で例示されたトレードオフは、コンピュータデータストレージシステムの典型である。
実用上の観点から、これらの3つのプールは、好適な実施形態を表わし、大部分のユーザの要求に非常に簡単な手法で対処する。大部分のユーザは、ユーザが、緊急の復元の必要性のためのストレージの1つのプールであって、迅速な復旧をもたらすプールと、費用の安い他の1つのプールとを有する場合、それによって、多数の画像が長期間にわたって保持されることができ、データ保護についての事業要求のほぼ全ては、わずかな妥協案でかなえられ得ることを見出し得る。
各プールにおけるデータの形式は、プール内で使用される目標および技術によって規定される。例えば、迅速復旧プールは、必要とされた変換を最小限にするためにおよび復旧の速度を向上するために、元のデータに非常に類似した形態で保持される。その一方で、長期ストレージプールは、重複排除および圧縮を使用し、データのサイズを縮小し、これによりストレージの費用を削減する。
オブジェクト管理動作505
オブジェクトマネージャ501は、サービスレベルポリシー機関406によってそのオブジェクトマネージャに送信された命令に従って仮想ストレージプール418からのデータストレージオブジェクト503のインスタンスを生成し保持する。オブジェクトマネージャは、5つの主な領域にデータオブジェクト動作、すなわち、一時点における複製またはコピー(「スナップショット」として一般に呼ばれる)、標準コピー、オブジェクト保守、マッピングおよびアクセス保守、ならびに収集をもたらす。
オブジェクト管理動作はまた、仮想ストレージプール自体を保持するためにおよびそれらの仮想ストレージプールについての情報を検索するために一連のリソース発見動作を含む。プールマネージャ504は、これらについての機能を最終的に供給する。
一時点におけるコピー(「スナップショット」)動作
スナップショット動作は、規定の時点における最初のオブジェクトインスタンスを表わすデータオブジェクトインスタンスを生成する。より詳細には、スナップショット動作は、規定の仮想ストレージプールのリソースを用いて収集の要素の完全な仮想コピーを生成する。これは、データストレージオブジェクトと呼ばれる。データストレージオブジェクトの複数状態は、そのデータストレージオブジェクトがある一時点で存在していた際のデータストレージオブジェクトの状態が利用可能であるように、時間の経過に伴って保持される。上記したように、仮想コピーは、基礎をなすストレージ仮想化APIを用いて実施されるコピーであり、その仮想化APIは、複製データの全ビットをディスクにコピーし格納する代わりにコピーオンライトまたは他の帯域内技術を用いて、コピーが軽量の形で生成されることを可能にする。このことは、いくつかの実施形態ではEMC、vmwareまたはIBMによって提供されるような既製の、基礎をなすストレージ仮想化システムの機能にアクセスするために書き込まれたソフトウェアモジュールを用いて実施されてもよい。そのような基礎をなす仮想化が利用可能ではない場合、記載されたシステムは、愚鈍なハードウェアとインターフェースをとるためにそのシステム自体の仮想化層を提供してもよい。
画像データが明瞭であるように、および、スナップショットが、スナップショットの時間におけるアプリケーションの状態を復元するために後で使用されてもよいように、スナップショット動作は、データの状態を規定の点にフリーズすることをアプリケーションに要求する。他の準備ステップもまた要求されてもよい。これらは、アプリケーション特定モジュール302によって処理され、そのアプリケーション特定モジュールは、後続の段落に記載される。生のアプリケーションのために、したがって、最も軽量な動作が望まれる。
スナップショット動作は、システムにおける全ての高レベル動作のための基本データとして使用される。事実上、そのスナップショット動作は、特定の時点におけるデータの状態へのアクセスを与える。同様に、スナップショットは、典型的には、変化したものをディスク上にあるものと区別するコピーオンライト技術を用いて実施されるので、これらのスナップショットは、システム全体にわたってデータを効率的にコピーするためにまた共に構成され得る差分または追加され得る差分を提供する。スナップショットの形式は、以下に記載されるデータムーバー502によってコピーされるデータの形式であってもよい。
標準コピー動作
コピー動作がスナップショットではない場合、そのコピー動作は標準コピー動作と考えられ得る。標準コピー動作は、1つのストレージプールにおけるソースデータオブジェクトの全てまたは下位の組を別のストレージプールにおけるデータオブジェクトにコピーする。その結果は、2つの別個のオブジェクトになる。使用され得る標準コピー動作の1つの種類は、最初の「ベースライン」コピーである。これは、典型的には、データが、1つの仮想ストレージプールから別の仮想ストレージプールに、例えば性能を最適化されたプールから容量を最適化されたストレージプールに、最初にコピーされる際に行われる。標準コピー動作の別の種類が使用されてもよく、その別の種類では、変化したデータまたは差分だけが、ターゲットオブジェクトを更新するためにターゲットストレージプールにコピーされる。これは、最初のベースラインコピーが前もって実行された後に行われることになる。
ベースラインコピーは、データ仮想化システムが最初に初期化されたときに必要とされるけれども、オブジェクトの完全な包括的なバージョンは、コピーが作られるたびにシステムに保存される必要はない。これは、各仮想コピーが完全なコピーへのアクセスを与えるからである。任意のデルタまたは差分は、ベースラインに関連して表わされる代わりに仮想コピーに関連して表わされ得る。このことは、一連の変化リストを歩み通る共通ステップを仮想的に排除するというプラスの副次的作用がある。
標準コピー動作は、プールマネージャにより供給されデータムーバーにより受信された一連の命令または要求によって始動され、データストレージオブジェクトの間でデータの移動をもたらし、データストレージオブジェクト自体を保持する。コピー動作は、規定の仮想ストレージプールのリソースを用いて規定のデータストレージオブジェクトのコピーの生成を可能にする。その結果、ストレージプール内のターゲットデータオブジェクトにおけるソースデータオブジェクトのコピーとなる。
スナップショット動作およびコピー動作は、準備動作および起動動作でそれぞれ構成される。準備および起動の2つのステップは、作動から切り離される、準備段階の典型である、長期間続くリソース割り当て動作を可能にする。このことは、スナップショット動作の一時点特徴を満たすために短い間に一時停止だけされ得るアプリケーションによって必要とされ、そのスナップショット動作は、現実には達成するために有限の時間ではあるがゼロではない時間がかかる。コピー動作およびスナップショット動作と同様に、この2つのステップの準備および作動構成は、収集要素の全てのためにリソースが割り当てられ得る場合にのみ、ポリシー機関が動作を進めることを可能にする。
オブジェクト保守
オブジェクト保守動作は、データオブジェクトを保持するための一連の動作であり、生成、破壊、および複製を含む。オブジェクトマネージャおよびデータムーバーは、プール要求仲介役(より多くは以下に)によって提供された機能を使用して、これらの動作を実施する。データオブジェクトは、広域レベルに、各ストレージプールに、または好適にはその両方に保持されてもよい。
収集
収集動作は補助機能である。収集は、抽象的なソフトウェア概念であり、オブジェクトマネージャによりメモリに保持されたリストである。その収集は、ポリシー機関206が、収集における要素の全てにわたる一連の動作を要求することを可能にし、全ての要素への要求の一致したアプリケーションを可能にする。収集を使用することは、一時点スナップショットの同時起動を可能にさせ、それによって、複数データストレージオブジェクトが正確に同じ時点で全て取り込まれ、これは、典型的には、論理的に正確な復元のためのアプリケーションによって必要とされるからである。収集を使用することは、収集の全ての要素にわたってコピー動作を便利に要求することを可能にし、この場合には、アプリケーションが、論理的に全体として複数ストレージオブジェクトを使用することになる。
リソース発見動作
オブジェクトマネージャは、オブジェクト管理動作505をプールマネージャ504に発行することによって仮想ストレージプールを発見し、所与の要求のために必要とされた基準にかなう1つを選択するためにプールのそれぞれについて取得された情報を使用するか、あるいは、不一致の場合には、デフォルトのプールが選択され、次いで、オブジェクトマネージャは、選択された仮想ストレージプールからリソースを用いてデータストレージオブジェクトを生成することができる。
マッピングおよびアクセス
オブジェクトマネージャはまた、オブジェクト管理動作の組を提供し、外部アプリケーションに対してこれらのオブジェクトの利用可能性を与えて保持する。第1の組は、ユーザのアプリケーションがあるコンピュータを登録するためおよび登録解除するための動作である。コンピュータは、使用中、ストレージネットワークに典型的な識別情報(例えば、ファイバチャネルWWPN、iSCSI識別情報、など)によって登録される。第2の組は、「マッピング」動作であり、オブジェクトがストレージプールから生成される当該ストレージプールによって許可されると、データストレージオブジェクトは、「マップされる」ことができ、つまり、ユーザアプリケーションがコンピュータ上にある当該コンピュータを使用するために利用可能になり得る。
この利用可能性は、ストレージ、例えば、ネットワーク上のファイバチャネルディスクまたはiSCSIデバイスとしてSAN上にあるブロックデバイス、ファイル共有ネットワーク上のファイルシステム等の適切な形態を取り、アプリケーションコンピュータ上の動作システムによって使用可能である。同様に、「マッピング解除」動作は、ユーザアプリケーションに対してネットワーク上の仮想ストレージデバイスの利用可能性を逆にする。このようにして、1つのアプリケーションのために格納されたデータ、すなわちバックアップは、後で、すなわち復元で、別のコンピュータ上の別のアプリケーションに利用可能になり得る。
データムーバー502
データムーバー502は、オブジェクトマネージャ内のソフトウェア構成要素であり、スナップショット(一時点)コピー要求および標準コピー要求のためにオブジェクトマネージャから受信された命令に従って、様々なデータストレージオブジェクト503の間でデータを読み書きするデータムーバーである。データムーバーは、システムの全体にわたってデータオブジェクトのインスタンスの間でデータを読み書きするための動作を提供する。データムーバーはまた、オブジェクトマネージャがそのデータムーバーに実行するよう要求している長期間続く動作の状態を問い合わせて保持することを可能にする動作も提供する。
データムーバーは、そのデータムーバーの動作を遂行するためにプール機能プロバイダ(図6を参照)からの機能を使用する。スナップショット機能プロバイダ608は、規定の時点における最初のオブジェクトインスタンスを表わすデータオブジェクトインスタンスの生成を可能にする。差分機関機能プロバイダ614は、時間的連鎖に関連する2つのデータオブジェクト間の差分の記述を要求するために使用される。内容参照可能プール上に格納されたデータオブジェクトのために、あらゆる2つの任意のデータオブジェクト間の差分を提供し得る特別な機能が与えられる。この機能はまた、基礎をなすストレージ仮想化システムによるいくつかの場合において、および、商品ストレージの上部上でこれを実施するモジュールによる他の場合において、性能を最適化されたプールのために提供される。データムーバー502は、そのデータムーバーが、データオブジェクト503のインスタンス間をコピーするデータの組を選択するために差分についての情報を使用する。
所与のプールについて、差分機関プロバイダは、時間の経過に伴ってデータストレージオブジェクトの2つの状態間の差分の特定の表示を提供する。スナップショットプロバイダの場合、2つの時点間の変化が、書き込みとしてデータストレージオブジェクトの所与の部分に記録される。一実施形態では、差分は、ビットマップとして表示され、ここで、各ビットは、データオブジェクト領域の順序付けられたリストに対応し、最初に始まり最後まで昇順であり、この場合、ビットの組は修正された領域を示す。このビットマップは、基礎をなすストレージ仮想化システムにより使用されるコピーオンライトビットマップから導き出される。別の実施形態では、差分は、データの変化した領域に対応する範囲のリストとして表示されてもよい。内容参照可能ストレージプロバイダ610の場合、その表示は、以下に記載され、相違する2つの内容参照可能データオブジェクトの部分を効率的に判断するために使用される。
データムーバーは、相違するこれらのセクションだけをコピーするためにこの情報を使用し、それにより、データオブジェクトの新しいバージョンは、存在するバージョンをまず複製することと、差分のリストを取得することと、次いで、リスト内のこれらの差分に対応するデータのみを動かすこととによって、存在するバージョンから生成されることができる。データムーバー502は、差分のリストを横断し、指示された領域をソースデータオブジェクトからターゲットデータオブジェクトに動かす(データバックアップおよび復元のための最適な手法を参照)。
506コピー動作‐要求変換および命令
オブジェクトマネージャ501は、仮想ストレージプール418におけるデータオブジェクトの間でデータをコピーするように一連の動作を通してデータムーバー502に指示する。その手順は、以下のステップを含み、命令の受信で始まる。
第1に、収集要求を生成する。収集の名前は戻される。
第2に、収集のためにオブジェクトを追加する。上記の収集名は、コピーされるソースデータオブジェクトの名前のみならず、2つの先祖(antecedent)、すなわち、差分がソースストレージリソースプールにおいてデータオブジェクトに対して取られる当該データオブジェクトと、ターゲットストレージリソースプールにおいて対応するデータオブジェクトとの名前に使用される。このステップは、この組において操作される各ソースデータオブジェクトについて繰り返される。
第3に、コピー要求を準備する。収集名は、ターゲットとしての役割を果たすためにストレージリソースプールと共に供給される。準備コマンドは、収集におけるソースのそれぞれに対応する必要なターゲットデータオブジェクトを生成するためにオブジェクトマネージャにストレージプールマネージャと交信することを命令する。準備コマンドはまた、複製されるターゲットストレージリソースプール内の対応するデータオブジェクトを供給するので、プロバイダは、提供されたオブジェクトを複製し、その複製をターゲットオブジェクトとして使用することができる。コピー要求のための参照名は戻される。
第4に、コピー要求を発動する。上記の戻されたコピー要求のための参照名が供給される。データムーバーは、所与のソースオブジェクトをそのソースオブジェクトの対応するターゲットオブジェクトにコピーするように命令される。各要求は、参照名のみならず、全部のジョブ(ソースターゲットペアの全部の組)を記載するシーケンス番号、ならびに、各個別のソースターゲットペアのそれぞれを記載するシーケンス番号を含む。ソースターゲットペアに加えて、対応する先祖の名前が、コピー命令の一部として供給される。
第5に、コピー機関は、ソースにおける差分機関から先祖とソースとの間の差分を得るためにソースプールにおけるデータオブジェクトの名前を使用する。次いで、指示された差分はソースからターゲットに送信される。一実施形態では、これらの差分は、ビットマップおよびデータとして送信される。別の実施形態では、これらの差分は、エクステントリストおよびデータとして送信される。
503データストレージオブジェクト
データストレージオブジェクトは、コンピュータデータ処理装置およびソフトウェアによく知られた表現形式(idiom)および方法を使用してアプリケーションデータのストレージおよび回復を許可するソフトウェア構成体である。実際には、これらは、現在、例えばSCSI LUNなどのストレージネットワークまたは内容参照可能コンテナ上のSCSIブロックデバイスの形態を取り、この場合、内容のための指示子は、その中のデータから構築され、その中のデータを一意的に識別する。データストレージオブジェクトは、命令をプールマネージャに発行することによって生成され保持される。アプリケーションデータを持続するための実際のストレージは、仮想ストレージプールから取り出され、データストレージオブジェクトは、その仮想ストレージプールから生成される。
データストレージオブジェクトの構造は、ストレージプールに依存して変化し、そのデータストレージオブジェクトの構造は、そのストレージプールから生成される。ストレージネットワーク上のブロックデバイスの形態を取るオブジェクトの場合、所与のブロックデバイスデータオブジェクトのためのデータ構造は、デバイス識別子についてのデータオブジェクト内のブロックのそれぞれの論理ブロックアドレス(LBA)と、実際のストレージ位置のLBAとの間のマッピングを実施する。データオブジェクトの識別子は、使用されるマッピングの組を識別するために使用される。現在の実施形態は、このマッピングを実施するために、基礎をなす物理的コンピュータプラットフォームにより提供されるサービスに依存するし、例えばビットマップまたはエクステントリストなどのそのデータオブジェクトの内部データ構造に依存する。
内容参照可能コンテナの形態を取るオブジェクトの場合、内容署名が識別子として使用され、データオブジェクトは、重複排除についての段落において以下に記載されるように格納される。
504プールマネージャ
プールマネージャ504は、以下に記載されるような仮想ストレージリソースならびに関連付けられた機能および特徴を管理するためのソフトウェア構成要素である。オブジェクトマネージャ501およびデータ移動機関502は、データストレージオブジェクト503を保持するために1つ以上のプールマネージャ504と通信する。
510仮想ストレージリソース
仮想ストレージリソース510は、以下に記載されるように、ストレージプール機能を実施するためにプールマネージャに利用可能となった様々な種類のストレージである。この実施形態では、ストレージバーチュアライザが、様々な外部ファイバチャネルまたはiSCSIストレージLUNを仮想化されたストレージとしてプールマネージャ504に表示するために使用される。
ストレージプールマネージャ
図6は、ストレージプールマネージャ504を更に例示する。ストレージプールマネージャの目的は、基礎をなす仮想ストレージリソースをオブジェクトマネージャ/データムーバーにストレージリソースプールとして表示することであり、そのストレージリソースプールは、システムの他の構成要素により利用される共通インターフェースを伴うストレージおよびデータ管理機能の抽象物である。これらの共通インターフェースは、典型的には、規定の時間的状態と関連付けられたデータオブジェクトを識別して参照するための機構と、ビットマップまたはエクステントの形態にあるデータオブジェクト間の差分を生成するための機構とを含む。この実施形態では、プールマネージャは、1次ストレージプール、性能を最適化されたプール、および容量を最適化されたプールを示す。共通インターフェースは、オブジェクトマネージャが、他のデータストレージオブジェクトのコピーとしてまたは新しいオブジェクトとして、これらのプールにおいてデータストレージオブジェクトを生成したり削除したりすることを可能にし、データムーバーは、データストレージオブジェクト間でデータを移動することができるし、データオブジェクト差分動作の結果を使用することができる。
ストレージプールマネージャは、類似の機能の種々のインプリメンテーションに共通インターフェースを実装するための典型的なアーキテクチャを有し、この場合、いくつかの機能が「スマートな」基礎をなすリソースによって提供され、他の機能は、あまり機能的ではない基礎をなすリソースの上部上で実施されなければならない。
プール要求仲介役602およびプール機能プロバイダ604は、オブジェクトマネージャ/データムーバーと同じプロセスにおいて、またはTCPなどのローカルもしくはネットワークプロトコル経由で通信する別のプロセスにおいて、実行されるソフトウェアモジュールである。この実施形態では、プロバイダは、1次ストレージプロバイダ606、スナップショットプロバイダ608、内容参照可能プロバイダ610、および差分機関プロバイダ614を含み、これらは以下に更に記載される。別の実施形態では、プロバイダの組は、ここに示されるプロバイダの上位の組であってもよい。
仮想ストレージリソース510は、ストレージプール機能を実施するためにプールマネージャに利用可能となった異なる種類のストレージである。この実施形態では、仮想ストレージリソースは、プールマネージャと同じハードウェア上で動くストレージ仮想化システムからのSCSI論理単位であって、(データおよび管理動作の両方のために)プログラムのインターフェースを通してアクセス可能であるSCSI論理単位の組を含む。標準ブロックストレージ機能に加えて、スナップショットを生成したり削除したりすることと、ボリュームの変化した部分を追跡することとを含む追加的機能が、利用可能である。別の実施形態では、仮想リソースは、類似の機能を露出する外部ストレージシステムからのものであり得るし、(例えば、ファイルシステムを通して、またはCIFS、iSCSIもしくはCDMIなどのネットワークインターフェースを通して、アクセスされる)インターフェース、(例えば、リソースが、コピーオンライトスナップショットを作るために動作をサポートするかどうかという)機能、あるいは(例えば、SATAディスクなどの低速/大容量に対してソリッドステートディスクなどの高速/限定された容量などの)非機能的態様の点が異なってもよい。その機能および利用可能なインターフェースは、どのプロバイダが仮想ストレージリソースを消費し得るか、および、どのプール機能が1つ以上のプロバイダによってプールマネージャ内で実施される必要があるかを判断する。例えば、内容参照可能ストレージプロバイダのこのインプリメンテーションは「ダム(dumb)」ストレージだけを必要とし、そのインプリメンテーションは、完全に内容参照可能プロバイダ610の範囲内にある。基礎をなす内容参照可能仮想ストレージリソースは、より簡単な「パススルー」プロバイダを用いて代わりに使用され得る。逆に、スナップショットプロバイダのこのインプリメンテーションは、ほとんど「パススルー」であり、迅速な一時点コピー動作を露出するストレージを必要とする。
プール要求仲介役602は、構成された仮想ストレージリソース510に対してプール機能プロバイダの適切な組を実行することによって、ストレージプール特定機能についての要求を提供する簡単なソフトウェア構成要素である。提供され得る要求は、オブジェクトをプールに生成することと、オブジェクトをプールから削除することと、データをオブジェクトに書き込むことと、データをオブジェクトから読み取ることと、プール内のオブジェクトをコピーすることと、プール間でオブジェクトをコピーすることと、プールにおける2つのオブジェクト間の差分の要約を要求することとを含むが、これらに限定されない。
1次ストレージプロバイダ606は、仮想ストレージリソースに対する管理インターフェース(例えば、スナップショットを生成したり削除したりすること、ファイルの変化した部分を追跡すること)を可能にし、その仮想ストレージリソースはまた、例えばファイバチャネル、iSCSI、NFSまたはCIFSなどのインターフェース経由でアプリケーションに直接的に露出される。
スナップショットプロバイダ608は、1次リソースプールからデータの一時点コピーを作る機能を実施する。このことは、スナップショットで占められた別のリソースプールの抽象物を生成する。実施される際、この管理機能は、1次ストレージのためにおよびスナップショットプロバイダのために使用される仮想ストレージリソースによって露出されるので、一時点コピーは、1次リソースプールからのオブジェクトのコピーオンライトスナップショットであり、コピーオンライトコピーを収容するために第2の仮想ストレージリソースを消費する。
差分機関プロバイダ614は、比較されるプールにおける2つのオブジェクトであって、時間的連鎖で接続された2つのオブジェクトのための要求を満たすことができる。2つのオブジェクト間の差分セクションは、例えばビットマップまたはエクステントを用いて、プロバイダの特定の手法で識別され要約される。例えば、差分セクションは、ビットマップとして表わされてもよく、ここで、ビットの各組は、2つのオブジェクトが異なる固定されたサイズ領域を示す。あるいは、その差分は、一連の関数呼び出しまたはコールバックとして手順上表わされてもよい。
プールが仮想ストレージリソースに基づく当該仮想ストレージリソース次第で、あるいはプールを実施する他のプロバイダ次第で、差分機関は、様々な手法で結果を効率的にもたらしてもよい。実施される際、スナップショットプロバイダ経由で実施されるプール上で作用する差分機関は、作られたスナップショットを有していたオブジェクトの変化を追跡するためにスナップショットプロバイダのコピーオンライト性質を使用する。したがって、単一の変化している1次オブジェクトの連続したスナップショットは、スナップショットプロバイダによってスナップショットに並んで格納された差分の記録を有する。更に、スナップショットプールのための差分機関は、変化のこの記録を単に検索する。また、実施される際に、内容参照可能プロバイダ経由で実施されるプール上で作用する差分機関は、要望に応じてオブジェクト間の迅速な比較を行うために、内容参照可能インプリメンテーションの効率的なツリー構造を使用する(以下、図12を参照)。
内容参照可能プロバイダ610は、その内容参照可能プロバイダが消費する仮想ストレージリソースに追記型内容参照可能インターフェースを実装する。その追記型内容参照可能インターフェースは、読み取り、書き込み、複製および削除動作を実現する。書き込まれたオブジェクトまたはコピーされたオブジェクトのそれぞれは、そのオブジェクトの内容から導き出される固有のハンドルによって識別される。内容参照可能プロバイダは、以下に更に記載される(図11)。
プールマネージャ動作
動作中、プール要求仲介役502は、例えばプールもしくはオブジェクトについてのコピー、スナップショット、または削除などのデータ操作動作についての要求を受け付ける。要求仲介役は、プールもしくはオブジェクトに対して名前または参照を調べることによって実行するためにプール504からプロバイダコードを判断する。次いで、仲介役は、入ってくるサービス要求を特定のプール機能プロバイダによって処理され得る形態に変換し、適切なシーケンスのプロバイダ動作を呼び出す。
例えば、入ってくる要求は、スナップショットを1次ストレージプールにおけるボリュームからスナップショットプールに作ることを尋ね得る。入ってくる要求は、1次ストレージプール内のオブジェクト(ボリューム)を名前によって識別し、名前および動作(スナップショット)の組み合わせは、基礎をなすスナップショット機能を用いて一時点スナップショットを1次プールから作り得るスナップショットプロバイダが、呼び出されるべきであることを決定する。このスナップショットプロバイダは、例えばビットマップまたはエクステントなどの、基礎をなすストレージ仮想化アプライアンスにより実行される固有のコピーオンライト機能によって必要とされた厳密な形態に要求を変換することになる。更に、そのスナップショットプロバイダは、オブジェクトマネージャに戻され得るストレージボリュームハンドルであって、プールマネージャに対する将来の要求に使用され得るストレージボリュームハンドルに、固有のコピーオンライト機能の結果を変換することになる。
オブジェクトマネージャおよびデータムーバーを用いるデータバックアップのための最適な手法
データバックアップのための最適な手法は、時間の経過に伴ってアプリケーションデータオブジェクトの連続的なバージョンを作る一方で、オブジェクトムーバーに格納されたビットマップ、エクステントおよび他の時間的差分情報を用いることによりコピーされるべきであるデータの量を最小限にする一連の動作である。そのオブジェクトムーバーは、時間の経過に伴う変化が容易に識別され得るように、データストレージオブジェクトにアプリケーションデータを格納するし、時間の経過に伴うアプリケーションデータの様々な変化に関連するメタデータをそのアプリケーションデータと関連付ける。
好適な実施形態では、手順は以下のステップを含む。
1. その機構は、データストレージオブジェクト内にアプリケーションデータの、最初の参照状態、例えばT0、を提供する。
2. 後続のインスタンス(バージョン)は、差分機関プロバイダを有する仮想ストレージプールにおけるデータストレージオブジェクトの時間の経過に伴って要望に応じて生成される。
3. 各連続的なバージョン、例えばT4、T5は、その各連続的なバージョンとその各連続的なバージョンの前に生成されたインスタンスとの間の差分を得るために仮想ストレージプール用の差分機関プロバイダを使用し、それによって、T5は、T4への参照として、および、T5とT4との間の差分の組として格納される。
4. コピー機関は、データを1つのデータオブジェクト(ソース)から別のデータオブジェクト(宛先)にコピーする要求を受信する。
5. 宛先オブジェクトが仮想ストレージプールの中に生成されることになる当該仮想ストレージプールが、ソースデータオブジェクトの以前のバージョンから生成された他のオブジェクトを含有しない場合には、新しいオブジェクトが、宛先仮想ストレージプールに生成され、ソースデータオブジェクトの全内容は、宛先オブジェクトにコピーされ、手順は完了する。そうではない場合には、次のステップが続く。
6. 宛先オブジェクトが仮想ストレージプールの中に生成される当該仮想ストレージプールが、ソースデータオブジェクトの以前のバージョンから生成されたオブジェクトを含有する場合、宛先仮想ストレージプールにおいて最近生成された以前のバージョンは、ソースデータオブジェクトの仮想ストレージプールにおいて対応する以前のバージョンが存在するために選択される。例えば、T5のコピーがスナップショットプールから始動される場合、および、時間T3に生成されたオブジェクトがターゲットで利用可能である直近のバージョンである場合、T3は、以前のバージョンとして選択される。
7. ソースデータオブジェクトのバージョンの時間順リストを構築し、前のステップにおいて識別された最初のバージョンで始め、もうすぐコピーされるソースデータオブジェクトで終える。上記例では、スナップショットプールで、オブジェクトの全状態が利用可能であるが、T3を含みT3に続く状態、つまり、T3、T4、T5のみが興味対象である。
8. リストの始まりのバージョンから終わりのバージョンまでの差分の全てが表わされるように、リストにおける各連続的なバージョン間の差分の対応するリストを構築する。差分は、データのどの部分が、変化したかと、対応する時間についての新たなデータを含むかとの両方を識別する。これは、ターゲットバージョンからソースバージョンまでの差分の組、例えばT3とT5との間の差分を生成する。
9. 宛先仮想ストレージプール内でステップ6において識別されたオブェクト、例えばターゲットストア内のオブジェクトT3の以前のバージョンを複製することによって宛先オブジェクトを生成する。
10. ステップ8において生成されたリスト内において識別された差分の組をソースデータオブジェクトから宛先オブジェクトにコピーし、手順は完了する。
宛先仮想ストレージプール内の各データオブジェクトは、完了する。つまり、その各データオブジェクトは、全データオブジェクトを表わし、他の時点における状態または表示への外部参照を必要とすること無くその一時点におけるアプリケーションデータの全てに対するアクセスを与える。オブジェクトは、ベースライン状態から現状態まで全デルタを再現すること無くアクセス可能である。その上、宛先仮想ストレージプール内のデータオブジェクトの最初のバージョンおよび後続のバージョンの複製は、その宛先仮想ストレージプール内のアプリケーションデータ内容の包括的な複製を必要としない。最後に、第2の状態および後続の状態に達することは、上記のように、データストレージオブジェクトの内容の包括的なトラバーサル、伝送またはレプリケーション無しで、追跡され保持された変化の伝送だけを必要とする。
オブジェクトマネージャおよびデータムーバーを使用するデータ復元のための最適な手法
直観的に、データ復元のための最適な手法の動作は、データバックアップのための最適な手法の逆である。所与の時点における宛先仮想ストレージプール内のデータオブジェクトの所望の状態を再生成するための手順は、以下のステップを含む。
1. 差分機関プロバイダを有する別の仮想ストレージプール内にあり、再生成される所望の状態に対応するデータオブジェクトのバージョンを識別する。これは、ソース仮想ストレージプール内のソースデータオブジェクトである。
2. 宛先仮想ストレージプールにおいて再生成されるデータオブジェクトの先行バージョンを識別する。
3. ステップ2においてデータオブジェクトのバージョンの1つも識別されない場合には、宛先仮想ストレージプールに新しい宛先オブジェクトを生成し、ソースデータオブジェクトから宛先データオブジェクトにデータをコピーする。手順は完了する。そうではない場合には、以下のステップに進む。
4. ステップ2においてデータオブジェクトのバージョンが識別される場合には、ステップ2において識別されたデータオブジェクトに対応するソース仮想ストレージプール内のデータオブジェクトを識別する。
5. ステップ4において1つもデータオブジェクトが識別されない場合には、宛先仮想ストレージプールに新しい宛先オブジェクトを生成し、ソースデータオブジェクトから宛先データオブジェクトにデータをコピーする。手順は完了する。それ以外の場合は、以下のステップに進む。
6. ステップ2において識別されたデータオブジェクトを複製することによって宛先仮想ストレージプールに新しい宛先データオブジェクトを生成する。
7. ステップ1において識別されたデータオブジェクトとステップ4において識別されたデータオブジェクトとの間の差分の組を得るためにソース仮想ストレージプール用の差分機関プロバイダを用いる。
8. ステップ7において生成されたリストによって識別されたデータをソースデータオブジェクトから宛先データオブジェクトにコピーする。手順は完了する。
所望の状態へのアクセスは完了する。そのアクセスは、他のコンテナまたは他の状態への外部参照を必要としない。参照状態を与えられた所望の状態を確立することは、包括的なトラバーサルも包括的な伝送も必要とせず、ソース仮想ストレージプール内に提供された表示によって示され、検索された変化だけを必要とする。
サービスレベルアグリーメント
図7は、サービスレベルアグリーメントを例示する。サービスレベルアグリーメントは、アプリケーションデータの2次コピーに関する詳細な事業要求を記録する。最も簡単な記述では、事業要求は、いつおよびどのくらいの頻度でコピーが生成されるか、どのくらいの期間それらのコピーが保持されるか、ならびに、どのような種類のストレージプールにこれらのコピーが存在するかを定義する。この単純化された記述は、事業要求のいくつかの態様を記録しない。所与の種類のプールについてのコピー生成の頻度は、1日の全ての時間にわたってまたは1週間の全ての日にわたって均一でなくてもよい。1日のうちのある一定の時間、または1週間もしくは1カ月のうちのある一定の日は、アプリケーションデータにおけるより多くの(または少ない)臨界期間を表わしてもよく、したがって、より多くの(または少ない)頻度のコピーを要請してもよい。同様に、特定プール内のアプリケーションデータの全コピーは、同じ長さの時間に保持される必要はなくてもよい。例えば、毎月の処理の最後に生成されるアプリケーションデータのコピーは、月の半ばに生成される同じストレージプール内のコピーよりも長い期間にわたって保持される必要があってもよい。
ある一定の実施形態のサービスレベルアグリーメント304は、事業要求に存在するこれらの複雑さの全てを表わすように立案されている。サービスレベルアグリーメントは、4つの1次部分、すなわち、サービスレベルポリシーの名前、記述、ハウスキーピング属性および収集を有する。上記したように、アプリケーション毎に1つのSLAがある。
名前属性701は、各サービスレベルアグリーメントが固有の名前を有することを可能にする。
記述属性702は、ユーザがサービスレベルアグリーメントのために役に立つ記述を設けることができるところである。
サービスレベルアグリーメントはまた、そのサービスレベルアグリーメントが保持され改訂され得るいくつかのハウスキーピング属性703も有する。これらのハウスキーピング属性は、所有者の識別情報と、生成、修正ならびにアクセスの日付および時間と、優先度と、イネーブル/ディスエーブルフラグとを含むが、これらに限定されない。
サービスレベルアグリーメントはまた、複数のサービスレベルポリシー705も含む。いくつかのサービスレベルアグリーメントは、単一のサービスレベルポリシーだけを有してもよい。より典型的には、単一のSLAは数十個のポリシーを含んでもよい。
各サービスレベルポリシーは、ある一定の実施形態では、少なくとも以下からなる。すなわち、ソースストレージプール位置706および種類708と、ターゲットストレージプール位置710および種類712と、期間として表わされたコピー生成頻度714と、期間として表わされたコピー保持期間716と、この特定サービスレベルポリシーのための日の間の動作の時間718と、このサービスレベルポリシーが適用される週、月または年の日720とからなる。
各サービスレベルポリシーは、ソースストレージプールおよびターゲットストレージプール、ならびにこれらのストレージプール間で望まれるアプリケーションデータのコピーの頻度を規定する。その上、サービスレベルポリシーは、動作のそのポリシーの時間と、そのポリシーが適用可能である日を規定する。各サービスレベルポリシーは、アプリケーションデータの保護のための事業要求内の1つのステートメントの表示である。例えば、特定アプリケーションが、月末後に各月に生成され3年間保持されるアーカイブコピーについての事業要求を有する場合、この特定アプリケーションは、月の最終日の真夜中におけるローカルバックアップストレージプールから長期アーカイブストレージプールへのコピーを、3年間の保持を伴って、必要とするサービスレベルポリシーに変換し得る。
ソースプールおよび宛先プールならびに位置の特定の組み合わせ、例えば、ソース1次ストレージプールおよび宛先ローカルスナップショットプールを用いるサービスレベルポリシーの全ては、まとめると、コピーをその特定宛先プールに生成するための事業要求を規定する。事業要求は、例えばスナップショットコピーが定期的な作業時間の間の1時間毎に、しかしながらこれらの時間外で4時間毎に1度のみ生成されることを命じてもよい。同じソースストレージプールおよびターゲットストレージプールを用いる2つのサービスレベルポリシーは、サービスポリシー機関によって実行に移され得る形態でこれらの要求を効果的に記録することになる。
サービスレベルアグリーメントのこの形態は、毎日、毎週および毎月の事業活動のスケジュールの表示を可能にし、したがって、伝統的なRPOおよびRPOベースのスキームよりもはるかに正確にアプリケーションデータを保護して管理するための事業要求を記録する。動作の時間と、1年のうちの日、週、および月とを与えることによって、スケジューリングは「カレンダーベース」で起こり得る。
まとめると、ソースおよび宛先の1つの特定の組み合わせ、例えば、「ソース:ローカル1次および宛先:ローカル性能を最適化された」を用いるサービスレベルポリシーの全ては、1つの種類のストレージのための非均一データ保護要求を記録する。その一方で、単一のRPO数は、1日の全ての時間および一日中にわたってデータ保護の単一の均一頻度を強いる。例えば、サービスレベルポリシーの組み合わせは、例えば10分などの短期間に保存される多数のスナップショットと、例えば8時間などのより長い期間に保存されるより少ない数のスナップショットとを必要としてもよい。このことは、誤って削除されている少量の情報が、10分前を超える状態に戻され得ることを可能にする一方で、10分毎に取られたスナップショットの全てを格納するストレージオーバーヘッドを必要とすること無く、より長い期間に相当なデータ保護を更に提供する。別の例として、バックアップデータ保護機能は、週労働日数の間にある頻度で、および週末の間の別の頻度で動作する1つのポリシーを与えられてもよい。
異なる種類のソースストレージおよび宛先ストレージの全てのためのサービスレベルポリシーが含まれると、サービスレベルアグリーメントは、ローカルスナップショット、ローカル長期ストア、現場から離れたストレージ、アーカイブ等を含む全アプリケーションのためのデータ保護要求の全てを完全に記録する。SLA内のポリシーの収集は、所与の機能が実行されるべきときに表現することができるし、データの所与のソース上で実行されるべき複数データ管理機能を表現することができる。
サービスレベルアグリーメントは、管理ワークステーション上のユーザインターフェースを通してユーザによって生成され修正される。これらのアグリーメントは、サービスポリシー機関が管理する構造化SQLデータベースまたは他のリポジトリ内にサービスポリシー機関によって格納された電子書類である。ポリシーは、以下に記載されるように、サービスポリシー機関の通常スケジューリングアルゴリズムを通してそのサービスポリシー機関によって検索され、電子的に解析され、作用される。
図8はアプリケーション特定モジュール402を例示する。アプリケーション特定モジュールは、(上記したように)アプリケーション300の近くで動き、データ管理動作のために必要に応じてメタデータを集めてアプリケーションを照会して制御するように、アプリケーションおよびそのアプリケーションの動作環境とやりとりする。
アプリケーション特定モジュールは、アプリケーションと、アプリケーションサービスプロセスおよびデーモン801、アプリケーション構成データ802、オペレーティングシステムストレージサービス803(ウィンドウズ(登録商標)上のVSSおよびVDSなど)、論理的ボリューム管理およびファイルシステムサービス804、ならびにオペレーティングシステムドライバおよびモジュール805を含むそのアプリケーションの動作環境との様々な構成要素とやりとりする。
アプリケーション特定モジュールは、サービスポリシー機関406からの制御コマンドに応答してこれらの動作を実行する。アプリケーションとのこれらのやりとりのための2つの目的、すなわち、メタデータ収集およびアプリケーション一貫性がある。
メタデータ収集は、プロセスであり、そのプロセスによってアプリケーション特定モジュールはアプリケーションについてのメタデータを収集する。いくつかの実施形態では、メタデータは、例えば、アプリケーション用の構成パラメータと、アプリケーションの状態および状況と、アプリケーション用の制御ファイルおよび始動/シャットダウンスクリプトと、データファイルの位置と、アプリケーション用のジャーナルおよびトランザクションログと、アプリケーションデータへのアクセスに影響を及ぼし得るシンボリックリンク、ファイルシステムマウントポイント、論理的ボリューム名および他のそのようなエンティティと、などの情報を含む。
メタデータは、収集され、アプリケーションデータおよびSLA情報と共に保存される。このことは、システム内のアプリケーションデータの各コピーが、自己充足式であることと、アプリケーションデータを再構築するために必要とされた詳細の全てを含むこととを保証する。
アプリケーション一貫性は、アプリケーションデータのコピーが生成されるときに、コピーが有効であり、アプリケーションの有効なインスタンスに復元され得ることを確実にする動作の組である。このことは、事業要求が、アプリケーションがそのアプリケーションのオンラインの、動作状態で存続する間に、保護されることを命じる際に重要である。アプリケーションは、相互依存データ関係をそのアプリケーションのデータストア内に有してもよく、これらの相互依存データ関係が一致した状態でコピーされない場合、有効な復元可能画像を提供しないことになる。
アプリケーション一貫性を実現する厳密なプロセスは、アプリケーションによって変化する。いくつかのアプリケーションは、キャッシュされたデータをディスクに押し込む簡単なフラッシュコマンドを有する。いくつかのアプリケーションは、アプリケーションが、アプリケーションデータが変化しているにもかかわらず、そのアプリケーションの動作が一貫性を保証する手法でジャーナリングされることを確実にする最新のバックアップモードをサポートする。いくつかのアプリケーションは、一貫性を確実にするために例えばVSSおよびVDSなどのオペレーティングシステムストレージサービスとのやりとりを必要とする。アプリケーション特定モジュールは、特定アプリケーションと働くためおよびそのアプリケーションの一貫性を確実にするための専用のものである。アプリケーション特定モジュールは、基礎をなすストレージ仮想化デバイスおよびオブジェクトマネージャとやりとりし、アプリケーションデータの一致したスナップショットを提供する。
効率のためには、アプリケーション特定モジュール402の好適な実施形態は、アプリケーション300と同じサーバ上で動くことである。このことは、アプリケーションとのやりとりにおける待ち時間を最小限にすることを保証し、アプリケーションホスト上のストレージサービスおよびファイルシステムへのアクセスを与える。アプリケーションホストは、典型的には、1次ストレージとみなされ、その上、その1次ストレージは、性能を最適化されたストアへスナップショットを取られる。
準備ステップを最小限にすることを含む、作動中のアプリケーションの障害を最小限にすることのために、オブジェクトマネージャによって追跡される際に、アプリケーションデータへのアクセスが規定の時間に必要とされるとき、およびその時間についてのスナップショットがシステム内のどこにも存在しないとき、アプリケーション特定モジュールは、スナップショットを作ることを単に誘発される。どの時間にスナップショットが作られているかを追跡することによって、オブジェクトマネージャは、性能を最適化されたデータストアからの後続のデータ要求をかなえることができ、第2の、容量を最適化されたプールから発行され得るバックアップおよびレプリケーションのための複数の要求を満足させることを含む。オブジェクトマネージャは、性能を最適化されたストア内でスナップショットに対するオブジェクトハンドルを提供することができてもよいし、スナップショットの形式に特有の固有の形式に性能を最適化されたストアを導いてもよく、その固有の形式は、基礎をなすストレージアプライアンスに依存する。いくつかの実施形態では、この形式は、どのブロックが変化したかを示す1つ以上のLUNビットマップと組み合わされたアプリケーションデータであってもよい。他の実施形態では、その形式は、特定のエクステントであってもよい。したがって、データ転送のために使用される形式は、ビットマップまたはエクステントを用いて2つのスナップショット間のデルタまたは差分のみを転送することができる。
メタデータ、例えばアプリケーションのバージョン番号などもまた、各アプリケーションについてスナップショットと共に格納されてもよい。SLAポリシーが実行されると、アプリケーションメタデータは、ポリシーのために読み取られて使用される。このメタデータは、データオブジェクトと共に格納される。各SLAについて、アプリケーションデータのこのコピーがアプリケーションのメタデータと共に複数データ管理機能のために使用され得るにもかかわらず、アプリケーションメタデータは、軽量のスナップショット動作の間に1度読み取られるだけになり、例えばキャッシュをフラッシュすることなどのその時に起こる準備動作は、軽量のスナップショット動作の間に1度実行されるだけになる。
サービスポリシー機関
図9は、サービスポリシー機関406を例示する。サービスポリシー機関は、サービスポリシースケジューラ902を含み、そのサービスポリシースケジューラは、ユーザによって設定されたサービスレベルアグリーメントの全てを検査し、サービスレベルアグリーメントを満たすスケジューリング決定を作成する。そのサービスポリシー機関は、情報を記録し、その情報を時間の経過に伴って持続するいくつかのデータストアに依存する。そのデータストアは、いくつかの実施形態では、設定されたサービスレベルアグリーメントが持続され更新されるところであるSLAストア904と、論理的ストレージプール名と実際のストレージプールとの間のマッピングを提供するリソースプロファイルを格納しているリソースプロファイルストア906と、情報が、まだ期限切れしていない、様々なプール内において生成された前の成功したコピーについて、カタログに載せられるところである保護カタログストア908と、集中型履歴ストア910とを含む。
履歴ストア910は、過去のアクティビティについての履歴情報が全データ管理アプリケーションの使用のために保存されるところであり、様々なストレージプールへの各アプリケーションの前のコピーの時刻表示、順序および階層を含む。例えば、午後1時に始動され午後9時に期限が切れるようにスケジュールされる、1次データストアから容量を最適化されたデータストアへのスナップショットコピーは、午前11時および午後12時に行われている同じソースおよびターゲットのためのスナップショット用のリンクされたオブジェクトデータも含む時間的データストア内の履歴ストア910に記録されることになる。
これらのストアは、サービスポリシー機関によって管理される。例えば、ユーザが、管理ワークステーションを通してサービスレベルアグリーメントを生成すると、または、そのサービスレベルアグリーメント内のポリシーの1つを修正すると、サービスポリシー機関は、そのサービスポリシー機関のストアにこの新たなSLAを持続し、SLAによって規定されたようにコピーをスケジュールすることによってこの修正に対処する。同様に、サービスポリシー機関が、ストレージプールにアプリケーションの新たなコピーを結果としてもたらすデータ移動ジョブをうまく完了すると、ストレージポリシー機関は、履歴ストアを更新し、これにより、このコピーは将来の決定への考慮に入れられることになる。
サービスポリシー機関により使用される様々なストアの好適な実施形態は、サービスポリシー機関に極めて近い、関係のあるデータベース管理システム内の表の形態である。このことは、ストアに問い合わせてそのストアを更新する場合にトランザクションのセマンティックが一貫することを保証し、相互依存データを検索する際に柔軟性を与える。
サービスポリシースケジューラ902用のスケジューリングアルゴリズムは図10に例示される。サービスポリシースケジューラが、そのサービスポリシースケジューラが1つのストレージプールから別のストレージプールにアプリケーションデータのコピーを作る必要があることを決定すると、そのサービスポリシースケジューラは、データ移動要求およびモニタタスクを始動する、912。これらのタスクは、繰り返し発生するタスクではなく、それらのタスクが完了すると終了する。サービスレベルポリシーが規定される手法に依存して、複数のこれらの要求元は同時に動作し得る。
サービスポリシースケジューラは、どの追加タスクに着手するかを判断する際にサービスレベルアグリーメントの優先度を考慮に入れる。例えば、1つのサービスレベルアグリーメントは、その1つのサービスレベルアグリーメントがミッションクリティカルアプリケーションのための保護を規定するという理由で高い優先度を有する場合、その一方で、別のSLAは、その別のSLAが試験データベースのための保護を規定するという理由でより低い優先度を有する場合には、サービスポリシー機関は、ミッションクリティカルアプリケーションのための保護だけを進める選択をしてもよいし、より低い優先度のアプリケーションのための保護を延期するか完全に省略してもよい。このことは、より低い優先度のSLAよりも先により高い優先度のSLAをスケジューリングするサービスポリシー機関によって達成される。好適な実施形態では、そのような状況において、監査目的のために、サービスポリシー機関はまた、管理ワークステーションへの通知イベントを誘発することになる。
ポリシースケジューリングアルゴリズム
図10は、ポリシースケジュール機関のフローチャートを例示する。ポリシースケジュール機関は、定義されたSLAの全てをくまなく連続的に繰り返す。そのポリシースケジュール機関がSLAの全ての最後に達すると、そのポリシースケジュール機関は、ほんの少しの間、例えば10秒、スリープし、再びSLAを通して調べることを再開する。各SLAは、1つのアプリケーションのための完全なデータ保護事業要求を包含する。したがって、SLAの全てはアプリケーションの全てを表わす。
各SLAについて、スケジュール機関は、プロセス状態1000で、同じソースプールおよび宛先プールを有するサービスレベルポリシーの全てを一緒に収集し1004、1002においてSLAの組内の次のSLAを反復する。まとめると、この下位の組のサービスレベルポリシーは、そのソースストレージプールからその特定の宛先ストレージプールへのコピーのための要求の全てを表わす。
この下位の組のサービスレベルポリシーの中で、サービスポリシースケジューラは、今日に適用可能ではないポリシー、またはそれらのポリシーの動作時間外にあるポリシーを除く。残されたポリシーの中で、最も短い頻度を有するポリシーを見つけ1006、履歴データに基づいておよび履歴ストア910内で、次に進むために必要な最も長い保持を伴うポリシーを見つける1008。
次に、この時にアプリケーションデータの新たなコピーを作ることを除外する一連の検査1010〜1014がある。なぜならば、新たなコピーをまだする予定ではない、コピーが既に進行中である、あるいはコピーするための新たなデータがないからである。これらの条件のいずれかを適用する場合、サービスポリシースケジューラは、ソースプールおよび宛先プールの次の組み合わせに移る1004。これらの条件のどれも適用しない場合、新たなコピーが始動される。コピーは、このSLA内の対応するサービスレベルポリシーにおいて規定されたように実行される1016。
次に、スケジューラは、同じサービスレベルアグリーメントについて次のソースおよび宛先プールの組み合わせに移る1018。別個の組み合わせがもはやない場合、スケジューラは、次のサービスレベルアグリーメントに進む1020。
サービスポリシースケジューラが全サービスレベルアグリーメントのソース/宛先プールの組み合わせの全てを終えた後、そのサービスポリシースケジューラは、短い期間停止し、次いで、サイクルを再開する。
2つのポリシーだけが定義され、スナップショットストアおよびバックアップストアを有する簡単な例のシステムは、以下のようにサービスポリシースケジューラとやりとりすることになる。1つのポリシーが「バックアップを毎時して、そのバックアップが4時間保持される」ことを指定し、別のポリシーが「バックアップを2時間毎にして、そのバックアップが8時間保持される」ことを指定する、2つのポリシーの場合、その結果、単一のスナップショットが1時間毎に取られることになり、スナップショットは、バックアップストアにそれぞれコピーされるが、スナップショットストアとバックアップストアとの両方に異なる時間保持されることになる。「バックアップを2時間毎にする」ポリシーは、午後12:00に実施されるようにシステム管理者によってスケジューリングされる。
午後4:00に、サービスポリシースケジューラがステップ1000で動作を始めると、サービスポリシースケジューラは、ステップ1002で2つのポリシーを見つける(午後12:00から複数の2時間が経過しているので両方のポリシーが適用される)。ステップ1004ではソースおよび宛先プールの1つの組み合わせだけがある。ステップ1006では2つの頻度があり、システムは、1時間の頻度を選ぶ。なぜならば、それは2時間の頻度よりも短いからである。ステップ1008では異なる保持を伴う2つの動作があり、システムは、8時間の保持を伴う動作がより長い保持値を有するのでその8時間の保持を伴う動作を選ぶ。1つのコピーが4時間要求を満たすように作られ、別のコピーが8時間要求を満たすように作られる代わりに、2つの要求は、より長い8時間要求に合体され、単一のスナップショットコピー動作によって満たされる。システムは、ステップ1010でコピーが予定されているかを判断し、コピーが既に(ステップ912で)ターゲットでおよび(ステップ914で)ソースで作られているかを判断するために履歴ストア910で関連のあるオブジェクトを検査する。これらの検査が通過される場合、システムは、ステップ916でコピーを始動し、プロセスにおいて、スナップショットストアで作られ保存されるスナップショットを誘発する。次いで、スナップショットは、スナップショットストアからバックアップストアにコピーされる。次に、システムは、スリープ状態1022になり、10秒などの短い期間の後に再び起動する。その結果、バックアップストアでのコピーおよびスナップショットストアでのコピーとなり、ここで、偶数時間毎にスナップショットが8時間存続し、奇数時間毎にスナップショットが4時間存続する。バックアップストアおよびスナップショットストアでの偶数時間のスナップショットは、8時間の保持期間で両方ともタグ付けされ、その時間に別のプロセスによってシステムから自動的に削除されることになる。
両方のポリシーは単一のコピーによって満たされるので、両方のポリシーが適用されるにもかかわらず、2時に2つのスナップショットを取るまたは2つのバックアップコピーを作る理由はないことに留意する。これらのスナップショットを組み合わせて合体することは、不必要な動作を削減することをもたらす一方で、複数の別個のポリシーの柔軟性を保持する。同様に、そのことは、異なる保持で同じターゲットのために同時に有効な2つのポリシーを有することに役に立ち得る。与えられた例において、2時間のコピーよりも多い時間毎に保持されるコピーが存在し、現在により近い時間における復元のためのより高い粒度を結果としてもたらす。例えば、前のシステムにおいて、午後7:30にダメージが午後のより早くから発見される場合、バックアップは、過ぎた4時間、すなわち午後4、5、6、7時の1時間毎に利用可能となる。同様に、更に2個のバックアップが午後2時および午後12時から保持されていることになる。
内容参照可能ストア
図11は、内容参照可能プロバイダ510のために内容参照可能ストアを実装するモジュールのブロック図である。
内容参照可能ストア510インプリメンテーションは、これ以前に記載した、スナップショットを通して実施される性能最適化プールについての場合のように、コピーイン速度またはコピーアウト速度ではなく容量について最適化されたストレージリソースプールを提供し、したがって、典型的には、オフラインバックアップ、レプリケーションおよび遠隔バックアップのために使用される。内容参照可能ストレージは、異なるオブジェクトの共通下位の組を一度だけ格納する手法を提供し、ここで、それらの共通下位の組は、サイズが変化してもよいが、典型的には、4キビバイトと小さい。内容参照可能ストアのストレージオーバーヘッドは、アクセス時間が通常より多いにもかかわらず、スナップショットストアと比較して少ない。一般に、内容参照可能ストア内のオブジェクトは、このインプリメンテーションにおいて履歴関係も保持されるけれども、それらのオブジェクトの内容の大きな割合を共有し得るにもかかわらず、本質的関係を互いに有さず、その履歴関係は、記載される様々な最適化のイネーブラである。これは、スナップショットが本質的に連鎖を形成し、前のスナップショットまたはベースラインコピーからデルタだけをそれぞれ格納するところであるスナップショットストアとは対照をなす。特に、スナップショットベースのストアが任意のオブジェクトの少なくとも1つの全コピーを格納することになる一方で、内容参照可能ストアは、単一のオブジェクト内で複数回繰り返されるデータ下位の組の1つのコピーだけを格納することになる。
内容参照可能ストア510は、TCPなどのローカル移送により通信する同じプロセスにおいてまたは別個のプロセスにおいて、プールマネージャと同じシステム上で実行するソフトウェアモジュールである。この実施形態では、内容参照可能ストアモジュールは、異なる構成要素からのソフトウェア障害の影響を最小限にするように、別個のプロセスにおいて動く。
このモジュールの目的は、内容を重複排除することによって空間効率をより良くする手法(すなわち、単一もしくは複数データオブジェクト内で繰り返される内容が、一度だけ格納されることを確実にすること)で、データストレージオブジェクト403のストレージを与えることである。
内容参照可能ストアモジュールは、プログラムのAPIによってプールマネージャにサービスを提供する。これらのサービスは以下を含む。
ハンドルへのオブジェクトのマッピング1102。オブジェクトは、API経由でデータをストアの中に書き込むことにより生成され得る。データが一旦完全に書き込まれると、APIは、オブジェクトの内容によって決定されたオブジェクトハンドルを戻す。逆に、データは、ハンドルを提供することによってオブジェクト内のオフセットからバイトのストリームとして読み取られてもよい。どのようにハンドルが構築されるかについての詳細は、図12の記載に関して説明される。
時間的ツリー管理1104は、格納されたデータオブジェクト間の親/子関係を追跡する。データオブジェクトがストア510に書き込まれると、APIは、そのデータオブジェクトが、そのストア内に既にある親オブジェクトに対する子としてリンク付けられることを可能にする。これは、子オブジェクトが親の修正であることを内容参照可能ストアに示す。例えばアプリケーションのデータがストアの中に定期的にしばらくの間保存され、次いで、早期のコピーが復元され、後続の修正のための新しい開始点として使用された場合にあり得るように、単一の親は、異なる修正を持つ複数の子を有してもよい。時間的ツリー管理動作およびデータモデルは、以下により詳細に記載される。
差分機関1106は、ストアにおける2つの任意オブジェクト間の差分領域の要約を生成することができる。差分動作は、比較される2つのオブジェクトのハンドルを指定するAPI経由で呼び出され、差分要約の形態は、一連の差分セクションのオフセットおよびサイズを伴う一連のコールバックである。差分は、並列にオブジェクトの2つのハッシュ化された表示を比較することによって計算される。
ガーベジコレクタ1108は、どのオブジェクトハンドルによっても参照されない保存されたデータを見つけるために、および、このデータに当てられたストレージ空間を再要求するために、ストアを解析するサービスである。多くのデータが複数オブジェクトハンドルによって参照されること、すなわち、データはデータオブジェクト間で共有され、いくつかのデータは単一のオブジェクトハンドルによって参照されるが、(オブジェクトハンドルが内容参照可能システムから削除されている場合にあり得るように)オブジェクトハンドルによって参照されないデータは、新たなデータによって安全に上書きされ得ることは、内容参照可能ストアの性質である。
オブジェクトレプリケータ1110は、2つの異なる内容参照可能ストア間のデータオブジェクトを複製するサービスである。複数の内容参照可能ストアは、オフラインバックアップまたは遠隔バックアップなどの付加的な事業要求を満たすために使用されてもよい。
これらのサービスは、図11に示される機能モジュールを用いて実施される。データハッシュモジュール1112は、固定されたサイズ制限までデータチャンクのための固定長キーを生成する。例えば、この実施形態では、ハッシュジェネレータがキーを作ることになるチャンクの最大サイズは、64キビバイトである。固定長キーは、使用されるハッシュスキームを指示するようにタグ付けされたハッシュ、または無損失アルゴリズム符号化である。この実施形態において使用されるハッシュスキームはSHA‐1であり、その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に別個に格納される。
内容参照可能オブジェクトについてのデータは、チャンク1204の中に分割される。各チャンクのサイズは、1つの内容参照可能ハンドル1205によって参照可能でなければならない。データは、データハッシュモジュール1102によってハッシュされ、チャンクのハッシュはハンドルを作るために使用される。オブジェクトのデータが1つのチャンクに収まる場合には、生成されたハンドルは、オブジェクトの最終的なハンドルである。そうではない場合には、ハンドル自体がチャンク1206の中にグループ化され、ハッシュがハンドルの各グループについて生成される。ハンドルのこのグループ分けは、生成されるハンドル1208が1つだけ存在するまで1207を続け、したがって、そのハンドル1208は、オブジェクトのためのハンドルである。
オブジェクトが内容ハンドルから再構成されることになると(ストレージリソースプールについてのコピーアウト動作)、トップレベルの内容ハンドルは、次のレベルの内容ハンドルのリストを取得するためにデリファレンスされる。次のレベルの内容ハンドルは、更には、深さ0ハンドルが取得されるまで内容ハンドルの更なるリストを取得するためにデリファレンスされる。深さ0ハンドルは、ハンドル管理インデックスもしくはキャッシュ内でハンドルを検索することによって、あるいは(ランレングス符号化などのアルゴリズムハッシュの場合には)全内容に確定的に展開することによって、データに展開される。
時間的ツリー管理
図13は、内容参照可能ストア内に格納されたデータオブジェクトのために生成された時間的ツリー関係を例示する。この特定データ構造は、内容参照可能ストア内だけで利用される。時間的ツリー管理モジュールは、内容参照されたデータオブジェクトのそれぞれを(一連の改訂における最初を示すためのヌル(null)であり得る)親に関連付ける持続的ストア内においてデータ構造1302を保持する。ツリーの個々のノードは、単一のハッシュ値を含有する。このハッシュ値は、ハッシュが深さ0ハッシュである場合にはデータのチャンクを参照し、あるいは、ハッシュが深さ1もしくはより高いハッシュである場合には他のハッシュのリストを参照する。ハッシュ値にマッピングされた参照は、持続的ハンドル管理インデックス1104に含有される。いくつかの実施形態では、ツリーの端部は、近隣を見つけるためにアルゴリズムに使用され得る重さまたは長さを有してもよい。
これは、標準ツリーデータ構造であり、モジュールは、標準操作動作、特に、親の下に葉を追加する1310追加であって、最初の状態1302と追加後の状態1304との間のときにツリーに変化をもたらす追加と、ノードを除去する1312除去(およびそのノードの親を再びそのノードの子の親とすること)であって、追加後の状態1304と除去後の状態1306との間のときにツリーに変化をもたらす除去とをサポートする。
「追加」動作は、オブジェクトが外部プールからCASにコピーインされるときはいつでも使用される。コピーインがデータバックアップのための最適な手法による場合には、または、オブジェクトが、異なるCASプールに生じている場合には、先行オブジェクトが特定されることが必要とされ、追加動作は、この先行/後続関係を記録するために呼び出される。
「除去」動作は、ポリシーマネージャがオブジェクトの保持期間が期限切れしていることを判断すると、オブジェクトマネージャによって呼び出される。このことは、CASを参照する時間的ツリーにオブジェクトを有しないCASに格納されるデータをもたらし得る。したがって、後続のガーベジコレクションパスは、再使用のために利用可能である際にそのデータ用のストレージ空間を解放し得る。
単一の先行点が複数の後続点または子ノードを有することが可能であることを留意する。例えば、このことは、オブジェクトが時間T1でまず初めに生成され、時間T2で修正される場合に生じることがあり、修正は復元動作によってロールバックされ、後続の修正が時間T3でなされる。この例では、状態T1は、2つの子、状態T2および状態T3を有する。
異なるCASプールは、遠隔位置に災害復旧をもたらすことなどの異なる事業目標を遂行するために使用されてもよい。1つのCASから別のCASにコピーをするとき、コピーは、ターゲットCASの固有の重複排除機能をうまく利用するために、ハッシュおよびオフセットとして送信されてよい。任意の新しいハッシュによって示された基礎をなすデータはまた、必要に応じて送信される。
時間的ツリー構造は、様々なサービスのインプリメンテーションの一部として読み取られるか進行される。
− ガーベジコレクションは、以下に記載されるように、「マーク」段階の費用を削減するためにツリーを進行する。
− 異なるCASプールに対するレプリケーションは、他のCASプールに既に転送されていることを知られてもいる時間的ツリーにおいて最も近い近隣の組を見つけ、これにより、少ない組の差分だけが追加的に転送される必要がある。
− データ復元のための最適な手法は、復元動作のための基準として使用され得る先行点を見つけるために時間的ツリーを使用する。CAS時間的ツリーデータ構造では、子は、例えばアーカイブポリシーによって規定されるような後続のバージョンである。複数の子は同じ親ノード上に支持される。この場合は、親ノードが、変更され、次いで、復元のための基準として使用され、引き続いて再度変更されるときに、起こり得る。
CAS差分機関
CAS差分機関1106は、図11および図12にあるようなハッシュ値またはハンドルによって識別された2つのオブジェクトを比較し、オブジェクトデータが相違すると知られているオブジェクト内にオフセットおよびエクステントのシーケンスを作り出す。このシーケンスは、図12のハッシュデータ構造において並列に2つのオブジェクトツリーを横断することによって実現される。ツリートラバーサルは、標準の深さ優先または幅優先トラバーサルである。トラバーサルの間、現在の深さにあるハッシュは比較される。ノードのハッシュが両側間で同一である場合、ツリーを更に下降する必要なはいので、トラバーサルは省略されてもよい。ノードのハッシュが同一ではない場合、トラバーサルは、ツリーの次に低いレベルに下降し続ける。トラバーサルが、深さ0のハッシュの片方と同一ではない深さ0のハッシュに達する場合には、非同一データが生じる場合に比較されるデータオブジェクトへの絶対オフセットは、データ長と共に、出力シーケンスに出される。1つのオブジェクトが別のオブジェクトよりもサイズか小さい場合には、その1つのオブジェクトのトラバーサルはより早くに完了することになり、他のオブジェクトのトラバーサルに直面された後続のオフセットの全ては、差分として出される。
差分化によるガーベジコレクション
図11の下で記載されたように、ガーベジコレクタは、CASストア時間的データ構造においていずれのオブジェクトハンドルによっても参照されていない保存されたデータを見つけるために、および、このデータに当てられたストレージ空間を再要求するために、特定CASストアを解析するサービスである。ガーベジコレクションは標準「マークアンドスイープ」アプローチを使用する。「マーク」段階はかなり高価であり得るので、マーク段階のために使用されるアルゴリズムは、それが何度も参照され得るにもかかわらず、同じデータを複数回マーキングすることを最小限にすることを試みる。しかしながら、マーク段階は、参照されるデータがマークされずに残らないことを確実にして完了しなければならない。このことはストアからのデータ損失をもたらすことになるが、スイープ段階後、マークされなかったデータは後で新しいデータによって上書きされることになる。
参照されるデータをマーキングするために用いられるアルゴリズムは、CAS内のオブジェクトが、図13に描かれたデータ構造を用いて時間的関係を有するグラフに配列されるという事実を使用する。これらのグラフにおいて端部を共有するオブジェクトは、これらのデータの小さい下位の組だけが異なる可能性があり、また、オブジェクトが先行点から生成されるときに現れる任意の新たなデータチャンクが、任意の2つの他のオブジェクト間に再度現れなければならないことは、まれである。したがって、ガーベジコレクションのマーク段階は、時間的グラフの接続された構成要素のそれぞれを処理する。
図14は、ある一定の実施形態における時間的関係を用いるガーベジコレクションの例である。時間的関係を含むデータ構造の、矢印1402によって表わされた、深さ優先探索が行われる。開始ノード1404を取り扱い、その開始ノードからツリートラバーサルは始まる。ノード1404は、ツリールートであり、オブジェクトを参照しない。ノード1406は、オブジェクト1のためのハッシュ値を示すオブジェクトH1への参照と、オブジェクト2のためのハッシュ値を示すオブジェクトH2への参照を含む。ノード1406によって参照される深さ0、深さ1およびより高いデータオブジェクトの全て、ここでは、H1およびH2は、参照されるものとして列挙されマークされる。
次に、ノード1408が処理される。そのノード1408が、マークされたノード1406と端部を共有する際、差分機関は、1406により参照されたオブジェクトと1408により参照されたオブジェクトとの間の差分を適用され、マークされなかったオブジェクトに存在するもののマークされたオブジェクトには存在しない深さ0、深さ1およびより高いハッシュの組を得る。図面中、ノード1408に存在するもののノード1406には存在しないハッシュは、H3であるので、H3が参照されるものとしてマークされる。この手順は、全ての端部が検討し尽されるまで継続される。
先行技術アルゴリズム1418および本実施形態1420によって生じた結果の比較では、ノード1408が先行技術アルゴリズムによって処理されると、前に見られるハッシュH1およびH2が新しいハッシュH3と共に出力ストリームに出されることがわかる。本実施形態1420は、前に見られたハッシュを出力ストリームに出さず、性能の対応する改良を用いて、新しいハッシュH3、H4、H5、H6、H7だけが出力ストリームに出されることを結果としてもたらす。この方法は、データが2回以上マークされないことを保証しないことに留意する。例えば、ハッシュ値H4がノード1416に独立して生じる場合、そのハッシュ値は、2回独立してマークされることになる。
CASへのオブジェクトのコピー
別のプールからCASにオブジェクトをコピーすることは、図11に図示されたソフトウェアモジュールを使用して、図12にあるようなオブジェクトハンドルによって参照されるデータ構造を生む。そのプロセスへの入力は、(a)深さ0ハンドルを作るために適切なサイズの、特定されたオフセットでのデータの一連のチャンクと、任意選択的に(b)同じオブジェクトの前のバージョンとである。暗示的に、新しいオブジェクトは、入力データが提供される場合とその新しいオブジェクト自体が前のバージョンと異なる場合とを除いて、前のバージョンと同一になる。コピーイン動作のためのアルゴリズムは、図15におけるフローチャートに例示される。
前のバージョン(b)が提供される場合には、シーケンス(a)は(b)からの変化の疎な組であり得る。オブジェクトが、コピーされ、前のオブジェクトと多少の点だけが異なることが知られる場合、このことは、コピーインされる必要があるデータの量を大幅に削減することができ、したがって、必要とされる計算および入出力作業を削減することができる。これは、例えば、オブジェクトが、前に記載したデータバックアップのための最適な手法によってコピーインされる場合である。
たとえシーケンス(a)が、先行点から大きく変化していないセクションを含んでも、先行点(b)を識別することは、コピーイン手順が、データが実際に変化しているかどうかについての迅速検査をすることを可能にし、したがって、入力をCASに提供するいくつかの他のストレージプールにおける差分機関に可能であり得るよりも、より微細なレベルの粒度でデータ複製を回避することを可能にする。
次いで、暗示的に、新しいオブジェクトは、入力データが提供され、その新しいオブジェクト自体が前のバージョンと異なる場合を除いて、前のバージョンと同一であることになる。コピーイン動作のためのアルゴリズムは、図15におけるフローチャートに例示される。
プロセスは、時間的ストアにおける任意のサイズのデータオブジェクトが提供される際にステップ1500で開始し、1502に進む。その1502は、先行オブジェクトにおけるハッシュ値が提供される場合には、そのような先行オブジェクトにおけるハッシュ値によって参照される任意のおよび全てのハッシュ(深さ0から最も高いレベルまで)を列挙する。このことは、先行点に既に含まれるデータを格納することを回避する迅速な検査として使用されることになる。
ステップ1504では、先行点が入力される場合、その先行点のクローンへの参照を内容参照可能データストアの時間的データ構造に生成する。このクローンは、新しいオブジェクトになるように更新されることになる。したがって、新しいオブジェクトは、コピー用ソースプールからCASにコピーされた差分によって修正された先行点のコピーになることになる。
ステップ1506、1508では、データムーバー502は、データをCASに押し動かす。データは、オブジェクト参照およびオフセットを伴い、そのオフセットは、データのためのターゲット位置である。データは、先行点からの差分だけが新しいオブジェクトに動かされる必要があるので、疎であり得る。この時点で、入ってくるデータは、それぞれが単一の深さ0ハッシュによって表わされ得るのに足りるだけの小さいサイズの深さ0チャンクに分断される。
ステップ1510では、データハッシュモジュールは、深さ0チャンクのそれぞれのためのハッシュを生成する。
ステップ1512では、同じオフセットにある先行ハッシュを読み取る。データのハッシュが、同じオフセットにある先行のハッシュに一致する場合には、データは格納される必要がなく、深さ1およびより高いオブジェクトは、この深さ0チャンクのために更新される必要はない。この場合では、データの次の深さ0チャンクを受け入れるために戻る。このことは、高価な広域検索をせずに、時間的重複排除を達成する。ソースシステムが、CASに前に格納されているデータからの差分だけを理想的に送信するにもかかわらず、この検査は、ソースシステムが、異なるレベルの粒度で差分化を実行している場合に、あるいは、データが、変化したものとしてマークされるがそのデータの前に格納された値に戻って変化している場合に、必要であり得る。差分化は、例えば、ソースシステムが、32キビバイト限界上でデルタを生成するスナップショットプールであり、CASストアが、4キビバイトチャンク上でハッシュを生成する場合に、異なるレベルの粒度で実行されてもよい。
一致が見つからない場合、データは、ハッシュされ格納されてもよい。データは、提供されるオフセットで書き込みを開始され、一旦新たなデータが検討し尽されると書き込みを終了される。一旦データが格納されていると、ステップ1516では、オフセットが同じ深さ1オブジェクト内にまだ含まれる場合には、深さ1、深さ2および全てのより高いオブジェクト1518が更新され、各レベルで新しいハッシュを生成し、深さ0、深さ1および全てのより高いオブジェクトは、ステップ1514でローカルキャッシュに格納される。
しかしながら、ステップ1520で、格納されるデータの量が深さ1チャンクのサイズを超える場合およびオフセットが新しい深さ1オブジェクトに含まれる場合、現在の深さ1は、その現在の深さ1がストアに既に格納されるように決定されない限り、そのストアにフラッシュされなければならない。まず、その現在の深さ1を広域インデックス1116内で検索する。その現在の深さ1がその広域インデックスで見つけられた場合、深さ1および全ての関連付けられた深さ0オブジェクトをローカルキャッシュから除去して、新しいチャンクに進む1522。
ステップ1524では、広域インデックスを訪れることを避ける迅速検査の際、ローカルキャッシュ内の深さ0、深さ1およびより高いオブジェクトのそれぞれについて、1502において確立されたローカルストア内のそのオブジェクトのハッシュを検索する。一致するいかなるものも捨てる。
ステップ1526では、ローカルキャッシュ内の深さ0、深さ1およびより高いオブジェクトのそれぞれについて、広域インデックス1116においてそのオブジェクトのハッシュを検索する。一致するいかなるものも捨てる。このことは、データが広域に重複排除されることを確実にする。
ステップ1528では、残りの内容の全てをローカルキャッシュから持続的ストアに格納し、次いで、新しいチャンクを処理し続ける。
CASの中からオブジェクトを読み取ることは、より簡単なプロセスであり、CASの多くのインプリメンテーションにわたって共通である。オブジェクトのためのハンドルは、広域インデックスによって持続的データオブジェクトにマップされ、必要とされたオフセットは、この持続的データ内から読み取られる。いくつかの場合において、オブジェクトハンドルツリー内のいくつかの深さを通して再帰的に処置する必要があり得る。
CASオブジェクトネットワークレプリケーション
図11の下で記載されたように、レプリケータ1110は、2つの異なる内容参照可能ストア間でデータオブジェクトを複製するサービスである。レプリケーションのプロセスは、1つのストアの中から読み取ることと別のストアに書き戻すことによって達成され得るが、このアーキテクチャは、ローカルエリアネットワークまたはワイドエリアネットワークなどの限定された帯域幅接続上でより効率的なレプリケーションを可能にする。
各CASストアで動作するレプリケーティングシステムは、上記した差分機関サービスを図13に図示されるような時間的関係構造と共に使用し、更に、オブジェクトが複写されている遠隔ストアの記録を、CASストアにより使用される時間的データ構造に、オブジェクト毎に基づいて、追加的に格納する。このことは、ある一定のデータストアにおけるオブジェクトの存在の最終的な情報を提供する。
時間的データ構造を用いると、システムが、どのオブジェクトがどのデータストア上に存在するかを判断することが可能である。この情報は、ターゲットデータストアを最新の状態にするように、コピー動作の間にネットワーク上で送信される最小限の下位の組のデータを判断するために、データムーバーおよび差分機関によって影響を及ぼされる。例えば、データオブジェクトOが、BostonにあるサーバからSeattleにある遠隔サーバに時間T3にコピーされている場合、保護カタログストア908は、時間T3におけるオブジェクトOがBostonとSeattleとの両方に存在することを格納することになる。時間T5では、BostonからSeattleへの後続のコピーの間、時間的データ構造は、Bostonにあるソースサーバ上で差分化するために使用されるべきであるSeattleにあるオブジェクトOの前の状態を判断するために考慮されることになる。次いで、Bostonのサーバは、T5とT3との差分を取り、その差分をSeattleのサーバに送信することになる。
次いで、オブジェクトAを複写するためのプロセスは、以下の通りである。ターゲットストアおよびローカルストア内のAの近くの近隣に既に複写されているものとして記録されたオブジェクトA0を識別する。そのようなオブジェクトA0が存在しない場合には、Aを遠隔ストアに送信し、そのAを送信されているものとしてローカルに格納し記録する。ローカルオブジェクトを遠隔ストアに送信するために、本明細書で具体化されるような典型的な方法は、オブジェクト内のデータチャンクのハッシュおよびオフセットの全てを送信し、どのハッシュが遠隔に存在しないデータを表わすかに関して遠隔ストアに問い合わせ、必要とされたデータを遠隔ストアに送信することである(この実施形態では、データおよびハッシュを送信することが、TCPデータストリーム内にデータおよびハッシュを要約すること(encapsulating)によって実施される)。
逆に、A0が識別される場合には、AにあるがA0にはないデータチャンクを識別するために差分機関を動かす。これは、遠隔ストアに送信される必要があるデータの上位の組であるべきである。AにあるがA0にはないチャンクのためにハッシュおよびオフセットを送信する。どのハッシュが、遠隔に存在していないデータを表わすかに関して遠隔ストアに問い合わせる。必要とされたデータを遠隔ストアに送信する。
サンプルデプロイメントアーキテクチャ
図16は、データ管理仮想化(DMV)システムの一実施形態を備えるソフトウェア構成要素およびハードウェア構成要素を示す。システムを備えるソフトウェアは、3つの分配された構成要素として実行する。
ホストエージェントソフトウェア1602a、1602b、1602cは、上記したアプリケーション特定モジュールのいくつかを実施する。そのホストエージェントソフトウェアは、アプリケーションのデータが管理下にあるそのアプリケーションと同じサーバ1610a、1610b、1610c上で実行する。
DMVサーバソフトウェア1604a、1604bは、ここに記載されるようにシステムの残りを実施する。そのDMVサーバソフトウェアは、高可用性仮想化ストレージサービスも提供する1組のリナックス(登録商標)サーバ1612、1614上で動く。
そのシステムは、デスクトップコンピュータまたはラップトップコンピュータ1620上で動く管理クライアントソフトウェア1606によって制御される。
これらのソフトウェア構成要素は、IPネットワーク1628の上のネットワーク接続経由で互いに通信する。データ管理仮想化システムは、公衆インターネットバックボーンなどのIPネットワーク上の1次サイト1622とデータレプリケーション(DR)サイト1624との間で互いに通信する。
1次サイトおよびDRサイトにおけるDMVシステムは、ファイバチャネルネットワーク1626経由で1つ以上のSANストレージシステム1616、1618にアクセスする。1次アプリケーションを動かしているサーバは、ファイバチャネルネットワーク上のファイバチャネル経由またはIPネットワーク上のiSCSI経由でストレージにアクセスするDMVシステムにより仮想化されたストレージにアクセスする。遠隔DRサイトにあるDMVシステムは、Linux(登録商標)サーバ1628上のDMVサーバソフトウェア1604cの並列インスタンスを動かす。Linux(登録商標)サーバ1628はまた、アマゾンウェブサービスEC2インスタンスまたは他の類似のクラウド計算上のリソースであってもよい。
図17は、本発明のある一定の実施形態に従って、コンピュータ化されたシステムの様々な構成要素を描いた図であり、ある一定の要素がそのシステム上で実装され得る。記載された論理モジュールは、揮発性メモリ1702と、ハードドライブなどの持続的ストレージデバイス1708と、プロセッサ1703と、ネットワークインターフェース1704とを含むホストコンピュータ1701上で実施されてもよい。ネットワークインターフェースを用いると、システムコンピュータは、他の実施形態の間で、SANまたはファイバチャネルデバイス上でストレージプール1705、1706とやりとりすることができる。図17はシステムを例示し、システムコンピュータは、そのシステム内で様々なストレージプールから分離されるが、ストレージプールのうちのいくつかまたは全ては、ホストコンピュータ内に収容されてもよく、ネットワークインターフェースの必要性を排除してもよい。プログラムのプロセスは、図17に示されるように、単一のホスト上で実行されてもよいし、それらのプロセスは、複数ホストにわたって分散されてもよい。
図17に示されるホストコンピュータは、管理用ワークステーションとして機能してもよいし、アプリケーションおよびアプリケーション特定エージェント402を実施してもよいし、データ仮想化システム自体を含む本明細書に記載された論理モジュールのいずれかおよび全てを実施してもよいし、物理的媒体のストレージプールをシステムに露出するためのストレージコントローラとして機能してもよい。ワークステーションは、図形表示デバイス1707に、ならびにマウス1709およびキーボード1710などの入力デバイスに接続されてもよい。代わりに、アクティブユーザのワークステーションは、手持ち式デバイスを備えてもよい。
この明細書全体を通して、ソフトウェア構成要素に言及するが、ソフトウェア構成要素への全ての言及は、ハードウェア上で動いているソフトウェアを利用することが意図される。同様に、本明細書において言及されたオブジェクトおよびデータ構造は、揮発性メモリまたは不揮発性メモリに実際に格納されたデータ構造を利用することが意図される。同様に、サーバは、ソフトウェアを利用することが意図され、機関は、図17に図示されたコンピュータシステムなどのハードウェア上で全て動いているソフトウェアを利用することが意図される。
上記は、対象のより適切な特徴のいくつかを概略して記している。これらの特徴は、単なる実例となるものと解釈されるべきである。多くの他の有益な結果は、開示された対象を異なる手法で適用することによってまたは記載されるように対象を修正することによって、得られ得る。例えば、開示されたガーベジコレクションアルゴリズムは、三色マーキングなどの他のガーベジコレクション最適化手法を取り入れてもよい。

Claims (49)

  1. 1次ストレージに対する余剰なアクセス動作を削減する形で、複数の所定のデータ管理機能を実行するためのシステムであって、
    1次ストレージデータの一時点画像を2次ストレージに生成するように作動可能な少なくともスナップショット機能と、データの少なくとも1つのバックアップコピーを生成するように作動可能な少なくとも1つのバックアップ機能とを含む、データ管理機能を実行するためのデータ管理機関であって、データ管理機能を実行するためのスケジュールを規定する電子的サービスレベルアグリーメント(SLA)に応答するデータ管理機関を備え、
    データの一時点画像は、規定の時点におけるデータの完全なベースライン画像への参照と、より後の規定の時点における前記データの変化を示す差分データとを含み、
    同時に実行される少なくともいくつかのデータ管理機能を必要とする前記スケジュールに応答して、前記2次ストレージへの更新の全ての対応する組のために前記1次ストレージが一度だけアクセスされるように、前記データ管理機関は、前記1次ストレージデータの一時点画像を生成し、前記一時点画像の前記差分情報を前記2次ストレージに通信し、前記1次データのバックアップコピーの前記少なくとも1つを更新する、システム。
  2. 2次ストレージにある1次ストレージデータの前記一時点画像は、性能を最適化された2次ストレージ上に格納される、請求項1に記載のシステム。
  3. 1次ストレージデータの前記一時点画像の前記バックアップコピーは、遠隔ストレージ上に格納される、請求項1に記載のシステム。
  4. 1次ストレージデータの前記一時点画像の前記バックアップコピーは、容量を最適化されたストレージに格納される、請求項1に記載のシステム。
  5. 1次ストレージデータの前記一時点画像の前記バックアップコピーは、容量を最適化されたストレージ上に重複排除された画像として格納される、請求項4に記載のシステム。
  6. 差分データは、ビットマップの各ビットが1次ストレージデータの一部に対応するビットマップ情報を含み、データが変化したことを示すように設定される前記ビットマップのそれらの部分のための新たなデータを含む、請求項1に記載のシステム。
  7. 差分データはエクステント情報を含む、請求項1に記載のシステム。
  8. 前記データ管理機関は、データの一時点画像を提供するために前記1次ストレージを呼び出す論理部を含み、前記一時点画像を前記1次ストレージから検索する論理部を含む、請求項1に記載のシステム。
  9. 所定のデータ管理機能を実行するためにおよび機能中の余剰を削減するためにカレンダーに基づいてスケジュールを規定するサービスレベルアグリーメント(SLA)に従って、データを管理するためのシステムであって、
    少なくともスナップショット機能と少なくとも1つのバックアップ機能とを含むデータ管理機能を実行するためのデータ管理機関を備え、前記データ管理機関は、電子的形式のSLAを受信するサービスレベルポリシー機関を含み、前記データ管理機関は、前記SLAに従って前記データ管理機能の前記スケジューリングを制御し、
    電子的SLAのそれぞれは、データを使用する対応するアプリケーションと関連付けられ、各SLAは少なくとも1つのサービスレベルポリシーを規定し、SLA内のポリシーの収集が、所与の機能がいつ実行されるべきかについての非均一スケジュールを表現することができるように、ならびに、データの所与のソース上で実行されるべき複数データ管理機能を表現することができるように、各ポリシーは、データのためのソースプールと、コピーが前記ソースプールデータから作られるべきところである宛先プールと、当該ポリシーについての動作の前記頻度を示すコピー頻度と、期限が切れることが許可される前に所与のコピーがどのくらいの間保持されるべきであるかを示す保持期間と、前記ポリシーが実施される動作の時間および日を示すスケジュール情報とを規定し、
    前記データ管理機関は、前記データの前記ソースプールがコピーされるデータの明瞭な画像を有するように、前記アプリケーションを用いておよび前記ソースプールを用いて準備動作を実行するように動作可能であり、前記SLAが、現在の時間に前記ソースプール上で実行される複数データ管理機能を規定する場合でも、前記準備動作は一度実行される、システム。
  10. 2つ以上のコピー動作が、同じソースプールと宛先プールとの間で同じ瞬間に行われるようにスケジュールされる場合、前記2つ以上のコピー動作のうちの1つだけが、前記データ管理機関によって実行され、当該コピーは、前記2つ以上のスケジュールされたコピー動作に対応する最も長い前記保持期間と関連付けられる、請求項9に記載のシステム。
  11. 準備動作は、アプリケーションデータと関連して格納するために前記アプリケーションについてのメタデータを収集する前記データ管理機関を含む、請求項9に記載のシステム。
  12. 準備動作は、アプリケーション静止動作を含む、請求項9に記載のシステム。
  13. 前記アプリケーション静止動作は、アプリケーションデータを更に更新することから前記アプリケーションをフリーズすることを含む、請求項12に記載のシステム。
  14. 前記アプリケーション静止動作は、アプリケーションデータの前記アプリケーションサーバの前記入出力キャッシュをフラッシュすることを含む、請求項12に記載のシステム。
  15. 時間状態間の差分情報を用いて第1のストレージプールから第2のストレージプールにデータをバックアップするためのシステムであって、
    データのバックアップコピーを生成するためのバックアップ機能を少なくとも含む、データ管理機能を実行するためのデータ管理機関を備え、
    前記データ管理機関は、第1のストレージプール上のアプリケーションデータの一時点画像を生成するために一連のスナップショット動作を実行するように動作可能であり、連続的な一時点画像のそれぞれは、前記アプリケーションデータの規定の、連続的な時間状態に対応し、各スナップショット動作は、どのアプリケーションデータが変化したかと、前記対応する時間状態について変化した前記アプリケーションデータの前記内容とを示す差分情報を生成し、
    前記データ管理機関は、前記アプリケーションデータのために少なくとも1つのバックアップ機能を実行するように動作可能であり、前記バックアップ動作は、非連続的な時間状態における実行のためにスケジュールされ、
    前記データ管理機関は、データの対応するバックアップコピーのために前記アプリケーションデータ上で実行される最後のバックアップ機能の前記時間状態を示す時間状態情報を有する履歴情報を保持するように動作可能であり、
    前記データ管理機関は、前記アプリケーションデータ上で実行される前記最後のバックアップ機能の前記時間状態と、前記アプリケーションデータ上で実行される現在スケジュールされた前記バックアップ機能の前記時間状態との間の各時間状態についての前記差分情報から複合差分情報を生成するように動作可能であり、前記データ管理機関は、前記現在の時間状態についてのデータのバックアップコピーを生成するために、前記最後の時間状態における前記データの前記バックアップコピーでコンパイルされる第2のストレージプールに前記複合差分情報を送信するように動作可能である、システム。
  16. 差分情報は、ビットマップの各ビットが1次ストレージデータの一部に対応しているビットマップ情報を含み、前記データが変化したことを示すように設定された前記ビットマップのそれらの部分のための新しいデータを含む、請求項15に記載のシステム。
  17. 差分情報はエクステント情報を含む、請求項15に記載のシステム。
  18. 複数のバックアップ機能は、非連続的な時間状態の異なる隔たりをそれぞれ用いて、および、前記異なる隔たりに対応して生成された異なる複合差分情報をそれぞれ用いて、同時に行われるようにスケジュールされる、請求項15に記載のシステム。
  19. 時間状態間の差分情報を用いてデータのバックアップコピーからストレージプールに前記データを復元するためのシステムであって、
    前記時間状態を示す履歴情報を保持するように動作可能であるデータ管理機関であって、ストレージプールが、前記時間状態についてのアプリケーションデータの一時点画像を有する、データ管理機関を備え、
    前記データ管理機関は、ストレージプール内のアプリケーションデータを規定の時間状態についての前記データの一時点画像に復元するための論理部を含み、
    前記データ管理機関は、前記規定の時間状態の前の時間状態について前記ストレージプールにおける前記データの一時点画像の存在を識別するように動作可能であり、前記データの前記バックアップコピーから前記ストレージプールに差分情報を送信し、前記差分情報は、どのアプリケーションデータが変化したかと、前記規定の時間状態と前記規定の時間状態の前の前記時間状態との間の前記時間の間に前記変化したアプリケーションデータの前記内容とを示す、システム。
  20. 差分情報は、ビットマップの各ビットが1次ストレージデータの一部に対応するビットマップ情報を含み、前記データが変化したことを示すように設定された前記ビットマップのそれらの部分のためのバックアップデータを含む、請求項19に記載のシステム。
  21. 差分情報はエクステント情報を含む、請求項19に記載のシステム。
  22. 前記前の時間状態および前記規定の時間状態は、非連続的な時間状態である、請求項19に記載のシステム。
  23. データオブジェクトの時間的状態間の差分情報を用いて、時間の経過に伴って変化する前記データオブジェクトの重複排除された画像を形成する方法であって、
    第1の時間的状態について前記データオブジェクトの前記内容を複数の内容区分として編成することと、前記内容区分をデータストアに格納することと、
    前記データオブジェクトの第1の時間的状態にある前記データオブジェクトを表わすようにハッシュ構造の編成された配列を生成することであって、前記ハッシュ構造の下位の組について、各構造が、対応する内容区分のためのハッシュ署名を含み、前記対応する内容区分への参照と関連付けられ、前記配列の前記論理的編成は、前記内容区分が前記データオブジェクト内に表わされる際に前記内容区分の前記編成を表わす、当該ハッシュ構造の編成された配列を生成することと、
    前記第1の時間的状態に関連する第2の時間的状態について前記データオブジェクトについての前記変化した内容を示し、および、前記データオブジェクト内の前記変化した内容の前記位置を示す、前記データオブジェクトのための差分情報を受信することと、
    前記変化した内容のための少なくとも1つのハッシュ署名を形成することと、
    固有である前記変化した内容を内容区分として前記データストアに格納することと、
    前記変化した内容のための前記少なくとも1つのハッシュ署名用の新しい構造を組み込むために前記ハッシュ構造の前記編成された配列を修正することと、前記差分情報内に示されるような前記データオブジェクト内の前記変化した内容の前記位置に対応する位置における前記構造の前記編成された配列に前記新しい構造を組み込むことと、前記変化した内容について前記対応する内容区分に関して前記新しい構造のための前記ハッシュ署名を関連付けることと、
    前記新しい構造を前記第2の時間的状態と関連付けることによって、第2の時間的状態についての前記データオブジェクトの重複排除された画像が、前記第2の時間的状態についての前記データオブジェクトの完全な画像の受信を要求すること無く、格納されることとを含む、方法。
  24. 前記変化した内容のための前記少なくとも1つのハッシュ署名を形成した後に、前記形成された署名は、前記形成された構造が前記編成された配列に既に存在するかどうかを判断するために、前記ハッシュ構造の前記編成された配列における少なくとも1つのハッシュ署名と比較される、請求項23に記載の方法。
  25. 前記比較は、前記差分情報に示されるような前記変化した内容の前記位置に対応する位置にある前記編成された配列におけるハッシュ構造を用いて、まず行われる、請求項23に記載の方法。
  26. 前記ハッシュ構造の前記編成された配列は、編成されたツリー構造である、請求項23に記載の方法。
  27. 時間的構造の編成された配列は保持され、各時間的構造は、時間状態と関連付けられ、および、前記関連付けられた時間状態に対応する前記ハッシュ構造を示す情報をそれぞれ含む、請求項23に記載の方法。
  28. 時間の経過に伴って変化するデータオブジェクトの重複排除された画像を管理する方法であって、
    各データオブジェクトの固有の内容を複数の内容区分として編成することと、前記内容区分をデータストアに格納することと、
    各データオブジェクトについて、ハッシュ構造の編成された配列を生成することであって、各構造が、前記ハッシュ構造の下位の組について、対応する内容区分のためのハッシュ署名を含み、前記対応する内容区分への参照と関連付けられ、前記配列の前記論理的編成は、前記内容区分が前記データオブジェクト内に表わされる際に前記内容区分の前記論理的編成を表わし、前記ハッシュ構造の別の下位の組は、内容が前記ハッシュ構造の前記編成された配列によって表わされるかどうかを判断するために、前記編成された配列が横断され得るように、対応する内容区分について前記ハッシュ署名のハッシュ署名階層を含む、当該ハッシュ構造の編成された配列を生成することと、
    各データオブジェクトについて、時間の経過に伴って対応するデータオブジェクトを表わすために、時間的構造の編成された配列を保持することであって、各構造が、前記データオブジェクトの時間的状態と関連付けられ、前記構造の前記論理的配列が、前記データオブジェクトの変化している前記時間的状態を示し、各時間的状態が、前記時間的状態の間に前記データオブジェクトの前記内容を表わす前記ハッシュ構造と関連付けられる、当該時間的構造の編成された配列を保持することとを含む、方法。
  29. 所与の時間的状態におけるデータオブジェクトについての前記時間的構造は、前記データオブジェクトの前の時間的状態に対して変化したデータオブジェクト内容のためのハッシュ構造と関連付けられる、請求項28に記載の方法。
  30. 前記変化したデータ内容のための前記ハッシュ構造は、前の時間的状態についての前記ハッシュ構造の前記編成された配列から切り離されたグラフとして編成される、請求項28に記載の方法。
  31. 1つの時間的状態から別の時間的状態までのデータオブジェクトの内容の差分は、当該差分が複数の時間的状態を通して判断され得るように、他の時間的状態についておよび前記他の時間的状態と前記1つの時間的状態との間にある全ての他の時間的状態について、前記時間的構造の前記編成された配列を参照することによって判断される、請求項28に記載の方法。
  32. 画像の一部が符号化された形態でハッシュ表に直接的に格納される、重複排除された当該画像を格納する方法であって、
    各データオブジェクトの固有の内容を複数の内容区分として編成することと、前記内容区分をデータストアに格納することと、
    各データオブジェクトについて、ハッシュ構造の編成された配列を生成することであって、各構造が、前記ハッシュ構造の下位の組について、対応する内容区分のためのハッシュ署名を含有するフィールドを含み、前記対応する内容区分への参照と関連付けられ、前記配列の前記論理的編成が、前記内容区分が前記データオブジェクト内に表わされる際に前記内容区分の前記論理的編成を表わす、当該ハッシュ構造の編成された配列を生成することと、
    前記データオブジェクトの前記重複排除された画像に含まれる内容を受信することと、
    符号化された値がハッシュ署名を含有するための前記フィールド内に収まることになる、既定の無損失符号化技術を用いて、前記受信された内容が符号化され得るかどうかを判断することと、
    そうである場合、前記符号化を前記フィールドに配置することと、前記フィールドが前記重複排除された画像のために符号化された内容を含むことを示すために前記ハッシュ構造をマーキングすることと、
    そうではない場合、前記受信された内容のためのハッシュ署名を生成することと、前記ハッシュ署名を前記フィールドに配置することと、前記ハッシュ署名が固有である場合には前記受信された内容を前記データストア内の対応する内容区分に配置することとを含む、方法。
  33. 前記無損失符号化はランレングス符号化である、請求項32に記載の方法。
  34. 各データオブジェクトのためのハッシュ署名は、SHA‐1暗号ハッシュ機能を用いて生成される、請求項32に記載の方法。
  35. 前記符号化された内容から前記内容を後に再構成することを更に含む、請求項32に記載の方法。
  36. データオブジェクトがどのように時間の経過に伴って変化するかを表わす情報で第2の重複排除ストアを更新するために、第1の重複排除ストアを用いる方法であって、
    第1の重複排除ストアで、各データオブジェクトの固有の内容を複数の内容区分として編成することと、前記内容区分をデータストアに格納することと、
    第1の重複排除ストアで、各データオブジェクトについて、ハッシュ構造の編成された配列を生成することであって、各構造が、前記ハッシュ構造の下位の組について、対応する内容区分のためのハッシュ署名を含み、前記対応する内容区分への参照と関連付けられ、前記配列の前記論理的編成は、前記内容区分が前記データオブジェクト内に表わされる際に前記内容区分の前記論理的編成を表わす、当該ハッシュ構造の編成された配列を生成することと、
    第1の重複排除ストアで、各データオブジェクトについて、時間の経過に伴って対応するデータオブジェクトを表わすために時間的構造の編成された配列を保持することであって、各構造が、前記データオブジェクトの時間的状態と関連付けられ、前記構造の前記論理的配列は、前記データオブジェクトの変化する前記時間的状態を示し、各時間的状態は、前の時間的状態に対して変化した前記データオブジェクトの前記内容を表わす前記ハッシュ構造と関連付けられる、当該時間的構造の編成された配列を保持することと、
    第2の重複排除ストアで、各データオブジェクトの固有の内容を複数の内容区分として編成することと、前記内容区分をデータストアに格納することと、
    第2の重複排除ストアで、各データオブジェクトについて、前記第1の重複排除ストアにおける前記ハッシュ構造の少なくとも下位の組である、ハッシュ構造の編成された配列を保持することと、
    第2の重複排除ストアで、各データオブジェクトについて、時間の経過に伴って対応するデータオブジェクトを表わすために、時間的構造の編成された配列を保持することであって、時間的構造の前記編成された配列は、前記時間的状態の下位の組を表わす、前記第1の重複排除ストアにおける前記時間的構造の少なくとも下位の組である、当該時間的構造の編成された配列を保持することと、
    前記第1の重複排除ストアからの情報で前記第2の重複排除ストアを更新する要求に応答して、前記第1および第2の重複排除ストアに共通である時間的状態であって、前記第2の重複排除ストアの現在の状態に時間的に近い時間的状態を見つけることと、
    前記共通状態から前記第1の重複排除ストアの前記現在の時間的状態に変化した前記内容のためのハッシュ署名の組をコンパイルすることと、前記第2の重複排除ストアが、前記第1の重複排除ストアの前記現在の時間的状態まで前記データオブジェクトの前記内容を表わすために、前記第2の重複排除ストアのハッシュ構造の編成された配列を更新し得るように、前記ハッシュ署名の前記組を前記第2の重複排除ストアに送信することとを含む、方法。
  37. 各重複排除ストアが含有する前記ハッシュ署名の履歴を保持することと、前記第2の重複排除ストアに対して新しい前記ハッシュ署名の前記組におけるハッシュ署名について、前記第2の重複排除ストアが、前記新しい内容で前記第2の重複排除ストアのデータストアを更新し得るように、前記第1の重複排除ストアから前記対応する内容区分を送信することとを更に含む、請求項36に記載の方法。
  38. 前記第2の重複排除ストアの前記現在の状態に近い前記時間的状態は、前記現在の状態の最も近い近隣状態である、請求項36に記載の方法。
  39. 前記第2の重複排除ストアの前記現在の状態に近い前記時間的状態は、前記現在の状態の先祖状態である、請求項36に記載の方法。
  40. 前記第2の重複排除ストアの前記現在の状態に近い前記時間的状態は、前記現在の状態の子状態である、請求項36に記載の方法。
  41. 前記最も近い近隣状態は、端部の組の合計が端部の任意の他の組の合計よりも小さい当該端部の組によって接続された状態である、請求項38に記載の方法。
  42. 前記構造の前記論理的配列は分岐を含有する、請求項36に記載の方法。
  43. 前記現在の状態で、前記現在の時間的状態に対応する前記内容区分がどの状態に送信されているかを記録することを更に含む、請求項37に記載の方法。
  44. マークアンドスイープ手法における余剰なマーク動作が回避される重複排除ストレージシステムにおいて、もはや参照されない内容区分を識別するためにガーベジコレクションを実行する方法であって、
    前記重複排除ストレージシステムにおいて各データオブジェクトの固有の内容を複数の内容区分として編成することと、
    各データオブジェクトについて、ハッシュ構造の編成された配列を生成することであって、各構造が、前記ハッシュ構造の下位の組について、対応する内容区分のためのハッシュ署名を含み、前記対応する内容区分への参照と関連付けられ、前記配列の前記論理的編成が、前記内容区分が前記データオブジェクト内に表わされる際に前記内容区分の前記論理的編成を表わし、前記ハッシュ構造の別の下位の組は、前記編成された配列が、内容が前記ハッシュ構造の前記編成された配列によって表わされるかどうかを判断するために横断され得るように、対応する内容区分のための前記ハッシュ署名のハッシュ署名階層を含む、当該ハッシュ構造の編成された配列を生成することと、
    各データオブジェクトについて、時間の経過に伴って対応するデータオブジェクトを表わすために時間的構造の編成された配列を保持することであって、各構造が、前記データオブジェクトの時間的状態と関連付けられ、前記構造の前記論理的配列が、前記データオブジェクトの変化する前記時間的状態を示しており、各時間的状態が、前記データオブジェクトの直前の時間的状態に対して変化した前記データオブジェクトの前記内容を表わす前記ハッシュ構造と関連付けられる、当該時間的構造の編成された配列を保持することと、
    前記重複排除ストレージシステムにおける各内容区分について、前記各内容区分の対応するガーベジコレクション状態をクリアにすることと、
    前記時間的構造にわたって反復することと、各時間的構造について、前記データオブジェクトの直前の時間的状態に対して変化した前記内容区分だけについて前記関連付けられた内容区分のために前記ガーベジコレクション状態をマーキングすることと、
    前記反復するステップの後に、クリアにされたガーベジコレクション状態を有するストレージの空いたプールに任意の内容区分を戻すこととを含む、方法。
  45. 深さ優先探索を用いて前記時間的構造にわたって反復することを更に含む、請求項44に記載の方法。
  46. 周期的な間隔で前記方法を繰り返すことを更に含む、請求項44に記載の方法。
  47. データオブジェクトの新しい時間的状態の前記追加に後続する前記方法を実行することを更に含む、請求項44に記載の方法。
  48. データオブジェクトの時間的状態の前記除去に後続する前記方法を実行することを更に含む、請求項44に記載の方法。
  49. 前記重複排除されたストレージシステムに割り当てられた内容区分の全ての広域参照リストを保持することを更に含む、請求項44に記載の方法。
JP2013539918A 2010-11-16 2011-11-11 データ管理仮想化のためのシステムおよび方法 Pending JP2013543198A (ja)

Applications Claiming Priority (17)

Application Number Priority Date Filing Date Title
US12/947,438 2010-11-16
US12/947,375 2010-11-16
US12/947,375 US8843489B2 (en) 2010-11-16 2010-11-16 System and method for managing deduplicated copies of data using temporal relationships among copies
US12/947,418 2010-11-16
US12/947,513 2010-11-16
US12/947,385 2010-11-16
US12/947,393 2010-11-16
US12/947,385 US9858155B2 (en) 2010-11-16 2010-11-16 System and method for managing data with service level agreements that may specify non-uniform copying of data
US12/947,393 US8788769B2 (en) 2010-11-16 2010-11-16 System and method for performing backup or restore operations utilizing difference information and timeline state information
US12/947,418 US8402004B2 (en) 2010-11-16 2010-11-16 System and method for creating deduplicated copies of data by tracking temporal relationships among copies and by ingesting difference data
US12/947,438 US8299944B2 (en) 2010-11-16 2010-11-16 System and method for creating deduplicated copies of data storing non-lossy encodings of data directly in a content addressable store
US12/947,436 US8904126B2 (en) 2010-11-16 2010-11-16 System and method for performing a plurality of prescribed data management functions in a manner that reduces redundant access operations to primary storage
US12/947,513 US8417674B2 (en) 2010-11-16 2010-11-16 System and method for creating deduplicated copies of data by sending difference data between near-neighbor temporal states
US12/947,383 US8396905B2 (en) 2010-11-16 2010-11-16 System and method for improved garbage collection operations in a deduplicated store by tracking temporal relationships among copies
US12/947,383 2010-11-16
US12/947,436 2010-11-16
PCT/US2011/060417 WO2012067964A1 (en) 2010-11-16 2011-11-11 Systems and methods for data management virtualization

Publications (1)

Publication Number Publication Date
JP2013543198A true JP2013543198A (ja) 2013-11-28

Family

ID=46084354

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013539918A Pending JP2013543198A (ja) 2010-11-16 2011-11-11 データ管理仮想化のためのシステムおよび方法

Country Status (8)

Country Link
EP (1) EP2643760A4 (ja)
JP (1) JP2013543198A (ja)
KR (1) KR20140051107A (ja)
CN (1) CN103415842B (ja)
AU (1) AU2011329232A1 (ja)
BR (1) BR112013012134A2 (ja)
CA (1) CA2817592A1 (ja)
WO (1) WO2012067964A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015225510A (ja) * 2014-05-28 2015-12-14 日本電気株式会社 バックアップシステムおよびバックアップ方法

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8983961B2 (en) 2012-11-29 2015-03-17 International Business Machines Corporation High availability for cloud servers
KR101451807B1 (ko) 2012-12-24 2014-10-22 주식회사 케이티 NoSQL 메타 데이터의 백업 및 복원장치 및 방법
CN104679665A (zh) * 2013-12-02 2015-06-03 中兴通讯股份有限公司 一种实现分布式文件系统块存储的方法及系统
CN104750538B (zh) * 2013-12-27 2020-03-03 伊姆西Ip控股有限责任公司 用于为目标应用提供虚拟存储池的方法和系统
CN104133852B (zh) * 2014-07-04 2018-03-16 小米科技有限责任公司 网页访问方法、装置、服务器及终端
WO2016043757A1 (en) * 2014-09-18 2016-03-24 Hewlett Packard Enterprise Development Lp Data to be backed up in a backup system
WO2016048263A1 (en) 2014-09-22 2016-03-31 Hewlett Packard Enterprise Development Lp Identification of content-defined chunk boundaries
CN104361069A (zh) * 2014-11-07 2015-02-18 广东电子工业研究院有限公司 一种集成本地文件系统的云存储服务方法
BR112016028144A2 (pt) * 2015-01-13 2017-08-22 Simplivity Corp Sistemas e métodos para comparações de assinatura otimizadas e replicação de dados
CN105068767A (zh) * 2015-08-19 2015-11-18 山东超越数控电子有限公司 一种基于一致性hash算法的全虚拟化存储方法
CN105938457B (zh) * 2016-03-31 2018-10-02 华为技术有限公司 数据的过滤方法、装置及数据读取系统
US10785302B2 (en) * 2016-10-31 2020-09-22 Huawei Technologies Co., Ltd. Systems and methods for unified data management in a communication network
US10346062B2 (en) * 2016-11-16 2019-07-09 International Business Machines Corporation Point-in-time backups via a storage controller to an object storage cloud
US10642879B2 (en) 2017-01-06 2020-05-05 Oracle International Corporation Guaranteed file system hierarchy data integrity in cloud object stores
US10846339B2 (en) * 2017-06-20 2020-11-24 Cisco Technology, Inc. Structured schema for temporal graph storage and retrieval
US10572168B2 (en) * 2017-11-16 2020-02-25 International Business Machines Corporation DRAM bank activation management
CN110019097B (zh) * 2017-12-29 2021-09-28 中国移动通信集团四川有限公司 虚拟逻辑副本管理方法、装置、设备及介质
US11151161B2 (en) * 2018-07-06 2021-10-19 Snowflake Inc. Data replication and data failover in database systems
US10705927B2 (en) * 2018-07-19 2020-07-07 Hewlett Packard Enterprise Development Lp Freeze a volume of a replication set and unfreeze the volume based on at least one of a snapshot permit message, a snapshot abort message, and expiration of a timeout
US11573892B2 (en) * 2019-04-26 2023-02-07 EMC IP Holding Company LLC Garbage collection for a deduplicated cloud tier using microservices
CN112699097B (zh) * 2020-12-31 2024-03-08 北京浩瀚深度信息技术股份有限公司 一种多元策略镜像实现方法、装置及存储介质
US11922047B2 (en) * 2021-09-16 2024-03-05 EMC IP Holding Company LLC Using RPO as an optimization target for DataDomain garbage collection
CN114218014B (zh) * 2021-12-21 2022-07-19 中科豪联(杭州)技术有限公司 基于存储卷级的虚拟服务器备份及还原方法
CN116088770B (zh) * 2023-03-20 2023-07-14 苏州浪潮智能科技有限公司 数据管理方法及装置、系统、电子设备、存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007089502A1 (en) * 2006-01-26 2007-08-09 Network Appliance, Inc. Content addressable storage array element
JP2009146381A (ja) * 2007-10-24 2009-07-02 Hitachi Ltd ストレージシステム群
JP2010072746A (ja) * 2008-09-16 2010-04-02 Hitachi Ltd ストレージシステム、及びストレージシステムの運用方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020049778A1 (en) * 2000-03-31 2002-04-25 Bell Peter W. System and method of information outsourcing
JP2003202964A (ja) * 2002-01-09 2003-07-18 Hitachi Ltd 計算機システムの制御方法、計算機システム、記憶装置の制御方法及び記憶装置
US8311988B2 (en) * 2006-08-04 2012-11-13 Apple Inc. Consistent back up of electronic information
US7797279B1 (en) * 2007-12-31 2010-09-14 Emc Corporation Merging of incremental data streams with prior backed-up data
US10642794B2 (en) * 2008-09-11 2020-05-05 Vmware, Inc. Computer storage deduplication
US8701106B2 (en) * 2008-11-30 2014-04-15 Red Hat Israel, Ltd. Hashing storage images of a virtual machine

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007089502A1 (en) * 2006-01-26 2007-08-09 Network Appliance, Inc. Content addressable storage array element
JP2009146381A (ja) * 2007-10-24 2009-07-02 Hitachi Ltd ストレージシステム群
JP2010072746A (ja) * 2008-09-16 2010-04-02 Hitachi Ltd ストレージシステム、及びストレージシステムの運用方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015225510A (ja) * 2014-05-28 2015-12-14 日本電気株式会社 バックアップシステムおよびバックアップ方法

Also Published As

Publication number Publication date
CA2817592A1 (en) 2012-05-24
KR20140051107A (ko) 2014-04-30
AU2011329232A1 (en) 2013-06-06
EP2643760A1 (en) 2013-10-02
EP2643760A4 (en) 2015-09-30
BR112013012134A2 (pt) 2016-09-27
CN103415842A (zh) 2013-11-27
WO2012067964A1 (en) 2012-05-24
CN103415842B (zh) 2016-02-03

Similar Documents

Publication Publication Date Title
US9384207B2 (en) System and method for creating deduplicated copies of data by tracking temporal relationships among copies using higher-level hash structures
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
US8396905B2 (en) System and method for improved garbage collection operations in a deduplicated store by tracking temporal relationships among copies
US9372866B2 (en) System and method for creating deduplicated copies of data by sending difference data between near-neighbor temporal states
US8299944B2 (en) System and method for creating deduplicated copies of data storing non-lossy encodings of data directly in a content addressable store
US8788769B2 (en) System and method for performing backup or restore operations utilizing difference information and timeline state information
JP2013543198A (ja) データ管理仮想化のためのシステムおよび方法
US9858155B2 (en) System and method for managing data with service level agreements that may specify non-uniform copying of data
US9563683B2 (en) Efficient data replication
US8983915B2 (en) Successive data fingerprinting for copy accuracy assurance
US20150227602A1 (en) Virtual data backup
KR20150021117A (ko) 강화형 데이터 관리 가상화 시스템

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141110

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150930

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151105

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160204

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20160822