JP6033241B2 - データー重複排除のためのバックアップおよび復元方策 - Google Patents

データー重複排除のためのバックアップおよび復元方策 Download PDF

Info

Publication number
JP6033241B2
JP6033241B2 JP2013558039A JP2013558039A JP6033241B2 JP 6033241 B2 JP6033241 B2 JP 6033241B2 JP 2013558039 A JP2013558039 A JP 2013558039A JP 2013558039 A JP2013558039 A JP 2013558039A JP 6033241 B2 JP6033241 B2 JP 6033241B2
Authority
JP
Japan
Prior art keywords
data
chunk
backup
stream
optimized
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013558039A
Other languages
English (en)
Other versions
JP2014508362A (ja
Inventor
カラチ,ラン
チャン,チュン・ホー(イアン)
オルティーン,ポール・エイドリアン
ディクソン,マシュー・ジェームズ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2014508362A publication Critical patent/JP2014508362A/ja
Application granted granted Critical
Publication of JP6033241B2 publication Critical patent/JP6033241B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • 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/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
    • 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

Description

[0001] データー重複排除は、データー最適化としても知られており、元のデーターの忠実性や完全性を損なうことなく、ディスク上に格納する、またはネットワークを跨いで送信する必要があるデーターの物理的バイト量を低減する動作(act)である。データー重複排除は、データーを格納するために必要とされる記憶容量を削減し、したがって、ストレージ・ハードウェアのコストおよびデーター管理コストに関して節約をもたらすことができる。データー重複排除は、急速に増大するディジタル格納データーを処理することに対する解決策を提供する。
[0002] データー重複排除は、1つ以上の技法にしたがって、永続的に格納されるファイル内部およびこれらのファイル間における冗長性を排除するために実行することができる。例えば、1つの技法によれば、1つ以上のファイルにおいて多数回出現する一意のデーター領域を特定することができ、これら特定した一意のデーター領域の1つのコピーを物理的に格納することができる。これら特定した一意のデーター領域(データー「チャンク」とも呼ぶ)に対する参照を格納することができ、この参照は、当該ファイルと、これらを含むファイル内の位置を示す。この技法は、一般に単一インスタンス化(single instancing)と呼ばれている。単一インスタンス化に加えて、データーの圧縮も実行することができる。また、データー重複排除解解決手段の一部として、他のデーター削減技法を実施することもできる。
[0003] データー重複排除技法にしたがって格納されたデーターを管理する際に、困難が生ずる。例えば、データー重複排除によって強制されるデーター断片化のために、重複排除にしたがって格納されたファイルにアクセスするときに、レイテンシーが生ずる可能性がある。このレイテンシーのために、特に、ユーザーがシームレスで高速なファイルへのアクセスを期待する主記憶データーに対して、データー重複排除解決策の採用が抑えられる。更に、重複排除アルゴリズムは、専用機器(appliance)上またはデーターを格納および供給するデバイス(例えば、ファイル・サーバ)上において実行する場合がある。ファイル・サーバの場合、データー重複排除はデバイスの主要機能ではないかもしれず、したがって、デバイスのリソース(例えば、メモリー、入力/出力(I/O)メカニズム、中央演算装置(CPU)容量等)を消費し過ぎないように、効率的でなければならないと考えられる。更にまた、ディジタル・データーの量は非常に高い速度で増大しつつあり、記憶デバイス(例えば、記憶ディスク)のサイズ、および計算デバイスに付随する総記憶容量も増大しており、増大する記憶量と共にうまく増減しない(scale)データー重複排除技法では困難が生ずる。データー重複排除は、データーの圧縮によって、バックアップするデーターを少なくして、データー・バックアップを一層迅速に行うことを可能にし、その結果、バックアップしたデーターの復元を高速化することができる。しかしながら、重複排除したデーターをバックアップし、バックアップ・ストレージから重複排除したデーターを復元するときに課題がある。
[0004] この摘要は、詳細な説明の章において以下で更に説明する概念から選択したものを簡略化された形式で紹介するために、設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を限定するために使用されることを意図するのでもない。
[0005] 最適化したデーター・ストリームをバックアップ・ストレージにバックアップし、バックアップ・ストレージからデーター・ストリームを復元する方法、システム、およびコンピューター・プログラム生産物を提供する。本明細書における最適化データーとは、チャンクの単一インスタンス化または圧縮というような1つ以上のデーター重複排除技法によって、最適化されたデーター、即ち、重複排除されたデーターを指す。最適化ストリームとは、重複排除されたストリームを指し、言い換えると、データー重複排除技法を用いてそのデーターが最適化されたということである。
[0006] 例えば、最適化データー・ストリームのバックアップのための実施態様について記載する。チャンク・ストアは、複数の最適化データー・ストリームを含み、各最適化データー・ストリームが複数のチャンクを有し、このチャンクが、少なくとも1つのデーター・チャンクと、最適化ストリーム・メタデーター(例えば、チャンク・ストア、グローバル・テーブル、データーベース等のチャンク・コンテナ内にストリーム・マップ・チャンクとして格納されるストリーム・マップ)とを含む。最適化ストリーム・メタデーターは、データー・チャンクの識別子を、チャンク・ストアにおけるデーター・チャンクの位置にマッピングする。チャンク・ストアは、重複排除した様式としたデーター・チャンクを含む。チャンク・ストアに格納されている最適化データー・ストリームの1つ以上を、バックアップのために特定することができる。特定した最適化データー・ストリームをバックアップするために、チャンク・ストアの少なくとも一部をバックアップ・ストレージに格納する。選択したバックアップ技法にしたがって、チャンク・ストア(その一部、またはその全体)をバックアップ・ストレージに格納する。
[0007] 例えば、ある最適化バックアップ技法によれば、チャンク・ストアの1つ以上のチャンク・コンテナを、バックアップ・ストレージに全て格納する。複数の最適化ストリーム構造をバックアップ・ストレージに格納する。最適化ストリーム構造は、バックアップのために特定された最適データー・ストリームに対するリパース・ポイント(reparse point)となる。
[0008] 無最適化バックアップ技法(un-optimized backup technique)によれば、バックアップのために特定された各最適化データー・ストリームを、対応する無最適化データー・ストリームにリハイドレートする(rehydrate)。無最適化データー・ストリームは、最適化データー・ストリームのメタデーターによって参照されているいずれのデーター・チャンクも含む。各無最適化データー・ストリームをバックアップ・ストレージに格納する。
[0009] 項目レベル・バックアップ技法によれば、バックアップのために第1最適化データー・ストリームを特定する。第1最適化データー・ストリームのメタデーターによって参照されている1つ以上のデーター・チャンクの内、未だバックアップ・ストレージに格納されていないものを判定する。第1最適化データー・ストリームの最適化ストリーム・メタデーターをバックアップ・ストレージに格納する。未だバックアップされていないと判定されたデーター・チャンクも、バックアップ・ストレージに格納する。バックアップのために特定された各最適化データー・ストリームも、同様にしてバックアップ・ストレージに格納することができる。
[0010] データー・チャンク識別子バックアップ技法によれば、各最適化データー・ストリームの最適化ストリーム・メタデーターを分析し、最適化ストリーム・メタデーターによって参照されているデーター・チャンクに対してデーター・チャンク識別子を決定する。最適化データー・ストリーム毎の最適化ストリーム構造を、対応する少なくとも1つのデーター・チャンク識別子と共に、バックアップ・ストレージに格納する。チャンク・ストアの内、参照されているデーター・チャンクを格納する1つ以上のチャンク・コンテナも、バックアップ・ストレージに格納する。
[0011] バックアップ技法は、発見法に基づくことができる。選択されたバックアップ技法は、複数の最適化データー・ストリームをバックアップ・ストレージにバックアップするために実行される。
[0012] また、バックアップ・ストレージからの最適化データー・ストリームの復元のための実施態様についても記載する。バックアップ・ストレージにおけるチャンク・ストアから最適化データー・ストリームを引き出す要求を受ける。この要求は、データー・ストリームに対応する最適化ストリーム・メタデーターの識別子を含む。最適化ストリーム・メタデーターの識別子に基づいて、復元アプリケーションへの第1のコールを生成する。この第1のコールは、バックアップ・ストレージにおいて、最適化ストリーム・メタデーター識別子によって特定された最適化ストリーム・メタデーターを格納しているストリーム・コンテナのファイル名称を指定し、更にストリーム・コンテナにおける最適化ストリーム・メタデーターに対するオフセットを指定する。第1のコールに応答して、最適化ストリーム・メタデーターを受け取る。最適化ストリーム・メタデーターにおいて参照されている少なくとも1つのデーター・チャンク識別子を特定する。バックアップ・ストレージにおける少なくとも1つのチャンク・コンテナから少なくとも1つのデーター・チャンクを得るために、最適化ストリーム・メタデーターによって参照されているデーター・チャンク識別子(1つまたは複数)に対応して、復元アプリケーションに対する少なくとも1つの追加のコールを生成する。この追加のコール(1つまたは複数)に応答して、データー・チャンク(1つまたは複数)を受け取る。データー・チャンク(1つまたは複数)は、データー・ストリームを復元するために組み合わせ可能である。
[0013] 一実施態様では、最適化ストリーム・メタデーターによって参照されているデーター・チャンク識別子は、第1ソート・キーとしてのチャンク・コンテナおよび第2キーとしてのチャンク・オフセットに基づいてソートすることができる。データー・チャンクを引き出すための復元アプリケーションに対するコールは、このソート処理によって定められる順序で生成することができる。
[0014] 一実施態様では、復元エンジンが、復元計画(restore plan)を用いて、復元アプリケーションをコールすることができる。復元計画は、データー・チャンクを収容するバックアップ・ファイルをソートすることによって復元の順序を決定する要求を含むことができ、または復元アプリケーションがキャッシュ処理および先読み動作を実行することによって最適化できるように、どのファイル範囲を復元しようとしているのか、復元アプリケーションに知らせる要求を含むことができる。
[0015] 最適化データー・ストリームのバックアップおよび/または復元システムの実施態様について記載する。一実施態様では、データー・バックアップ・モジュールが、チャンク・ストアに格納されている複数の最適化データー・ストリームの内バックアップしようとするものの識別を受け取る。データー・バックアップ・モジュールは、複数の最適化データー・ストリームをバックアップするために、チャンク・ストアの少なくとも一部をバックアップ・ストレージに格納するように構成されている。
[0016] 実施態様では、データー・バックアップ・モジュールは最適化ファイル・バックアップ・モジュール、リハイドレーション・バックアップ・モジュール、項目レベル・バックアップ・モジュール、および/またはデーター・チャンク識別子バックアップ・モジュールの内1つ以上を含むことができる。最適化ファイル・バックアップ・モジュールは、チャンク・ストア全体をバックアップ・ストレージに格納し、更に最適化データー構造を最適化データー・ストリームのリパース・ポイントとして格納するように構成されている。リハイドレーション・バックアップ・モジュールは、各最適化データー・ストリームをリハイドレートし、最適化ストリーム・メタデーターによって参照されているいずれのデーター・チャンクも含む、対応する無最適化データー・ストリームを得るように構成されている。リハイドレーション・バックアップ・モジュールは、各無最適化データー・ストリームをバックアップ・ストレージに格納する。項目レベル・バックアップ・モジュールは、最適化データー・ストリーム毎に、未だバックアップ・ストレージに格納されていない最適化データー・ストリームの最適化ストリーム・メタデーターのメタデーターによって参照されている1つ以上のデーター・チャンクを判定するように構成されている。項目レベル・バックアップ・モジュールは、最適化データー・ストリームの最適化ストリーム・メタデーターをバックアップ・ストレージに格納し、重複でないと判定された1つ以上のデーター・チャンクをバックアップ・ストレージに格納する。データー・チャンク識別子バックアップ・モジュールは、各最適化データー・ストリームの最適化ストリーム・メタデーターを分析して、最適化ストリーム・メタデーターによって参照されているデーター・チャンク(1つまたは複数)に対して少なくとも1つのデーター・チャンク識別子を判定するように構成されている。データー・チャンク識別子バックアップ・モジュールは、各最適化データー・ストリームを、対応するデーター・チャンク識別子(1つまたは複数)と共に、バックアップ・ストレージに格納し、チャンク・ストアの1つ以上のチャンク・コンテナをバックアップ・ストレージに格納する。
[0017] 一実施形態では、データー・バックアップ・モジュールは、発見法モジュールを含むことができる。発見法モジュールは、バックアップしようとするデーター・ストリームのサイズ、重複解除した後におけるデーター・ストリームのサイズ(冗長なデーター・チャンクを除去するため)、チャンク・ストアの全体的サイズ、およびこれらの量に基づいて生成することができる発見法というような発見法を含む、発見法に基づいて、バックアップ技法を選択するように構成されている。発見法モジュールは、複数の最適化データー・ストリームをバックアップ・ストレージにバックアップするために、バックアップ技法を実行することを可能にする。
[0018] 他の実施態様では、データー復元モジュールは、最適化データー・ストリームをバックアップ・ストレージから復元するように構成されている。データー復元モジュールは、ファイル・リコンストラクターを含む。ファイル・リコンストラクターは、データー・ストリームをバックアップ・ストレージにおけるチャンク・ストアから引き出す要求を受け取る。この要求は、データー・ストリームに対応する最適化ストリーム・メタデーターの識別子を含む。ファイル・リコンストラクターは、コールバック・モジュール(例えば、バックアップ/復元システムによって設けられる)を含む。コールバック・モジュールは、最適化ストリーム・メタデーターの識別子に基づいて、復元アプリケーションに対する第1のコールを生成する。第1のコールは、バックアップ・ストレージにおいて、最適化ストリーム・メタデーター識別子によって特定された最適化ストリーム・メタデーターを格納する第1チャンク・コンテナにファイル名称を指定し、更に第1チャンク・コンテナにおける最適ストリーム・メタデーターに対するオフセットを指定する。ファイル・リコンストラクターは、第1のコールに応答して、最適化ストリーム・メタデーターを受け取り、この最適化ストリーム・メタデーターにおいて参照されている少なくとも1つのデーター・チャンク識別子を判定する。コールバック・モジュールは、バックアップ・ストレージにおける1つ以上のチャンク・コンテナから1つ以上のデーター・チャンクを得るために、データー・チャンク識別子(1つ以上)に対応して、復元アプリケーションに少なくとも1つの追加のコールを生成する。ファイル・リコンストラクターは、追加のコール(1つまたは複数)に応答してデーター・チャンク(1つまたは複数)を受け取り、データー・ストリームを復元するためにデーター・チャンク(1つまたは複数)を組み合わせることができる。あるいは、ファイル・リコンストラクターは、最適化ストリーム・メタデーターおよびデーター・チャンク(1つまたは複数)をチャンク・ストアに格納してもよく、データー・ストリームに対する最適化ストリーム構造は、チャンク・ストアに格納されているチャンクを参照するストレージに格納するのでもよい。
[0019] また、コールバック・モジュールは、復元計画を用いて、復元アプリケーションをコールすることもできる。復元計画は、データー・チャンク・コンテナ・ファイル・リストをソートすることによって復元の順序を決定する要求を含むことができ、または復元アプリケーションがキャッシュ処理および先読み動作を実行することによって最適化できるように、どのファイル範囲をコンテナ・ファイルから復元しようとしているのか、復元アプリケーションに知らせる要求を含むことができる。
[0020] また、本明細書では、最適化データー・ストリームをバックアップ・ストレージに格納するため、最適化データー・ストリームをバックアップ・ストレージから復元するため、および本明細書において記載する他の実施形態のためのコンピューター・プログラム生産物についても記載する。
[0021] 本発明の更に他の特徴および利点、ならびに本発明の種々の実施形態の構造および動作について、添付図面を参照しながら以下で詳しく説明する。尚、本発明は、本明細書において記載する具体的な実施形態に限定されないことを注記しておく。このような実施形態は、本明細書では、例示の目的に限って紹介されるに過ぎない。本明細書に含まれる教示に基づけば、追加の実施形態も、関連技術(1つまたは複数)の当業者には明白であろう。
[0022] 添付図面は、本明細書に組み込まれその一部を形成するが、本発明を例示し、本記載と共に、本発明の原理を説明し、当業者が本発明を行い使用することを可能にする役割を果たす。
図1は、一実施形態例によるデーター重複排除システムのブロック図を示す。 図2は、一実施形態例によるチャック・ストアのブロック図を示す。 図3は、一実施形態例によるチャンク・ストアのブロック図を示す。 図4は、一実施形態例によるデーター・ストリーム・ストア・システムのブロック図を示す。 図5は、一実施形態例によるデーター・ストリームを格納するフローチャートを示す。 図6は、一実施形態によるデーター・ストナ内へのデーター・ストリームの格納の一例を表すブロック図を示す。 図7は、一実施形態例による、リハイドレーション(rehydration)モジュールを含むチャンク・ストア・インターフェースのブロック図を示す。 図8は、一実施形態例によるチャンク・コンテナのブロック図を示す。 図9は、一実施形態例によるリダイレクション・テーブルのブロック図を示す。 図10は、一実施形態例にしたがって、データー・ストリームを格納するフローチャートを示す。 図11は、一実施形態例にしたがって、データー・ストリームをリハイドレートするためにチャンク・ストアにアクセスするリハイドレーション・モジュールのブロック図を示す。 図12は、一実施形態例にしたがって、データー最適化システムにおいてデーターのバックアップを実行するフローチャートを示す。 図13は、一実施形態例によるデーター・バックアップ・システムのブロック図を示す。 図14は、実施形態例による最適化データー・ストリームに対して種々のバックアップ技法を実行するフローチャートを示す。 図15は、実施形態例による最適化データー・ストリームに対して種々のバックアップ技法を実行するフローチャートを示す。 図16は、実施形態例による最適化データー・ストリームに対して種々のバックアップ技法を実行するフローチャートを示す。 図17は、実施形態例による最適化データー・ストリームに対して種々のバックアップ技法を実行するフローチャートを示す。 図18は、一実施形態例にしたがって、発見法に基づいてバックアップ技法を選択し実行するプロセスを表すフローチャートを示す。 図19は、一実施形態例にしたがって、データー最適化システムにおいてバックアップ・データーの復元を実行するフローチャートを示す。 図20は、一実施形態例によるデーター復元システムのブロック図を示す。 図21は、一実施形態にしたがって、再分配(redistribution)テーブルにアクセスするコールバック・モジュールのブロック図を示す。 図22は、一実施形態例にしたがって、チャンクの更新オフセットを得るために再分配テーブルにアクセスするプロセスを表すフローチャートを示す。 図23は、一実施形態例によるファイル・リコンストラクターのブロック図を示す。 図24は、一実施形態例にしたがってデーター・チャンクを格納するプロセスを表すフローチャートを示す。 図25は、本発明の実施形態を実現するために用いることができるコンピューター例のブロック図を示す。
[0045] 本発明の特徴および利点は、以下に明記する詳細な説明を添付図面と合わせて検討することによって一層明らかとなろう。図面においては、同様の参照符合は全体を通じて対応する要素を特定する。図面において、同様の参照番号は、総じて、同一の要素、機能的に同様な要素、および/または構造的に同様な要素を示す。最初に要素が現れる図面は、対応する参照番号において一番左側の桁(1つまたは複数)によって示されている。
I.序説
[0046] 本明細書は、本発明の特徴を組み込んだ1つ以上の実施形態を開示する。開示する実施形態(1つまたは複数)は、単に本発明を例示するに過ぎない。本発明の範囲は、開示する実施形態(1つまたは複数)に限定されるのではない。本発明は、本明細書に添付する特許請求の範囲によって定められるものとする。
[0047] 本明細書において「一実施形態」、「実施形態」、「実施形態例」等に言及するときは、その記載される実施形態が特定の特徴、構造、または特性を含むことができるが、あらゆる実施形態がその特定の特徴、構造、または特性を必ずしも含まなくてもよいことを示す。更に、このような句は、必ずしも同じ実施形態に言及するとは限らない。更に、特定の特徴、構造、または特性をある実施形態と関連付けて説明するとき、明示的に記載されているか否かを問わず、このような特徴、構造、または特性を他の実施形態と関連付けて実施することは、当業者の知識の範囲内のことであることを具申する。
[0048] 本明細書における最適化データーとは、チャンクの単一インスタンス化および圧縮というようなデーター重複排除技法の内1つ以上によって最適化、即ち、重複排除されているデーターを指す。最適化ストリームとは、重複排除されたストリーム、言い換えると、データー重複排除技法を用いて最適化されたそのデーターを指す。
II.実施形態例
[0049] 実施形態は、データー重複排除のための技法を示す。このような実施形態は、データー量(例えば、バイト数)を格納すること、送信すること、またはデーターの忠実性や完全性を損なうことなく削減することを可能にする。たとえば、実施形態は、最適化データーにアクセスする際にレイテンシー量の低減を可能にする。更に、実施形態は、計算機械/デバイスのようなリソースを一層効率的に使用し、リソースの消費を低減することができる。その上更に、実施形態は、データー重複排除、重複排除データーのバックアップ、およびストレージからのバックアップ・データーの復元のための技術も提供し、これらは、格納するディジタル・データー量の増大に合わせて拡大可能(scalable)である。
[0050] 例えば、一実施形態では、データー重複排除のために、スケーラブルなチャンク・ストアを提供する。このチャンク・ストアは、最適化データーのアクセスにおいてレイテンシーを最小限に抑え、機械のリソース消費(例えば、メモリーおよびディスクI/O)を削減し、ならびにデーター重複排除、データーのバックアップ、およびデーターの復元の間における信頼性を高める種々の技法を可能にする。以下の副章において実施形態例について更に詳しく説明する。
A.データー重複排除の実施形態例
[0051] 実施形態では、格納しようとするデーターを最適化して、そのデーターに必要な記憶量を削減することができる。例えば、データー・ストリームを一意のデーター・チャンクの形態で格納することができる。データー・チャンクは、データー・ストリームを定める最適化データー・メタデーターによって参照することができる。このように、同じデーター・チャンクを多数回格納するのではなく、多数のデーター・ストリームのメタデーターが、格納されている同じデーター・チャンクを参照すればよいので、データー・ストリームが一層効率的に格納されることになる。更に、所望に応じてストレージから最適化データーを要求することもできる(例えば、アプリケーションによって)。このような場合、データー・ストリームは、対応するメタデーターにしたがって、格納されているデーター・チャンクから組み立て直すことができる。
[0052] 例えば、図1は、一実施形態例によるデーター重複排除システム100のブロック図を示す。図1に示すように、システム100は、記憶システム102、データー重複排除モジュール104、維持モジュール106、およびストレージ108を含む。更に、記憶システム102は、データー・ストリームAPI(アプリケーション・プログラミング・インターフェース)110、チャンク維持API112、およびデーター・アクセスAPI114を含む。システム100について、最適化データーの格納、およびストレージからの最適化データーの復元を例示するために、以下のように説明するが、これは限定することを意図するのではない。
[0053] システム100は、効率的にデーターをストレージ108に格納することを可能にするように、そしてストレージ108からデーターを引き出すことを可能にするように構成されている。例えば、一実施形態では、データー重複排除モジュール104があるとよい。データー重複排除モジュール104は、受信データーを格納に最適化するように構成されている。例えば、データー重複排除モジュール104は、データー・ストリーム132として受信した受信データーを圧縮することができる。データー・ストリーム132は、データー・ファイルの一部、1つのデーター・ファイル、多数のデーター・ファイル、および/またはファイルおよび/またはファイル部分のあらゆる組み合わせを含むことができる。図1に示すように、データー重複排除モジュール104は、データー・チャンク124を生成する。データー・チャンク124は、データー・ストリームを圧縮および区分したバージョンとすることができる。
[0054] データー・ストリームAPI110は、記憶システム102がデーター・チャンク124を受け取るためのインターフェースを設ける。データー・チャンク124は、このデーター・チャンク124が生成された元であるデーター・ストリーム132を形成する複数のデーター・チャンクを含むことができる。データー・ストリームAPI110は、関連技術(1つまたは複数)の当業者には周知である、適したやり方であればいずれでも構成することができる。データー・ストリームAPI110は、チャンク・ストア・インターフェース116によって受け取られるデーター・チャンク124を出力することができる。
[0055] 図1に示すように、ストレージ108は記憶システム102に結合されている。チャンク・ストア・インターフェース116は、API110、112、および114とストレージ108との間のインターフェースである。例えば、チャンク・ストア・インターフェース116は、データー・チャンク124を受け取ることができ、データー・チャンク124のデーター・チャンクをストレージ108に格納することができる。例えば、図1に示すように、ストレージ108はチャンク・ストア118を含む。チャンク・ストア・インターフェース116は、受け取ったデーター・チャンク124のデーター・チャンクをチャンク・ストア118に、データー・チャンク128として格納することができる。
[0056] データー・アクセスAPI114は、アプリケーションが記憶システム102のデーターを要求するためのインターフェースを設ける。例えば、図1に示すように、データー・アクセスAPI114は、データー・ストリーム要求120を受ける。データー・アクセスAPI114は、関連技術(1つまたは複数)における当業者には周知である、適したやり方であればいずれでも構成することができる。データー・アクセスAPI114は、チャンク・ストア・インターフェース116が受けたデーター・ストリーム要求120を出力することができる。チャンク・ストア・インターフェース116は、データー・チャンクを、データー・ストリーム要求120の要求されたデーター・ストリームに対応するストレージ108に(例えば、チャンク・ストア118に)要求することができる。チャンク・ストア・インターフェース116は、要求されたデーター・チャンクをストレージ108から、データー・チャンク130として受け取ることができ、データー・チャンク130を含むデーター・ストリームをデーター・アクセスAPI114に供給することができる。データー・アクセスAPI114は、このデーター・ストリーム(例えば、1つのファイルまたは組み立て直されたファイル)を要求元のアプリケーションに、データー・ストリーム応答122として供給することができる。
[0057] 更に、維持モジュール106は、チャンク・ストア118に格納されているデーター・チャンクに関する1つ以上の維持作業を実行するためにあるとよい。例えば、維持モジュール106は、ストレージ108に格納されているデーター・チャンクの断片化解消を実行するために、断片化解消モジュールを含むことができる。例えば、断片化解消モジュールは、ストレージ108における空き空間を排除する(例えば、コンパクション(compaction)を実行する)、関連データー・チャンクを纏めてシーケンスにする、および/または他の関連タスクを実行するように構成することができる。他の例では、維持モジュール106は、ストレージ108に格納されているデーター/チャンクのガベージ・コレクションを実行するために、ガベージ・コレクション・モジュールを含むこともできる。例えば、ガベージ・コレクション・モジュールは、ストレージ108における使用されていないデーター・チャンクを削除するように構成することができる。更に他の実施形態では、維持モジュール106は、ストレージ108に関して追加のまたは代わりの維持タスクを実行することもできる。
[0058] 図1に示すように、チャンク維持API112は、維持モジュール106が記憶システム102と相互作用するためのインターフェースを設ける。維持モジュール106は、維持タスク126(例えば、断片化解消命令、コンパクション命令、データー・チャンク削除命令等)を生成することができる。維持タスク126は、チャンク維持API112によって受けられる。チャンク維持API112は、関連技術(1つまたは複数)の当業者には周知である、適したやり方であればいずれでも構成することができる。チャンク維持API112は、は、維持タスク126をチャンク・ストア・インターフェース116に付与することができる。チャンク・ストア・インターフェース116は、ストレージ108に格納されているデーター・チャンクに対して維持タスク126を実行することを可能にすることができる。
[0059] 記憶システム102は、1つ以上のコンピューター/計算デバイスの形態を含む、適した形態であればいずれにでも実現することができる。ストレージ108は、磁気ディスク(例えば、ハード・ディスク・ドライブにおける)、光ディスク(例えば、光ディスク・ドライブにおける)、磁気テープ(例えば、テープ・ドライブにおける)、および/または他のあらゆる適したタイプの記憶媒体を含む、あらゆるタイプのメカニズムの内1つ以上を含むことができる。
[0060] 尚、データー重複排除システム100は、本発明の実施形態を実現することができる環境の一例であることを注記しておく。データー重複排除紙アステム100は、例示の目的に限って提示するのであって、限定することを意図するのではない。実施形態は、データー重複排除システムの更に他のタイプおよび構成にも組み込むこともできる。
B.データー・チャンク局在性(locality)を可能にするチャンク・ストアの実施形態例
[0061] 図1のチャンク・ストア118は、データー・チャンクの形態でデーター・ストリームをいずれのやり方でも格納することができる。例えば、チャンク・ストア118は、データー・ストリームに含まれるデーター・チャンクを示す最適化ストリーム・メタデーターを、マップ、データーベース、または他の形態で格納することができる。チャンク・ストア118は、更に、参照されているデーター・チャンクも格納することができる。一実施形態では、チャンク・ストア118は、データー重複排除技法にしたがって、データー・チャンクの重複コピーを格納しない。
[0062] 例えば、図2は、一実施形態例による、チャンク・ストア118のブロック図を示す。図2に示すように、チャンク・ストア118は、ストリーム・コンテナ202とチャンク・コンテナ204とを含む。ストリーム・コンテナ202は、1つ以上のデーター・ストリームについての最適化ストリーム・メタデーター206を含み、チャンク・コンテナ204は、複数のデーター・チャンク208を含む。データー・チャンク208は、1つ以上のデーター・ストリーム(例えば、図1のデーター・ストリーム132)によって参照されているデーターのセグメントである。最適化ストリーム・メタデーター206は、元のデーター・ストリーム構造と最適化データー・チャンク構造との間におけるマッピングを記述するデーター構造である。最適化ストリーム・メタデーター206は、参照されているデーター・チャンクを突き止め、ファイル・ストリーム・ビューに組み立てることができるように、データー・チャンク位置情報を、直接収容するかまたは間接層を介して収容する。最適化ストリーム・メタデーター206は、実施形態では、種々の形態をなすことができ、ストリーム・マップ(各ストリーム・マップが、対応するデーター・ストリームについてのデーター・チャンク位置を示す)、データーベース、またはグローバル・テーブル(全てのデーター・ストリームに対してデーター・チャンク位置を示す)の形態、あるいは他の形態を有することを含む。図2の例では、データー・チャンク208および最適化ストリーム・メタデーター206は、それぞれ、ストリーム・コンテナ202およびチャンク・コンテナ204に格納されている。これらのコンテナは、ファイル・システムにおけるファイルであってよい。一実施形態では、チャンク・ストア118は、最適化ストリーム・メタデーター206が、ファイル・ストリーム−データー・チャンク208のマッピング、データー・チャンク・アドレス、およびハッシュを記述するための内部メタデーター(データー・ストリーム・メタデーター)を収容するデーター・チャンク(例えば、各ストリーム・マップをデーター・チャンクとして格納する)として格納されるように、全てのデーターをチャンクの形態で格納することができる。あるいは、最適化ストリーム・メタデーター206を他の形態(例えば、中央データーベースまたはテーブル等)で格納してもよい。
[0063] ストリーム・コンテナ202およびチャンク・コンテナ204は、実施形態では、種々の方法で構成することができる。例えば、図3は、一実施形態例によるチャンク・ストア300のブロック図を示す。チャンク・ストア300は、図2のチャンク・ストア118の一例である。図3に示すように、チャンク・ストア300は、ストレージ・コンテナ302とチャンク・コンテナ304とを含む。ストレージ・コンテナ302は、図2のストレージ・コンテナ202の一例であり、チャンク・コンテナ304は、図2のチャンク・コンテナ204の一例である。図3の実施形態では、ストレージ・コンテナ302は、ファイル・ヘッダー306、リダイレクション・テーブル308、および複数のストリーム・マップ310を含む。ストリーム・マップ310は、最適化ストリーム・メタデーター206の例であり、図示を容易にするために設けられている。例示の目的に限って、最適化ストリーム・メタデーター206は、ここではストリーム・マップに関して頻繁に記載されることがあるが、他の実施形態では、最適化ストリーム・メタデーター206を代わりにデーターベース、グローバル・テーブル等として格納してもよいことが理解されることを意図している。
[0064] 図3には、例示の目的に限って、第1および第2ストリーム・マップ310aおよび310bが示されているが、実施形態では、いずれの数のストリーム・マップ310でもストリーム・コンテナ302に含まれてもよく、数百、数千、そしてそれよりも更に多い数のストリーム・マップ310を含む。チャンク・コンテナ304は、ファイル・ヘッダー318、リダイレクション・テーブル320、および複数のデーター・チャンク322を含む。図3には、例示の目的に限って、第1および第2データー・チャンク322aおよび322bが示されているが、実施形態では、いずれの数のデーター・チャンク322でもチャンク・コンテナ304に含まれてもよく、数百、数千、そしてそれよりも更に多い数のデーター・チャンク322を含む。図3のこれらの特徴について、以下のように説明する。
[0065] ファイル・ヘッダー306は、ストリーム・コンテナ302がファイルとして格納される実施形態では、ストリーム・コンテナ302のファイル・ヘッダーとなる。ファイル・ヘッダー306は、ストリーム・コンテナ識別子(例えば、ストリーム・コンテナ識別番号)等を含む、ストリーム・コンテナ302と関連のある情報を含むことができる。
[0066] リダイレクション・テーブル308がストリーム・コンテナ302内にあるのは任意である。ある場合、リダイレクション・テーブル308は、ストリーム・マップ310の内いずれのストリーム・コンテナ302における位置変化に関する情報も格納することができる。例えば、第1ストリーム・マップ310aをストリーム・コンテナ302から削除することもあり、第2ストリーム・マップ310bを第1ストリーム・マップ310aの位置に移動させることもある(例えば、断片化解消またはコンパクション・ルーチンのために)。この移動に続いて、アプリケーションがストリーム・コンテナ302にアクセスして、第2ストリーム・マップ310bを引き出すことができる。しかしながら、このアプリケーションは、第2ストリーム・マップ310bの以前の位置も引き続き使っている場合もある。リダイレクション・テーブル308は、第2ストリーム・マップ310bの現在の位置を示す第2ストリーム・マップ310bについてのマッピングを含むことができる。したがって、アプリケーションは、リダイレクション・テーブル308にアクセスして、第2ストリーム・マップ310bの現在の位置を判定することができ、これによってこの新たな位置から第2ストリーム・マップ310bを引き出すことを可能にすることができる。
[0067] ストリーム・マップ310は、図2の最適化ストリーム・メタデーター206の例である。ストリーム・マップ310の各々は、特定のデーター・ストリームを構成するデーター・チャンク332のシーケンスを定めるために用いられる。図3に示すように、ストリーム・マップ310の各々は、ストリーム・ヘッダー312、メタデーター314、およびハッシュ値316を含むことができる。例えば、第1ストリーム・マップ310aは、ストリーム・ヘッダー312a、メタデーター314a、およびハッシュ値316aを含むことが示されており、第2ストリーム・マップ310bは、ストリーム・ヘッダー312b、メタデーター314b、およびハッシュ値316bを含むことが示されている。各ストリーム・ヘッダー312は、ストリーム・マップ識別子(例えば、ストリーム・マップ識別番号のような)等のような、対応するストリーム・マップ310に関連する情報を含む。各メタデーター314は、対応するストリーム・マップ310によって定められるデーター・ストリームを構成するデーター・チャンク322を記述する情報を含む。ハッシュ値316が存在するのは任意である。ハッシュ値316は、対応するストリーム・マップ310によって定められるデーター・ストリームを構成するデーター・チャンク322に対するハッシュ値である。ハッシュ値316は、対応するデーター・ストリームを構成するデーター・チャンクのハッシュ・ベクトルに効率的なアクセスを付与するために、ストリーム・マップ310に格納するとよい。例えば、これは、データー・ストリーム・ハッシュのリスト全体(全ての最適化ファイル・チャンクに対するハッシュ)に対する高速アクセスが望まれる、ワイヤ・データー転送の状況(wire data transfer scenario)には有用である場合がある。
[0068] メタデーター314は、データー・チャンク毎のメタデーター、またはデーター・チャンク特定のメタデーターであり、参照されているデーター・チャンク332毎にストリーム・マップ310に含むことができる。種々のタイプの情報をメタデーター314に含ませることができる。例えば、一実施形態では、データー・チャンク322についてのメタデーター314は、データー・ストリーム・オフセット、データー・チャンク識別子、および位置関係インディケーター(locality indicator)の内1つ以上を含むことができる。データー・ストリーム・オフセットは、特定のストリーム・マップ310によって定められるデーター・ストリームにおける、関連するデーター・チャンク322の位置を示す(例えば、データー・ストリームの先頭から、または関連するデーター・チャンク322が始まるデーター・ストリームにおける他の基準点からのバイト数)。データー・チャンク識別子は、チャンクidまたは「信頼性のあるチャンク・ロケータ」(reliable chunk locator)としても知られており、チャンク・コンテナ304における対応するデーター・チャンク322への参照またはポインタである。位置関係インディケーターは、チャンク・コンテナ304におけるチャンク挿入順序を表し、どのデーター・チャンク322を共通のストリーム・マップ310によって参照するとよいかという判断を行うことを可能にする。他の実施形態では、メタデーター314は、参照されているデーター・チャンク322毎に追加の情報および/または代わりの情報を含むこともできる。
[0069] 図3のチャンク・コンテナ304を参照すると、ファイル・ヘッダー318は、チャンク・コンテナ304がファイルに格納される実施形態では、チャンク・コンテナ302に対するファイル・ヘッダーとなる。ファイル・ヘッダー318は、チャンク・コンテナ304に関連する情報を含むことができ、チャンク・コンテナ識別子(例えば、チャンク・コンテナ識別番号)、チャンク・コンテナ304の改訂回数(revision number)を示すチャンク・コンテナ生成インディケーター等を含む。
[0070] リダイレクション・テーブル320がチャンク・コンテナ304内にあるのは任意である。ある場合、リダイレクション・テーブル320は、ストリーム・コンテナ302のリダイレクション・テーブル308がストリーム・マップ310の位置変化を扱うのと同様に、データー・チャンク322のいずれのチャンク・コンテナ304における位置変化に関する情報も格納することができる。
[0071] データー・チャンク322は、図2のデーター・チャンク208の例である。図3に示すように、データー・チャンク322の各々は、チャンク・ヘッダー324とチャンク・データー326とを含む。例えば、第1データー・チャンク322aはチャンク・ヘッダー324aとチャンク・データー326aとを含み、第2データー・チャンク322bは、チャンク・ヘッダー324bとチャンク・データー326bとを含む。各チャンク・ヘッダー312は、データー・チャンク識別子等のような、対応するデーター・チャンク322に関連する情報を含む。各チャンク・データー326は、対応するデーターを含む。このデーターは、圧縮形態または非圧縮形態であってもよい。
[0072] ストリーム・マップ310およびデーター・チャンク322は、データー重複排除を可能にするために、それぞれ、ストリーム・コンテナ302およびチャンク・コンテナ304に格納される。例えば、図1のチャンク・ストア・インターフェース116は、データー・ストリーム132に関連するデーター・チャンク124を受け取り、図3のチャンク・ストア300にこのデーター・チャンクを格納することができる。例えば、特定のデーター・ストリーム132について、チャンク・ストア・インターフェース116は、ストリーム・マップを生成することができ、このストリーム・マップを、ストリーム・コンテナ302に、チャンク・ストア・インターフェース116によってチャンク・コンテナ304に格納された1つ以上のデーター・チャンク322を参照するストリーム・マップ310として格納する。
[0073] 例えば、図3は、一実施形態例による、ストリーム・マップ310によって参照されている数個のデーター・チャンク332を示す。図3に示すように、第1ストリーム・マップ310aは、チャンク・コンテナ304内にある第1および第2データー・チャンク322aおよび322bに対する参照を含むメタデーター314aを含む。つまり、第1および第2データー・チャンク322aおよび322bは、第1ストリーム・マップ310aに関連するソース・データー・ストリームの中に含まれている。例えば、メタデーター314aは、第1ストリーム・マップ310aによって定められるソース・データー・ストリーム内における第1データー・チャンク322aの位置を第1データー・チャンク322aに対して示すデーター・ストリーム・オフセット402値と、チャンク・コンテナ304内における第1データー・チャンク322aに対するデーター・チャンク識別子404(例えば、チャンク・ヘッダー324a内に格納されている第1データー・チャンク322aに対するデーター・チャンク識別子)と、更に第1データー・チャンク322aに対する位置関係インディケーター406とを含むことができる。更に、メタデーター314aは、ソース・データー・ストリーム内における第2データー・チャンク322bの位置を第2データー・チャンク322bに対して示すデーター・ストリーム・オフセット402値と、チャンク・コンテナ304内における第2データー・チャンク322bに対するデーター・チャンク識別子(例えば、チャンク・ヘッダー324b内に格納されている第2データー・チャンク322bに対するデーター・チャンク識別子)と、更に第2データー・チャンク322bに対する位置関係インディケーター406とを含むことができる。一実施形態では、第1および第2データー・チャンク322aおよび322bは、これらの位置関係インディケーターに同じ値を有することもあり、この値は、第1ストリーム・マップ310aによって定められるソース・データー・ストリームに対応するように生成され、第1および第2データー・チャンク322aおよび322bが連続的に(隣接して)チャンク・コンテナ304に格納されていることを示す。
[0074] 更に、第2ストリーム・マップ310bは、チャンク・コンテナ304内にある第2データー・チャンク322bに対する参照を含むメタデーター314bを含む。例えば、メタデーター314bは、第2ストリーム・マップ310bによって定められるソース・データー・ストリーム内における第2データー・チャンク322bの位置を第2データー・チャンク322bに対して示すデーター・ストリーム・オフセット402値と、チャンク・コンテナ304内における第2データー・チャンク322bに対するデーター・チャンク識別子404(例えば、チャンク・ヘッダー324b内に格納されている第2データー・チャンク322bに対するデーター・チャンク識別子)と、第2データー・チャンク322bに対する位置関係インディケーター406とを含むことができる。第2データー・チャンク322bについてのメタデーター314bにおける位置関係インディケーター406は、第1および第2データー・チャンク322aおよび322bに対して生成された位置関係インディケーターと同じ値を有する。何故なら、第2データー・チャンク322bは、本来第1ストリーム・マップ310aのためにチャンク・コンテナ304に格納されたからである。第2ストリーム・マップ310bによって定められるソース・データー・ストリームがチャンク・ストア300に格納されたときに、他のデーター・チャンク322(図3には示されていない)がチャンク・コンテナ304に新たに格納された場合、そのいずれにも、位置関係インディケーター406に対して新たな値が割り当てられる。
[0075] 図1のチャンク・ストア・インターフェース116は、図3のチャンク・ストア300内にデーター・ストリームを格納するために、種々の方法で構成することができる。例えば、図4は、一実施形態例によるデーター・ストリーム・ストア・システムのブロック図を示す。図4に示すように、データー・ストリーム・ストア・システム400は、データー・ストリーム・パーサー402、チャンク・ストア・インターフェース116、ストリーム・コンテナ302、およびチャンク・コンテナ304を含む。一実施形態では、データー・ストリーム・パーサー402は、図1のデーター重複排除モジュール104に含まれてもよい。図4の実施形態では、チャンク・ストア・インターフェース116は、データー・チャンク記憶マネージャー404、メタデーター生成器406、およびストリーム・マップ生成器408を含む。図4のこれらの特徴について、図5に関して次のように説明する。図5は、一実施形態例にしたがって、データー・ストリームを格納するフローチャート500を示す。一実施形態では、図4のシステム400は、フローチャート500にしたがって動作することができる。フローチャート500に関する論述に基づけば、関連技術(1つまたは複数)の当業者には、更に他の構造および動作的実施形態も明白であろう。フローチャート500およびシステム400について、以下のように説明する。
[0076] フローチャート500は、ステップ502から開始する。ステップ502において、データー・ストリームを解析してデーター・チャンクを求める。例えば、図4に示すように、データー・ストリーム・パーサー402は、データー・ストリーム410を受け取ることができる。データー・ストリーム410は、図1のデーター・ストリーム132と同様に、1つ以上のファイルおよび/またはファイルの一部を含むことができる。データー・ストリーム・パーサー402は、データー・ストリーム410を解析して、データー・チャンク・シーケンス412として示す、データー・チャンクのシーケンスを求める。例えば、一実施形態では、データー・チャンク・シーケンス412は、データー・チャンクがデーター・ストリーム410において位置する順序で、これらのデーター・チャンクのシーケンスを含むことができる。データー・チャンク・シーケンス412のデーター・チャンクは、同じサイズを有することができ、または異なるサイズを有することもできる。
[0077] ステップ504において、これらのデーター・チャンクのいずれかが、チャンク・コンテナに格納されているデーター・チャンクの複製であるか否か判断する。例えば、図4に示すように、データー・チャンク記憶マネージャー404は、データー・チャンク・シーケンス412を受け取る。データー・チャンク記憶マネージャー404は、データー・チャンク・シーケンス412のデーター・チャンクのいずれかが既にチャンク・コンテナ304に格納されており、したがって複製であるか否か判断するように構成されている。例えば、一実施形態では、図4に示すように、データー・チャンク記憶マネージャー404は、データー・チャンク情報426をチャンク・コンテナ304から受け取ることができる。データー・チャンク情報426は、チャンク・コンテナ304に格納されているデーター・チャンク毎にハッシュ値を含むことができる。他の実施形態では、データー・チャンク記憶マネージャー404は、ストリーム・コンテナ302からハッシュ値316(図3)を受け取ることができる。これらのハッシュ値316は、チャンク・コンテナ304に格納されているデーター・チャンク322に対するハッシュ値である。データー・チャンク記憶マネージャー404は、データー・チャンク・シーケンス412のデーター・チャンク毎にハッシュ値を生成することができ、生成したハッシュ値を、データー・チャンク情報426において受け取ったハッシュ値(またはストリーム・コンテナ302からの)と比較して、データー・チャンク・シーケンス412のどのデーター・チャンクが既にチャンク・コンテナ304に格納されているか判断することができる。更に他の実施形態では、データー・チャンク記憶マネージャー404は、データー・チャンク・シーケンス412のどのデーター・チャンクが既にチャンク・コンテナ304に格納されているのか、関連技術(1つまたは複数)の当業者には周知である他の方法で判断することができる。
[0078] 図4に示すように、データー・チャンク記憶マネージャー404は、格納チャンク指示416を生成する。格納チャンク指示416は、データー・チャンク・シーケンス412のどのデーター・チャンクが既にチャンク・コンテナ304に格納されているのか指示する。
[0079] 再度図5を参照すると、ステップ506において、複製ではないと判断されたデーター・チャンクを、連続配置で、そしてデーター・ストリームにおけると同じシーケンスで、チャンク・コンテナに格納する。例えば、一実施形態では、データー・チャンク記憶マネージャー404は、データー・チャンク・シーケンスの内、チャンク・コンテナ304に格納されていると判断されなかったデーター・チャンクを格納するように構成されている。例えば、一実施形態では、データー・チャンク記憶マネージャー404は、新たなデーター・チャンク毎にチャンク・ヘッダー324(例えば、データー・チャンク識別子)を生成し、新たな各データー・チャンクを、データー・チャンク322として、チャンク・ヘッダー324およびチャンク・データー326と共に格納することができる。更に、一実施形態では、データー・チャンク記憶マネージャー404は、新たなデーター・チャンクを連続配置で、ソース・データー・ストリームにおけるのと同じ順序で(例えば、データー・チャンク・シーケンス412において受け取った順序で)チャンク・コンテナ304に格納するように構成されている。
[0080] ステップ508において、複製でないと判断されたデーター・チャンクの各々について、メタデーターを生成する。このデーター・チャンクについてのメタデーターは、データー・ストリーム・オフセット、チャンク・コンテナにおける位置へのポインタ、および位置関係インディケーターを含む。例えば、図4に示すように、メタデーター生成器406は、データー・チャンク・シーケンス412および格納チャンク指示(stored chunk indication)416を受け取ることができる。一実施形態では、メタデーター生成器406はメタデーター(例えば、図3のメタデーター314)を生成するように構成することができる。メタデーター生成器406は、データー・チャンク・シーケンス412のデーター・チャンク毎にメタデーターを生成することができ、このメタデーターは、データー・ストリーム・オフセット402と、データー・チャンク識別子404と、位置関係インディケーター406とを含む。チャンク・コンテナ304に既に格納されていると判断されたデーター・チャンク(ステップ504において)に対して、データー・チャンク識別子404は、既に格納されているデーター・チャンクを指し示すように構成されている。ステップ508においてチャンク・コンテナ304に新たに格納されたデーター・チャンクに対して、データー・チャンク識別子404は、新たに格納されたデーター・チャンクを指し示すように構成されている。
[0081] 再度図5を参照すると、ステップ510において、生成したメタデーターを含むデーター・ストリームについてのストリーム・マップを生成する。例えば、図4に示すように、ストリーム・マップ生成器408は、特定のデーター・ストリームに対してデーター・チャンク・シーケンス412において受け取ったデーター・チャンク毎にデーター・チャンク・メタデーター420を受け取る。ストリーム・マップ生成器408は、受け取ったデーター・チャンク毎のデーター・チャンク・メタデーター420を含むデーター・ストリームに関連するストリーム・マップ424を生成する。更に、ストリーム・マップ生成器408は、ストリーム・マップ424に対してストリーム・ヘッダー312を生成することができ、ストリーム・マップ424内に、受け取ったデーター・チャンク毎にハッシュ値316を含めることができる。
[0082] ステップ512において、ストリーム・マップをストリーム・コンテナに格納する。例えば、図4に示すように、ストリーム・マップ生成器408はストリーム・マップ424をストリーム・コンテナ302に(例えば、ストリーム・マップ310として)格納する(または「存続させる」)ことができる。尚、代替実施形態では、データー・ストリームについてストリーム・マップを生成し格納する代わりに、データー・ストリームによって参照されるデーター・チャンクの位置を指し示す(pointing to)または示す(indicating)メタデーターを含むエントリを、データーベースまたはグローバル・テーブル内にデーター・ストリームに対して作成することもできる。
[0083] 図6は、一実施形態にしたがってデーター・ストリームをデーター・ストアに格納する一例を表すブロック図を示す。図6は、例示の目的に限って提示されるのであり、限定することは意図していない。図6の例では、第1データー・ストリーム602aをデーター・ストアに格納し、続いて、第2データー・ストリーム602bをデーター・ストアに格納する。ストリーム・リンク608a(「ストリーム・ポインタ」または「ストリーム・メタデーター・スタブ」としても知られている)が、第1データー・ストリーム602aに対して示されており、ストリーム・リンク608bが第2データー・ストリーム602bに対して示されている。各ストリーム・リンク608は、データー・ストリーム692をチャンク・ストア内にある対応するデーター(例えば、ストリーム・マップ604または他の最適化ストリーム・メタデーター)にリンクし、データー・ストリーム602を組み立て直すことを可能にする。図6に示すように、第1データー・ストリーム602aは、4つのデーター・チャンク614a〜614dを含む。前述のように、ストリーム・マップ604aは、第1データー・ストリーム602aについて生成するとよく、4つのデーター・チャンク614a〜614dをチャンク・コンテナ606に格納することができる。ストリーム・マップ604aは、データー・チャンク614a〜614dの各々へのポインタ(図6では矢印で表されている)を含む。データー・チャンク614a〜614dは、全て新しくチャンク・コンテナ606に対して一意であるデーター・チャンクという1つの組に分類することができる。したがって、データー・チャンク614a〜614dは、連続配列で、データー・ストリーム602aにおけると同じ順序でチャンク・コンテナ606に格納することができる。例えば、データー・チャンク614a〜614dは、チャンク・コンテナ606に格納される最初の4つのデーター・チャンクにすることができ、または1つ以上のデーター・チャンクが既にチャンク・コンテナ606に格納されている場合、データー・チャンク614a〜614dは、既に格納されているデーター・チャンクの直後に、チャンク・コンテナ606に格納することができる。データー・チャンク614a〜614dの各々には、ストリーム・マップ604aにおける同じ位置関係インディケーターが割り当てられ、位置関係インディケーターの値は、第1データー・ストリーム602aに対して選択されたものである。
[0084] 第2データー・ストリーム602aは、4つのデーター・チャンク614b、614c、614e、および614fを含む。ストリーム・マップ604bは、第2データー・ストリーム602bについて生成することができる。データー・チャンク614b、614c、614e、および614fは、フローチャート500のステップ504にしたがって、2組のデーター・チャンクに分類することができる。第1組は、チャンク・コンテナ606に存在するコピーを既に有するチャンク614bおよび614cを含み(第1データー・ストリーム602aのチャンク・シーケンスのため)、第2組は、新しく一意のデーター・チャンクである(チャンク・コンテナ606に既に格納されているコピーを有さない)、チャンク614eおよび614fを含む。データー・チャンク614bおよび614cは既にチャンク・コンテナ606に格納されているので、ストリーム・マップ604bは、チャンク・コンテナ606に既に格納されているデーター・チャンク614bおよび614cに対するポインタ(データー・チャンク識別子404に対する値)を含む。つまり、データー・チャンク614bおよび614cは、チャンク・コンテナ606内にある既存のデーター・チャンクへのポインタとして格納し、データー・チャンク614bおよび614cのチャンク・データーを格納しなくてよい。データー・チャンク614eおよび614fは未だチャンク・コンテナ606に格納されていないので、前述のように、データー・チャンク614eおよび614fをチャンク・コンテナ606に格納すればよい。例えば、データー・チャンク614eおよび614fはチャンク・コンテナ606にとって新しく一意のデーター・チャンクであるので、チャンク614eおよび614fは、チャンク・コンテナ606に現在格納されている最後の格納データー・チャンク(例えば、データー・チャンク614d)の後ろに、連続配列で、データー・ストリーム602bにおけると同じ順序で格納すればよい。ストリーム・マップ604bは、第1から第4までのデーター・チャンク識別子612a〜612dを含み、これらは、それぞれ、チャンク・コンテナ606に格納されているデーター・チャンク614b、614c、614e、および614fを指し示す。ストリーム・マップ604bでは、データー・チャンク614bおよび614cには、第1データー・ストリーム602aに関連する位置関係インディケーター値が割り当てられ、データー・チャンク614eおよび614fには、第2データー・ストリーム602bに対して選択された位置関係インディケーター値が割り当てられる。
[0085] 尚、データー・ストリーム602aおよび602bに続いて、いかなる数の追加のデーター・ストリーム602でも同様に格納できることを注記しておく。更に、図6の例では、第2ストリーム・マップ604bのデーター・チャンクには、各々、2つの位置関係インディケーター値の内1つが割り当てられた。即ち、第2ストリーム・マップ604bに対して選択された新たな位置関係インディケーター値、または第1ストリーム・マップ604aのデーター・チャンクに関連する位置関係インディケーター値のいずれかである。実施形態では、特定のストリーム・マップのデーター・チャンクには、チャンク・コンテナの中に既に存在するストリーム・マップのデーター・チャンクに関連する異なる位置関係インディケーターの数に応じて、いずれの数の位置関係インディケーター値からでも、その1つでも割り当てることができる。例えば、前述のように、チャンク・コンテナに対する新たなデーター・チャンクには、ストリーム・マップに関連する特定のデーター・ストリームに対して選択された新たな位置関係インディケーター値を割り当てることができる。更に、チャンク・コンテナ内に既に存在するストリーム・マップによって参照されるデーター・チャンクは、いずれの数でも、チャンク・コンテナに既に存在するデーター・チャンクの対応する位置関係インディケーター値が割り当てられる。これが意味するのは、データー・ストリームのデーター・チャンクの組は、1つ以上のいずれの数でも、データー・ストリームのデーター・チャンクに2つ、3つ、またはそれよりも更に多い異なる位置関係インディケーター値から選択された位置関係インディケーターを割り当てることができるように、対応する位置関係インディケーター値を割り当てることができるということである。
[0086] したがって、ストリーム・マップ・メタデーターの位置関係インディケーターによって、データー・ストリーム内におけるデーター・チャンクの位置関係(locality)を確認することが可能になる。これは、重複データー・チャンクが集合単位で発生する傾向があるからである。新たなデーター・ストリームが既に知られているデーター・チャンク(チャンク・コンテナに既に格納されている)を収容しているとき、この新たなデーター・ストリーム内にある次のデーター・チャンクも複製データー・チャンク(チャンク・コンテナ内に既に格納されている)であることに妥当な確率がある。新たな元のデーター・チャンクは位置関係インディケーターにしたがって互いに隣接してチャンク・コンテナ内に格納されるので、この新たなデーター・ストリームが参照する、既に存在するデーター・チャンクもチャンク・コンテナ内において連続して格納されている可能性は一層高くなる。これは、チャンク・ストアから最適化データー・ストリームを読み出す性能(performance)を向上させるのに役立つ。例えば、対応するストリーム・マップおよびデーター・チャンクに基づいてデーター・ストリームを組み立て直すように構成されているリハイドレーション・モジュールは、先読みバッファーにおける次のデーター・チャンクの必要性を見出すことを予期して、チャンク・コンテナ内に格納されているデーター・チャンクに対して先読み(read ahead)を実行することができる。更に、断片化解消およびコンパクションというようなチャンク・ストア維持タスクは、既存の隣接するチャンクをチャンク・コンテナ内であちこち移動させるときにこれらを一緒に保持することによって、元の位置関係を維持しようとしつつ、そのタスクを実行することができる。
[0087] 例えば、データー・ストリームを最適化しチャンク・ストア300内にストリーム・マップ310およびデーター・チャンク322の形態で格納した後、これらのデーター・ストリームをチャンク・ストア300から読み出すことができる。図7は、一実施形態による、リハイドレーション・モジュール702を含むチャンク・ストア・インターフェース116のブロック図を示す。リハイドレーション・モジュール702は、要求されたデーター・ストリーム(例えば、図1に示したデーター・ストリーム要求120にしたがって要求される)を組み立て直すように構成されている。例えば、データー・ストリーム要求120(図1)に応答してチャンク・ストア300から読み出されるデーター・ストリームに対して、リハイドレーション・モジュール702は、チャンク・ストア300から(例えば、リパース位置において)データー・ストリーム要求120の最適化ファイルによって参照されるストリーム・マップ310を決定して受け取る。例えば、リハイドレーション・モジュール702は、要求120のストリーム・マップ識別子を図3のチャンク・ストア300に供給することができる。チャンク・ストア300は、ストリーム・マップ識別子に基づいて対応するストリーム・マップ310を引き出し(例えば、ストリーム・マップ・ヘッダー312をスキャンすることによって)、リハイドレーション・モジュール702は、この引き出されたストリーム・マップ310にしたがってデーター・ストリームを再生する、即ち、「リハイドレート」(rehydrate)ことができる。引き出されたストリーム・マップ310は、チャンク・コンテナ304内におけるデーター・ストリームに含まれるデーター・チャンクの各々に対するポインタ(図4のデーター・チャンク識別子404)を含む。リハイドレーション・モジュール702は、このポインタを用いて、データー・チャンク322の各々を引き出す。リハイドレーション・モジュール702は、引き出したストリーム・マップ310に含まれるデーター・ストリーム・オフセット402を(例えば、引き出されたストリーム・マップ310に含まれるかもしれないデーター・チャンク長情報と共に)用いて、引き出したデーター・チャンク322を適正な順序に並べて、データー・ストリームを再生する(regenerate)ことができ、このデーター・ストリームがリハイドレーション・モジュール702によってデーター・ストリーム704として出力される。
[0088] 位置関係インディケーター406の使用によって、チャンク・コンテナ304からデーター・チャンク322の順次読み出しを行うことができる。例えば、順次I/O(入力/出力)要求または1つよりも多いデーター・チャンク境界に跨がる(encompass)何らかのI/O要求を用いてリハイドレーション・モジュール702によってチャンク・ストア300内にあるファイル・ストリームにアクセスしているとき、ストリーム・マップ310は、データー・チャンクへの高速アクセスを可能にする。これは、チャンク・ストア300がストリーム・マップ310を作成した時点で、新たなデーター・チャンクがチャンク・コンテナ304内に連続してストリーム・マップの順に格納されるからである。したがって、リハイドレーション・モジュール702による順次データー・アクセスの間、同じデーター・ストリームに属するデーター・チャンクが連続して格納される可能性が高くなり、このような連続するデーター・チャンクに1回のデーター・アクセス「シーク」(例えば、読み出すべき次の格納データー・チャンクを発見するためのチャンク・コンテナ全域にわたる順方向および逆方向の移動)でアクセスし読み出すことができ、断片化は一意でないデーター・チャンク(対応するデーター・ストリームを格納する前にチャンク・コンテナ内に既に存在していたストリーム・マップによって参照されているデーター・チャンク)に限られる(reduce)。順次データー・アクセスの間におけるデーター・アクセス・シークは、1つのデーター・チャンクまたはデーター・ストリームの一連のチャンクがチャンク・ストア内に既に存在することが分かっているときに制限される。ストリーム・マップ310は、データー重複排除システムの他のモジュール(例えば、ファイル複写(replication)モジュールによって用いられるハッシュ値のリスト)によって必要とされるかもしれない最適化ファイル・メタデーター(例えば、メタデーター314)に、効率的なメタデーター・コンテナを付与する。ストリーム・マップ310は、簡潔であり、高速アクセスのためにメモリーにキャッシュすることができる。チャンク・ストア300は、LRU(最も長い間使われていない)アルゴリズムまたは他のタイプのキャッシュ・アルゴリズムに基づいて、頻繁にアクセスされるストリーム・マップ310(リハイドレーション・モジュール702によって頻繁に要求されリハイドレートされた最適データー・ストリーム)をキャッシュすることができる。
C.信頼性の高いデーター・チャンクの位置検出を可能にするチャンク・ストアの実施形態例
[0089] 前述のように、断片化解消技法のために、ガベージ・コレクションを実行するコンパクション技法のために等というように、種々の理由のためにチャンク・コンテナ内部でデーター・チャンクを移動させる場合がある。この副章において、チャンク・コンテナ内部におけるデーター・チャンクの移動を追跡し続ける実施形態について説明する。
[0090] 図8は、一実施形態によるチャンク・コンテナ304のブロック図を示す。図8に示すように、チャンク・コンテナ304は、総じて図3のチャンク・コンテナに似ており、ファイル・ヘッダー318に含まれるチャンク・コンテナ識別子802およびチャンク・コンテナ生成指示804が追加されている。チャンク・コンテナ識別子802は、チャンク・コンテナ304を、チャンク・ストア300内に存在するかもしれない他のチャンク・コンテナから区別するためにチャンク・コンテナ304に割り当てられた一意の識別子(例えば、識別番号)である。チャンク・コンテナ生成指示804は、チャンク・コンテナ304に対する改訂(revision)または生成を示す。例えば、1つ以上のデーター・チャンク322がチャンク・コンテナ304内部で移動させられる毎に、生成指示804を変更することができる(例えば、0のような開始生成レベル、またはその他の開始値から始めて、次の生成レベルに高めることができる)。
[0091] 一実施形態では、チャンク・コンテナ304を、チャンク・コンテナ識別子802とチャンク・コンテナ生成指示804の組み合わせによって特定することができる(例えば、チャンク・コンテナ304のファイル名を形成することができる)。一実施形態では、チャンク・コンテナ識別子802およびチャンク・コンテナ生成指示804の双方が整数であってもよい。チャンク・コンテナ304は、固定サイズ(または固定数のエントリ)を有してもよく、または可変サイズを有してもよい。例えば、一実施形態例では、チャンク・コンテナ304を定める各チャンク・コンテナ・ファイルは、約16,000個のチャンクを格納する大きさにすることができ、平均的なチャンク・サイズは64KBであり、チャンク・コンテナ・ファイルのサイズは1GBに設定される。他の実施形態では、チャンク・コンテナ・ファイルは代わりのサイズを有してもよい。
[0092] チャンク・コンテナ304に格納されているデーター・チャンク322には、種々の方法で、メタデーター400(図4)のデーター・チャンク識別子404にしたがって参照することができる。実施形態では、データー・チャンク識別子404は、このような参照を可能にする種々のタイプの情報を含むことができる。例えば、一実施形態では、データー・チャンク識別子404は、データー・チャンク・コンテナ識別子、ローカル識別子、チャンク・コンテナ生成値、およびチャンク・オフセット値の内1つ以上を含むことができる。チャンク・コンテナ識別子は、データー・チャンク322が格納されているチャンク・コンテナ304に対してチャンク・コンテナ識別子802の値を有する。ローカル識別子は、データー・チャンク322に割り当てられる識別子(例えば、数値)であり、データー・チャンク322が格納されているチャンク・コンテナ304内部において割り当てられたデーター・チャンク322に一意である(例えば、データー・チャンクに対して一意のコンテナ毎の識別子である)。チャンク・コンテナ生成値は、データー・チャンク322が格納されているチャンク・コンテナ304に対して、データー・チャンク322がチャンク・コンテナ304に格納された時点におけるチャンク・コンテナ生成指示804の値を有する。チャンク・オフセット値は、データー・チャンク322がチャンク・コンテナ304に追加された時点における、チャンク・コンテナ304内におけるデーター・チャンク322のオフセットである。
[0093] 一実施形態では、チャンク・ストアは、移動したデーター・チャンクを追跡するために用いることができる、信頼性のあるチャンク・ロケータ(chunk locator)を実装(implement)することができる。従来の技法とは対照的に、この信頼性のあるチャンク・ロケータは、データー・チャンク識別子を物理的なチャンク位置にマッピングするためにインデックスを用いない。従来の技法は、チャンク識別子をチャンク・データーの物理位置にマッピングするインデックスを用いる。記憶システムの規模(例えば、数百テラバイト以上)および平均チャンク・サイズ(例えば、64KB)のために、このようなインデックスは非常に大きくなる。このようなインデックスを全てメモリーにロードすると、大量の利用可能なメモリーおよびプロセッサー・リソースを消費することになる。インデックスをメモリーにロードしないと、インデックスをメモリーにページングする(page)必要があるので、データー・アクセスは遅くなる。
[0094] 一実施形態では、信頼性のあるチャンク・ロケータは、図3におけるチャンク・コンテナ304のリダイレクション・テーブル320のような、リダイレクション・テーブルの形態で実装される。このリダイレクション・テーブルは、チャンク・コンテナ304内において移動させられたデーター・チャンク322に対して1つ以上のエントリを格納することができる。各エントリは、移動させられたデーター・チャンク322を特定し、その新たな位置におけるチャンク・コンテナ304内でのデーター・チャンク322の位置を示すデーター・チャンク・オフセット値を有する。移動したデーター・ストリームのデーター・チャンクの位置を検出するために、データー・ストリームのリハイドレーションの間リダイレクション・テーブルを参照することもできる。
[0095] 例えば、図9は、一実施形態例によるリダイレクション・テーブル900のブロック図を示す。リダイレクション・テーブル900は、データー・チャンク322がチャンク・コンテナ304内部で移動させられた場合に、データー・チャンク322(データー・チャンクとして格納されたストリーム・マップを含む)の位置を検出するために用いられる。例えば、リダイレクション・テーブル900は、ガベージ・コレクションおよびコンパクション・プロセスの一部として空間再利用のために、チャンク・コンテナ304内部でデーター・チャンク322を移動させることができ、それでもなおデーター・チャンク322の元のチャンク識別子に基づいて信頼性高くデーター・チャンク322の位置を検出可能にすることができる。図9に示すように、リダイレクション・テーブル900は、第1エントリ902aおよび第2エントリ902bのような、複数のエントリ902を含む。数百、数千、およびそれ以上の数のエントリ902も含む、いずれの数のエントリ902でも、リダイレクション・テーブル900に含ませることができる。各エントリ902は、ローカル識別子904と変更チャンク・オフセット値906とを含む。例えば、第1エントリ902aは、第1ローカル識別子904aと第1変更チャンク・オフセット値906aとを含み、第2エントリ902bは、第2ローカル識別子904bと第2変更チャンク・オフセット値906bとを含む。
[0096] ローカル識別子904は、最初にチャンク・コンテナ304に格納されたときにデーター・チャンク322に割り当てられる一意のローカル識別子である。変更チャンク・オフセット値906は、移動させられたデーター・チャンク322に対して、対応するローカル識別子904を有する新たなチャンク・オフセット値である。したがって、リダイレクション・テーブル900には、データー・チャンクに対する位置関係インディケーターを用いてアクセスし、そのデーター・チャンクに対する変更チャンク・オフセット値を判定することができる。
[0097] 例えば、図9におけるローカル識別子904aは、データー・チャンク614bに割り当てられたローカル識別子とすることができる。データー・チャンク614bに割り当てられたローカル識別子を用いて、リダイレクション・テーブル900のエントリ902aにアクセスし、チャンク・コンテナ304内におけるデーター・チャンク614bの新たな位置を示す、変更チャンク・オフセット値906aを決定することができる。
[0098] 尚、リダイレクション・テーブル900はいずれのサイズを有してもよいことを注記しておく。例えば、一実施形態では、リダイレクション・テーブル900にサイズは、(所定の最大数のデーター・チャンク−コンパクションのために削除された所定の最小数のデーター・チャンク)×(リダイレクション・テーブル・エントリのサイズ)によって制限するとよい。場合によっては、データー・チャンクの配置換え(relocation)が希にしか起こらないこともある。一実施形態では、データー・チャンクに対して変更チャンク・オフセット値を決定した後、ストリーム・マップからこのデーター・チャンクへのいずれのポインタも、ストリーム・マップにおいて変更チャンク・オフセット値に修正し、エントリ902をリダイレクション・テーブル900から除去することができる。状況によっては、時間の経過に連れてこのようにリダイレクション・テーブル900からエントリ902がなくなる場合もある。
[0099] リダイレクション・テーブルには、種々の方法でエントリを追加することができる。例えば、図10は一実施形態にしたがって、データー・ストリームを格納するフローチャート1000を示す。フローチャート1000に関する論述に基づいて、関連技術(1つまたは複数)の当業者には、更に他の構造および動作の実施形態も明白であろう。以下にフローチャート1000について説明する。
[0100] フローチャート1000は、ステップ1002から開始する。ステップ1002において、チャンク・コンテナの内容を修正(modify)する。例えば、一実施形態では、図8のチャンク・コンテナ304における1つ以上のデーター・チャンク322を移動させることができる。このようなデーター・チャンク322は、断片化解消プロセス、ガベージ・コレクション後のコンパクション・プロセス、またはその他のプロセスというような、維持タスク(例えば、図1における維持モジュール106)によって移動させることができる。
[0101] ステップ1004において、ステップ1002によるチャンク・コンテナの1つ以上のデーター・チャンクに対する変更チャンク・オフセット値を示した1つ以上のエントリを、リダイレクション・テーブルに追加する。例えば、1つ以上の移動させられたデーター・チャンク322に対応する1つ以上のエントリ902をリダイレクション・テーブル900に追加することができる。例えば、移動させられたデーター・チャンク322毎に、移動させられたデーター・チャンク322のローカル識別子の値を示すエントリ902を、ローカル識別子904として生成することができ、このエントリ902は、移動させられたデーター・チャンク322の新たなオフセット値を、変更チャンク・オフセット値906として示す。
[0102] ステップ1006において、ステップ1002に伴い、チャンク・コンテナ・ヘッダー内にある生成指示が増加する。例えば、一実施形態では、チャンク・コンテナ生成指示804は0の初期値を有することができ、データー・チャンク322がチャンク・コンテナ304内で移動させられる毎に、チャンク・コンテナ生成指示804を増加させて、更に高い生成値を示すことができる。他の実施形態では、チャンク・コンテナ生成指示804を他の方法で修正することもできる。
[0103] したがって、参照元ストリーム・マップ310に格納されているデーター・チャンク識別子を用いて図8のチャンク・コンテナ304のデーター・チャンク322を調べるとき、チャンク・コンテナ304のチャンク・コンテナ生成指示804をチェックして、チャンク・コンテナ304の現在の生成が、データー・チャンク識別子のチャンク・コンテナ生成値と同じか否か確かめることができる。これらが同じである場合、データー・チャンク識別子内にあるチャンク・オフセット値によって示されるオフセットに、データー・チャンク322を配置することができる。同じでない場合、リダイレクション・テーブル900を読み取って、チャンク・コンテナ304内におけるデーター・チャンク322の変更オフセット値を決定する。
[0104] 例えば、図11は、一実施形態例にしたがって、データー・ストリーム要求1110に応じてデーター・ストリームをリハイドレートするために、ストリーム・コンテナ302およびチャンク・コンテナ304と通信するリハイドレーション・モジュール1130のブロック図を示す。図11に示すように、リハイドレーション・モジュール1130は、データー・ストリーム・アセンブラー1102と、生成チェッカー1106と、データー・チャンク・リトリバー1108とを含む。以下に、図11について説明する。
[0105] 図11において、データー・ストリーム・アセンブラー1102は、データー・ストリーム要求1110を受ける。データー・ストリーム要求1110は、ストリーム・コンテナ302に格納されているストリーム・マップ1104のような、リハイドレートしようとしているデーター・ストリームに対応するストリーム・マップを示す。データー・ストリーム・アセンブラー1102は、ストリーム・マップ1104を処理して、ストリーム・マップ1104によって参照されているデーター・チャンク毎に、データー・チャンク要求1112を生成する。
[0106] 一実施形態では、データー・ストリーム・アセンブラー1102が生成するデーター・チャンク要求1112は、要求されたデーター・チャンク322を特定するためのデーター・チャンク識別子を含むとよい。位置を突き止められたチャンク・コンテナには次のようにアクセスして、要求されたデーター・チャンクを引き出すことができる。
[0107] 図11に示すように、生成チェッカー1106は、要求されたデーター・チャンクに対するデーター・チャンク要求1112を受ける。生成チェッカー1106は、チャンク・コンテナ304(要求されたデーター・チャンク322のチャンク・コンテナ識別子と一致するチャンク・コンテナ識別子802を有することが以上で確認されたチャンク・コンテナ304)にアクセスする。生成チェッカー1106は、チャンク・コンテナ304に対するチャンク・コンテナ生成指示804を、要求されたデーター・チャック322に対するチャック・コンテナ生成値と比較し、生成一致指示1114を出力するように構成されている。これらの値が一致しない場合(例えば、チャンク・コンテナ生成指示804の値が、要求されたデーター・チャンク322に対するチャンク・コンテナ生成値よりも大きい場合)、生成一致指示1114は、一致が得られなかったことを示し、動作はステップ1806に進む。これらの値が一致した場合、生成一致指示1114は、一致が得られたことを示し、要求されたデーター・チャンクを引き出す標準的なI/O経路(または他の経路)に従うことができる。
[0108] 図11に示すように、データー・チャンク・リトリバー1108は、生成一致指示1114とデーター・チャンク要求1112とを受け取る。生成一致指示1114が、一致が得られなかったことを示す場合、データー・チャンク・リトリバー1108は、要求されたデーター・チャンク322のローカル識別子と一致するローカル識別子904を有するエントリ902内にある変更チャンク・オフセット値906(図9)を求めて、リダイレクション・テーブル900にアクセスする。図11に示すように、データー・チャンク・リトリバー1108は、第1チャンク・オフセット値とは異なる第2チャンク・オフセット値116を受け取る。
[0109] 図11に示すように、データー・チャンク・リトリバー1108は、第2チャンク・オフセット値1116に位置するデーター・チャンク322zを求めて、チャンク・コンテナ304にアクセスする。データー・チャンク322zは、要求されたデーター・チャンク322であり、チャンク・コンテナ304内において第2チャンク・オフセット値1116に移動させられている。
[0110] 図11に示すように、データー・チャンク・リトリバー1108は、現在の例ではデーター・チャンク322zである、データー・チャンク1118を出力する。データー・チャンク1118は、データー・ストリーム・アセンブラー1102によって受け取られる。このように、データー・ストリーム・アセンブラー1102は、ストリーム・マップ1104によって参照されている全てのデーター・チャンク322を、データー・チャンク・リトリバー1108から受け取る。これらのデーター・チャンク322は、対応するチャンク・オフセット値にしたがってチャンク・コンテナ304から直接引き出されるか、またはリダイレクション・テーブル900によってリダイレクトされて、チャンク・コンテナ304から引き出される。図11に示すように、データー・ストリーム・アセンブラー1102は、データー・ストリーム1120を生成する。データー・ストリーム1120は、データー・ストリーム要求1110において示された、要求されたデーター・ストリームが元に戻された形態である。データー・ストリーム・アセンブラー1102は、本明細書の他のところで説明したように、受け取ったデーター・チャンク322の全てを纏めて組み立て、データー・ストリーム1120を形成する。
[0111] 尚、データー・ストリームのリパース・ポイント(reparse point)に存在するストリーム・マップ参照識別子(例えば、図6におけるストリーム・リンク608aまたは608b)は、データー・チャンク識別子と同じ構造を有するのでもよいことを注記しておく。先に説明したように、ストリーム・マップ310は、エンド・ユーザー・ファイル・データーの代わりに、ストリーム・マップ・メタデーターを収容するデーター・チャンク322の形態を有することもできる。したがって、ストリーム・マップ310にアドレスする手順は、データー・チャンク322にアドレスするのと同じでよい。双方の技法は、データー・チャンク識別子の構造を用いることができる。最適化データー・ストリームは、ストリーム・マップ310のデーター・チャンク識別子をファイル・リパース・ポイント(実際のデーター・ストリーム・ファイル・オブジェクトに添付される)に置くことによって、ストリーム・マップ310を参照する。ストリーム・マップ識別子は、[コンテナ識別子、ローカル識別子、生成値、オフセット値]情報を収容する。この情報は、ストリーム・コンテナ302の内部においてストリーム・マップ310のデーター・チャンクの位置を突き止めるために(直接、またはリダイレクション・テーブルを通じて)用いることができる。したがって、一実施形態では、ストリーム・コンテナ302のフォーマットおよびレイアウトは、チャンク・コンテナ304のそれと本質的に同一であってよい。
D.データー最適化バックアップの実施形態例
[0112] データー最適化技法を装備するデーター・システムをバックアップし復元することは、チャンク・ストア内において多数のデーター・ストリーム間でデーターが共有されるので困難である。したがって、データーはファイル名称空間から分離される。しかしながら、データー・バックアップおよび復元能力は有用である。通例、エンティティは、有効なデーター・バックアップが一体になっていなければ、データー最適化の解決手段を装備することを躊躇するであろう。
[0113] 実施形態では、データー最適化環境に合わせて種々のバックアップ技法が設けられ、最適化バックアップ、無最適化バックアップ(un-optimized backup)、項目レベル最適化バックアップ、および混成バックアップ技法が含まれる。更に、実施形態では、異なるバックアップ技法間で選択を行うために発見法を用いることができる。例えば、最適化バックアップと無最適化バックアップとの間で選択するために発見法を用いてもよい。実施形態は、データー最適化システムに最適化バックアップ技法を設けて、データーがその最適化された(例えば、重複排除した)形態でバックアップできるようにする。実施形態は、用いるバックアップ媒体空間を削減してデーター・バックアップを行うことを可能とし、バックアップ時間枠(time window)を短縮するために用いることができる。これは、年々増大するデーターを考慮すると重要である。更に、実施形態は、バックアップからのデーター復元の高速化を可能にする(例えば、RTO(復元時間目標)を小さくする)。
[0114] 実施形態では、データー最適化システムにおけるバックアップは、種々の方法で実行することができる。例えば、図12は、一実施形態例にしたがって、データー最適化システムにおいてデーターのバックアップを実行するフローチャート1200を示す。フローチャート1200は、一実施形態では、図1のチャンク・ストア・インターフェース116によって実行することができる。例示の目的に限って、図13に関してフローチャート1200を説明する。図13は、一実施形態例によるデーター・バックアップ・システム1300のブロック図を示す。フローチャート1200は、データー・バックアップ・システム1300によって実行することができる。図13に示すように、データー・バックアップ・システム1300は、データー・バックアップ・モジュール1302と、バックアップ・ストレージ1304と、チャンク・ストア1334とを含む。チャンク・ストア1334は、ストリーム・コンテナ302と、1つ以上のチャンク・コンテナ304(例えば、チャンク・コンテナ304aおよび304b)とを含む。更に他の構造的および動作上の実施形態も、フローチャート1200に関する論述に基づいて、関連技術(1つまたは複数)の当業者には明白であろう。フローチャート1200について、以下のように説明する。
[0115] フローチャート1200のステップ1202において、チャンク・ストアに格納されている複数の最適化データー・ストリームを、バックアップのために特定する。例えば、図13を参照すると、データー・バックアップ・モジュール1302は、チャンク・ストア1334に格納されている1つ以上の最適化データー・ストリームをバックアップ・ストレージ1304に格納する要求1318を受けることができる。要求1318は、最適化データー・ストリームに対応する最適化ストリーム構造(例えば、ファイル)の対応するファイル名称によって、これら1つ以上の最適化データー・ストリームを特定することができる。各最適化ストリーム構造は、前述のように、最適化データー・ストリームのチャンク・コンテナ304の1つ以上に格納されているデーター・チャンク322へのマッピングを記述するメタデーターを収容するストリーム・コンテナ302におけるストリーム・マップ・チャンク1316のストリーム・マップ・チャンクを参照する。
[0116] ステップ1204において、先の複数の最適化データー・ストリームをバックアップするために、チャンク・ストアの少なくとも一部をバックアップ・ストレージに格納する。要求1318に応答して、データー・バックアップ・モジュール1302は、要求1318において特定された最適化データー・ストリームをバックアップ・ストレージに格納するように、チャンク・ストア1334の少なくとも一部をバックアップ・ストレージ1304に格納することができる。データー・バックアップ・モジュール1302は、チャンク・ストア1334の一部を種々の方法でバックアップ・ストレージ1304に格納することによって、最適化データー・ストリームを格納することができる。例えば、一実施形態では、最適化データー・ストリーム毎に、データー・バックアップ・モジュール1302は、ストリーム・マップ・チャンク1316の対応するストリーム・マップ・チャンク、およびストリーム・マップ・チャンクによって参照されているデーター・チャンク322を決定することができ、そして決定したストリーム・マップ・チャンクおよびデーター・チャンクをバックアップ・ストレージ1304に格納することができる。他の実施形態では、データー・バックアップ・モジュール1302は、最適化データー・ストリームをバックアップするために、最適化データー・ストリームの内決定したチャンクを含むチャンク・ストア1334のもっと大きな部分をバックアップ・ストレージ1304に格納することもできる。
[0117] したがって、データー・バックアップ・モジュール1302は、ステップ1204にしたがって種々の方法で最適化データー・ストリームを格納するように構成することができる。例えば、図13に示すように、データー・バックアップ・モジュール1302は、最適化ファイル・バックアップ・モジュール1306と、リハイドレーション・バックアップ・モジュール1308と、項目レベル・バックアップ・モジュール1310と、データー・チャンク識別子バックアップ・モジュール1312とを含むことができる。実施形態では、データー・バックアップ・モジュール1302は、モジュール1306、1308、1310、および1312の内いずれの1つ以上でも含むことができる。モジュール1306、1308、1310、および1312は、最適化データー・ストリームを種々の方法でバックアップ・ストレージ1304に格納することを可能にする。モジュール1306、1308、1310、および1312について、以下のように説明する。
[0118] 一実施形態では、最適化バックアップ(「最適化データー・ストリーム・バックアップ」とも呼ぶ)は、最適化データー・ストリームを最適化した形態でバックアップするために実行することができる。例えば、最適化ファイル・バックアップ・モジュール1306は、最適化データー・ストリームをバックアップ・ストレージ1304に最適化した形態で格納することによって、最適化バックアップを実行するように構成することができる。最適化バックアップにしたがって、最適化データー・ストリームをバックアップするために、チャンク・ストア1334の1つ以上のチャンク・コンテナ全体を格納することができる。例えば、一実施形態では、最適化ファイル・バックアップ・モジュール1306は、図14に示すフローチャート1400を実行することができる。フローチャート1400および最適化ファイル・バックアップ・モジュール1306について、以下のように説明する。
[0119] ステップ1402において、チャンク・ストア全体をバックアップ・ストレージに格納する。一実施形態では、最適化ファイル・バックアップ・モジュール1306は、要求1318において示された最適化データー・ストリームがバックアップされるように、チャンク・ストア1334全体をバックアップ・ストレージ1304に格納することができる。あるいは、最適化ファイル・バックアップ・モジュール1306は、最適化データー・ストリームがバックアップされるように、チャンク・ストア1334の内、要求された最適化データー・ストリーム全体を含む1つ以上のチャンク・コンテナ全体(例えば、ストリーム・コンテナ302およびチャンク・コンテナ304の内1つ以上)を格納することができる。バックアップしようとするチャンク・コンテナは、チャンク識別子の内、最適化データー・ストリームの最適化ストリーム構造によって参照されているチャンクに対するチャンク・コンテナ識別子によって識別することができる。格納動作1320にしたがって、最適化ファイル・バックアップ・モジュール1306によって、チャンク・コンテナ/チャンク・ストア全体をバックアップ・ストレージ1304に格納することができる。
[0120] ステップ1404において、チャンク・ストアにおける対応するデーターにリンクする複数の最適化データー・ストリームに対して、複数のストリーム・メタデーター・スタブをバックアップ・ストレージに格納する。ストリーム・メタデーター・スタブは、最適化ファイル・バックアップ・モジュール1306によって、バックアップ・ストレージ1304以外のストレージというような、他のストレージ(例えば、主ストレージ)から引き出すことができ、これらは最適化データー・ストリームに対するチャンク・ストア1334におけるデーター・ストアにリンクするファイルである。例えば、各ストリーム・メタデーター・スタブは、ストリーム・マップ・チャンクによって参照されているいずれのデーター・チャンク322でも組み合わせることによって、リハイドレーション・プロセスの間に対応するデーター・ストリームを非最適化形態に構築し直す/組み立て直すために用いることができる、ストリーム・マップ・チャンク1316のそれらの対応するストリーム・マップ・チャンクへの参照を収容することができる。一実施形態では、要求1318において特定された最適化データー・ストリームに対応するストリーム・メタデーター・スタブは、最適化ファイル・バックアップ・モジュール1306によって、格納動作1320を用いて、バックアップ・ストレージ1304に格納される。ストリーム・メタデーター・スタブは、それらの「ディスク上」フォーマットで、最適化ファイル・バックアップ・モジュール1306によってバックアップ・ストレージ1304に格納することができる。
[0121] したがって、バックアップ・ストレージ1304上にある最適化データー・ストリームについてファイル状態を示す「ボリューム・イメージ」は、チャンク・ストア1334を忠実に表現する(mirror)。バックアップ・ストレージ1304に格納されたチャンク・コンテナおよび格納されたストリーム・メタデーター・スタブの組み合わせによって、最適化された(組み立て直されたのではない)形態で、最適化データー・ストリームの完全な格納が行われる。追加のメタデーターを格納する必要はない。
[0122] 最適化バックアップ(例えば、フローチャート1400および最適化ファイル・バックアップ・モジュール1306による)は、最適化データー・ストリームをバックアップするいずれの状況においても実行することができる。最適化バックアップは、バックアップされるボリューム(バックアップ・ストレージにおいてアクセス可能な記憶エリア)の殆どが範囲内にある場合に実行することが望まれると考えられる。要求1318において特定された最適化データー・ストリームによって参照されていないが他の最適化データー・ストリームによって参照されているデーター・チャンクは、チャンク・コンテナに含まれているかもしれないので、チャンク・コンテナ全体を格納するときには、何らかの「無駄」があり得る。したがって、必要とされるよりも多いデーター全体がバックアップされる可能性がある。範囲内においてバックアップされる量が比較的少ない場合(例えば、バックアップされたチャンク・コンテナに含まれている少数のデーター・チャンクが、要求1318において特定された最適化データー・ストリームと関連付けられている)、チャンク・コンテナ全体を格納するのではない他のバックアップ技法が望まれる場合もある(例えば、以下で説明する無最適化バックアップ技法)。
[0123] 最適化バックアップにしたがってバックアップされた最適化データー・ストリームを復元するには、この復元が最適化された復元となるように、チャンク・ストア・コンテナ・ファイルおよびストリーム・メタデーター・スタブを復元する必要がある。このような最適化格納(optimized store)の方が相対的にサイズが小さく、したがって相対的に高速であり、消費するI/O資源が少ない。最適化バックアップからの最適化データー・ストリームの選択的復元のための技法については、次の副章において以下で更に詳しく説明する。
[0124] したがって、最適化バックアップの実施形態は種々の便益を提供することができる。例えば、最適化バックアップの結果、バックアップの格納サイズを縮小することができ、バックアップ媒体空間(例えば、バックアップ・ストレージ1304における)を節約する。これは、ディスクに基づくバックアップの解決策には有用となるであろう。場合によっては、バックアップ・ストレージにおける記憶空間の節約が、主ストレージにおける節約よりも意味があり、価格効率的になる場合もある。最適化バックアップの結果、バックアップを実行する時間を短縮することができる。バックアップ実行時間を短縮することができ、年々増大しつつあるデーターの格納量を考慮すると、これは有意である。データー量の増大のために、ストレージ・ユーザーは、頻繁にバックアップを行う(例えば、毎日)ことに悪戦苦闘する場合もある。何故なら、バックアップ実行時間は、データー量と共に増大するからである。最適化バックアップ技法は、バックアップ実行時間を短縮するのに役立つことができる。更に、最適化バックアップはRTOを短縮し、復元の高速化をもたらすことができる。RTOは、バックアップ/復元解決策の重要な尺度である。
[0125] 他の実施形態では、最適化データー・ストリームを非最適化(non-optimized)または無最適化(un-optimized)形態で格納するために、非最適化バックアップ(「無最適化データー・ストリーム・バックアップ」とも呼ぶ)を実行することもできる。非最適化バックアップによれば、バックアップ・ストレージに合わせて設計された最適化データー・ストリームを、格納する前に、リハイドレートすることができる。例えば、一実施形態では、リハイドレーション・バックアップ・モジュール1308が、最適化データー・ストリームをリハイドレートし、リハイドレートしたデーター・ストリームをバックアップ・ストレージ1304に格納することによって、非最適化バックアップを実行するように構成することができる。一実施形態では、リハイドレーション・バックアップ・モジュール1308は、図15に示すフローチャート1500を実行することができる。フローチャート1500およびリハイドレーション・バックアップ・モジュール1308について、以下のように説明する。
[0126] フローチャート1500のステップ1502において、各最適化データー・ストリームをリハイドレートして、対応する無最適化データー・ストリームにする。この無最適化データー・ストリームは、対応する最適化ストリーム・メタデーターによって参照されているあらゆるデーター・チャンクを含む。リハイドレーション・バックアップ・モジュール1308は、リハイドレーション・モジュール702(図7)について先に説明したようなことを含む、いずれのやり方でも最適化データー・ストリームをリハイドレートすることができる。例えば、図13を参照すると、リハイドレーション・バックアップ・モジュール1308は、ストリーム・コンテナ1302にアクセスして、要求1318において特定された最適化データー・ストリームに対応するストリーム・マップ・チャンクの形態、または他の形態(例えば、グローバル・テーブル、データーベース等)の最適化ストリーム・メタデーターを求めることができる。図13に示すように、リハイドレーション・バックアップ・モジュール1308は、所望のストリーム・マップ・チャンクに対する1つ以上のストリーム・コンテナ・アクセス1322を生成することができる。ストリーム・コンテナ・アクセス1322は、対応するストリーム・マップ識別子によって、所望のストリーム・マップ・チャンクを特定することができる。ストリーム・コンテナ・アクセス1322に応答して、リハイドレーション・バックアップ・モジュール1308は要求1318において特定された最適化データー・ストリームに対応するストリーム・マップ・チャンク1324をストリーム・コンテナ302から受け取る。リハイドレーション・バックアップ・モジュール1308は、対応する引き出されたストリーム・マップ・チャンクのストリーム・マップにしたがって、各最適化データー・ストリームを再生する、即ち、「リハイドレートする」ことができる。図13の例では、各ストリーム・マップは、対応する最適化データー・ストリームに含まれるデーター・チャンクの各々へのポインタ(例えば、図4のデーター・チャンク識別子404)を含む。これらのデーター・チャンクは、チャンク・コンテナ304aおよび/または304bに含まれているとよい。リハイドレーション・バックアップ・モジュール1308は、このポインタを用いて、参照されているデーター・チャンク322の各々を引き出す。例えば、リハイドレーション・バックアップ・モジュール1308は、チャンク・コンテナ・アクセス1326および/または1330の内1つ以上を生成して、第1および/または第2チャンク・コンテナ304aおよび304bそれぞれからデーター・チャンク322を得ることができる。チャンク・コンテナ・アクセス1326および/または1330に応答して、リハイドレーション・バックアップ・モジュール1308は要求1318において特定された最適化データー・ストリームに対応するデーター・チャンク1328および/または1332をチャンク・コンテナ302aおよび302bから受け取る。
[0127] リハイドレーション・バックアップ・モジュール1308は、引き出されたストリーム・マップ(例えば、図3のストリーム・マップ310)に含まれるデーター・ストリーム・オフセット402を用いて、引き出されたデーター・チャンクを適正な順序に並べて各データー・ストリームを無最適化形態で(例えば、無最適化データー・ストリームとして)再生することができる。
[0128] ステップ1504において、無最適化データー・ストリームの各々をバックアップ・ストレージに格納する。例えば、図13に示すように、無最適化データー・ストリームは、格納動作1320にしたがって、リハイドレーション・バックアップ・モジュール1308によってバックアップ・ストレージ1304に格納することができる。したがって、データー・ストリームをバックアップ・ストレージ1304から復元することが望まれる場合、バックアップ・ストレージ1304に格納されている無最適化データー・ストリームを引き出すことができる。
[0129] このように、無最適化バックアップ(フローチャート1500およびリハイドレーション・バックアップ・モジュール1308による)は、最適化データー・ストリームをバックアップするいずれの状況においても実行することができる。無最適化バックアップを実行することが望まれると考えられるのは、最適化データー・ストリームのデーター・チャンクがチャンク・ストア1334の記憶空間の内比較的少ない部分を埋める場合である。つまり、チャンク・コンテナ全体をバックアップ・ストレージ1304に格納すると、要求1318において特定された最適化データー・ストリームに関係ない多数のデーター・チャンクを格納することも含む可能性があるが、そうするのはなく、特定の最適化データー・ストリームをリハイドレートしてバックアップ・ストレージ1304に格納することができる。したがって、バックアップ媒体は、データー・ストリームをそれらの最適化されていていない元の形態で格納することができ、関係ないデーター・チャンクを格納することを回避することによって、バックアップ記憶空間を節約することができる。
[0130] 無最適化バックアップの実施形態は、種々の便益を提供することができる。例えば、無最適化バックアップは、選択的バックアップをより多く用い(そして選択的復元を可能にする)、実施するのが比較的容易である。バックアップしたデーター・ストリームの復元は、記憶システムが用いるデーター最適化技法に左右されない。何故なら、データー・ストリームは無最適化形態でバックアップされているからである。したがって、インストールされたデーター最適化解決策の機能に左右されることなく、データー・ストリームはどこでも復元およびアクセスすることができる。
[0131] リハイドレーション・プロセスのために、無最適化バックアップは比較的遅くなる可能性があり、データー・バックアップ・モジュール1302の性能に影響を及ぼす可能性がある。最適化データーのハイドレーションは、最適化データーには解凍が行われるために、更に潜在的にデーター断片化のために、通常のデーター読み出しよりも遅い。更に、データー・ストリームが無最適化形態でバックアップされるので、バックアップされるデーターの総量が大きくなる可能性がある。これは、重複排除の利点がないからである。データーの総量は、潜在的に、バックアップされるボリュームよりも大きな量になることもある(何故なら、ボリュームは最適化されるが、バックアップ・データーは最適化されないからである)。場合によっては、バックアップ・ストレージのサイズ制限のために、データーの全てをバックアップすることができない場合もある。つまり、無最適化バックアップは、特定のバックアップ状況における使用のために選択されるとよい。無最適化バックアップまたは他のバックアップ技法を選択する例について、以下で更に説明する。
[0132] 他の実施形態では、項目レベル最適化形態で最適化データー・ストリームを格納するために、項目レベル・バックアップを実行することもできる。項目レベル・バックアップによれば、バックアップ・ストレージに指定された最適化データー・ストリームが、最適化形態での格納のために準備される。例えば、特定の最適化データー・ストリームのために、最適化データー・ストリームのストリーム・マップ・チャンクによって参照されているデーター・チャンクを判定する。参照されているデーター・チャンクの内既にバックアップ・ストレージに格納されているものはいずれも、チャンク・ストアから引き出されない。参照されているデーター・チャンクの内未だバックアップ・ストレージに格納されていないものはいずれも、チャンク・ストアから引き出され、バックアップ・ストレージに格納される。例えば、一実施形態では、項目レベル・バックアップ・モジュール1310は、バックアップ・ストレージ1304に、ストリーム・マップ・チャンクと、参照されているデーター・チャンクの内未だバックアップ・ストレージ1304に格納されていないものを格納することによって、項目レベル・バックアップを実行するように構成することができる。例えば、項目レベル・バックアップ・モジュール1310は、一実施形態では、図16に示すフローチャート1600を実行することができる。フローチャート1600は、要求1318において特定された最適化データー・ストリーム毎に実行することができる。フローチャート1600および項目レベル・バックアップ・モジュール1310について、以下のように説明する。
[0133] フローチャート1600のステップ1602において、バックアップするために特定された第1最適化データー・ストリームを受け取る。例えば、要求1318は最適化データー・ストリームを特定することができる。この最適化データー・ストリームに対して、項目レベル・バックアップ・モジュール1310は、最適化ストリーム・メタデーター(例えば、ストリーム・コンテナ302からのストリーム・マップ・チャンク1324)を引き出すことができ、最適化ストリーム・メタデーターによって参照されているいずれのデーター・チャンク322もチャンク・コンテナ304から引き出すことができる。例えば、項目レベル・バックアップ・モジュール1310は、ストリーム・コンテナ302へのストリーム・コンテナ・アクセス1322を生成して所望のストリーム・マップ・チャンクをストリーム・マップ・チャンク1324として引き出すことができ、更にチャンク・コンテナ・アクセス1326および/または1330の内1つ以上を生成して、第1および/または第2チャンク・コンテナ304aおよび304bから、参照されているデーター・チャンク322をデーター・チャンク1328および/または1332として入手することができる。
[0134] ステップ1604において、第1最適化データー・ストリームの最適化ストリーム・メタデーターによって参照されている1つ以上のデーター・チャンクの内、バックアップ・ストレージに未だ格納されていないものを判定する。一実施形態では、項目レベル・バックアップ・モジュール1310は、ストリーム・マップ・チャンクのメタデーターによって参照されているデーター・チャンクを、既にバックアップ・ストレージ1304に格納されているあらゆるデーター・チャンクと比較して、参照されているデーター・チャンクの内いずれかが既にバックアップ・ストレージ1304に格納されているか否か判定することができる。項目レベル・バックアップ・モジュール1310は、参照されているデーター・チャンクのハッシュを、バックアップ・ストレージ1304に格納されているデーター・チャンクのハッシュと比較すること(例えば、ハッシュ・インデックス等を用いて)を含む、いずれの方法でもこの比較を実行することができ、参照されているデーター・チャンクのデーター・チャンク識別子をバックアップ・ストレージ1304に格納されているデーター・チャンクのデーター・チャンク識別子と比較することもでき、または他の技法にしたがってこの比較を行うこともできる。項目レベル・バックアップ・モジュール1310は、リストまたはその他のデーター構造を(例えば、メモリーに)保持することによってというようにして、参照されているデーター・チャンクの内バックアップ・ストレージに未だ格納されていないと判定されたものを追跡し続けることができる。
[0135] ステップ1606において、第1最適化データー・ストリームの最適化ストリーム・メタデーターをバックアップ・ストレージに格納する。例えば、項目レベル・バックアップ・モジュール1310は、最適化データー・ストリームに対してストリーム・コンテナ302から引き出されたストリーム・マップ・チャンクを、バックアップ・ストレージ1304に格納することができる(例えば、格納動作1320を用いて)。
[0136] ステップ1608において、判定された1つ以上のデーター・チャンクをバックアップ・ストレージに格納する。項目レベル・バックアップ・モジュール1310は、 最適化データー・ストリームに対してチャンク・コンテナ302aおよび/または302bから引き出され、ステップ1604において未だバックアップ・ストレージ1304に格納されていないと判定されたデーター・チャンクを、バックアップ・ストレージ1304に格納することができる(例えば、格納動作1320を用いて)。したがって、データー・ストリームをバックアップ・ストレージ1304から復元することが望まれるとき、最適化データー・ストリームに対してバックアップ・ストレージ1304に格納されているストリーム・マップ・チャンクおよびデーター・チャンクをバックアップ・ストレージ1304から引き出し、リハイドレートしてデーター・ストリームを形成することができる。一実施形態では、最適化ストリーム構造(例えば、フローチャート1400(図14)のステップ1404に関して先に説明したストリーム・メタデーター・スタブ)をバックアップ・ストレージ1304にバックアップすることもでき、そしてデーター・ストリームをリハイドレートするためのリパース・ポイントとして、バックアップ・ストレージ1304から引き出すことができる。
[0137] このように、項目レベル・バックアップ(例えば、フローチャート1600および項目レベル・バックアップ・モジュール1310による)は、最適化データー・ストリームをバックアップするいずれの状況においても実行することができる。項目レベル・バックアップによれば、重複排除データー・チャンクを、バックアップされるあらゆるデーター・ストリームと関連付けつつ、バックアップを最適化形態に維持する(例えば、リハイドレーションなしで、あらゆるデーター・チャンクを1回バックアップする)。チャンク・ストア・コンテナ全体をバックアップすることはしない。
[0138] 一実施形態では、バックアップ(および任意に復元)API(アプリケーション・プログラミング・インターフェース)を、項目レベル・バックアップ・モジュール1310によって実装することができる。例えば、バックアップ・セッションを、チャンク・ストア1334に格納されている第1ファイルおよび第2ファイルを最適化形態でバックアップするために定めることもできる。この例では、第1ファイルはチャンク・コンテナ302aのデーター・チャンク322aおよび322bならびにチャンク・コンテナ304bのデーター・チャンク322dを含み、第2ファイルは、チャンク・コンテナ302aのデーター・チャンク322a〜322c、ならびにチャンク・コンテナ304bのデーター・チャンク322dおよび322eを含むと仮定する。第1ファイルをバックアップするために、バックアップAPIをコールすることができる。応答して、APIは第1ファイルに対するストリーム・マップ・チャンク、ならびにデーター・チャンク322a、322b、および322dを戻す。戻されたストリーム・マップ・チャンクならびにデーター・チャンク322a、322b、および322dは、第1ファイルのためにバックアップ・ストレージ1304に格納される。続いて、第2ファイルをバックアップするためにバックアップAPIをコールすることができる。応答して、APIは第2ファイルに対するストリーム・マップ・チャンク、ならびにデーター・チャンク322cおよび322eを戻す。これは、APIが、第2ファイルのデーター・チャンク322a、322b、および322dが既にバックアップ・ストレージ1304に格納されていると判定したからである(第1ファイルがバックアップ・ストレージ1304にバックアップされることによる)。したがって、戻されたストリーム・マップ・チャンクならびにデーター・チャンク322cおよび322eは、第2ファイルのためにバックアップ・ストレージ1304に格納される。
[0139] 項目レベル・バックアップにしたがってバックアップされたデーター・ストリームを復元するための復元モジュールは、同様のAPIを用いることができ、最適化ストリーム・メタデーターは、復元モジュールAPIが、参照されているデーター・チャンクを指し示すのを補助する。項目レベル・バックアップは、全体バックアップおよび選択的バックアップの双方に対して最適化バックアップ(サイズについて)を可能にする(何故なら、バックアップの粒度がデーター・ストリーム/ファイルの粒度になるからである)。しかしながら、項目レベル・バックアップは比較的遅く複雑である場合があり、しかもブロック・レベルのバックアップ技法とではうまく動作しないこともある。
[0140] 更に他の実施形態では、最適化データー・ストリームを他の形式の最適化形態で格納するために、データー・チャンク識別子バックアップを実行することもできる。データー・チャンク識別子バックアップによれば、バックアップしようとする最適化データー・ストリームに対して、データー・チャンク識別子を決定する。データー・チャンク識別子をバックアップ・ストレージに格納し、参照されているデーター・チャンクを格納するチャンク・コンテナをバックアップ・ストレージに格納する。例えば、一実施形態では、データー・チャンク識別子バックアップ・モジュール1312は、バックアップ・ストレージ1304に、データー・ストリームの最適化ストリーム・メタデーターによって参照されているデーター・チャンク識別子、および関連するデーター・チャンク識別子によって特定されるチャンクを格納するチャンク・コンテナを格納することによって、データー・チャンク識別子バックアップを実行するように構成することができる。例えば、データー・チャンク識別子バックアップ・モジュール1312は、一実施形態では、図17に示すフローチャート1700を実行することができる。フローチャート1700およびデーター・チャンク識別子バックアップ・モジュール1312について、以下のように説明する。
[0141] フローチャート1700のステップ1702において、各最適化データー・ストリームの最適化ストリーム・メタデーターを分析して、最適化ストリーム・メタデーターによって参照されている少なくとも1つのデーター・チャンクに対して、対応する少なくとも1つのデーター・チャンク識別子を決定する。例えば、一実施形態では、要求1318において特定された最適化データー・ストリーム毎に、データー・チャンク識別子バックアップ・モジュール1312は、ストリーム・コンテナ302から、対応する最適化ストリーム・メタデーターをストリーム・マップ・チャンクの形態で引き出すことができる。更に、データー・チャンク識別子バックアップ・モジュール1312は、引き出したストリーム・マップ・チャンクのメタデーターを分析して、チャンク・コンテナ304からのストリーム・マップ・チャンクのメタデーターによって参照されている全ての(any)データー・チャンク322に対してデーター・チャンク識別子を決定する。データー・チャンク識別子は、メタデーター(例えば、図4に示したメタデーター400に含まれているデーター・チャンク識別子404)に含まれている。データー・チャンク識別子バックアップ・モジュール1312は、リダイレクション・テーブル(例えば、図9のリダイレクション・テーブル900)を参照して、データー・チャンク識別子の内1つ以上のチャンク・オフセット値をマッピングし、1つ以上の参照されているデーター・チャンクがチャンク・コンテナ304内で移動させられた場合、チャンク・オフセット値を更新する。
[0142] ステップ1704において、最適化データー・ストリーム毎の最適化ストリーム構造を、対応する少なくとも1つのデーター・チャンク識別子と共に、バックアップ・ストレージに格納する。例えば、データー・チャンク識別子バックアップ・モジュール1312は、最適化データー・ストリームの各々の最適化ストリーム構造を、ステップ1702において決定した、対応するデーター・チャンク識別子と共に、バックアップ・ストレージ1304に格納することができる(例えば、格納動作1320を用いて)。チャンク識別子は、いかようにでも、最適化ストリーム構造と関連付けて格納することができ、バックアップ・ストレージ1304内において対応する最適化ストリーム構造の外部または内部に格納することを含む。
[0143] ステップ1706において、最適化データー・ストリームを収容する、チャンク・ストアの1つ以上のチャンク・コンテナを、バックアップ・ストレージに格納する。一実施形態では、データー・チャンク識別子バックアップ・モジュール1312は、最適化データー・ストリームのストリーム・マップ・チャンクがバックアップされるように、ストリーム・コンテナ302をバックアップ・ストレージ1304に格納することができる(例えば、格納動作1320を用いて)。更に、データー・チャンク識別子バックアップ・モジュール1312は、参照されているデーター・チャンクがバックアップされるように、最適化データー・ストリームのストリーム・マップ・チャンクによって参照されているいずれのデーター・チャンク322を格納するチャンク・コンテナ304でも、その1つ以上を格納することができる(例えば、格納動作1320を用いて)。一実施形態では、データー・チャンク識別子バックアップ・モジュール1312は、最適化データー・ストリームの全てのチャンクがバックアップされるように、チャンク・ストア1334全体をバックアップ・ストレージ1304に格納することができる。
[0144] したがって、データー・チャンク識別子バックアップは、前述の最適化バックアップに似ているが、バックアップ時に「復元計画」(restore plan)を付与するために、全てのデーター・チャンク(データー・チャンク)のそれぞれのコンテナ・ファイル内における位置も格納する(データー・チャンク識別子によって)。データー・チャンク識別子バックアップの利点は、バックアップ・アプリケーション(例えば、データー・バックアップ・モジュール1302)がそのカタログに「復元計画」を格納し、選択的復元を含む、復元の状況毎にどの他のファイル(したがって、どのバックアップ媒体)が必要とされるのか前もって知ることができることである。前述の無最適化バックアップと同様、データー・チャンク識別子バックアップも比較的遅く複雑である可能性があり、データー・チャンク識別子バックアップ・モジュール1312によって実装されるバックアップAPIを用いる場合もある。更に、データー・チャンク識別子バックアップは、チャンク・ストアのモジュール性(modularity)を破壊し、内部チャンク・ストアの実施態様(implementation)を露出する。
[0145] したがって、最適化バックアップ、無最適化バックアップ、項目レベル・バックアップ、およびデーター・チャンク識別子バックアップは、各々、図13のデーター・バックアップ・モジュール1302によって実現することができるバックアップの実施形態である。更に、データー・バックアップ・モジュール1302は、最適化バックアップ、無最適化バックアップ、項目レベル・バックアップ、およびデーター・チャンク識別子バックアップの内1つ以上の組み合わせであるバックアップの実施形態を実現することもできる。
[0146] 例えば、一実施形態では、データー・バックアップ・モジュール1302は、最適化バックアップおよび無最適化バックアップの組み合わせを実現することができる。一実施形態では、ボリューム全体のバックアップを実行するときに、最適化バックアップを実行することを選択するとよい。1つの最適化データー・ストリームをバックアップしようとする場合、無最適化バックアップを実行するとよい。1つと全ての最適化データー・ストリームとの間の数の最適化データー・ストリームについては、最適化バックアップまたは無最適化バックアップを選択することができる。例えば、発見法に基づいて、最適化バックアップまたは無最適化バックアップを切り替えても良い。
[0147] 例えば、一実施形態では、データー・バックアップ・モジュール1302は、図18に示すプロセスにしたがって最適化データー・ストリームのバックアップを実行するように構成することができる。図18は、一実施形態例にしたがって、発見法に基づいてバックアップ技法を選択し実行するプロセスを表すフローチャート1800を示す。図18について、以下のように説明する。
[0148] フローチャート1800のステップ1802において、発見法に基づいてバックアップ技法を選択する。例えば、図13に示したように、データー・バックアップ・モジュール1302は任意に発見法モジュール1314を含むことができる。発見法モジュール1314は、最適化データー・ストリームをバックアップするために用いるバックアップ技法を選択するために用いられる発見法を決定するように構成されている。
[0149] ステップ1804において、バックアップ技法を実行して、複数の最適化データー・ストリームをバックアップ・ストレージにバックアップする。発見法モジュール1314によって決定された発見法に基づいて、最適化ファイル・バックアップ・モジュール1306またはリハイドレーション・バックアップ・モジュール1308から1つを選択して、最適化データー・ストリームをバックアップすることができる(例えば、先に図14および図15に関してそれぞれ説明したように)。例えば、一実施形態では、発見法モジュール1314は、最適化データー・ストリームをバックアップするために選択された最適化ファイル・バックアップ・モジュール1306またはリハイドレーション・バックアップ・モジュール1308の内1つに、イネーブル信号を供給することができる。このイネーブル信号は、最適化ファイル・バックアップ・モジュール1306またはリハイドレーション・バックアップ・モジュール1308の内1つが、その対応するバックアップ技法にしたがって最適化データー・ストリームをバックアップすることを可能にする。
[0150] 例えば、一実施形態では、発見法モジュール1314は、「除外モード」(exclude mode)および「含有モード」(include mode)に基づく比較的単純な発見法を実装することができる。「除外モード」によれば、ユーザーはチャンク・ストア・ボリュームを選択することができ、一部のフォルダー/ファイルをバックアップから除外することができる。したがって、発見法モジュール1314は、除外モードにしたがって最適データー・ストリームがバックアップのために選択されたと判断することができる。このような場合、除外モードが決定された結果、最適化データー・ストリーム・バックアップ技法が発見法モジュール1314によって選択される。これは、「除外モード」が通例範囲内のチャンク・ストア・ボリュームの殆どを有するからである。したがって、コンテナ・ファイルが、ユーザーによって選択されたもの以外の最適化データー・ストリームによって参照されているチャンクを含むことがあっても、選択されたデーター・ストリーム(その最適化形態で)に加えて全てのチャンク・ストア・コンテナ・ファイルをバックアップすることが、より良いトレードオフとなる。
[0151] 「含有モード」によれば、ユーザーは比較的少ないフォルダー/ファイルをバックアップのために選択することができる。したがって、発見法モジュール1314は、含有モードにしたがって最適化データー・ストリームがバックアップのために選択されたと判断することができる。このような場合、含有モードが決定された結果、無最適化データー・ストリーム・バックアップ技法が発見法モジュール1314によって選択される。これは、「含有モード」が通例範囲内のチャンク・ストア・ボリュームの比較的小さな部分を有するからである。したがって、選択されたファイルだけをその無最適化形態でバックアップすることが、より良いトレードオフとなる。このような場合、チャンク・ストア・コンテナ・ファイルをバックアップする必要はない。
[0152] 他の実施形態では、発見法モジュール1314が比較的高度な発見法を実装することもできる。バックアップ技法におけるトレードオフは、バックアップ範囲内のファイルの最適化サイズと論理サイズとの間の差(delta)に基づくとよい。記憶空間の無駄は、バックアップ範囲に含まれない最適化データー・ストリームのみによって参照されているチャンクによって消費されるチャンク・ストア・コンテナ・ファイル内における記憶空間であると判断することができる。したがって、発見法モジュール1314は、チャンク・ストア・ボリュームにおけるファイル・サイズに基づいて、更にチャンク・ストア統計に基づいて、無駄な記憶空間の量を決定(例えば、計算)することができる。一実施形態では、どの位のチャンクが所与の1群のデーター・ストリームによって参照されているか精度高く報告するようにチャンク・ストアが構成されていない場合、何らかの仮定を行うとよい。チャンク・ストアが、指定された1群の最適化データー・ストリームによって参照されているチャンク数を報告することができる場合、発見法モジュール1314は、全てのチャンクによって埋められた空間から、バックアップのために指定された最適化データー・ストリームによって参照されているチャンクによって埋められた空間を差し引いた量として、無駄な記憶空間量を決定することができる。無駄な記憶空間量(例えば、全記憶空間に対する)に基づいて、発見法モジュール1314は、最適バックアップまたは無最適バックアップを選択することができる。
[0153] 例えば、図13を参照すると、一実施形態では、発見法モジュール1314は、報告1318において特定された複数の最適化データー・ストリームのいずれのストリーム・マップ・チャンク・メタデーターによっても参照されていないデーター・チャンク322によって消費されたチャンク・ストア1334における空間量を判定することができる。発見法モジュール1314は、チャンク・ストア1334において参照されていないデーター・チャンクによって消費されたと判定された空間量が所定の閾値(例えば、チャンク・ストア1334の総記憶空間の50%またはその他のパーセント)未満である場合、バックアップ技法を最適化データー・ストリーム・バックアップ技法にする選択を行うことができる。発見法モジュール1314は、参照されていないデーター・チャンクによって消費されたと判定されたチャンク・ストア1334の量が所定の閾値よりも大きい場合、バックアップ技法を無最適化データー・ストリーム・バックアップ技法にする選択を行うことができる。
[0154] 一例では、発見法モジュール1314は、以下の分析を実行してバックアップ技法を設定することができる。バックアップ範囲が1つ以上の名称空間ルート(namespace roots)を含み、名称空間ルートがサブフォルダーを反復的に含むフォルダーである場合、以下の発見法パラメータを定義することができる。
範囲=バックアップ範囲における全てのファイルであり、バックアップのために選択されたフォルダーの下にある全てのファイルを意味する。
A=その範囲にある全てのファイルの論理サイズであり、ファイルの論理サイズとは、そのファイルが重複排除される前におけるファイルのサイズである(Aは、範囲内にあるファイルの全ての論理サイズの総和である)。
B=その範囲内にある全てのファイルのディスク上のサイズであり、ファイルのディスク上のサイズとは、そのファイルの重複排除の後に最適化ファイルがディスク上で埋める実際のサイズである。
C=チャンク・ストアのサイズであり、全てのチャンク・ストア・コンテナ・ファイルのサイズの総和である。
これらの定義を検討し、バックアップ・アプリケーションが最適化バックアップを用いる場合、バックアップ媒体上における総バックアップ・サイズはB+Cとなる。バックアップ・アプリケーションが無最適化バックアップを用いる場合、バックアップ・メディア上における総バックアップ・サイズはAとなる。
[0155] したがって、発見法モジュール1314は、バックアップ・ファイル範囲を決定した後、最適または無最適バックアップ間の選択において決定する際に役立てるために、AおよびB+Cの値を計算することができる。A>B+Cである場合、最適化バックアップの方が占める空間が少ないので、選択するとよい。そうでなければ、A≦B+Cである場合、無最適化バックアップの方が占める空間が少ないので、選択するとよい。
E.データー最適化復元の実施形態例
[0156] 図13を参照すると、最適化データー・ストリームが何らかの原因で転化(corrupt)したときというような、何らかの時点において、バックアップ・ストレージ1304にバックアップした最適化データー・ストリームを主ストレージに復元する(restore)ことが望まれる場合がある。例えば、最適化データー・ストリームの1つ以上のチャンク(例えば、ストリーム・マップ・チャンクおよび/またはデーター・チャンク)がチャンク・ストア1334において転化していたということがあり得る。このような場合、最適化データー・ストリームのバックアップ・バージョンを、バックアップ・ストレージ1304から非最適化形態で復元することが望まれる場合がある。現在使用中のバックアップ技法は、ファイル・システムの名称空間全体をバックアップする可能性が高く、最適化ファイルおよびチャンク・ストア・コンテナ・ファイルを含む。更に、多くの現在使用中のバックアップ技法は、テープ媒体のようなシーケンシャル・バックアップ媒体を、バックアップ・ストレージのために未だに用いている。したがって、データー・ストリームを復元する技法が、異なるバックアップ媒体の種類およびバックアップ・フォーマットを考慮に入れることができることが望ましい。
[0157] この副章では、最適化データー・ストリームをバックアップ・ストレージから復元する実施形態について説明する。実施形態は、レイテンシーおよびディスクI/O動作を低減するように、最適化データー・ストリーム(例えば、ファイル)を復元することを可能にする。一実施形態によれば、バックアップしたチャンク・コンテナの別の不要な部分を復元するのではなく、特定のデーター・ストリームに対するチャンクを、バックアップ・ストレージから復元することが可能になる。実施形態は、最適化バックアップ全体からのデーター・ストリームの選択的復元を可能にし、データー最適化メタデーターを理解する必要がなく、更にバックアップ媒体の種類やバックアップ・フォーマットについて仮定を行う必要もない。
[0158] 実施形態では、データー最適化システムにおけるデーター・ストリームの復元は、種々の方法で実行することができる。例えば、図19は、一実施形態例にしたがって、データー最適化システムにおいてバックアップ・データーの復元を実行するフローチャート1900を示す。フローチャート1900は、一実施形態では、図1のチャンク・ストア・インターフェース116によって実行することができる。例示の目的に限って、図20に関してフローチャート1900を説明する。図20は、一実施形態例によるデーター復元システム2000のブロック図を示す。尚、一実施形態では、図13のデーター・バックアップ・システム1300およびデーター復元システム2000を共通のシステムにおいて(例えば、共通のバックアップ/復元アプリケーション等)実装してもよく、または別々に実装してもよいことを注記しておく。図20に示すように、データー復元システム2000は、データー復元モジュール2002とバックアップ・ストレージ2034とを含む。バックアップ・ストレージ2034は、ストリーム・コンテナ302と1つ以上のチャンク・コンテナ304(例えば、チャンク・コンテナ304aおよび304b)を格納する。更に、データー復元モジュール2002は、ファイル・リコンストラクター(file reconstructor)2004と、復元アプリケーション2006とを含む。フローチャート1900は、一実施形態では、ファイル・リコンストラクター2004によって実行することができる。フローチャート1900に関する論述に基づいて、関連技術(1つまたは複数)の当業者には更に他の構造的および動作的実施形態も明白であろう。フローチャート1900およびデーター復元モジュール2002について、以下のように説明する。
[0159] 図20を参照すると、復元アプリケーション2006は、カタログ(またはその他の何らかのメカニズム)を用いてバックアップ・ストレージにおいてファイルの位置を突き止め、突き止めたファイルをストレージに書き込むことによって、ファイルをバックアップ・ストレージから復元するように構成されている従来の復元アプリケーションであってよい。復元アプリケーション2006は、復元機能のみを含むのでもよく、またはバックアップ機能も含んでもよい(例えば、バックアップ/復元アプリケーションであってもよい)。データー最適化システムの場合、ファイル復元要求に応答して復元アプリケーション2006によってストレージに書き込まれるファイルは、最適ストリーム構造であり、ストリーム・マップ・チャンクへの参照を収容している。
[0160] 例えば、復元アプリケーション2006は、データー・ストリームをバックアップ・ストレージ2034から引き出す要求2010を受けることができる。要求2010は、ファイル名称によってデーター・ストリームを特定することができる。図20に示すように、復元アプリケーション2006は、最適化ストリーム構造2038(例えば、ストリーム・メタデーター・スタブ)をバックアップ・ストレージ2034から引き出すことができる。最適化ストリーム構造2038は、要求2010の要求されたファイル・ストリームに対応する。しかしながら、最適化ストリーム構造2038は要求2010において要求されたデーター・ストリームに対するリパース・ポイントであるので(例えば、最適化ストリーム構造2038はファイル・データーを含まない)、復元アプリケーション2006は、最適化ストリーム構造2038に対応するデーター・ストリームを再現するために、ファイル・リコンストラクター2004にアクセスするように構成されている。例えば、ファイル・リコンストラクター2004は、図19におけるフローチャート1900にしたがって、次のようにデーター・ストリームを再現するように構成することができる。
[0161] フローチャート1900のステップ1902において、ストレージ内にあるチャンク・ストアからデーター・ストリームを引き出す要求を受ける。この要求は、このデーター・ストリームに対応する最適化ストリーム・メタデーターの識別子を含む。例えば、図20に示すように、ファイル・リコンストラクター2004は、要求2036を復元アプリケーション2006から受けるのでもよい。要求2036は、ファイル・リコンストラクター2004が最適化データー構造2038に対応するデーター・ストリームを再現する要求である。要求2036は、最適化ストリーム構造2038を含む。最適化ストリーム構造2038は、ストリーム・マップ・インディケーターのような、最適化ストリーム・メタデーター・インディケーターを含み、対応する最適化データー・ストリームに対応する最適化ストリーム・メタデーター(例えば、ストリーム・マップ・チャンク)の位置を突き止めるために用いることができる。本明細書のいずれかの場所で説明したように、最適化ストリーム・メタデーターは、ファイル・リコンストラクター2004がデーター・ストリームを組み立て直すために用いることができるデーター・チャンクへの参照を含む。
[0162] ファイル・リコンストラクター2004は、ハードウェア、ソフトウェア、またはこれらのあらゆる組み合わせで実現することができる。例えば、一実施形態では、ファイル・リコンストラクター2004は、バックアップ・ストレージから復元された最適化データー構造に基づいてデーター・ストリームをリハイドレートするように構成されているアプリケーション・プログラミング・インターフェース(API)とすることができる。一実施形態では、ファイル・リコンストラクター2004のAPIは、以下の形態で要求2036を受けるように構成することができる。
再現ファイル(復元−状態/コンテキスト[内]、ファイル−名称[内]、コールバック−インターフェース[内])
ここで、要求パラメータを次のように定義する。
「復元−状態/コンテキスト」は、多数のコール間で内部状態を維持するために用いられるラベルである。
「ファイル−名称」は、最適化ストリーム構造2038のファイル名称である。
「コールバック−インターフェース」は、ファイル・リコンストラクター2004が復元アプリケーション2006に対してコールバックを行うために用いる識別子である。
他の実施形態では、ファイル・リコンストラクター2004は、API以外の方法で構成することもできる。例示の目的に限って、ファイル・リコンストラクター2004のAPIの実施形態について以下で引用することがあるが、この実施形態は限定することを意図するのではない。
[0163] ステップ1904において、復元アプリケーションに対する第1のコールを、最適化ストリーム・メタデーター識別子に基づいて生成する。この第1のコールは、最適化ストリーム・メタデーター識別子によって特定された最適化ストリーム・メタデーターを格納するストレージにおける第1チャンク・コンテナにファイル名称を指定し、更に第1チャンク・コンテナにおける最適ストリーム・メタデーターにオフセットを指定する。図20に示すように、一実施形態では、ファイル・リコンストラクター2004は、コールバック・モジュール2008を含むことができる。コールバック・モジュール2008は、コールを生成するように構成されており、復元アプリケーション2006にコールバックするためにファイル・リコンストラクター2004によって用いられる(例えば、ファイル・リコンストラクター2004のAPIによって用いられる)。コールバック・モジュール2008は、復元アプリケーション2006に対してコールバックを行い(例えば、復元アプリケーション2006によって供給される「コールバック・インターフェース」にしたがって)、コールにおいて特定されたチャンクをバックアップ・ストレージ2034から復元することができる。ファイル・リコンストラクター2004は、復元されたチャンクを受け取り、これらを用いて、特定されたデーター・ストリームを組み立て直す。例えば、一実施形態では、コールバック・モジュール2008は、以下のコールバック構造にしたがってコールを実施することができる。
リード([in]復元−状態/コンテキスト、[in]ファイル名称、[in]オフセット、[in]サイズ、[out]バッファー)
ここで、コール・パラメータを次のように定義する。
「復元−状態/コンテキスト」は、多数のコール間で内部状態を維持するために用いられるラベルである。
「ファイル名称」は、バックアップ・ストレージ2034において、要求されたチャンクを格納するコンテナのファイル名称である。
「オフセット」は、要求されたチャンクに対するコンテナにおけるオフセットである。
「サイズ」は、要求されたチャンクのコンテナ内におけるサイズである。
「バッファー」は、ファイル・リコンストラクター2004が、復元されたチャンクにアクセスするために、復元されたチャンクを復元アプリケーション2006が格納することができる場所(例えば、メモリーまたは他のストレージにおけるバッファー)である。
他の実施形態では、コールは他のフォーマットまたは構造を有することもできる。復元アプリケーション2006は、特定のバックアップされたファイルにおいて与えられるオフセットから、バックアップ・ストレージ2304からチャンクを復元することができることによって、選択的復元が行えるように構成されている。例えば、復元アプリケーション2006は、バックアップ・カタログを用いて、受けたコールの{ファイル−名称、ファイル−オフセット}を{バックアップ−媒体、メディアにおけるオフセット}にマッピングする(ファイルからバックアップ媒体にマッピングする)ことができる。
[0164] 最適化ストリーム・メタデーターをストリーム・マップ・チャンクの形態で格納する実施形態では、コールバック・モジュール2008によって生成された最初のコール(ステップ1094にしたがって)は、最適化ストリーム構造2038内におけるストリーム・マップ・チャンク識別子によって特定されるストリーム・マップ・チャンクを求める、復元アプリケーション2006に対する要求である。一実施形態では、コールバック・モジュール2008は、前述のコールバック構造にしたがって最初のコールを生成することができる。コールバック・モジュール2008は、チャンク・コンテナ識別子の値を「ファイル名称」パラメータとして含むように、そしてチャンク・オフセット値の値を「オフセット」パラメータとして含むように、最初のコールを生成することができる。「サイズ」パラメータは任意である。何故なら、復元アプリケーション2006は、バックアップ・ストレージ2034内において、要求されたチャンクのサイズを独立して決定することができる場合もあるからである(例えば、デフォルトのサイズで作られたチャンクのため、バックアップ・カタログに格納されているチャンク・サイズ情報にアクセスすることによって等)。図20の例に関して、コールバック・モジュール2008は、ストリーム・コンテナ302のファイル名称を「ファイル名称」パラメータとして含み、更にストリーム・コンテナ302内におけるストリーム・マップのオフセットの値を「オフセット」パラメータとして含むように、最初のコールを生成することができる。図20に示すように、ファイル・リコンストラクター2004は、コールバック・モジュール2008によって生成された第1のコール2014を復元アプリケーション2006に送信する。
[0165] ステップ1906において、第1のコールに応答して最適化ストリーム・メタデーターを受け取る。一実施形態では、復元アプリケーション2006は第1のコール2104を受け取り、バックアップ・ストレージ2034にアクセスして、第1のコール2014において特定されたストリーム・マップ・チャンクを入手する。復元アプリケーション2006は、バックアップ・ストレージ2034内にあるストリーム・コンテナ302へのアクセス2016を生成し、ストリーム・コンテナ302において、第1のコール2104において示されているストリーム・マップ・チャンク2018を引き出す。復元アプリケーション2006は、ストリーム・マップ・チャンク2018を、応答2020においてファイル・リコンストラクター2004に送信する。
[0166] ステップ1908において、最適化ストリーム・メタデーター内において参照されている少なくとも1つのデーター・チャンク識別子を判定する。一実施形態では、ファイル・リコンストラクター2004は、応答2020において受け取ったストリーム・マップ・チャンク2018によって定められたストリーム・マップのメタデーター(例えば、図3のストリーム・マップ310のメタデーター314)を分析して、参照されているデーター・チャンクに対する1つ以上のデーター・チャンク識別子を求める。ストリーム・マップのメタデーターは、データー・チャンク識別子の形態で(例えば、図4のデーター・チャンク識別子404)、処理対象のデーター・ストリームに含まれるチャンク・コンテナ304aおよび304b内にあるデーター・チャンク322の各々へのポインタを含む。このように、ストリーム・マップ・チャンク2018に含まれる1つ以上のデーター・チャンク識別子を判定する。
[0167] ステップ1910において、ストレージ内における少なくとも1つのチャンク・コンテナから少なくとも1つのデーター・チャンクを得るために、復元アプリケーションに対する少なくとも1つの追加のコールを、少なくとも1つのデーター・チャンク識別子に対応して生成する。一実施形態では、コールバック・モジュール2008は、復元アプリケーション2006に対して1つ以上の追加のコールを生成する。各コールは、ステップ1908において判定されたデーター・チャンク識別子に対応する、バックアップ・ストレージ2034における、データー・チャンク322を求める要求である。例えば、コールバック・モジュール2008は、判定されたデーター・チャンク識別子(1つまたは複数)の内対応するデーター・チャンク識別子に基づいて、復元アプリケーション2006に第2のコールを生成することができる。この第2のコールは、前述のコール構造を有することができ、または他の構造を有しても良い。第2のコールは、バックアップ・ストレージ2034内において、データー・チャンク識別子によって特定されたデーター・チャンク322を格納するチャンク・コンテナ304aおよび304bの内1つのファイル名称(「ファイル名称」パラメータとして)を指定することができる。第2のコールは、ファイル名称によって特定された第1および第チャンク・コンテナ304aおよび304bの内1つの中で特定されたデーター・チャンク322に対してオフセットを指定することができる(「オフセット」パラメータとして)。「サイズ」パラメータは任意である。何故なら、復元アプリケーション2006は、特定されたデーター・チャンク322のサイズを独立して決定することができる場合もあるからである。図20に示すように、ファイル・リコンストラクター2004は、コールバック・モジュール2008によって生成された第2のコール2022を復元アプリケーション2006に送信する。
[0168] ステップ1912において、少なくとも1つの追加のコールに応答して、少なくとも1つのデーター・チャンクを受け取る。一実施形態では、復元アプリケーション2006は第2のコール2022を受け、バックアップ・ストレージ2034にアクセスして、第2のコール2022において特定されたデーター・チャンク322を得る。例えば、特定されたデーター・チャンクが第1チャンク・コンテナ304aに格納されている場合、復元アプリケーション2006はバックアップ・ストレージ2034における第1チャンク・コンテナ302aへのアクセス2024を生成することができ、第1チャンク・コンテナ302aにおいて、第2のコール2022において指示されているオフセットにおけるデーター・チャンク2026を引き出すことができる。復元アプリケーション2006は、データー・チャンク2026を応答2028においてファイル・リコンストラクター2004に送信する。
[0169] 尚、ステップ1908において判定された追加のデーター・チャンク識別子毎に、ファイル・リコンストラクター2004は、第2のコール2022と同様にして、対応するデーター・チャンク322をバックアップ・ストレージ2034から引き出すために、復元アプリケーション2006への追加のコールを生成することができる。例えば、ファイル・リコンストラクター2004から受けた第3のコールに応答して、復元アプリケーション2006は、第3のコールにおいて特定されたデーター・チャンク322を得るために、バックアップ・ストレージ2034にアクセスすることができる。例えば、識別されたデーター・チャンクが第2チャンク・コンテナ304bに格納されている場合、復元アプリケーション2006は、バックアップ・ストレージ2304における第2チャンク・コンテナ302bへのアクセス2030を生成することができ、そして第3のコールにおいて示されている、第2チャンク・コンテナ302bにおけるオフセットにおいて、データー・チャンク2032を引き出すことができる。復元アプリケーション2006は、データー・チャンク2032を他の応答において、ファイル・リコンストラクター2004に送信することができる。追加のデーター・チャンク識別子に対応する追加のコールも同様に処理して、ファイル・リコンストラクター2004ために、バックアップ・ストレージ2034から追加のデーター・チャンクを引き出すことができる。
[0170] ステップ1914において、最適化ストリーム・メタデーターおよび少なくとも1つのデーター・チャンクを組み合わせて、データー・ストリームを復元する。一実施形態では、ストリーム・マップ・チャンク2018、およびバックアップ・ストレージ2034から引き出された1つ以上のデーター・チャンク322(例えば、データー・チャンク2026および2032)は、データー・ストリームを復元するために組み合わせることができる。リハイドレーション・モジュール702について先に説明したのと同様に、ファイル・リコンストラクター2004は、ストリーム・マップ・チャンク2018のストリーム・マップに含まれるデーター・ストリーム・オフセット402(図4)を用いて、引き出されたデーター・チャンク322を適正な順序に並べて、データー・ストリームを再生することができる。このデーター・ストリームは、ファイル・リコンストラクター2004によってデーター・ストリーム2012として出力される。データー・ストリーム2012は、主ストレージに格納することができ、または主ストレージに格納するために復元アプリケーション2006に出力することができ、あるいは特定のアプリケーションに合わせて所望通りに、それ以外で処理または配信することもできる。
[0171] 例示の目的のために、図19のフローチャート1900および図20のシステム2000を参照して、最適化ファイルの復元例について説明する。最適化ファイルに対するストリーム・マップ・チャンクをストリーム・コンテナ302に格納し、この最適化ファイルは、チャンク・コンテナ304aのデーター・チャンク322aおよび322bと、チャンク・コンテナ304bのデーター・チャンク322eとを含む。この例では、ストリーム・コンテナ302はファイル名称SC5を有し、チャンク・コンテナ304aはファイル名称CC3を有し、そしてチャンク・コンテナ304bはファイル名称CC7を有する。先に説明したように、復元アプリケーション2006は、バックアップ・ストレージ2034からの最適化ファイルに合わせて、最適化ストリーム構造2038(例えば、ファイル名称「OFN」を有する)を復元することができる。ステップ1902において、復元アプリケーション2006は、最適化ファイルに対してファイル再構築プロセスを開始する要求2036をファイル・リコンストラクター2004に対して生成することができる(例えば、ファイル再現(OFN、コールバック)を用いて)。ステップ1904において、コールバック・モジュール2008は第1コールを復元アプリケーション2006に生成し、最適化フィアルに対して最適化ストリーム構造2038において特定されたストリーム・マップ・チャンクを要求する(例えば、コールバック−>リード(内部状態、SC5、streammapchunkoffset、64K、バッファー)。ここで、ストリーム・マップ・チャンクのサイズは64Kである)。ステップ1906において、復元アプリケーション2006は、ストリーム・マップ・チャンクをストリーム・コンテナ304から引き出し、このストリーム・マップ・チャンクを応答においてファイル・リコンストラクター2004に供給する。ステップ1908において、ファイル・リコンストラクター2004はこのストリーム・マップ・チャンクを分析して、所望のファイルに含まれるデーター・チャンク322a、322b、および322eの3つのデーター・チャンク識別子を判定する。ステップ1910において、コールバック・モジュール2008は、3つのコールを復元アプリケーション2006に対して生成し、それぞれ、データー・チャンク322a、322b、および322eを要求する(例えば、コールバック−>リード(内部状態、CC3、datachunk322aoffset、64K、バッファー)の第1のコール、コールバック−>リード(内部状態、CC3、datachunk322boffset、64K、バッファー)の第2のコール、およびコールバック−>リード(内部状態、CC7、datachunk322coffset、64K、バッファー)の第3のコール)。ステップ1912において、ファイル・リコンストラクター2004は、3つのコールに応答して、復元アプリケーション2006からデーター・チャンク322a、322b、および322eを受け取る。ステップ1914において、ファイル・リコンストラクター2004は、ストリーム・マップ・チャンクのストリーム・マップにしたがって、最適化ファイルを無最適化形態に組み立て直し、組み立てたファイルを格納する(例えば、組み立て直されたファイルをディスク上の最適化ストリーム構造2038に書き込む)。
[0172] 尚、フローチャート1900の例では、データー・ストリームを組み立て直す(ステップ1914において)ことを注記しておく。他の実施形態では、データー・ストリームを組み立て直す代わりに、最適化ストリーム構造2038をストレージ(主またはバックアップ)に最適化ファイルとして維持してもよく、データー・ストリームに含まれると判定されたデーター・チャンクを、チャンク・ストア(バックアップ・ストレージ2034におけるのではない)に格納してもよい。このように、最適化データー・ストリームは最適化された状態であり続け、チャンク・ストアにおけるデーター・チャンクを参照する。このような実施形態では、ストリーム・マップ・チャンク(ステップ1906において受け取られた)および1つ以上のデーター・チャンク(ステップ1912において受け取られた)をチャンク・ストアに格納する。
[0173] 更に先に説明したように、チャンクは、断片化解消およびコンパクションのような、種々の機能のために、コンテナ内部で移動させられる場合がある。したがって、チャンクのこのような移動を追跡するリダイレクション・テーブルを維持するとよい。一実施形態では、ファイル・リコンストラクター2004は、リダイレクション・テーブルにアクセスして、コンテナにおいて調節されたオフセットから引き出されたチャンクを有するようにコールを調節するように構成することもできる。例えば、図21は、一実施形態による、再分配テーブル(redistribution table)900にアクセスするコールバック・モジュールのブロック図を示す。コールバック・モジュール2008は、バックアップ・ストレージにおけるコンテナ毎(例えば、図20の例におけるストリーム・コンテナ302ならびにチャンク・コンテナ304aおよび304bの各々)に、再分配テーブル900にアクセスすることができる。このように、コールバック・モジュール2008は、オフセットを古いままにしておくのではなく、コンテナにおいてオフセットを調節し、これに対してコールを生成することができる。
[0174] 例えば、一実施形態では、コールバック・モジュール2008は、図22に示すフローチャート2200を実行することができる。図22は、一実施形態例にしたがって、チャンクに対して更新されたオフセットを得るために再分配テーブル(redistribution table)にアクセスするプロセスを表すフローチャート2200を示す。フローチャート2200について、以下のように説明する。
[0175] フローチャート2200のステップ2202において、データー・チャンクに対するデーター・チャンク識別子に含まれる第1オフセットを第2オフセットにマッピングするために、リダイレクション・テーブルにアクセスする。例えば、コールバック・モジュール2008は、ストリーム・コンテナの再分配テーブルにアクセスし、ここからストリーム・マップ・チャンクを引き出す(例えば、図3のストリーム・コンテナ302におけるリダイレクション・テーブル308)。または、コールバック・モジュール2008は、チャンク・コンテナの再分配にアクセスし、ここから、データー・チャンクを引き出す(例えば、図3のチャンク・コンテナ304における再分配テーブル320)。コールバック・モジュール2008は、再分配テーブルにはいかようにもアクセスすることができ、この再分配テーブルを引き出すためのコールを生成することによることを含む。たとえば、コールを生成し、復元アプリケーション2006に送信することができる。復元アプリケーション2006は、再分配テーブルを収容するコンテナのファイル名称、およびコンテナにおける再分配テーブルに対するオフセットを定める。復元アプリケーション2006は、再分配テーブルをバックアップ・ストレージ2034から引き出すことができ、そしてこの再分配テーブルをファイル・リコンストラクター2004に供給することができる。このように、コールバック・モジュール2008は、再分配テーブルにアクセスして、更新チャンク・オフセットを判定することができる。
[0176] ステップ2204において、データー・チャンク識別子に基づいて、第2のコールを復元アプリケーションに対して生成する。この第2のコールは、データー・チャンク識別子に対応するデーター・チャンクを格納するストレージにおける第2チャンク・コンテナのファイル名称を指定し、更に第2チャンク・コンテナにおけるデーター・チャンクに対して第2のオフセットを指定する。例えば、データー・チャンクに対するコールに先立って、コールバック・モジュール2008はこのデーター・チャンクに対する再分配テーブルにアクセスし、このデーター・チャンクに対して更新された第2のオフセットを判定することができる(再分配テーブルにおいて新たなオフセットがある場合)。コールバック・モジュール2008は、復元アプリケーション2006へのコールにおいて、この更新オフセット値を用いて、データー・チャンクを引き出すことができる。このコールは、バックアップ・ストレージ2034におけるチャンク・コンテナ304のファイル名称を指定することができ、そして再分配テーブルから得られる更新オフセット値を指定することができる。復元アプリケーション2006は、このコールを受け、指示されたチャンク・コンテナおよび更新オフセットからデーター・チャンクを引き出し、引き出したデーター・チャンクを応答においてファイル・リコンストラクター2004に供給することができる。
[0177] 尚、フローチャート2200の例では、データー・チャンク・オフセットを第1オフセットから第2オフセットにマッピングするために、チャンク・コンテナの再分配テーブルにアクセスすることを注記しておく。代わりに、ストリーム・マップ・チャンクを第1オフセットから第2オフセットにマッピングするためにストリーム・コンテナの再分配テーブルにアクセスするように、フローチャート2200を修正してもよい。一実施形態では、コンテナのリダイレクション・テーブルは、チャンクに対するコールを生成するのに先立って、コールバック・モジュール2008によって予め引き出すこともできる。
[0178] 一実施形態では、バックアップ・ストレージ2304から引き出されるチャンクのサイズを、これらのチャンクを引き出す前に、判定する。例えば、一実施形態では、チャンク毎に、コールバック・モジュール2008によって復元アプリケーション2006に第1のコールを行って、引き出そうとするチャンクのサイズを判定することができ、コールバック・モジュール2008によって復元アプリケーション2006に第2のコールを行って、判定したサイズを有するチャンクをバックアップ・ストレージ2034から引き出すことができる。
[0179] 例えば、一実施形態では、コールバック・モジュール2008は、バックアップ・ストレージ2034において当該チャンクを格納しているコンテナのファイル名称、そのコンテナにおけるチャンクに対するオフセット、およびそのチャンクのヘッダー・サイズ(そして、任意に、そのチャンクを出力するバッファー)を指定する第1コールを生成することができる。例えば、チャンク・ヘッダー・サイズは、コールバック・モジュール2008が知っている標準的なヘッダー・サイズにするとよい。第1のコールは、復元アプリケーション2006に送信され、この第1のコールによって指示されるように、バックアップ・ストレージ2034からチャンク・ヘッダーを引き出すことができる。復元モジュール2006は、チャンク・ヘッダー(例えば、ストリーム・マップ・チャンク・ヘッダーまたはデーター・チャンク・ヘッダー)を引き出すことができ、このチャンク・ヘッダーをコールバック・モジュール2008に第1の応答において供給することができる。チャンク・ヘッダーは、チャンクのサイズを指示することができる。例えば、ストリーム・マップ・チャンク・ヘッダーは、ストリーム・マップ・チャンクのサイズを指示することができ、データー・チャンク・ヘッダーはデーター・チャンクのサイズを指示することができる。次いで、コールバック・モジュール2008は、バックアップ・ストレージ2034内において当該チャンクを格納するコンテナのファイル名称、そのコンテナにおけるチャンクに対するオフセット、およびチャンク・ヘッダーから判定されたチャンクのサイズ(そして、任意に、そのチャンクを出力するバッファー)を指定する第2のコールを生成することができる。復元アプリケーション2006は、指定されたオフセットにおいて、そして指示されたサイズを有するこのチャンク(例えば、ストリーム・マップ・チャンクまたはデーター・チャンク)を引き出すことができる。復元アプリケーション2006は、引き出したチャンクをコールバック・モジュール2008に第2の応答において供給することができる。このように、コールバック・モジュール2008は復元アプリケーション2006を用いてチャンク・サイズを判定することができ、2つのコールを用いてチャンクを引き出すことができる。第1のコールは、チャンク・サイズを判定するために用いることができ、第2のコールは、この判定されたサイズを有するチャンクを引き出すために用いることができる。
[0180] 一実施形態では、コールバック・モジュール2008は、ストリーム・マップ・チャンクにデーター・チャンク識別子が含まれている順序を含む、いずれの順序でもデーター・チャンクを引き出すためにコールを生成することができる。他の実施形態では、ファイル・リコンストラクター2004は、コールバック・モジュール2008がデーター・チャンクを一層効率的な順序で引き出すように、データー・チャンク識別子をソートする(sort)ように構成することができる。例えば、図23は、一実施形態例によるファイル・リコンストラクター2004のブロック図を示す。図23に示すように、ファイル・リコンストラクター2004は、識別子ソーター2302を含む。識別子ソーター2302は、チャンクを復元する順序をソートすることができる。例えば、一実施形態では、識別子ソーター2302は、図24に示すフローチャート2400を実行することができる。図24は、一実施形態例にしたがってデーター・チャンク復元順序をソートするプロセスを表すフローチャートを示す。フローチャート2400について、以下のように説明する。
[0181] フローチャート2400のステップ2402において、第1ソート・キーとして決定されたチャンク・コンテナと、第2キーとしてのチャンク・オフセットとに基づいて、複数のデーター・チャンク識別子をソートする。一実施形態では、識別子ソーター2302は、対応するデーター・チャンクを一層効率的に引き出すことを可能にするように、1つ以上のソート・キーにしたがって、ストリーム・マップ・チャンクに含まれるデーター・チャンク識別子をソートすることができる。例えば、データー・チャンク識別子は、第1ソートキーとしてコンテナ・ファイルに基づいて、そして第2ソート・キーとしてこのコンテナ・ファイル内部にあるチャンクに基づいてソートすることができる。他の実施形態では、データー・チャンク識別子は、追加のおよび/または代わりの判断基準あるいはキーを用いてソートすることもできる。
[0182] ステップ2404において、ステップ2402によって定められた順序で、複数のデーター・チャンクに対応して、複数の追加のコールを復元アプリケーションに対して生成する。例えば、フローチャート1900(図19)のステップ1910の追加のコールを、ステップ2402の並び替えによって定められた順序で生成することができる。このように、バックアップ・ストレージ2034から一層効率的にデーター・チャンクを引き出すことができる。例えば、テープのような連続媒体にデーター・チャンクが格納されているシーケンスと一致する連続順序でデーター・チャンクを引き出すように、そして共通のバックアップ媒体(例えば、同じテープ、同じディスク等)に格納されているデーター・チャンクを、他のデーター・チャンクを復元する前に、順次復元するように、コールをソートすることができる。このような順序付けによって、バックアップ媒体の切り替え回数、およびバックアップ媒体内におけるシークの回数を減らすことができ、これは特にテープからの復元には望ましい。
[0183] 復元アプリケーションが復元の順序に影響を及ぼすことができると、および/またはどのファイル範囲(file extents)を各コンテナ・ファイルから復元しようとしているのかについて予め通知を受けることができると、復元の実施形態の遂行(performance)を改善することができる。例えば、実施形態では、以下のコールバック関数の内1つ以上をファイル・リコンストラクターによって用いて、復元を改善することができる。
[0184] 「ContainersRestoreOrder」は、全てのデーター・チャンク・コンテナのファイル名称を含むアレイを入力として受け取る復元順序コールバックである。ファイル名称は、ファイル再現に必要とされるコンテナ(少なくともファイル再現に必要なデーター・チャンクを格納するコンテナ)のファイル名称である。このコールバック関数の出力は、同じコンテナ・ファイル名称のリストを含むが、このリストがソートされている(例えば、並び替え直されている)アレイである。
[0185] この復元順序コールバックを用いて、テープ・バックアップの場合、復元アプリケーションは、テープの順序に基づいて、バックアップ・テープおよびコンテナ・ファイルが格納されているテープ上のオフセットにしたがって、コンテナ・ファイル名称を並び替えることができる。このソート順序にしたがって復元プロセスを実行すると、テープ媒体の交換(例えば、ユーザーによる)およびテープ・シーク機能を削減する、または最小限に抑えることができる。テープ媒体の交換およびテープ・シークの回数を最小限に抑えることによって、テープ媒体の寿命が長くなり復元プロセスが高速化する。これらのコンテナ・ファイルを収容するテープが物理的にオフサイトに配置されており、そのテープをオフサイト現場から要求し輸送する必要がある場合、この能力は、データーの復元を完了するためにオフサイト現場から引き出す必要があるテープのリストを、復元アプリケーションが提供することを可能にする。この能力は、オフサイトからのテープ引き出しは何時間もまたは何日もかかる可能性があるのでデーター復元(data recovery)を著しく高速化することができ、媒体引き出しに伴うコストを削減することができる。
[0186] 例えば、復元アプリケーションは、最初に、コンテナ・ファイルがどのバックアップ・テープに配置されているかに基づいて、コンテナ・ファイルを分類し、各テープ内において、コンテナ・ファイルをテープ上のそれらの位置(開始オフセット)に基づいてソートすることができる。次いで、ファイル・リコンストラクターは、バックアップ・アプリケーションによって指定されたコンテナの順序に基づいてデーター・チャンクを復元することができる。バックアップ・アプリケーションは、ソートされたリストにある最初のデーター・チャンク・コンテナ・ファイルに格納されているデーター・チャンクに対してリード・コールバック関数をコールし、次に、ソートされたリストにある2番目のデーター・チャンク・コンテナに格納されているデーター・チャンクに対してリード・コールバックをコールすることができ、以下同様に続けることができる。
[0187] 復元を順序付けることから効果が得られないファイル・バックアップまたは他のバックアップ技法の場合、復元アプリケーションは、データー・チャンク・コンテナ・リストをソートすることを避け、コンテナの復元順序を任意のままにしておくことを選択してもよい。
[0188] 「ContainerRestorePlan」は、1つのデーター・チャンク・コンテナ・ファイル名称と、データー・チャンクのオフセットおよびサイズのアレイとを入力として受け取るコンテナ復元計画コールバックである。このアレイは、その名前が付けられたコンテナに格納されておりファイルの再現に必要とされる全てのデーター・チャンクを含む。
[0189] ファイル・リコンストラクターは、データー・チャンク・コンテナ毎に1回このコールバックをコールし、その後に、そのデーター・チャンク・コンテナに格納されているデーター・チャンクに対してリード・コールバックをコールする。ContainerRestorePlanコールバックは、復元アプリケーションによる使用のために、復元計画を作成する。復元アプリケーションは、このコールバックによって出力される復元計画を用いることができる。復元計画は、バックアップ媒体から読み出す必要があるデーター・チャンク・コンテナ・ファイルのファイル範囲を示す。復元アプリケーションは、バックアップ媒体からデーター・チャンクを読み出し、バッチ処理、キャッシュ処理、および先読みというような技法を利用するそれ自体の最適化のために、この復元計画を用いることができる。
[0190] このコールバックを処理することは任意である。復元アプリケーションがバックアップ媒体からの読み取りを最適化することができない場合またはその必要がない場合、復元アプリケーションはこの計画を無視し、最適化せずにリード・コールバックを処理することができる。
[0191] 「CreateChunksRestorePlan」は、構造のアレイを入力として受け取るデーター・チャンク復元計画コールバックである。このアレイにおける各構造は、ファイルを再現するために必要とされる1つのデーター・チャンクに対応する。各構造は、以下のメンバーを含むことができる。コンテナ・ファイル名称(どこにデーター・チャンクが格納されているかを示す)、コンテナ・ファイルにおけるチャンク・オフセット、およびチャンク・サイズ。このコールバックの出力は、同じ構造のアレイであるが、復元を実行すべき順序にソートされている。
[0192] データー・チャンク復元計画コールバックは、復元順序コールバックおよびコンテナ復元計画コールバックの代わりである。データー・チャンク復元計画コールバックは、少なくとも2つの目的を果たす。第1に、このコールバックは、復元アプリケーションに、どのデーター・チャンクを復元すべきかを示す。コールバックへの入力に基づいて、復元アプリケーションは、どのバックアップ媒体が各チャンクを有するか判断することができ、そして対応する媒体上のどこに各チャンクが配置されているか判断することができる。バックアップ媒体からデーターを読み出すための同じ最適化技法を用いることもできる。第2に、コールバックの出力に基づいて、復元アプリケーションは、どの順序でチャンクを復元するか、ファイル・リコンストラクターに命令することができる。
[0193] 例えば、テープ・バックアップの場合、特定のデーター・チャンク・コンテナ・ファイルが多数のテープ上に格納されている可能性がある。1つのファイルを再現するために、同じコンテナ・ファイル上に位置するが2つの異なるテープ上にバックアップされている2つのデーター・チャンクを必要とする場合もある。何故なら、コンテナ・ファイルがテープ間で分割されているからである。復元アプリケーションがチャンク・データーの粒度で復元順序を指令する機会を有する場合、復元アプリケーションはコンテナ・ファイルが多数のテープ間で分割されている場合であっても、データー・チャンクをテープ順に分類しソートすることができる。
[0194] ファイル・リコンストラクターは、ファイルの復元プロセス毎に1回データー・チャンク復元計画コールバックをコールすることができる。ファイル・リコンストラクターは、どのデーター・チャンクが必要とされるか、そしてデーター・チャンク・コンテナ・ファイルのどこにそのデーター・チャンクが位置するか分かった時点で、コールバックをコールするのでもよい。ファイル・リコンストラクターは、このコールバックの出力を用いて、データー・チャンク復元の順序を規定することができる。ファイル・リコンストラクターは、出力構造リストによって指令されるデーター・チャンクの順序に基づいて、リード・コールバック関数をコールすることができる。
[0195] データー・チャンク復元計画コールバックの処理は任意である。復元アプリケーションがバックアップ媒体からの読み取りを最適化し復元の順序を指令することができない場合、またはその必要がない場合、このコールバックを無視する、または実行しないことができる。次いで、ファイル・リコンストラクターは、先に説明したそれ自体のロジックを用いて、または何らかの任意の順序で、データー・チャンクを復元することができる。
III.計算デバイスの実施形態例
[0196] データー重複解除モジュール104、維持モジュール106、データー・ストリームAPI110、チャンク維持API112、データー・アクセスAPI114、チャンク・ストア・インターフェース116、データー・ストリーム・パーザー402、データー・チャンク記憶マネージャー404、メタデーター生成器406、ストリーム・マップ生成器408、リハイドレーション・モジュール702、データー・ストリーム・アセンブラー1102、生成チェッカー1106、データー・チャンク・リトリバー1108、データー・バックアップ・モジュール1302、最適化ファイル・バックアップ・モジュール1306、リハイドレーション・バックアップ・モジュール1308、項目レベル・バックアップ・モジュール1310、データー・チャンク識別子バックアップ・モジュール1312、発見法モジュール1314、データー復元モジュール2002、ファイル・リコンストラクター2004、復元アプリケーション2006、コールバック・モジュール2008、および識別子ソーター2302は、ハードウェア、ソフトウェア、ファームウェア、またはそのいずれの組み合わせでも実現することができる。例えば、 データー重複解除モジュール104、維持モジュール106、データー・ストリームAPI110、チャンク維持API112、データー・アクセスAPI114、チャンク・ストア・インターフェース116、データー・ストリーム・パーザー402、データー・チャンク記憶マネージャー404、メタデーター生成器406、ストリーム・マップ生成器408、リハイドレーション・モジュール702、データー・ストリーム・アセンブラー1102、生成チェッカー1106、データー・チャンク・リトリバー1108、データー・バックアップ・モジュール1302、最適化ファイル・バックアップ・モジュール1306、リハイドレーション・バックアップ・モジュール1308、項目レベル・バックアップ・モジュール1310、データー・チャンク識別子バックアップ・モジュール1312、発見法モジュール1314、データー復元モジュール2002、ファイル・リコンストラクター2004、復元アプリケーション2006、コールバック・モジュール2008、および/または識別子ソーター2302は、1つ以上のプロセッサーにおいて実行するように構成されたコンピューター・プログラムとして実現することができる。あるいは、 データー重複解除モジュール104、維持モジュール106、データー・ストリームAPI110、チャンク維持API112、データー・アクセスAPI114、チャンク・ストア・インターフェース116、データー・ストリーム・パーザー402、データー・チャンク記憶マネージャー404、メタデーター生成器406、ストリーム・マップ生成器408、リハイドレーション・モジュール702、データー・ストリーム・アセンブラー1102、生成チェッカー1106、データー・チャンク・リトリバー1108、データー・バックアップ・モジュール1302、最適化ファイル・バックアップ・モジュール1306、リハイドレーション・バックアップ・モジュール1308、項目レベル・バックアップ・モジュール1310、データー・チャンク識別子バックアップ・モジュール1312、発見法モジュール1314、データー復元モジュール2002、ファイル・リコンストラクター2004、復元アプリケーション2006、コールバック・モジュール2008、および/または識別子ソーター2302は、ハードウェア・ロジック/電気回路として実現することもできる。
[0197] 図25は、本発明の実施形態を実現することができるコンピューター2500の一実施態様例を示す。例えば、記憶システム102、および/またはそのいずれの部分も、コンピューター2500と同様であり、コンピューター2500の1つ以上の特徴および/または代わりの特徴を有する1つ以上のコンピューター・システムにおいて実現することができる。コンピューター2500は、従来のパーソナル・コンピューター、移動体コンピューター、またはワークステージョンの形態とした汎用計算デバイスとすることができ、例えば、コンピューター2500が特殊目的計算デバイスであってもよい。本明細書において提示するコンピューター2500の説明は、例示の目的に限って行われるのであり、限定することを意図するのではない。本発明の実施形態は、関連技術(1つまたは複数)の当業者には周知である、更に他のタイプのコンピューター・システムにおいても実現することができる。
[0198] 図25に示すように、コンピューター2500は、演算装置2502、システム・メモリー2504、およびシステム・メモリー2504から演算装置2502までを含む種々のシステム・コンポーネントを結合するバス2506を含む。バス2506は、メモリー・バスまたはメモリー・コントローラー、周辺バス、加速グラフィクス・ポート、および種々のバス・アーキテクチャーの内いずれかを用いるプロセッサー・バスまたはローカル・バスを含む、様々なタイプのバス構造の内いずれかの1つ以上を表す。システム・メモリー2504は、リード・オンリ・メモリー(ROM)2508およびランダム・アクセス・メモリー(RAM)2510を含む。基本入力/出力システム2512(BIOS)はROM2508に格納されている。
[0199] また、コンピューター2500は以下のドライブの内1つ以上も有する。ハード・ディスクから読み取るおよびハード・ディスクに書き込むためのハード・ディスク・ドライブ2514、リムーバブル磁気ディスク2518から読み取るまたはリムーバブル磁気ディスク2518に書き込むための磁気ディスク・ドライブ2516、ならびにCD ROM、DVD ROM、または他の光媒体のようなリムーバブル光ディスク2522から読み取るおよびリムーバブル光ディスク2522に書き込むための光ディスク・ドライブ2520。ハード・ディスク・ドライブ2514、磁気ディスク・ドライブ2516、および光ディスク・ドライブ2520は、それぞれ、ハード・ディスク・ドライブ・インターフェース2524、磁気ディスク・ドライブ・インターフェース2526、および光ドライブ・インターフェース2528によって、バス2506に接続されている。これらのドライブおよびこれらに付随するコンピューター読み取り可能媒体は、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、およびコンピューターのためのその他のデーターの不揮発性記憶を行う。ハード・ディスク、リムーバブル磁気ディスク、およびリムーバブル光ディスクについて説明したが、フラッシュ・メモリー・カード、ディジタル・ビデオ・ディスク、ランダム・アクセス・メモリー(RAM)、リード・オンリ・メモリー(ROM)等のような、他のタイプのコンピューター読み取り可能記憶媒体も、データーを格納するために用いることができる。
[0200] ハード・ディスク、磁気ディスク、光ディスク、ROM、またはRAM上には多数のプログラム・モジュールを格納することができる。これらのプログラムは、オペレーティング・システム2530、1つ以上のアプリケーション・プログラム2532、その他のプログラム・モジュール2534、およびプログラム・データー2536を含む。アプリケーション・プログラム2532またはプログラム・モジュール2534は、例えば、データー重複解除モジュール104、維持モジュール106、データー・ストリームAPI110、チャンク維持API112、データー・アクセスAPI114、チャンク・ストア・インターフェース116、データー・ストリーム・パーザー402、データー・チャンク記憶マネージャー404、メタデーター生成器406、ストリーム・マップ生成器408、リハイドレーション・モジュール702、データー・ストリーム・アセンブラー1102、生成チェッカー1106、データー・チャンク・リトリバー1108、データー・バックアップ・モジュール1302、最適化ファイル・バックアップ・モジュール1306、リハイドレーション・バックアップ・モジュール1308、項目レベル・バックアップ・モジュール1310、データー・チャンク識別子バックアップ・モジュール1312、発見法モジュール1314、データー復元モジュール2002、ファイル・リコンストラクター2004、復元アプリケーション2006、コールバック・モジュール2008、識別子ソーター2302、フローチャート500、フローチャート1000、フローチャート1200、フローチャート1400、フローチャート1500、フローチャート1600、フローチャート1700、フローチャート1800、フローチャート1900、フローチャート2200、フローチャート2400(フローチャート500、1000、1200、1400、1500、1600、1700、1800、1900、2200、および2400のいずれのステップも含む)、および/または本明細書において説明した更に他の実施形態を実現するためのコンピューター・プログラム・ロジックを含むことができる。
[0201] ユーザーは、キーボード2538およびポインティング・デバイス2540のような入力デバイスを通じて、コマンドおよび情報をコンピューター2500に入力することができる。他の入力デバイス(図示せず)には、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星ディッシュ、スキャナー等が含まれる。これらおよびその他の入力デバイスは、多くの場合、バス2506に結合されているシリアル・ポート・インターフェース2542を介して演算装置2502に接続されているが、パラレル・ポート、ゲーム・ポート、またはユニバーサル・シリアル・バス(USB)のような他のインターフェースによって接続してもよい。
[0202] ディスプレイ・デバイス2544も、ビデオ・アダプター2546のような、インターフェースを介してバス2506に接続されている。モニターに加えて、コンピューター2500は、スピーカーおよびプリンターのような、他の周辺出力デバイス(図示せず)も含むことができる。
[0203] コンピューター2500は、アダプターまたはネットワーク・インターフェース2550、モデム2552、あるいはネットワークを通じて通信を確立するその他の手段を介してネットワーク2548(例えば、インターネット)に接続されている。モデム2552は、内蔵型でも外付け型でもよいが、シリアル・ポート・インターフェース2542を介してバス2506に接続されている。
[0204] 本明細書において用いる場合、「コンピューター・プログラム媒体」、「コンピューター読み取り可能媒体」、および「コンピューター読み取り可能記憶媒体」という用語は、一般に、ハード・ディスク・ドライブ2514に付随するハード・ディスク、リムーバブル磁気ディスク2518、リムーバブル光ディスク2522、更には、フラッシュ・メモリー・カード、ディジタル・ビデオ・ディスク、ランダム・アクセス・メモリー(RAM)、リード・オンリ・メモリー(ROM)等のような媒体を指す。このようなコンピューター読み取り可能記憶媒体は、通信媒体と区別され、通信媒体とは重複しない。通信媒体は、通例、搬送波のような変調データー信号内に、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、またはその他のデーターを具体化する。「変調データー信号」という用語は、信号内に情報をエンコードするように、その特性の1つ以上が設定または変更された信号を意味する。一例として、そして限定ではなく、通信媒体は、音響、RF、赤外線、およびその他のワイヤレス媒体というような、ワイヤレス媒体を含む。また、実施形態はこのような通信媒体も対象とする。
[0205] 先に注記したように、コンピューター・プログラムおよびモジュール(アプリケーション・プログラム2532および他のプログラム・モジュール2534を含む)は、ハード・ディスク、磁気ディスク、光ディスク、ROM、またはRAMに格納することができる。このようなコンピューター・プログラムは、ネットワーク・インターフェース2550またはシリアル・ポート・インターフェース2542を介して受信することもできる。このようなコンピューター・プログラムは、アプリケーションによって実行またはロードされると、コンピューター2500が、本明細書において論じた本発明の実施形態の特徴を実現することを可能にする。したがって、このようなコンピューター・プログラムは、コンピューター2500のコントローラーを表す。
[0206] また、本発明は、いずれかのコンピューター使用可能媒体上に格納されているソフトウェアを備えているコンピューター・プログラム生産物も対象とする。このようなソフトウェアは、1つ以上のデーター処理デバイスにおいて実行すると、データー処理デバイス(1つまたは複数)に、本明細書で記載したように動作させる。本発明の実施形態は、現在知られているまたは今後知られることになる、いずれのコンピューター使用可能媒体またはコンピューター読み取り可能記憶でも採用する。コンピューター読み取り可能媒体の例には、RAM、フラッシュ・ストレージ(例えば、フラッシュ・メモリー)、ソリッド・ステート・ドライブ(SSD)、ハード・ドライブ、フロッピ・ディスク、CD ROM、DVD ROM、ジップ・ディスク、テープ、磁気記憶デバイス、光記憶デバイス、MEM、ナノテクノロジーに基づく記憶デバイス等のような記憶デバイスを含むが、これらに限定されるのではない。
VI.結論
[0207] 以上、本発明の種々の実施形態について説明したが、これらは一例として紹介したに過ぎず、限定ではないことは言うまでもない。関連技術(1つまたは複数)の当業者には、添付する特許請求の範囲に定められる本発明の主旨および範囲から逸脱することなく、形態および詳細において種々の変更も可能であることは理解されよう。したがって、本発明の広さ(breadth)および範囲は、以上で説明した実施形態例のいずれによっても限定されはせず、以下の特許請求の範囲およびその均等物のみにしたがって定義されることとする。

Claims (14)

  1. データー・ストリーム・バックアップ方法であって、
    チャンク・ストアに格納されている複数の最適化データー・ストリームをバックアップのために特定するステップであって、前記チャンク・ストアが、各最適化データー・ストリームを、複数のチャンクおよび対応する最適化ストリーム・メタデーターとして含み、前記複数のチャンクが少なくとも1つのデーター・チャンクを含み、前記対応する最適化ストリーム・メタデーターが前記少なくとも1つのデーター・チャンクを参照し、前記チャンク・ストアが、含まれるデーター・チャンクの全てを、重複解除した様式で含む、ステップと、
    前記複数の最適化データー・ストリームをバックアップするために、前記チャンク・ストアの少なくとも一部をバックアップ・ストレージに格納するステップと、
    を備えている、方法において、
    前記格納するステップが、
    バックアップの対象として特定された複数の最適化データー・ストリームの最適化サイズと論理サイズとの間の差に基づいてバックアップ技法におけるトレードオフを求め、前記バックアップ技法におけるトレードオフに基づいてバックアップ技法を選択するステップと、
    前記複数の最適化データー・ストリームを前記バックアップ・ストレージにバックアップするために、前記バックアップ技法を実行するステップと、
    を含む、方法。
  2. 請求項1に記載の方法において、前記格納するステップが、
    前記チャンク・ストアの全体を前記バックアップ・ストレージに格納するステップと、
    前記複数の最適化データー・ストリームに対して、複数のストリーム・メタデーター・スタブを前記バックアップ・ストレージに格納するステップであって、各ストリーム・メタデーター・スタブが、データー・ストリームを前記チャンク・ストアにおける対応するデーターにリンクする、ステップと、
    を含む、方法。
  3. 請求項1又は2に記載の方法において、前記格納するステップが、
    各最適化データー・ストリームをリハイドレートし、前記対応する最適化ストリーム・メタデーターによって参照されているいずれかのチャンクを含む、対応する無最適化データー・ストリームにするステップと、
    各無最適化データー・ストリームを前記バックアップ・ストレージに格納するステップであって、前記チャンク・ストアを、前記バックアップ・ストレージに格納することから除外する、ステップと、
    を含む、方法。
  4. 請求項1〜3のいずれか一項に記載の方法において、前記格納するステップが、
    バックアップのために特定された第1最適化データー・ストリームを受け取るステップと、
    前記第1最適化データー・ストリームの最適化ストリーム・メタデーターによって参照されているデーター・チャンクの内、前記バックアップ・ストレージに未だ格納されていない1つ以上を判定するステップと、
    前記第1最適化データー・ストリームの最適化ストリーム・メタデーターを前記バックアップ・ストレージに格納するステップと、
    前記判定された1つ以上のデーター・チャンクを前記バックアップ・ストレージに格納するステップと、
    を含む、方法。
  5. 請求項1〜4のいずれか一項に記載の方法において、前記格納するステップが、
    各最適化データー・ストリームに対応する前記最適化ストリーム・メタデーターを分析して、前記最適化ストリーム・メタデーターによって参照されている少なくとも1つのデーター・チャンクに対して、対応する少なくとも1つのデーター・チャンク識別子を決定するステップと、
    最適化データー・ストリーム毎の最適化ストリーム構造を、前記バックアップ・ストレージに、前記対応する少なくとも1つのデーター・チャンク識別子と共に格納するステップと、
    前記最適化データー・ストリームのデーター・チャンクを格納する前記チャンク・ストアの1つ以上のチャンク・コンテナを前記バックアップ・ストレージに格納するステップと、
    を含む、方法。
  6. 請求項1〜5のいずれか一項に記載の方法において、前記バックアップ技法におけるトレードオフに基づいてバックアップ技法を選択するステップが、
    除外モードまたは包含モードにしたがって、前記複数の最適化データー・ストリームがバックアップのために選択されたか否か判断するステップであって、前記除外モードが、少なくとも1つのボリュームを特定してバックアップのために選択し、1つ以上のデーター・ストリームを特定してバックアップから除外するように選択する第1バックアップ・モードであり、前記包含モードが、少なくとも1つのデーター・ストリームを特定してバックアップのために選択する第2バックアップ・モードである、ステップと、
    前記除外モードが選択されたと判断した場合、前記バックアップ技法が最適化データー・ストリーム・バックアップ技法となるように選択するステップと、
    前記包含モードが選択されたと判断した場合、前記バックアップ技法が無最適化データー・ストリーム・バックアップ技法となるように選択するステップと、
    を含む、方法。
  7. 請求項1〜6のいずれか一項に記載の方法において、前記バックアップ技法におけるトレードオフに基づいてバックアップ技法を選択するステップが、
    前記チャンク・ストアにおいて、バックアップのために特定された前記複数の最適化データー・ストリームによって参照されていない前記データー・チャンクによって消費される第1空間量を判定するステップと、
    前記複数の最適化データー・ストリームの全てを無最適形式で格納するための空間量から、前記複数の最適化データー・ストリームの全てを最適化形式で格納するための空間量を差し引いた値として、第2空間量を判定するステップと、
    前記判定した第1空間量が、前記判定した第2空間量よりも小さい場合、前記バックアップ技法が最適化データー・ストリーム・バックアップ技法となるように選択するステップと、
    前記判定した第1空間量が、前記判定した第2空間量よりも大きい場合、前記バックアップ技法が無最適化データー・ストリーム・バックアップ技法となるように選択するステップと、
    を含む、方法。
  8. 請求項1〜7のいずれか一項に記載の方法において、前記バックアップ技法におけるトレードオフに基づいてバックアップ技法を選択するステップが、
    バックアップのために特定された前記複数のデーター・ストリームの全てを無最適化形式で格納するための空間量として、第1空間量を判定するステップと、
    バックアップのために特定された前記複数のデーター・ストリームの全てを最適化形式で格納するための空間量として、第2空間量を判定するステップと、
    前記判定した第1空間量が、前記判定した第2空間量よりも大きい場合、前記バックアップ技法が最適化データー・ストリーム・バックアップ技法となるように選択するステップと、
    前記判定した第1空間量が、前記判定した第2空間量よりも小さい場合、前記バックアップ技法が無最適化データー・ストリーム・バックアップ技法となるように選択するステップと、
    を含む、方法。
  9. 請求項1〜8のいずれか一項に記載の方法を実行するためのプログラム。
  10. 請求項1〜8のいずれか一項に記載の方法を実行するためのプログラムを記録した記録媒体。
  11. システムであって、
    チャンク・ストアに格納されている複数の最適化データー・ストリームの識別を、バックアップのために受け取るデーター・バックアップ・モジュールであって、前記チャンク・ストアが、各最適化データー・ストリームを、複数のチャンクおよび対応する最適化ストリーム・メタデーターとして含み、前記複数のチャンクが少なくとも1つのデーター・チャンクを含み、前記対応する最適化ストリーム・メタデーターが前記少なくとも1つのデーター・チャンクを参照し、前記チャンク・ストアが、含まれるデーター・チャンクの全てを重複解除した様式で含む、データー・バックアップ・モジュールを備えており、
    前記データー・バックアップ・モジュールが、前記複数の最適化データー・ストリームをバックアップするために、前記チャンク・ストアの少なくとも一部をバックアップ・ストレージに格納するように構成されている、
    システムにおいて、
    前記データー・バックアップ・モジュールが、バックアップの対象として特定された複数の最適化データー・ストリームの最適化サイズと論理サイズとの間の差に基づいてバックアップ技法におけるトレードオフを求め、前記バックアップ技法におけるトレードオフに基づいてバックアップ技法を選択し、前記複数の最適化データー・ストリームを前記バックアップ・ストレージにバックアップするために、前記バックアップ技法を実行することを可能にするように構成されているモジュールを含む、システム。
  12. 請求項11に記載のシステムにおいて、前記データー・バックアップ・モジュールが、
    前記チャンク・ストア全体を前記バックアップ・ストレージに格納するように構成されている最適化ファイル・バックアップ・モジュール、
    各最適化データー・ストリームをリハイドレートして、前記対応する最適化ストリーム・メタデーターによって参照されているいずれのデーター・チャンクをも含む、対応する無最適化データー・ストリームにし、各無最適化データー・ストリームを前記バックアップ・ストレージに格納するように構成されているリハイドレーション・バックアップ・モジュール、
    最適化データー・ストリーム毎に、前記最適化データー・ストリームの最適化ストリーム・メタデーターによって参照され未だ前記バックアップ・ストレージに格納されていない1つ以上のデーター・チャンクを判定し、前記最適化データー・ストリームの最適化ストリーム・メタデーターを前記バックアップ・ストレージに格納し、前記判定した1つ以上のデーター・チャンクを前記バックアップ・ストレージに格納するように構成されている項目レベル・バックアップ・モジュール、または、
    各最適化データー・ストリームに対応する前記最適化ストリーム・メタデーターを分析して、前記最適化ストリーム・メタデーターによって参照されている少なくとも1つのデーター・チャンクに対して、対応する少なくとも1つのデーター・チャンク識別子を決定し、各最適データー・ストリームを前記バックアップ・ストレージに、前記対応する少なくとも1つのデーター・チャンク識別子と共に格納し、前記最適化データー・ストリームのデーター・チャンクを格納する前記チャンク・ストアの1つ以上のチャンク・コンテナを前記バックアップ・ストレージに格納するように構成されているデーター・チャンク識別子バックアップ・モジュール、
    の内少なくとも1つを備えている、システム。
  13. 請求項11又は12に記載のシステムであって、更に、
    前記バックアップ・ストレージにおけるチャンク・ストアからデーター・ストリームを引き出す要求を受けるファイル・リコンストラクターであって、前記要求が、前記データー・ストリームに対応する最適化ストリーム・メタデーターの識別子を含む、ファイル・リコンストラクターを備えており、
    前記ファイル・リコンストラクターが、前記最適化ストリーム・メタデーター識別子に基づいて復元アプリケーションに第1コールを生成するコールバック・モジュールを含み、前記第1コールが、前記最適化ストリーム・メタデーター識別子によって特定される最適化ストリーム・メタデーターを格納するバックアップ・ストレージにおける第1チャンク・コンテナにファイル名称を指定し、前記第1チャンク・コンテナにおける前記最適化ストリーム・メタデーターにオフセットを指定し、
    前記ファイル・リコンストラクターが、前記第1コールに応答して、前記最適化ストリーム・メタデーターを受け取り、前記最適化ストリーム・メタデーターにおいて参照されている少なくとも1つのデーター・チャンク識別子を判定し、
    前記コールバック・モジュールが、前記バックアップ・ストレージにおける少なくとも1つのチャンク・コンテナから少なくとも1つのデーター・チャンクを得るために、前記少なくとも1つのデーター・チャンク識別子に対応して、前記復元アプリケーションに少なくとも1つの追加のコールを生成し、
    前記ファイル・リコンストラクターが、前記少なくとも1つの追加のコールに応答して、前記少なくとも1つのデーター・チャンクを受け取り、前記データー・ストリームを復元するために前記少なくとも1つのデーター・チャンクを組み合わせる、システム。
  14. 請求項13に記載のシステムにおいて、前記コールバック・モジュールが、チャンク・コンテナをソートしたリストを生成するために、追加のコールを前記復元アプリケーションに対して生成し、
    前記コールバック・モジュールが、前記ソートしたリストによって定められた順序で前記複数のデーター・チャンクに対応する複数の追加のコールを前記復元アプリケーションに対して生成する、システム。
JP2013558039A 2011-03-11 2012-03-03 データー重複排除のためのバックアップおよび復元方策 Active JP6033241B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/045,692 US9823981B2 (en) 2011-03-11 2011-03-11 Backup and restore strategies for data deduplication
US13/045,692 2011-03-11
PCT/US2012/027636 WO2012125314A2 (en) 2011-03-11 2012-03-03 Backup and restore strategies for data deduplication

Publications (2)

Publication Number Publication Date
JP2014508362A JP2014508362A (ja) 2014-04-03
JP6033241B2 true JP6033241B2 (ja) 2016-11-30

Family

ID=46797132

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013558039A Active JP6033241B2 (ja) 2011-03-11 2012-03-03 データー重複排除のためのバックアップおよび復元方策

Country Status (7)

Country Link
US (1) US9823981B2 (ja)
EP (1) EP2684137B1 (ja)
JP (1) JP6033241B2 (ja)
KR (1) KR101994491B1 (ja)
CN (1) CN102736961B (ja)
ES (1) ES2578186T3 (ja)
WO (1) WO2012125314A2 (ja)

Families Citing this family (161)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7343459B2 (en) 2004-04-30 2008-03-11 Commvault Systems, Inc. Systems and methods for detecting & mitigating storage risks
US20110010518A1 (en) 2005-12-19 2011-01-13 Srinivas Kavuri Systems and Methods for Migrating Components in a Hierarchical Storage Network
US7840537B2 (en) 2006-12-22 2010-11-23 Commvault Systems, Inc. System and method for storing redundant information
US8099401B1 (en) * 2007-07-18 2012-01-17 Emc Corporation Efficiently indexing and searching similar data
US8484162B2 (en) 2008-06-24 2013-07-09 Commvault Systems, Inc. De-duplication systems and methods for application-specific data
US8315983B1 (en) * 2008-11-24 2012-11-20 Symantec Corporation Method and apparatus for performing granular restoration of data objects from machine images stored on sequential backup media
US8401996B2 (en) 2009-03-30 2013-03-19 Commvault Systems, Inc. Storing a variable number of instances of data objects
US8578120B2 (en) 2009-05-22 2013-11-05 Commvault Systems, Inc. Block-level single instancing
US8930306B1 (en) 2009-07-08 2015-01-06 Commvault Systems, Inc. Synchronized data deduplication
US8572340B2 (en) 2010-09-30 2013-10-29 Commvault Systems, Inc. Systems and methods for retaining and using data block signatures in data protection operations
US8364652B2 (en) 2010-09-30 2013-01-29 Commvault Systems, Inc. Content aligned block-based deduplication
US8935492B2 (en) 2010-09-30 2015-01-13 Commvault Systems, Inc. Archiving data objects using secondary copies
US10394757B2 (en) 2010-11-18 2019-08-27 Microsoft Technology Licensing, Llc Scalable chunk store for data deduplication
US9020900B2 (en) 2010-12-14 2015-04-28 Commvault Systems, Inc. Distributed deduplicated storage system
US8954446B2 (en) 2010-12-14 2015-02-10 Comm Vault Systems, Inc. Client-side repository in a networked deduplicated storage system
US8874520B2 (en) 2011-02-11 2014-10-28 Symantec Corporation Processes and methods for client-side fingerprint caching to improve deduplication system backup performance
US9317377B1 (en) * 2011-03-23 2016-04-19 Riverbed Technology, Inc. Single-ended deduplication using cloud storage protocol
CN102799598A (zh) * 2011-05-25 2012-11-28 英业达股份有限公司 重复数据删除的数据复原方法
US8825985B2 (en) * 2011-07-14 2014-09-02 Dell Products L.P. Data transfer reduction in scale out architectures
US8990171B2 (en) 2011-09-01 2015-03-24 Microsoft Corporation Optimization of a partially deduplicated file
CN103797470B (zh) * 2011-09-16 2017-02-15 日本电气株式会社 存储系统
US8620886B1 (en) * 2011-09-20 2013-12-31 Netapp Inc. Host side deduplication
EP2782062A4 (en) * 2011-11-16 2015-04-08 Fujitsu Ltd INFORMATION PROVIDING DEVICE, INFORMATION PROVIDING METHOD, AND INFORMATION PROVIDING PROGRAM
JP5873187B2 (ja) * 2012-02-13 2016-03-01 株式会社日立製作所 階層化ストレージシステムの管理装置及び管理方法
US9020890B2 (en) 2012-03-30 2015-04-28 Commvault Systems, Inc. Smart archiving and data previewing for mobile devices
JP5964950B2 (ja) * 2012-04-12 2016-08-03 株式会社日立製作所 計算機システム、データ配置管理方法及びプログラム
WO2013153584A1 (en) 2012-04-13 2013-10-17 Hitachi, Ltd. Storage device
US10135462B1 (en) 2012-06-13 2018-11-20 EMC IP Holding Company LLC Deduplication using sub-chunk fingerprints
US9026740B1 (en) 2012-06-13 2015-05-05 Emc Corporation Prefetch data needed in the near future for delta compression
US9141301B1 (en) * 2012-06-13 2015-09-22 Emc Corporation Method for cleaning a delta storage system
US8918390B1 (en) 2012-06-13 2014-12-23 Emc Corporation Preferential selection of candidates for delta compression
US8972672B1 (en) 2012-06-13 2015-03-03 Emc Corporation Method for cleaning a delta storage system
US8712978B1 (en) 2012-06-13 2014-04-29 Emc Corporation Preferential selection of candidates for delta compression
US9218374B2 (en) * 2012-06-13 2015-12-22 Commvault Systems, Inc. Collaborative restore in a networked storage system
US9116902B1 (en) 2012-06-13 2015-08-25 Emc Corporation Preferential selection of candidates for delta compression
US9400610B1 (en) 2012-06-13 2016-07-26 Emc Corporation Method for cleaning a delta storage system
US9880771B2 (en) 2012-06-19 2018-01-30 International Business Machines Corporation Packing deduplicated data into finite-sized containers
US9208820B2 (en) * 2012-06-29 2015-12-08 International Business Machines Corporation Optimized data placement for individual file accesses on deduplication-enabled sequential storage systems
CN103577278B (zh) * 2012-07-30 2016-12-21 国际商业机器公司 用于数据备份的方法和系统
US9817834B1 (en) * 2012-10-01 2017-11-14 Veritas Technologies Llc Techniques for performing an incremental backup
US9495379B2 (en) * 2012-10-08 2016-11-15 Veritas Technologies Llc Locality aware, two-level fingerprint caching
JP5965541B2 (ja) * 2012-10-31 2016-08-10 株式会社日立製作所 ストレージ装置及びストレージ装置の制御方法
CN103873503A (zh) * 2012-12-12 2014-06-18 鸿富锦精密工业(深圳)有限公司 数据块备份系统及方法
US10379988B2 (en) * 2012-12-21 2019-08-13 Commvault Systems, Inc. Systems and methods for performance monitoring
US9633022B2 (en) * 2012-12-28 2017-04-25 Commvault Systems, Inc. Backup and restoration for a deduplicated file system
US9633033B2 (en) 2013-01-11 2017-04-25 Commvault Systems, Inc. High availability distributed deduplicated storage system
US9760444B2 (en) 2013-01-11 2017-09-12 Commvault Systems, Inc. Sharing of secondary storage data
JP6201340B2 (ja) * 2013-02-27 2017-09-27 日本電気株式会社 レプリケーションシステム
US10180943B2 (en) 2013-02-28 2019-01-15 Microsoft Technology Licensing, Llc Granular partial recall of deduplicated files
KR101505263B1 (ko) 2013-03-07 2015-03-24 포항공과대학교 산학협력단 데이터 중복 제거 방법 및 장치
US9542397B1 (en) 2013-03-14 2017-01-10 EMC IP Holding Company LLC File block addressing for backups
KR102094334B1 (ko) * 2013-03-15 2020-03-27 삼성전자주식회사 비휘발성 멀티-레벨 셀 메모리 시스템 및 상기 시스템에서의 적응적 데이터 백업 방법
US10565208B2 (en) * 2013-03-26 2020-02-18 Microsoft Technology Licensing, Llc Analyzing multiple data streams as a single data object
CN103227818A (zh) * 2013-03-27 2013-07-31 福建伊时代信息科技股份有限公司 终端、服务器、文件传输方法、文件存储管理系统和方法
US10339112B1 (en) * 2013-04-25 2019-07-02 Veritas Technologies Llc Restoring data in deduplicated storage
US10013476B2 (en) 2014-04-28 2018-07-03 Moogsoft, Inc. System for decomposing clustering events from managed infrastructures
US10146851B2 (en) 2013-04-29 2018-12-04 Moogsoft, Inc. Decomposing events from managed infrastructures using graph entropy
US10379932B2 (en) 2013-04-29 2019-08-13 Moogsoft, Inc. System for decomposing events from managed infrastructures
US10700920B2 (en) 2013-04-29 2020-06-30 Moogsoft, Inc. System and methods for decomposing events from managed infrastructures that includes a floating point unit
US10574551B2 (en) 2013-04-29 2020-02-25 Moogsoft, Inc. System for decomposing events from managed infrastructures
US9535973B2 (en) 2013-04-29 2017-01-03 Moogsoft, Inc. Methods for decomposing events from managed infrastructures
US11080116B2 (en) 2013-04-29 2021-08-03 Moogsoft Inc. Methods for decomposing events from managed infrastructures
US11010220B2 (en) 2013-04-29 2021-05-18 Moogsoft, Inc. System and methods for decomposing events from managed infrastructures that includes a feedback signalizer functor
US10243779B2 (en) 2013-04-29 2019-03-26 Moogsoft, Inc. System for decomposing events from managed infrastructures with situation room
US10007716B2 (en) 2014-04-28 2018-06-26 Moogsoft, Inc. System for decomposing clustering events from managed infrastructures coupled to a data extraction device
US10803133B2 (en) 2013-04-29 2020-10-13 Moogsoft Inc. System for decomposing events from managed infrastructures that includes a reference tool signalizer
US9361028B2 (en) * 2013-05-07 2016-06-07 Veritas Technologies, LLC Systems and methods for increasing restore speeds of backups stored in deduplicated storage systems
US10296490B2 (en) 2013-05-16 2019-05-21 Hewlett-Packard Development Company, L.P. Reporting degraded state of data retrieved for distributed object
US10592347B2 (en) 2013-05-16 2020-03-17 Hewlett Packard Enterprise Development Lp Selecting a store for deduplicated data
WO2014185914A1 (en) * 2013-05-16 2014-11-20 Hewlett-Packard Development Company, L.P. Deduplicated data storage system having distributed manifest
US10496490B2 (en) 2013-05-16 2019-12-03 Hewlett Packard Enterprise Development Lp Selecting a store for deduplicated data
US9904606B1 (en) 2013-06-26 2018-02-27 EMC IP Holding Company LLC Scheduled recovery in a data protection system
US10353783B1 (en) 2013-06-26 2019-07-16 EMC IP Holding Company LLC Pluggable recovery in a data protection system
US10235392B1 (en) 2013-06-26 2019-03-19 EMC IP Holding Company LLC User selectable data source for data recovery
US9703618B1 (en) 2013-06-28 2017-07-11 EMC IP Holding Company LLC Communication between a software program that uses RPC with another software program using a different communications protocol enabled via proxy
US9641486B1 (en) 2013-06-28 2017-05-02 EMC IP Holding Company LLC Data transfer in a data protection system
CN103414759B (zh) * 2013-07-22 2016-12-28 华为技术有限公司 网盘文件传输方法和装置
US10452306B1 (en) * 2013-12-31 2019-10-22 EMC IP Holding Company LLC Method and apparatus for asymmetric raid
US10324897B2 (en) 2014-01-27 2019-06-18 Commvault Systems, Inc. Techniques for serving archived electronic mail
WO2015116098A1 (en) * 2014-01-30 2015-08-06 Hewlett-Packard Development Company, L.P. Selecting a backup process for a file system
US9514000B2 (en) * 2014-01-31 2016-12-06 Western Digital Technologies, Inc. Backup of baseline installation
US9886457B2 (en) * 2014-03-10 2018-02-06 International Business Machines Corporation Deduplicated data processing hierarchical rate control in a data deduplication system
US10380072B2 (en) 2014-03-17 2019-08-13 Commvault Systems, Inc. Managing deletions from a deduplication database
US9633056B2 (en) 2014-03-17 2017-04-25 Commvault Systems, Inc. Maintaining a deduplication database
US20150269032A1 (en) * 2014-03-18 2015-09-24 Netapp, Inc. Backing up data to cloud data storage while maintaining storage efficiency
US9501369B1 (en) * 2014-03-31 2016-11-22 Emc Corporation Partial restore from tape backup
JP5990215B2 (ja) * 2014-04-15 2016-09-07 日本電信電話株式会社 復元方法、情報処理装置および復元プログラム
CN106133717B (zh) * 2014-06-25 2018-06-01 深圳市大疆创新科技有限公司 管理多媒体信息的方法、设备、系统及相关可读存储介质
US11249858B2 (en) 2014-08-06 2022-02-15 Commvault Systems, Inc. Point-in-time backups of a production application made accessible over fibre channel and/or ISCSI as data sources to a remote application by representing the backups as pseudo-disks operating apart from the production application and its host
US9852026B2 (en) 2014-08-06 2017-12-26 Commvault Systems, Inc. Efficient application recovery in an information management system based on a pseudo-storage-device driver
WO2016032486A1 (en) * 2014-08-28 2016-03-03 Hewlett-Packard Development Company, L.P. Moving data chunks
US9753955B2 (en) 2014-09-16 2017-09-05 Commvault Systems, Inc. Fast deduplication data verification
WO2016048263A1 (en) 2014-09-22 2016-03-31 Hewlett Packard Enterprise Development Lp Identification of content-defined chunk boundaries
US9588977B1 (en) * 2014-09-30 2017-03-07 EMC IP Holding Company LLC Data and metadata structures for use in tiering data to cloud storage
CN104270454A (zh) * 2014-10-14 2015-01-07 无锡云捷科技有限公司 一种基于数据传输优化系统的cdn动态应用加速方法
US9575673B2 (en) 2014-10-29 2017-02-21 Commvault Systems, Inc. Accessing a file system using tiered deduplication
WO2016069030A1 (en) * 2014-10-29 2016-05-06 Hewlett Packard Enterprise Development Lp Data restoration using allocation maps
US10873508B2 (en) 2015-01-27 2020-12-22 Moogsoft Inc. Modularity and similarity graphics system with monitoring policy
US10425291B2 (en) 2015-01-27 2019-09-24 Moogsoft Inc. System for decomposing events from managed infrastructures with prediction of a networks topology
US11817993B2 (en) 2015-01-27 2023-11-14 Dell Products L.P. System for decomposing events and unstructured data
US10979304B2 (en) 2015-01-27 2021-04-13 Moogsoft Inc. Agent technology system with monitoring policy
US11924018B2 (en) 2015-01-27 2024-03-05 Dell Products L.P. System for decomposing events and unstructured data
US10956299B2 (en) 2015-02-27 2021-03-23 Commvault Systems, Inc. Diagnosing errors in data storage and archiving in a cloud or networking environment
US10339106B2 (en) 2015-04-09 2019-07-02 Commvault Systems, Inc. Highly reusable deduplication database after disaster recovery
US9639274B2 (en) 2015-04-14 2017-05-02 Commvault Systems, Inc. Efficient deduplication database validation
US10324914B2 (en) 2015-05-20 2019-06-18 Commvalut Systems, Inc. Handling user queries against production and archive storage systems, such as for enterprise customers having large and/or numerous files
US20160350391A1 (en) 2015-05-26 2016-12-01 Commvault Systems, Inc. Replication using deduplicated secondary copy data
US10275320B2 (en) 2015-06-26 2019-04-30 Commvault Systems, Inc. Incrementally accumulating in-process performance data and hierarchical reporting thereof for a data stream in a secondary copy operation
US9766825B2 (en) 2015-07-22 2017-09-19 Commvault Systems, Inc. Browse and restore for block-level backups
US10176036B2 (en) 2015-10-29 2019-01-08 Commvault Systems, Inc. Monitoring, diagnosing, and repairing a management database in a data storage management system
KR102082765B1 (ko) * 2015-12-29 2020-02-28 후아웨이 테크놀러지 컴퍼니 리미티드 중복 제거 방법 및 저장 장치
US20170192868A1 (en) 2015-12-30 2017-07-06 Commvault Systems, Inc. User interface for identifying a location of a failed secondary storage device
KR102033401B1 (ko) 2016-01-05 2019-11-08 한국전자통신연구원 효율적으로 파일을 생성하기 위한 분산 파일 시스템 및 방법
US9990146B2 (en) * 2016-02-03 2018-06-05 Sandisk Technologies Llc Apparatus and method of data sequencing
US10545682B1 (en) * 2016-02-26 2020-01-28 Veritas Technologies Llc System and method having accelerated data recovery
US10296368B2 (en) 2016-03-09 2019-05-21 Commvault Systems, Inc. Hypervisor-independent block-level live browse for access to backed up virtual machine (VM) data and hypervisor-free file-level recovery (block-level pseudo-mount)
US9501364B1 (en) 2016-03-18 2016-11-22 Storagecraft Technology Corporation Hybrid image backup of a source storage
US10013201B2 (en) 2016-03-29 2018-07-03 International Business Machines Corporation Region-integrated data deduplication
US10846024B2 (en) 2016-05-16 2020-11-24 Commvault Systems, Inc. Global de-duplication of virtual disks in a storage platform
US10795577B2 (en) 2016-05-16 2020-10-06 Commvault Systems, Inc. De-duplication of client-side data cache for virtual disks
US10387425B1 (en) * 2016-06-30 2019-08-20 EMC IP Holding Company LLC Preserving temporal locality while multiplexing streams in a stream-informed segment layout (SISL) system
CN106503051B (zh) * 2016-09-23 2019-05-14 暨南大学 一种基于元数据分类的贪婪预取型数据恢复系统及恢复方法
US10740193B2 (en) 2017-02-27 2020-08-11 Commvault Systems, Inc. Hypervisor-independent reference copies of virtual machine payload data based on block-level pseudo-mount
US11032350B2 (en) 2017-03-15 2021-06-08 Commvault Systems, Inc. Remote commands framework to control clients
WO2018165958A1 (en) * 2017-03-16 2018-09-20 Microsoft Technology Licensing, Llc. Storage system control
US10621144B2 (en) 2017-03-23 2020-04-14 International Business Machines Corporation Parallel deduplication using automatic chunk sizing
US10664352B2 (en) 2017-06-14 2020-05-26 Commvault Systems, Inc. Live browsing of backed up data residing on cloned disks
US10579613B2 (en) 2017-08-08 2020-03-03 International Business Machines Corporation Database recovery using persistent address spaces
EP3671402B1 (en) * 2017-09-14 2022-05-04 Huawei Technologies Co., Ltd. Data recovery method and apparatus
CN109508254B (zh) 2017-09-14 2020-09-08 华为技术有限公司 一种数据恢复方法及装置
US10282129B1 (en) 2017-10-24 2019-05-07 Bottomline Technologies (De), Inc. Tenant aware, variable length, deduplication of stored data
CN107766179A (zh) * 2017-11-06 2018-03-06 郑州云海信息技术有限公司 一种基于源数据重删的备份方法、装置、及存储介质
CN110020359B (zh) * 2017-11-08 2024-04-05 亿阳信通股份有限公司 应用在网页前端的数据处理方法、装置及存储介质
US11204842B2 (en) * 2017-11-22 2021-12-21 Acronis International Gmbh System and method for automating formation and execution of a backup strategy using machine learning
US10831591B2 (en) 2018-01-11 2020-11-10 Commvault Systems, Inc. Remedial action based on maintaining process awareness in data storage management
KR102098240B1 (ko) * 2018-05-16 2020-04-08 주식회사 디에이아이오 비휘발성 메모리 시스템
US11210312B2 (en) * 2018-06-08 2021-12-28 Microsoft Technology Licensing, Llc Storing data items and identifying stored data items
US20200034244A1 (en) * 2018-07-26 2020-01-30 EMC IP Holding Company LLC Detecting server pages within backups
US10908831B2 (en) * 2018-10-25 2021-02-02 Hewlett Packard Enterprise Development Lp Selecting cloud storage
US11010258B2 (en) 2018-11-27 2021-05-18 Commvault Systems, Inc. Generating backup copies through interoperability between components of a data storage management system and appliances for data storage and deduplication
US11698727B2 (en) 2018-12-14 2023-07-11 Commvault Systems, Inc. Performing secondary copy operations based on deduplication performance
US20200192572A1 (en) 2018-12-14 2020-06-18 Commvault Systems, Inc. Disk usage growth prediction system
KR20200086143A (ko) * 2019-01-08 2020-07-16 삼성전자주식회사 저장 장치 및 그것의 데이터 처리 방법
US10922188B2 (en) * 2019-01-28 2021-02-16 EMC IP Holding Company LLC Method and system to tag and route the striped backups to a single deduplication instance on a deduplication appliance
KR102195839B1 (ko) 2019-03-14 2020-12-28 주식회사 티맥스티베로 데이터베이스 관리 시스템에서의 로그 레코드 관리를 위한 기법
US20200327017A1 (en) 2019-04-10 2020-10-15 Commvault Systems, Inc. Restore using deduplicated secondary copy data
US11463264B2 (en) 2019-05-08 2022-10-04 Commvault Systems, Inc. Use of data block signatures for monitoring in an information management system
CN110113614B (zh) * 2019-05-13 2022-04-12 格兰菲智能科技有限公司 图像处理方法及图像处理装置
CN110457163B (zh) * 2019-07-05 2022-05-03 苏州元核云技术有限公司 一种分布式块存储的数据恢复方法、装置及存储介质
US11294871B2 (en) 2019-07-19 2022-04-05 Commvault Systems, Inc. Deduplication system without reference counting
KR102427418B1 (ko) * 2019-09-27 2022-08-01 주식회사 데이타커맨드 백업 데이터 합성 장치 및 방법
US20210173811A1 (en) 2019-12-04 2021-06-10 Commvault Systems, Inc. Optimizing the restoration of deduplicated data stored in multi-node replicated file systems
US11204907B2 (en) 2019-12-05 2021-12-21 Exagrid Systems, Inc. Accelerated and memory efficient similarity matching
US20210294498A1 (en) * 2020-03-19 2021-09-23 Hewlett Packard Enterprise Development Lp Identifying a backup cluster for data backup
US11436092B2 (en) 2020-04-20 2022-09-06 Hewlett Packard Enterprise Development Lp Backup objects for fully provisioned volumes with thin lists of chunk signatures
US11687424B2 (en) 2020-05-28 2023-06-27 Commvault Systems, Inc. Automated media agent state management
US11262923B2 (en) 2020-07-08 2022-03-01 Samsung Electronics Co., Ltd. Method for managing namespaces in a storage device using an over-provisioning pool and storage device employing the same
US11620190B2 (en) * 2021-04-21 2023-04-04 EMC IP Holding Company LLC Techniques for performing backups using hints
US11687416B2 (en) 2021-09-27 2023-06-27 Kyndryl, Inc. Data backup optimization
CN116069678A (zh) * 2021-10-29 2023-05-05 华为技术有限公司 一种数据处理方法及相关装置
US11979174B1 (en) 2022-07-13 2024-05-07 Ansys, Inc. Systems and methods for providing simulation data compression, high speed interchange, and storage

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6003044A (en) * 1997-10-31 1999-12-14 Oracle Corporation Method and apparatus for efficiently backing up files using multiple computer systems
US6751714B2 (en) * 1999-02-02 2004-06-15 Storage Technology Corporation Systems and methods for relocation of compressed data tracks
GB2366643B (en) * 2000-05-25 2002-05-01 Siroyan Ltd Methods of compressing instructions for processors
US20040215644A1 (en) * 2002-03-06 2004-10-28 Edwards Robert Clair Apparatus, method, and system for aggregated no query restore
US7246254B2 (en) 2003-07-16 2007-07-17 International Business Machines Corporation System and method for automatically and dynamically optimizing application data resources to meet business objectives
US7941619B1 (en) * 2004-11-18 2011-05-10 Symantec Operating Corporation Space-optimized backup set conversion
US7415585B1 (en) * 2004-11-18 2008-08-19 Symantec Operating Corporation Space-optimized backup repository grooming
US20060123211A1 (en) * 2004-12-08 2006-06-08 International Business Machines Corporation Method for optimizing a snapshot operation on a file basis
US20060218435A1 (en) * 2005-03-24 2006-09-28 Microsoft Corporation Method and system for a consumer oriented backup
US9122643B2 (en) * 2005-12-08 2015-09-01 Nvidia Corporation Event trigger based data backup services
US8117409B2 (en) 2006-11-22 2012-02-14 Hitachi, Ltd. Method and apparatus for backup and restore in a dynamic chunk allocation storage system
US20080243769A1 (en) 2007-03-30 2008-10-02 Symantec Corporation System and method for exporting data directly from deduplication storage to non-deduplication storage
JP2008299441A (ja) 2007-05-29 2008-12-11 Hitachi Ltd ストレージシステム及びこれを用いたデータの管理方法
CN101339494A (zh) 2007-07-06 2009-01-07 普罗斯特系统公司 可移动介质上的公共因子分解的硬件加速
US8028106B2 (en) 2007-07-06 2011-09-27 Proster Systems, Inc. Hardware acceleration of commonality factoring with removable media
US7761411B2 (en) * 2007-07-20 2010-07-20 Oracle International Corporation Delta operations on a large object in a database
US7870409B2 (en) 2007-09-26 2011-01-11 Hitachi, Ltd. Power efficient data storage with data de-duplication
DE112007003693B4 (de) * 2007-10-25 2014-05-15 Hewlett-Packard Development Co., L.P. Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
US8447938B2 (en) 2008-01-04 2013-05-21 International Business Machines Corporation Backing up a deduplicated filesystem to disjoint media
US7953945B2 (en) * 2008-03-27 2011-05-31 International Business Machines Corporation System and method for providing a backup/restore interface for third party HSM clients
US8620845B2 (en) * 2008-09-24 2013-12-31 Timothy John Stoakes Identifying application metadata in a backup stream
US8452731B2 (en) 2008-09-25 2013-05-28 Quest Software, Inc. Remote backup and restore
US9015181B2 (en) 2008-09-26 2015-04-21 Commvault Systems, Inc. Systems and methods for managing single instancing data
US8161255B2 (en) 2009-01-06 2012-04-17 International Business Machines Corporation Optimized simultaneous storing of data into deduplicated and non-deduplicated storage pools
US8260750B1 (en) * 2009-03-16 2012-09-04 Quest Software, Inc. Intelligent backup escalation system
GB2471715A (en) * 2009-07-10 2011-01-12 Hewlett Packard Development Co Determining the data chunks to be used as seed data to restore a database, from manifests of chunks stored in a de-duplicated data chunk store.
GB2472072B (en) 2009-07-24 2013-10-16 Hewlett Packard Development Co Deduplication of encoded data
US8965852B2 (en) * 2009-11-24 2015-02-24 Dell Products L.P. Methods and apparatus for network efficient deduplication
US8224875B1 (en) * 2010-01-05 2012-07-17 Symantec Corporation Systems and methods for removing unreferenced data segments from deduplicated data systems
US8370297B2 (en) * 2010-03-08 2013-02-05 International Business Machines Corporation Approach for optimizing restores of deduplicated data
JP5434705B2 (ja) * 2010-03-12 2014-03-05 富士通株式会社 ストレージ装置、ストレージ装置制御プログラムおよびストレージ装置制御方法
US8756198B2 (en) * 2010-09-29 2014-06-17 International Business Machines Corporation Enhancing data store backup times

Also Published As

Publication number Publication date
EP2684137A2 (en) 2014-01-15
US20120233417A1 (en) 2012-09-13
EP2684137B1 (en) 2016-04-27
ES2578186T3 (es) 2016-07-21
CN102736961B (zh) 2017-08-29
KR20140006945A (ko) 2014-01-16
JP2014508362A (ja) 2014-04-03
WO2012125314A3 (en) 2013-01-03
CN102736961A (zh) 2012-10-17
KR101994491B1 (ko) 2019-06-28
EP2684137A4 (en) 2015-04-08
US9823981B2 (en) 2017-11-21
WO2012125314A2 (en) 2012-09-20

Similar Documents

Publication Publication Date Title
JP6033241B2 (ja) データー重複排除のためのバックアップおよび復元方策
JP6304406B2 (ja) ストレージ装置、プログラム、情報処理方法
CN102567218B (zh) 用于数据去重复块存储的垃圾收集和热点释放
US10394757B2 (en) Scalable chunk store for data deduplication
CN103098035B (zh) 存储系统
CN103635900B (zh) 基于时间的数据分割
KR20170054299A (ko) 메모리 관리 시의 중복 제거를 위해서 기준 세트로 기준 블록을 취합하는 기법
CN103562914B (zh) 节约资源型扩展文件系统
US20230046216A1 (en) Data management system and method of controlling
US11372576B2 (en) Data processing apparatus, non-transitory computer-readable storage medium, and data processing method
US10769115B2 (en) Data handling
US8151068B2 (en) Data copy management for faster reads
US11397706B2 (en) System and method for reducing read amplification of archival storage using proactive consolidation
US11429286B2 (en) Information processing apparatus and recording medium storing information processing program
JP2019095925A (ja) 情報処理装置および情報処理プログラム
JP2023150248A (ja) ストレージ制御プログラム、ストレージ制御方法およびストレージ制御装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150130

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150519

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160325

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160715

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160819

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160908

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160926

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161025

R150 Certificate of patent or registration of utility model

Ref document number: 6033241

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250