JP2018152116A - 格納されたデータにおける冗長削減 - Google Patents

格納されたデータにおける冗長削減 Download PDF

Info

Publication number
JP2018152116A
JP2018152116A JP2018099121A JP2018099121A JP2018152116A JP 2018152116 A JP2018152116 A JP 2018152116A JP 2018099121 A JP2018099121 A JP 2018099121A JP 2018099121 A JP2018099121 A JP 2018099121A JP 2018152116 A JP2018152116 A JP 2018152116A
Authority
JP
Japan
Prior art keywords
data
hash function
hash value
stored
function value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2018099121A
Other languages
English (en)
Inventor
イグノミレロ,ブライアン
Ignomirello Brian
リャン,スイホン
Suihong Liang
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.)
SYMBOLIC IO Corp
Original Assignee
SYMBOLIC IO 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
Priority claimed from US13/756,921 external-priority patent/US20140223118A1/en
Priority claimed from US13/797,093 external-priority patent/US10133636B2/en
Application filed by SYMBOLIC IO Corp filed Critical SYMBOLIC IO Corp
Publication of JP2018152116A publication Critical patent/JP2018152116A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3088Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78
    • 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/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3091Data deduplication
    • H03M7/3093Data deduplication using fixed length segments
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • 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/113Details of archiving
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/34Encoding or coding, e.g. Huffman coding or error correction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Power Engineering (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Communication Control (AREA)

Abstract

【課題】重複したデータを格納する必要性を最小限にする、方法およびシステムを提供する。
【解決手段】データを非キャッシュ記録媒体に書き込む命令を受信すると、ユーザ提供のバッファユニットに分割し、バッファユニットの各々に対し暗号化ハッシュ関数を適用し、ハッシュ値を生成する。生成したハッシュ値がハッシュ値テーブルに存在しない場合は新規データとして非キャッシュ記録媒体に書き込む。生成したハッシュ値がハッシュ値テーブルに既に存在する場合、データ比較により矛盾があるかを判定し、矛盾が無ければバッファユニットを非キャッシュ記録媒体に書き込むことなく、メディエータ上に記録する。
【選択図】図1

Description

本発明は、データの格納に関する。
21世紀は、人々および企業が生成および格納するデジタル化された情報の量において急激な増加を示してきた。この情報は、通常、ディスクなどの磁気面上に格納されている電子データから成る。これらのディスクは、サイズがサブマイクロメータで、データの個々のバイナリ断片を格納可能な、小さな領域を含む。
任意の所与の実体が格納する膨大な量のデータ内に、しばしば、情報の著しい重複がある。例えば、同じ会社のレターヘッドが何千もの文書に出現し得、そして、このデータに対応する各ファイルは、そのレターヘッダをコード化するビットを含むであろう。歴史的に、多数の実体は、この種の重複が自身のファイル内に存在すること、および同じ情報を重複して格納する非効率性は事業を行うためのコストであることを容認してきた。
記憶装置に対する費用が増加し、記憶装置の可用性が低下してきているので、実体は、ファイル間で重複した情報の全てよりは少ない情報を格納するための手段を探り始めている。理論上は、重複した情報の格納を回避するか、または重複した情報が格納される回数を最小限にしようと努める実体は、自身のデータセット内で一意のビットまたはバイトパターンを識別し、その一意のビットまたはバイトパターンを最小限の回数だけ、格納しようとし得る。これらの方法を実施するために、新しいファイルが、格納のために準備されているとき、それらのファイル内の情報が、既に格納された情報の参照セットと比較され得、検討されているビットまたはバイトパターンが一意の場合に限り、格納されるであろう。一意でない場合、冗長データは、その重複である格納されたデータを指す、データよりも小さいサイズの参照と置き換えられるであろう。
重複した情報が格納される回数を削減することの目標は:(1)冗長を検査するための十分な速度を維持すること;(2)取得のためのデータの再構成において十分な速度を維持すること;(3)冗長の検査または元のファイルに対応する情報の格納のいずれかのプロセス中に、データが失われないことを確実にすること;(4)格納された情報に対する権限のないアクセスを防ぐこと;および(5)データのスナップショットの取得、データの複製およびデータの復元の、全部ではないにしろ、1つ以上と関連して使用され得る効率的な技術および方法を提供すること、を含むが、それらに限定されない、いくつかの課題を提示する。本発明の様々な実施形態は、これらの課題の1つ以上を克服することに関する。
本発明は、冗長データが複数回、不必要に格納される程度を最小限にしながら、データを格納および取得する効率を向上させるための方法、システムおよびコンピュータプログラム製品を提供する。本発明の様々な実施形態を使用することにより、データを効率的に格納してアクセスすることができる。本発明のこれらの様々な実施形態を通して、データを変形し得、かつ/または変形もしくは変換されたデータが格納される物理装置を変更し得る。これは、実行される際に、本発明の方法またはプロセスの1つ以上を実施する、コンピュータプログラム製品を含むか、またはそれに動作可能に結合されているコンピュータを採用する自動化プロセスを通して達成され得る。これらの方法またはプロセスは、例えば、コンピュータアルゴリズムもしくはスクリプトで具現化されるか、またはそれを含み、任意選択で、1つ以上のモジュールを通して、システムによって実施され得る。
第1の実施形態によれば、本発明は、データを非キャッシュ記録媒体上に格納するための方法を対象とし、本方法は:(i)データを非キャッシュ記録媒体に書き込むための命令を受信することであって、その命令が、ユーザーが認識する論理ブロックアドレス(「LBA」)およびユーザー提供のバッファを含み、ユーザー提供のバッファが、例えば、512バイト〜2メガバイト、または512バイト〜64Kから成る、データを非キャッシュ記録媒体に書き込むための命令を受信すること;(ii)ユーザー提供のバッファをユーザー提供のバッファユニットに分割して、暗号化ハッシュ関数をユーザー提供のバッファユニットの各々に適用し、それにより、生成されたハッシュ値を生成すること;(iii)コンピュータプログラム製品にハッシュ値テーブルをアクセスさせて、生成されたハッシュ値が、ハッシュ値テーブル内の格納されたハッシュ値と重複しているかを判断させるアルゴリズムを含むコンピュータプログラム製品を起動することであって、ハッシュ値テーブルが、複数の格納されたハッシュ値の各々を異なる格納されたバッファユニットおよび本当の論理ブロックアドレスと相互に関連付けて;(A)生成されたハッシュ値がハッシュ値テーブル内にない場合は、ユーザー提供のバッファユニットを非キャッシュ記録媒体内のブロックに書き込み、ユーザー提供のバッファユニット、生成されたハッシュ値およびユーザー提供のバッファユニットが格納されている本当の論理ブロックアドレスの相関関係を含むようにハッシュ値テーブルを更新して、ユーザー提供のバッファユニットが書き込まれている位置に対応する本当の論理ブロックアドレスおよびユーザー提供のバッファに対するユーザーが認識する論理ブロックアドレス(または複数のアドレス)をメディエータ上に書き込み、(B)生成されたハッシュ値がハッシュ値テーブル内に格納されたハッシュ値と重複している場合は、矛盾があるかどうかを問い合わせ、矛盾は、同じハッシュ値が格納されたバッファユニットおよび現在のユーザー提供のバッファユニットと関連付けられていて、その2つのバッファユニットが異なる内容を有する状況として定義され、(a)矛盾がある場合は、ユーザー提供のバッファユニットを非キャッシュ記録媒体内のブロックに書き込み、格納されたバッファユニットと格納されたハッシュ値との間のハッシュ値テーブル内の関連付けを非アクティブにするか、または削除して、ユーザー提供のバッファユニット、生成されたハッシュ値およびユーザー提供のバッファユニットが格納されている本当の論理ブロックアドレスの相関関係を含むようにハッシュ値テーブルを更新して、ユーザー提供のバッファユニットが書き込まれている位置に対応する本当の論理ブロックアドレスおよびユーザーが認識する論理ブロックアドレスをメディエータ上に書き込み、(b)矛盾がない場合は、ユーザー生成のバッファユニットと同じである、非キャッシュ記録媒体上に格納されたバッファユニットの本当の論理ブロックアドレスをメディエータ上に書き込み、それを、ユーザー提供のバッファユニットを非キャッシュ記録媒体上に書き込むことなく、ユーザー提供のバッファに対してユーザーが認識する論理ブロックアドレスと相互に関連付ける、コンピュータプログラム製品を起動すること、を含む。
ステップ(A)において、ユーザー提供のバッファユニットを書き込む際に、当業者は、本方法は、テーブル内のハッシュ値と関連付けられていないと判断されているユーザー提供のバッファユニットを書き込む必要があることを理解するであろう。
しばしば、ユーザーは、ハッシュ値アルゴリズムが入力として受け入れるように構成されているユーザー提供のバッファユニットよりも大きい、ストリーム内またはユニット内のデータ(ユーザー提供のバッファ)を提供するであろう。これらの場合、ユーザー提供のバッファユニットは、ホストによって送信された生データをさらに小さいユニットにフラグメント化すること(ブレーキングとも呼ばれる)により形成され得、それは、ホストがそれらをフラグメント化するか、または本発明のシステムもしくは方法がそれを行うかどうかに関わらず、ユーザー提供のバッファユニットと見なされ得る。従って、これらのフラグメント化されたユーザー提供のバッファユニットは、暗号化ハッシュ関数に対する入力として機能し得る。限定されない例として、ユーザー提供されたデータは、16K〜2MBであり得、各フラグメント化されたユーザー提供のバッファユニットは、512バイト〜4Kまで、例えば、512バイトまたは4Kである。従って、いくつかの実施形態では、フラグメント化されたユーザー提供のバッファユニットは、フラグメンテーション前のユーザー提供のバッファサイズのわずか1/4またはわずか1/16またはわずか1/64である。フラグメンテーションのステップが、ハッシュ値アルゴリズムに入る前に使用される場合、ハッシュ値テーブルは、ユーザー提供のバッファユニットとハッシュ値の相関関係を含み得、記憶装置への書込みは、より大きなデータバッファユニットではなく、ユーザー提供のバッファユニットにフラグメント化され、メディエータが、ユーザー提供のバッファユニットのユーザーが認識するアドレス(または複数のアドレス)を複数のフラグメント化されたユーザー提供のバッファユニットと相互に関連付けるであろう。
本発明の本方法の様々なステップは、1つ以上のモジュール、例えば、バッファおよびユーザーが認識する論理ブロックアドレスの受信モジュール、フラグメンテーションモジュール、ハッシュ値検索モジュール、ハッシュ値の重複分析モジュール、矛盾モジュール、および書込みモジュール内に格納され得る。同様に、ファイルの読取りおよび再構成モジュールがあり得る。これらのモジュールは、持続性媒体内に実行可能コードの形で格納され得る。
第2の実施形態によれば、本発明は、データを格納するためのシステムを提供し、本システムは:(a)永続的メモリであって、格納されたバッファユニットを格納されたハッシュ値および本当の論理ブロックアドレスと関連付けるように構成されている、ハッシュ値テーブルを格納する、永続的メモリ;(b)持続性媒体内に格納されているコンピュータプログラム製品を含むか、またはそれに動作可能に結合されている、中央処理装置であって、コンピュータプログラム製品が、実行される際に、自動的に(i)ハッシュ値アルゴリズムを1つ以上のユーザー提供のバッファユニットの各々に適用して、生成されたハッシュ値を生成し、(ii)その生成されたハッシュ値が、格納されたバッファユニットと関連付けられているハッシュ値テーブル内の格納されたハッシュ値と重複しているかどうかを判断し、そうである場合は、矛盾が存在するかどうかを判断し(矛盾は、2つの異なるバッファユニットと関連付けられているハッシュ値として定義される)、矛盾が存在する場合は、ハッシュ値テーブルを更新して、テーブル内のハッシュ値を、格納されたバッファユニットではなく、ユーザー提供のバッファユニットと関連付けさせる、実行可能コードを含む、中央処理装置;(c)非キャッシュ記録媒体であって、ブロックレベル記憶に対して構成されている、非キャッシュ記録媒体;および(d)メディエータであって、本当の論理ブロックアドレスとユーザーが認識する論理ブロックアドレスとの相関関係を格納する、メディエータ;を含む。
第3の実施形態によれば、本発明は、コンピュータ可読プログラムを含む、持続性コンピュータ利用可能媒体を含むコンピュータプログラム製品を提供し、コンピュータ可読プログラムは、コンピュータ上で実行される際に、コンピュータに、本発明の方法のいずれかを含む、ファイルシステム内での重複排除、およびデータブロックの管理のための方法を実装させる。
ほとんどの状況で、以前に書き込まれたデータの重複である大きなバッファユニットは、非キャッシュ記録媒体(NCM)に再度書き込む必要がないので、本発明の様々な実施形態を通して、データの格納および取得の効率が向上できる。代わりに、それが指すデータを収容する記憶装置よりもサイズが小さく、物理的に別個の構造中にある、メディエータ上のポインタが、コンピュータに、そのデータの以前に格納されたコピーを指示する。効率の向上は、一般に適用される方法で使用されるよりも少ない記憶空間を使用し、情報を格納および/または取得する活動において、より少ない時間および努力を投資することにより、実現され得る。さらにいくつかの実施形態では、本発明は、文書の格納および取得における速度の向上をもたらす。従って、本発明の技術および方法は、データを格納するために要求される物理的な記憶装置の総量を削減するのに役立つ。これは、重複したデータが書き込まれて格納される回数を最小限にすることにより、また、重複するデータがある状況では、以前に格納されたデータをポイントするメディエータを使用することにより、達成される。
本発明の実施形態に従ってデータを書き込むための方法の表現である。 本発明の方法に従って矛盾を解決するためのプロトコルの表現である。 本発明の一実施形態に従って、情報を読み取るための方法の表現である。
ここで、本発明の様々な実施形態に対する参照を詳細に行うが、その例が付随する図に示されている。以下の詳細な記述では、多数の具体的詳細が、本発明の完全な理解を提供するために記載されている。しかし、別段の指示がないか、またはコンテキストから暗黙的でない限り、詳細は例であることを意図し、本発明の範囲をいかなる方法でも制限すると見なされるべきでない。
定義
別段の指示がないか、またはコンテキストから暗黙的でない限り、次の用語および句は、以下に規定する意味を有する。
用語「ビット」は、二進数字を指す。それは、2つの値のうちの1つを有することができる。各値は、0または1のいずれかによって表され得る。
用語「ブロック」は、所定の長さを有するデータのバイトまたはビットのシーケンスを指す。記録媒体上で、物理媒体は、ブロックサイズによって定義されるユニットに分割され得る。記録媒体上の各ブロックは、論理ブロックアドレスによって識別され得る。業界では、現在のところ、512バイトがブロックの標準的なサイズである。しかし、4096バイトを標準として使用する動向がある。さらに、当業者であれば理解するように、句「ブロックサイズ」および「セクターサイズ」はしばしば、当業者によって区別しないで使用される。
句「ブート可能性コード」、「ブート可能性情報」および「ブート可能性特徴」は、ブート可能状態に入るための手段を提供する情報を指し、ブートセクター上に格納され得る。ブートセクターは、ファームウェアによってRAM(ランダムアクセスメモリ)内にロードされるように構成されている機械コードを含み得、それは、その結果として、ブートプロセスがプログラムを記憶装置から、または記憶装置にロードするのを可能にする。例として、マスターブートレコードが、アクティブなパーティションを見つけて、ボリュームブートレコードを呼び出すコードを含み得、ボリュームブートレコードは、オペレーティングシステムまたは他のスタンドアロンプログラムをロードして呼び出すためのコードを含み得る。
句「バッファユニット」は、ハッシュ値アルゴリズムへの入力としての使用に対して互換性があるサイズの、一連のビットを指す。バッファユニットは、チャンクレットと同じサイズであり得る。しかし、いくつかの実施形態では、それは、チャンクレットのサイズの分数であるか、またはチャンクレットのサイズの倍数であり得る。
用語「バイト」は、8ビットのシーケンスを指す。
用語「キャッシュ」は、データに対する将来の要求がより迅速に対応されるため、またはバッファリングを目的として、データが一時的に格納される位置を指す。L1キャッシュ(レベル1キャッシュ)は、例えば、プロセッサコアと統合されている、スタティックメモリを指す。L1キャッシュは、CPU(汎用処理装置)が同じデータを複数回アセスする場合にデータアクセス速度を向上するために使用され得る。L2キャッシュ(レベル2キャッシュ)は、通常、L1キャッシュよりも大きく、データファイルが検索されたが、L1内で見つからなかった場合に、検索は、外部メモリを目指す前に、L2キャッシュで行われ得る。いくつかの実施形態では、L1キャッシュは、中央処理装置内ではない。代わりに、それは、DDR、DIMMまたはDRAM内に置かれ得る。追加または代替として、L2キャッシュは、PCI2.0/3.0の一部であり得、それは、マザーボードに入る。従って、L1キャッシュおよびL2キャッシュの各々は、マザーボードの別々の部分にあり得る。いくつかの実施形態では、本発明の方法が実装される際に、ハッシュ値テーブルは、L2キャッシュ内に常駐する。
用語「チャンクレット」は、セクタークラスタに対応し得るビットのセットを指す。チャンクレットのサイズは、記憶システムによって決定され得、チャンクレットサイズを有し得る。慣例的に、チャンクレットサイズは、CHS方式によって導出されたが、CHS方式は、シリンダー、ヘッドおよびセクターを、ハードディスク上にそれらが出現したところで定義したタプルによってブロックをアドレス指定した。ごく最近では、チャンクレットサイズは、論理ブロックアドレス(LBA)測定から導出されている。例として、チャンクレットサイズは、512B、1K、2K、4K、8K、16K、32K、64Kまたは1MBであり得る。当業者として、1K=1024Bが分かっている。チャンクレットは、生データとしてホストから受信され得る。
用語「矛盾」は、異なる入力(例えば、バッファユニット)に対する、ハッシュ値アルゴリズムなどの、関数による、同じ出力(例えば、ハッシュ値)の生成の出現を指す。
「ファイル」は、ビットまたはバイトで測定され得る長さをもつサイズのファイルを提供するために結合する関連したバイトまたはビットの集合である。ファイルは、チャンクレットよりも小さいか、チャンクレットと同じサイズか、またはチャンクレットよりも大きい可能性がある。
句「ファイル名」は、コンピュータが特定のファイルを識別して、そのファイルを他のファイルから区別できるようにする表記法またはコードを指す。
句「ファイルシステム」は、ファイルのセットを格納、取得、および更新するために使用される抽象化を指す。従って、ファイルシステムは、ファイルのデータおよびメタデータへのアクセス、ならびにデータを含む記憶装置上の利用可能な空間を管理するために使用されるツールである。いくつかのファイルシステムは、例えば、サーバー上に常駐し得る。ファイルシステムの例は、Unix(登録商標)ファイルシステムおよびその関連したディレクトリテーブルおよびiノード、Windows(登録商標) FAT16およびFAT32ファイルシステム(FATは、ファイルアロケーションテーブルを指す)、マスターファイルテーブルに基づく、Windows(登録商標) NTFS、ならびに、HFSまたはHFSプラスを使用する、Apple Mac OSXを含むが、それらに制限されない。
句「ハッシュ関数」、「暗号化ハッシュ関数」、「暗号化ハッシュ関数値アルゴリズム」、および「ハッシュ関数値アルゴリズム」は、(同じ長さまたは可変長の)大きなデータセットを、特定のハッシュ関数に対して固定長を有する、より小さいデータセットにマッピングする、アルゴリズムまたはサブルーチンを指す。「ハッシュ関数値」は、ハッシュ関数アルゴリズムの適用後に返される出力を指す。アルゴリズムが返す値は、ハッシュ値、ハッシュコード、ハッシュ合計、チェックサムまたはハッシュとも呼ばれ得る。例えば、MD5を使用する場合、出力は128ビットであり、他方、SHA−1を使用する場合、出力は160ビットである。従って、いくつかの実施形態では、ハッシュ値は32〜512ビットの長さである。
用語「ホスト」、「ユーザー」および「イニシエータ」は、区別しないで使用され得、データを格納のために、本発明のデータ記憶および取得仲介システムに送信するエンティティまたはシステムを指す。ホストは、1つ以上のタイプの文書またはファイルに対応するデータを送信して、データを受信し得る。好ましくは、任意の入力/出力(I/O)ストリーム内で、データは、単一の文書タイプのファイルに対応する。
用語「含む(including)」および「包含する(comprising)」は、制限のない方式で使用され、従って、「〜を含むが〜に制限されない」ことを意味すると解釈されるべきである。
略語「LBA」は、「論理ブロックアドレス指定(logical block addressing)」または「論理ブロックアドレス」を指す。LBAは、リニアアドレス指定方式であり、ある記憶媒体、例えば、ハードディスク、内に格納されるデータブロックの位置を指定するために使用されるシステムである。LBA方式では、ブロックは、整数によって見つけられ、1つだけの番号がデータをアドレス指定するために使用される。通常、第1のブロックはブロック0である。ユーザーは、データが特定のLBA上に格納されていると、信じ得る。データが格納されるとユーザーが認識する位置は「ユーザーが認識する論理ブロックアドレス」である。これは、データが実際に格納されている場所と異なり得る。データがNCM上に実際に格納される位置は、「本当の論理ブロックアドレス」と呼ばれ得る。
略語「LUN」は、論理ユニット番号(logical unit number)を指し、論理ユニットを識別するために使用される。LUNは、通常、SANを介して共有されるブロックストレージアレイを管理するために使用される。
用語「マネージャ」は、コンピュータプログラム製品、例えば、持続性媒体内に格納され得、かつ1つ以上の他の動作(例えば、データの受信、送信、または処理)をとらせるコードを指す。それは、ハードウェア、ソフトウェアまたはそれらの組合せ上に格納され得る。いくつかの実施形態では、マネージャは、マネージャがその意図する機能を実施するのを可能にするように構成されている、コンピュータおよび/またはシステムの一部であり得る。
用語「メディエータ」は、ハードウェア、ソフトウェアまたはそれらの組合せ上に格納され得、かつ少なくとも1つの非キャッシュ媒体内の記憶空間の1つ以上のユニットをファイル名と相互に関連付ける、コンピュータプログラム製品を指す。従って、それは、ユーザーが認識するLBAを本当のLBAと相互に関連付け得る。メディエータは、それがポイントする非キャッシュ媒体よりも数桁小さい可能性がある。例えば、メディエータは、おおよそ、通常のシリンダーのサイズの約0.2%の大きさしかない可能性がある。いくつかの実施形態では、メディエータは、コンピューティングクラウド内に存在し、一方、他の実施形態では、メディエータは、持続性有形的記録媒体内に存在する。メディエータは、データが実際には、記録媒体の異なるトラック内に出現している間に、ホストが、記録媒体のあるトラック内にあると認識する位置内のデータの、編成、翻訳、変換および格納の制御を行うことが可能であり得るか、または、全てではないにしろ、これらの機能の1つ以上に対応するマネージャに動作可能に結合され得る。さらに、メディエータは、セクターマップ、テーブル、または物理装置もしくは構造内に配置され得るデータの他の編成を含み得、従って、メディエータの内容は、物理装置もしくは構造にあるジオメトリを持たせ得る。いくつかの実施形態では、メディエータは、L2キャッシュ上に常駐する。
用語「メタデータ」は、データのコンテナに関する管理情報を指す。メタデータの例は、読み取られているファイルの長さまたはバイトカウント;ファイルが修正された最後の時間に関する情報;ファイルタイプおよびアクセス許可を記述する情報;ならびにLUN QoS、VMおよびWORMを含むが、それらに制限されない。他のタイプのメタデータは、オペレーティングシステム情報、自動初期化情報、グループ許可、および文書タイプ内のビットの頻度を含む。
略語「NCM」は、非キャッシュ記録媒体を指す。NCMの例は、ハードディスクおよびソリッドステートドライブを含むが、それらに制限されない。NCMは、例えば、100テラバイトのデータのバイトを保持するように構成され得る。NCMは、一意のバッファユニットを格納する。いくつかの実施形態では、NCMは、バッファユニットと格納されたハッシュ値の関連付けを含む、ダイジェストマップも格納する。これらの格納された関連付けは、サーバーのRAM内のハッシュ値テーブルにデータを投入するために使用され得る。RAMに、NCMの永続記憶装置からこの情報を取り込むことにより、高速ロードが達成され得る。追加または代替として、NCMは単位ブロック当たり1ビットのブットマップを格納し、それは、本発明の記憶装置節約を追跡するために使用され得る。実用性の問題として、ダイジェストマップのおよびビットマップの格納は、NCM上に格納されたデータのブロック当たり、5〜10バイトの間、例えば、8.125バイト、のわずかなオーバーヘッドを必要とする。代替として、ダイジェストマップおよびビットマップは、本発明の方法またはシステム利用の結果として書き込まれるバッファユニットを格納するのとは異なる記憶媒体上に格納され得る。
句「動作可能に結合された」は、用語「結合された」と区別しないで使用されて、システム、装置、および/またはモジュールが、互いにまたは相互に通信するように構成されて、通信時または通信した後に、それらの意図する目的を実施することが可能であることを意味する。この句および用語は、間接的、直接的、光学的、有線または無線接続を含む。従って、第1の装置が第2の装置と動作可能に結合されている場合、その接続は、直接的な電気的接続、他の装置および接続を経由した間接的な電気的接続、光学的接続、もしくは無線接続、またはそれらの組合せを通し得る。
句「オペレーティングシステム」は、コンピュータハードウェア資源を管理するソフトウェアを指す。オペレーティングシステムの例は、Microsoft Windows(登録商標)、Linux(登録商標)、およびMac OS Xを含むが、それらに制限されない。
用語「パーティション」は、記憶媒体、例えば、ディスクドライブをユニットに分割するフォーマットを指す。従って、パーティションは、ディスクパーティションとも呼ばれ得る。パーティションの例は、GUIDパーティションテーブルおよびAppleパーティションマップを含むが、それらに制限されない。
句「記録媒体」は、ビットに対応する磁気信号をその中に格納できる、持続性有形的コンピュータ可読記憶媒体を指す。例として、記録媒体は、ハードドライブ、ハードディスク、フロッピィディスク、コンピュータテープ、ROM、EEPROM、不揮発性RAM、CD−ROMおよびパンチカードなどの、NCMを含むが、それらに制限されない。
用語「セクター」は、ディスク、例えば、磁気ディスク上のトラックの下位区分を指す。各セクターは、一定量のデータを格納する。ディスクに対する一般的なセクターサイズは、512バイト(512B)、2048バイト(2048B)、および4096バイト(4K)である。チャンクレットが4Kのサイズであり、各セクターが512Bのサイズである場合、各チャンクレットは8セクターに相当する(4*1024/512=8)。セクターは、トラックを有し、プラッター上に配置される。一般に、2つまたは4つのプラッターが1つのシリンダーを構成し、255のシリンダーがハードディスクおよび媒体装置を構成する。
句「セクターマップ」は、ホストから要求を受信して、ファイルが格納されている記憶装置内の位置を相互に関連付けるツールを指す。セクターマップは、例えば、iSCSI(インターネット小規模コンピュータシステムインタフェース)プロトコルによって定義されるパラメータ下で動作し得る。本発明のいくつかの実施形態では、セクターマップは、メディエータのビットフィールド内に配置され得る。
用語「トラック」は、全てのセクターをトラバースするディスク内の円形の単位を指す。「トラックセクター」は、任意の1つのセクター内のトラックである。「トラッククラスタ」は、2つ以上のセクターに及ぶ。
好ましい実施形態
本発明は、データを非キャッシュ記録媒体上に格納するための方法、これらの方法を実施するためのコンピュータプログラム製品、およびこれらの方法を実施するように構成されているシステムを提供する。本発明の様々な実施形態を通して、重複したデータが格納される回数を減らすことにより、データを効率的に格納および取得することができる。
一実施形態によれば、本発明は、データを非キャッシュ記録媒体上に格納するための方法を提供する。いくつかの実施形態では、受信されるデータは、ユーザー定義の論理ブロックアドレス(LBA)およびユーザー提供のバッファを含むか、基本的にそれらから成るか、またはそれらから成る。ユーザー提供のバッファのサイズは、例えば、512バイト〜64Kまたはそれ以上、例えば、最大で2メガバイトであり得る。受信されるデータは、(LBA,バッファ)の形であり得、ここでx=1〜nおよびn=ユーザーが送信するバッファ数である。バッファは生データであり、従って、それらは、任意の文書タイプ、例えば、JPEG、PDF、WORD文書、MPEGおよびTXT文書、に対応し得る。
ユーザーが送信する総ストリームは、Nバイトの形式であり得る。ストリームは、有線または無線のネットワークを経由し、I/Oストリームを伝送するための既知の方法および技術を通して、受信され得る。ユーザーは、データをフォーマット:(LBA,バッファ)にフォーマットし得るか、またはユーザーはデータを、そのデータをこのフォーマットにフォーマットするサーバーに送信し得る。従って、Nは、バッファユニットのサイズよりも大きい可能性がある。好ましくは、ユーザーは、データをファイル名および/またはファイル識別子とともに伝送する。
Nがバッファユニットのサイズよりも大きい場合、データのストリームの受信後に、サーバーは、Nバイトをバッファユニットにフラグメント化し得る。従って、バッファは、任意のサイズであり得るデータのストリームであるが、バッファユニットは、固定サイズであり、NCM上の記憶ユニットのサイズに対応する。例えば、ユーザーは、1024バイトの単一バッファを、LBA10で始まるためのファイルに対する指定とともに送信し得る。本発明の実施態様のバッファユニットサイズが512バイトである場合、データは、LBA20およびLBA21に格納され得る。とりわけ、いくつかの実施形態では、ユーザーは、開始LBAのみを伝送し得、そのシステムは、ファイルが、そのアドレスから開始して、そのファイルに対して十分な空間があるように、連続したブロックまで伸びる、NCM上に格納されることを認識するであろう。
このフラグメンテーションは、総ストリームまたはチャンクレットについて実行され得る。例えば、本方法が、4Kのサイズのバッファユニットを受信するように構成されているが、ユーザーが16Kのサイズのチャンクレットを伝送する場合、サーバーがそのチャンクレットを受信後または受信時に、それは、各チャンクレットを、各々が4Kのサイズの4つのバッファユニットに分割するためのプロトコルを開始するであろう。従って、いくつかの実施形態によれば、データを(LBA,バッファ)の形式で受信するか、または受信するデータを、この形式に変換する。ユーザーがデータを、必要なバッファユニットサイズになるように構成されているか、またはそのサイズに変換されるパケットで提供するかに関わらず、ハッシュ値アルゴリズムに対する入力として機能するバッファユニットの各々は、「ユーザー提供のバッファユニット」と呼ばれる。
データが正しいフォームで受信された(または正しいフォームに変換された)後、暗号化ハッシュ関数値アルゴリズムが、各バッファユニットに適用されて、そのバッファユニットに対する生成されたハッシュ値を形成する。生成されるハッシュ値は、生成されたハッシュ値と呼ばれ得る。暗号化ハッシュ値アルゴリズムは、例えば、持続性記憶媒体内に格納されている、コンピュータプログラム製品またはコンピュータプログラム製品内のプロトコルの形式であり得る。これらのタイプのアルゴリズムの例は、MD5ハッシュ(メッセージダイジェストアルゴリズムとも呼ばれる)、MD4ハッシュおよびSHA−1を含むが、それらに制限されない。ハッシュ関数値アルゴリズムから出力される値は、ハッシュ値、チェックサムまたは和(sum)と呼ばれ得る。いくつかの実施形態では、ハッシュ値は、64、128、もしくは256ビットまたは8バイトのサイズ、あるいは中間の任意の値である。I/Oストリーム内のデータの非常に繰り返しが多い特質のために、矛盾するハッシュ値、すなわち、同じであるが、異なるバッファユニットに対応するハッシュ値、を生成する確率は、比較的低い。本方法は、先入れ先出し(「FIFO」)プロトコルに従ってハッシュ値を取得し得、I/Oストリームが受信されている間、ハッシュ値が生成されている間、または全てのI/Oストリームが受信されて、フラグメント化され、必要ならば、ハッシュ関数値アルゴリズムを適用された後のいずれかに、相関ファイルのアクセスを開始する。
生成されたハッシュ値がユーザー提供のバッファユニットに対して取得された後、その生成されたハッシュ値を生成した、異なるコンピュータプログラム製品または同じコンピュータプログラム製品内の異なるモジュールが、アクセスされる。このコンピュータプログラム製品は、ハッシュ値テーブルをアクセスする。ハッシュ値テーブルは、例えば、永続的メモリ内に格納されて、アクセスおよび使用のためにL2キャッシュに置かれ得る。ハッシュ値テーブル内で、複数の格納されたハッシュ値が各々、格納されたバッファユニットのセット内の異なる格納されたバッファユニットおよびNCM上のバッファユニットの本当のLBAと関連付けられる。句「格納されたハッシュ値」は、ハッシュ値アルゴリズムにより特定のユーザー提供のバッファユニットに対して生成されるハッシュ値と対比するために使用され、それは、生成されたハッシュ値と呼ばれ得る。
ハッシュ値テーブルは、当初、特定のハッシュ値アルゴリズムによって関連付けられたとおりの既知のハッシュ値およびバッファユニットのセットで生成され得る。これらの既知の値は、アルゴリズムの経験的な先使用、例えば、1つのホストのファイルまたは同様の産業におけるホストのファイルに対して以前に生成されたもの、に基づき判断されている可能性がある。代替として、それは、当初は空であり得、最初のユーザー提供のバッファユニットが関連付けの空白(null)のセットと比較される。使用時には、ハッシュ値テーブルは、例えば、サーバー上の、RAM内に常駐し得る。従って、ハッシュ値テーブルまたはそれに投入するためのデータは、バッファユニットを格納するNCM上、またはシステムのブートもしくは再ブート時にRAMを再設定するためにアクセスできるフォーマット内のどこかなど、永続記憶装置内に常駐し得る。更新される場合、更新は、RAM内のテーブルに対して、および永続的メモリに対しても、行われる。
いくつかの実施形態では、いかなる時でも、テーブル内で、所与の格納されたハッシュ値が、わずか1つのバッファユニットとアクティブに関連付けられる。バッファユニットがハッシュ値テーブル内にあり、格納されたハッシュ値と関連付けられている場合、そのバッファユニットは「格納されたバッファユニット」である。ハッシュ値テーブル内の特定のハッシュ値と関連付けられているバッファユニットは、時間とともに変わり得、以下で説明するように矛盾が起こった場合、最新のバッファユニット、ハッシュ値アルゴリズムによって判断されたハッシュ値関連付けが、本明細書で説明する方法の適用後に、テーブル内のアクティブな関連付けになるであろう。句「アクティブな関連付け」および「アクティブに関連付けられた」は、テーブルが、生成されたハッシュ値との比較のために抽出されるデータを、提供するか、構成するか、または示す条件を指す。アクティブな関連付けは、ハッシュ値アルゴリズムの適用時に、ハッシュ値の生成をもたらす、バッファユニットを最後に受信したNCM上の本当の論理ブロックアドレスを含み得る。一旦、ハッシュ値が格納されたハッシュ値になると、それは、テーブル内にとどまるが、時間とともに、それが関連付けられているバッファユニットは変わり得る。従って、格納されたバッファユニットは、格納されたバッファユニットのままでない可能性がある。
当業者は、ある実施形態では、ハッシュ値テーブルを使用するのではなく、マルチマップを使用し得ることを認識するであろう。マルチマップを使用する場合、ハッシュ値は、2つ以上のバッファユニットと関連付けられ得、従って、矛盾がある場合に、以前に格納されたハッシュ値が除去される必要がない。
ハッシュ値アルゴリズムは、複数の異なるバッファユニットに対して同じハッシュ値を生成できるので、手続きは、テーブル内でのこれらの出現を扱う方法を判断する必要がある。格納されたハッシュ値と同じである、ハッシュ値が、ユーザー提供のバッファユニットに対して生成されている場合、次の3つの手続きのうちの1つが使用され得る:(1)既存の関連付けが新しい関連付けで上書きされ得る;(2)既存の関連付けが削除され得、新しいエントリがテーブル内に、例えば、新しい位置で作成され得る;または(3)既存の関連付けが非アクティブなファイルに移動され得るか、または別の方法でそれが非アクティブであることを示すように修正され得るが、情報は、例えば、アクティブなファイル内に保持され、適切に設計されたコンピュータプログラムを通じて、後にアクセスできる。条件(1)または(3)は、関連付けを非アクティブにする例である。当業者であれば認識するように、NCMからのデータ取得は、ハッシュ値テーブルへのアクセスを必要としないので、任意のアーカイブされた情報は、本発明の様々な実施形態の実装のために必要でない。しかし、この情報は、同じハッシュ値が異なるユーザー提供のバッファユニットまたはフラグメント化されたユーザー提供のバッファユニットに対して生成されている程度を再検討するために使用され得る。
データの非常に繰り返しが多い特質のために、矛盾するハッシュ値が、ハッシュ値アルゴリズムの適用の結果として生成されている確率は低い。例えば、SHA−1の160ビットのハッシュは、異なるパターンに対して同じハッシュ値をランダムに生成する、1024分の1の確率を有する。本発明は、重複したバッファユニットが格納される程度を最小限にするために、ハッシュ値アルゴリズムのこの特徴を利用する。これを達成するために、本方法は:(1)新しく生成されたハッシュ値が、それに対して格納されたバッファユニットがある、格納されたハッシュ値と同じであるか;そうであれば、(2)そのハッシュ値に対して格納されたバッファユニットがユーザー提供のバッファユニットと異なるような矛盾があるか、を問い合わせる、2つのモジュールまたは2つの別個のコンピュータプログラムアルゴリズムの割当てを提供する。
前述の問合わせの結果は、どの新しい情報がNCM上に格納されるか、およびどのような状況下で、ならびに何がメディエータに書き込まれるか、を判断する。最も簡単な場合には、本発明のプロトコルは、ハッシュ値の重複がないことを判断する。ハッシュ値の重複がないことは、ユーザー提供のバッファユニットがハッシュ値テーブル内にないことを示す。その結果として、バッファユニットが、NCMの新しいブロック内に書き込まれて、ユーザーが後に同じバッファユニットを、異なるデータストリームもしくはデータパケットの一部として、または後に同じデータストリーム内で、投入する場合に、それがNCM上に既に格納されているデータと同じであることを方法が検出できるように、更新がハッシュ値テーブルに対して行われる。ハッシュ値テーブルは、バッファユニットが書き込まれる本当のLBAを含むようにも更新される。生成されたハッシュ値およびユーザー提供のバッファユニットをハッシュ値テーブルに書き込むと、それらは、それぞれ、格納されたハッシュ値および格納されたバッファユニットとなる。
方法が、ハッシュ値の重複があると判断する場合、第2の問合わせが行われる。前述のように、この第2の問合わせでは、本方法は、アルゴリズムをユーザー提供のバッファユニットに対して適用すると、たとえ2つのバッファユニットが異なっていても、既に格納されたバッファユニットが関連付けられている同じハッシュ値の生成をもたらすかどうかを検討する。
当業者であれば認識するように、この2段階のアプローチは、重複したデータがNCM上に格納される回数を減らすための方法に効率をもたらす。第1のステップでは、ハッシュ値が比較される。これらの値は、バッファユニットよりも小さく(例えば、バッファユニットよりも少なくとも2分の1、少なくとも10分の1、少なくとも100分の1、または少なくとも1000分の1小さい)、従って、バッファユニット自体よりも比較しやすい。それらの値がハッシュ値の重複を示す場合に限り、システムは実際のバッファユニットを比較する。従って、バッファユニットを互いに対してチェックする前に、ハッシュ値テーブル内にまだないハッシュ値と関連付けられているバッファユニットを除去することにより、システムは効率的である。
問合わせの第2の段階では、2つのバッファユニットを相互に比較する。矛盾がない、すなわち、(格納されたものおよび現在のユーザー提供の)バッファユニットの本当の識別がある場合;NCMへの書込みの追加のステップが必要とされない。代わりに、バッファユニットが以前に格納されたブロックのメディエータに付けられた印があることを必要とするだけである。従って、これらのバッファユニットは再度書き込まれる必要がないので、効率が向上する。それが属するファイルを追跡するために、メディエータ内で、LBAは、ユーザーが認識するLBA、および任意選択で、ユーザーが生成したファイル名またはファイルシステムと関連付けられる。
問合わせの第2の段階の他の結果は、(格納されたバッファユニットと関連付けられた際の)格納されたハッシュ値が、生成されたハッシュ値と同じであるが、格納されたバッファユニットおよびユーザー提供のバッファユニットが異なるので矛盾がある場合に生じる。これらの場合、本発明の方法は、ユーザー提供のバッファユニットがNCMへの書込みを必要としていると考える。本方法は、ハッシュ値テーブルも変更させて、それが、共通のハッシュ値をユーザー提供のバッファユニットと関連付けるようにする。共通のハッシュ値の以前の関連付けが、非アクティブにされるか、または削除される。その結果として、重複したバッファユニットを検索する後続の問合わせでは、より最近格納されたハッシュ値、バッファユニット関連付けが検討される。これらの方法では、矛盾が生じた場合には、ハッシュ値の拡張は絶対に必要ない。
様々な実施形態では、各LBAに対して、本方法は、メディエータにLBAをLBAとともに格納させ、LBAは、ユーザー提供のバッファユニットと同一である、バッファユニットの実際の位置を指す。LBAは、バッファユニットが格納されているとユーザーが信じる位置であり、LBAは、バッファユニットが実際に格納されている位置であるので、LBAは、ハッシュ値テーブル内にも格納される。しかし、LBAは、ハッシュ値テーブルから省かれ得、いくつかの実施形態では、メディエータ上にのみ存在する。任意選択で、メディエータは、ユーザー作成のファイル名および/またはファイル識別子も格納して、そのファイル名を1つ以上のユーザーが認識する論理ブロックアドレスと関連付ける。
前述のように、ほとんどのバッファユニットはNCM上に一度だけ格納される。従って、複数のユーザーファイルに対して、ユーザーが認識する論理ブロックアドレスと本当の論理ブロックアドレスとの相関関係があり、異なるユーザーファイルに対応する複数の(メディエータ上の)相関関係内には、同じ本当の論理ブロックアドレスであるが、異なるユーザーが認識する論理ブロックアドレスが1つ以上ある。実際のユーザーファイル内で最も繰り返しが多いバッファユニットは、最多数の異なる相関関係内に出現するであろう。加えて、ユーザーはバッファを提供し、それがNCM上の連続したサイトに格納されていると信じ得るので、単一のLBAとそのバッファとの関連付けを記録して、データをLBAから始まる連続したLBAに格納されていると見なし得る。しかし、格納は実際にはバッファユニットレベル上であり、しばしば、所与のバッファに対して連続した位置に格納されないので、メディエータは、単一のユーザーが認識するLBA(または、暗黙的もしくは明示的に)複数の連続したLBAを、連続していない複数の本当のLBAとともに格納し得る。例えば、ユーザーは、サイズが4096Bで、ユーザーが認識するLBAが10のバッファを供給し得る。バッファユニットが512Bのサイズである場合、ユーザーは暗黙的に、そのデータはLBA 10から始まる8つの連続した記憶サイトにあると信じ得る。しかし、実際には、それらは、LBA4、LBA3、LBA2、LBA2、LBA3、LBA3、LBA9、LBA4であり得、メディエータは、それらの位置を指すであろう。とりわけ、全部ではないにしろ、ユーザーが送信するバッファ内のデータに対応する、ほとんどの重複したバッファユニットに対して、メディエータはNCM上の同じLBAを指すであろう。従って、メディエータ上に、いくつかの実施形態では、全てのデータの本当の位置(例えば、全ての本当のLBA)の、ユーザーから受信した際のユーザーが認識する位置または複数の位置との相関関係があり得る。
従って、これらの方法では、拡張を使用して、ハッシュ値アルゴリズムの同じハッシュ値を生成する可能性を考慮に入れるのではなく、(i)比較可能なハッシュ値が、任意のバッファユニットと関連付けられているとして、まだハッシュ値テーブル内にない;または(ii)任意の所与のハッシュ値に対して、矛盾がある:場合に限り、前述した関連付けの最新の出現を使用して、特定の提供されたバッファユニットをNCMに書き込む。これらの後者の場合、以前に書き込まれている、同じデータのNCMへの何回かの書込みがあり得る。しかし、実用性の問題として、まれにしか起こらないであろう。
いくつかの実施形態では、バッファユニットのNCMへの書込みは連続的である、すなわち、書き込まれる各ユーザー提供のバッファユニットは、NCM上の次の隣接するブロックに書き込まれ得る。従って、NCM上でのデータの散在が最小限であるか、または全くなく、それは、読取り/書込み性能を向上して、記憶空間の節約を可能にする。加えて、実際のNCMへの書き込みが少ないので、読取り/書込み性能が向上する。これは、その結果として、オペレーティングシステムのキャッシュがより良く機能するのを可能にする。さらに、NCM上のデータは、メディエータおよびハッシュ値テーブルがない限り、ファイルを再構成するために使用できないので、データのセキュリティを向上できる。
本発明のさらなる利点は、データがどのように読み取られるかを考慮すると、理解され得る。ユーザーは、ファイルを読み取る要求を送信し得る。要求は、ファイル識別子および1つ以上のユーザーが認識する論理ブロックアドレスに関する情報を含む。関連するメディエータにアクセスすることにより、実際の論理ブロックアドレス(複数可)を判断して、関連するデータを取得できる。とりわけ、書込みプロトコルとは対照的に、取得および読取りステップ中に、ハッシュ値アルゴリズムまたはテーブルは必要ない。代わりに、読取り装置は、メディエータが指すNCM上のサイトからデータを取得し、また、メディエータは、1つ以上のファイルに対して、1つ以上のバッファユニットを複数回、指し得る。
本発明は、データを効率的に格納するためのシステムも提供する。これらのシステムは:(a)永続的メモリ;(b)中央処理装置(CPU);(c)非キャッシュ記録媒体;および(d)メディエータ;を含み得る。構成要素の各々は、それらの指定された機能を実行するために、1つ以上の他の構成要素と動作可能に結合され得る。
永続的メモリは、ハッシュ値テーブルを含み、以下で説明する非キャッシュ記録媒体の一部であり得るか、またはそれとは異なり得る。ハッシュ値テーブルは、複数の格納されたハッシュ値の各々を異なる格納されたバッファユニットと関連付ける。ハッシュ値は、ハッシュ値アルゴリズムのバッファユニットに対する適用によって判断される。各格納されたバッファユニットは、本当の論理ブロックアドレスとも関連付けられる。当業者は、ハッシュ値テーブルが、3つのタイプのデータ:格納されたハッシュ値、格納されたバッファユニットおよび本当の論理ブロックアドレスの間の関連付けを1つのテーブル内に含み得ることを認識するであろう。あるいは、ハッシュ値テーブルは、1つのテーブル内に、最初の2つのタイプのデータだけの関連付けを含み得、同じか、または異なるメモリ装置(例えば、メディエータ)内の、別のテーブル内に、本当のLBAと格納されたバッファユニットを相互に関連付けるテーブルが格納され得る。永続的メモリは、CPU内に格納され得るか、またはCPUに動作可能に結合され得る。
中央処理装置は、ハードウェアまたはハードウェアとソフトウェアの組合せから成る。CPUは、永続的メモリにアクセスして、ハッシュ値テーブルを検索するように構成される。CPUは、NCMおよびメディエータへの書込みを含むがそれらに制限されず、本発明の方法の1つ以上を実行するようにも構成される。さらに、CPUは、例えば、サーバーを通じて、無線または有線ネットワークを通して1つ以上のリモートユーザーと通信するように構成される。
NCMは、ブロックレベル記憶に対して構成される。NCMは、CPUとは別個であり得るか、またはCPUの一部であり得る。
前述したシステムのいくつかの実施形態では、メディエータ、ハッシュ値テーブル、CPUおよび非キャッシュ記録媒体の各々は、互いにリモートに格納される。それらは、同じ筐体内の別個の構造内または異なる筐体内にあり得る。
前述のように、(サーバーを通して制御され得る)本発明のシステムは、メディエータを調べた後にハッシュ値テーブルにアクセスすることなく、ファイルを再作成してデータをユーザーに伝送することができる。従って、一実施形態では、本発明のシステムは、取得モジュールを含み、取得モジュールは、メディエータにアクセスして、ハッシュ値テーブルにアクセスすることなく、複数のバッファユニットを、メディエータによって指示される順序で再結合することにより、データファイルを再構成するように構成され、メディエータによって指示される順序は、非キャッシュ記録媒体上でのバッファユニットの順序とは異なる。
本発明の様々な方法は、マネージャによって自動的に制御され得る。マネージャは、1つ以上のモジュールを含み、ローカルコンピュータ上、ネットワーク上、またはクラウド内または例えば、CPU内に常駐し得る。マネージャは、情報自体の受信を調整するか、または情報自体を受信して、この情報をメディエータに転送するか、または、情報の受信を直接メディエータによって制御するように構成され得る。従って、本方法は、イニシエータからの情報が、本発明の重複排除方法のため、マネージャを通り、マネージャの指示で、メディエータに、またはシステムの他の構成要素に流れるが、マネージャを通って流れないように、設計できる。
いくつかの実施形態では、マネージャは、1つまたは複数のメディエータを制御し、それと通信し、かつ、その活動を調整し得る。各メディエータに対して、マネージャは、パラメータのセットを受信する(または、その受信を調整する)。これらのパラメータは、ファイルシステム情報、ブート可能性情報、およびパーティション分割情報の1つ、2つ、もしくは3つ全部を含むか、基本的にそれらから成るか、またはそれらから成り得る。
メディエータは、例えば、(a)トラックの第1のセット;(b)トラックの第2のセット;(c)トラックの第3のセット;および(d)トラックの第4のセット:を含み得る。マネージャは、ファイルシステム情報、ブート可能性情報、およびパーティション分割情報を、メディエータ上のトラックの第1のセット内に格納させ、それは、予約1またはRと呼ばれ得る。この情報は、ファイルシステム情報の識別を含み得、それは、予約ブロックがどのように使用されるかを指示する。例えば、NTFSを使用する場合、セクター1〜2がMBR(マスターブートレコード)用であり得、セクター3が$MFT用であり得る。任意選択で、これらのトラックが、トラックの第2のセットにコピーされ得、それは、予約2またはRと呼ばれ得る。
これらの実施形態では、マネージャは、前のパラグラフで説明したパラメータに加えて、メタデータも受信し得る。メタデータは、メディエータ上のトラックの第3のセット内に格納され得る。マネージャがパラメータおよびメタデータを受信する時、またはその後に、それは、非キャッシュ媒体上に格納するための1つ以上のファイルも受信し得る。各ファイルは、ファイル名および1つ以上のユーザーが認識するLBAとともに受信される。ファイル名は、ファイルを伝送するホストによって生成され、ホストのファイルシステムによって定義され得る。例えば、SANもしくはNASもしくはそれらの組合せであるか、またはその一部であり得る、マネージャは、ファイルをファイル名とともに受信すると、本当のLBAおよびユーザーが認識するLBAをトラックの第4のセットのビットフィールド内に格納することを含め、格納のための本明細書で説明するステップを自動的に実行できる。
いくつかの実施形態では、生データを受信すると、本発明の方法は、受信の確認を自動的にホストに返させ得る。あるQoS(サービス品質)プロトコルでは、データファイルがI/Oを通して受信されて、直ちにL1キャッシュに送信される。受信されると、確認がL1キャッシュからI/Oを通して返送される。L1キャッシュから、データファイルがL2キャッシュに送信され得、L2キャッシュは確認をL1キャッシュに返送する。L2キャッシュは、データファイルを、本発明の実施形態の1つ以上を実行するシステムまたはシステムの一部にも送信し、本発明の重複排除プロトコルを経た後、メディエータに書き込み、いくつかの場合には、長期格納のために、非キャッシュ媒体(NCM)に書込み得る。NCMは、同様に、確認をL2キャッシュに返送し得る。
いくつかの実施形態では、メディエータは、L1キャッシュ内のヒープ(動的に割り当てられるメモリ)内に常駐し得るか、またはそれに動作可能に結合され得る。代替として、メディエータは、カード内に常駐し得るか、またはL2キャッシュの一部であり得るか、もしくはL2キャッシュに動作可能に結合され得るか、またはソリッドステートドライブもしくは格納用の任意のブロック装置上にあり得る。
当業者であれば分かるように、メディエータを、L2に対してL1内に置くという判断は、格納されたデータの使用の頻度などの要因によって影響を受けるであろう。従って、L1キャッシュは、システムまたはエンドユーザーによって頻繁に使用されるデータを格納するために使用され、他方、L2キャッシュは、幾分頻繁にアクセスされるデータに対して使用され得る。
別のQoSプロトコルでは、I/Oを通して、データファイルがL1キャッシュによって受信される。データファイルは、L1キャッシュからL2キャッシュおよびNCMの両方に転送される。L2キャッシュおよびNCMの各々が、確認をL1キャッシュに送信する。L2キャッシュおよびNCMの一方または両方から確認を受信する前、または後のいずれかに、L1キャッシュはI/Oを通して確認を送信する。
前述のように、メディエータは、トラックの第1の予備セット(R)およびトラックの第2の予備セット(R)を含み得る。いくつかの実施形態では、トラックの第2の予備セット(R)は、トラックの第1の予備セット(R)のコピーである。追加として、いくつかの実施形態では、トラックの第2の予備セット(R)を使用して、トラックの第1の予備セット(R)内のエラーをチェックし得る。
は、ホストの開始のための中心点として機能するように構成され得る。従って、本発明の重複排除方法のいずれかの前に、ホストは、Rに送信するパラメータを選択し得る。メディエータは、この情報をホストから直接に、またはマネージャを通して間接的に、受信し得る。好ましくは、Rは、決してホストに公開されない。従って、メディエータ自身またはマネージャのみが情報をRに格納できる。RおよびRの各々は、例えば、16のセクターを含み得、ホスト修飾子などの実際のデータで満たされ得る。慣例により、番号付けは、0から始まり得る。従って、Rは、例えば、セクター(またはトラック)0〜15を含み得、Rは、セクター(またはトラック)16〜31を含み得る。しかし、メディエータは、RおよびRの各々が、16トラックの初期サイズを超えて拡張するのを可能にするように構成され得る。
いくつかの実施形態では、Rは、一意の予備セクター情報およびパーティション情報を含む。パーティション情報内には、ファイルシステム情報を格納し得る。
限定されない例として、また、当業者であれば分かるように、ボリュームをNFTSファイルシステムでフォーマットする際に、$MFT(マスターファイルテーブル)、$Bitmap、$Log Fileおよびその他などの、メタデータファイルを作成する。このメタデータは、NFTSボリューム上のファイルおよびフォルダの全てに関する情報を含む。NTFSボリューム上の第1の情報は、パーティションブートセクター($Bootメタデータファイル)であり得、セクター0に配置され得る。このファイルは、基本NTFSボリューム情報およびメインメタデータファイル$MFTの位置を記述し得る。
フォーマットプログラムは、$Bootメタデータファイルに対して最初の16セクターを割り当てる。最初のセクターは、ブートストラップコードを有するブートセクターであり、次の15のセクターは、ブートセクターのIPL(初期プログラムローダー)である。
およびRのトラックに加えて、メディエータは追加のメタデータを格納し得る。このメタデータは、例えば、シンプロビジョニングストラテジの実行を可能にする情報に対応し、それは、装置が、実際に利用可能であるよりも多くの物理的資源を有しているように見えるのを可能にして、例えば、トラック32〜39であり得る、Rの後の8トラック内に含まれ得る。メタデータは、LUN QoS、VMおよびWORMなどの特徴も提供し得る。
最後に、メディエータは、ビットフィールドも含み得る。ビットフィールドは、データが記憶媒体内の物理的にどこに格納されているかを示す情報を含み、メタデータがトラック32〜39に置かれている場合、ビットフィールドのセクター番号はトラック40から始まる。ホストのファイル名とデータの位置との間の相関関係が格納されているのはメディエータのビットフィールド内である。従って、それは、セクターマップを含むか、基本的にそれから成るか、またはそれから成り得る。
事実上、好ましくは、メディエータは、バッファユニットデータが格納されているディスクまたは記録媒体上に置かれていない。加えて、好ましくは、メディエータは、対応するディスクまたは記録媒体の総メモリの約0.1〜0.2%のみを必要とする。
さらに詳細な説明のために、図が参照され得る。図1は、本発明の方法の表現であり、そのための命令が、持続性記録媒体内の永続記憶装置内に格納され得る。例示を目的として、図1に示す方法のステップ130から終わりまでが、単一のユーザー提供バッファユニットに対して示されているが、本方法は、複数のユーザー提供バッファユニットにフラグメント化されている所与のバッファに対して、複数回、繰り返され得る。ユーザーが認識するLBAと本当のLBAとの関連付けがメディエータに書き込まれるとき、それらの関連付けは、一緒にグループ化されて、特定のファイルに対応するとして示される。当業者であれば認識するように、ユーザー提供のバッファがユーザー提供のバッファユニットと同じサイズである場合、それはフラグメント化する必要がなく、本発明の様々な実施形態は、この条件をチェックするように構成できる。本発明の様々な実施形態は、全てのバッファが等しいサイズのバッファユニットに分割され、そうでない場合は、それら全てを同じサイズにするために、バッファまたは最後のバッファユニットであろうもののビット列の端部に0を追加することが可能であることを確実にするようにも構成され得る。
図に示すように、情報を記憶媒体に書き込むための命令が、受信され得る。これらの命令は、ユーザーが認識する論理ブロックアドレス(LBA)または(LBA)およびユーザー提供のバッファユニットの形であり得る(110)。
前述のように、ユーザーが認識するLBAは、ユーザーが、彼または彼女のデータが格納されると信じる位置である。ユーザー提供のバッファユニット内のデータは、通常、それが格納される装置上のブロックのサイズになる。ユーザーが、装置上のブロックサイズよりも大きいデータを投入する場合、ユーザーが投入するデータは、各々がブロックのサイズの、複数のバッファユニットを含むように、前処理され得る。バッファユニットがブロックサイズよりも小さい場合には、ブロックのサイズになるまで、コンピュータプログラム製品が、バッファユニットの一方の端部に全て0を追加し得る。
受信された命令は、従って、(LBA,バッファ)によって表され得る形式であるか、またはその形式に変換される。ユーザー提供のバッファユニットに対して、コンピュータプログラム製品は、受信された際にデータをフラグメント化し、必要であれば、ハッシュ値を計算する(120)。複数の命令が受信される場合、各バッファユニットに対してハッシュ値が計算される。
アルゴリズムがハッシュ値を生成した後、アルゴリズムは、そのハッシュ値が、ハッシュ値テーブル内に既に存在する格納されたハッシュ値と重複しているかを問い合わせる(130)。テーブルがその生成されたハッシュ値を含んでいない場合、アルゴリズムは、バッファユニットがNCMに対して新しいものであると結論付けて、そのバッファユニットを、以前に使用されていないNCM内のブロックに書き込む(140)。アルゴリズムはまた、NCMに新しく書き込まれた、このユーザー生成のバッファユニットと、その生成されたハッシュ値との関連付けを含むように、メモリ内に格納されているハッシュ値テーブルを更新する(150)。この生成されたハッシュ値は格納されたハッシュ値になり、ユーザー提供のバッファユニットは格納されたバッファユニットになる。いくつかの実施形態では、ハッシュ値テーブルは、バッファユニットがNCM上に格納されている本当の論理ブロックアドレスも識別するが、他方、他の実施形態では、ハッシュ値テーブルはこの情報を除外して、例えば、メディエータ上または別のデータファイル内など、他の場所に格納される。
ハッシュ値テーブルが更新された後、ユーザーが認識するLBAおよびユーザー提供のバッファユニットが格納されている本当のLBAがメディエータ上に格納されて、互いに関連づけられる(160)。
図1内のステップ130に戻り、問合わせが、新しく計算されたハッシュ値が、ハッシュ値テーブル内の格納されたハッシュ値と重複しているという結論となる場合、方法は、矛盾があるかどうかを尋ねるプロトコルを開始する(170)。
矛盾がない場合、プロトコルは、既にNCM上にあり、ユーザー提供のバッファユニットと同じ、バッファユニットデータの位置と、ユーザーが認識する位置との相関関係を、メディエータに格納させる(160)。従って、この重複したデータに対して、新しい情報はNCMに書き込まれない。
矛盾があるかどうかに関する問合わせ(170)に戻り、応答が、同じハッシュ値が異なるバッファユニットに割り当てられていることを意味する、yesの場合、プロトコルは、ユーザー提供のバッファユニットのNCMへの書込み(140)およびメモリ内のハッシュ値テーブルを、新しく書き込まれたバッファユニットとアクティブに関連付けられているハッシュ値に更新することを要求する。加えて、メディエータが、ユーザーが認識する位置(複数可)と本当の位置(複数可)との新しい相関関係を含むように更新される。
図2は、このステップをさらに説明する。図1と同様に、矛盾判断プロトコル(270)に入ると、yes出力がある場合、バッファユニットの一意のデータがNCM上の新しいブロックに書き込まれる(240)。新しいブロックの書込みに続いて、アルゴリズムはハッシュ値テーブルを更新する。
ハッシュ値テーブルを更新する場合、本方法は、以前に格納されたハッシュ値のバッファユニットとの関連付けを解除して、その格納されたハッシュ値をより最近受信されたバッファユニットと関連付けて(251)、ハッシュ値と以前に格納されたバッファユニットとの関連付けを除去するか、または非アクティブにする(256)。ハッシュ値テーブルが更新された後、プロトコルは、最後に受信されたバッファユニットの本当の論理ブロックアドレスをメディエータに書き込んで、それをユーザーが認識する論理ブロックアドレスと関連付ける(260)。
図3は、読取り命令を表す。システムは、ブロックを読み取る、すなわち、(LBA,バッファ)の情報を取得するための命令を受信し得る(310)。要求は、1つ以上のユーザーが認識するLBAとのユーザーのシステムの関連付けである、ファイル名による、ファイルに対する要求の形で到着し得る。
プロトコルは、メディエータ内の相関関係テーブルのアクセスおよび、バッファまたはその一部に対応する各LBA位置での読取りを引き起こす(320)。相関関係テーブルは、ユーザーが認識するLBAを本当のLBAと相互に関連付けるので、LBA(または複数のLBA)に対する情報が取得された後、プロトコルは、指定された実際のLBAまたは複数のLBAでNCMを読み取り、ブロック情報を取得して、バッファパラメータを満たす(330)。この情報を用いて、システムは、生データを正しい順序で有し、それを、ホストのオペレーティングシステムを通して要求されたファイルの再構成のために、ホストに送信することが可能である。
とりわけ、読取りステップ中に、ハッシュ値アルゴリズムまたはテーブルにアクセスする必要がない。代わりに、NCM上に格納されたとおりのLBAが、ユーザーが必要とするバッファユニットを取得するために読み取られ得る。いずれか1つ以上のバッファユニットが、読取り時に、L1またはL2キャッシュのいずれか内にまだある場合、それらは、NCMからではなく、適切なキャッシュから読み取られ得る。
さらなる例として、以下の表が検討され得る。
Figure 2018152116
ユーザーが格納のためにデータを投入すると、ユーザーは、バッファユニットのサイズが各々、例えば、512バイトである、18のブロックに対して、LBAが1〜18であると認識する。格納のためにデータを伝送する場合、ユーザーは、各バッファユニットを、異なるブロックに格納されていると仮定して、一意として処理する。
ハッシュ値アルゴリズムを適用すると、2〜3の重複したハッシュ値が生成される。見て分かるとおり、ハッシュ値xがバッファユニットA、G、LおよびRに適用され;ハッシュ値yがバッファユニットB、J、およびQに適用され;ハッシュ値zがバッファユニットCおよびPに適用され;ハッシュ値bがバッファユニットEおよびOに適用される。しかし、データの本当の重複は、AとR、GとL、BとJ、EとO、およびCとPとの間に見つけられる。それ故、矛盾は、AとG;GとR;BとQ;およびQとJとの間に生じる。
4列目に示すように、データを書き込む際に、本当の重複に対して、新しいブロックは書き込まれない。例えば、ユーザーが認識するLBA 2および10が格納されている実際の位置を参照されたい。両方がブロック110に格納されている。3列目および4列目を検討すると、最初の7つのユーザー提供のバッファユニットが分析された後に、最初の重複したハッシュ値が生成された(x値)ことが分かる。しかし、A≠Gなので、GはNCM上のブロックに書き込まれる必要がある。これが生じた後、さらなる矛盾分析のために、メモリ内に格納されているハッシュ値テーブル内で、xが、Aではなく、Gと関連付けられる。
10番目のバッファユニットJが分析された後に、重複したハッシュ値yが生成されていることが分かる。しかし、バッファユニットが同じであるので、矛盾はない。従って、ハッシュ値テーブルに対する更新は必要なく、新しいブロックがNCMに書き込まれる必要がない。代わりに、メディエータが、本当のLBA110を指して、それをユーザーが認識するLBAと相互に関連付けるように更新される。12番目のユーザーが認識するLBAが分析された後、類似した本当の重複が明らかになり、15番目および16番目が分析される。
バッファユニットQが分析された後、ハッシュ値yが生成
される。しかし、Q≠Bであるので、矛盾がある。その結果として、新しいブロックがLBA 121に書き込まれ、ハッシュ値テーブルが、yをQと関連付けるように更新されて、もはやyを(Jと同じである)Bと関連付けない。
ユーザー提供のバッファユニットRが分析された後、ハッシュ値xが生成される。R=Aである。しかし、Aは、ハッシュ値テーブル内でxとの最新の関連付けではない。その結果として、プロトコルは、Rを、それがRを見たのが初めてであるかのように扱い、(1)新しい相関関係をハッシュ値テーブル内に保存するか、または古いものを上書きすること(しかし、それは、メモリ内に格納された関連付けを回復しない)、および(2)新しいブロックのデータをNCM内に格納する(ここではブロック122)こと:の両方を行う必要がある。このように、本例では、NCMは、いくつかの重複を含むであろう。
表1は、例示目的であり、いくつかの実施形態では、第1および第4の列のみがメディエータの一部であり、それらは、ハッシュ値テーブルの一部ではない。メディエータのサイズ要件は小さい。例えば、いくつかの実施形態では、メディエータは、512バイトまたは4KのサイズのNCM上に格納されている各バッファユニットに対して、8または16バイトを必要とする。
本発明の様々な実施形態を通して、NCMの物理記憶空間が大いに削減できる。例えば、それらは、少なくとも50%、少なくとも100%、少なくとも200%、少なくとも500%、または少なくとも1000%だけ削減できる。従って、いくつかの実施形態では、必要な記憶容量は、標準状態下で必要であるよりも50〜150分の1である。例えば、512バイト〜4Kのバッファユニットに相当するものの、メディエータ上での記憶のために、5〜10バイトしか必要ないであろう。このように、同じバッファユニット(またはフラグメント化されたバッファユニット)を複数回、格納する必要を削減することにより、(本発明のNCMの一例である)8GBのUSBスティックが、1.53TBのデータに相当するものを格納するために使用できる。
本発明の方法、システムおよびコンピュータプログラム製品は、格納されているバッファユニットが、たとえフラグメント化されていても、ユーザーから受信されたものと同じであると仮定して、説明されてきた。これらの実施形態では、それらは、ユーザーが認識するものとは異なるLBAに、ユーザーが認識できない順序で格納されるので、情報を取得するためにメディエータが必要であり、ユーザーはそれなしでは、データを取得できない。それ故、それは、ある程度のセキュリティを提供する。
同じハッシュ値アルゴリズムを利用する異なるユーザーが、同じハッシュ値を生成するであろう。従って、それらのハッシュ値テーブルは、NCM上のバッファユニットの位置を除いて、同様であろう。加えて、メディエータ内の相関関係情報が異なる。追加レベルのセキュリティとして、本発明の方法に入る前に、ユーザーは、データをコード化または変換することを望み得る。これらの動作は、前処理と呼ばれ得る。
いくつかの実施形態では、前述のプロトコルまたはシステムに入る前に、ユーザーのデータがまず、ビットマーカーテーブルもしくは頻度変換器またはサイズが小さく、かつ/もしくは符号化されているデータを生成するための他のハッシュ値アルゴリズムの使用を通して、変換される。これらの技術を実施するための方法、システムおよびコンピュータプログラム製品は、2013年2月2日に出願された「Bit Markers and Frequency Converters」という名称の米国13/756,921号;2013年3月12日に出願された「Data Storage and Retrieval Mediation Systems and Methods for Using Same」という名称の米国13/797,003号;および2013年6月3日に出願された「Methods and Systems for Storing and Retrieving Data」という名称の米国13/908,239号に開示されている。前述した出願の開示全体が、参照により、全体として組み込まれる。これらの方法の出力が、重複削減のためのバッファユニットを生成するために使用され得る。
これらの出願は、本発明に、前処理ステップとして、すなわち、本実施形態の重複排除方策の前に、組み込まれ得る、方法を記述する。これらの場合、バッファユニットは、データが、ビットマーカーテーブルまたは頻度変換器の使用を通して変換される前処理方法の出力に対応し得る。
従って、一実施形態では、この前処理ステップは:(i)複数のデジタル2値信号を受信することであって、デジタル2値信号が複数のチャンクレットに編成されており、各チャンクレットがNビット長で、Nが1より大きい整数であり、チャンクレットが順序を有する、複数のデジタル2値信号を受信すること;(ii)各チャンクレットを均一なサイズのサブユニットに分割して、X個のマーカーのセットから、1つのマーカーを各サブユニットに割り当てて、複数のマーカーのセットを形成することであって、Xがサブユニット内のビットの異なる組合せの数以下であり、同一のサブユニットが同じマーカーに割り当てられて、少なくとも1つのマーカーがサブユニットのサイズよりも小さい、複数のマーカーのセットを形成すること;および(iii)マーカーをバッファユニットとして使用すること;を含む。この前処理ステップは、ハッシュ値テーブルと同じか、または異なる永続的メモリ内に格納され得るビットマーカーテーブルを利用する。データを読み取る際に、これらの前処理ステップが逆の順番で実施され得、データがNCMから取得された後に、NCM上のバッファユニットが、メディエータによって指示された方法で再結合される。マーカーをバッファユニットとして使用する場合、必要なサイズのバッファユニットを形成するために、マーカーを結合または分割し得る。
ビットマーカーテーブルは、全てが同じサイズであるか、または異なるサイズのマーカーを含み得る。異なるサイズの場合、サイズは、以下で説明するように、ビットまたはバイトの列の予測された頻度によって判断され得る。
さらなる例として、前処理ステップがビットマーカーテーブルを利用する場合、生データが、その生データを表す一連のマーカーに翻訳される。生データは、ホストから受信されたデータに対応し、従って、例えば、JPEG、PDF、TIFFまたはWORD文書などの、1つ以上のファイルを個々に、または全体として形成する1つ以上のチャンクレットであり得る。
チャンクレットは順番に受信される。例えば、ファイルが、システムによって連続的に受信される10のチャンクレットを含み得る。あるいは、所与のファイルに対する複数のチャンクレットが、それらが、ホストのオペレーティングシステムによるファイルの再作成および使用を可能にするような方法で、それらの相互の再関連付けを可能にする情報を含む場合、並行して、または一緒に伝送され得る。従って、いくつかの実施形態では、本発明の方法は、マーカーを、チャンクレットが受信されるのと同じ順序で生成する。それに応じて、ホストがファイルの取得を要求する場合、対応する取得手段が、符号化されたデータを同じ順序で呼び戻して、それを適切な順序でチャンクレットに復号するであろう。
任意選択で、符号化の前に、システムは、チャンクレットをビットのグループ(サブユニットとも呼ばれる)に分割し得、その各々はAビット長である。システムがチャンクレットをサブユニットに分割する場合、サブユニットがビットマーカーテーブルと比較され得る。システムがチャンクレットをサブユニットに分割しない場合、各チャンクレットがビットマーカーテーブルと比較され得る。
ビットマーカーテーブルは、ビットの一意のセットを一意のマーカーと相互に関連付ける。いくつかの実施形態では、ビットマーカーテーブルは、サブユニットが使用される場合にはサイズA、またはサブユニットが使用されない場合にはサイズNの、各一意のビット列に対するマーカーを含む。それ故、この方法では、コンピュータプログラムは、チャンクレットのセットを入力として受信し得る。それは、次いで、各チャンクレットを、同じサイズで、各々Aビット長のY個のサブユニットに分割し得、A/8は整数である。各一意のAに対して、テーブル内に1つのマーカーがあり得る。
このように、自動化プロトコルを通して、チャンクレットの受信後、コンピュータプログラム製品は、ビットマーカーテーブルをアクセスさせる。それに応じて、各チャンクレットまたはサブユニットは、入力として機能し得、各ビットマーカーは、出力として機能し得、それによりマーカーの出力セットを形成する。マーカーの出力セットは、翻訳されたか、コード化されたか、または符号化されたデータと呼ばれ得る。各チャンクレットが細分されない実施形態では、各チャンクレットは1つのマーカーを受信するであろう。チャンクレットが2つのサブユニットに分割される場合、それは、2つのマーカーに翻訳されるか、または符号化されるであろう。従って、コンピュータプログラム製品は、各チャンクレットに対応する少なくとも1つのマーカーを割り当てるために、マーカーを入力と相互に関連付けるビットマーカーテーブルを使用する。コンピュータプログラム製品は、各個々のマーカーに対応する異なる出力が生成されるように、各チャンクレットに対応するマーカーのセットを含む異なる出力が生成されるように、または、完全なファイルに対応するマーカーのセットを含む異なる出力が生成されるように、設計され得る。
前述のように、ビットマーカーテーブルは、X個のマーカーを含む。いくつかの実施形態では、Xは、本方法がチャンクレットをサブユニットに分割しない場合には、長さNのチャンクレット内のビットの異なる組合せの数、または本方法がチャンクレットを分割する場合には、長さAのサブユニット内のビットの異なる組合せの数のいずれかに等しい。文書タイプが分かっているか、または所与の長さのサブユニットもしくはチャンクレットに対するビットの全ての組合せよりも少ないと予測される場合、X(マーカーの数)は、ビットの考えられる組合せの実数よりも小さい可能性がある。例えば、いくつかの実施形態では、全てのビットマーカーが同じサイズであり、ビットマーカーテーブル内のビットマーカーの数が、サイズNまたはAのビット列内のビットの組合せの数に等しい。他の実施形態では、全てのビットマーカーが同じサイズであり、ビットマーカーテーブル内のビットマーカーの数が、サイズNまたはAのビット列内のビットの組合せの数の、90%未満、80%未満、70%未満、もしくは60%未満である。
例として、いくつかの実施形態では、各チャンクレットは、複数の0および/または1から成るコード(すなわち、マーカー)を割り当てられる。他の実施形態では、各チャンクレットは、各々が、複数の0および1から成るコード(すなわち、マーカー)を割り当てられている複数のサブユニットに分割される。サブユニットは、長さAによって定義され得、N/A=Yで、Yは整数である。サブユニットがその数のビットを有していない場合、例えば、1つ以上のサブユニットが、システムが入力として受信するように構成されているビット数よりも少ないビット数しか持たない場合、システムはビット、例えば、ゼロを、全てのサブユニットが同じサイズになるまで、追加し得る。このステップは、例えば、チャンクレットがサブユニットに分割された後、全てのチャンクレットが同じサイズであるかどうかをまず確かめない場合に、実行され得る。あるいは、前述のように、それは、チャンクレットをサブユニットに分割する前に、チャンクレットレベルで実行され得る。
上の説明で示唆するように、アルゴリズムは、ビット列をコード化されたデータのセットに翻訳するように構成され得、アルゴリズムは、ビット列が、チャンクレットまたは、チャンクレットのサブユニットのいずれかに対応するように、設計され得る。好ましくは、コード化されたデータのセットは、ホストまたはクライアントから受信される際のファイルよりも小さい。しかし、コード化されたデータのセットが元のデータよりも小さいかどうかに関わらず、それは、変換してファイルのチャンクレットに戻すことが可能である。当業者であれば認識するように、格納のためにホストから受信されるデータは、生データであり、従って、任意の文書タイプに対応できる。マーカーの出力は、前述のようなハッシュ値アルゴリズムへの入力のためのユーザー提供バッファユニットを形成するために、それらが結合されるのを可能にする順序であり得る。
符号化は、2つの独立した目的に役だち得る。第1に、格納のためにデータを符号化することにより、セキュリティが向上する。コードを知っている(すなわち、ビットマーカーテーブルにアクセスできる)人またはエンティティだけが、それを復号して文書を再構築することができる。第2に、コードが元の文書よりも少ないビットを使用して作成される場合、必要な記憶空間が少なくなって、費用を節約できる。
テーブル内のビットの少なくとも複数の一意の組合せに対して、好ましくは、システムがチャンクレットをサブユニットに分割しない場合、マーカーは、チャンクレット長Nよりも小さいか、またはシステムがチャンクレットをサブユニットに分割する場合には、サブユニット長Aよりも小さい。好ましくは、システムがチャンクレットをサブユニットに分割しない場合、どのマーカーもチャンクレット長Nよりも大きくないか、またはシステムがチャンクレットをサブユニットに分割する場合、どのマーカーもサブユニット長Aよりも大きくない。いくつかの実施形態では、全てのマーカーは、Nよりも小さいか、またはAよりも小さい。加えて、いくつかの実施形態では、各マーカーは、同じサイズであり得るか、または2つ以上のマーカーが異なるサイズであり得る。
前述のように、ビットマーカーテーブルは、マーカーをビット列に、生データに対してランダムまたは非ランダムに割り当て得、ビットマーカーは、均一または不均一なサイズであり得る。しかし、前述のようなビットマーカーテーブルの代わりに、頻度変換器を使用し得る。従って、ある文書タイプまたは文書のセット内により頻繁に出現すると見込まれる生データに対して、より小さいマーカーを割り当て得る。この方策は、全ての情報のほぼ80%が、最も頻出するサブユニットのほぼ上位20%内に含まれるという事実を利用する。言い換えれば、データに対応するサブユニットは、非常に繰返しが多い。
いくつかの実施形態では、異なるサイズの複数の変換されたビット列の全てに対して、Aビット長の第1の変換されたビット列、およびBビット長の第2の変換されたビット列があり、ここで、A<Bであって、第1の変換されたビット列のAビットの識別が、第2の変換されたビット列の最初のAビットの識別と同じでない。ビットマーカーテーブルまたは頻度変換器のいずれかから、マーカーを使用するとき、それらが異なるサイズである場合、それらは、どこで1つのマーカーが終わって、次が始まるかをシステムが知ることができるフォーマットにされる必要がある。これは、例えば、最小限のマーカーサイズを設定し、最小限のサイズの各ビット列がテーブルまたは変換器内で一意であるかどうかを問い合わせ、そうでない場合は、追加のビット(複数可)を読み取って、各追加のビットに対する問合わせを繰り返すことにより、ビット列を拡大し続ける、読取り分析を通して達成され得る。
情報が変換され得、出力コードは、ビットのグループを表すためにマーカーが使用されるので、入力よりも小さくなるように構成できる。従って、好ましくは、テーブル内で、少なくとも1つの、複数の、少なくとも50%の、少なくとも60%の、少なくとも70%の、少なくとも80%の、少なくとも90%の、または少なくとも95%の、マーカーが、サブユニットよりもサイズが小さい。しかし、変換されたデータを同じサイズにするか、またはホストから受信したか、もしくはハッシュ関数値アルゴリズムから生成したデータよりも長くするのを妨げる技術的障害はない。
別の実施形態によれば、前処理ステップは、(i)NバイトのI/Oストリームを(例えば、I/Oプロトコルを使用して)受信すること;(ii)Nバイトを、Xバイトのフラグメント化ユニットにフラグメント化すること;(iii)暗号化ハッシュ関数(値アルゴリズム)をXバイトの各フラグメント化ユニットに適用して、Xバイトの各フラグメント化ユニットに対して生成されたハッシュ関数値を形成すること;(iv)相関ファイルにアクセスすることであって、相関ファイルが、Yビットの格納されたハッシュ関数値を、複数の格納されたXバイトのシーケンスの各々と関連付けて、(a)Xバイトのフラグメント化ユニットに対して生成されたハッシュ関数値が相関ファイル内にある場合は、Yビットの格納されたハッシュ関数値をユーザー提供のバッファユニットとして使用し;(b)Xバイトのフラグメント化ユニットに対して生成されたハッシュ関数値が相関ファイル内にない場合は、Yビットの生成されたハッシュ関数値をXバイトのフラグメント化ユニットとともに相関ファイル内に格納し、生成されたハッシュ関数値をユーザー提供のバッファユニットとして使用する、相関ファイルにアクセスすること:を含む。
この前処理ハッシュ値アルゴリズムを使用する場合には、それらが矛盾している可能性に対処する必要がある。最新のハッシュ値関連付けが保持されて格納される、重複排除のための前述した方法に対する代替として、この任意選択の前処理ステップ中に、相関ファイル内の格納されたハッシュ関数値と同じであるが、ユーザー提供のチャンクレットが格納されたチャンクレットと異なる、ハッシュ関数値が生成される場合に、方法が、異なるZビットを格納されたハッシュ関数値および生成されたハッシュ関数値と関連付けさせる、矛盾解決モジュールを使用し得る。この技術は、2013年6月3日に出願された、米国特許出願第13/908,239号に記述されており、その開示全体が参照により組み込まれる。
このように、この前処理ステップは、第1のハッシュ値テーブルを利用し得、矛盾が存在しない全てのハッシュ関数値に対して、Zビットが関連付けられ、Zビットは、例えば、8〜16個のゼロの均一の長さである。限定されない例として、本方法は、チェックサムが、以前に格納されたチェックサムと矛盾しない場合、8バイトのチェックサムの端部に8個のゼロを結合させ得る。矛盾を識別した際には(例えば、異なるフラグメント化ユニットが同じチェックサムと関連付けられている)、最新のチェックサムが異なるZ値を割り当てられ得る。従って、相関ファイル内に格納された際のZ値が00000000の場合、第1の矛盾しているチェックサムに対するZ値は、00000001であり得、別の矛盾しているチェックサムがあるとすれば、00000010である。さらに矛盾しているチェックサムがある場合、矛盾しているチェックサムが識別されると、各矛盾しているチェックサムは次のZ値を割り当てられ得る。従って、相関ファイルがアクセスされた後、新しく生成されたハッシュ値が既に相関ファイル内にある場合に限り、矛盾モジュールがチェックとしてアクセスされ得る。矛盾モジュールは次いで、矛盾があるか、またはチェックサムおよび受信したファイルからのフラグメント化ユニットの両方が、既に相関ファイル内で互いに関連付けられているかを判断するであろう。これらの拡張ファイルは、格納されたハッシュ値の格納されたバッファユニットとの関連付けの置換え、または上書きに対する代替手段である。これらの拡張をもつチェックサムは、入力をユーザー提供のバッファユニットとして形成するために必要なサイズに結合され得る。
前処理ステップがハッシュ値アルゴリズムを使用する任意の場合に、適用される第1のハッシュ値アルゴリズムが、第1のハッシュ値アルゴリズムまたは第1のハッシュ値テーブルを利用する前処理ハッシュ値アルゴリズムと呼ばれ得、第2のハッシュ値アルゴリズムが、重複排除ハッシュ値アルゴリズムまたは第2のハッシュ値テーブルを利用する第2のハッシュ値アルゴリズムと呼ばれ得る。前処理ハッシュ値アルゴリズムおよび第2のハッシュ値アルゴリズムの両方が使用される場合には、前述のように、好ましくは、重複排除ハッシュ値アルゴリズムの使用時に矛盾に対処するために、対応するハッシュ値テーブルが、最新の関連付けを好んで選択することにより、矛盾している関連付けの間で解決し、他方、前処理ハッシュ値アルゴリズムの使用時に矛盾に対処するために、対応するハッシュ値テーブルが、前述のような拡張方法を使用する。
前処理技術を使用する場合、出力、例えば、ビットマーカーは、バッファユニットと同じサイズであり得る。いくつかの実施形態では、ビットマーカーは、バッファユニットのサイズよりも大きい可能性がある。これらの場合、システムは、それらをフラグメント化して、バッファユニットを形成し得るか、または、コード化するデータよりも大きい、いずれのビットマーカーも拒絶して、代わりに、元の生データを使用してバッファユニットを形成し、それにより、ビットマーカーテーブルへのアクセスを迂回する、デフォルトモジュールを含み得る。他の実施形態では、それらは、小さい可能性があり、結合してバッファユニットを形成するか、またはバッファユニットにフラグメント化されるバッファを形成する必要がある。これらのステップは、コンピュータプログラム製品内のモジュールに従い、サーバー上で、クラウド内で、またはCPUによって実施され得る。
データの前処理が書込みプロセスの一部である場合、データの後処理が読取りプロセスの一部でなければならない。本発明の重複排除ステップの読取りとは異なり、後処理ステップは、前処理ステップと対称的であるが、逆の順番で実施される。
さらに、本発明の様々な実施形態が、データの損失を防ぐための他の方法と組み合わせて使用され得る。ある実施形態では、データのバックアップを容易にするために2つのメディエータを使用し得る。例えば、第1のメディエータでは、第1の記録媒体上に格納されるデータファイルをファイル名と相互に関連付け得る。前述のように、第1のメディエータは、ファイル名を識別するユーザーまたはエンティティがデータファイルを記録媒体から取得するのを可能にするように構成される。
第2のメディエータを生成する、データ保護プロトコルが実行され得る。第2のメディエータは、時間T1における第1のメディエータの正確なコピーであろう。従って、T1において、第1のメディエータおよび第2のメディエータの両方は、第1の記録媒体上の同じLBAを指す。
時間T1の後、例えばT2において、ホストは、例えば、所与のセクターまたはセクタークラスタ上の、所与の位置内に格納されていると信じるファイルを更新しようとし得る。ホストは、第1の記憶アドレス(複数可)に格納されたデータを変更しない。NCM上の情報を上書きさせるのではなく、第1のメディエータは、更新されたファイルであるとホストが信じるものに対応する新しい相関関係エントリを生成し得る。NCM上に書き込まれるバッファユニットの全部ではないにしろ、ほとんどが一意のエントリであるので、メディエータ上の新しい相関関係は、元の相関関係におけるものとは異なるバッファユニットに対してのみ、元の相関関係と異なるであろう。従って、T0においてファイル(A)に対し、第1のメディエータは、次の本当のLBA:200、201、202、203、204、205、206を相互に関連付け得る。T1において、メディエータのコピーが作成され得る。T2において、ユーザーは、ファイル(A)を更新しようとし得る。第1のメディエータ上で、次の本当のLBA:200、201、310、203、204、205、206を指す、新しい相関関係が保存され得る。しかし、第2のメディエータは変更されないであろう。従って、それらは、それらがどこを指すかが、異なるであろう。以前に保存された相関関係は、第1のメディエータ上で非アクティブにされるか、または削除されるか、または上書きされ得る。
2つのメディエータのこの使用は、ファイルが、T1およびT2の両方において存在していたとおりに格納されていることを示すように、ホストに、そのファイルシステムを更新させる必要なく、データがT1において存在するとおりにそのデータのスナップショットを提供するのを可能にする。従って、スナップショットは、時間T1において格納されている全てのデータファイルをロックして、いずれも、それらの物理ファイルを通して削除または書込みが行われるのを防ぐ。しかし、ホストがそれらのファイルを修正したい場合、実際にはファイルの新しい部分のみが格納されて、新しいメディエータエントリが作成されるときに、ホストは、それを行っていると思い込んで動作できる。
上で示唆するように、この方法は、第1のメディエータ、第2のメディエータおよび非キャッシュ媒体を含むシステムによって実装され得る。第1のメディエータ、第2のメディエータおよび記録媒体の各々は、持続性媒体を含むか、基本的にそれから成るか、またはそれから成り得る、別個の装置上に格納され得るか、または別個の装置から形成され得る。加えて、システム内で、メディエータおよび記録媒体は、互いに、ならびに任意選択で、命令を格納する1つ以上のコンピュータまたはCPUに、動作可能に結合されて、それらに、それらの意図する機能を実行させ、ネットワークを経由して、1つ以上のホストへ1つ以上のポータルを通して通信させる。さらになお、この実施形態は2つのメディエータの使用と関連して説明されているが、2つの別個のメディエータではなく、同じメディエータの2つのセクションを使用するシステムを実装できる。
データをバックアップするための前述のシステムが、2つのメディエータのコンテキストで説明される。しかし、格納されたファイルの履歴またはファイルのバージョンを捕捉するために3つ以上のメディエータが使用できる。例えば、少なくとも3つ、少なくとも4つ、少なくとも5つ、または少なくとも10のメディエータなど、が使用され得る。追加として、ホストは、メディエータに、一定の間隔で(例えば、毎週、毎月、3か月ごともしくは毎年)または不規則な間隔で(例えば、要求に応じて)、スナップショットを取らせ得る。
データをバックアップするための別の方法によれば、非キャッシュ媒体のクローンが作成され得る。この方法では、第1のメディエータ内で、複数のファイル名を、非キャッシュ記憶媒体上に格納されている複数のデータ位置と相互に関連付ける。第1のメディエータは、特定のファイル名を識別するユーザーが、特定のファイル名に対応する第1の非キャッシュ記憶媒体からデータファイルを取得するのを可能にするように構成されている。特定ファイルの一部または全体が、第1のセクターまたはセクタークラスタ内に格納され得る。
複数のデータファイル(または第1の非キャッシュ記憶媒体の全てのデータファイル)のコピーを第2の非キャッシュ記憶媒体および第2のメディエータに対して作成し得る。第2のメディエータは、時間T1における第1のメディエータのコピーであり、第2の非キャッシュ記憶媒体に動作可能に結合されている。T1の後である、時間T2において、ユーザーは、システムに、第1の非キャッシュ記憶媒体上の前記第1のセクターまたはセクタークラスタ内に格納されているデータファイルに対する修正を保存するように指示し得る。新しいバッファユニット(またはハッシュ値とアクティブに関連付けられていないバッファユニット)のみが第1の非キャッシュ記憶媒体に追加され得、第1の非キャッシュ記憶媒体上のデータの上書きはないであろう。代わりに、新しい相関関係が第1のメディエータ上に書き込まれ得る。第2のメディエータまたは第2の非キャッシュ記憶媒体に対する変更は行われない。ユーザーがT2の後にファイルを要求すると、彼または彼女は、第1のメディエータを経由して、直前に格納されたファイルのバージョンを取得するであろう。しかし、システム管理者は、第2の非キャッシュ媒体上に格納されて、第2のメディエータを経由することにより取得し得た、前のバージョンにアクセスしていたであろう。
この方法は、第1のメディエータ、第2のメディエータ、第1の非キャッシュ記憶媒体および第2の非キャッシュ記憶媒体を含む、システムによって実装され得る。第1のメディエータ、第2のメディエータならびにデータファイルを格納するための第1および第2の記録媒体の各々は、持続性媒体を含むか、基本的にそれから成るか、またはそれから成り得る、別個の装置上に格納され得る。いくつかの実施形態では、第1の非キャッシュ媒体内に格納されている、最新のファイルは、従来のファイルが第2の非キャッシュ媒体内に有するのと同じLUNを有する。
本明細書で説明する様々な実施形態の特徴のいずれも、特別の定めのない限り、開示する任意の他の実施形態に関連して説明する特徴と併用できる。従って、様々な、または特定の実施形態に関連して説明する特徴は、かかる排他性が明記されていないか、またはコンテキストから暗黙的でない限り、本明細書で説明する他の実施形態に関連して適切でないと解釈されるべきでない。

Claims (18)

  1. データを格納するための方法であって、前記方法が、
    データのストリームを受信することと、
    前記データのストリームをフラグメント化ユニットにフラグメント化することであって、各フラグメント化ユニットに対して、
    (A)ハッシュ関数を前記フラグメント化ユニットに適用して、前記フラグメント化ユニットと関連付けられているハッシュ関数値を生成し、
    (B)前記ハッシュ関数値が、ハッシュ関数値をフラグメント化ユニットと相関させるエントリを含む相関ファイル内にあるかどうかを判断し、
    (i)前記フラグメント化ユニットに対する生成されたハッシュ関数値が前記相関ファイル内にない場合には、前記ハッシュ関数値を前記フラグメント化ユニットと相関させる相関ファイル内にエントリを作成し、前記フラグメント化ユニットを非キャッシュ記録媒体内に格納し、
    (ii)前記フラグメント化ユニットに対する生成されたハッシュ関数値が前記相関ファイル内にある場合には、矛盾があるかどうかを判断し、前記フラグメント化ユニットが、前記ハッシュ関数値と関連付けられている相関ファイル内の格納されたフラグメント化ユニットとは異なるときに矛盾が起こり、
    (a)矛盾がある場合には、前記フラグメント化ユニットを前記非キャッシュ記録媒体内に格納し、前記ハッシュ関数値に対する相関関係テーブル内で前記エントリを更新して、前記ハッシュ関数値を前記フラグメント化ユニットと関連付け、
    (b)矛盾が全くない場合には、前記ハッシュ関数値を前記非キャッシュ記録媒体上に格納する
    ことと、
    を備える、方法。
  2. 前記非キャッシュ記録媒体がランダムアクセスメモリを備える、請求項1に記載の方法。
  3. 前記ランダムアクセスメモリに書き込まれるデータのサイズが、前記データのストリームのサイズ未満である、請求項2に記載の方法。
  4. 前記方法が、前記データのストリーム内の冗長データが格納される回数を最小限にする、請求項1に記載の方法。
  5. 前記フラグメント化ユニットが複数のチャンクレットを備え、前記チャンクレットが順序を有し、前記方法が、各フラグメント化ユニットに対して、
    ビットマーカーのセットからビットマーカーを各チャンクレットに割り当てることと、
    前記ビットマーカーを前記フラグメント化ユニットとして使用することと、
    により、前記フラグメント化ユニットを前処理することをさらに備える、請求項1に記載の方法。
  6. 前記ビットマーカーのうちの少なくとも1つが、サイズにおいて前記チャンクレットのうちの少なくとも1つより小さい、請求項5に記載の方法。
  7. 前記ビットマーカーを、ビットマーカーをチャンクレットに関係させるビットマーカーテーブル内に格納することをさらに備える、請求項5に記載の方法。
  8. 前記ビットマーカーを各チャンクレットに割り当てることが、ビットマーカーテーブルおよび頻度変換器のうちの1つにアクセスすることを備える、請求項5に記載の方法。
  9. データを格納するためのシステムであって、前記システムが、
    ハッシュ関数値をデータのフラグメント化ユニットと相関させるエントリを含む相関ファイルを格納するメモリと、
    命令を実行するプロセッサであって、前記命令は、前記プロセッサに、
    データのストリームを受信し、
    前記データのストリームをフラグメント化ユニットにフラグメント化し、各フラグメント化ユニットに対して、
    (A)ハッシュ関数を前記フラグメント化ユニットに適用して、前記フラグメント化ユニットと関連付けられているハッシュ関数値を生成し、
    (B)前記ハッシュ関数値が前記相関ファイル内にあるかどうかを判断し、
    (i)前記フラグメント化ユニットに対する生成されたハッシュ関数値が前記相関ファイル内にない場合には、前記ハッシュ関数値を前記フラグメント化ユニットと相関させる相関ファイル内にエントリを作成し、前記フラグメント化ユニットを非キャッシュ記録媒体内に格納し、
    (ii)前記フラグメント化ユニットに対する生成されたハッシュ関数値が前記相関ファイル内にある場合には、矛盾があるかどうかを判断し、前記フラグメント化ユニットが、前記ハッシュ関数値と関連付けられている相関ファイル内の格納されたフラグメント化ユニットとは異なるときに矛盾が起こり、
    (a)矛盾がある場合には、前記フラグメント化ユニットを前記非キャッシュ記録媒体内に格納し、前記ハッシュ関数値に対する相関関係テーブル内で前記エントリを更新して、前記ハッシュ関数値を前記フラグメント化ユニットと関連付け、
    (b)矛盾が全くない場合には、前記ハッシュ関数値を前記非キャッシュ記録媒体上に格納する
    ようにさせる、プロセッサと、
    を備える、システム。
  10. 前記非キャッシュ記録媒体がランダムアクセスメモリを備える、請求項9に記載のシステム。
  11. 前記メモリがランダムアクセスメモリを備える、請求項9に記載のシステム。
  12. 前記ランダムアクセスメモリに書き込まれるデータのサイズが、前記データのストリームのサイズ未満である、請求項10または11に記載のシステム。
  13. 前記システムが、前記データのストリーム内の冗長データが格納される回数を最小限にする、請求項9に記載のシステム。
  14. 前記システムが、
    前記生成されたハッシュ関数値が前記相関ファイル内のハッシュ関数値の重複でない場合、または、
    前記生成されたハッシュ関数値が前記相関ファイル内の格納されたハッシュ関数値の重複であり、かつ矛盾がある場合
    にのみ、前記フラグメント化ユニットを前記非キャッシュ記録媒体に書き込む、請求項9に記載のシステム。
  15. 前記フラグメント化ユニットが複数のチャンクレットを備え、前記チャンクレットが順序を有し、前記システムが、各フラグメント化ユニットに対して、
    ビットマーカーのセットからビットマーカーを各チャンクレットに割り当てて、複数のビットマーカーのセットを形成することと、
    前記ビットマーカーを前記フラグメント化ユニットとして使用することと、
    により、前記フラグメント化ユニットを前処理するようにさらに構成されている、請求項9に記載のシステム。
  16. 前記ビットマーカーのうちの少なくとも1つが、サイズにおいて前記チャンクレットのうちの少なくとも1つより小さい、請求項15に記載のシステム。
  17. 前記システムが、前記ビットマーカーを、ビットマーカーをチャンクレットに関係させるビットマーカーテーブル内に格納するようにさらに構成されている、請求項15に記載のシステム。
  18. 前記ビットマーカーを各チャンクレットに割り当てることが、ビットマーカーテーブルおよび頻度変換器のうちの1つにアクセスすることを備える、請求項15に記載のシステム。
JP2018099121A 2013-02-01 2018-05-23 格納されたデータにおける冗長削減 Pending JP2018152116A (ja)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US13/756,921 2013-02-01
US13/756,921 US20140223118A1 (en) 2013-02-01 2013-02-01 Bit Markers and Frequency Converters
US13/797,093 US10133636B2 (en) 2013-03-12 2013-03-12 Data storage and retrieval mediation system and methods for using same
US13/797,093 2013-03-12
US13/908,239 2013-06-03
US13/908,239 US9467294B2 (en) 2013-02-01 2013-06-03 Methods and systems for storing and retrieving data

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2015556181A Division JP6345698B2 (ja) 2013-02-01 2014-01-31 格納されたデータにおける冗長削減

Publications (1)

Publication Number Publication Date
JP2018152116A true JP2018152116A (ja) 2018-09-27

Family

ID=51260352

Family Applications (4)

Application Number Title Priority Date Filing Date
JP2015556181A Expired - Fee Related JP6345698B2 (ja) 2013-02-01 2014-01-31 格納されたデータにおける冗長削減
JP2015556178A Expired - Fee Related JP6352308B2 (ja) 2013-02-01 2014-01-31 データを格納および取得するための方法およびシステム
JP2018099121A Pending JP2018152116A (ja) 2013-02-01 2018-05-23 格納されたデータにおける冗長削減
JP2018108556A Pending JP2018152126A (ja) 2013-02-01 2018-06-06 データを格納および取得するための方法およびシステム

Family Applications Before (2)

Application Number Title Priority Date Filing Date
JP2015556181A Expired - Fee Related JP6345698B2 (ja) 2013-02-01 2014-01-31 格納されたデータにおける冗長削減
JP2015556178A Expired - Fee Related JP6352308B2 (ja) 2013-02-01 2014-01-31 データを格納および取得するための方法およびシステム

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2018108556A Pending JP2018152126A (ja) 2013-02-01 2018-06-06 データを格納および取得するための方法およびシステム

Country Status (12)

Country Link
US (2) US9467294B2 (ja)
EP (2) EP2951703B1 (ja)
JP (4) JP6345698B2 (ja)
KR (2) KR20150119880A (ja)
CN (3) CN105190573B (ja)
AU (2) AU2014212163A1 (ja)
BR (1) BR112015018448A2 (ja)
CA (2) CA2900034A1 (ja)
HK (2) HK1219156A1 (ja)
MX (2) MX2015009953A (ja)
PH (2) PH12015501699A1 (ja)
WO (2) WO2014121102A2 (ja)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9628108B2 (en) 2013-02-01 2017-04-18 Symbolic Io Corporation Method and apparatus for dense hyper IO digital retention
US9304703B1 (en) * 2015-04-15 2016-04-05 Symbolic Io Corporation Method and apparatus for dense hyper IO digital retention
US9817728B2 (en) 2013-02-01 2017-11-14 Symbolic Io Corporation Fast system state cloning
US10133636B2 (en) 2013-03-12 2018-11-20 Formulus Black Corporation Data storage and retrieval mediation system and methods for using same
US9519805B2 (en) * 2013-08-01 2016-12-13 Cellco Partnership Digest obfuscation for data cryptography
WO2015125765A1 (ja) * 2014-02-18 2015-08-27 日本電信電話株式会社 セキュリティ装置、その方法、およびプログラム
US10185842B2 (en) * 2015-03-18 2019-01-22 Intel Corporation Cache and data organization for memory protection
US10061514B2 (en) 2015-04-15 2018-08-28 Formulus Black Corporation Method and apparatus for dense hyper IO digital retention
US20170220498A1 (en) * 2016-02-01 2017-08-03 Symbolic Io Corporation Apparatus for personality and data transfer via physical movement of a fast memory transfer device
JP2019514146A (ja) * 2016-04-04 2019-05-30 フォーミュルス ブラック コーポレーション 高速システム状態クローニング
CN106230907B (zh) * 2016-07-22 2019-05-14 华南理工大学 一种社保大数据可视化方法及系统
CN107783728B (zh) * 2016-08-31 2021-07-23 百度在线网络技术(北京)有限公司 数据存储方法、装置和设备
CN109074226B (zh) * 2016-09-28 2020-03-20 华为技术有限公司 一种存储系统中重复数据删除方法、存储系统及控制器
CN106528703A (zh) * 2016-10-26 2017-03-22 杭州宏杉科技股份有限公司 一种重复删除的模式切换方法及装置
CN108241710A (zh) * 2016-12-27 2018-07-03 中移(苏州)软件技术有限公司 一种文件创建方法、装置以及文件查询方法、装置
US11341488B2 (en) * 2017-02-06 2022-05-24 Northern Trust Corporation Systems and methods for issuing and tracking digital tokens within distributed network nodes
KR101963822B1 (ko) * 2017-02-27 2019-04-01 충남대학교산학협력단 프로그램 분류 방법 및 장치
US10873781B2 (en) 2017-06-13 2020-12-22 Comcast Cable Communications, Llc Video fragment file processing
US11366790B2 (en) 2017-10-30 2022-06-21 AtomBeam Technologies Inc. System and method for random-access manipulation of compacted data files
US11232076B2 (en) 2017-10-30 2022-01-25 AtomBeam Technologies, Inc System and methods for bandwidth-efficient cryptographic data transfer
US10509771B2 (en) * 2017-10-30 2019-12-17 AtomBeam Technologies Inc. System and method for data storage, transfer, synchronization, and security using recursive encoding
WO2019126072A1 (en) 2017-12-18 2019-06-27 Formulus Black Corporation Random access memory (ram)-based computer systems, devices, and methods
CN108984719B (zh) * 2018-07-10 2021-08-03 上海达梦数据库有限公司 基于列存储的数据删除方法、装置、服务器及存储介质
CN109521954B (zh) * 2018-10-12 2021-11-16 许继集团有限公司 一种配网ftu定点文件管理方法及装置
CN109710668B (zh) * 2018-11-29 2021-05-04 中国电子科技集团公司第二十八研究所 一种多源异构数据访问中间件构建方法
WO2020142431A1 (en) 2019-01-02 2020-07-09 Formulus Black Corporation Systems and methods for memory failure prevention, management, and mitigation
WO2020264522A1 (en) * 2019-06-27 2020-12-30 Atombeam Technologies, Inc. Data storage, transfer, synchronization, and security using recursive encoding
SG11202001978YA (en) 2019-09-11 2020-04-29 Alibaba Group Holding Ltd Shared blockchain data storage based on error correction coding in trusted execution environments
EP4052136A4 (en) * 2019-10-28 2023-11-01 Atombeam Technologies Inc. SYSTEM AND METHODS FOR EFFICIENT BANDWIDTH CRYPTOGRAPHIC DATA TRANSFER
CN113472512A (zh) * 2021-06-10 2021-10-01 东软集团股份有限公司 智能合约执行方法、装置、存储介质及电子设备
CN114676117B (zh) * 2022-05-27 2022-08-16 成都明途科技有限公司 一种岗位数据存储方法、装置及岗位机器人
CN116303124B (zh) * 2023-03-29 2024-01-30 浙江正泰仪器仪表有限责任公司 一种数据搜索方法、装置、电子设备及存储介质

Family Cites Families (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL112793C (ja) 1957-04-23
US3016527A (en) 1958-09-04 1962-01-09 Bell Telephone Labor Inc Apparatus for utilizing variable length alphabetized codes
GB1564563A (en) 1977-05-25 1980-04-10 Int Computers Ltd Data sotrage apparatus
US4286256A (en) 1979-11-28 1981-08-25 International Business Machines Corporation Method and means for arithmetic coding utilizing a reduced number of operations
US4635141A (en) 1982-10-13 1987-01-06 United States Design Corporation Method and apparatus for storing data on magnetic or optical media
FR2668867B1 (fr) 1990-11-02 1993-01-29 Burger Jacques Procede de codage binaire a taux de basculement des elements binaires sensiblement uniforme, et procedes d'incrementation et de decrementation correspondants.
US7124302B2 (en) * 1995-02-13 2006-10-17 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
JP3277792B2 (ja) * 1996-01-31 2002-04-22 株式会社日立製作所 データ圧縮方法および装置
US5818877A (en) 1996-03-14 1998-10-06 The Regents Of The University Of California Method for reducing storage requirements for grouped data values
US6465969B1 (en) 1997-08-04 2002-10-15 Lumimove, Inc. Electroluminescent display intelligent controller
US6052785A (en) 1997-11-21 2000-04-18 International Business Machines Corporation Multiple remote data access security mechanism for multitiered internet computer networks
JP2000059227A (ja) 1998-08-07 2000-02-25 Matsushita Electric Ind Co Ltd 符号化/復号化装置、及び符号化/復号化方法
US6297753B1 (en) 1999-01-29 2001-10-02 Victor Company Of Japan, Ltd. Eight-to-fifteen modulation using no merging bit and optical disc recording or reading systems based thereon
US6785815B1 (en) * 1999-06-08 2004-08-31 Intertrust Technologies Corp. Methods and systems for encoding and protecting data using digital signature and watermarking techniques
US6560599B1 (en) 1999-06-30 2003-05-06 Microsoft Corporation Method and apparatus for marking a hash table and using the marking for determining the distribution of records and for tuning
JP4351409B2 (ja) * 1999-08-31 2009-10-28 富士通株式会社 ファイル装置及びファイルアクセス方法
US6829695B1 (en) 1999-09-03 2004-12-07 Nexql, L.L.C. Enhanced boolean processor with parallel input
DE60042965D1 (de) * 2000-05-24 2009-10-29 Sony Deutschland Gmbh Dienstqualitätsunterhandlung
US7274697B2 (en) * 2000-11-16 2007-09-25 Tensilica, Inc. Fast IP route lookup with 16/K and 16/Kc compressed data structures
US8290160B1 (en) * 2001-10-17 2012-10-16 Appalachian Technologies Corporation of Pennsylvania Method and apparatus for secured facsimile transmission
US20030115447A1 (en) 2001-12-18 2003-06-19 Duc Pham Network media access architecture and methods for secure storage
CA2364820A1 (en) 2001-12-11 2003-06-11 Ibm Canada Limited-Ibm Canada Limitee Variable length encoding and decoding of ascending numerical sequences
US7587408B2 (en) 2002-03-21 2009-09-08 United States Postal Service Method and system for storing and retrieving data using hash-accessed multiple data stores
US6674908B1 (en) * 2002-05-04 2004-01-06 Edward Lasar Aronov Method of compression of binary data with a random number generator
JP4304360B2 (ja) 2002-05-22 2009-07-29 日本電気株式会社 音声符号化復号方式間の符号変換方法および装置とその記憶媒体
US7065619B1 (en) 2002-12-20 2006-06-20 Data Domain, Inc. Efficient data storage system
US20040143733A1 (en) 2003-01-16 2004-07-22 Cloverleaf Communication Co. Secure network data storage mediator
US7383378B1 (en) 2003-04-11 2008-06-03 Network Appliance, Inc. System and method for supporting file and block access to storage object on a storage appliance
US7143251B1 (en) 2003-06-30 2006-11-28 Data Domain, Inc. Data storage using identifiers
US7849063B2 (en) * 2003-10-17 2010-12-07 Yahoo! Inc. Systems and methods for indexing content for fast and scalable retrieval
US7290116B1 (en) * 2004-06-30 2007-10-30 Sun Microsystems, Inc. Level 2 cache index hashing to avoid hot spots
US8300956B2 (en) 2004-07-29 2012-10-30 Oce-Technologies B.V. Lossless compression of color image data using entropy encoding
US7457800B2 (en) 2004-10-06 2008-11-25 Burnside Acquisition, Llc Storage system for randomly named blocks of data
US7330322B2 (en) 2005-01-28 2008-02-12 Seagate Technology Llc Utilizing a combination of physical tracks and virtual tracks to store data on a data storage medium
US7617370B2 (en) 2005-04-29 2009-11-10 Netapp, Inc. Data allocation within a storage system architecture
US7921088B1 (en) 2005-07-22 2011-04-05 X-Engines, Inc. Logical operations encoded by a function table for compressing index bits in multi-level compressed look-up tables
US7480766B2 (en) * 2005-08-03 2009-01-20 Sandisk Corporation Interfacing systems operating through a logical address space and on a direct data file basis
CA2647259A1 (en) * 2006-03-24 2007-10-04 University Of Mississippi High-speed data compression based on set associative cache mapping techniques
JP2007272826A (ja) * 2006-03-31 2007-10-18 Sharp Corp 情報処理装置、情報処理方法、情報処理プログラム、および記録媒体
CA2546148A1 (en) * 2006-05-09 2007-11-09 Nikolajs Volkovs Method, system and computer program for polynomial based hashing and message authentication coding with separate generation of spectrums
US7962499B2 (en) * 2006-08-18 2011-06-14 Falconstor, Inc. System and method for identifying and mitigating redundancies in stored data
AU2006204634B2 (en) 2006-08-31 2009-10-29 Canon Kabushiki Kaisha Runlength encoding of leading ones and zeros
JP2008165293A (ja) * 2006-12-27 2008-07-17 Seiko Epson Corp データ検索装置、デバイス管理装置、データ検索方法、およびコンピュータプログラム
JP4990066B2 (ja) * 2007-08-21 2012-08-01 株式会社日立製作所 論理ボリュームのペアを利用したデータ保存の方式を変更する機能を備えたストレージシステム
US9413825B2 (en) 2007-10-31 2016-08-09 Emc Corporation Managing file objects in a data storage system
GB0721648D0 (en) * 2007-11-05 2007-12-19 Roke Manor Research Internet data processing systems
US20090169001A1 (en) 2007-12-28 2009-07-02 Cisco Technology, Inc. System and Method for Encryption and Secure Transmission of Compressed Media
US8214425B2 (en) 2008-01-29 2012-07-03 Mitel Networks Corporation System and method for storing a program using partial compression
WO2009095956A1 (ja) 2008-01-31 2009-08-06 Fujitsu Limited データ圧縮・復元方法及び圧縮・復元プログラム
JP2009251725A (ja) * 2008-04-02 2009-10-29 Hitachi Ltd 記憶制御装置及び記憶制御装置を用いた重複データ検出方法。
US8745336B2 (en) 2008-05-29 2014-06-03 Vmware, Inc. Offloading storage operations to storage hardware
US8527482B2 (en) 2008-06-06 2013-09-03 Chrysalis Storage, Llc Method for reducing redundancy between two or more datasets
JP5414223B2 (ja) * 2008-09-16 2014-02-12 株式会社日立ソリューションズ インターネットバックアップにおける転送データ管理システム
US8412677B2 (en) * 2008-11-26 2013-04-02 Commvault Systems, Inc. Systems and methods for byte-level or quasi byte-level single instancing
US8200923B1 (en) * 2008-12-31 2012-06-12 Emc Corporation Method and apparatus for block level data de-duplication
JP5413948B2 (ja) 2009-01-27 2014-02-12 日本電気株式会社 ストレージシステム
EP2214315A1 (en) 2009-01-30 2010-08-04 Thomson Licensing Method and device for encoding a bit sequence
JP4816740B2 (ja) * 2009-02-09 2011-11-16 ソニー株式会社 情報処理装置、および情報処理方法、並びにプログラム
US8140491B2 (en) 2009-03-26 2012-03-20 International Business Machines Corporation Storage management through adaptive deduplication
US8812570B2 (en) * 2009-05-28 2014-08-19 Red Hat, Inc. String hashing using a number generator
CN102484484B (zh) 2009-08-25 2014-08-20 富士通株式会社 发送机、编码装置、接收机以及解码装置
JP2011082878A (ja) 2009-10-09 2011-04-21 Sony Corp 符号化装置、復号装置、情報処理システム、符号化方法およびプログラム
US8351600B2 (en) 2009-10-30 2013-01-08 Cleversafe, Inc. Distributed storage network and method for encrypting and decrypting data using hash functions
JP4892072B2 (ja) * 2010-03-24 2012-03-07 株式会社東芝 ホスト装置と連携して重複データを排除するストレージ装置、同ストレージ装置を備えたストレージシステム、及び同システムにおける重複排除方法
JP5594828B2 (ja) * 2010-07-21 2014-09-24 学校法人東京電機大学 データ分散保管装置及び方法及びプログラム及び記録媒体
US8831221B2 (en) * 2010-09-28 2014-09-09 Lsi Corporation Unified architecture for crypto functional units
US9104326B2 (en) 2010-11-15 2015-08-11 Emc Corporation Scalable block data storage using content addressing
US8918607B2 (en) 2010-11-19 2014-12-23 International Business Machines Corporation Data archiving using data compression of a flash copy
US20120239860A1 (en) 2010-12-17 2012-09-20 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US8892845B2 (en) * 2010-12-22 2014-11-18 Cleversafe, Inc. Segmenting data for storage in a dispersed storage network
US9639543B2 (en) * 2010-12-28 2017-05-02 Microsoft Technology Licensing, Llc Adaptive index for data deduplication
WO2012117658A1 (ja) * 2011-02-28 2012-09-07 日本電気株式会社 ストレージシステム
US8539008B2 (en) 2011-04-29 2013-09-17 Netapp, Inc. Extent-based storage architecture
US8620865B2 (en) 2011-06-24 2013-12-31 Netapp, Inc. System and method for providing a unified storage system that supports file/object duality
US20140082324A1 (en) * 2012-09-14 2014-03-20 Reuven Elhamias Method and Storage Device for Using File System Data to Predict Host Device Operations
US20140223118A1 (en) 2013-02-01 2014-08-07 Brian Ignomirello Bit Markers and Frequency Converters
US10133636B2 (en) 2013-03-12 2018-11-20 Formulus Black Corporation Data storage and retrieval mediation system and methods for using same

Also Published As

Publication number Publication date
WO2014121109A3 (en) 2015-03-19
US20140223196A1 (en) 2014-08-07
US20170026172A1 (en) 2017-01-26
CN105339904B (zh) 2019-10-11
US9467294B2 (en) 2016-10-11
JP2016509309A (ja) 2016-03-24
JP6345698B2 (ja) 2018-06-20
WO2014121102A2 (en) 2014-08-07
EP2951701A2 (en) 2015-12-09
JP6352308B2 (ja) 2018-07-04
JP2016509310A (ja) 2016-03-24
BR112015018448A2 (pt) 2017-10-03
US9584312B2 (en) 2017-02-28
CN105190573B (zh) 2019-05-17
WO2014121109A2 (en) 2014-08-07
CA2900034A1 (en) 2014-08-07
KR20150121703A (ko) 2015-10-29
CA2900030A1 (en) 2014-08-07
WO2014121102A3 (en) 2014-10-09
HK1219155A1 (zh) 2017-03-24
KR20150119880A (ko) 2015-10-26
CN110083552A (zh) 2019-08-02
CN105339904A (zh) 2016-02-17
EP2951703A2 (en) 2015-12-09
EP2951703A4 (en) 2016-09-21
PH12015501698A1 (en) 2015-10-19
EP2951701A4 (en) 2016-10-26
EP2951703B1 (en) 2020-04-08
MX2015009954A (es) 2016-01-15
AU2014212163A1 (en) 2015-08-20
AU2014212170A1 (en) 2015-08-20
HK1219156A1 (zh) 2017-03-24
JP2018152126A (ja) 2018-09-27
PH12015501699A1 (en) 2015-10-19
MX2015009953A (es) 2017-09-01
CN105190573A (zh) 2015-12-23

Similar Documents

Publication Publication Date Title
JP6345698B2 (ja) 格納されたデータにおける冗長削減
US9880746B1 (en) Method to increase random I/O performance with low memory overheads
US7831789B1 (en) Method and system for fast incremental backup using comparison of descriptors
US9323465B2 (en) Systems and methods for persistent atomic storage operations
US9563555B2 (en) Systems and methods for storage allocation
US8051050B2 (en) Block-level data de-duplication using thinly provisioned data storage volumes
US10768843B2 (en) Optmizing metadata management in data deduplication
US7814149B1 (en) Client side data deduplication
US20190146881A1 (en) Data storage and retrieval mediation system and methods for using same
US10936228B2 (en) Providing data deduplication in a data storage system with parallelized computation of crypto-digests for blocks of host I/O data
US8131688B2 (en) Storage system data compression enhancement
US10380141B1 (en) Fast incremental backup method and system
US10223377B1 (en) Efficiently seeding small files with certain localities
US20230236725A1 (en) Method to opportunistically reduce the number of SSD IOs, and reduce the encryption payload, in an SSD based cache in a deduplication file system
US11112987B2 (en) Optmizing data deduplication

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180523

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190328

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190409

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190705

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200107

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20200325

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20200605

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20200908