JP2015534684A - ファイルストレージシステムにおけるチェックポイントを用いて重複排除を管理するシステムおよび方法 - Google Patents

ファイルストレージシステムにおけるチェックポイントを用いて重複排除を管理するシステムおよび方法 Download PDF

Info

Publication number
JP2015534684A
JP2015534684A JP2015533024A JP2015533024A JP2015534684A JP 2015534684 A JP2015534684 A JP 2015534684A JP 2015533024 A JP2015533024 A JP 2015533024A JP 2015533024 A JP2015533024 A JP 2015533024A JP 2015534684 A JP2015534684 A JP 2015534684A
Authority
JP
Japan
Prior art keywords
file system
chunk
candidate
checkpoint
deduplication
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015533024A
Other languages
English (en)
Other versions
JP5925968B2 (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.)
Hitachi Data Systems Engineering UK Ltd
Original Assignee
Hitachi Data Systems Engineering UK Ltd
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 Hitachi Data Systems Engineering UK Ltd filed Critical Hitachi Data Systems Engineering UK Ltd
Publication of JP2015534684A publication Critical patent/JP2015534684A/ja
Application granted granted Critical
Publication of JP5925968B2 publication Critical patent/JP5925968B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • 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/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/1407Checkpointing the instruction stream
    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/128Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • G06F16/152File search processing using file content signatures, e.g. hash values
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • G06F16/1752De-duplication implemented within the file system, e.g. based on file segments based on file chunks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

Abstract

重複排除システムおよび方法は、バックグラウンド重複排除プロセスの全体を管理するソフトウェアベースのシステムと、ハードウェアベースのファイルシステム・マネージャおよびハッシュ生成器を含むハードウェアベースのシステムと、の連携を伴うものである。バックグラウンド重複排除プロセスを管理するため、さらに、重複排除の候補となるチャンクの特定およびそのようなチャンクの処理に関する処理の複雑さを低減するために、ファイルシステム・チェックポイント機構を利用する。【選択図】図2

Description

本発明は、概して、ファイルストレージシステムに関し、より具体的には、ファイルストレージシステムにおける重複排除に関する。
重複排除は、ストレージ利用の向上のための機構である。それは、主に、データストレージシステムにおいてデータの重複チャンクを特定することと、そのデータの単一コピーのみを、その単一コピーへの参照と共に維持して、重複を解消することと、を伴う。特に、重複排除によって、例えばディスクおよび/またはソリッドステートストレージにおいて、データの保存に必要な容量が削減される。
第1の例示的な実施形態において、ライブファイルシステムが稼働しているファイルストレージシステムにおいてデータの重複排除を実行する方法を提供し、該ファイルストレージシステムは、ソフトウェアベースのシステムとハードウェアベースのシステムとを有し、ソフトウェアベースのシステムは、重複排除検出/インデキシング・エンジンと相互通信可能に構成されたソフトウェアベースの重複排除マネージャを含み、ハードウェアベースのシステムは、ハードウェアベースのファイルシステム・マネージャとハッシュ生成器とを含み、ライブファイルシステムは、一連のチェックポイントによって区切られる。該方法は、ソフトウェアベースの重複排除マネージャによりファイルシステムのスナップショットコピーを作成することと、重複排除のためのチェックポイント範囲をソフトウェアベースの重複排除マネージャにより決定することと、ソフトウェアベースの重複排除マネージャにより該チェックポイント範囲に基づいてスナップショットコピーにおける候補チャンクを特定することと、ソフトウェアベースの重複排除マネージャによりハードウェアベースのファイルシステム・マネージャに対してハッシュ生成器を用いた候補チャンクのハッシュ化を要求することと、ハードウェアベースのファイルシステム・マネージャによりソフトウェアベースの重複排除マネージャに対して候補チャンクのハッシュ値およびチャンク・メタデータを返すことと、ソフトウェアベースの重複排除マネージャにより重複排除検出/インデキシング・エンジンに対して候補チャンクのハッシュ値を送ることと、候補チャンクがインデックス付きチャンクとマッチした場合にソフトウェアベースの重複排除マネージャによって重複排除検出/インデキシング・エンジンから該インデックス付きチャンクのチャンク・メタデータを受信することと、ソフトウェアベースの重複排除マネージャによりハードウェアベースのファイルシステム・マネージャに対してインデックス付きチャンクのチャンク・メタデータに基づいた候補チャンク重複排除を要求することと、ハードウェアベースのファイルシステム・マネージャによりチャンク・メタデータに基づいてライブファイルシステムにおいてインデックス付きチャンクを用いた候補チャンクの重複排除が可能かどうか検証することと、ライブファイルシステムにおいてインデックス付きチャンクを用いた候補チャンクの重複排除が可能であると判断される場合に、候補チャンクに関連付けられたポインタの各々を、インデックス付きチャンクに関連付けられた対応するポインタで置き換えることと、を含む。
第2の例示的な実施形態において、一連のチェックポイントで区切られるライブファイルシステムが稼働しているファイルストレージシステムを提供する。該ファイルストレージシステムは、重複排除検出/インデキシング・エンジンとインタフェースするように構成されたソフトウェアベースの重複排除マネージャを含むソフトウェアベースのシステムと、ハードウェアベースのファイルシステム・マネージャおよびハッシュ生成器を含むハードウェアベースのシステムと、を有する。ソフトウェアベースの重複排除マネージャは、(1)ファイルシステムのスナップショットコピーを作成し、(2)重複排除のためのチェックポイント範囲を決定し、(3)該チェックポイント範囲に基づいて、スナップショットコピーにおいて候補チャンクを特定し、(4)ハードウェアベースのファイルシステム・マネージャによるハッシュ生成器を用いた候補チャンクのハッシュ化を要求し、ハードウェアベースのファイルシステム・マネージャによりソフトウェアベースの重複排除マネージャに対して候補チャンクのハッシュ値およびチャンク・メタデータが返され、(5)重複排除検出/インデキシング・エンジンに対して候補チャンクのハッシュ値を送り、候補チャンクがインデックス付きチャンクとマッチした場合に重複排除検出/インデキシング・エンジンから該インデックス付きチャンクのチャンク・メタデータを受信し、(6)ハードウェアベースのファイルシステム・マネージャによるインデックス付きチャンクのチャンク・メタデータに基づいた候補チャンクの重複排除を要求する、ように構成されている。ハードウェアベースのファイルシステム・マネージャは、(1)チャンク・メタデータに基づいて、ライブファイルシステムにおいてインデックス付きチャンクを用いた候補チャンクの重複排除が可能かどうか検証し、(2)ライブファイルシステムにおいてインデックス付きチャンクを用いた候補チャンクの重複排除が可能であると判断される場合に、候補チャンクに関連付けられたポインタの各々を、インデックス付きチャンクに関連付けられた対応するポインタで置き換える、ように構成されている。
いくつかの代替的実施形態において、候補チャンクは、所与のファイルシステムオブジェクトからの単一のファイルシステムブロックを包含することができ、または所与のファイルシステムオブジェクトからの複数のファイルシステムブロックを包含することができる。
いくつかの代替的実施形態において、ライブファイルシステムにおいて候補チャンクの重複排除が可能かどうか検証することは、候補チャンクに関連付けられたチェックポイント番号およびインデックス付きチャンクに関連付けられたチェックポイント番号に少なくとも部分的に基づくことができ、および/またはインデックス付きチャンクのブロックに関連付けられた参照カウントに少なくとも部分的に基づくことができる。
いくつかの代替的実施形態において、候補チャンクに関連付けられたポインタの各々を、インデックス付きチャンクに関連付けられた対応するポインタで置き換えることは、対応する各ポインタに関連付けられた参照カウントを増加させることを含み得る。
いくつかの代替的実施形態において、チェックポイント範囲に基づいてスナップショットコピーにおいて候補チャンクを特定することは、ファイルシステムオブジェクトのルートノード内の作成チェックポイントを調べることと、その作成チェックポイントに少なくとも部分的に基づいて該ファイルシステムオブジェクトがいずれかの候補チャンクを含むかどうか判断することと、を含み得る。ファイルシステムオブジェクトがいずれかの候補チャンクを含むかどうか判断することは、その作成チェックポイントが該チェックポイント範囲内にあって、かつそのファイルシステムオブジェクトがクローンオブジェクトではない場合に、そのファイルシステムオブジェクトに関連付けられたチャンクはすべて候補チャンクであると判断することと、その作成チェックポイントが該チェックポイント範囲内にあって、かつそのファイルシステムオブジェクトがクローンオブジェクトである場合に、そのファイルシステムオブジェクトのクローン元のオブジェクトから分岐したチャンクをいずれも特定するためにオブジェクトツリー構造をトラバースすることと、その作成チェックポイントが該チェックポイント範囲外にある場合に、該チェックポイント範囲内にある変更チェックポイントを持つチャンクをいずれも特定するためにオブジェクトツリー構造をトラバースすることと、を含み得る。あるいは、ファイルシステムオブジェクトがいずれかの候補チャンクを含むかどうか判断することは、その作成チェックポイントが該チェックポイント範囲内にあって、かつそのファイルシステムオブジェクトがクローンオブジェクトではなく、かつそのファイルシステムオブジェクトが疎なオブジェクトではない場合に、そのファイルシステムオブジェクトに関連付けられたチャンクはすべて候補チャンクであると判断することと、その作成チェックポイントが該チェックポイント範囲内にあって、かつそのファイルシステムオブジェクトがクローンオブジェクトではなく、かつそのファイルシステムオブジェクトが疎なオブジェクトである場合に、疎ではない候補チャンクをいずれも特定するためにオブジェクトツリー構造をトラバースすることと、その作成チェックポイントが該チェックポイント範囲内にあって、かつそのファイルシステムオブジェクトがクローンオブジェクトである場合に、そのファイルシステムオブジェクトのクローン元のオブジェクトから分岐した候補チャンクをいずれも特定するためにオブジェクトツリー構造をトラバースすることと、その作成チェックポイントが該チェックポイント範囲外にある場合に、該チェックポイント範囲内にある変更チェックポイントを持つ候補チャンクをいずれも特定するためにオブジェクトツリー構造をトラバースすることと、含み得る。
上記実施形態のいずれかにおいて、重複排除のためにインデックス付きチャンクを使用できないと判断される場合に、その候補チャンクは、候補チャンクに関連付けられたハッシュ値およびチャンク・メタデータに基づいてインデキシングされることができる。
別の例示的な実施形態において、一連のチェックポイントで区切られるライブファイルシステムが稼働しているファイルストレージシステムにおいてデータの重複排除を実行するためのコンピュータプログラムがその中で具現化された、有形の非一時的コンピュータ読取り可能な媒体を備える装置を提供し、該コンピュータプログラムは、ファイルストレージシステムのコンピュータプロセッサ上で実行されることで、ファイルシステムのスナップショットコピーを作成することと、重複排除のためのチェックポイント範囲を決定することと、該チェックポイント範囲に基づいてスナップショットコピーにおいて候補チャンクを特定することと、ハードウェアベースのファイルシステム・マネージャに対して候補チャンクのハッシュ化の要求を送信することと、ハードウェアベースのファイルシステム・マネージャから候補チャンクのハッシュ値およびチャンク・メタデータを受信することと、ハッシュ値に基づいて候補チャンクがインデックス付きチャンクの重複であるかどうか判断することと、候補チャンクがインデックス付きチャンクの重複であると判断される場合に、候補チャンクの重複排除のための要求であって、該インデックス付きチャンクのチャンク・メタデータを含む要求を、ハードウェアベースのファイルシステム・マネージャに対して送信することと、を含むプロセスをコンピュータプロセッサに実行させるための命令を含む。
さらに別の例示的な実施形態において、一連のチェックポイントで区切られるライブファイルシステムが稼働しているファイルストレージシステムにおいてデータの重複排除を実行するための装置を提供し、該装置は、ハッシュ生成器と、ハードウェアベースのファイルシステム・マネージャと、を備え、ハードウェアベースのファイルシステム・マネージャは、候補チャンクのハッシュ化の要求をソフトウェアベースの重複排除マネージャから受信し、該候補チャンクに関連付けられたチェックポイント番号に基づいて候補チャンクをハッシュ化すべきかどうか判断し、候補チャンクをハッシュ化すべきと判断される場合には、該チャンクをハッシュ化するためにハッシュ生成器を起動し、候補チャンクのハッシュ値およびチャンク・メタデータをソフトウェアベースの重複排除マネージャに返し、候補チャンクの重複排除の要求をソフトウェアベースの重複排除マネージャから受信し、ライブファイルシステムにおいてインデックス付きチャンクに基づいた候補チャンクの重複排除が可能かどうか検証し、ライブファイルシステムにおいてインデックス付きチャンクを用いた候補チャンクの重複排除が可能であると判断される場合に、候補チャンクに関連付けられたポインタの各々を、インデックス付きチャンクに関連付けられた対応するポインタで置き換える、ように構成されている。
さらに別の例示的な実施形態では、複数のファイルシステムオブジェクトを含むライブファイルシステムを有するファイルストレージシステムにおいて重複排除のための候補チャンクを特定する方法を提供し、ライブファイルシステムは、一連のチェックポイントで区切られるものであり、重複排除は、所定のチェックポイント範囲に関するものである。該方法は、ファイルシステムオブジェクトのルートノード内の作成チェックポイントを調べることと、その作成チェックポイントに少なくとも部分的に基づいて該ファイルシステムオブジェクトがいずれかの候補チャンクを含むかどうか判断することと、を含み、該ファイルシステムオブジェクトがいずれかの候補チャンクを含むかどうか判断することは、その作成チェックポイントがチェックポイント範囲内にあって、かつ該ファイルシステムオブジェクトがクローンオブジェクトではなく、かつ該ファイルシステムオブジェクトが疎なオブジェクトではない場合に、該ファイルシステムオブジェクトに関連付けられたチャンクはすべて候補チャンクであると判断することと、その作成チェックポイントがチェックポイント範囲内にあって、かつ該ファイルシステムオブジェクトがクローンオブジェクトではなく、かつ該ファイルシステムオブジェクトが疎なオブジェクトである場合に、疎ではない候補チャンクをいずれも特定するためにオブジェクトツリー構造をトラバースすることと、その作成チェックポイントがチェックポイント範囲内にあって、かつ該ファイルシステムオブジェクトがクローンオブジェクトである場合に、該ファイルシステムオブジェクトのクローン元のオブジェクトから分岐した候補チャンクをいずれも特定するためにオブジェクトツリー構造をトラバースすることと、その作成チェックポイントがチェックポイント範囲外にある場合に、チェックポイント範囲内にある変更チェックポイントを持つ候補チャンクをいずれも特定するためにオブジェクトツリー構造をトラバースすることと、を含む。
さらなる実施形態が、開示され、特許請求され得る。
上記の実施形態の特徴は、添付の図面を共に参照して、以下の詳細な説明を参照することで、より容易に理解されるであろう。
図1は、本発明の例示的な実施形態によるファイルストレージシステムの概略ブロック図である。 図2は、そのような例示的な実施形態によるソフトウェア/ハードウェア・アーキテクチャの概略図である。 図3は、本発明の例示的な実施形態によるオブジェクトツリー構造の一般形式を示す概略ブロック図である。 図4は、例示的な一実施形態によるソフトウェアベースの重複排除マネージャのコンポーネントを示す概略図である。 図5は、本発明のいくつかの例示的な実施形態による重複排除についての概略論理フロー図である。 図6は、例示的な一実施形態により候補チャンクを特定する場合の論理フロー図である。
上記の図面および図中に示す要素は、必ずしも一貫した縮尺またはいずれかの縮尺で描かれたものではないことに留意すべきである。文脈上別段の示唆がない限り、類似の要素は同様の符号で示している。
本明細書および添付の請求項で使用される場合の以下の用語は、文脈上別段の解釈を要する場合を除き、以下に示す意味を持つものとする。
「ストレージデバイス」は、データを保存するために使用されるデバイスまたはシステムである。ストレージデバイスは、1つ以上の磁気もしくは光磁気もしくは光ディスクドライブ、ソリッドステートストレージデバイス、または磁気テープを含み得る。便宜上、ストレージデバイスは、「ディスク」または「ハードディスク」と呼ばれることがある。データストレージシステムは、同じまたは異なるストレージ容量を有する同じまたは異なるタイプのストレージデバイスを含み得る。
「RAIDコントローラ」は、複数のストレージデバイスのストレージ容量を統合して、「システムドライブ」(「SD」)、「論理ユニット」(「LU」もしくは「LUN」)、または「ボリューム」と別称することができる仮想ストレージ空間にするデバイスまたはシステムである。一般に、SDは、複数のストレージデバイスからの空間が集められて、単一のストレージデバイスよりも容量が大きく、また、いくつかのディスクの障害にもデータ損失なく耐え得るように冗長な情報を含んでいる。例示的な実施形態では、各SDには、以下で「論理ユニット識別子」または「LUID」と呼ぶ固有識別子が関連付けられており、また、各SDは、例えば2TB〜64TBまたはさらに大きい所定の最大容量を超えない大きさである。SDにコマンドが送られると、RAIDコントローラは、一般に、それらのコマンドを、そのSDのすべてのストレージデバイスに同時に転送する。RAIDコントローラは、一般的なストレージデバイスにおける主な制限のうちの3つ、すなわち、ストレージデバイスは一般にストレージシステムにおける最も低速の構成要素であることと、それらは一般に破局故障を引き起こす可能性が最も高いことと、それらは一般にストレージ容量が比較的小さいことについて、その克服を助ける。
「RAIDシステム」は、1つ以上のRAIDコントローラと複数のストレージデバイスとを含むデバイスまたはシステムである。一般に、RAIDシステムは、2つのRAIDコントローラ(他方に障害が発生した場合でも一方によって動作が維持され得るように、また、両方が正常であるときに負荷を分担するため)と、数十個のストレージデバイスと、を含む。例示的な実施形態では、RAIDシステムは、一般に、2〜32個のSDで構成される。ファイルサーバは、データを保存または取得する必要があるときには、RAIDシステムのRAIDコントローラにコマンドを送り、そしてこれが、そこから個々のストレージデバイスへのコマンドのルーティング、ならびに必要に応じてデータの保存または取得を担う。一部のRAIDシステムでは、あるSD(「プライマリSD」と呼ばれる)に書き込まれたデータが、冗長目的で、RAIDシステムによって別のSD(本明細書では「セカンダリSD」または「ミラーSD」と呼ぶ)に自動的に書き込まれるように、SD間にミラー関係を確立することができる。セカンダリSDは、プライマリSDと同じRAIDシステムによって、または別のローカルもしくはリモートRAIDシステムによって、管理されることができる。SDを効果的にミラーリングすることによって、いくつかの状況において、SDの損失または破損からの、さらに場合によっては複数のSDの損失または破損からの、リカバリを提供するための、RAID1+0機能がSDの間で得られる。
「ファイルシステム」は、ファイルストレージシステムに保存されたファイルおよびディレクトリ(フォルダ)からなる構造である。ファイルストレージシステム内で、ファイルシステムは、一般に、いくつかの仮想ストレージ構成体を用いて管理され、例示的な実施形態では、ファイルシステムは、レンジ、ストライプセット、スパンと呼ばれる仮想ストレージ構成体の階層を用いて管理される。「レンジ」は、プライマリSD自体か、またはプライマリ/セカンダリSDペアか、いずれかで構成され、これらは、同じデータを格納するものであり、よって、単一のSDと同じストレージ容量を提供する。「ストライプセット」は、1つ以上のレンジで構成される。「スパン」は、1つ以上のストライプセットで構成される。従って、スパンは、結局、1つ以上のSD(一般的には、4〜50個のSD)で構成される。スパンは、1つ以上のファイルシステムに分割することができ、各ファイルシステムは、個別の名前および識別子を有し、また、異なる特性を有し得る(例えば、あるファイルシステムを32KBクラスタで、別のものを4KBクラスタでフォーマットすることができ、あるファイルシステムはWORMとし、別のものはWORMではないものとすることができる、など)。スパンの各ファイルシステムは、個別に、フォーマット、マウント、およびアンマウントされる。ファイルシステムは、任意の順序で、任意の時点で、作成および削除され得る。ファイルシステムは、一般に、自動的に拡張されるように(あるいは自動拡張を回避または制限するように)設定することができるか、または手動で拡張することができる。
「ブロック」は、ファイルシステムにおけるストレージの単位であり、ユーザデータおよび/またはシステムデータが保存された物理ストレージの一部に対応している。(後述する)ファイルシステムオブジェクトは、一般に、1つ以上のブロックを含む。
「チャンク」は、ファイルシステムにおけるストレージの概念単位であり、ファイルシステムオブジェクトの1つ以上のブロックを包含する。本明細書で記載する例示的な実施形態では、重複排除がチャンク単位で実行される。
値の「セット」は、1つ以上の値を含み得る。
以下で、便宜上、見出しが使用されるが、それらは、決して本発明を限定するものとして解釈されるべきではない。
本発明の例示的な実施形態について、日立データシステムズ社が販売しているBlueArc Titan(登録商標)およびMercury(登録商標)ファイルサーバとして一般に知られる各種ファイルサーバで使用されるタイプの典型的なファイルシステムを参照して説明するが、種々のコンセプトは、他のタイプのファイルシステムに適用され得ることに留意すべきである。
[例示的なファイルストレージシステム]
図1は、本発明の例示的な実施形態によるファイルストレージシステムの概略ブロック図である。ファイルストレージシステムは、特に、いくつかのファイルサーバ(簡単にするため、便宜上、単一のファイルサーバ102を示している)を含み、これらは、インターネットプロトコル・ネットワーク(例えば、インターネット)などの通信ネットワーク104を介して様々なクライアント装置1061〜106Mと通信し、さらに、ファイバチャネル(FibreChannel)ネットワークなどのストレージネットワーク110を介して様々なRAIDシステム1081〜108Nと通信する。クライアント装置1061〜106Mとファイルサーバ102とは、CIFSおよび/またはNFSなど、1つ以上のネットワークファイルプロトコルを用いて通信する。ファイルサーバ102とRAIDシステム1081〜108Nとは、SCSIなどのストレージプロトコルを用いて通信する。留意すべきことは、ファイルストレージシステムは、様々な構成で相互接続された複数のファイルサーバと複数のRAIDシステムを含み得るということであり、それには、冗長スイッチド・ファイバチャネルネットワークを介して任意のファイルサーバが任意のRAIDシステムと通信することが可能なフルメッシュ構成が含まれる。
ファイルサーバ102は、1つ以上のファイルシステムを管理するためのストレージプロセッサを備える。ファイルサーバ102は、指定された名前で、ツリーまたはサブツリーなど、ファイルシステムの部分へのクライアントアクセスを可能とするように構成され得る。CIFSの用語では、そのようなアクセスを「共有」と呼ぶことができ、NFSの用語では、そのようなアクセスを「エクスポート」と呼ぶことができる。ファイルサーバ102は、内部には、例えば、その全体が参照により本明細書にそれぞれ組み込まれる米国特許第6826615号(2337/103)および第8180897号(2337/108)に記載されているような、ハードウェア実装および/またはハードウェアアクセラレートされる各種サブシステムを含むことができ、さらに、例えば、その全体が参照により本明細書にそれぞれ組み込まれる米国特許第7457822号(2337/104)および第8224877号(2337/117)に記載されているような、複数のリンクされたサブモジュールを含むハードウェアベースのファイルシステムを含むことができる。
各RAIDシステム108は、一般に、少なくとも1つのRAIDコントローラ(通常は、冗長のために、2つのRAIDコントローラ)と、RAIDコントローラによって管理される複数の物理ストレージデバイス(例えば、ディスク)と、を備える。RAIDシステム108は、そのストレージ資源を複数のSDに集約する。例えば、各RAIDシステム108は、2〜32個のSDで構成することができる。各SDは、所定の最大容量(例えば、2TB〜64TB、またはさらに大きい容量)に制限され得る。複数のストレージデバイスをSDに統合することによって、いくつかの効果を得ることができ、それには、高速化(個々のストレージデバイスは比較的低速であるが、このボトルネックを緩和するために、データを複数のストレージデバイスの間にストライピングすることができる)、大容量化(個々のストレージデバイスは比較的小容量であるが、複数のストレージデバイスを統合することで、より大きな使用可能空間を提供することができる)、抽象化(使用される容量は、単一のストレージデバイスの容量よりも大きいか、または小さいことが可能である)、耐障害性(SDがストレージデバイスの損失に耐えることができるように、各ストレージデバイスにパリティ情報または冗長情報を記憶することができる)、が含まれる。
ファイルサーバ102は、単一のRAIDシステムまたは複数のRAIDシステムからのものであり得る1つ以上のSDを使用するように構成される。ファイルサーバ102は、通常、各SDがプライマリであるか、またはセカンダリであるかを確認するために、RAIDシステムに問い合わせることができる。どのSDがファイルサーバ102によって使用されるのかを制御する方法を、本明細書では、「ライセンシング」と呼ぶ。よって、実際には、ファイルサーバ102は、一般に、一部のSDについてライセンスされて、他のものについてはライセンスされないことになる。
ファイルサーバ102は、内部では、複数のSDを統合して、本明細書では「スパン」と呼ぶ、より大容量のストレージプールにすることが可能である。スパンは、実質的には、複数のSDからなるRAID0アレイである。複数のSDをスパンに統合することによって、複数の物理ディスクをSDに統合することにより得られるものと同様のいくつかの効果を得ることができ、それには、高速化(複数のRAIDシステムの複数のSDの間にI/Oを分散させることによって、ストレージのボトルネックをさらに緩和することができる)、ストレージの大容量化(スパンは、2TBに制限され得る単一のSDよりも大容量とすることが可能である)、より柔軟なストレージ空間の割り当てを可能とする更なる抽象化、が含まれる。
[ソフトウェア/ハードウェア・アーキテクチャ]
いくつかの例示的な実施形態において、ファイルサーバは、ソフトウェアベースのシステムとハードウェアベースのシステムとの間の独特な役割分担によって重複排除を実現する。図2は、そのような例示的な実施形態によるソフトウェア/ハードウェア・アーキテクチャの概略図である。この場合、ソフトウェアベースのシステム210は、ソフトウェアベースの重複排除マネージャ212と重複排除検出/インデキシング・エンジン213とを含む各種ソフトウェアコンポーネントを有し、それらは、マイクロプロセッサシステム(例えば、マイクロプロセッサと、関連付けられたメモリおよび周辺機器と、を含む)上で動作するオペレーティングシステム211の下で実行される。ソフトウェアベースの重複排除マネージャ212と重複排除検出/インデキシング・エンジン213との間で通信を可能とするために、(例えば、Bossockソケット層を介して)プロセス間通信チャネル214が提供される。ハードウェアベースのシステム220は、ハードウェアベースのハッシュ生成器222(より詳細に後述する)およびファイルシステム223と通信するハードウェアベースのファイルシステム・マネージャ221を含む各種ハードウェアコンポーネントを有し、ファイルシステムは、各種メモリおよびストレージデバイスに保存されており、それらの一部はファイルサーバ102内(例えば、内部キャッシュメモリ内)にある場合があり、また、それらの一部はファイルサーバ102の外部にある場合がある(例えば、各種RAIDシステムまたは他のストレージシステムに保存される)。ソフトウェアベースの重複排除マネージャ212とハードウェアベースのファイルシステム・マネージャ221との間の通信を可能とするために、インタフェース230が提供される。
図2に示す役割分担によって、特に、重複排除がハードウェアベースのファイルシステムの性能に及ぼす影響を制御するように、ソフトウェアベースの重複排除マネージャ212が、バックグラウンドで重複排除機能を誘導することが可能になるとともに、ソフトウェアベースとハードウェアベースのコンポーネント間の通信量が減少する。後述するように、ソフトウェアベースの重複排除マネージャ212とハードウェアベースのファイルシステム・マネージャ221はどちらも、重複排除の実行に要する処理量および通信量を削減する様々な最適化を含んでいる。
[ファイルシステムオブジェクトおよびツリー構造]
ファイルサーバ102は、各種タイプのオブジェクトをファイルシステムに保存する。オブジェクトは、一般にシステムオブジェクトとファイルオブジェクトに分類することができる。ファイルオブジェクトは、ワードプロセッサファイルまたはスプレッドシートファイルなどのように、ユーザデータおよび関連付けられた属性の保存用に作成される。システムオブジェクトは、情報の管理用に、ファイルストレージシステムによって作成されるものであり、数例を挙げると、ルートディレクトリオブジェクト、空き領域割り当てオブジェクト、変更チェックポイントオブジェクトリストオブジェクト、変更保持オブジェクトリストオブジェクト、ソフトウェアメタデータオブジェクト、などが含まれる。より具体的には、ディレクトリオブジェクトは、ディレクトリ情報の保存用に作成される。空き領域割り当てオブジェクトは、空き領域の割り当て情報の保存用に作成される。変更チェックポイントオブジェクトリストオブジェクトおよび変更保持オブジェクトリストオブジェクト(これら両方についてはより詳細に後述する)は、それぞれ、チェックポイントおよび保持チェックポイントに関する情報の保存用に作成される。ソフトウェアメタデータオブジェクト(より詳細に後述する)は、ファイルオブジェクトまたはディレクトリオブジェクトに関連付けられた余分なファイル属性(すなわち、CIFSセキュリティ属性など、後述するように、そのファイルオブジェクトまたはディレクトリオブジェクト内の予め定められた領域内に収めることができないファイル属性)を保持するための特殊オブジェクトであって、ファイルオブジェクトまたはディレクトリオブジェクトの作成者によって作成されるものであり、そのファイルオブジェクトまたはディレクトリオブジェクト内には、ソフトウェアメタデータオブジェクトへの参照が格納される。
いくつかの実施形態において、ファイルシステムのインスタンス化は、ルートノード(動的スーパーブロックまたはDSBと呼ばれる)を有するツリー構造を用いて管理される。ファイルサーバ102は、ファイルシステムの異なるチェックポイントを表す異なるバージョン(例えば、現在「使用中」のバージョンと、1つ以上の「チェックポイント」バージョン)を保存するために、複数のDSBを保持することができる。例示的な一実施形態において、DSBは、間接オブジェクトへのポインタを有し、そして、その間接オブジェクトは、他のオブジェクトへのポインタを有する。間接オブジェクトにより参照される各オブジェクトには、オブジェクト番号が関連付けられる。システムオブジェクトは、一般に、常にシステム内に存在するので、典型的には、事前定義された固定のオブジェクト番号を有する。ファイルオブジェクトは、一般に、使用できるオブジェクト番号のプールから動的にオブジェクト番号が割り当てられ、それらのファイルオブジェクト番号は、状況によって、再使用することができる(例えば、ファイルが削除されると、そのオブジェクト番号は、後のファイルオブジェクトによる再使用が可能な空きとなり得る)。間接オブジェクトは、対応するオブジェクトへのポインタを取得するために、オブジェクト番号によってインデキシングすることができる。
一般的に、間接オブジェクト、システムオブジェクトの各々、ファイルオブジェクトの各々を含む、ファイルシステムにおける各オブジェクトは、別個のオブジェクトルートノード(ルートoノードと呼ばれることがある)を有するとともに、オプションとして、いくつかの間接ノード(間接oノードと呼ばれることがある)、直接ノード(直接oノードと呼ばれることがある)、およびストレージブロックを有する別個のツリー構造を用いて実現される。DSBは、間接オブジェクトのルートノードへのポインタを有する。間接オブジェクトは、その他のオブジェクトのルートノードへのポインタを有する。
図3は、本発明の例示的な実施形態によるオブジェクトツリー構造の一般形式を示す概略ブロック図である。ルート(「R」)ノード302は、いくつかの間接(「I」)ノード304を指すことができ、それらの各々は、いくつかの直接(「D」)ノード306を指すことができ、それらの各々は、いくつかのストレージブロック(「B」)308を指すことができる。実際には、オブジェクトツリー構造は、例えば、そのオブジェクトのサイズによって、大きく異なり得る。また、特定のオブジェクトのツリー構造は、そのオブジェクトに情報が追加および削除されることで、時間とともに変化し得る。例えば、より多くのストレージ空間がそのオブジェクトのために使用されるときには、ツリー構造にノードが動的に追加される場合があり、また、必要に応じて、いくつかの異なる間接レベルが用いられることがある(例えば、間接ノードは、直接ノードまたは他の間接ノードを指し得る)。
オブジェクトが作成されると、そのオブジェクトのためのオブジェクトルートノードが作成される。最初は、そのような「空の」オブジェクトのルートノードは、間接ノード、直接ノード、またはデータブロックへのポインタをいずれも有していない。
そのオブジェクトにデータが追加されると、まず最初に、そのデータは、ルートノードが直接指すデータブロックに入れられる。ルートノードにおける直接ブロックポインタが全て使い尽されたら、次に、直接ノードが、ルートノードからその直接ノードへのポインタと共に作成される。そのオブジェクトのデータが、直接ノードにおけるデータポインタを全て使い尽すまで増大すると、次に、間接ノードが作成される。
一時コピーと、さらにオプションとして保持される様々な時点でのファイルシステムのコピーを作成するために、例えば、上記で参照により組み込まれた米国特許第7457822号(2337/104)、およびその全体が参照により本明細書に組み込まれる米国特許第8041735号(2337/105)に記載されているような、チェックポイント機構が設けられる。具体的には、ファイルシステム要求の処理は、10秒ごとなど、ユーザ指定の間隔よりも低くない頻度で生じるようにスケジュールされた一連のチェックポイントによって区切られる。連続するチェックポイントのそれぞれに関して、現在のファイル構造情報がディスクに保存され、これが、直前のチェックポイントからの保存済みファイル構造情報に取って代わる。チェックポイントは、順番に番号が付されて、ファイル要求の処理を時間的にグループ分けするために用いられる。各ファイルシステムオブジェクトには、それが作成されたチェックポイントが関連付けられ、その作成チェックポイント番号が、オブジェクトルートノードに保存される。
様々な目的で、選択された時点でのファイルシステム構造についての知識を得ることが有用となり得る。このような機能は、以下では便宜上、保持チェックポイントまたはスナップショットと呼ばれる、現在保存されているチェックポイントに関連付けられたファイルシステム構造データの保存を可能にすることによって提供される。保持チェックポイントは、実質的に、特定のチェックポイントでのファイルシステム構造の読み取り専用バージョンである。複数の保持チェックポイントを取得することができ、また、選択された保持チェックポイントを削除するための、または(例えば、カタストロフィの後にファイルシステムを既知の状態に戻すために)選択された保持チェックポイントにファイルシステムを戻すための、機構が設けられる。
本発明のいくつかの実施形態において、ユーザがファイルのコピーを作成するときなどに、ファイルシステム内でファイルのコピー(クローン)を迅速に作成することを可能とするために、例えば、その全体が参照により本明細書に組み込まれる米国特許出願公開第2012/0130949号(2337/130)に記載されているようなファイルクローニング機構が設けられる。例示的な実施形態において、ソースオブジェクトのクローンは、少なくとも最初は、そのソースオブジェクトの各種要素(例えば、間接oノード、直接oノード、データブロック)への参照を格納した構造で表される。読み取り専用のクローンと可変クローンの両方を作成することができる。ソースファイルとクローンは、最初は、そのような要素を共有しており、ソースファイルまたは可変クローンに変更が加えられると、変更されていない要素を共有し続ける。ソースファイルに関連付けられたユーザデータブロック、またはデータストリームを記述するメタデータブロック(すなわち、間接/直接oノード)は、いずれも、クローンを作成する時点では複製される必要がない。クローニングされたファイルは、適時に、「デクローニング」され得る。
オブジェクトルートノードは、オブジェクトが直近で変更されたチェックポイントを示すためのチェックポイント番号を含む(チェックポイント番号は、最初は、オブジェクトが作成されたチェックポイントを示し、その後、オブジェクトが新しいチェックポイントで変更される度に、チェックポイント番号は変更される)。例示的な一実施形態では、さらに、オブジェクトが作成されたチェックポイント番号も、オブジェクトルートノードに保存される。
オブジェクトルートノードが対応している実際のデータのために、オブジェクトルートノードは、対応するオブジェクトに関連付けられたデータの各ブロックへの個別のポインタを有する。一般に、最大16個までのデータブロックへのポインタが、オブジェクトルートノードに保存される。16個のブロックを超えるデータのためには、1つ以上の直接ノードおよび/または直接ノードが、オブジェクトツリーにおいて必要になるとともに、各種ノードにリンクするための適切なポインタが、必要に応じて、各ノードに保存される。そのようなポインタは、対応するデータブロックまたはノードに関連付けられたディスク上のブロックのセクタ番号を記憶している。
直接ノードは、チェックポイント番号を有し、また、そのオブジェクトに関連する一定数のブロック(例えば、約60または61個のブロック)の場所を記憶するように構成されている。
第1の直接ノードが、データブロックを示すために全て使用されると、次に、1つ以上の間接ノードを用いて、第1の直接ノードと、さらに、そのオブジェクトに対応するデータのブロックを有する追加の直接ノードが示される。そのような場合、オブジェクトルートノードは、間接ノードへのポインタを有し、間接ノードは、対応する直接ノードへのポインタを有する。間接ノードが全て使用されると、次に、必要に応じて、追加の介在する間接ノードが用いられる。この構造体によって、ファイルのフラグメンテーションに関わりなく、ファイルの一部分の高速同定が可能となる。
上述のように、間接ノードは、ルートノードと直接ノードとの間の間接レベルを提供する。例示的な一実施形態において、間接ノードには、以下の情報が保存される。
・ チェックポイント番号。
・ 間接ノードまたは直接ノードのいずれかへのポインタ(例えば、最大60個までの、そのようなポインタ)。
・ 間接ノードの妥当性チェックを可能とするためのCRCおよび各種サニティ・ダブルワード。
上述のように、直接ノードは、ディスク上のデータブロックへの直接ポインタを提供する。例示的な一実施形態において、直接ノードには、以下の情報が保存される。
・ チェックポイント番号。
・ 複数のデータブロック記述子(例えば、最大60個までの、そのような記述子)。各データブロック記述子は、データブロックへのポインタと、チェックポイント番号と、そのブロックがゼロ充填されるかどうかを示すビットと、を含む。
・ 間接ノードの妥当性チェックを可能とするためのCRCおよび各種サニティ・ダブルワード。
各ノード(すなわち、ルートノード、直接ノード、間接ノード)において、ブロックまたは他のノードへの各ポインタには、該ポインタにより参照されるブロック/ノードに関連付けられたチェックポイントを示すためのチェックポイント番号が関連付けられている。後述するいくつかの例示的な実施形態において、それらのチェックポイント番号は、重複排除の可能性について特定のファイルシステムオブジェクト・チャンクを調べるべきかどうか判断するために用いられる。
いかにしてファイルシステムオブジェクトツリー構造が管理されるかについての上記説明では、オブジェクトが書き込まれる際に、データブロックおよびツリーノードが密に割り当てられたが、いくつかの例示的な実施形態では、疎なファイルシステムオブジェクトがサポートされ、その場合、データブロックおよびツリーノードを全て割り当てなくても、さらにオブジェクトのゼロ充填部分については、データブロック(複数の場合もある)にゼロ充填しなくても、ファイルシステムオブジェクトを書き込むことができる。
例えば、ファイルへの書き込みが、ファイルの現在の終わりからの開始オフセットを有する場合、現在の終わりと新しい書き込みデータの始まりとの間のファイルの未定義部分は、ゼロ充填されることが技術的に必要となる。オブジェクトの長さが、現在の長さよりも大きく設定される場合にも、同じことが生じる。これは、ファイルが作成されて、その長さが、例えば1GBに設定される場合に、特に問題となり得る。そのようなファイルシステムオブジェクトにデータブロックを全て割り当てると、そのオブジェクトに割り当てられたディスクブロックに、実際にゼロを書き込むことが必要となる。1GBファイルの場合、これは、例えば10秒程度を要し得る。1TBファイルの場合、それは、例えば3時間程度を要し得る。
本発明のいくつかの実施形態において、この問題は、各データブロックポインタと共に、そのブロックがゼロ充填されるかどうかを示すビットを有することによって、回避される。このビットが設定されている場合には、ファイルサーバは、このブロックが、ディスク上では非ゼロデータが入っているとしても、ゼロ充填されるべきであることが分かる。ブロックが読み出される場合には、実際のディスク上の内容ではなく、ゼロが、このブロックとして返される。ブロック全体に満たない書き込みによってブロックが書き込まれる場合には、書き込まれていないブロックの部分にゼロが書き込まれ、そして、そのブロックがゼロ充填されるものではないことを示すために、ビットがリセットされる。この場合、注目されるのは、ファイルのゼロ充填される全ての部分にディスクブロックが割り当てられるものの、実際にディスクブロックがゼロ充填されることはないということである。
一部の例では、ファイルシステムオブジェクトのそのようなゼロ充填される部分に対しては、データブロックおよびツリーノードの割り当ては過度に時間を要し得るので、データブロックおよび関連するツリーノードの割り当てさえされない。例えば、4Kのディスクブロックサイズの場合、1TBのオブジェクトは、約400万個の直接oノードと、それより少数の間接oノードとを必要とし、これをディスクに書き込むには、40秒程度を要し得る。また、必要な全てのデータブロックの空き領域割り当て、およびその後の空き領域ビットマップの更新によって、この時間はさらに大きく増加される。仮に、ファイルの作成が開始された直後にチェックポイントが取得されるとしたら、通常、システム全体が、この時間全体にわたって、(どのボリュームの要求であっても)要求に対するサービス提供を停止することになる。
そこで、いくつかの例示的な実施形態において、この問題は、二面的なアプローチにより解決される。ソリューションの第1の側面は、ファイルのゼロ充填される部分に対して、実際にはディスクブロックを割り当てないことである。これは、オブジェクト保存が、ゼロ充填されるブロックへの書き込みを伴う場合に、最初に、そのブロック用にディスク領域を割り当てるとともに、それへのポインタを、関連するoノード構造に入れることが必要となることを意味する。
第2の側面は、第1の側面を基礎とするものであって、データブロックを割り当てないことに加えて、oノード構造も作成しないことを伴う。この側面を実施するために、各oノードポインタは、それが指すoノードが割り当てられているか否かを示すためのビットを有する。割り当てられていない場合は、そのoノードが有効であることがオペレーションで必要となったときにのみ、そのときにディスク領域がそれに割り当てられて、正しいポインタが挿入される。このようにして、膨大なゼロ充填オブジェクトは、ルートoノードのみ有することが可能であり、これによって、非常に迅速に作成され得ることは明らかである。
ほんの一例として、ルートノード、およびルートノードから参照される次のレベルのノードに格納されるタイプの情報の表現を、以下に示している(注釈は下線を付して括弧内に示している)。
ファイルのルートノードの実例:
onode/ccache: onode -o 16392
onode/ccache: Read 1024 bytes from sector 0x38b560 (Byte Offset 0x716ac000)
onode/ccache:
onode/ccache: ActiveRootNode
onode/ccache: AsciiDescriptor : RONA
onode/ccache: SanityDWord0 : WFS1 (valid)
onode/ccache: ObjectNumber : 0x4008 (Type: OBJ_TYPE_FSOBJECT_FILE)
onode/ccache: Checkpoint : 0x123ab (本オブジェクトが直近で変更されたときのチェックポイント番号)
onode/ccache: ReuseCount : 0x123ab
onode/ccache: WriteCount : 0x3
onode/ccache: IndirectionCount : 2
onode/ccache: ResiliencyMode : None
onode/ccache: DataLength : 1 MB (1048576 B)
onode/ccache: FreeRootOnodePtr : 0x0 (unused)
onode/ccache: SavedRootOnodePtr: 0x0 (unused)
onode/ccache: BlockPtr[00] : 0x38d0c8 (Checkpoint: 0x123ab) (チェックポイント0x123abで書き込まれたデータブロックへのポインタ)
onode/ccache: BlockPtr[01] : (Checkpoint: 0x123ab) (ZeroFill) (Sparse)
onode/ccache: BlockPtr[02] : (Checkpoint: 0x123ab) (ZeroFill) (Sparse)
onode/ccache: BlockPtr[03] : (Checkpoint: 0x123ab) (ZeroFill) (Sparse)
onode/ccache: BlockPtr[04] : (Checkpoint: 0x123ab) (ZeroFill) (Sparse)
onode/ccache: BlockPtr[05] : (Checkpoint: 0x123ab) (ZeroFill) (Sparse)
onode/ccache: BlockPtr[06] : (Checkpoint: 0x123ab) (ZeroFill) (Sparse)
onode/ccache: BlockPtr[07] : (Checkpoint: 0x123ab) (ZeroFill) (Sparse)
onode/ccache: BlockPtr[08] : (Checkpoint: 0x123ab) (ZeroFill) (Sparse)
onode/ccache: BlockPtr[09] : (Checkpoint: 0x123ab) (ZeroFill) (Sparse)
onode/ccache: BlockPtr[10] : (Checkpoint: 0x123ab) (ZeroFill) (Sparse)
onode/ccache: BlockPtr[11] : (Checkpoint: 0x123ab) (ZeroFill) (Sparse)
onode/ccache: BlockPtr[12] : (Checkpoint: 0x123ab) (ZeroFill) (Sparse)
onode/ccache: BlockPtr[13] : (Checkpoint: 0x123ab) (ZeroFill) (Sparse)
onode/ccache: BlockPtr[14] : (Checkpoint: 0x123ab) (ZeroFill) (Sparse)
onode/ccache: BlockPtr[15] : (Checkpoint: 0x123ab) (ZeroFill) (Sparse)
onode/ccache: LeafOnodePtr : 0x38b5c0 (Checkpoint: 0x123ab) (残りのデータブロックを指す追加のoノードツリー)
onode/ccache: Format TimeStamp : 0x5034155431d149c3
onode/ccache: WfsEnode
onode/ccache: <Enode contains file's attributes - snipped>
onode/ccache:
onode/ccache: Cloned Checkpoint: 0x0 (本オブジェクトが他のオブジェクトのクローンである場合は、Cloned Checkpointは非ゼロである)
onode/ccache: Reserved[1] : 0x0
onode/ccache: Reserved[2] : 0x0
onode/ccache: BlockCount : 0x100 (sparse blocks)
onode/ccache: CreationChkpoint : 0x123ab (本オブジェクトが作成されたチェックポイント)
onode/ccache: Crc32 : 0xcbe306ba (valid)
onode/ccache: SanityDWord1 : WFS2 (valid)
oノードツリーにおける次のレベルの実例:
onode/ccache: onode -s 0x38b5c0
onode/ccache: Read 1024 bytes from sector 0x38b5c0 (Byte Offset 0x716b8000)
onode/ccache: Leaf Onode:
onode/ccache: IndirectOnode
onode/ccache: AsciiDescriptor : IONA
onode/ccache: SanityDWord0 : WFS1 (valid)
onode/ccache: ObjectNumber : 0x4008 (Type: OBJ_TYPE_FSOBJECT_FILE)
onode/ccache: Checkpoint : 0x123ab (本ノードが書き込まれたときのチェックポイントであり、これは、本ノードを指すポインタにおけるチェックポイントフィールドと一致していなければならず、それは、本例では、上記ルートoノードからのリーフoノードポインタである)
onode/ccache: ReuseCount : 0x123ab
onode/ccache: WriteCount : 0x3
onode/ccache: ResiliencyMode : None
onode/ccache: ObjectPtr[00] : 0x38b5b8 (Checkpoint: 0x123ab) (ツリーの第1の次の分岐へのポインタ)
onode/ccache: ObjectPtr[01] : 0x38b5c8 (Checkpoint: 0x123ab) (ツリーの第2の次の分岐へのポインタ)
onode/ccache: ObjectPtr[02] : 0x38b5d0 (Checkpoint: 0x123ab) (ツリーの第3の次の分岐へのポインタ)
onode/ccache: ObjectPtr[03] : 0x38b5d8 (Checkpoint: 0x123ab) (ツリーの第4の次の分岐へのポインタ)
onode/ccache: Reserved[0] : 0x0
onode/ccache: Reserved[1] : 0x0
onode/ccache: Reserved[2] : 0x0
onode/ccache: Crc32 : 0x25972e2f (valid)
onode/ccache: SanityDWord1 : WFS2(valid)
[重複排除検出/インデキシング・エンジン]
本発明の実施形態が、特定の重複排除検出/インデキシング・エンジンに限定されることはないものの、いくつかの例示的な実施形態では、重複排除検出/インデキシング・エンジン213は、マサチューセッツ州ケンブリッジのPermabit Technology社からライセンスされるALBIREO(登録商標)データ最適化ソフトウェアとして知られる市販のソフトウェア製品(以下、「エンジン」と呼ぶ)であり、これは、プリコンパイル済みの共有ライブラリと実行ファイルとして提供されて、ソフトウェアベースのシステム210に統合される。
エンジンは、2つのタイプのインデキシング、すなわち、疎インデキシングとデフォルト・インデキシングをサポートしている。インデキシングは、チャンクのSHA−256ハッシュに基づくものである。どちらのインデックスタイプも、インデキシングされたチャンクごとに4バイトのインメモリ・エントリと、さらに、チャンクに関する情報がエンジンに提示されるものとして(かつ提示される順序で)記録されるオンディスク・データ構造と、を使用する。このオンディスク・データ構造は、各チャンクに関するアプリケーション固有の情報(以下、「チャンク・メタデータ」と呼び、より詳細は後述する)を保存するために使用される。いくつかの例示的な実施形態において、疎インデキシングが用いられるのは、一般的にはそのような時間局所性が好ましいと考えられるものの、重複排除のためにチャンクが必ずしも時間的順序で(すなわち、チャンクが実際に変更された順序で)処理されないバックグラウンド重複排除プロセスでは、疎インデキシングが好ましい場合があるためである。(必ずしもそうではないが)好ましくは、オンディスク・データ構造は、それが関連しているファイルシステム内に保存され、これにより、EVSおよびファイルシステムの移行時の両方において、オンディスク・データ構造を、ファイルシステムと共に自動的に移動させることが可能である。
[チェックポイントに基づく重複排除]
極めて上位のレベルでは、重複排除プロセスは、重複排除の候補となるチャンクを特定することと、特定の候補チャンクが、ファイルシステム内の別のチャンクの重複であるかどうか判断することと、候補チャンク(ひいては、重複データ)が保存される必要がないように、重複チャンクを、その別のチャンクへの参照で置き換えることと、を伴う。また、保存されるデータ量をさらに削減するように、同じくその別のチャンクの重複である他の候補チャンクも、その別のチャンクへの参照で置き換えることができる。
本発明のいくつかの例示的な実施形態では、バックグラウンド重複排除プロセスを管理するため、さらに、重複排除の候補となるチャンクの特定およびそのようなチャンクの処理に関する処理の複雑さを低減するために、ファイルシステム・チェックポイント機構を利用する。
いくつかの実施形態においてチェックポイントを利用する1つの方法は、ソフトウェアベースの重複排除マネージャにより、重複排除をバックグラウンド機能として、連続した重複排除サイクルで実行することであり、この場合、重複排除サイクルは、(スケジュールされるか、所定数のブロックが変更された後もしくは所定数のチェックポイントが取得された後などの一定の条件下で実施されるか、または手動で開始されることができる)様々な時点で実行され、また、各サイクルは、所定の範囲の必ずしも連続していないチェックポイント番号をカバーする。例示的な一実施形態では、各チェックポイントで、前のチェックポイントから変更されたブロック数を追跡および累積し、そして、最後の重複排除サイクル以降にファイルシステムにおいて変更されたブロック数を用いて、重複排除サイクルを開始させる時点を決定する。重複排除がライブファイルシステムから所定量で遅れている(例えば、重複排除された最後のチェックポイント範囲以降に、所定数を超えるブロックが変更された)と、ソフトウェアベースの重複排除マネージャが判断する場合には、ソフトウェアベースの重複排除マネージャは、ライブファイルシステムに「追い付く」ために、いくつかのチェックポイント範囲の重複排除を省略することができる。また、チェックポイント番号は、ソフトウェアベースの重複排除マネージャによって、候補チャンクの検出のために必要な処理量を削減するために用いられるとともに、ハードウェアベースのファイルシステム・マネージャによって、重複排除のためのマッチを検証するのに必要な処理量を削減するため、さらには、重複チャンクの実際の重複排除を実行するために用いられる。チェックポイントの使用についてはより詳細に後述する。
例示的な重複排除プロセスについての以下の説明では、各チャンクは、単一のファイルシステムブロックを包含すると仮定し、よって、この例示的な実施形態では、「チャンク」と「ブロック」という用語は、基本的に区別なく使用され得る。より一般的な、各チャンクが複数のファイルシステムブロックを包含し得る実施形態についての考察は、後述する。
いくつかの例示的な実施形態において、ソフトウェアベースの重複排除マネージャ212は、図4に概略的に示すように3つのiステージに分けられた「パイプライン」アーキテクチャを用いる。この場合、ソフトウェアベースの重複排除マネージャ212は、「変更ブロック検出」ステージ402と、「重複排除アドバイス取得」ステージ404と、「チャンク重複排除」ステージ406と、を含む。この例示的な実施形態では、各ステージは、単一スレッドから非同期要求を発行する。
図5は、本発明のいくつかの例示的な実施形態による重複排除についての概略論理フロー図である。
一般的には、バックグラウンド機能として、ソフトウェアベースの重複排除マネージャ212は、ブロック502で、ファイルシステムのスナップショットを取得し、ブロック504で、重複排除のためのチェックポイント範囲を決定する。チェックポイント範囲は、基本チェックポイント番号(「チェックポイント・ロー」と呼ばれる)と、上チェックポイント番号(「チェックポイント・ハイ」と呼ばれる)と、を含み、チェックポイント・ハイは、一般的には、スナップショットに関連付けられたチェックポイント番号であり、チェックポイント・ローは、直前の重複排除の反復のチェックポイント・ハイの値と同じであってもそうでなくてもよい所定の過去のチェックポイントである。(後述のように、複数のファイルシステムの重複排除をサポートすることを可能にする)ファイルシステム識別子と、その重複排除サイクルを開始すべきオブジェクト番号と、単一ジョブでチェックすべきオブジェクト数と、基本チェックポイント番号(チェックポイント・ロー)と、上チェックポイント番号(チェックポイント・ハイ)と、を含むジョブが、「変更ブロック検出」キューに送られる。
ソフトウェアベースの重複排除マネージャ212の変更ブロック検出スレッドプール/プロセス402により、ブロック506において、所定のチェックポイント範囲内で変更されたチャンク、ひいては重複排除の候補であるチャンクを特定するために、ファイルシステムの「スナップショット」コピーを処理する。候補チャンクを特定するための例示的なプロセスについては後述する。
候補チャンクが見つかった場合(ブロック508でYES)は、変更ブロック検出ステージ402で、候補チャンクに関する関連情報(例えば、そのチャンクのブロックポインタおよびチェックポイント)を含むジョブを、重複排除アドバイス取得ステージ404に送る。ブロック510において、条件付きで(すなわち、後述するいくつかの制限を受けて)ストレージから候補チャンク(複数の場合もある)を読み込むとともに、ハードウェアベースのハッシュ生成器222を用いて候補チャンクのハッシュを計算するための要求を、重複排除アドバイス取得ステージ404で、インタフェース230を介してハードウェアベースのファイルシステム・マネージャ221に送る。
例えば、候補チャンクに関連付けられたファイルシステムオブジェクトが、ソフトウェアベースの重複排除マネージャ212により使用されたファイルシステムのスナップショットコピーが取得されて以降に、その候補チャンクを排除するために削除または破棄されているか、またはソフトウェアベースの重複排除マネージャ212により使用されたファイルシステムのスナップショットコピーが取得されて以降に、そのチャンクが変更されているかもしれないので、ハードウェアベースのファイルシステム・マネージャ221は、特定の候補チャンクの読み込み/ハッシュ化の前に、その候補チャンクを読み込みおよびハッシュ化すべきか否か判断する。最初の2つのケースでは、候補チャンクのハッシュ値を計算する必要はなく、これによって、処理資源が節約されるとともに、ソフトウェアベースの重複排除マネージャとハードウェアベースのファイルシステム・マネージャとの間の通信が削減される。後者のケースでは、その候補チャンクが、「スナップショット」コピーにあったときと同じチェックポイントにある場合には、ハードウェアベースのファイルシステム・マネージャ221は、上述のように、その候補チャンクのハッシュ値を計算し、そのハッシュ値および関連のチャンク・メタデータを、ソフトウェアベースの重複排除マネージャに送る。
ハードウェアベースのファイルシステム・マネージャ221が、候補チャンクを読み込み/ハッシュ化すべきと判断すると仮定すると、その場合、ハードウェアベースのファイルシステム・マネージャ221は、ハッシュ生成器222を起動して、これにより、ハッシュを生成し、そのハッシュを、候補チャンクに関連するチャンク・メタデータ(特に、オブジェクト番号、チェックポイント番号などを含む)と共に、重複排除アドバイス取得ステージ404に返送する。ソフトウェアベースの重複排除マネージャ212が、(例示的な一実施形態では32Kバイトであり得る)候補チャンク全体を要求し、ソフトウェアベースのシステム210内で(例えば、ソフトウェアベースの重複排除マネージャ212によって、または重複排除検出/インデキシング・エンジン213によって)ハッシュ化を実施していたのに対して、この機構によれば、候補チャンク全体ではなく、(例示的な一実施形態では、256ビットのハッシュ値に、最大32バイトまでのチャンク・メタデータを加えた、64バイト程度の情報である)ハッシュ値および関連するチャンク・メタデータを送ることで、ソフトウェアベースのシステム210とハードウェアベースのシステム220との間の通信が削減され、またはドウェアでハッシング関数を実行することで、ソフトウェアベースのシステム210においてマイクロプロセッサへの負荷が軽減される。
候補チャンクがハッシュ化されたと仮定すると(ブロック512でYES)、この場合、ブロック514において、重複排除アドバイス取得ステージ404で、インタフェース214を介して重複排除インデキシング/マッチング・エンジン213を呼び出し、これにより、ハッシュ値が、インデックス付きチャンクのハッシュとマッチするかどうか判断する。候補チャンクのハッシュが、インデックス付きチャンクのハッシュとマッチしない場合(ブロック516でNO)は、重複排除アドバイス取得ステージ404で、典型的には、そのハッシュ値に関してハードウェアベースのファイルシステム・マネージャ221から受信したチャンク・メタデータを保存する(すなわち、その候補チャンクが、その後の重複検出のためのインデックス付きチャンクとなる)ことによる候補チャンクのインデキシングを、重複排除検出/インデキシング・エンジン213に指示する。一方、候補チャンクのハッシュが、インデックス付きチャンクのハッシュとマッチする場合(ブロック516でYES)は、重複排除インデキシング/マッチング・エンジン213は、そのインデックス付きチャンクの保存されたチャンク・メタデータを、重複排除アドバイス取得ステージ404に返し、そしてこれによって、チャンク重複排除スレッドプール/プロセス406に対してジョブが送られる。
チャンク重複排除ステージ406で、(重複排除検出/インデキシング・エンジン213により返されたチャンク・メタデータに基づいて)インデックス付きチャンクに関連付けられたオブジェクトをロックして、そしてブロック518において、重複排除検出/インデキシング・エンジン213により返されたチャンク・メタデータに基づいて、そのマッチを検証するとともに、その候補チャンクの重複排除を条件付きで実行するための要求を、ハードウェアベースのファイルシステム・マネージャ221に送る。
候補チャンクがインデックス付きチャンクにマッチしたことが、ハードウェアベースのファイルシステム・マネージャ221に通知されると、ハードウェアベースのファイルシステム・マネージャ221は、ソフトウェアベースの重複排除マネージャ212により使用されたファイルシステムのスナップショットコピーが取得されて以降に、さらにはハッシュが生成されて以降に、重複排除する目的で、そのインデックス付きチャンクおよび/または候補チャンクが古いため使用できないように、関連する情報がライブファイルシステムにおいて変更されているかもしれないので、その候補チャンクの重複排除を実行するか否かを判断する必要がある。例えば、ソフトウェアベースの重複排除マネージャが候補チャンクを重複として特定する時点までに、その候補チャンクに関連付けられたオブジェクトは、ライブファイルシステムから削除されているかもしれず、または、その候補チャンクに関連付けられたオブジェクトは、もはやその候補チャンクがそのオブジェクトの一部ではないように破棄されているかもしれず、または、その候補チャンクは変更されているかもしれない。このように、候補チャンクのマッチは仮定的なものにすぎず、候補チャンクの重複排除を実行可能とする前に検証されなければならない。そこで、ハードウェアベースのファイルシステム・マネージャ221は、チェックポイント番号を用いて、インデックス付きチャンクと候補チャンクの両方を検証し、具体的には、インデックス付きブロックポインタの現在のチェックポイントを、インデックスからのチャンク・メタデータの中に返されたチェックポイントと比較することにより、それら2つのブロックに変更がなく、依然として使用中であり、従って重複排除に使用できることを確認する。
また、それ以外に、インデックス付きチャンクが、候補チャンクの重複排除のために使用できる場合であっても、いくつかの例示的な実施形態において、ハードウェアベースのファイルシステム・マネージャ221は、そのインデックス付きチャンクに関連付けられたブロックが、既に所定の最大回数、参照(すなわち、共有)されている場合には、候補チャンクの重複排除を実行しないことがある。よって、そのような例示的な一実施形態では、特定のブロックが参照(すなわち、共有)され得る回数に制限を課すことができる。この例示的な実施形態では、ハードウェアベースのファイルシステム・マネージャ221は、そのブロックの(後述する)参照カウントを、最大参照カウントに達したかどうか判断するためにチェックする。最大参照カウントに達しており、そのインデックス付きチャンクからのブロックを用いて候補チャンクの重複排除を実行できないことが示された場合は、ハードウェアベースのファイルシステム・マネージャ221は、チャンク重複排除ステージ406に通知する。
候補チャンクの重複排除を実行できると、ハードウェアベースのファイルシステム・マネージャ221が判断すると仮定して、その場合、ハードウェアベースのファイルシステム・マネージャ221は、特に、対応するファイルシステムオブジェクトにおける候補チャンクへの参照を、インデックス付きチャンクへの参照で置き換えるとともに、インデックス付きチャンクに関連付けられた参照カウントを増加させ、さらに、そのファイルシステムオブジェクトに必要なストレージ容量を削減するために、その候補チャンクを解放するようにマークする。
ハードウェアベースのファイルシステム・マネージャ221によって、候補チャンクの重複排除が正常に実行された場合(ブロック520でYES)は、処理すべきオブジェクトが残っていれば(ブロック526でNO)、プロセスは、基本的に、ブロック506に戻る。一方、ハードウェアベースのファイルシステム・マネージャ221により、候補チャンクの重複排除が正常に実行されず(ブロック520でNO)、より詳細は後述するように、候補チャンクの重複排除のそのような失敗が、インデックス付きチャンクが、その最大参照カウントに達したことで、候補チャンクの重複排除に使用できないことによるものであった場合(ブロック522でYES)は、ブロック524において、チャンク重複排除スレッドステージ406で、典型的には、そのハッシュ値に関してハードウェアベースのファイルシステム・マネージャ221から受信したチャンク・メタデータを保存する(すなわち、その候補チャンクが、その後の重複検出のためのインデックス付きチャンクとなる)ことによる候補チャンクのインデキシングを、重複排除検出/インデキシング・エンジン213に指示する。候補チャンクの重複排除が実行されたか否かに関わりなく、また、候補チャンクに基づいてインデックスが更新されたか否かに関わりなく、処理すべきオブジェクトが残っている場合(ブロック526でNO)は、プロセスは、基本的に、ブロック506に戻る。
[候補チャンクの特定]
上述のように、変更ブロック検出ステージ402では、ファイルシステムにおける変更を、それらの重複排除を試みるために、特定しなければならない。いくつかの例示的な実施形態において、ソフトウェアベースの重複排除マネージャ212は、変更されたオブジェクトを特定することと、そしてさらに、チェックポイント番号を用いて、そのような変更されたオブジェクト内で変更されたブロックを特定することを、間接オブジェクトについて繰り返す。図6は、例示的な一実施形態により候補チャンクを特定する場合の論理フロー図である。この場合、ブロック602において、変更ブロック検出ステージ402で、ファイルシステムオブジェクトのルートノードを調べる。そのオブジェクトの作成チェックポイントが、チェックポイント範囲内にある場合(ブロック604でYES)は、そのオブジェクトが(後述する)クローンオブジェクトでなければ、そのファイルシステムオブジェクトに関連付けられた全てのブロックは、そのチェックポイント範囲内で変更されていることになり、従って、そのファイルシステムオブジェクトの全てのブロックは、(オプションとして、後述する例を除いて)典型的には、候補チャンクとみなされる。
そのファイルシステムオブジェクトがクローンオブジェクトである場合(ブロック606でYES)は、元のオブジェクト(すなわち、このオブジェクトのクローン元のオブジェクト)から分岐した、ファイルシステムオブジェクトのブロックのみが候補チャンクとみなされ、従って、ブロック608において、変更ブロック検出ステージ402で、元のオブジェクトから分岐した候補ブロックをいずれも特定するために、オブジェクトツリーを「探索」(すなわち、トラバース)する。そのような分岐したブロックは、オブジェクトルートノードに保存されているオブジェクトのクローニング時のチェックポイント番号よりも、大きいチェックポイント番号を有することになる。
そのファイルシステムオブジェクトがクローンオブジェクトではないが(ブロック606でNO)、そのオブジェクトが疎なオブジェクトである場合(ブロック610でYES)には、そのオブジェクトの全てのブロック(それらのブロックのうち一部は未割り当てであり得る)を候補チャンクとして扱うのではなく、ソフトウェアベースの重複排除マネージャ212は、オプションとして、ブロック612において、割り当ておよび書き込みされているブロックのみを見つけるために、オブジェクトツリーを「探索」し、そのようなブロックを候補チャンクとして扱うことができる。
そのオブジェクトの作成チェックポイントがチェックポイントウィンドウ内にあって、かつそのオブジェクトはクローンではなく、かつ(疎なオブジェクトが上記のように処理される実施形態において)そのオブジェクトが疎ではない場合には、変更ブロック検出ステージ402で、ブロック614において、そのオブジェクトのすべてのブロックを候補チャンクとして扱う。
そのオブジェクトの作成チェックポイントが、チェックポイント範囲の下限よりも小さい場合(ブロック604でNO)は、ブロック616において、変更ブロック検出スレッドプール/プロセス402で、チェックポイント範囲内で変更された候補ブロックをいずれも特定するために、オブジェクトツリーを「探索」する。
追加的または代替的に、いくつかの代替的実施形態において、ハードウェアベースのファイルシステム・マネージャ221は、変更されたオブジェクトのリストおよび/または変更されたブロックのリストを維持することができ、そして、変更ブロック検出ステージ402で、所与のチェックポイント範囲内でのファイルシステムにおける変更を特定するために、そのようなリスト(複数の場合もある)を使用することができる。
[データパッキング]
いくつかの例示的な実施形態において、ストレージ空間を節約するために、システムは、一般的に行われているように各データセグメントを別個のブロックに保存するのではなく、同じファイルシステムオブジェクトからの、または異なるファイルシステムオブジェクトからの、複数のデータセグメント(例えば、フルブロックよりも小さい、oノードおよび/またはユーザデータセグメント)を単一のブロックにパックすることを可能にすることができる。例えば、所定数までのoノードを単一のブロックに保存することができ、または、複数のデータセグメントを(複数のファイルシステムオブジェクトに関連付けられたデータであっても)単一のブロックに保存することができる。
例えば、データセグメントのためにブロック全体が要求および取得されるのではなく、データセグメントのためにストレージ空間が要求される場合、システムは、そのデータセグメント用に1つ以上のセクタを要求および取得することができ、その場合、セクタは、必ずしもブロック境界の最初にあるとは限らず、既存の部分充填されたブロックから割り当てることができ、よって、複数のデータセグメントで単一のブロックを共有することができる。それらのセクタは、データセグメントのタイプによっては(例えば、リーフoノードは、固定サイズである)、固定サイズの増分ずつ割り当てることができ、または、他のタイプのデータセグメント(例えば、可変サイズのユーザデータセグメント)に対しては、可変サイズの増分ずつ割り当てることができる。このようなパックされたブロックは、実質的に、複数のエンティティによって共有(すなわち、参照)されており、重複排除の結果としてブロックが複数のエンティティによって共有(すなわち、参照)され得るのと同様に、このようなパックされたブロックは、そのブロックに含まれる全てのデータセグメントが削除されるまでは、削除することができない。従って、重複排除によるブロックの共有と同様に、システムは、例えば、より詳細は後述する重複排除に用いられるのと同じ参照カウント機構を用いて、そのようなパックされたブロックに関連付けられた参照の数を追跡することが可能でなければならない。ブロックにデータセグメントが追加されるときには、参照カウントがインクリメントされ、ブロックからデータセグメントが削除されるときには、参照カウントがデクリメントされる。
いくつかの具体的な例示的実施形態では、ルートoノードを処理するいくつかのユーティリティ(例えば、「fixfs」ユーティリティ)の修正を回避するために、ルートoノードは、パックされることなく、個別のブロックに保存されることになるが、一方、固定サイズのリーフoノードおよび可変サイズのデータブロックはパックすることができる。データブロックのパッキングに関して、所与のデータセグメントを保存するのに十分な空間が、既存の部分充填されたブロックにない場合には、そのデータセグメントの一部を既存の部分充填されたブロックに保存して、データセグメントの残り部分を新しいブロックに保存するのではなく、一般的には、そのデータセグメントは、新しいブロックに保存されることになるが、一部の実施形態では、データセグメントのそのような「分割」を許可する場合がある。
なお、パックされたブロックは、本明細書で解説するように、他のデータブロックの重複排除と同様にして重複排除され得るということに留意すべきである。
[ブロック参照カウント]
上述のように、重複排除と、さらにデータパッキングによって、ブロックは2つ以上のエンティティにより参照(共有)されることがある。従って、各ブロックへの参照を追跡するための機構が必要となる。典型的には、参照は、参照カウントを用いて追跡され、参照カウントがゼロに達しない限り(すなわち、ブロックを参照する最後のエンティティが削除されるまでは)、ブロックを削除することはできない。
本発明は、各ブロックの参照カウントを追跡するための、いずれかの特定の機構に限定されることはないものの、いくつかの実施形態では、参照カウントは、各ブロックに関連付けられた複数のビットを有するビットマップを用いて追跡される。いくつかの例示的な実施形態では、ビットマップは、既存の空き領域ビットマップ(FSB)の修正版であり、ブロックのステータス(例えば、ブロックごとに2ビットを要する、オリジナルのFSBにおける「使用中」と「空き」)だけではなく参照カウントも追跡するために使用される。便宜上、そのようなビットマップを、本明細書では「参照カウントビットマップ」または「RCB」と呼ぶ。例えば、RCBは、ブロックごとに4ビットまたは8ビットを含むことができ、それらは、ブロックのステータス(例えば、「使用中」と「空き」)および参照カウントを表すように符号化される。以下は、ブロックごとに8ビットを用いる1つの例示的な符号化方式にすぎないが、これによって、重複排除と、ブロックごとに最大8個までのルートoノードによるルートoノード・パッキングの両方が可能となる。
− 値=0:ブロックは未割り当てである
− 値=[1,239(0xEF)]:通常のブロックまたはスナップショット・ブロックの参照カウント
− 値=[240(0xF0),247(0xF7)]:パックされたブロックの参照カウント(参照カウント1〜8)
− 値=248(0xF8)〜255(0xFF):未使用/予備
あるいは、各ブロックの参照カウントを追跡するために、別個のビットマップまたは他のデータ構造を用いることができる。
[拡張重複排除]
いくつかの例示的な実施形態では、(例えば、インデックス付きチャンクに関連付けられたオリジナルのオブジェクトが削除または破棄されていることによって)インデックス付きチャンクが、もはや、そのオリジナルのオブジェクトに関連付けられていない場合に、重複排除のプロセスを放棄する必要はない。その代わりに、ファイルシステムごとに、インデキシングされたチャンク内のブロック(複数の場合もある)の連結リストを格納する別個のデータ構造を維持することができる。このデータ構造は、ファイルシステムごとのウェルノウン・オブジェクト内に保持することができる。上述のように、重複排除検出/インデキシング・エンジン213によって重複が検出された場合は、このデータ構造を用いて、インデックス付きチャンクに関連付けられたブロック(複数の場合もある)を見つけることができ、そしてこれを調べることで、そのブロックを候補チャンクの重複排除に使用可能かどうか(例えば、そのブロックの内容が変更されていないこと)を判断することができる。候補チャンクの重複排除のためにインデックス付きチャンクを使用する場合は、各ブロックに関連付けられた参照カウントがインクリメントされ、ブロックは、その後、それを参照しているものがなくならない限り、解放されることはできない。
[多層ファイルシステムにおける重複排除処理]
いくつかの例示的な実施形態では、ファイルシステムは、例えば、その全体が参照により本明細書に組み込まれる米国特許出願第13/043837号(2337/128)に記載されているような多層ファイルシステム(MTFS)とすることができる。MTFSでは、より高速なストレージ(メタデータ層)にファイルシステム・メタデータを配置することにより性能を向上させることができる。
好ましくは、重複排除では、ユーザオブジェクトが、メタデータ層のファイルシステム・メタデータに使用されるブロックを共有することは許可されず、もしこれが許可されると、そのブロックがファイルシステムのメタデータの一部ではなくなった後であっても、ユーザオブジェクトがメタデータ層のそのブロックに留まり得る可能性があるからである。
一般的に、メタデータがユーザデータ層のブロックを共有することは、許容され得るということに留意すべきである。
[耐障害性オブジェクトの処理]
いくつかの例示的な実施形態では、いわゆる「耐障害性」オブジェクトをサポートすることができ、この場合、耐障害性オブジェクトとは、そのオブジェクトの2つの完全なコピーが保存されているファイルシステムオブジェクトである。そのような耐障害性オブジェクトは、重複排除され得るものの、いずれかのブロックを2つのコピーで共有する(これによって、オブジェクトの耐障害性が基本的に取り除かれることになる)ようにして重複排除されてはならない。従って、耐障害性オブジェクトを重複排除する場合、システムは、2つのコピーがディスク上の同じデータを指すことにならないことを保証する。
[NVRAM留保]
いくつかの例示的な実施形態において、重複排除の際に実行される変更オペレーションはいずれも、NVRAMにログ記録されない。これは、クラッシュした場合に、その後のロールバックによって、最後のチェックポイントの後でファイルシステムにおいて実施された全ての重複排除が取り消されることを意味する。
[複数のファイルシステムの重複排除]
複数のファイルシステムの重複排除は、例えば、複数のファイルシステムに単一のインデックスを用いる、またはファイルシステムごとに別個のインデックスを用いるなど、様々な方法で処理することができる。いくつかの例示的な実施形態では、後者のアプローチを用いる。
[スナップショット復元ファイル]
いくつかの例示的な実施形態において、オブジェクトのスナップショットコピーは、ライブファイルシステムにおいて新しいオブジェクト番号を割り当てるとともに、そのオブジェクトのoノードツリーおよびブロックポインタをスナップショットのファイルと共有させることによって、復元することができる。各共有ブロックは、その参照カウントをインクリメントされることが必要となる。その最大参照カウントに達しているブロックがある場合、そのブロックのコピーを作成して、そのコピーブロックを指すようにライブオブジェクトが更新されることになる。この新しいオブジェクトが、ライブファイルシステム・ディレクトリツリーに挿入されて、必要であれば、オリジナルとスナップショット復元オブジェクトの両方を共存させることが可能となる。そのオブジェクトがスナップショット復元されたことを示すためのフラグを、ルートoノードに含むことができる。ライブオブジェクトの変更は、必要に応じて共有ブロックの参照カウントをインクリメントしつつ、可能とすることができる。
[別のチャンクサイズでの重複排除]
上述の例示的な実施形態では、各チャンクは、所与のファイルシステムオブジェクトの単一のブロックを包含し、これにより、実施上の観点から、重複排除におけるいくつかの単純化が得られたが、それらは、各チャンクが複数のブロック(例えば、チャンクごとに4個または8個のブロック)を包含する代替的実施形態についての以下の説明から明らかになるであろう。
重複排除検出/インデキシング・エンジンは、基本的に、割り当てられた所与の容量のメモリに対して固定数のチャンクのインデキシングが可能であるので、チャンクサイズがより大きければ、より大きな量のデータのインデキシングが可能となるが、チャンクサイズがより大きいことによって、いくつかの状況において、重複の検出の可能性が低減し得る(例えば、4Kチャンクのデータのマッチングの可能性は、一般的に、256Kチャンクのデータのマッチングよりも高くなり得る)。
チャンクごとに複数のブロックを有する、いくつかの例示的な実施形態では、オブジェクトは、所定の方式に従ってチャンクに分割される。例えば、オブジェクトは、Nブロックのチャンクに順次分割されることができ、例えば、ブロック1〜N、ブロック(N+1)〜2N、などである。
そのような複数ブロックのチャンクを上記の重複排除方式に統合するためには、各チャンクにチェックポイント番号が割り当てられなければならない。いくつかの例示的な実施形態では、チャンクのチェックポイント番号は、最も高いチェックポイント番号を有するブロックのチェックポイント番号である。
また、複数ブロックのチャンクの重複排除の場合は、候補チャンクに関連付けられたオブジェクトは、その候補チャンクの全てのブロックへの参照を、インデックス付きチャンクからの対応する参照で置き換えるように、更新されなければならない。ブロック参照カウントは、一般的には、(チャンクごとではなく)ブロックごとに処理されることになり、最大参照カウントに達していないブロックのみが共有され得る。
[代替的重複排除管理]
上述の例示的な実施形態では、重複排除は、変更されたチャンクの検出と重複チャンクの重複排除の両方が、バックグラウンド機能として実行される。しかしながら、本発明者らは、他のタイプの重複排除管理が可能であることを認識している。例えば、1つの代替例では、重複排除は、チャンクが変更されるときの書き込み過程と同期して実施することができ、その場合、書き込みが生じると、それらのチャンクは、重複排除検出/インデキシング・エンジンによってハッシュ化および処理されて、もし重複が検出された場合には、その重複排除が、書き込みオペレーションの一部として実行される。このような同期重複排除によって、書き込み過程に待ち時間が導入されることになり、ファイルシステムの性能にマイナスの影響を及ぼし得る。別の代替例では、重複排除は、「ハイブリッド」同期/非同期方式で実施することができ、この場合、書き込みが生じると、それらのチャンクは、(上記の同期ソリューションの場合と同様に)重複排除検出/インデキシング・エンジンによってハッシュ化および処理され、一方で、それらのチャンク自体は、(完全バックグラウンド重複排除プロセスの場合と同様に)ストレージに書き込まれ、もし重複が検出された場合には、その重複排除が、後にバックグラウンドで実行される。
[ハッシュ生成器の代替的使用]
本発明のいくつかの実施形態では、重複排除に加えて、またはそれに代えて、ハッシュベースの他の機能のために、例えば、IPsec、SMB2署名、HCP外部移行、またはその他の、SHA−256ハッシュを利用する機能のためなどに、ソフトウェアベースのシステムによって、さらに/またはハードウェアベースのシステムによって、ハッシュ生成器222を起動することができるように、ハードウェアベースのシステム220が構成される。
[その他の諸事項]
上記では、重複排除およびデータパッキング機能について説明している。これらの機構は相互排他的、すなわち、いくつかの実施形態では、重複排除は実施され得るが、データパッキングは実施されず、他のいくつかの実施形態では、データパッキングは実施され得るが、重複排除は実施されない、と考えられるべきものであるが、さらに他の実施形態では、重複排除とデータパッキングの両方が実施され得る。重複排除とデータパッキングの両方に使用できる参照カウント機構(例えば、参照カウントビットマップ、または他の機構)が、例示的な実施形態において実現されることによって、例えば、一方または両方の機能の後の追加が可能となることが好ましい。
上記では、例示的な実施形態について、ソフトウェアベースのシステム210に統合される市販の重複排除検出/インデキシング・エンジンを参照して説明しているが、様々な代替的実施形態によって、重複排除検出/インデキシング・エンジンは、ソフトウェアベースの重複排除マネージャの一部として、またはハードウェアベースのファイルシステム・マネージャの一部として、実装できることに留意すべきである。重複排除検出/インデキシング・エンジンが、ハードウェアベースのファイルシステム・マネージャの一部として実装される場合は、ハードウェアベースのファイルシステム・マネージャは、典型的には、候補チャンクのハッシュ値が生成された後に、そのハッシュ値をソフトウェアベースの重複排除マネージャに渡すことなく、重複排除検出/インデキシング・エンジンを起動することになる。
図面において、2つ以上のエンティティに関わる通信、送信、またはその他のアクティビティを表すために、矢印が使用される場合があることに留意すべきである。両方向矢印は、一般に、双方向に発生し得るアクティビティ(例えば、一方向のコマンド/要求と、逆方向に戻される対応する応答、または、どちらかのエンティティによって開始されるピアツーピア通信)を示しているが、状況によっては、アクティビティが必ずしも双方向に発生しないことがある。単方向矢印は、一般に、専ら一方向または主として一方向のアクティビティを示しているが、ただし状況によっては、そのような方向性のあるアクティビティは、実際には双方向のアクティビティ(例えば、送信側から受信側へのメッセージと、受信側から送信側へ戻される確認応答、または、送信前の接続の確立、および送信後の接続の終了)を伴い得るということに留意すべきである。従って、特定の図面で特定のアクティビティを表すために使用される矢印の種類は、例示的なものであって、限定するものとみなされるべきではない。
留意すべきことは、上記では、便宜上、見出しを使用しているが、それらは、決して本発明を限定するものと解釈されるべきではないということである。
留意すべきことは、「クライアント」および「サーバ」といった用語が、本明細書において、本発明のいくつかの実施形態で使用され得るデバイスを記述するために用いられることがあるが、これらは、文脈上別段の解釈を要する場合を除き、本発明をいずれかの特定のデバイスタイプに限定するものと解釈されるべきではないということである。従って、デバイスとして、限定するものではないが、ノード、サーバ、コンピュータ、アプライアンス、または他のタイプのデバイス、を含むことができる。そのようなデバイスは、一般に、通信ネットワークを介して通信するための1つ以上のネットワークインタフェースと、デバイスの機能をそれにより実行するように構成されたプロセッサ(例えば、メモリおよび他の周辺機器を備えたマイクロプロセッサ、および/または専用ハードウェア)と、を備える。一般に、通信ネットワークとして、パブリックネットワークおよび/またはプライベートネットワークを含むことができ、それには、ローカルエリアネットワーク、広域ネットワーク、メトロポリタンエリアネットワーク、ストレージネットワーク、および/または他のタイプのネットワークを含むことができ、また、通信技術として、アナログ技術、デジタル技術、光技術、ワイヤレス技術(例えば、ブルートゥース)、ネットワーキング技術、インターネットワーキング技術などを採用することができるが、ただし、決してこれらに限定されない。
さらに、留意すべきことは、デバイスは、通信プロトコルおよびメッセージ(例えば、デバイスによって作成、送信、受信、保存、および/または処理されるメッセージ)を用いることができ、そのようなメッセージは、通信ネットワークまたは通信媒体によって送信され得るということである。本発明は、文脈上別段の解釈を要する場合を除き、いずれかの特定の通信メッセージタイプ、通信メッセージフォーマット、または通信プロトコルに限定されるものと解釈されるべきではない。従って、一般に、通信メッセージとして、限定するものではないが、フレーム、パケット、データグラム、ユーザデータグラム、セル、または他のタイプの通信メッセージを含むことができる。文脈上別段の解釈を要する場合を除き、特定の通信プロトコルへの言及は例示的なものであり、理解されるべきことは、代替的実施形態では、適宜、そのような通信プロトコルの変形版(例えば、随時、策定され得るプロトコルの改良版もしくは拡張版)、または、周知の、もしくは将来開発される他のプロトコルを採用することができるということである。
また、留意すべきことは、本明細書では、本発明の種々の態様を明らかにするために、論理フローが記載されることがあるが、これらは、本発明をいずれかの特定の論理フローまたは論理実装に限定するものと解釈されるべきではないということである。記載されるロジックは、全体的な結果を変えることなく、あるいは本発明の真の範囲から逸脱することなく、いくつかの異なる論理ブロック(例えば、プログラム、モジュール、関数、またはサブルーチン)に分割することができる。論理要素は、全体的な結果を変えることなく、あるいは本発明の真の範囲から逸脱することなく、しばしば、追加、変更、省略され得るとともに、異なる順序で実行されることができ、または、いくつかの異なる論理構成体(例えば、論理ゲート、ルーピングプリミティブ、条件付きロジック、およびその他の論理構成体)を用いて実装され得る。
上述の例示的な実施形態は、プロセッサ(例えば、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ、または汎用コンピュータ)と共に用いられるコンピュータプログラムロジックと、ハードウェアベースのロジックと、その両方を備える。ハードウェアベースのロジックとして、プログラマブルロジックデバイス(例えば、フィールドプログラマブルゲートアレイ(FPGA)、または他のPLD)と共に用いられるプログラマブルロジック、ディスクリート部品、集積回路(例えば、特定用途向け集積回路(ASIC))、またはこれらの任意の組合せを含む他のいずれかの手段、を含むことができる。記載した機能の一部または全てを実現するコンピュータプログラムロジックは、一般に、コンピュータプログラム命令のセットとして実装されて、コンピュータ実行形式に変換され、コンピュータ読取り可能な媒体などに保存されて、オペレーティングシステムの制御の下でマイクロプロセッサにより実行される。記載した機能の一部または全てを実現するハードウェアベースのロジックは、1つ以上の適切に構成されたFPGAを用いて実装することができる。
本明細書で前述した機能の全てまたは一部を実現するコンピュータプログラムロジックは、様々な形式で具現化することができ、それには、ソースコード形式、コンピュータ実行形式、各種中間形式(例えば、アセンブラ、コンパイラ、リンカ、またはロケータにより生成される形式)が含まれるが、ただし、決してこれらに限定されない。ソースコードは、様々なオペレーティングシステムまたはオペレーティング環境で使用される各種プログラミング言語(例えば、オブジェクトコード、アセンブリ言語、または、フォートラン、C、C++、JAVA、もしくはHTMLなどの高級言語)のいずれかで実現される一連のコンピュータプログラム命令を含むことができる。ソースコードで、各種データ構造および通信メッセージを定義および使用することができる。ソースコードは、(例えば、インタプリタによって)コンピュータ実行可能な形式とすることができ、またはソースコードは、コンピュータ実行可能な形式に(例えば、トランスレータ、アセンブラ、またはコンパイラによって)変換することができる。
本明細書で前述した機能の全てまたは一部を実現するコンピュータプログラムロジックは、単一のプロセッサで、時をずらして(例えば、並行して)実行することができ、または複数のプロセッサで、同時に、もしくは時をずらして実行することができ、さらに、単一のオペレーティングシステムプロセス/スレッドで、またはいくつかの異なるオペレーティングシステムプロセス/スレッドで、実行することができる。従って、「コンピュータプロセス」という用語は、いくつかの異なるコンピュータプロセスが同じもしくは異なるプロセッサ上で実行されるかどうかに関わりなく、また、いくつかの異なるコンピュータプロセスが同じオペレーティングシステムプロセス/スレッドもしくは異なるオペレーティングシステムプロセス/スレッドで実行されるかどうかに関わりなく、一般的に、コンピュータプログラム命令のセットの実行を指す。
コンピュータプログラムは、半導体メモリデバイス(例えば、RAM、ROM、PROM、EEPROM、またはフラッシュプログラマブルRAM)、磁気メモリデバイス(例えば、ディスケット、または固定ディスク)、光メモリデバイス(例えば、CD−ROM)、PCカード(例えば、PCMCIAカード)、または他のメモリデバイスなど、有形の記憶媒体内に、永久的または一時的に、任意の形式(例えば、ソースコード形式、コンピュータ実行形式、または中間形式)で、保持することができる。コンピュータプログラムは、各種通信技術のいずれかを用いてコンピュータに送信可能な信号において、任意の形式で保持することができ、そのような通信技術には、アナログ技術、デジタル技術、光技術、ワイヤレス技術(例えば、ブルートゥース)、ネットワーキング技術、インターネットワーキング技術が含まれるが、ただし、決してこれらに限定されない。コンピュータプログラムは、印刷もしくは電子ドキュメントが添付されたリムーバブル記憶媒体(例えば、市販ソフトウェア)として任意の形式で配布されることができ、またはコンピュータシステムで(例えば、システムROM、もしくは固定ディスクに)プリロードされることができ、またはサーバもしくは電子掲示板から通信システム(例えば、インターネット、もしくはワールドワイドウェブ)を介して配布されることができる。
本明細書で前述した機能の全てまたは一部を実現するハードウェアロジック(プログラマブルロジックデバイスと共に用いられるプログラマブルロジックを含む)は、伝統的な手作業による方法を用いて設計することができ、またはコンピュータ支援設計(CAD)、ハードウェア記述言語(例えば、VHDL、またはAHDL)、もしくはPLDプログラミング言語(例えば、PALASM、ABEL、またはCUPL)などの各種ツールを使用して、設計、キャプチャ、シミュレーション、もしくは電子ドキュメント化することができる。
プログラマブルロジックは、半導体メモリデバイス(例えば、RAM、ROM、PROM、EEPROM、またはフラッシュプログラマブルRAM)、磁気メモリデバイス(例えば、ディスケット、または固定ディスク)、光メモリデバイス(例えば、CD−ROM)、または他のメモリデバイスなど、有形の記憶媒体内に、永久的または一時的に保持することができる。プログラマブルロジックは、各種通信技術のいずれかを用いてコンピュータに送信可能な信号に保持することができ、そのような通信技術には、アナログ技術、デジタル技術、光技術、ワイヤレス技術(例えば、ブルートゥース)、ネットワーキング技術、インターネットワーキング技術が含まれるが、ただし、決してこれらに限定されない。プログラマブルロジックは、印刷もしくは電子ドキュメントが添付されたリムーバブル記憶媒体(例えば、市販ソフトウェア)として配布されることができ、またはコンピュータシステムで(例えば、システムROM、もしくは固定ディスクに)プリロードされることができ、またはサーバもしくは電子掲示板から通信システム(例えば、インターネット、もしくはワールドワイドウェブ)を介して配布されることができる。当然のことながら、本発明は、一部の実施形態では、ソフトウェア(例えば、コンピュータプログラム・プロダクト)とハードウェアの両方の組み合わせとして実装することができる。本発明は、さらに別の実施形態では、全体がハードウェアとして、または全体がソフトウェアとして、実装される。
本発明は、発明の真の範囲から逸脱することなく、他の具体的な形態で実施することができ、また、本明細書の教示に基づいて、数多くの変形および変更が、当業者には明らかであろう。「発明」についての言及は、本発明の例示的な実施形態について述べるものであり、文脈上別段の解釈を要する場合を除き、本発明のあらゆる実施形態について言及しているものと解釈されるべきではない。記載した実施形態は、あらゆる点において、単なる例示であって、限定するものではないと考えられるべきものである。
オブジェクトルートノードが対応している実際のデータのために、オブジェクトルートノードは、対応するオブジェクトに関連付けられたデータの各ブロックへの個別のポインタを有する。一般に、最大16個までのデータブロックへのポインタが、オブジェクトルートノードに保存される。16個のブロックを超えるデータのためには、1つ以上の間接ノードおよび/または直接ノードが、オブジェクトツリーにおいて必要になるとともに、各種ノードにリンクするための適切なポインタが、必要に応じて、各ノードに保存される。そのようなポインタは、対応するデータブロックまたはノードに関連付けられたディスク上のブロックのセクタ番号を記憶している。
上述のように、直接ノードは、ディスク上のデータブロックへの直接ポインタを提供する。例示的な一実施形態において、直接ノードには、以下の情報が保存される。
・ チェックポイント番号。
・ 複数のデータブロック記述子(例えば、最大60個までの、そのような記述子)。各データブロック記述子は、データブロックへのポインタと、チェックポイント番号と、そのブロックがゼロ充填されるかどうかを示すビットと、を含む。
直接ノードの妥当性チェックを可能とするためのCRCおよび各種サニティ・ダブルワード。

Claims (23)

  1. ライブファイルシステムが稼働しているファイルストレージシステムにおいてデータの重複排除を実行する方法であって、前記ファイルストレージシステムは、ソフトウェアベースのシステムとハードウェアベースのシステムとを有し、前記ソフトウェアベースのシステムは、重複排除検出/インデキシング・エンジンとインタフェースするように構成されたソフトウェアベースの重複排除マネージャを含み、前記ハードウェアベースのシステムは、ハードウェアベースのファイルシステム・マネージャとハッシュ生成器とを含み、前記ライブファイルシステムは、一連のチェックポイントによって区切られるものであり、当該方法は、
    前記ソフトウェアベースの重複排除マネージャにより、前記ファイルシステムのスナップショットコピーを作成することと、
    前記ソフトウェアベースの重複排除マネージャにより、重複排除のためのチェックポイント範囲を決定することと、
    前記ソフトウェアベースの重複排除マネージャにより、前記チェックポイント範囲に基づいて、前記スナップショットコピーにおいて候補チャンクを特定することと、
    前記ソフトウェアベースの重複排除マネージャにより、前記ハードウェアベースのファイルシステム・マネージャに対して、前記ハッシュ生成器を用いた前記候補チャンクのハッシュ化を要求すること、および前記ハードウェアベースのファイルシステム・マネージャにより、前記ソフトウェアベースの重複排除マネージャに対して、前記候補チャンクのハッシュ値およびチャンク・メタデータを返すことと、
    前記ソフトウェアベースの重複排除マネージャにより、前記重複排除検出/インデキシング・エンジンに対して、前記候補チャンクの前記ハッシュ値を送ること、および前記候補チャンクがインデックス付きチャンクとマッチした場合に、前記ソフトウェアベースの重複排除マネージャにより、前記重複排除検出/インデキシング・エンジンから、該インデックス付きチャンクのチャンク・メタデータを受信することと、
    前記ソフトウェアベースの重複排除マネージャにより、前記ハードウェアベースのファイルシステム・マネージャに対して、前記インデックス付きチャンクの前記チャンク・メタデータに基づいた前記候補チャンクの重複排除を要求することと、
    前記ハードウェアベースのファイルシステム・マネージャにより、前記チャンク・メタデータに基づいて、前記ライブファイルシステムにおいて前記インデックス付きチャンクを用いた前記候補チャンクの重複排除が可能かどうか検証することと、
    前記ライブファイルシステムにおいて前記インデックス付きチャンクを用いた前記候補チャンクの重複排除が可能であると判断される場合に、前記候補チャンクに関連付けられたポインタの各々を、前記インデックス付きチャンクに関連付けられた対応するポインタで置き換えることと、を含む方法。
  2. 前記候補チャンクは、所与のファイルシステムオブジェクトからの単一のファイルシステムブロックを包含する、請求項1に記載の方法。
  3. 前記候補チャンクは、所与のファイルシステムオブジェクトからの複数のファイルシステムブロックを包含する、請求項1に記載の方法。
  4. 前記ライブファイルシステムにおいて前記候補チャンクの重複排除が可能かどうか検証することは、前記候補チャンクに関連付けられたチェックポイント番号および前記インデックス付きチャンクに関連付けられたチェックポイント番号に少なくとも部分的に基づいている、請求項1に記載の方法。
  5. 前記ライブファイルシステムにおいて前記候補チャンクの重複排除が可能かどうか検証することは、前記インデックス付きチャンクのブロックに関連付けられた参照カウントに少なくとも部分的に基づいている、請求項1に記載の方法。
  6. 前記候補チャンクに関連付けられたポインタの各々を、前記インデックス付きチャンクに関連付けられた対応するポインタで置き換えることは、対応する各ポインタに関連付けられた参照カウントを増加させることを含む、請求項1に記載の方法。
  7. 前記チェックポイント範囲に基づいて前記スナップショットコピーにおいて候補チャンクを特定することは、
    ファイルシステムオブジェクトのルートノード内の作成チェックポイントを調べることと、
    前記作成チェックポイントに少なくとも部分的に基づいて、前記ファイルシステムオブジェクトがいずれかの候補チャンクを含むかどうか判断することと、を含む、請求項1に記載の方法。
  8. 前記ファイルシステムオブジェクトがいずれかの候補チャンクを含むかどうか判断することは、
    前記作成チェックポイントが前記チェックポイント範囲内にあって、かつ前記ファイルシステムオブジェクトがクローンオブジェクトではない場合に、前記ファイルシステムオブジェクトに関連付けられたチャンクはすべて候補チャンクであると判断することと、
    前記作成チェックポイントが前記チェックポイント範囲内にあって、かつ前記ファイルシステムオブジェクトがクローンオブジェクトである場合に、前記ファイルシステムオブジェクトのクローン元のオブジェクトから分岐したチャンクをいずれも特定するために、オブジェクトツリー構造をトラバースすることと、
    前記作成チェックポイントが前記チェックポイント範囲外にある場合に、前記チェックポイント範囲内にある変更チェックポイントを持つチャンクをいずれも特定するために、オブジェクトツリー構造をトラバースすることと、を含む、請求項7に記載の方法。
  9. 前記ファイルシステムオブジェクトがいずれかの候補チャンクを含むかどうか判断することは、
    前記作成チェックポイントが前記チェックポイント範囲内にあって、かつ前記ファイルシステムオブジェクトがクローンオブジェクトではなく、かつ前記ファイルシステムオブジェクトが疎なオブジェクトではない場合に、前記ファイルシステムオブジェクトに関連付けられたチャンクはすべて候補チャンクであると判断することと、
    前記作成チェックポイントが前記チェックポイント範囲内にあって、かつ前記ファイルシステムオブジェクトがクローンオブジェクトではなく、かつ前記ファイルシステムオブジェクトが疎なオブジェクトである場合に、疎ではない候補チャンクをいずれも特定するためにオブジェクトツリー構造をトラバースすることと、
    前記作成チェックポイントが前記チェックポイント範囲内にあって、かつ前記ファイルシステムオブジェクトがクローンオブジェクトである場合に、前記ファイルシステムオブジェクトのクローン元のオブジェクトから分岐した候補チャンクをいずれも特定するためにオブジェクトツリー構造をトラバースすることと、
    前記作成チェックポイントが前記チェックポイント範囲外にある場合に、前記チェックポイント範囲内にある変更チェックポイントを持つ候補チャンクをいずれも特定するためにオブジェクトツリー構造をトラバースすることと、を含む、請求項7に記載の方法。
  10. 重複排除のために前記インデックス付きチャンクを使用できないと判断される場合に、前記候補チャンクに関連付けられた前記ハッシュ値および前記チャンク・メタデータに基づいて、前記候補チャンクをインデキシングすることをさらに含む、請求項1に記載に記載の方法。
  11. 一連のチェックポイントで区切られるライブファイルシステムが稼働しているファイルストレージシステムであって、当該ファイルストレージシステムは、
    重複排除検出/インデキシング・エンジンとインタフェースするように構成されたソフトウェアベースの重複排除マネージャを含むソフトウェアベースのシステムと、
    ハードウェアベースのファイルシステム・マネージャおよびハッシュ生成器を含むハードウェアベースのシステムと、を備え、
    前記ソフトウェアベースの重複排除マネージャは、(1)前記ファイルシステムのスナップショットコピーを作成し、(2)重複排除のためのチェックポイント範囲を決定し、(3)前記チェックポイント範囲に基づいて、前記スナップショットコピーにおいて候補チャンクを特定し、(4)前記ハードウェアベースのファイルシステム・マネージャによる前記ハッシュ生成器を用いた前記候補チャンクのハッシュ化を要求し、前記ハードウェアベースのファイルシステム・マネージャにより該ソフトウェアベースの重複排除マネージャに対して前記候補チャンクのハッシュ値およびチャンク・メタデータが返され、(5)前記重複排除検出/インデキシング・エンジンに対して前記候補チャンクの前記ハッシュ値を送り、前記候補チャンクがインデックス付きチャンクとマッチした場合に前記重複排除検出/インデキシング・エンジンから該インデックス付きチャンクのチャンク・メタデータを受信し、(6)前記ハードウェアベースのファイルシステム・マネージャによる前記インデックス付きチャンクの前記チャンク・メタデータに基づいた前記候補チャンクの重複排除を要求する、ように構成されており、
    前記ハードウェアベースのファイルシステム・マネージャは、(1)前記チャンク・メタデータに基づいて、前記ライブファイルシステムにおいて前記インデックス付きチャンクを用いた前記候補チャンクの重複排除が可能かどうか検証し、(2)前記ライブファイルシステムにおいて前記インデックス付きチャンクを用いた前記候補チャンクの重複排除が可能であると判断される場合に、前記候補チャンクに関連付けられたポインタの各々を、前記インデックス付きチャンクに関連付けられた対応するポインタで置き換える、ように構成されている、ファイルストレージシステム。
  12. 前記候補チャンクは、所与のファイルシステムオブジェクトからの単一のファイルシステムブロックを包含する、請求項11に記載のファイルストレージシステム。
  13. 前記候補チャンクは、所与のファイルシステムオブジェクトからの複数のファイルシステムブロックを包含する、請求項11に記載のファイルストレージシステム。
  14. 前記ライブファイルシステムにおいて前記候補チャンクの重複排除が可能かどうか検証することは、前記候補チャンクに関連付けられたチェックポイント番号および前記インデックス付きチャンクに関連付けられたチェックポイント番号に少なくとも部分的に基づいている、請求項11に記載のファイルストレージシステム。
  15. 前記ライブファイルシステムにおいて前記候補チャンクの重複排除が可能かどうか検証することは、前記インデックス付きチャンクのブロックに関連付けられた参照カウントに少なくとも部分的に基づいており、前記参照カウントは、前記ハードウェアベースのファイルシステム・マネージャにより維持される、請求項11に記載のファイルストレージシステム。
  16. 前記候補チャンクに関連付けられたポインタの各々を、前記インデックス付きチャンクに関連付けられた対応するポインタで置き換えることは、対応する各ポインタに関連付けられた参照カウントを増加させることを含む、請求項11に記載のファイルストレージシステム。
  17. 前記チェックポイント範囲に基づいて前記スナップショットコピーにおいて候補チャンクを特定することは、
    ファイルシステムオブジェクトのルートノード内の作成チェックポイントを調べることと、
    前記作成チェックポイントに少なくとも部分的に基づいて、前記ファイルシステムオブジェクトがいずれかの候補チャンクを含むかどうか判断することと、を含む、請求項11に記載のファイルストレージシステム。
  18. 前記ファイルシステムオブジェクトがいずれかの候補チャンクを含むかどうか判断することは、
    前記作成チェックポイントが前記チェックポイント範囲内にあって、かつ前記ファイルシステムオブジェクトがクローンオブジェクトではない場合に、前記ファイルシステムオブジェクトに関連付けられたチャンクはすべて候補チャンクであると判断することと、
    前記作成チェックポイントが前記チェックポイント範囲内にあって、かつ前記ファイルシステムオブジェクトがクローンオブジェクトである場合に、前記ファイルシステムオブジェクトのクローン元のオブジェクトから分岐したチャンクをいずれも特定するために、オブジェクトツリー構造をトラバースすることと、
    前記作成チェックポイントが前記チェックポイント範囲外にある場合に、前記チェックポイント範囲内にある変更チェックポイントを持つチャンクをいずれも特定するために、オブジェクトツリー構造をトラバースすることと、を含む、請求項17に記載のファイルストレージシステム。
  19. 前記ファイルシステムオブジェクトがいずれかの候補チャンクを含むかどうか判断することは、
    前記作成チェックポイントが前記チェックポイント範囲内にあって、かつ前記ファイルシステムオブジェクトがクローンオブジェクトではなく、かつ前記ファイルシステムオブジェクトが疎なオブジェクトではない場合に、前記ファイルシステムオブジェクトに関連付けられたチャンクはすべて候補チャンクであると判断することと、
    前記作成チェックポイントが前記チェックポイント範囲内にあって、かつ前記ファイルシステムオブジェクトがクローンオブジェクトではなく、かつ前記ファイルシステムオブジェクトが疎なオブジェクトである場合に、疎ではない候補チャンクをいずれも特定するためにオブジェクトツリー構造をトラバースすることと、
    前記作成チェックポイントが前記チェックポイント範囲内にあって、かつ前記ファイルシステムオブジェクトがクローンオブジェクトである場合に、前記ファイルシステムオブジェクトのクローン元のオブジェクトから分岐した候補チャンクをいずれも特定するためにオブジェクトツリー構造をトラバースすることと、
    前記作成チェックポイントが前記チェックポイント範囲外にある場合に、前記チェックポイント範囲内にある変更チェックポイントを持つ候補チャンクをいずれも特定するためにオブジェクトツリー構造をトラバースすることと、を含む、請求項17に記載のファイルストレージシステム。
  20. 重複排除のために前記インデックス付きチャンクを使用できないと判断される場合に、前記重複排除検出/インデキシング・エンジンによって、前記候補チャンクを、前記候補チャンクに関連付けられた前記ハッシュ値および前記チャンク・メタデータに基づいてインデキシングする、請求項11に記載のファイルストレージシステム。
  21. 一連のチェックポイントで区切られるライブファイルシステムが稼働しているファイルストレージシステムにおいてデータの重複排除を実行するためのコンピュータプログラムが具現化された有形の非一時的コンピュータ読取り可能な媒体を備える装置であって、前記コンピュータプログラムが前記ファイルストレージシステムのコンピュータプロセッサ上で実行されることで、
    前記ファイルシステムのスナップショットコピーを作成すること、
    重複排除のためのチェックポイント範囲を決定すること、
    前記チェックポイント範囲に基づいて、前記スナップショットコピーにおける候補チャンクを特定すること、
    ハードウェアベースのファイルシステム・マネージャに対して前記候補チャンクのハッシュ化の要求を送信すること、
    前記ハードウェアベースのファイルシステム・マネージャから前記候補チャンクのハッシュ値およびチャンク・メタデータを受信すること、
    前記ハッシュ値に基づいて、前記候補チャンクがインデックス付きチャンクの重複であるかどうか判断すること、
    前記候補チャンクがインデックス付きチャンクの重複であると判断される場合に、前記候補チャンクの重複排除のための要求であって、該インデックス付きチャンクのチャンク・メタデータを含む要求を、前記ハードウェアベースのファイルシステム・マネージャに対して送信すること、
    を含んだプロセスを前記コンピュータプロセッサに実行させるための命令を、前記コンピュータプログラムが含んでいる、
    装置。
  22. 一連のチェックポイントで区切られるライブファイルシステムが稼働しているファイルストレージシステムにおいてデータの重複排除を実行するための装置であって、当該装置は、
    ハッシュ生成器と、
    ハードウェアベースのファイルシステム・マネージャであって、候補チャンクのハッシュ化の要求をソフトウェアベースの重複排除マネージャから受信し、前記候補チャンクに関連付けられたチェックポイント番号に基づいて前記候補チャンクをハッシュ化すべきかどうか判断し、前記候補チャンクをハッシュ化すべきと判断される場合には、前記チャンクをハッシュ化するために前記ハッシュ生成器を起動し、前記候補チャンクのハッシュ値およびチャンク・メタデータを前記ソフトウェアベースの重複排除マネージャに返し、候補チャンクの重複排除の要求を前記ソフトウェアベースの重複排除マネージャから受信し、前記ライブファイルシステムにおいてインデックス付きチャンクに基づいた前記候補チャンクの重複排除が可能かどうか検証し、前記ライブファイルシステムにおいて前記インデックス付きチャンクを用いた前記候補チャンクの重複排除が可能であると判断される場合に、前記候補チャンクに関連付けられたポインタの各々を、前記インデックス付きチャンクに関連付けられた対応するポインタで置き換える、ように構成されたハードウェアベースのファイルシステム・マネージャと、を備える、装置。
  23. 複数のファイルシステムオブジェクトを含むライブファイルシステムを有するファイルストレージシステムにおいて重複排除のための候補チャンクを特定する方法であって、前記ライブファイルシステムは、一連のチェックポイントで区切られるものであり、前記重複排除は、所定のチェックポイント範囲に関するものであり、当該方法は、
    ファイルシステムオブジェクトのルートノード内の作成チェックポイントを調べることと、
    前記作成チェックポイントに少なくとも部分的に基づいて前記ファイルシステムオブジェクトがいずれかの候補チャンクを含むかどうか判断することと、を含み、前記ファイルシステムオブジェクトがいずれかの候補チャンクを含むかどうか判断することは、
    前記作成チェックポイントが前記チェックポイント範囲内にあって、かつ前記ファイルシステムオブジェクトがクローンオブジェクトではなく、かつ前記ファイルシステムオブジェクトが疎なオブジェクトではない場合に、前記ファイルシステムオブジェクトに関連付けられたチャンクはすべて候補チャンクであると判断することと、
    前記作成チェックポイントが前記チェックポイント範囲内にあって、かつ前記ファイルシステムオブジェクトがクローンオブジェクトではなく、かつ前記ファイルシステムオブジェクトが疎なオブジェクトである場合に、疎ではない候補チャンクをいずれも特定するためにオブジェクトツリー構造をトラバースすることと、
    前記作成チェックポイントが前記チェックポイント範囲内にあって、かつ前記ファイルシステムオブジェクトがクローンオブジェクトである場合に、前記ファイルシステムオブジェクトのクローン元のオブジェクトから分岐した候補チャンクをいずれも特定するためにオブジェクトツリー構造をトラバースすることと、
    前記作成チェックポイントが前記チェックポイント範囲外にある場合に、前記チェックポイント範囲内にある変更チェックポイントを持つ候補チャンクをいずれも特定するためにオブジェクトツリー構造をトラバースすることと、を含む、方法。
JP2015533024A 2012-09-19 2012-09-19 ファイルストレージシステムにおけるチェックポイントを用いて重複排除を管理するシステムおよび方法 Active JP5925968B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2012/056032 WO2014046650A1 (en) 2012-09-19 2012-09-19 System and method for managing deduplication using checkpoints in a file storage system

Publications (2)

Publication Number Publication Date
JP2015534684A true JP2015534684A (ja) 2015-12-03
JP5925968B2 JP5925968B2 (ja) 2016-05-25

Family

ID=50341791

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015533024A Active JP5925968B2 (ja) 2012-09-19 2012-09-19 ファイルストレージシステムにおけるチェックポイントを用いて重複排除を管理するシステムおよび方法

Country Status (5)

Country Link
US (2) US10176189B2 (ja)
EP (1) EP2898424B8 (ja)
JP (1) JP5925968B2 (ja)
CN (1) CN104641365B (ja)
WO (1) WO2014046650A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018532166A (ja) * 2016-09-28 2018-11-01 華為技術有限公司Huawei Technologies Co.,Ltd. 記憶システムにおける重複排除のための方法、記憶システムおよびコントローラ
JP2020536342A (ja) * 2017-10-05 2020-12-10 ザダラ ストレージ インコーポレイテッド スナップショットのコピーオンライトのデータ移動を回避するインフラストラクチャとしての重複除外

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10496490B2 (en) 2013-05-16 2019-12-03 Hewlett Packard Enterprise Development Lp Selecting a store for deduplicated data
US10592347B2 (en) * 2013-05-16 2020-03-17 Hewlett Packard Enterprise Development Lp Selecting a store for deduplicated data
US20140372717A1 (en) * 2013-06-18 2014-12-18 Microsoft Corporation Fast and Secure Virtual Machine Memory Checkpointing
US10223208B2 (en) * 2013-08-13 2019-03-05 Sandisk Technologies Llc Annotated atomic write
US9772789B1 (en) * 2014-03-25 2017-09-26 EMC IP Holding Company LLC Alignment fixing on a data protection system during continuous data replication to deduplicated storage
US10027547B1 (en) * 2014-03-28 2018-07-17 EMC IP Holding Company LLC Autonomic self-optimization of protection storage
US10198321B1 (en) * 2014-04-01 2019-02-05 Storone Ltd. System and method for continuous data protection
CN105446964B (zh) * 2014-05-30 2019-04-26 国际商业机器公司 用于文件的重复数据删除的方法及装置
US10318194B2 (en) 2014-10-02 2019-06-11 Hitachi Vantara Corporation Method and an apparatus, and related computer-program products, for managing access request in multi-tenancy environments
KR101960339B1 (ko) * 2014-10-21 2019-03-20 삼성에스디에스 주식회사 파일 동기화 방법
US10061834B1 (en) * 2014-10-31 2018-08-28 Amazon Technologies, Inc. Incremental out-of-place updates for datasets in data stores
US9830342B2 (en) 2014-11-20 2017-11-28 International Business Machines Corporation Optimizing database deduplication
US10248623B1 (en) * 2015-03-30 2019-04-02 EMC IP Holding Company LLC Data deduplication techniques
US9612749B2 (en) * 2015-05-19 2017-04-04 Vmware, Inc. Opportunistic asynchronous deduplication using an in-memory cache
CN105094924B (zh) * 2015-08-21 2018-06-26 华为技术有限公司 镜像文件的导入方法及装置
US9703643B2 (en) * 2015-11-25 2017-07-11 International Business Machines Corporation Calculation of representative values for similarity units in deduplication of snapshots data
US10585611B2 (en) * 2016-04-26 2020-03-10 Netapp Inc. Inline deduplication
WO2018075042A1 (en) * 2016-10-20 2018-04-26 Hitachi, Ltd. Data storage system, process, and computer program for de-duplication of distributed data in a scalable cluster system
US11644992B2 (en) * 2016-11-23 2023-05-09 Samsung Electronics Co., Ltd. Storage system performing data deduplication, method of operating storage system, and method of operating data processing system
CN110603517B (zh) * 2017-06-08 2023-07-25 日立数据管理有限公司 对分布的经过擦除编码的对象去复制
US10521400B1 (en) * 2017-07-31 2019-12-31 EMC IP Holding Company LLC Data reduction reporting in storage systems
US11755759B2 (en) * 2017-08-10 2023-09-12 Shardsecure, Inc. Method for securing data utilizing microshard™ fragmentation
US10776256B2 (en) * 2018-05-16 2020-09-15 International Business Machines Corporation Sharing consumed off-heap for parallel data loading
CN109522291B (zh) * 2018-11-29 2022-06-21 郑州云海信息技术有限公司 一种迁移文件系统的方法、装置以及计算机可读存储介质
US20200311030A1 (en) * 2019-03-28 2020-10-01 EMC IP Holding Company LLC Optimizing file system defrag for deduplicated block storage
US11429573B2 (en) * 2019-10-16 2022-08-30 Dell Products L.P. Data deduplication system
CN111078276B (zh) * 2019-12-20 2022-12-30 抖音视界有限公司 应用程序的冗余资源处理方法、装置、设备及存储介质
CN111104206B (zh) * 2019-12-25 2023-09-01 曙光信息产业(北京)有限公司 虚拟机存储迁移方法、装置和计算机设备
US11468012B2 (en) * 2020-02-28 2022-10-11 EMC IP Holding Company LLC Garbage collection assisted deduplication in a log structured file system
US11093442B1 (en) * 2020-03-25 2021-08-17 EMC IP Holding Company LLC Non-disruptive and efficient migration of data across cloud providers
US11321278B2 (en) * 2020-04-29 2022-05-03 Rubrik, Inc. Light-weight index deduplication and hierarchical snapshot replication
CN111639008B (zh) * 2020-05-29 2023-08-25 杭州海康威视系统技术有限公司 基于双端口ssd的文件系统状态监测方法、装置及电子设备
US11537526B2 (en) * 2020-09-10 2022-12-27 Micron Technology, Inc. Translating of logical address to determine first and second portions of physical address
US11385817B2 (en) 2020-09-22 2022-07-12 Vmware, Inc. Supporting deduplication in object storage using subset hashes
US11500819B2 (en) 2020-09-22 2022-11-15 Vmware, Inc. Supporting deduplication in file storage using file chunk hashes
CN115033525B (zh) * 2021-03-05 2023-06-09 荣耀终端有限公司 文件系统管理方法及电子设备
CN113721861B (zh) * 2021-11-01 2022-02-08 深圳市杉岩数据技术有限公司 基于定长块的数据存储实现方法和计算机可读存储介质
WO2023244491A1 (en) * 2022-06-16 2023-12-21 Oracle International Corporation Techniques for replication checkpointing during disaster recovery

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006505069A (ja) * 2002-11-01 2006-02-09 ブルアーク ユーケー リミテッド ハードウェアベースのファイルシステムのための装置および方法
WO2010100733A1 (ja) * 2009-03-05 2010-09-10 日立ソフトウエアエンジニアリング株式会社 統合重複排除システム、データ格納装置、及びサーバ装置
US20110178996A1 (en) * 2009-12-16 2011-07-21 Renew Data Corp. System and method for creating a de-duplicated data set

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5220974B2 (ja) 1999-10-14 2013-06-26 ブルアーク ユーケー リミテッド ハードウェア実行又はオペレーティングシステム機能の加速のための装置及び方法
US8041735B1 (en) 2002-11-01 2011-10-18 Bluearc Uk Limited Distributed file system and method
US8165221B2 (en) * 2006-04-28 2012-04-24 Netapp, Inc. System and method for sampling based elimination of duplicate data
US7921077B2 (en) * 2006-06-29 2011-04-05 Netapp, Inc. System and method for managing data deduplication of storage systems utilizing persistent consistency point images
US8762345B2 (en) * 2007-05-31 2014-06-24 Netapp, Inc. System and method for accelerating anchor point detection
US9767120B2 (en) * 2008-01-16 2017-09-19 Hitachi Data Systems Engineering UK Limited Multi-way checkpoints in a data storage system
US8190835B1 (en) * 2007-12-31 2012-05-29 Emc Corporation Global de-duplication in shared architectures
US20090193210A1 (en) * 2008-01-29 2009-07-30 Hewett Jeffrey R System for Automatic Legal Discovery Management and Data Collection
US8117464B1 (en) * 2008-04-30 2012-02-14 Netapp, Inc. Sub-volume level security for deduplicated data
US9063947B2 (en) * 2008-08-18 2015-06-23 Hewlett-Packard Development Company, L.P. Detecting duplicative hierarchical sets of files
WO2010045262A1 (en) * 2008-10-14 2010-04-22 Wanova Technologies, Ltd. Storage-network de-duplication
US9009429B2 (en) * 2009-03-30 2015-04-14 Hewlett-Packard Development Company, L.P. Deduplication of data stored in a copy volume
US8205065B2 (en) * 2009-03-30 2012-06-19 Exar Corporation System and method for data deduplication
US8095756B1 (en) * 2009-04-28 2012-01-10 Netapp, Inc. System and method for coordinating deduplication operations and backup operations of a storage volume
JP2012531674A (ja) * 2009-06-26 2012-12-10 シンプリヴィティ・コーポレーション ノンユニフォームアクセスメモリにおけるスケーラブルなインデックス付け
US8032498B1 (en) * 2009-06-29 2011-10-04 Emc Corporation Delegated reference count base file versioning
US8171063B1 (en) * 2009-06-30 2012-05-01 Symantec Corporation System and method for efficiently locating and processing data on a deduplication storage system
US8234250B1 (en) * 2009-09-17 2012-07-31 Netapp. Inc. Processing data of a file using multiple threads during a deduplication gathering phase
US8595188B2 (en) 2009-11-06 2013-11-26 International Business Machines Corporation Operating system and file system independent incremental data backup
US9239843B2 (en) * 2009-12-15 2016-01-19 Symantec Corporation Scalable de-duplication for storage systems
US8407193B2 (en) 2010-01-27 2013-03-26 International Business Machines Corporation Data deduplication for streaming sequential data storage applications
US8843459B1 (en) 2010-03-09 2014-09-23 Hitachi Data Systems Engineering UK Limited Multi-tiered filesystem
US8370593B2 (en) 2010-04-14 2013-02-05 Hitachi, Ltd. Method and apparatus to manage groups for deduplication
US8898114B1 (en) * 2010-08-27 2014-11-25 Dell Software Inc. Multitier deduplication systems and methods
JP5948340B2 (ja) * 2010-11-22 2016-07-06 ヒタチ データ システムズ エンジニアリング ユーケー リミテッドHitachi Data Systems Engineering Uk Limited データストレージシステムにおける、ファイルのクローニング及びデクローニング
US8930653B1 (en) * 2011-04-18 2015-01-06 American Megatrends, Inc. Data de-duplication for information storage systems
US8782003B1 (en) * 2011-05-13 2014-07-15 Emc Corporation Synchronization of storage using log files and snapshots
CN103620591A (zh) * 2011-06-14 2014-03-05 惠普发展公司,有限责任合伙企业 分布式文件系统中的去重复
US8521705B2 (en) * 2011-07-11 2013-08-27 Dell Products L.P. Accelerated deduplication
US8832035B2 (en) * 2011-08-30 2014-09-09 Netapp, Inc. System and method for retaining deduplication in a storage object after a clone split operation
US8543609B1 (en) * 2011-09-29 2013-09-24 Emc Corporation Snapshots in deduplication
US8521704B2 (en) * 2011-09-30 2013-08-27 Symantec Corporation System and method for filesystem deduplication using variable length sharing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006505069A (ja) * 2002-11-01 2006-02-09 ブルアーク ユーケー リミテッド ハードウェアベースのファイルシステムのための装置および方法
WO2010100733A1 (ja) * 2009-03-05 2010-09-10 日立ソフトウエアエンジニアリング株式会社 統合重複排除システム、データ格納装置、及びサーバ装置
US20110178996A1 (en) * 2009-12-16 2011-07-21 Renew Data Corp. System and method for creating a de-duplicated data set

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018532166A (ja) * 2016-09-28 2018-11-01 華為技術有限公司Huawei Technologies Co.,Ltd. 記憶システムにおける重複排除のための方法、記憶システムおよびコントローラ
JP2020536342A (ja) * 2017-10-05 2020-12-10 ザダラ ストレージ インコーポレイテッド スナップショットのコピーオンライトのデータ移動を回避するインフラストラクチャとしての重複除外
JP7376488B2 (ja) 2017-10-05 2023-11-08 ザダラ ストレージ インコーポレイテッド スナップショットのコピーオンライトのデータ移動を回避するインフラストラクチャとしての重複除外

Also Published As

Publication number Publication date
EP2898424A4 (en) 2017-02-08
EP2898424B8 (en) 2019-08-21
WO2014046650A1 (en) 2014-03-27
EP2898424B1 (en) 2019-07-17
CN104641365A (zh) 2015-05-20
CN104641365B (zh) 2019-05-31
US20150234710A1 (en) 2015-08-20
US9928250B2 (en) 2018-03-27
EP2898424A1 (en) 2015-07-29
US20160162509A1 (en) 2016-06-09
US10176189B2 (en) 2019-01-08
JP5925968B2 (ja) 2016-05-25

Similar Documents

Publication Publication Date Title
JP5925968B2 (ja) ファイルストレージシステムにおけるチェックポイントを用いて重複排除を管理するシステムおよび方法
US9619160B2 (en) NVRAM data organization using self-describing entities for predictable recovery after power-loss
US9798728B2 (en) System performing data deduplication using a dense tree data structure
US10496626B2 (en) Deduplication in a highly-distributed shared topology with direct-memory-access capable interconnect
US9043540B2 (en) Systems and methods for tracking block ownership
US9798486B1 (en) Method and system for file system based replication of a deduplicated storage system
US9454532B2 (en) Method and apparatus for migration of a virtualized file system, data storage system for migration of a virtualized file system, and file server for use in a data storage system
JP5948340B2 (ja) データストレージシステムにおける、ファイルのクローニング及びデクローニング
EP3036616B1 (en) Management of extent based metadata with dense tree structures within a distributed storage architecture
US9529551B2 (en) Systems and methods for instantaneous cloning
US10198193B2 (en) Computer program product, method, apparatus and data storage system for controlling write operations in the data storage system
US11301177B2 (en) Data structure storage and data management
US11188520B2 (en) Storage tier verification checks
US8943282B1 (en) Managing snapshots in cache-based storage systems
US8620962B1 (en) Systems and methods for hierarchical reference counting via sibling trees
US20110055471A1 (en) Apparatus, system, and method for improved data deduplication
CN115668166A (zh) 由区块对象构成的文件系统
US11256720B1 (en) Hierarchical data structure having tiered probabilistic membership query filters
US10331362B1 (en) Adaptive replication for segmentation anchoring type
US20220317921A1 (en) Forwarding operations to bypass persistent memory

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160309

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160420

R150 Certificate of patent or registration of utility model

Ref document number: 5925968

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R370 Written measure of declining of transfer procedure

Free format text: JAPANESE INTERMEDIATE CODE: R370

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250