JP2016509309A - データを格納および取得するための方法およびシステム - Google Patents

データを格納および取得するための方法およびシステム Download PDF

Info

Publication number
JP2016509309A
JP2016509309A JP2015556178A JP2015556178A JP2016509309A JP 2016509309 A JP2016509309 A JP 2016509309A JP 2015556178 A JP2015556178 A JP 2015556178A JP 2015556178 A JP2015556178 A JP 2015556178A JP 2016509309 A JP2016509309 A JP 2016509309A
Authority
JP
Japan
Prior art keywords
file
bit
data
subunit
mediator
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
JP2015556178A
Other languages
English (en)
Other versions
JP2016509309A5 (ja
JP6352308B2 (ja
Inventor
イグノミレロ,ブライアン
Original Assignee
シンボリック アイオー コーポレーション
シンボリック アイオー コーポレーション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/756,921 external-priority patent/US20140223118A1/en
Priority claimed from US13/797,093 external-priority patent/US10133636B2/en
Application filed by シンボリック アイオー コーポレーション, シンボリック アイオー コーポレーション filed Critical シンボリック アイオー コーポレーション
Publication of JP2016509309A publication Critical patent/JP2016509309A/ja
Publication of JP2016509309A5 publication Critical patent/JP2016509309A5/ja
Application granted granted Critical
Publication of JP6352308B2 publication Critical patent/JP6352308B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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 Physics & Mathematics (AREA)
  • General Engineering & Computer Science (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)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Power Engineering (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Communication Control (AREA)

Abstract

本発明の技術の使用を通して、データを効率的に格納して取得することが可能である。様々な実施形態では、これらの効率性は、データをコード化して、元のデータよりも小さいサイズである、コード化されたデータを格納することにより実現し得る。【選択図】図6

Description

本発明は、データ記憶および取得の分野に関する。
21世紀は、人々および企業が生成および格納するデジタル化された情報の量において急激な増加を示してきた。この情報は、通常、ディスクなどの磁気面上に格納されている電子データから成り、磁気面は、サイズがサブマイクロメータで、情報の個々のバイナリ断片を格納可能な、小さな領域を含む。
多数のエンティティが生成する大量のデータのために、データ記憶産業は、ネットワークベースの記憶システムに方向転換している。これらのタイプの記憶システムは、1つ以上のエンティティの代わりに、データを格納および取得するように構成されている、処理システムを形成するか、または処理システムの一部である、少なくとも1つのストレージサーバーを含み得る。データは、ブロックおよび/またはファイルなどの、記憶オブジェクトとして格納および取得され得る。
格納のために使用される1つのシステムは、ネットワーク接続ストレージ(NAS:Network Attached Storage)システムである。NASのコンテキストでは、ストレージサーバーは、1つ以上のクライアントの代わりに、データを格納して、データに対するファイルレベルのアクセスを管理するように動作する。ファイルは、磁気もしくは光ディスクまたはテープなどの、大容量記憶装置の1つ以上のアレイを含む、記憶システム内に格納され得る。加えて、このデータ記憶モデルは、独立ディスクの冗長アレイ(RAID:Redundant Array of Independent Disks)技術を採用し得る。
格納のために使用される別のシステムは、ストレージエリアネットワーク(SAN)である。SANシステムでは、通常、ストレージサーバーは、クライアントに、格納されたデータに対するファイルレベルのアクセスではなく、ブロックレベルのアクセスを提供する。しかし、いくつかのストレージサーバーは、クライアントに、ファイルレベルアクセスおよびブロックレベルアクセスの両方を提供することが可能である。
NASを使用するか、SANを使用するかに関わらず、データを生成する全ての産業は、そのデータを格納および取得するための費用を考慮する必要がある。それ故、データを経済的に格納および取得するための新しい技術に対する必要性がある。
本発明は、データを格納および取得する効率を向上するための方法、システムおよびコンピュータプログラム製品を提供する。本発明の様々な実施形態を使用することにより、任意選択で変換または符号化されているデータを効率的に格納してアクセスすることができる。追加または代替として、本発明の様々な実施形態は、データの効率的な格納およびデータへのアクセスを容易にするメディエータ(mediator)を使用する。
本発明の様々な実施形態は、生データおよび/または生データとは別個のメタデータで動作する。その結果として、本発明に関連して格納および/または取得できるファイルのタイプに基づく制限がない。使用され得るファイルタイプの例は、JPEG、PDF、WORD文書、MPEGおよびTXT文書を含み得るが、それらに制限されない。本発明の様々な実施形態を通して、データを変形し得、かつ/または変形もしくは変換されたデータが格納される物理装置を変更し得る。これらの実施形態は、実行される際に、本発明の方法またはプロセスのステップの実行を引き起こす、コンピュータプログラム製品を含むか、またはそれに動作可能に結合されているコンピュータを採用する自動化プロセスを通して実施され得る。これらの方法またはプロセスは、例えば、コンピュータアルゴリズムもしくはスクリプトで具現化されるか、またはそれを含み、任意選択で、本発明のシステムによって実施され得る。
第1の実施形態によれば、本発明は、記録媒体上にデータを格納するための方法を対象とし、(i)複数のデジタル2値信号を受信することであって、デジタル2値信号が複数のチャンクレットに編成されており、各チャンクレットがNビット長で、Nが1より大きい整数であり、チャンクレットが順序を有する、複数のデジタル2値信号を受信すること、(ii)各チャンクレットを均一なサイズのサブユニットに分割して、X個のマーカーのセットから、1つのマーカーを各サブユニットに割り当てて、複数のマーカーのセットを形成することであって、Xがサブユニット内のビットの異なる組合せの数に等しく、同一のサブユニットが同じマーカーに割り当てられて、少なくとも1つのマーカーがサブユニットのサイズよりも小さい、複数のマーカーのセットを形成すること、および(iii)複数のマーカーのセットを、チャンクレットの順序に対応する順序、またはチャンクレットの順序の再作成を可能にする別の構成のいずれかで、持続性記録媒体上に格納すること:を含む。
第2の実施形態によれば、本発明は、記録媒体からデータを取得するための方法を対象とし、(i)記録媒体にアクセスすることであって、記録媒体が複数のマーカーをある順序で格納する、記録媒体にアクセスすること、(ii)複数のマーカーをチャンクレットのセットに翻訳することであって、各チャンクレットがNビット長で、Nが1より大きい整数であり、チャンクレットが、複数のマーカーの順序に対応する順序を有し、翻訳がビットマーカーテーブルにアクセスすることによって達成され、ビットマーカーテーブル内で、各一意のマーカーが一意のビット列に対応するとして識別される、複数のマーカーをチャンクレットのセットに翻訳すること、および(iii)チャンクレットのセットを含む出力を生成すること:を含む。マーカーは、チャンクレットの順序と同じ順序で格納されることもあれば、格納されないこともあるが、それらが格納される順序に関わらず、チャンクレットの順序およびそれらが導出された任意のファイルを再作成することができる。
第3の実施形態によれば、本発明は、データを記録媒体上に格納するための方法を対象と、(i)複数のデジタル2値信号を受信することであって、デジタル2値信号がチャンクレットに編成されており、各チャンクレットがNビット長で、各チャンクレットが第1の端部および第2の端部を有し、Nが1より大きい整数であり、チャンクレットが順序を有する、複数のデジタル2値信号を受信すること、(ii)各チャンクレットを複数のサブユニットに分割することであって、各サブユニットがAビット長である、各チャンクレットを複数のサブユニットに分割すること、(iii)各サブユニットを分析して、第2の端部におけるビットが値0を有するかを判断し、第2の端部におけるビットが値0を有する場合に、第2の端部におけるビットおよび値0を有して、第2の端部におけるビットとともに連続的なビット列を形成する全てのビットを除去し、それにより第2の端部に0を有する任意のチャンクレットに対して修正されたチャンクレットを形成すること、ならびに、(iv)持続性記録媒体上に、Aビット長で、その第2の端部に1を有する、各修正されたサブユニットおよび各サブユニットを、その順序でチャンクレットの再構築を可能にする方法で格納すること:を含む。例えば、修正されたサブユニット(および修正されなかった任意のサブユニット)は、修正される前に、各チャンクレット内のサブユニットの順序に対応する順序で編成され得、データの格納は、元のファイル内の対応するチャンクレットと同じ順序であり得る。
第4の実施形態によれば、本発明は、記録媒体上にデータを格納するための方法を提供し、(i)複数のデジタル2値信号を受信することであって、デジタル2値信号がチャンクレットに編成されており、各チャンクレットがNビット長で、各チャンクレットが第1の端部および第2の端部を有し、Nが1より大きい整数であり、チャンクレットが順序を有する、複数のデジタル2値信号を受信すること、(ii)各チャンクレットを分析して、第1の端部におけるビットが値0を有するかを判断し、第1の端部におけるビットが値0を有する場合に、第1の端部におけるビットおよび値0を有して、第1の端部におけるビットとともに連続的なビット列を形成する全てのビットを除去し、それにより第1の端部に0を有する任意のチャンクレットに対して第1の修正されたチャンクレットを形成すること、(iii)各チャンクレットを分析して、第2の端部におけるビットが値0を有するかを判断し、第2の端部におけるビットが値0を有する場合に、第2の端部におけるビットおよび値0を有して、第2の端部におけるビットとともに連続的なビット列を形成する全てのビットを除去し、それにより第2の端部に0を有する任意のチャンクレットに対して第2の修正されたチャンクレットを形成すること、(iv)各チャンクレットに対して、(a)第1の修正されたチャンクレットおよび第2の修正されたチャンクレットのサイズが同じである場合、第1の修正されたチャンクレットまたは第2の修正されたチャンクレットを格納すること、(b)第1の修正されたチャンクレットが第2の修正されたチャンクレットよりも小さい場合、第1の修正されたチャンクレットを格納すること、(c)第2の修正されたチャンクレットが第1の修正されたチャンクレットよりも小さい場合、第2の修正されたチャンクレットを格納すること、(d)修正されたチャンクレットがない場合、そのチャンクレットを格納すること、(e)第1の修正されたチャンクレットはないが、第2の修正されたチャンクレットがある場合には、第2の修正されたチャンクレットを格納すること、(f)第2の修正されたチャンクレットはないが、第1の修正されたチャンクレットがある場合には、第1の修正されたチャンクレットを格納することであって、格納される各修正されたチャンクレットが、1つ以上のビットが第1の端部または第2の端部から除去されたかを示す情報とともに格納されること:を含む。1つ以上のビットが第1の端部または第2の端部から除去されたかを示す情報は、例えば、サブユニットの一意性の形であり得る。任意の比較において比較される、第1および第2の修正されたチャンクレットの各々を生成する際に、好ましくは、0が、両方の端部ではなく、いずれかの端部から除去されている。
第5の実施形態によれば、本発明は、記録媒体上にデータを格納するための方法を提供し、(i)複数のデジタル2値信号を受信することであって、デジタル2値信号がチャンクレットに編成されており、各チャンクレットがNビット長で、各チャンクレットが第1の端部および第2の端部を有し、Nが1より大きい整数であり、チャンクレットが順序を有する、複数のデジタル2値信号を受信すること、(ii)各チャンクレットを複数のサブユニットに分割することであって、各サブユニットがAビット長である、各チャンクレットを複数のサブユニットに分割すること、(iii)各サブユニットを分析して、第1の端部におけるビットが値0を有するかを判断し、第1の端部におけるビットが値0を有する場合に、第1の端部におけるビットおよび値0を有して、第1の端部におけるビットとともに連続的なビット列を形成する全てのビットを除去し、それにより第1の端部に0を有する任意のサブユニットに対して第1の修正されたサブユニットを形成すること、(iv)各サブユニットを分析して、第2の端部におけるビットが値0を有するかを判断し、第2の端部におけるビットが値0を有する場合に、第2の端部におけるビットおよび値0を有して、第2の端部におけるビットとともに連続的なビット列を形成する全てのビットを除去し、それにより第2の端部に0を有する任意のサブユニットに対して第2の修正されたサブユニットを形成すること、ならびに、(v)各サブユニットに対して、(a)第1の修正されたサブユニットおよび第2の修正されたサブユニットのサイズが同じである場合、第1の修正されたサブユニットまたは第2の修正されたサブユニットを格納すること、(b)第1の修正されたサブユニットが第2の修正されたサブユニットよりも小さい場合、第1の修正されたサブユニットを格納すること、(c)第2の修正されたサブユニットが第1の修正されたサブユニットよりも小さい場合、第2の修正されたサブユニットを格納すること、(d)修正されたサブユニットがない場合、そのサブユニットを格納すること、(e)第1の修正されたサブユニットはないが、第2の修正されたサブユニットがある場合には、第2の修正されたサブユニットを格納すること、(f)第2の修正されたサブユニットはないが、第1の修正されたサブユニットがある場合には、第1の修正されたサブユニットを格納することであって、格納される各修正されたサブユニットが、1つ以上のビットが第1の端部または第2の端部から除去されたかを示す情報とともに格納されること:を含む。1つ以上のビットが第1の端部または第2の端部から除去されたかを示す情報は、例えば、サブユニットの一意性の形であり得る。
第6の実施形態によれば、本発明は、記録媒体からデータを取得するための方法を提供し、(i)記録媒体にアクセスすることであって、記録媒体が複数のデータユニットを複数の位置に格納し、各データユニットが複数のビットを含み、データユニットの最大サイズがNビットであり、少なくとも1つのデータユニットがNビットよりも少ないビットを含み、データユニットが順序を有する、記録媒体にアクセスすること、(ii)データユニットを取得し、1つ以上のビットを、Nビット長よりも少ない任意のデータユニットの端部に追加して、データユニットに対応するチャンクレットのセットを生成することであって、各チャンクレットが同じビット数を含む、チャンクレットのセットを生成すること、および(iii)チャンクレットのセットを含む出力を、データユニットの順序に対応する順序で生成すること:を含む。
第7の実施形態によれば、本発明は、電子データを格納するための方法を対象とし、前記方法は、(i)パラメータのセットを受信することであって、パラメータがファイルシステム情報、ブート可能性情報、およびパーティション情報の1つ以上を含む、パラメータのセットを受信すること、(ii)メタデータを受信すること、(iii)1つ以上のファイルを受信することであって、各ファイルがファイル名を有する、1つ以上のファイルを受信すること、(iv)パラメータおよびメタデータをメディエータ上に格納すること、(v)ファイルの各々をある位置において非キャッシュ媒体上に格納すること、ならびに(vi)メディエータ上に、各ファイル名と非キャッシュ媒体上の位置との相関関係を格納すること:を含む。本発明のメディエータは、次の目的:(1)データを符号化するためのプロトコルを格納すること、(2)記録媒体上に物理空間を割り当てること、(3)ホストイニシエータのディスクジオメトリに対する中心点として機能すること、(4)セキュリティを追加すること、(5)システム内部装置が、ログをとること、読み取ること、および1つまたは2つの予約(RおよびR)とやりとりすることを可能にすること、(6)スナップショットをとる(すなわち、特定の時間において格納されたデータを凍結する)ため、および/またはディスクを複製するための新しい方法に対する枠組みを提供すること、ならびに(7)メタデータを提供すること:の1つ以上を果たし得る。全部ではないにしろ、これらの特徴の1つ以上を実現すると、データの格納、データの権限のないアクセスからの保護、および/またはデータの取得のための方法の効率性に寄与できる。
第8の実施形態によれば、本発明は、データをバックアップするための方法を対象とし、前記方法は、(i)第1のメディエータ上で、複数のファイル名を複数のデータファイルの位置と相互に関連付けることであって、データファイルの位置が第1の非キャッシュ媒体上の位置に対応し、第1のメディエータが、特定のファイル名を識別するユーザーが、その特定のファイル名に対応するデータファイルを取得するのを可能にする、複数のファイル名を複数のデータファイルの位置と相互に関連付けること、(ii)複数のデータファイルを第2の非キャッシュ媒体にコピーすること、(iii)第2のメディエータを生成することであって、第2のメディエータが時間T1における第1のメディエータのコピーであり、第2のメディエータ内で、第2の非キャッシュ媒体上の複数のデータファイルの位置がファイル名と相互に関連付けられている、第2のメディエータを生成すること、(iv)データファイルに対する修正を保存するための命令を受信すること、および(v)T1の後である、時間T2において、第1の非キャッシュ媒体上で、データファイルに対する修正を保存すること:を含む。好ましくは、修正は、第2の非キャッシュ媒体上の対応するデータファイル内に保存されない。
第9の実施形態によれば、本発明は、データ格納および取得システムを提供し、(i)非キャッシュデータ記憶媒体、(ii)メディエータであって、メディエータが非キャッシュデータ記憶媒体からリモートに保存され、メディエータが:(a)トラックの第1のセット、(b)トラックの第2のセット、(c)トラックの第3のセット、および(d)トラックの第4のセット、を含む、メディエータ、ならびに(ii)マネージャであって、マネージャが:(a)ファイルシステム情報、ブート可能性情報、およびパーティション情報の1つ以上を含むデータをトラックの第1のセット内に格納すること、(b)メタデータをトラックの第3のセット内に格納すること、(c)1つ以上のファイルを非キャッシュ媒体上に格納することであって、1つ以上のファイルが非キャッシュ媒体上に、ファイルシステム情報、ブート可能性情報、およびパーティション情報のいずれもなしで保存される、1つ以上のファイルを非キャッシュ媒体上に格納すること、(d)トラックの第4のセット内に、非キャッシュ媒体内の各ファイルの位置を格納すること、ならびに(e)非キャッシュ媒体内の各ファイルの位置の、ファイルに対するホスト名との相関関係を格納すること、を行うように構成されている、マネージャ:を含む。従って、マネージャは、マネージャ自身上に格納されない可能性がある、情報をメディエータ上に格納させ得る。
第10の実施形態によれば、本発明は、データを非キャッシュ記録媒体上に格納するための方法を対象とし、(i)NバイトのI/Oストリームを(例えば、I/Oプロトコルを使用して)受信すること、(ii)Nバイトを、Xバイトのフラグメント化ユニットにフラグメント化すること、(iii)(値アルゴリズムである)暗号化ハッシュ関数をXバイトの各フラグメント化ユニットに適用して、Xバイトの各フラグメント化ユニットに対して生成されたハッシュ関数値を形成すること、(iv)相関ファイルにアクセスすることであって、相関ファイルが、Yビットの格納されたハッシュ関数値を、複数の格納されたXバイトのシーケンスの各々と関連付けて、(a)Xバイトのフラグメント化ユニットに対して生成されたハッシュ関数値が相関ファイル内にある場合は、非キャッシュ記録媒体上に格納するために、Yビットの格納されたハッシュ関数値を使用し、また(b)Xバイトのフラグメント化ユニットに対して生成されたハッシュ関数値が相関ファイル内にない場合は、Yビットの生成されたハッシュ関数値をXバイトのフラグメント化ユニットとともに相関ファイル内に格納し、非キャッシュ記録媒体上に格納するために、生成されたハッシュ関数値を使用する、相関ファイルにアクセスすること:を含む。
第11の実施形態によれば、本発明は、データを非キャッシュ記録媒体上に格納するための方法を対象とし、(i)NバイトのI/Oストリームを受信すること、(ii)Nバイトを、Xバイトのフラグメント化ユニットにフラグメント化すること、(iii)暗号化ハッシュ関数値をXバイトの各フラグメント化ユニットと関連付けることであって、前記関連付けることが、相関ファイルにアクセスすることを含み、相関ファイルが、Yビットの格納されたハッシュ関数値を、複数の格納されたXバイトのシーケンスの各々と関連付けて、(a)Xバイトのフラグメント化ユニットのシーケンスが相関ファイル内にある場合は、非キャッシュ記録媒体上に格納するために、Yビットの格納されたハッシュ関数値を使用し、また(b)Xバイトのフラグメント化ユニットのシーケンスが相関ファイル内にない場合は、Yビットの新しく生成されたハッシュ関数値をXバイトのフラグメント化ユニットとともに相関ファイル内に格納し、非キャッシュ記録媒体上に格納するために、Yビットの新しく生成されたハッシュ関数値を使用する、暗号化ハッシュ関数値をXバイトの各フラグメント化ユニットと関連付けること:を含む。
第12の実施形態によれば、本発明は、データを非キャッシュ記録媒体上に格納するための方法を対象とし、(i)NバイトのI/Oストリームを受信すること、(ii)暗号化ハッシュ関数をNバイトの各ユニットに適用して、Nバイトの各ユニットに対して生成されたハッシュ関数値を形成すること、(iii)相関ファイルにアクセスすることであって、相関ファイルが、Yビットの格納されたハッシュ関数値を、複数の格納されたNバイトのシーケンスの各々と関連付けて、(a)Nバイトのユニットに対して生成されたハッシュ関数値が相関ファイル内にある場合は、非キャッシュ記録媒体上に格納するために、Yビットの格納されたハッシュ関数値を使用し、また(b)Nバイトのユニットに対して生成されたハッシュ関数値が相関ファイル内にない場合は、Yビットの生成されたハッシュ関数値をNバイトのユニットとともに相関ファイル内に格納し、非キャッシュ記録媒体上に格納するために、生成されたハッシュ関数値を使用する、相関ファイルにアクセスすること:を含む。
本発明の様々な方法が、例えば、電子データを格納するように記憶システムを構成するための次の方法に関連して使用され得る:(i)パラメータのセットを受信することであって、パラメータが,ファイルシステム情報、ブート可能性情報、およびパーティション情報のうちの、全部ではないにしろ、1つ以上を含む、パラメータのセットを受信すること、(ii)メタデータを受信すること、ならびに(iii)パラメータおよびメタデータをメディエータ上に格納すること。記憶システムの構成後、システムは、各ファイルがファイル名を有する、1つ以上のファイルを受信し;ファイルの各々を(任意選択で、翻訳するための前述の方法の1つを通して処理されたとおり)非キャッシュ媒体上のある位置に格納して;メディエータ上に、各ファイル名と、非キャッシュ媒体上の位置との相関関係を格納する準備ができている可能性がある。
本発明のある方法を採用する際に、命令が、持続性コンピュータ可読記憶媒体上で符号化されて、データ処理装置に、(a)サーバーから、NバイトのI/OストリームをI/Oプロトコルを通して受信すること、(b)Nバイトの各ユニットに対して、または複数のNバイトのフラグメント化ユニットに対して、ハッシュ関数値を取得すること、および(c)複数のハッシュ値または複数の変換されたハッシュ値のいずれかを含む、データを格納させること:を含む動作を実行させるように動作可能な、コンピュータプログラム製品上に格納され得る。ハッシュ値を変換されたハッシュ値に変換することにより、格納されたファイル内の情報への権限のないアクセスに対する保護が高められ得る。任意選択で、コンピュータプログラム製品は、Nバイトの異なるユニットまたはNバイトの異なるフラグメント化ユニットに割り当てられている同じハッシュ関数値の識別を可能にして、矛盾するハッシュ関数値の各々に対応する、異なるデータを格納させる、矛盾解決モジュールをさらに含む。コンピュータプログラム製品は、実行される際に、前述した特徴の開始および自動実行を引き起こすことができる。これらの命令は、1つのモジュール内、または動作可能に互いに結合されている、複数の別個のモジュール内に格納され得る。
加えて、本発明の様々な実施形態は、システム上でも実装され得る。本発明のシステムの一例は、(a)(永続的または持続性記憶装置であり得る)非キャッシュ記憶媒体、および(b)非キャッシュ記憶媒体とやりとりするように動作可能な1つ以上のプロセッサ:を含む。任意選択で、システムは、ユーザーが1つ以上のプロセッサとやりとりするのを可能にできる1つ以上のユーザーインタフェース(例えば、グラフィックユーザーインタフェース)をさらに含む。1つ以上のプロセッサは、本発明の方法の1つ以上を実施するようにさらに動作可能であり、それらは、例えば、持続性媒体内に格納されるコンピュータプログラム製品上に格納され得る。
いくつかの実施形態では、システムは、(i)メディエータであって、非キャッシュデータ記憶媒体からリモートに保存され、メディエータが:(a)トラックの第1のセット、(b)トラックの第2のセット、(c)トラックの第3のセット、および(d)トラックの第4のセット、を含む、メディエータ、(ii)非キャッシュ媒体、ならびに(iii)マネージャであって、マネージャが:(a)ファイルシステム情報、ブート可能性情報、およびパーティション情報の1つ以上を含むデータをトラックの第1のセット内に格納させること、(b)メタデータをトラックの第3のセット内に格納させること、(c)1つ以上のファイルを非キャッシュ媒体上に格納させることであって、1つ以上のファイルが非キャッシュ媒体上に、ファイルシステム情報、ブート可能性情報、およびパーティション情報のいずれもなしで保存される、1つ以上のファイルを非キャッシュ媒体上に格納させること、(d)トラックの第4のセット内に、非キャッシュ媒体内の各ファイルの位置を格納させること、ならびに(e)非キャッシュ媒体内の各ファイルの位置の、ファイルに対するホスト名および/またはアドレス(複数可)との相関関係を格納させること、を行うように構成されている、マネージャ: を含む。
本発明の様々な実施形態を通して、データの格納および取得の効率が向上できる。効率の向上は、一般に使用される方法で使用されるよりも少ない記憶空間を使用し、情報を格納する活動において、より少ない時間および努力を投資することにより、実現され得る。いくつかの実施形態では、データファイルの権限のない取得に対する保護も改善できる。これらの利益は、データを、リモートまたはローカルのいずれかで格納する際に実現され得、本発明の様々な実施形態は、RAID技術と併せて、またはRAID技術とは無関係に使用され得る。
本発明のシステムの概要の表現である。 メディエータおよび非キャッシュ媒体(NCM:non−cache−medium)の表現である。 メディエータを使用して、情報を格納するためのシステムの表現である。 格納されている情報をバックアップするために2つのメディエータを使用するためのシステムの表現である。 二分木の表現である。 本発明の方法を表す流れ図である。
ここで、本発明の様々な実施形態に対する参照を詳細に行うが、その例が付随する図に示されている。以下の詳細な記述では、多数の具体的詳細が、本発明の完全な理解を提供するために記載されている。しかし、別段の指示がないか、またはコンテキストから暗黙的でない限り、詳細は例であることを意図し、本発明の範囲をいかなる方法でも制限すると見なされるべきでない。さらに、見出しは、本発明の実施形態のいずれかの範囲を制限すること、または、任意の特徴を特定の見出し内の節に制限することを意図するのではなく、読者の便宜のために使用される。
定義
別段の指示がないか、またはコンテキストから暗黙的でない限り、次の用語および句は、以下に規定する意味を有する。
用語「ビット」は、二進数字を指す。それは、0または1のいずれかによって表すことができる、2つの値の1つを有することができる。
用語「ブロック」は、所定の長さを有するデータのバイトまたはビットのシーケンスを指す。
句「ブート可能性コード」、「ブート可能性情報」および「ブート可能性特徴」は、ブート可能状態に入るための手段を提供する情報を指し、ブートセクター上に格納され得る。ブートセクターは、ファームウェアによってRAM(ランダムアクセスメモリ)内にロードされるように構成されている機械コードを含み得、それは、その結果として、ブートプロセスがプログラムを記憶装置から、または記憶装置にロードするのを可能にする。例として、マスターブートレコードが、アクティブなパーティションを見つけて、ボリュームブートレコードを呼び出すコードを含み得、ボリュームブートレコードは、オペレーティングシステムまたは他のスタンドアロンプログラムをロードして呼び出すためのコードを含み得る。
用語「バイト」は、8ビットのシーケンスを指す。
用語「キャッシュ」は、データに対する将来の要求がより迅速に対応されるため、またはバッファリングを目的として、データが一時的に格納される位置を指す。L1キャッシュ(レベル1キャッシュ)は、例えば、プロセッサコアと統合されている、スタティックメモリを指す。L1キャッシュは、CPU(汎用処理装置)が同じデータを複数回アセスする場合にデータアクセス速度を向上するために使用され得る。L2キャッシュ(レベル2キャッシュ)は、通常、L1キャッシュよりも大きく、データファイルが検索されたが、L1内で見つからなかった場合に、検索は、外部メモリを目指す前に、L2キャッシュで行われ得る。いくつかの実施形態では、L1キャッシュは、中央処理装置内ではない。代わりに、それは、DDR、DIMMまたはDRAM内に置かれ得る。追加または代替として、L2キャッシュは、PCI2.0/3.0の一部であり得、それは、マザーボードに入る。従って、L1キャッシュおよびL2キャッシュの各々は、マザーボードの別々の部分にあり得る。サイズに関して、本発明のいくつかの実施形態では、L1キャッシュは、2ギガバイトと128テラバイトの間、または2ギガバイトと4テラバイトの間であり、L2キャッシュは、16ギガバイトと1ペタバイトの間、または16ギガバイトと3.2テラバイトの間である。いくつかの実施形態では、本発明の方法が実装される際に、ビットマーカーテーブル、頻度変換器(frequency converter)またはハッシュ値テーブルの1つ以上が、L2キャッシュ内に常駐する。
用語「チャンクレット」は、セクタークラスタに対応し得るビットのセットを指す。チャンクレットのサイズは、記憶システムによって決定され得、チャンクレットサイズを有し得る。慣例的に、チャンクレットサイズは、CHS方式によって導出されたが、CHS方式は、シリンダー、ヘッドおよびセクターを、ハードディスク上にそれらが出現したところで定義するタプルによってブロックをアドレス指定した。ごく最近では、チャンクレットサイズは、論理ブロックアドレス(logical block addressing)を指す、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ビットである。
用語「ホスト」および「イニシエータ」は、区別しないで使用され得、データを格納のために、本発明のデータ記憶および取得仲介システムに送信するエンティティまたはシステムを指す。ホストは、1つ以上のタイプの文書またはファイルに対応するデータおよび受信したデータを送信し得る。好ましくは、任意の入力/出力(I/O)ストリーム内で、データは、単一の文書タイプのファイルに対応する。便宜上、句「I/Oストリーム」は、データが1つのエンティティから別のエンティティに伝送されることを指すために使用される。第1のエンティティに対して出力されるものは、第2のエンティティに対する入力であり得る。
略語「LBA」は、論理ブロックアドレス(logical block addressing)を指す。LBAは、リニアアドレス指定方式であり、ある記憶媒体、例えば、ハードディスク、内に格納されるデータブロックの位置を指定するために使用されるシステムである。LBA方式では、ブロックは、整数によって見つけられ、1つだけの番号がデータをアドレス指定するために使用される。通常、第1のブロックはブロック0である。
略語「LUN」は、論理ユニット番号(logical unit number)を指し、論理ユニットを識別するために使用される。LUNは、通常、SANを介して共有されるブロックストレージアレイを管理するために使用される。
用語「マネージャ」は、コンピュータプログラム製品、例えば、持続性媒体内に格納され得、かつ1つ以上の他の動作(例えば、データの受信、送信、格納、および処理)をとらせるコードを指す。マネージャは、ハードウェア、ソフトウェアまたはそれらの組合せ上に格納され得る。いくつかの実施形態では、マネージャは、マネージャがその意図する機能を実施するのを可能にするように構成されている、コンピュータおよび/またはシステムの一部であり得る。
用語「メディエータ」は、ハードウェア、ソフトウェアまたはそれらの組合せ上に格納され得、かつ少なくとも1つの非キャッシュ媒体内の記憶空間の1つ以上のユニットをファイル名と相互に関連付ける、コンピュータプログラム製品を指す。メディエータは、それがポイントする非キャッシュ媒体よりも数桁小さい可能性がある。例えば、メディエータは、おおよそ、通常のシリンダーのサイズの約0.2%の大きさしかない可能性がある。いくつかの実施形態では、メディエータは、コンピューティングクラウド内に存在し得、一方、他の実施形態では、メディエータは、持続性有形的記録媒体内に存在する。メディエータは、データが実際には、記録媒体の異なるトラック内に出現している間に、ホストが、記録媒体のあるトラック内にあると認識する位置内のデータの、編成、変換、翻訳および格納の制御を行うことが可能であり得るか、または、全てではないにしろ、これらの機能の1つ以上に対応するマネージャに動作可能に結合され得る。さらに、メディエータは、セクターマップ、テーブル、または物理装置もしくは構造内に配置され得るデータの他の編成を含み得、従って、メディエータの内容は、物理装置もしくは構造にあるジオメトリを持たせ得る。いくつかの実施形態では、メディエータは、L2キャッシュ上に永続的に常駐する。他の実施形態では、メディエータは、ソリッドステートドライブ上に常駐する。
用語「メタデータ」は、データのコンテナに関する管理情報を指す。メタデータの例は、読み取られているファイルの長さまたはバイトカウント;ファイルが修正された最後の時間に関する情報;ファイルタイプおよびアクセス許可を記述する情報;ならびにLUN QoS、VMおよびWORMを含むが、それらに制限されない。他のタイプのメタデータは、オペレーティングシステム情報、自動初期化情報、グループ許可、および文書タイプ内のビットの頻度を含む。いくつかの実施形態では、格納されたメタデータは、例えば、イニシエータが格納しようとする文書の数およびサイズが縮小または増大するにつれて、イニシエータに対して記憶空間の効率的な収縮または拡張を可能にするために使用され得る。
略語「NAS」は、ネットワークエリアストレージ(network area storage)を指す。NASシステムでは、ディスクアレイは、ローカルエリアネットワークトランスポートにアクセスできるコントローラに接続され得る。
句「動作可能に結合された」は、システム、装置、および/またはモジュールが、互いにまたは相互に通信するように構成されて、通信時または通信した後に、それらの意図する目的を実施することが可能である。
句「オペレーティングシステム」は、コンピュータハードウェア資源を管理するソフトウェアを指す。オペレーティングシステムの例は、Microsoft Windows(登録商標)、Linux(登録商標)、およびMac OS Xを含むが、それらに制限されない。
用語「パーティション」は、記憶媒体、例えば、ディスクドライブをユニットに分割するフォーマットを指す。従って、パーティションは、ディスクパーティションとも呼ばれ得る。パーティションの例は、GUIDパーティションテーブルおよびAppleパーティションマップを含むが、それらに制限されない。
略語「RAID」は、独立ディスクの冗長アレイ(redundant array of independent disks)を指す。関連したサーバーに対して、ディスクのこのグループは、単一ボリュームのように見え得る。RAID技術は、データの単一ストリップを複数のディスクからプルすることにより性能を向上させて、(1)データのミラーリング、(2)データのストライプ化、または(3)データのミラーリングとストライプ化の組合せ:などの1つまたは複数のプレミスタイプ上に構築される。
句「記録媒体」は、ビットに対応する磁気信号をその中に格納できる、持続性有形的コンピュータ可読記憶媒体を指す。例として、記録媒体は、ハードディスクおよびソリッドステートドライブなどの非キャッシュ媒体を含むが、それらに制限されない。当業者であれば分かっているように、ソリッドステートドライブもキャッシュを有し、スピンする必要がない。持続性有形的コンピュータ可読記憶媒体の例は、ハードドライブ、ハードディスク、フロッピィディスク、コンピュータテープ、ROM、EEPROM、不揮発性RAM、CD−ROMおよびパンチカードを含むが、それらに制限されない。
略語「SAN」は、ストレージエリアネットワーク(storage area network)を指す。このタイプのネットワークは、コンピューティング装置を、ディスク、テープアレイおよび他の記録媒体にリンクするために使用できる。データは、例えば、ブロックの形でSANを介して伝送され得る。
略語「SAP」は、システムアシストプロセッサ(system assist processor)を指し、それは、オペレーティングシステムによって使用されるI/O(入力/出力)エンジンである。
略語「SCSI」は、小規模コンピュータシステムインタフェース(small computer systems interface)を指す。
用語「セクター」は、ディスク、例えば、磁気ディスク上のトラックの下位区分を指す。各セクターは、一定量のデータを格納する。ディスクに対する一般的なセクターサイズは、512バイト(512B)、2048バイト(2048B)、および4096バイト(4K)である。チャンクレットが4Kのサイズであり、各セクターが512Bのサイズである場合、各チャンクレットは8セクターに相当する(4*1024/512=8)。セクターは、トラックを有し、プラッター上に配置される。一般に、2つまたは4つのプラッターが1つのシリンダーを構成し、255のシリンダーがハードディスクおよび媒体装置を構成する。
句「セクターマップ」は、ホストから要求を受信して、ファイルが格納されている記憶装置内の位置を相互に関連付けるツールを指す。セクターマップは、例えば、SCSIプロトコルによって定義されるパラメータ下で動作し得る。本発明のいくつかの実施形態では、セクターマップは、メディエータのビットフィールド内に配置され得る。
用語「トラック」は、全てのセクターをトラバースするディスク内の円形の単位を指す。「トラックセクター」は、任意の1つのセクター内のトラックである。「トラッククラスタ」は、2つ以上のセクターに及ぶ。
好ましい実施形態
本発明は、データを非キャッシュ記録媒体上に格納するための方法、これらの方法を実施するためのコンピュータプログラム製品、およびこれらの方法を実施するように構成されているシステムを提供する。本発明の様々な実施形態を通して、データを効率的に格納および取得することができる。
ビットマーカー
一実施形態によれば、本発明は、ビットマーカーを、生データ内のビット列の表現として使用する、記録媒体上にデータを格納するための方法を対象とする。従って、生データは、生データを表す一連のマーカーに翻訳され、本方法は、格納のために、信号のセット(ビットマーカーと呼ばれ得る)に変換されるデータを含む、ファイルまたはストリームを受信することおよびそれらの信号を格納することを提供する。
ファイルは、ホストと呼ばれる人またはエンティティから受信され得る。好ましくは、ホストは、信号を生データの形で送信する。例えば、ホストは、JPEG、PDF、TIFFまたはWORD文書などの、1つ以上のファイルを個々に、または全体として形成する1つ以上のチャンクレットを送信し得る。本発明の様々な実施形態は、チャンクレットを受信するか、チャンクレットのサブユニットを受信するか、またはチャンクレットに変換される1つ以上のファイルを受信すると、開始する。好ましくは、受信されるチャンクレットまたはチャンクレットのサブユニットは、全て均一なサイズである。任意選択で、本方法は、サイズの均一性を検証し、非均一性が検出される、例えば、1つ以上のチャンクレットが少なすぎるビットしか有していない場合、本方法は、全てのチャンクレットが均一のサイズになるまで、ゼロを追加させる。
一例として、データは、Nビット長のチャンクレットで受信され得、Nは1よりも大きい整数である。例えば、Nは、128バイトから16Kまで、例えば、4Kであり得、それは、4096Bに相当する。
チャンクレットは順番に受信される。例えば、ファイルが、システムによって連続的に受信される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に、コードが元の文書よりも少ないビットを使用して作成される場合、必要な記憶空間が少なくなって、費用を節約できる。1つ以上のファイルに対する記憶空間が削減されると、NCMは、もっと多くの数のファイルおよび/またはもっと大きなファイルに相当するデータを格納できる。
テーブル内のビットの少なくとも複数の一意の組合せに対して、好ましくは、システムがチャンクレットをサブユニットに分割しない場合、マーカーは、チャンクレット長Nよりも小さいか、またはシステムがチャンクレットをサブユニットに分割する場合には、サブユニット長Aよりも小さい。好ましくは、システムがチャンクレットをサブユニットに分割しない場合、どのマーカーもチャンクレット長Nよりも大きくないか、またはシステムがチャンクレットをサブユニットに分割する場合、どのマーカーもサブユニット長Aよりも大きくない。いくつかの実施形態では、全てのマーカーは、Nよりも小さいか、またはAよりも小さい。加えて、いくつかの実施形態では、各マーカーは、同じサイズであり得るか、または2つ以上のマーカーが異なるサイズであり得る。異なるサイズのマーカーがある場合、これら異なるサイズのマーカーは、例えば、テーブル内にあり得る。あるいは、テーブル内で全てのマーカーが同じサイズであるが、格納前に、全ての0がマーカーの一方または両方の端部から除去される。
コンピュータプログラム製品がチャンクレットを複数のマーカーに翻訳した後、コンピュータプログラム製品は、複数のマーカー(0が端部から除去されているかいないかに関わらず)を、持続性記録媒体上に、チャンクレットの順序に対応する順序で、またはチャンクレットが別の方法で再作成され得る順序で、格納させる。最終的に、マーカーは、非キャッシュ媒体である、持続性媒体内に格納される。しかし、任意選択で、それらは、まず、キャッシュ媒体、例えば、L1および/またはL2に送信され得る。従って、情報が失われないように、ビットマーカーテーブルが、永続的メモリ内に格納され得るが、使用時には、コピーが、例えば、L2キャッシュ内にあり得、ブートまたは再ブート時に、L2キャッシュ内のテーブルは永続的メモリから生成され得る。
一実施形態では、記憶装置は、所与のファイルに対応する、複数のビットマーカーを、非キャッシュ媒体内に格納する。ビットマーカーは、X〜Yのサイズ範囲であり、XはYよりも小さく、少なくとも2つのマーカーが異なるサイズを有する。ビットマーカーの取得時または取得後に、コンピュータアルゴリズムは、所定のサイズのZよりも小さい、全てのビットマーカーの一方の端部に0を追加するが、ここで、ZはYよりも大きいか、または等しい。サイズZの各マーカーが長さAのビット列に翻訳される、ルックアップテーブルが、参照され得るが、ここで、AはZ以上である。限定されない例では、X=4、Y=20、Z=24、A=32である。いくつかの実施形態では、Aは少なくともZより50%大きい。Aに対応するビット列は、チャンクレットに結合されるサブユニットであり得るか、またはチャンクレット自身であり得る。
頻度変換器
前述のように、ビットマーカーテーブルは、マーカーをビット列に、生データに対してランダムまたは非ランダムに、割り得て得、ビットマーカーは、均一または不均一なサイズであり得る。しかし、前述のようなビットマーカーテーブルの代わりに、頻度変換器を使用し得る。
当業者であれば認識するように、本開示の例の節におけるテーブル1およびテーブル2は、ビットマーカー(すなわち、変換されたビット)を、生データ内のビット列の頻度とは無関係な方法で割り当てる。しかし、前述し、以下の例3で説明するように、ある文書タイプまたは文書のセット内により頻繁に出現すると見込まれる生データに対して、より小さいマーカーを割り当て得る。この方策は、全ての情報のほぼ80%が、最も頻出するサブユニットのほぼ上位20%内に含まれるという事実を利用する。言い換えれば、データに対応するサブユニットは、非常に繰返しが多い。
頻度変換器が異なるサイズのビット列をどのように使用できるかをさらに示すために、図5が参照され得る。図5は、5ユニット長であって、数1から始まる、全ての2進シーケンスに対する二分木を示す。その木が示すように、最上位行から始まって、木を最下層まで下方に移動する、長さが5桁のシーケンスを作成するための16の経路がある。しかし、木を下方に移動する際に、例えば、第3、第4、または第5の行への分岐を進むことができる。それに応じて、本方法は、一片のデータに対して、木を一部下方に移動することに対応するコードを割り当て得、他方、他のデータに対しては、本方法は、異なる分岐に沿って、もっと多くの数のユニットを移動することに対応するコードを割り当てる。限定されない例として、変換されたデータの特定の一片に対して、第3行で止まって、例えば、101のシーケンスを生成し得、他方、データの他の全てに対して、最初の3桁は101ではない。従って、本方法は、(図5のボックス内にある)1010、1011、10100、10101、10110および10111:の使用を決して許可しないであろう。メモリからデータを取得すると、システムは、数字を、それらが一意であると認識するまで読み取り、それらが一意であると認識すると、その一意の文字列を、復号を可能にするプログラムへの入力として使用し、そのプログラムは、ホストに対して生データファイルの再作成を可能にし得る。
本発明の様々な実施形態は、(最も短い一意のコードに対応する)最小数のビットおよびその後の最小数の読取りに対する取得要求の間またはその後に、データファイルまたはテーブルと比較することにより一意性をチェックし得、コードがデータファイルまたはテーブル内で一意でない場合は、ビット数の拡張を継続して、シーケンスが一意であると認識されるまで各個々のビットを追加した後に、その拡張されたコードの一意性をチェックする。上記の例は、3、4、または5ビット列に関して記述しているが、それらのサイズは、例示のみを目的として使用されている。いくつかの実施形態では、頻度変換器に関連して使用するための一意のビットの最も短いシーケンスは、10〜15ビット長であり、ビットの最も長いシーケンスは25〜40ビット長である。
いくつかの実施形態では、異なるサイズの複数の変換されたビット列の全てに対して、Aビット長の第1の変換されたビット列、およびBビット長の第2の変換されたビット列があり、ここで、A<Bであって、第1の変換されたビット列のAビットの識別が、第2の変換されたビット列の最初のAビットの識別と同じでない。
テーブル1、2および3(例を参照)が示すように、ビットのグループを表すためにマーカーが使用されるので、情報が変換され得、出力コードが、入力よりも少ない空間を占めるように構成できる。従って、好ましくは、テーブル内で、少なくとも1つの、複数の、少なくとも50%の、少なくとも60%の、少なくとも70%の、少なくとも80%の、少なくとも90%の、または少なくとも95%の、マーカーが、サブユニットよりもサイズが小さい。しかし、変換されたデータを同じサイズにするか、またはホストから受信したか、もしくはハッシュ関数値アルゴリズムから生成したデータよりも長くするのを妨げる技術的障害はない。
フラグメンテーション
前述のように、データストリームの受信後、いくつかの実施形態では、本方法は、受信されるデータのフラグメント化を必要とする。受信されるデータが大規模なファイルの形式である場合、それは、チャンクレットにフラグメント化され得る。受信されるデータがチャンクレットの形式である場合、チャンクレットはサブユニットにフラグメント化され得る。大規模なファイルは、まず、チャンクレットにフラグメント化され得、次いで、それらのチャンクレットがサブユニットにフラグメント化され得る。従って、ホストからの任意の入力に対して、0、1、または2つのフラグメンテーションのステップがあり得る。
I/Oストリームをフラグメント化することにより、本方法は、各I/Oストリームを、所定の、好ましくは、均一サイズのもっと小さい(ブロックとも呼ばれ得る)ユニットに分割する。当業者であれば認識するように、より小さいブロックサイズを使用することの1つの利益は、小さいブロックは、データのさらに容易な処理を可能にすることである。限定されない例として、I/Oストリームは、4096バイト長であり得、本方法は、そのストリームを、1024、512、256、または128バイト長のフラグメント化されたユニットにフラグメント化し得る。データが受信された後、またはデータが受信されているときに、チャンクレットを、例えば、32ビットのサブユニットに分割する、アルゴリズムが実行され得る。
サブユニットのサイズは、データをホストから受信するシステムの設計者の選択である。しかし、サブユニットのサイズは、チャンクレットが、一貫したサイズのサブユニットに分割されるように、選択されるべきであり、サブユニットは、ビットマーカーテーブルまたは頻度変換器の参照に関連して、容易に使用できる。
チャンクレットのいずれかが他よりも小さい場合、任意選択で、小さいサイズのチャンクレットの受信時に、アルゴリズムが、その小さいチャンクレットを他のチャンクレットと同じサイズにするために、ゼロを追加する。代替として、システムは、チャンクレットをサブユニットに分割し、所望の長さより小さいサブユニットの取得時には、そのサブユニットの端部にゼロを追加し得る。
前処理
(符号化プロセスとも呼ばれ得る)翻訳プロセス中に、アルゴリズムが、ビットマーカーテーブルまたは頻度変換器に対する入力として使用する、ビット列(すなわち、チャンクレットまたはサブユニット)が、前処理され得る。これらのビット列の各々は、第1の端部および第2の端部によって画定され得、マーカーを割り当てる前に、本方法は、各ビット列を分析して、第2の端部におけるビットが0の値を有するかを判断することをさらに含む。第2の端部におけるビットが0の値を有する場合、本方法は、第2の端部におけるビット、および0の値を有して、第2の端部におけるビットとともに連続的なビット列を形成する全ての後続ビットを除去し、それにより、削減されたサイズのビット列を形成する。前処理ステップの利益は、より小さいビットマーカーテーブルまたは頻度変換器が使用できることである。例えば、同じコード化されたデータを生成するために、テーブルIの代わりに、テーブル2が使用できる。当業者であれば認識するように、この前処理は、第2の端部からゼロの代わりに1を探して除去することにより達成できる。
切捨て
本発明の別の実施形態では、ビットマーカーテーブルまたは頻度変換器の使用を通して翻訳するのではなく、切り捨てられたサブユニットを、それらがチャンクレット内に存在するのと同じ順序で格納できる(または、サブユニットが使用されない場合には、チャンクレットが切り捨てられて格納できる)。従って、短くされた文字列を、例えば、ビットマーカーテーブル内で入力として使用するために、前処理されたデータとして機能させる代わりに、それら自体が格納され得る。
このように、いくつかの実施形態では、データを記録媒体上に格納するための別の方法がある。この方法によれば、複数のデジタル2値信号を受信し、デジタル2値信号が、前述したフォーマットのチャンクレットに編成される。任意選択で、各チャンクレットは、前述のように、サブユニットに分割され得る。
各チャンクレットまたはサブユニットは、その長さによって定義され得、各チャンクレットまたはサブユニットは、第1の端部および第2の端部を有する。各チャンクレットまたはサブユニットを分析して、第2の端部におけるビットが値0を有するかを判断し得、第2の端部におけるビットが値0を有する場合、第2のビットにおけるビットおよび両方が値0を有して、第2の端部におけるそのビットとともに連続的なビット列を形成する全てのビットを除去し、それにより、第2の端部に0を有する任意のチャンクレットまたはサブユニットに対して、修正されたチャンクレットまたは修正されたサブユニットを形成する。これらの修正されたビット列は元のビット列よりも短いので、それらは切り捨てられたと呼ばれ得る。
チャンクレットまたはサブユニットが切り捨てられた後、その切り捨てられた情報を持続性記録媒体内に格納し得る。切り捨てられた情報を格納することにより、そうでなければ、切り捨てられなかったビット列で格納されていた同じ情報を格納するために、少ないビットしか使用されない。
前述の様々な実施形態では、各サブユニットまたは各チャンクレットの、両方ではなく、第1の端部または第2の端部から、桁(複数可)を除去できる。しかし、各サブユニットまたはチャンクレットの第1の端部から桁の除去を検討し、各サブユニットまたはチャンクレットの第2の端部から桁を除去することを別に検討して、各サブユニットまたはチャンクレットに対して、第1の端部および第2の端部の一方または両方のいずれかで、切捨てが生じているかどうかを分析し、切捨てが一方の端部のみで生じている場合、切り捨てられたチャンクレットまたはサブユニットを保存し、切捨てが両方の端部で生じている場合には、切り捨てられたユニットの小さい方を保存する、方法を実施することは、本発明の様々な実施形態の範囲内である。チャンクレットまたはサブユニットの両方の端部から桁が除去できる方法を実施することも、本発明の範囲内である。
このように、複数のデジタル2値信号を受信し得る。2値信号は、ユニットで、例えば、チャンクレットまたはチャンクレットのサブユニットで、受信され得る。各ユニットは、同じビット数長であり得、各ユニットは、第1の端部および第2の端部を有する。ユニット内のビット数は、1より大きい整数であり、ビットは、ユニット内に順序を有し、ユニットは順序を有する。
次いで、第1の端部におけるビットが値0を有するかを判断するために各ユニットを分析し得、第1の端部におけるビットが値0を有する場合は、第1の端部におけるビットおよび両方が値0を有して、そのビットとともに連続的なビット列を形成する全てのビットを除去し、それにより、第1の端部に0を有する任意のユニットに対して第1の修正されたユニットを形成する。
第2の端部におけるビットが値0を有するかも判断するために各ユニットを分析し得、第2の端部におけるビットが値0を有する場合は、第2の端部におけるビットおよび両方が値0を有して、そのビットとともに連続的なビット列を形成する全てのビットを除去し、それにより、第2の端部に0を有する任意のユニットに対して第2の修正されたユニットを形成する。
各ユニットに対して、以下のデシジョンツリーが適用され得る:(a)第1の修正されたユニットおよび第2の修正されたユニットのサイズが同じである場合は、第1の修正されたユニット(または第2の修正されたサブユニット)を格納する;(b)第1の修正されたユニットが第2の修正されたユニットより小さい場合は、第1の修正されたユニットを格納する;(c)第2の修正されたユニットが第1の修正されたユニットより小さい場合は、第2の修正されたユニットを格納する;(d)修正されたユニットがない場合は、そのユニットを格納する;(e)第1の修正されたユニットはないが、第2の修正されたユニットがある場合は、第2の修正されたユニットを格納する;ならびに、(f)第2の修正されたユニットはないが、第1の修正されたユニットがある場合は、第1の修正されたユニットを格納する。
1つ以上のビットが第1の端部または第2の端部から除去されているか、またはビットが第1の端部から除去されるユニットに対して第1のビットマーカーテーブルを、またビットマーカーが第2の端部から除去されるユニットに対して第2のビットマーカーテーブルを使用できるかを示す情報も格納し得、2つのビットマーカーテーブル間には、ビットマーカーの重複がない。これらの2つの異なるビットマーカーテーブルは、同じテーブルのセクションとして編成でき、修正されていないユニットに対するビットマーカーを含む。テーブルまたは複数のテーブルでは、第1の修正されたユニット、第2の修正されたユニットおよび修正されていない任意のユニットに対して、例えば、それらは両方の端部に1を有しているので、ビットマーカーの重複がない。
当業者であれば認識するように、前述の方法はゼロの除去に関連して説明されているが、システムは代わりに1を除去できる。さらに、これらの方法は、ビットマーカーテーブルもしくは頻度変換器の使用に対する代替手段として使用されているとして説明される。しかし、これらの方法を、ビットマーカーテーブルまたは頻度変換器と併せて、例えば、それらのプロトコルの出力であるマーカーを、それらが元のファイルの取得および再構成を可能にする方法で格納されている限り、切り捨てることにより、使用することは、本発明の範囲内である。
ハッシュ値
前述したある実施形態では、データを符号化するためにビットマーカーテーブルまたは頻度変換器にアクセスする。別の実施形態では、チャンクレットまたはサブユニットが、暗号化ハッシュ関数値アルゴリズムに対する入力として機能する。
従って、各入力に対して、入力よりサイズが小さい出力がある。例えば、Xバイトのサブユニット(Xバイトのフラグメント化されたユニットとも呼ばれ得る)がある場合、出力は、Xバイトの各フラグメント化されたユニットに対して生成されたハッシュ関数値である。ハッシュ関数値アルゴリズムの例は、MD5ハッシュ(メッセージダイジェストアルゴリズムとも呼ばれる)、MD4ハッシュおよびSHA−1を含むが、それらに制限されない。ハッシュ関数値アルゴリズムから出力される値は、チェックサムまたは和(sum)と呼ばれ得る。いくつかの実施形態では、和は、64、128、160または256ビットのサイズである。I/Oストリーム内のデータの非常に繰り返しが多い特質のために、矛盾する和、すなわち、同じであるが、異なるフラグメント化ユニットに対応する和、を生成する確率は、比較的低い。
いくつかの実施形態では、各ハッシュ値は、複数の0および/または1から成り、好ましくは、同じ長さの、ビット列またはコードである。これらのハッシュ値は、非キャッシュ記録媒体上に格納するために使用され得る。
一実施形態では、システムは、例えば、非キャッシュ記録媒体上にデータを格納するための方法を実行し得:(i)NバイトのI/Oストリームを受信すること、(ii)Nバイトを、Xバイトのフラグメント化ユニットにフラグメント化すること、(iii)暗号化ハッシュ関数値をXバイトの各フラグメント化ユニットと関連付けることであって、関連付けることが、相関ファイルにアクセスすることを含み、相関ファイルが、Yビットの格納されたハッシュ関数値を、複数の格納されたXバイトのシーケンスと関連付けて、(a)フラグメント化されたXバイトのシーケンスが相関ファイル内にある場合は、非キャッシュ記録媒体上に格納するために、Yビットの格納されたハッシュ関数値を使用し、また(b)フラグメント化されたXバイトのシーケンスが相関ファイル内にない場合は、Yビットの新しいハッシュ関数値を生成して、Xバイトのフラグメント化シーケンスとともに相関ファイル内に格納し、非キャッシュ記録媒体上に格納するために、新しいハッシュ関数値を使用する、暗号化ハッシュ関数値をXバイトの各フラグメント化ユニットと関連付けること、を含む。
前述の方法は、NバイトのI/Oストリームのフラグメント化を必要とする。しかし、本方法は、暗号化ハッシュ関数値アルゴリズムをI/Oストリームに適用して、それをフラグメント化しないことにより適用できる。従って、代替方法は、(i)NバイトのI/Oストリームを受信すること、(ii)暗号化ハッシュ関数値をNバイトの各ユニットと関連付けることであって、前記関連付けることが、相関ファイルにアクセスすることを含み、相関ファイルが、Yビットの格納されたハッシュ関数値を、複数の格納されたNバイトのシーケンスの各々と関連付けて、(a)Nバイトのシーケンスが相関ファイル内にある場合は、非キャッシュ記録媒体上に格納するために、Yビットの格納されたハッシュ関数値を使用し、また(b)Nバイトのシーケンスが相関ファイル内にない場合は、Yビットの新しいハッシュ関数値を生成して、Nバイトとともに相関ファイル内に格納し、非キャッシュ記録媒体上に格納するために、新しいハッシュ関数値を使用する、暗号化ハッシュ関数値をNバイトの各ユニットと関連付けること、を含む。さらに、様々な方法が、例示目的で、NバイトまたはXバイトのセットに適用されるとして説明されているが、当業者は、本方法はファイルの全てのNバイトまたはXバイトに対して好ましくは適用され得ることを理解するであろう。
加えて、前述の方法は、バイト列がまだ相関ファイル内にない場合に限り、アルゴリズムを適用する。別の実施形態では、本発明は、非キャッシュ記録媒体上にデータを格納するための方法を提供し:(i)NバイトのI/Oストリームを受信すること、(ii)暗号化ハッシュ関数値アルゴリズムをNバイトの各ユニットに適用して、Nバイトの各ユニットに対して生成されたハッシュ関数値を形成すること、(iii)相関ファイルにアクセスすることであって、相関ファイルが、Yビットの格納されたハッシュ関数値を、複数の格納されたNバイトのシーケンスの各々と相互に関連付けて、(a)Nバイトのユニットに対して生成されたハッシュ関数値が相関ファイル内にある場合は、非キャッシュ記録媒体上に格納するために、Yビットの格納されたハッシュ関数値を使用し、また(b)Nバイトのユニットに対して生成されたハッシュ関数値が相関ファイル内にない場合は、Yビットの生成されたハッシュ関数値をNバイトのフラグメント化ユニットとともに相関ファイル内に格納し、非キャッシュ記録媒体上に格納するために、生成されたハッシュ関数値を使用する、相関ファイルにアクセスすること、を含む。この実施形態は、Nバイトをフラグメント化してフラグメント化ユニットを形成し、暗号化ハッシュ関数値アルゴリズムを、Nバイトのユニットの代わりに、フラグメント化ユニットに適用するステップを追加するようにも修正され得る。
前述したある実施形態では、各チャンクレット、フラグメント化ユニット、またはサブユニットに対してチェックサムが取得された後、相関ファイルにアクセスする。これらの方法は、先入れ先出し方式(「FIFO」)プロトコルに従ってチェックサムを取得して、I/Oストリームが受信されている間、チェックサムが生成されている間、または全てのI/Oストリームが受信されて、フラグメント化され、ハッシュ関数値アルゴリズムを適用された後のいずれかに、相関ファイルのアクセスを開始し得る。
前述のように、相関ファイルは、Yビットの異なる格納されたハッシュ関数値を、複数の格納されたXバイトのシーケンスの各々と関連付ける。それに応じて、生成されたハッシュ関数値があるこれらの状況では:(a)Xバイトのユニットに対して生成されたハッシュ関数値が相関ファイル内にある場合、本方法は、Yビットの格納されたハッシュ関数値を非キャッシュ記録媒体上に格納するために使用させ、また(b)Xバイトのユニットに対して生成されたハッシュ関数値が相関ファイル内にない場合、本方法は、Yビットの生成されたハッシュ関数値を、Xバイトのシーケンスとともに相関ファイル内に格納させて、非キャッシュ記録媒体上に格納するために、生成されたハッシュ関数値を使用する。
矛盾解決モジュール
ハッシュ値アルゴリズムの適用の結果として、矛盾するハッシュ値が生成されている確率は低い。それ故、いくつかの実施形態では、本明細書で説明する方法を、矛盾解決モジュールを使わずに採用することを選択し得る。しかし、様々な実施形態では、本発明は、矛盾が生じ得る状況に対処するために、矛盾解決モジュールを適用する。
図6に示すように、システムは、Nバイトのセットのストリームを受信し得る(610)。システムは、次いで、各フラグメント化ユニットに対して、ハッシュ関数を適用して、ハッシュ関数値を生成する(630)ために、Nバイトを望ましいサイズのユニットにフラグメント化させ得る(620)。次に、システムは、各ハッシュ値が既に相関ファイル内にあるかどうかを問い合わせる(640)。
これらの実施形態では、Xバイトのフラグメント化ユニットに対して、相関ファイル内のハッシュ値と同じハッシュ値が生成されるときにはいつでも起動される(650)矛盾解決モジュールがある。このモジュールは次いで、Xバイトのフラグメント化ユニットが、そのハッシュ値に対して既に格納されたXバイトの値と同じであるかどうかを問い合わせる。矛盾解決モジュールが、Xバイトのフラグメント化ユニットに対して、相関ファイル内に格納されたハッシュ関数値と同じ、ハッシュ関数値が生成されるが、Xバイトのフラグメント化ユニットが、格納されたハッシュ関数値と関連付けられたXバイトと異なると判断する場合、相関ファイルを更新して、生成されたハッシュ値を、NCMに書き込むだけでなく、その中に格納する必要がある(660)。例えば、いくつかの実施形態では、以下で説明するように、モジュールは、格納されたハッシュ関数値および生成されたハッシュ関数値と関連付けられた異なるZビットがあるようにさせる。
生成されたハッシュ値が(存在する場合は、任意の関連付けられたZ値とともに)一意である場合、それは、NCM上に格納するために使用され得、相関ファイルが関連付けを含むように更新され得る(680)。さらに、ハッシュ値が既に相関ファイル内にあり、受信されたNバイトが相関ファイル内のもとの同じである場合、格納されたハッシュ値が(存在する場合は、任意の関連付けられたZ値とともに)NCMに書き込まれて、システムは相関ファイルを更新する必要がない(670)。従って、相関ファイルファイルがアクセスされた後、新しく生成されたハッシュ値が既に相関ファイル内にある場合に限り、矛盾モジュールがチェックとしてアクセスされ得る。矛盾モジュールは次いで、矛盾があるか、または受信したファイルからのチェックサムおよびフラグメント化ユニットの両方が、既に相関ファイル内で互いに関連付けられているかを判断するであろう。
前述の実施形態は、各フラグメントのビットのユニットが、相関ファイルにアクセスする前に、暗号化ハッシュ関数値アルゴリズムを適用される方法を記述する。しかし、代替として、まず、サブユニットまたはチャンクレットの存在について相関ファイルを確認し、フラグメント化ユニットがまだテーブル内にない場合に限り、暗号化ハッシュ関数値アルゴリズムを適用できる。次いで、チャンクレットまたはサブユニットが既に相関ファイル内にある場合は、格納されたチェックサム値を使用する。サブユニットまたはチャンクレットがファイル内にない場合には、ハッシュ値アルゴリズムを適用して、矛盾をチェックするためにプロトコルに入るであろう。本当の矛盾がある、すなわち、同じハッシュ値が異なるサブユニットまたはチャンクレットと関連付けられている場合には、この問題に対処するように相関ファイルを更新するであろう。
本当の矛盾の問題に対処するための一手段は、矛盾が存在しない全てのハッシュ関数値に対して、Zビットが関連付けられることであり、Zビットは、例えば、8〜16個のゼロの均一の長さである。限定されない例として、N=4096バイト(チャンクレットのサイズ)、X=512バイト(サブユニットのサイズ)、Y=128または256ビット(ハッシュ値サイズ)、およびZ=8または16ビット(ハッシュ値拡張サイズ)である。本方法は、例えば、チェックサムが、以前に格納されたチェックサムと矛盾しない場合、チェックサムの端部に8個のゼロを結合させ得る。矛盾を識別した際には(例えば、異なるフラグメント化ユニットが同じチェックサムと関連付けられている)、最新のチェックサムが異なるZ値を割り当てられ得る。従って、相関ファイル内に格納された際のZ値が00000000の場合、第1の矛盾しているチェックサムに対するZ値は、00000001であり得、別の矛盾しているチェックサムがあるとすれば、00000010である。さらに矛盾しているチェックサムがある場合、矛盾しているチェックサムが識別されると、各矛盾しているチェックサムは次のZ値を割り当てられ得る。
各フラグメント化ユニットに対してチェックサムが取得され、矛盾モジュール(存在する場合)の適用に続いて、複数のハッシュ関数値(および、いくつかの実施形態では、Z値とともに)が、格納のために非キャッシュ記録媒体に書き込まれ得る。
ハッシュ値およびビットマーカーまたは頻度変換器の併用
いくつかの実施形態では、ハッシュ値を格納する代わりに、本方法は、格納のための各ハッシュ関数値を、ビットマーカーテーブルの使用を通して変換(符号化とも呼ぶ)して、格納のための各ハッシュ関数値に対してビットマーカーを生成すること、ならびにそれぞれのハッシュ関数値(および、いくつかの実施形態では、Z値とともに)に対する各ビットマーカーを、非キャッシュ記録媒体内に格納することをさらに含む。ビットマーカーテーブルを使用することにより、ハッシュ値を変換またはコード化し得る。従って、ハッシュ値は、ビットマーカーテーブルをアクセスする際に入力サブユニットとして機能し得、関連付けられたマーカーが出力として機能し得る。
サブユニットは、長さAによって定義され得、Aで割ったハッシュ値の長さは整数である。ビット列のいずれかがそのビット数を有していない、例えば、1つ以上のビット列が、変換されるように構成されているサブユニット内の数よりも少ないビット数しか有していない場合、システムは、ビット、例えば、ゼロを、全てのサブユニットが同じサイズになるまで、追加し得る。代替として、0の追加が、ハッシュ値をサブユニットに分割する前に、ハッシュ値レベルで実行され得る。さらに、ハッシュ値(および、いくつかの実施形態では、Z値と結合されたとおり)がサブユニットのサイズよりも小さい場合、それらは、サブユニットを形成するように結合されるか、または適切なサイズのサブユニットを形成するために結合されてフラグメント化され得る。
ハッシュ値のコード化されたデータへの変換は、アルゴリズムまたはコンピュータプログラムによって実施され得る。アルゴリズムまたはコンピュータプログラムの実行は、例えば、ハッシュ関数値アルゴリズムの適用も制御する、マネージャによって制御され得る。コード化されたデータ(変換されたデータとも呼ばれ得る)も、2値信号から成り、ファイルのハッシュ値に変換して戻すことが可能な方法で、コード化されて格納される。従って、情報を失うことなく復号を可能にする符号化プロセス中に、情報が保持される。
符号化は、2つの独立した目的に役だち得る。第1に、格納のためのデータをビットマーカーテーブルを通して変換することにより、セキュリティが向上する。コードを知っている人またはエンティティだけが、それを復号して文書を再構築することができる。第2に、コードが、文書に対応するハッシュ値よりも少ないビットを使用して作成される場合、変換されたデータおよびハッシュ値の両方の使用により、必要な記憶空間が少なくなって、費用をさらに節約できる。
いくつかの実施形態では、ビットマーカーテーブルを使用するのではなく、本方法は、格納のための各ハッシュ関数値を頻度変換器の使用を通して符号化することをさらに含む。これらの方法では、格納のための各ハッシュ関数値に対して、変換されたビット列が生成され、同じサイズのハッシュ値に対して、出力される変換されたビット列は異なる長さである。頻度変換器は、複数の変換されたビット列の各々を、複数のハッシュ関数値の各々と関連付け得、頻度変換器内の複数の変換されたビット列は、読み戻された際に、変換されたビット列が適切なハッシュ値と相互に関連付けることができるように、十分に区別できる。
ハッシュ値アルゴリズムの使用を、(1)ビットマーカーテーブルの適用、または(2)頻度変換器の適用:のいずれかと組み合わせることにより、さらなるセキュリティおよび/または経費節減を取り入れることができる。加えて、前述のように、ハッシュ値は、ビットマーカーテーブルまたは頻度変換器に対する入力である。しかし、順序が逆転され得、チャンクレットまたはサブユニットが、マーカーを生成するためにビットマーカーテーブルまたは頻度変換器を使用するプロトコルに入り得、それらのマーカーは、矛盾解決モジュールを使用する方法を含むが、それらに限定されず、本明細書で説明する方法のいずれかに従い、ハッシュ関数アルゴリズムに対する入力として機能し得る。
メディエータおよびマネージャ
ビットマーカーテーブル、頻度変換器、ハッシュ値相関ファイル、ならびに前述のファイルおよびプロトコルにアクセスして使用するためのプログラムのいずれかまたは各々が、メディエータ、マネージャまたは他の場所に格納され得る。前述のプロトコルまたはファイルのいずれか1つ以上が、本発明の実施形態に関連して使用され、メディエータまたはマネージャ内に格納されない場合はいつでも、好ましくは、メディエータ、マネージャ、または両方に動作可能に結合される。ローカルまたはリモートに格納されているファイルおよびプログラムと通信するための方法およびシステムは、当業者に周知である。
様々な実施形態では、マネージャは、本発明の方法を制御する。例えば、I/O(ホストからの出力、システムへの入力)がホストから受信された後、マネージャは、I/Oストリームの受信をホストに対して確認させ得る。
ホストは、I/Oストリームのファイルを第1の記憶アドレスに格納されているとして記録し得る。しかし、変換されたビット列は、実際には、第2の記憶アドレスにおいて非キャッシュ記録媒体内に格納され得、第1の記憶アドレスは、第2の記憶アドレスと同じではない。さらに、第1の記憶アドレスは、ファイルを第1のファイルサイズを有するとして示し(または、その表示と関連付けられ)得、他方、第2の記憶アドレスは、第2のファイルサイズに対応し得、第1のファイルサイズは、第2のファイルサイズの、少なくとも2倍の大きさ、または少なくとも4倍の大きさである。
いくつかの実施形態では、第2の記憶アドレスは、メディエータ上に格納される。メディエータ内で、第2の記憶アドレスはビットフィールド内に格納され得る。本明細書で説明するメディエータは、ビットマーカーテーブル、頻度変換器およびハッシュ値アルゴリズムの1つ以上を通してデータを翻訳するために説明した方法と無関係に、またはそれに関連して、使用され得る。
いくつかの実施形態では、メディエータは、ハードウェア、ソフトウェア、またはその組合せであり:(i)トラックの第1のセットであって、ファイルシステム情報、ブート可能性情報、およびパーティション情報に対応する情報を含むか、または包含する、トラックの第1のセット、(ii)トラックの第2のセットであって、トラックの第1のセットのコピーに対応する情報を含むか、または包含する、トラックの第2のセット、(iii)トラックの第3のセットであって、ファイルシステム情報、ブート可能性情報、およびパーティション情報以外のメタデータに対応する情報を含むか、または包含する、トラックの第3のセット、ならびに(iv)トラックの第4のセットであって、ビットフィールドに対応する情報を含むか、または包含する、トラックの第4のセット、を含む。例として、メディエータは、L2キャッシュ内に常駐し得、ビットマーカーテーブル、頻度変換器またはハッシュ値テーブルのいずれか1つ以上は、使用中、サーバーのRAM内に常駐し得、また、マーカーまたはハッシュ値が格納されているNCMと同じか、または異なり得る、ソリッドステートデバイスの永続記憶装置内にも存在し得る。更新される場合、更新は、RAM内のテーブルに対して、および永続的メモリに対しても行われる。
メディエータの使用に加えて、本発明の様々な実施形態は、マネージャの使用を必要とする。マネージャは、1つ以上のモジュールを含み、ローカルコンピュータ上、ネットワーク上、またはクラウド内に常駐し得る。マネージャは、ある情報自体の受信を調整するか、またはある情報自体を受信して、この情報をメディエータに転送するか、または、情報の受信を直接メディエータによって制御するように構成されている。従って、方法は、イニシエータからの情報がマネージャからメディエータに流れるか、またはマネージャだけが情報の流れをシステムの他の構成要素に、例えば、ホストもしくはNCMに向けるように、設計できる。
本発明の様々な実施形態では、マネージャは、ハッシュ関数アルゴリズムまたは他のプロトコル、任意の矛盾モジュール(存在する場合)および任意の変換モジュール(存在する場合)を適用するか、または適用させ得、データの流れを直接、メディエータに向かわせ得る。マネージャはまた、メディエータの使用を通じた情報の格納、ならびに情報の取得および伝送も制御し得る。情報を格納する場合、LBA番号が識別され得、格納されるデータが、ボトルネックを回避するか、またはそれを低減するために、バッファに送信され得る。さらに、格納中、L1および/またはL2キャッシュが使用され得る。
同様に、データを取得する際に、本方法は、データをNCMから呼び出して、バッファに充填し、チェックサム値を取得して、フラグメント化ユニットを再作成および再構成し得るか、またはフラグメント化されていない場合は、ホストが受信して再検討し得る形式に情報を形成するように直接再構築し得る。格納されたデータが変換されたデータである場合は、チェックサム値を取得する前に、データが復号され得る。これらのステップは、必要なプロトコルを実行する、マネージャを通して調整および制御され得る。
いくつかの実施形態では、マネージャは、1つまたは複数のメディエータを制御し、それと通信し、かつ、その活動を調整し得る。各メディエータに対して、マネージャは、パラメータのセットを受信する(または、その受信を調整する)。これらのパラメータは、ファイルシステム情報、ブート可能性情報、およびパーティション分割情報の1つ、2つ、もしくは3つ全部を含むか、基本的にそれらから成るか、またはそれらを含み得る。マネージャは、この情報を、メディエータ上のトラックの第1のセット内に格納させ、それは、予約1またはRと呼ばれ得る。ファイルシステムは、予約ブロックがどのように使用されるかを指示する。例えば、NTFSを使用する場合、セクター1〜2がMBR(マスターブートレコード)用であり得、セクター3が$MFT用であり得る。任意選択で、これらのトラックが、トラックの第2のセットにコピーされ得、それは、予約2またはRと呼ばれ得る。
マネージャは、前のパラグラフで説明したパラメータに加えて、メタデータも受信し得る。メタデータは、メディエータ上のトラックの第3のセット内に格納される。マネージャがパラメータおよびメタデータを受信する時、またはその後に、非キャッシュ媒体上に格納するための1つ以上のファイルも受信し得る。各ファイルは、ファイル名とともに受信される。ファイル名は、ファイルを伝送するホストによって生成され、ホストのファイルシステムによって定義され得る。例えば、SANもしくはNASもしくはそれらの組合せであるか、またはその一部であり得る、マネージャは、ファイルをファイル名とともに受信すると、自動的に、格納のための本明細書で説明したステップを実行できる。
本発明のシステムは、ハッシュ関数値アルゴリズムおよび変換のためのアルゴリズムが、メディエータ、またはマネージャ、またはメディエータもしくはマネージャに動作可能に結合されている他のハードウェアおよび/もしくはソフトウェア内のいずれかに格納される。アルゴリズムのいずれかまたは両方は、ファイル名もメディエータ内に格納させ得る。メディエータが物理的にどこに置かれるかに関して制限はない。しかし、好ましくは、メディエータは、ホストまたは、好ましくは、メディエータからリモートに配置されている、ホストと通信可能なコンピュータと通信するように構成されている。メディエータは、直接的または間接的に(例えば、マネージャを通じて)、記録媒体、例えば、データのコード化セットが格納される非キャッシュ媒体(任意選択で、メディエータ、任意のマネージャおよびホストからリモートである)と、通信するようにも構成される。前述のように、メディエータは、ファイル名を識別するユーザーが、コード化されたデータのセットを非キャッシュ記憶媒体から取得するのを可能にする。
キャッシュ
前述のように、いくつかの実施形態では、生データを受信すると、本発明の方法は、受信の確認を自動的にホストに返させ得る。あるQoS(サービス品質)プロトコルでは、データファイルがI/Oを通して受信されて、直ちにL1キャッシュに送信される。受信されると、確認がL1キャッシュからI/Oを通して返送される。L1キャッシュから、データファイルがL2キャッシュに送信され得、L2キャッシュは確認をL1キャッシュに返送する。L2キャッシュは、データファイルを長期格納のために非キャッシュ媒体(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の記憶アドレスにおいて格納される各ファイルを理解するであろう。第1の記憶アドレスは、ホストによって、セクターマップ内に格納されて、LUNに対応し得る。それは、ファイルに対応する、ユニット、セクターまたはブロックの開始および、暗黙的または明示的のいずれかで、終了も含み得る。第1の記憶アドレスは、そのファイルが記憶装置またはストレージエリアネットワーク内で置かれているとホストが信じる位置に対応する。ホストは、このファイルアドレスを使用して、その格納された文書またはファイルを追跡し、また、それらを取得する。第1の記憶アドレスは、仮想アドレス、すなわち、データが実際に格納されている位置に対応していない。
当業者であれば認識するように、ホストがファイル記憶アドレスを生成して、それを本発明のシステムに従い、SCSIコマンドで送信し、任意選択で、セクターまたはLBA番号(複数可)を関連付ける、方法およびシステムが使用され得る。メディエータは、ファイル名、ホストがファイルの位置として考えるもの、およびホストから受信されたときのファイルの記憶サイズ、すなわち、生データおよび任意のヘッダーもしくはフッターデータを、データの実際の記憶アドレスである、第2の記憶アドレスと相互に関連付け得、それは、ファイルがそれから再作成できるが、例えば、ハッシュ関数値アルゴリズム、ビットマーカーテーブルおよび頻度変換器の1つ以上を通して、変換されている、情報を含み得る。代替として、メディエータはファイル名のみを格納し得、任意選択で、ファイルに対する第1の記憶アドレスを受信しない可能性がある。前述のように、記憶アドレスは、データの線形構成に基づいているので、それらは、第1のユーザー認識LBAのみを列挙するか、または明示的に全ての位置を列挙することにより、格納された情報のサイズを暗黙的に含み得る。
前のパラグラフでは、ホストは、それが第1の記憶アドレスであると信じるものを提供すると記述しているが、情報は、ホストがそれを通してメディエータと直接的もしくは間接的に通信するダクト、ホスト内もしくはホストに動作可能に結合されたモジュール、またはメディエータおよび/もしくはマネージャ内であるか、もしくはそれに動作可能に結合されたモジュールのいずれかである別のエンティティによって生成され得る。当業者であれば認識するように、記憶装置上のデータファイルの位置を識別する格納された情報は、ポインタと呼ばれ得る。ファイルに対して、ポインタは、ユーザーが、データが配置されていると信じるNCM上の位置よりもむしろ、異なる位置(ブロック)からのデータの取得を指示し得る。
任意選択で、ファイルをファイルタイプと関連付け得る。ファイルタイプは、データの受信者に、それをオープンするためにどのオペレーティングシステムが使用されるべきかを識別するように指示する。いくつかの実施形態では、ファイルタイプとの関連付けは、イニシエータまたはクライアントまたはホストで行われる。
予備トラック
前述のように、メディエータは、トラックの第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などの特徴も提供し得る。
いくつかの実施形態では、システムはSANインデクサを含み得る。SANインデクサは、何がRおよびR内にあるかをチェックして、その情報を抽出し得る。この情報は、例えば、テキスト検索により、容易に検索され得るデータベースに入れることができる。
ビットフィールド
メディエータは、ビットフィールドに対応する情報も含むか、または包含し得る。ビットフィールドは、データが記憶媒体内の物理的にどこに格納されているかを示す情報を含み、メタデータがトラック32〜39に置かれている場合、ビットフィールドのセクター番号はトラック40から始まり得る。ホストのファイル名とデータの位置との間の相関関係が格納されているのはメディエータのビットフィールド内である。従って、それは、セクターマップを含むか、基本的にそれから成るか、またはそれから成り得る。メディエータのビットフィールド構成要素からのこの情報は、任意の装置上での実際の空間節約を判断するために使用され得る。例えば、節約される空間の割合=1−[(実際に使用される空間)/(ホストによってマップされている空間)]である。いくつかの実施形態では、本発明の方法に従ったデータ変換によって節約される空間は、少なくとも50%、少なくとも60%、少なくとも70%、または少なくとも80%である。これらの節約は、ファイル当たりであるか、または装置上の全てのファイルにわたる平均値であり得る。
事実上、好ましくは、メディエータは、ファイルデータが格納されているディスクまたは記録媒体上に置かれていない。加えて、好ましくは、メディエータは、対応するディスクまたは記録媒体の総メモリの約0.1〜0.2%のみを必要とする。
空間の節約から経済的価値を提供することに加えて、本発明の様々な実施形態は、データの整合性を保護しようとする際に、効率の向上に対してドアを開く。その結果、本発明の様々な実施形態は、データのバックアップに対する新規で非自明の技術を提供する。
多くの実施形態では、格納されたファイルは、ホストから受信したとおりの生データファイルより小さいので、それに対して必要な記憶空間が少ない。従って、ファイルの再作成に必要なデータは、ホストが使用されていると認識し、かつ第1のアドレスが示唆するよりも小さい位置に格納できる。ファイルが格納されている実際の位置は、第2の記憶アドレスと呼ばれ得る。従って、各ファイルに対して、ファイルが格納されているとホストが信じる、第1の記憶アドレス、およびコード化ファイルが実際に格納されている、第2の記憶アドレスがある。
1つ以上のブロックに対応し得る、所与のファイルに対して、第1の記憶アドレスおよび第2の記憶アドレスが、記憶装置内の同じブロックまたはブロックの1つ以上の重なり合うセットに配置されることが可能である。しかし、好ましくは、ファイルの、少なくとも1つ、少なくとも50%、少なくとも60%、少なくとも70%、少なくとも80%、少なくとも90%、または100%に対して、第1の記憶アドレスおよび第2の記憶アドレス内に重なり合うブロックがない。加えて、たとえホストが、メディエータが認識するのと同じ記憶アドレスを認識しても、データがコード化される際に、ホストは、まずデータを復号することなく、ファイルを再作成できない。いくつかの実施形態では、ホストは、コードを認識せず、従って、格納されたデータを復号できない。
いくつかの実施形態では、メディエータは、ファイルに対応するチャンクレット(複数可)を受信して、それらをL1またはL2キャッシュ内に一時的に格納し得る。L2キャッシュが存在する場合、L2キャッシュは、受信をホストに対して確認し得、任意選択で、第1の記憶アドレスをホストに提供するか、または確認し得る。当業者であれば認識するように、受信の確認および第1の記憶アドレスの伝送が、第2の記憶アドレスにおける格納の前に、かつ符号化が実行される場合は、符号化の前または後に、行われ得る。確認がいつ送信されるかに関わらず、ファイルの実際の記憶アドレスと仮想記憶アドレスの相関関係が、好ましくは、ビットフィールド内で追跡される。
データのバックアップ
ある実施形態では、データのバックアップを容易にするために2つのメディエータを使用し得る。例えば、第1のメディエータでは、第1のセクター内に格納されるデータファイルまたは第1の記録媒体上の第1のセクタークラスタをファイル名と相互に関連付け得る。前述のように、第1のメディエータは、ファイル名を識別するユーザーまたはエンティティがデータファイルを記録媒体から取得するのを可能にするように構成される。
第2のメディエータを生成する、データ保護プロトコルが実行され得る。第2のメディエータは、時間T1における第1のメディエータの正確なコピーであろう。従って、T1において、第1のメディエータおよび第2のメディエータの両方は、第1の記録媒体上の同じセクターまたはセクタークラスタ(およびその中の位置)を指す。
時間T1の後、例えばT2において、ホストは、所与のセクターまたはセクタークラスタ上の所与の位置内に格納されているファイルを更新しようとし得る。ホストは、第1の記憶アドレスに格納されたデータを変更しない。セクターまたはセクタークラスタ上の情報を上書きさせるのではなく、第1のメディエータは、新しい情報を、異なるセクターまたはセクタークラスタ内の位置に対応する第3の記憶アドレスに書き込ませて、ファイル名および第1の記憶アドレスをこの新しい記憶アドレスと相互に関連付け得る。
このように、たとえ、情報が特定の記憶アドレスにおいて上書きされているとホストが信じても、第1のメディエータは、新しいセクターまたはセクタークラスタを指す。それに応じて、ホストは、そのアドレスをセクタークラスタに対して更新する必要がない。
第2のメディエータは更新されずに、ファイル名を、そのファイルが格納された第1の位置と継続して相互に関連付ける。2つのメディエータのこの使用は、ファイルが、T1およびT2の両方において存在していたとおりに格納されていることを示すように、ホストに、そのファイルシステムを更新させる必要なく、データがT1において存在するとおりにそのデータのスナップショットを提供するのを可能にする。従って、スナップショットは、時間T1において格納されている全てのデータファイルをロックして、いずれも、それらの物理ファイルを通して削除または書込みが行われるのを防ぐ。しかし、ホストがそれらのファイルを修正したい場合、実際には新しいファイルが格納されているときに、ホストは、それを行っていると思い込んで動作できる。この方法は、セクターおよびセクタークラスタと関連して記述される。しかし、それは、セクターまたはセクタークラスタ内に配置されていない非キャッシュ媒体でも動作するであろう。例えば、それらは、LUN内のLBAによって編成され得る。
上で示唆するように、この方法は、第1のメディエータ、第2のメディエータおよび非キャッシュ媒体を含むシステムによって実装され得る。第1のメディエータ、第2のメディエータおよび記録媒体の各々は、持続性媒体を含むか、基本的にそれから成るか、またはそれから成り得る、別個の装置上に格納され得るか、または別個の装置から形成され得る。前述のシステムは、同じ記録媒体の異なるセクターの使用を詳述するが、異なる記録媒体の異なるセクターに書き込むことによっても使用できる。加えて、システム内で、メディエータおよび記録媒体は、互いに、ならびに任意選択で、命令を格納する1つ以上のコンピュータまたはCPUに、動作可能に結合されて、それらに、それらの意図する機能を実行させ、ネットワークを経由して、1つ以上のホストへ1つ以上のポータルを通して通信させる。さらになお、この実施形態は2つのメディエータの使用と関連して説明されているが、2つの別個のメディエータではなく、同じメディエータの2つのセクションを使用するシステムを実装できる。
システムは、ロックモジュールとともにさらに構成され得る。ロックモジュールは、ある時間において書き込まれている1つ以上のブロックにおける修正、上書き、または削除を防ぎ得る。ロックモジュールは、新しいブロックの書込みおよび、ロックされていないそれらの新しいブロックの修正を可能にするように設計もされ得る。従って、ロックモジュールは、ホスト、ユーザーまたはシステム管理者が、ある時間において書き込まれているあるブロックを選択するか、またはある時間において書き込まれている全てのブロックが上書きされないように選択するのを可能にするように構成され得る。
さらに、デフォルト設定により、ファイルの取得および修正、上書きまたは削除に対する全ての要求を第1のメディエータを通じて送信する選択モジュールがあり得る。選択モジュールは、ロック技術が適用された時間における1つ以上のファイルの古いバージョンであるとホストが信じ得るものの復旧を可能にするように構成もされ得る。任意選択で、選択モジュール全体へのアクセスが、権限を有する人、例えば、システム管理者に制限され得る。
データをバックアップするための前述のシステムが、2つのメディエータのコンテキストで説明される。しかし、格納されたファイルの履歴またはファイルのバージョンを捕捉するために3つ以上のメディエータが使用できる。例えば、少なくとも3つ、少なくとも4つ、少なくとも5つ、または少なくとも10のメディエータなど、が使用され得る。追加として、ホストは、メディエータに、一定の間隔で(例えば、毎週、毎月、3か月ごともしくは毎年)または不規則な間隔で(例えば、要求に応じて)、スナップショットを取らせ得る。
データをバックアップするための別の方法によれば、非キャッシュ媒体のクローンが作成され得る。この方法では、第1のメディエータ内で、複数のファイル名を、非キャッシュ記憶媒体上に格納されている複数のデータ位置と相互に関連付ける。第1のメディエータは、特定のファイル名を識別するユーザーが、特定のファイル名に対応する第1の非キャッシュ記憶媒体からデータファイルを取得するのを可能にするように構成されている。特定ファイルの一部または全体が、第1のセクターまたはセクタークラスタ内に格納され得る。
複数のデータファイル(または第1の非キャッシュ記憶媒体の全てのデータファイル)のコピーを第2の非キャッシュ記憶媒体および第2のメディエータに対して作成し得る。第2のメディエータは、時間T1における第1のメディエータのコピーであり、第2の非キャッシュ記憶媒体に動作可能に結合されている。T1の後である、時間T2において、システムは、第1の非キャッシュ記憶媒体上の前記第1のセクターまたはセクタークラスタ内に格納されているデータファイルに、修正を保存し得る。しかし、第2の非キャッシュ媒体上の対応する位置に対する変更は行われない。ユーザーがT2の後にファイルを要求すると、彼または彼女は、第1のメディエータを経由して、直前に格納されたファイルのバージョンを取得するであろう。しかし、システム管理者は、第2の非キャッシュ媒体上に格納されて、第2のメディエータを経由することにより取得し得た、前のバージョンにアクセスしていたであろう。
この方法は、第1のメディエータ、第2のメディエータ、第1の非キャッシュ記憶媒体および第2の非キャッシュ記憶媒体を含む、システムによって実装され得る。第1のメディエータ、第2のメディエータならびにデータファイルを格納するための第1および第2の記録媒体の各々は、持続性媒体を含むか、基本的にそれから成るか、またはそれから成り得る、別個の装置上に格納され得る。追加として、第1のメディエータは、ホストから導出されるファイル名を、第1の記録媒体の第1のLUNと相互に関連付け、第2のメディエータは、同じファイル名を、第2の記録媒体上の第2のLUNと相互に関連付ける。いくつかの実施形態では、第1の非キャッシュ媒体内に格納されている、最新のファイルは、従来のファイルが第2の非キャッシュ媒体内に有するのと同じLUNを有する。
データ取得
本発明の方法のいずれかによれば、変換された形式で格納されている任意のデータは、それをホストに返す前に、取得されて復号されることが可能である。変換されたデータを取得すること、前述の参照テーブルまたは頻度変換器にアクセスすること、ならびに均一のビット列およびチャンクレットに変換して戻すことを可能にする1つ以上のアルゴリズムの使用を通じて、ファイルがホストのために再作成できる。限定されない例として、データが変換されて、1つのマーカーがどこで終わるかの指示(例えば、一意のビット列の使用または均一サイズのマーカーの使用を通じて)を含むフォーマットで格納されている可能性がある。
格納されたとおりのデータの取得は、現在知られているかまたは知られるようになり、かつ当業者が、本発明と関連して利用されるとして理解する、プロセスおよび技術を通し得る。任意選択で、マネージャは、ファイルの格納および取得を調整する。いくつかの実施形態では、マーカーなどのNCMからのデータは、並列処理を通して取得される。
一方法では、記録媒体にアクセスすることにより始まる。記録媒体は、複数のマーカーを順番に格納して、これらのマーカーからファイルを再作成できる。アクセスは、ファイルの取得を要求して、その要求をストレージエリアネットワークに伝送するホストによって、またはストレージエリアネットワークの管理者によって開始され得る。
データが、メディエータ(存在する場合)によって識別される位置から記憶媒体から取得された後、データが変換されている場合は、複数のマーカー(または頻度変換器を通して変換されているデータ)を、I/OストリームまたはI/Oストリームのフラグメント化ユニットに変換して戻されるチャンクレットまたはハッシュ値を形成するために使用され得るビットに翻訳する。マーカーは、各マーカーがチャンクレットに対応するか、または各マーカーがサブユニットに対応して、複数のサブユニットが結合されてチャンクレットを形成し得るように、格納され得る。格納されたフォーマットでは、マーカーは、所望の文書またはファイルの再作成を可能にする方法で、チャンクレット(またはハッシュ値)内のビットの再作成およびチャンクレット(またはハッシュ値)の順序の再作成を可能にする順序で配置される。
データが変換される場合は、マーカーをチャンクレットに翻訳するために、ビットマーカーテーブルまたは頻度変換器にアクセスし得る。ビットマーカーテーブルまたは頻度変換器内では、各一意のビット列またはファイル内の各一意のビット列と関連付けられている一意のマーカーがあり得る。テーブルが、テーブル2に類似したフォーマットで編成されている場合、翻訳後、各サブユニットおよびチャンクレットが同じサイズを有するために、ゼロが追加され得る。復号時に、ビットマーカーテーブルまたは頻度変換器を、コード化のためにこれを使用するのとは逆に使用する。任意選択で、同じテーブルを使用して、入力および出力を逆転する代わりに、別個のテーブルを使用し得る。
他の実施形態と同様に、各チャンクレットはNビット長であり得、Nは1よりも大きい整数であり、また、各サブユニットはAビット長であり、Aは整数である。マーカーをチャンクレットに翻訳するために、ビットマーカーテーブルまたは頻度変換器にアクセスし得る。
チャンクレットが形成された後に、文書がそれから再構成できるバイナリデータに対応する出力を有する。任意選択で、ファイルをファイルタイプと関連付け得る。例えば、ホストはMIME変換器を追跡して、返す際にそれをファイルと再度関連付け得る。ファイルタイプは、データの受信者に、それをオープンするためにどのオペレーティングシステムを使用すべきかを知るように指示する。当業者であれば認識するように、ストレージエリアネットワークは、ファイルタイプを追跡する必要がなく、いくつかの実施形態では、行わない。
チャンクレットが形成された後に、いくつかの実施形態では、ファイルがそれから再構成できるバイナリデータに対応する出力を有する。他の実施形態では、変換されたデータは、ハッシュ値に対応し、ハッシュ値はまず、I/Oストリームのフラグメント化ユニットまたはI/Oストリーム自体を作成するために使用される必要がある。
切り捨てられたデータに関しては、ビットマーカーテーブルまたは頻度変換器を利用する必要がない場合でさえ、データを取得し得る。記録媒体をアクセスすることによりそれを行い得、記録媒体は、複数のデータユニットを複数の位置に格納し、各データユニットは、複数のビットを含み、データユニットの最大サイズは第1のビット数であり、少なくとも1つのデータユニットは、第2のビット数を含み、第2のビット数は第1のビット数よりも小さい。
次に、データユニットを取得して、1つ以上のビット、例えば、0を、Nビット長よりも少ない任意のデータユニットの端部に追加して、データユニットに対応するチャンクレットのセットを生成し得、各チャンクレットは、同じビット数を含み、データユニットの順番に対応する順番にチャンクレットのセットを含む出力を生成する。切り捨てられたデータがゼロを除去することにより形成された場合には、データを取得する際に、ゼロを追加して戻すであろう。加えて、格納されたデータユニットがチャンクレットのサブユニットであった場合、システムはまず、均一サイズのサブユニットを生成するために、切り捨てられたサブユニットにゼロを追加して戻し、次いでサブユニットを結合してチャンクレットを形成し得る。
ルックアップテーブルが使用される場合には、それは、好ましくは、コンピューティング装置のメモリ内に格納される。いくつかの実施形態では、ルックアップテーブルは静的であり、マーカーは事前に決められている。従って、1つ以上の異なる文書タイプの複数の文書を長期間にわたって格納している場合、同じテーブルが使用され得る。任意選択で、それは、ホストの位置に、またはストレージエリアネットワークの一部として、格納され得る。
ホストからのデータの受信
様々な実施形態をさらに詳しく説明するため、およびコンテキストを提供するために、以下で、使用し得る特定のハードウェアが参照されるが、ハードウェアは、組み合わされて、本発明の方法を実装するためのシステムを形成する。ハードウェアは、前述のプロセスが自動化されて、1つ以上のデータファイルをホストから受信すると、1つ以上のプロセッサによって制御されるのを可能するように構成され得る。
いくつかの実施形態では、ホストは、第1の位置において任意の方法で、文書およびコンピュータファイルを生成し得る。文書は、ホストのオペレーティングシステムによって生成されて、ホストのファイルシステムによる格納のために編成される。ホストのオペレーティングシステムは、そのメモリ内にローカルに、ファイル名を格納し得る。本発明は、オペレーティングシステムのタイプまたはホストが使用するファイルシステムによって制限されない。限定されない例として、ホストは、以下のハードウェア構成要素:メモリ、記憶装置、入力装置、出力装置、グラフィックユーザーインタフェース、1つ以上の通信ポータル、および中央処理装置、の1つ以上を有する、ネットワーク内のコンピュータまたはコンピュータのセットを含み得る。
その第1の位置において、SAPは、文書またはファイルと相互に関連付けるデータを格納するためのプロトコルを実行する。SAPは、データをI/Oストリームまたは、例えば、サイズが4Kのチャンクレットにフォーマットする。
データは、SANを経由して、1つ以上のモジュールを有するコンピュータもしくはネットワークに、またはデータを受信するように構成されているコンピュータもしくはコンピュータのセットに送信され得る。この受信コンピュータは、以下のハードウェア構成要素:メモリ、記憶装置、入力装置、出力装置、グラフィックユーザーインタフェース、中央処理装置、ならびに1つ以上のホストおよび1つ以上の記憶装置とローカルに、および/またはネットワークを経由して、情報の通信を可能にするように構成されている、1つ以上の通信ポータル、のうちの1つ以上を含み得る。
加えて、実行可能コンピュータコードを、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組合せ上に格納する、コンピュータプログラム製品があり得る。コンピュータプログラム製品は、本発明の方法を実施するように構成されている1つ以上のモジュールに分割されるか、またはそれらと通信可能であり得、1つ以上の持続性媒体内に格納され得る。
例えば、レベル1(L1)キャッシュおよびレベル2キャッシュ(L2)があり得る。当業者であれば承知のとおり、キャッシュ技術の使用は、慣例的に、データ格納における効率の向上を可能にしてきた。本発明では、例として、データがSANを経由してキャッシュに送信され得、データは、ハッシュ関数アルゴリズムにアクセスする前、ビットマーカーテーブルを調べる前、頻度変換器を調べる前、およびビットを切り捨てる前、ならびに/またはハッシュ関数アルゴリズムを調べた後、ビットマーカーテーブルを調べた後、頻度変換器を調べた後、およびビットを切り捨てた後に、キャッシュに送信され得る。
セクターサイズが512Bであると仮定して、サイズが4Kである各チャンクレットに対して、ホストは、8セクターの記憶装置が使用されると予期するであろう。
システム
本発明の様々な実施形態は、データ記憶および取得システムを提供する。一実施形態では、システムは、非キャッシュデータ記憶媒体、メディエータおよびマネージャを含む。これらの要素間、および任意選択で、イニシエータとの通信は、有線、無線またはそれらの組合せのネットワークを経由し得る。
非キャッシュデータ記憶媒体は、例えば、1つ以上のディスクまたはソリッドステートドライブを含むか、基本的にそれらから成るか、またはそれらから成り得る。使用時に、非キャッシュデータ記憶媒体は、本発明の方法の1つ以上に従って処理されていないファイルと比べて、少なくとも50%、少なくとも60%、少なくとも70%、または少なくとも80%の空間節約で、ファイルを格納し得る。
メディエータは、トラックの第1のセット、トラックの第2のセット、トラックの第3のセット、およびトラックの第4のセット:のトラックの4つのセットを含むか、基本的にそれらから成るか、またはそれらから成り得る。メディエータは、好ましくは、持続性媒体上に格納されて、非キャッシュデータ記憶媒体からリモートに配置される。従って、メディエータおよび非キャッシュデータ記憶媒体は、好ましくは、同じ装置の一部ではない。
システムは、マネージャも含み得る。マネージャは、受信の制御、格納および取得の処理、ならびにメディエータを通じたデータの伝送を提供し得る。それ故、マネージャは、好ましくは、ホストおよびメディエータに動作可能に結合され、任意選択で、非キャッシュデータ記憶媒体に動作可能に結合される。さらに、いくつかの実施形態では、マネージャは、メディエータ、非キャッシュ媒体およびホストの各々からリモートに配置される。
マネージャは、以下の機能:(a)ファイルシステム情報、ブート可能性情報、およびパーティション情報の1つ以上を含むデータをメディエータのトラックの第1のセット内に格納すること、(b)メタデータをメディエータのトラックの第3のセット内に格納すること、(c)1つ以上のファイルを非キャッシュ媒体上に格納することであって、1つ以上のファイルが非キャッシュ媒体上に、ファイルシステム情報、ブート可能性情報、およびパーティション情報のいずれもなしで保存される(従って、いくつかの実施形態では、生データのみが非キャッシュ媒体上にある)、1つ以上のファイルを非キャッシュ媒体上に格納すること、(d)メディエータのトラックの第4のセット内に、非キャッシュ媒体内の各ファイルの位置を格納すること、ならびに(e)非キャッシュ媒体内の各ファイルの位置の、ファイルに対するホスト名との相関関係をメディエータ上に格納すること:の1つ以上を実施するように構成され得る。好ましくは、非キャッシュ媒体内の各ファイルの位置の、ファイルに対するホスト名との相関関係が、トラックの第4のセット内に格納され、それは、ビットフィールドに対応する。加えて、マネージャは、本発明の方法の1つ以上を実行することが可能な実行可能命令を含むコンピュータプログラム製品を含むか、またはそれに動作可能に結合され得る。
本発明の様々なシステム内で、SANは、コンピュータプログラム製品内に格納された指示に従って、ビットマーカーテーブルまたは頻度変換器にアクセスし得る。これらの資源は、ビットマーカーをサブユニットの各々と相互に関連付けて、出力を生成する。ビットマーカーの、全部ではないが、ほとんどが、サブユニットよりもサイズが小さいので、出力は、ホストから受信された入力ファイルよりも小さいデータファイルである。従って、ホストから受信されたとおりのファイルがサイズRであり得、一方、SANによって保存されたとおりの実際のデータがSであり得、R>Sである。好ましくは、RはSの少なくとも2倍の大きさであり、さらに好ましくは、RはSの少なくとも3倍の大きさである。
SANは、出力ファイルを受け取って、それを持続性記憶媒体、例えば、非キャッシュ媒体内に格納する。好ましくは、SANは、格納されたとおりのファイルを、ホストから受信されたとおりのファイルと相互に関連付けて、ホストがファイルを取得できるようにする。
さらに詳細な説明のために、本発明の方法を実装するためのシステムを示す、図1が参照され得る。システム10において、ホスト1は、メモリ4に動作可能に結合されているプロセッサ3を含む、ストレージエリアネットワーク6にファイルを送信する。任意選択で、ストレージエリアネットワークは、受信の確認をホストに返す。
メモリ内に、チャンクレットを取得して、その中に含まれるデータをサブユニットに分割するように設計されているコンピュータプログラム製品が格納される。メモリは、参照テーブル5も含むか、またはそれに動作可能に結合され得る。テーブルは、ビットマーカーもしくは頻度変換器またはサブユニットの1つ以上に対する相関ファイルを含み、コンピュータプログラム製品は、元のサブユニットの代わりに1つ以上のマーカーを含む、新しいデータファイルを作成する。
プロセッサは次に、ビットマーカーを、非キャッシュ媒体などの、記録媒体(例えば、ディスク2であり得る)上に格納させる。いくつかの実施形態では、当初は、マーカーの全てが同じサイズである。しかし、いくつかの実施形態では、それらを格納する前に、1つ以上、好ましくは、少なくとも25%、少なくとも50%、または少なくとも75%が、格納前に切り捨てられる。
図2は、R40およびR50、ならびに、ビットフィールド60およびメタデータファイル30のための空間を含む、メディエータ70を有するシステム100を示す。メディエータの表現は、例示のみを目的としており、メディエータの構造またはその中の編成に制限を課さない。非キャッシュ媒体(NCM)20も示されている。非キャッシュ媒体は、メディエータの近くに示されているが、それらは別個の構造である。いくつかの実施形態では、メディエータはNCMから離れた装置に置かれ、本発明の装置の1つ以上が可搬式である。マーカーまたは他の変換された生データがNCM上に格納される。
図3は、別のシステム200を示す。このシステムでは、イニシエータ(I)270がチャンクレットをキャッシュマネージャ230に伝送し、キャッシュマネージャ230は、任意選択で、データファイルのコード化を準備して、それらをメディエータ210に伝送する。ホストの例は、Microsoft Windows(登録商標) Server and Desktop、Apple OS X、Linux(登録商標) RHEL、およびSUSE Oracle Solaris、IBM AIX、HP UXならびにVM EXSおよびESXiを実行するコンピュータまたはコンピュータネットワークを含むが、それらに制限されない。データファイルに対応する情報が、当初は、R240に送信されるが、それは、以前はイニシエータが定義したパラメータが投入されていた。メディエータ自体は、ビットマーカーテーブルまたは頻度変換器(図示せず)の使用を通して情報を翻訳し得るか、またはリモート符号器(リモート変換器とも呼ばれ得、図示せず)と通信し得、また、メディエータはR内ならびにR250内に、ホストから受信されるファイル名のコピーを格納する。データが変換されて、もっと小さいサイズのファイルが作成された後、ビットフィールド260のセクターマップ内に、ファイルがディスク220内に格納される位置または複数の位置が記録される。コード化されたデータが位置285に格納され得る。データのコード化前またはデータのコード化の代わりに、ハッシュ値アルゴリズムがアクセスされ得、チェックサムが格納または変換のために使用され得る。
図4は、図3のシステムの実施形態の変形形態であり、記憶装置のバックアップを提供する、別のシステム300を示す。このシステムでは、イニシエータ370が、チャンクレットをキャッシュマネージャ330に伝送し、キャッシュマネージャ330は情報を、データを含む第1のメディエータ310に転送して、図3に対して送信された同じファイルを修正する。修正されたファイルの受信前またはその受信後のいずれかであるが、それを非キャッシュ媒体内に格納する前に、第2のメディエータ380が第1のメディエータ310から作成される。第2のメディエータは、それが作成された時における第1のメディエータの正確なコピーであり、ファイル名に対しては、その時、非キャッシュ媒体320内の同じセクター(またはセクタークラスタ)385を指す。
第1の修正されたファイルが、第1のメディエータのR340で受信される。第1のメディエータは、この場合もやはり、ビットマーカーテーブルまたは頻度変換器(図示せず)の使用を通して情報を翻訳するか、またはリモート符号器と通信するかのいずれかであろう。メディエータは、R内ならびにR350内に、ホストから受信されるファイル名のコピーを継続して格納する。データが変換されて、もっと小さいサイズのファイルが作成された後、第1のメディエータのビットフィールド360のセクターマップ内に、ファイルがディスク320内に格納される位置が記録される。しかし、修正されたファイルは異なるセクター395内に格納される。従って、第1のメディエータに対する変更は、第2のメディエータに対しては行われないであろう。
ホストは、デフォルト設定により、第1のメディエータと通信する。従って、ホストがファイルを記憶装置から呼び戻したい場合、第1のメディエータが、そのデータをセクター395から呼び戻すであろう。ホストまたはシステム管理者がデータの以前のバージョンを取得したい場合には、ファイル名を、セクター385を目指す、第2のメディエータに投入し得る。
本発明の別の実施形態によれば、以前にメタデータを本発明のシステムに(例えば、オペレーティングシステム情報、ブート可能性情報、パーティション情報、文書タイプ情報QoS情報など)提供しているイニシエータは、文書に対応するビットをキャッシュマネージャに送信する。ビットは、例えば、チャンクレットに編成され得る。
キャッシュマネージャは、情報をL1キャッシュに、L2キャッシュに、およびメディエータに送信し得る。キャッシュマネージャは受信の確認もイニシエータに送信し得る。
その上に格納された関連メタデータを既に有し得る、メディエータは、文書に対応するビットを変換器に送信し、変換器は、ビットをコード化情報に変換する。変換器と関連付けられているか、またはその一部は、計算機でもあり得、それは、変換されたビットのサイズを判断する。変換は、例えば、ビットマーカーテーブルまたは頻度変換器の使用を通し得る。
変換器は次いで、メディエータに、変換されたファイルのサイズを示し、メディエータは、変換されたファイルが非キャッシュ媒体内に格納される位置を判断し得る。このステップに続いて、メディエータはその位置に格納させ得る。
本明細書で説明する様々な実施形態の特徴のいずれも、特別の定めのない限り、開示する任意の他の実施形態に関連して説明する特徴と併用できる。従って、様々な、または特定の実施形態に関連して説明する特徴は、かかる排他性が明記されていないか、またはコンテキストから暗黙的でない限り、本明細書で説明する他の実施形態に関連して適切でないと解釈されるべきでない。
例1:ビットマーカーテーブル(予測的)
参照ロケータテーブル内で、各一意のマーカーが、一意のビット列に対応するとして識別される。テーブルは、テーブル格納用として一般に知られているか、または知られるようになり、かつコンピュータアルゴリズムが、各入力に対して割り当てられている出力を取得するのを可能にする、任意のフォーマットで格納され得る。
以下のテーブルIは、サブユニットが8ビット長である、ビットマーカーテーブルからの抜粋例を提供する。
Figure 2016509309
例として、テーブル1で識別されたサブユニットを使用して、入力が00000101 00000100 00000101 00000101 00000001である場合、出力は:1010 1000 1010 1010 0101であろう。ビットマーカー出力がサブユニット入力よりも小さい場合、それは記憶媒体上で少ない空間しか占めず、それによりビットの格納に必要な記憶空間および時間の両方を節約する。
当業者であれば認識するように、テーブル1を生成するために抜粋されたものなどの所与のビットマーカーテーブルでは、ビットの全ての組合せが使用される場合、2のエントリが必要であり、Nは、サブユニット内のビット数に対応する。8ビットがある場合には、256のエントリが必要とされる。サブユニット内に16ビットがある場合は、216のエントリが必要であり、それは65,536のエントリに等しい。サブユニット内に32ビットある場合は、232のエントリを必要とし、それは4,294,967,296のエントリに等しい。あるビット列がファイル内で使用されないことが分かっている場合には、テーブルは最小のものから始まるマーカーを割り当て得る。
例2:前処理されたサブユニットのためのビットマーカーテーブル(予測的)
サブユニットサイズが大きくなるにつれて、テーブルがより煩雑になるので、いくつかの実施形態では、テーブルは、サブユニット列の1つの端部から全てのゼロが欠落するように構成され得、テーブルにアクセスする前に、各サブユニットのその端部から全てのゼロが除去される。従って、テーブル1がそれから抜粋されるテーブルではなく、テーブル2が抜粋されるテーブルが構成され得る。
Figure 2016509309
このように、第2行および第4行で、サブユニットが前処理された後、それらは8ビットより少ないビットを有した。しかし、ホストから受信した生データ内の実際のサブユニットは全て、8ビットを有した。方法が実装されるシステムは、桁の欠如はゼロを暗示しており、全ての桁の欠如は、任意の切り捨てられたサブユニットの同じ端部においてであると理解するように設計できるので、少ない空間を占めて、一意のマーカーを一意のサブユニットに割り当てる能力を保持するテーブルを使用できる。従って、方法は、システムが00000001(7つのゼロと1つの1)および0000001(6つのゼロと1つの1)を異なるとして解釈するのを可能にする。
この方法を実装するために、各サブユニット(または、サブユニットが使用されていない場合には各チャンクレット)が第1の端部および第2の端部を有すると考え得る。第1の端部は、ビット列の右側または左側のいずれかにでき、第2の端部はその反対側であろう。説明のために、第1の端部を左端の桁と、また、第2の端部を右端の桁と考え得る。この方法の下で、次いで、各チャンクレットの各サブユニット内の1つ以上のビットを分析して、第2の端部にあるビットが値0を有するかを判断する。このステップは、前処理と呼ばれ得、前処理された後のサブユニットは、テーブル2の右側の列に現れる。第2の端部におけるビットが値0を有する場合、本方法は、第2の端部におけるビットおよび値0を有して、そのビットとともに連続的なビット列を形成し得る全てのビットを除去し、それにより、元は第2の端部に0を有していた任意のサブユニットに対して、修正されたサブユニット(テーブル内の前処理されたサブユニット)を形成する。
各サブユニットを再検討して第2の端部に0があるかどうかを判断し、そうである場合は0を除去して前処理されたサブユニットを形成するアルゴリズムを使用し得、前処理されたサブユニットは、サブユニットの第2の端部に隣接していた位置に、修正された第2の端部をもつ修正されたサブユニットとも呼ばれ得る。次に、アルゴリズムは、修正されたサブユニットを再検討して、その現在の修正された第2の端部において0があるかを判断し、そうである場合は0を除去して、さらに修正された第2の端部を形成する。この方法では、修正された第2の端部は、以前は、第2の端部におけるビットに隣接していた位置であろう。任意のさらに修正された第2の端部は、サブユニットの第2の端部から2つ以上離れた位置になっているであろう。従って、用語「修正された(revised)」は、短縮されたか、または切り捨てられた第2の端部を意味する。アルゴリズムは、この方法を、その第2の端部に1をもつ、短縮されたチャンクレットが生成されるまで、修正されたサブユニットに対して繰り返し得る。
当業者であれば認識するように、前述の方法は、1が、修正された第2の端部またはさらに修正された第2の端部になるまで、ゼロを第2の端部から除去することにより、適用されていると説明されている。本方法は、0が、修正された第2の端部またはさらに修正された第2の端部になるまで、システムが1を第2の端部から除去するように、逆に設計され得る。加えて、本開示を用いて、当業者は、ビットを、第2の端部の代わりに、第1の端部から除去し、それらの修正されたサブユニットをビットマーカーに変換するために作成されたテーブルを使用し得る。
例3:頻度交換(予測的)
経験的分析に基づき、特定のホストから受信された文書もしくは文書のセットのタイプ内、または、所与の時間フレーム(例えば、過去1年または過去2年)内に受信されている文書のセット内からの、各サブユニットの頻度を判断できる。サブユニットが番号順に編成されているテーブル1またはテーブル2に例示するようなテーブルに頼るのではなく、この情報を用いて、さらに小さいビットマーカーが、ファイル内、文書のタイプ内、または特定のホストから受信したとおりの文書のセット内に、最も出現しそうであると予測されているサブユニットと関連付けられている頻度変換器に頼ることができる。従って、頻度変換器内で、マーカーは複数の異なるサイズであり、さらに小さいサイズのマーカーが、より高い頻度のサブユニットと相互に関連づけられる。
Figure 2016509309
テーブル3は、テーブル1と同じサブユニットを使用する頻度変換器からの抜粋例である。しかし、ビットマーカーは順番に割り当てられておらず、代わりに、より大きなビットマーカーが低頻度のサブユニットに割り当てられていることに気付くであろう。テーブルに示すように、サブユニット00000011に割り当てられているマーカーは、サブユニット00000001に割り当てられているものよりも、25パーセント大きく、サブユニット11111101に対しては、高い数値であるにも関わらず、それは、特定のホストから受信したファイルのタイプ内により頻繁に出現するので、より小さいビットマーカーを受信する。従って、テーブル1を使用して、サブユニット11111101が10,000箇所に出現する場合、それは111,111,010,000ビットに対応するであろう。しかし、テーブル3を使用した場合には、同じ情報を格納する目的に対して使用するために、11,000,000ビットが必要であろう。この方法には示していないが、サブユニットは、ゼロを一方の端部または他方から除去するために前処理でき、テーブルは相関する切り捨てられたサブユニットを含むように設計され得る。
前述のように、頻度変換器は、1つ以上のホストから受信しそうなデータを代表すると考えられるファイルのセットの分析に基づき生成できる。いくつかの実施形態では、情報を処理するアルゴリズムは、それ自身の品質管理を実行して、所与の期間からの文書に対するサブユニットの実際の頻度を、頻度変換器内のマーカーの割当てが基づいているものと比較する。統計的分析を使用して、それは、次いで、将来の使用のために、どのようにマーカーがサブユニットと関連付けられているかを割り当てる、新しいテーブルが作成されるべきかを判断し得る。当業者であれば認識するように、テーブル3は、頻度変換器の単純化した抜粋である。しかし、実際には、相関関係を得るために16進記数法を選択し得る。加えて、テーブルが基づく頻度の列挙は、読者の便宜のために含まれており、それらは、本発明の様々な実施形態によってアクセスされる際にテーブルに含まれる必要はない。
例4:メディエータ内での空間の割当て(予測的)
1MBのサイズの仮説の記録媒体では、当業者は、セクターを次のようにマッピングし得る:
1MBの記録媒体は、1,024,000バイトを有し、それは250セクターに対応する(1,024,000/4096=250)。記録媒体のジオメトリは、次のように要約され得る:ボリューム=(c*h*spt*ss)、ここで
c(シリンダー数)=7;
h(ヘッド数)=255;
spt(トラックあたりのセクター)=63;および
ss(バイト単位でのセクターサイズ)=4096とする。
メディエータ内では、セクターは次のように割り当てられ得る:
Figure 2016509309
例5:空間の節約
本発明のシステムは、4096バイトのI/Oストリーム内で4250万ブロックのデータを受信した。システムは、MD5ハッシュアルゴリズムを適用して、I/Oストリーム内の4250万ブロックに対応する780万ブロックのハッシュ値を生成する。
これは、元の4250万ブロックを格納するために必要とされていた空間の18.5%だけの使用に翻訳された。矛盾モジュールが適用されて、矛盾が存在しないことが検証された、すなわち、異なるブロックに対して、ハッシュ値の重複が生成されなかった。

Claims (56)

  1. 非キャッシュ記録媒体上にデータを格納するための方法であって、
    i.NバイトのI/Oストリームを受信することと、
    ii.前記Nバイトを、Xバイトのフラグメント化ユニットにフラグメント化することと、
    iii.暗号化ハッシュ関数をXバイトの各フラグメント化ユニットに適用して、Xバイトの各フラグメント化ユニットに対して生成されたハッシュ関数値を形成することと、
    iv.相関ファイルにアクセスすることであって、前記相関ファイルが、Yビットの格納されたハッシュ関数値を、複数の格納されたXバイトのシーケンスの各々と関連付け、各フラグメント化ユニットに対して
    (a)Xバイトのフラグメント化ユニットに対して前記生成されたハッシュ関数値が前記相関ファイル内にある場合は、非キャッシュ記録媒体上に格納するために、Yビットの前記格納されたハッシュ関数値を使用し、
    (b)Xバイトの前記フラグメント化ユニットに対して前記生成されたハッシュ関数値が相関ファイル内にない場合は、Yビットの前記生成されたハッシュ関数値をXバイトの前記フラグメント化ユニットとともに前記相関ファイル内に格納し、前記非キャッシュ記録媒体上に格納するために、前記生成されたハッシュ関数値を使用する、
    相関ファイルにアクセスすることと
    を含む、非キャッシュ記録媒体上にデータを格納するための方法。
  2. (iii)において、前記アルゴリズムが前記MD5メッセージダイジェストアルゴリズムである、請求項1に記載の方法。
  3. 矛盾解決モジュールを適用することをさらに含み、前記矛盾解決モジュールが、Xバイトのフラグメント化ユニットに対して、前記相関ファイル内の格納されたハッシュ関数値と同じ、ハッシュ関数値が生成されるが、Xバイトの前記フラグメント化ユニットが、前記格納されたハッシュ関数値と関連付けられた前記Xバイトと異なると判断する場合、異なるZビットを、前記格納されたハッシュ関数値および前記生成されたハッシュ関数値と関連付ける、請求項1に記載の方法。
  4. 前記相関ファイル内で、矛盾が存在しない全てのハッシュ関数値に対して、Zビットが関連付けられており、前記Zビットが8〜16個のゼロである、請求項3に記載の方法。
  5. N=4096およびX=512である、請求項4に記載の方法。
  6. Y=128または256である、請求項5に記載の方法。
  7. 複数のハッシュ関数値を前記非キャッシュ記録媒体上に格納することをさらに含む、請求項1に記載の方法。
  8. 格納のための各ハッシュ関数値に対してビットマーカーを生成するために、格納のための各ハッシュ関数値をビットマーカーテーブルの使用を通して符号化することと、各ビットマーカーを前記非キャッシュ記録媒体上に格納することをさらに含む、請求項1に記載の方法。
  9. 格納のための各ハッシュ関数値を頻度変換器の使用を通して符号化することをさらに含み、格納のための各ハッシュ関数値に対して、変換されたビット列が生成され、少なくとも2つの異なるYビット列に対して、出力される前記変換されたビット列が、異なる長さである、請求項1に記載の方法。
  10. 異なるサイズの複数の変換されたビット列すべてに対して、Aビット長の第1の変換されたビット列および、Bビット長の第2の変換されたビット列があり、A<Bで、かつ前記第1の変換されたビット列の前記Aビットの前記識別が、前記第2の変換されたビット列の前記Aビットの前記識別と同じでない、請求項9に記載の方法。
  11. 格納のための各ハッシュ関数値を頻度変換器の使用を通して符号化することをさらに含み、格納のための各ハッシュ関数値に対して、変換されたビット列が生成され、少なくとも2つの異なるYビット列に対して、出力される前記変換されたビット列が、異なる長さである、請求項3に記載の方法。
  12. 前記I/Oストリームがホストから受信されて、前記方法が、前記I/Oストリームの受信を前記ホストに対して確認することをさらに含む、請求項1に記載の方法。
  13. 前記ホストが、前記I/Oを第1の記憶アドレスに格納されているとして記録し、かつ前記変換されたビット列が、第2の記憶アドレスにおいて前記非キャッシュ記録媒体内に格納されており、前記第1の記憶アドレスが前記第2の記憶アドレスと同じでない、請求項12に記載の方法。
  14. 前記第1の記憶アドレスが、第1のファイルサイズのファイルに対応し、かつ前記第2の記憶アドレスが、第2のファイルサイズのファイルに対応し、前記第1のファイルサイズが前記第2のファイルサイズの少なくとも4倍の大きさである、請求項13に記載の方法。
  15. 前記第2の記憶アドレスをメディエータ上に格納することをさらに含み、前記メディエータが持続性記憶媒体である、請求項13に記載の方法。
  16. 前記第2の記憶アドレスがビットフィールド内に格納される、請求項15に記載の方法。
  17. 前記メディエータが、
    i.トラックの第1のセットであって、ファイルシステム情報、ブート可能性情報、およびパーティション情報を含む、トラックの第1のセットと、
    ii.トラックの第2のセットであって、前記トラックの第1のセットのコピーを含む、トラックの第2のセットと、
    iii.トラックの第3のセットであって、ファイルシステム情報、ブート可能性情報、およびパーティション情報以外のメタデータを含む、トラックの第3のセットと、
    iv.トラックの第4のセットであって、前記ビットフィールドを含む、トラックの第4のセットと
    を含む、請求項16に記載の方法。
  18. 非キャッシュ記録媒体上にデータを格納するための方法であって、
    i.NバイトのI/Oストリームを受信することと、
    ii.前記Nバイトを、Xバイトのフラグメント化ユニットにフラグメント化することと、
    iii.暗号化ハッシュ関数値をXバイトの各フラグメント化ユニットと関連付けることであって、前記関連付けることが、相関ファイルにアクセスすることを含み、前記相関ファイルが、Yビットの格納されたハッシュ関数値を、複数の格納されたXバイトのシーケンスの各々と関連付けて、
    (a)Xバイトのフラグメント化ユニットの前記シーケンスが前記相関ファイル内にある場合は、非キャッシュ記録媒体上に格納するために、Yビットの前記納されたハッシュ関数値を使用し、
    (b)Xバイトのフラグメント化ユニットの前記シーケンスが前記相関ファイル内にない場合は、Yビットの新しいハッシュ関数値をXバイトの前記フラグメント化ユニットとともに前記相関ファイル内に格納し、前記非キャッシュ記録媒体上に格納するために、Yビットの前記新しいハッシュ関数値を使用する、
    暗号化ハッシュ関数値をXバイトの各フラグメント化ユニットと関連付けることと
    を含む、非キャッシュ記録媒体上にデータを格納するための方法。
  19. 非キャッシュ記録媒体上にデータを格納するための方法であって、
    i.NバイトのI/Oストリームを受信することと、
    ii.暗号化ハッシュ関数値アルゴリズムをNバイトの各ユニットに適用して、Nバイトの各ユニットに対して生成されたハッシュ関数値を形成することと、
    iii.相関ファイルにアクセスすることであって、前記相関ファイルが、Yビットの格納されたハッシュ関数値を、複数の格納されたNバイトのシーケンスの各々と関連付けて、
    (a)Nバイトの前記ユニットに対して前記生成されたハッシュ関数値が前記相関ファイル内にある場合は、非キャッシュ記録媒体上に格納するために、Yビットの前記格納されたハッシュ関数値を使用し、
    (b)Nバイトの前記ユニットに対して前記生成されたハッシュ関数値が前記相関ファイル内にない場合は、Yビットの前記生成されたハッシュ関数値をNバイトの前記ユニットとともに前記相関ファイル内に格納し、前記非キャッシュ記録媒体上に格納するために、前記生成されたハッシュ関数値を使用する、
    相関ファイルにアクセスすることと
    を含む、非キャッシュ記録媒体上にデータを格納するための方法。
  20. 記録媒体上にデータを格納するための方法であって、
    i.複数のデジタル2値信号を受信することであって、前記デジタル2値信号が複数のチャンクレットに編成されており、各チャンクレットがNビット長で、Nが1より大きい整数であり、かつ前記チャンクレットが順序を有する、複数のデジタル2値信号を受信することと、
    ii.各チャンクレットを均一なサイズのサブユニットに分割して、X個のマーカーのセットから、1つのマーカーを各サブユニットに割り当てて、複数のマーカーのセットを形成することであって、Xがサブユニット内のビットの異なる組合せの数以下であり、同一のサブユニットが同じマーカーを割り当てられて、少なくとも1つのマーカーがサブユニットの前記サイズよりも小さい、複数のマーカーのセットを形成することと、
    iii.前記複数のマーカーの前記セットを、前記チャンクレットの前記順序に対応する順序で、持続性記録媒体上に格納することと
    を含む、記録媒体上にデータを格納するための方法。
  21. 前記割り当てることが、ビットマーカーテーブルにアクセスすることを含み、前記ビットマーカーテーブル内で、各一意のマーカーが一意のビット列に対応するとして識別される、請求項20に記載の方法。
  22. 各サブユニットが第1の端部および第2の端部を有し、前記マーカーを割り当てる前に、前記方法が、各チャンクレットの各サブユニット内の1つ以上のビットを分析して、前記第2の端部における前記ビットが値0を有するかを判断することと、前記第2の端部における前記ビットが値0を有する場合には、前記第2の端部における前記ビットおよび前記値0を有して、前記第2の端部における前記ビットとともに連続的なビット列を形成する全てのビットを除去し、それにより、前記第2の端部に0を有する任意のサブユニットに対する修正されたサブユニットを形成することをさらに含む、請求項21に記載の方法。
  23. コンピュータアルゴリズムが、
    (a)各サブユニットを再検討して、前記第2の端部に0があるかどうかを判断し、そうである場合は0を除去して、前記サブユニットの前記第2の端部に隣接していた位置に、修正された第2の端部をもつ、修正されたサブユニットを形成し、
    (b)各修正されたサブユニットを再検討して、前記修正された第2の端部に0があるかどうかを判断し、そうである場合は前記0を除去して、さらに修正された第2の端部を形成し、
    (c)各修正されたサブユニットに対して、その第2の端部に1をもつ、短縮されたサブユニットが生成されるまで(b)を繰り返す、
    請求項22に記載の方法。
  24. 各サブユニットが第1の端部および第2の端部を有し、前記マーカーを割り当てる前に、前記方法が、各チャンクレットの各サブユニット内の1つ以上のビットを分析して、前記第2の端部における前記ビットが値1を有するかを判断することと、前記第2の端部における前記ビットが値1を有する場合には、前記第2の端部における前記ビットおよび前記値1を有して、前記第2の端部における前記ビットとともに連続的なビット列を形成する全てのビットを除去し、それにより、前記第2の端部に1を有する任意のサブユニットに対する修正されたサブユニットを形成することをさらに含む、請求項21に記載の方法。
  25. コンピュータアルゴリズムが、
    (a)各サブユニットを再検討して、前記第2の端部に1があるかどうかを判断し、そうである場合は1を除去して、前記サブユニットの前記第2の端部に隣接していた位置に、修正された第2の端部をもつ、修正されたサブユニットを形成し、
    (b)各修正されたサブユニットを再検討して、前記修正された第2の端部に1があるかどうかを判断し、そうである場合は前記1を除去して、さらに修正された第2の端部を形成し、
    (c)各修正されたサブユニットに対して、その第2の端部に0をもつ、短縮されたサブユニットが生成されるまで(b)を繰り返す、
    請求項24に記載の方法。
  26. 前記マーカーが頻度変換器内に格納され、前記マーカーが複数の異なるサイズで、より小さいサイズのマーカーがより高い頻度のサブユニットと相互に関連付けられている、請求項21に記載の方法。
  27. 複数の異なるマーカーが異なる数のビットから形成される、請求項20に記載の方法。
  28. 記録媒体からデータを取得するための方法であって、
    i.記録媒体にアクセスすることであって、前記記録媒体が複数のマーカーをある順序で格納する、記録媒体にアクセスすることと、
    ii.前記複数のマーカーをチャンクレットのセットに翻訳することであって、各チャンクレットがNビット長で、Nが1より大きい整数であり、前記チャンクレットが、前記複数のマーカーの前記順序に対応する順序を有し、前記翻訳がビットマーカーテーブルにアクセスすることにより達成され、前記ビットマーカーテーブル内で各一意のマーカーが一意のビット列に対応するとして識別される、前記複数のマーカーをチャンクレットのセットに翻訳することと、
    iii.チャンクレットの前記セットを含む出力を生成することと
    を含む、記録媒体からデータを取得するための方法。
  29. 前記記録媒体上に格納された際の前記複数のマーカーが、X〜Yのサイズを有し、Y>Xであり、少なくとも1つのマーカーがサイズXを有し、かつ少なくとも1つのマーカーがサイズYを有する、請求項28に記載の方法。
  30. 前記翻訳することが、長さZより小さい前記マーカーの全てを、0を前記マーカーの第1の端部に追加することにより、長さZのマーカーにレンダリングすることであって、ZがY以上であることと、長さZの前記マーカーをチャンクレットに翻訳することであって、前記チャンクレットが長さZより大きいこととを含む、請求項29に記載の方法。
  31. 長さZの前記マーカーをチャンクレットに前記翻訳することが、長さZの前記マーカーをサブユニットに翻訳することと、前記サブユニットをチャンクレットに結合することとを含む、請求項30に記載の方法。
  32. 請求項28に記載の方法を含む、文書を記憶装置から取得するための方法であって、前記出力をファイルタイプと関連付けることと、前記出力を、前記チャンクレットを前記ファイルタイプの文書に変換することが可能なオペレーティングシステムに伝送することとをさらに含む、文書を記憶装置から取得するための方法。
  33. データを記録媒体上に格納するための方法であって、
    i.複数のデジタル2値信号を受信することであって、前記デジタル2値信号がチャンクレットに編成されており、各チャンクレットがNビット長で、各チャンクレットが第1の端部および第2の端部を有し、Nが1より大きい整数であり、前記チャンクレットが順序を有する、複数のデジタル2値信号を受信することと、
    ii.各チャンクレットを複数のサブユニットに分割することであって、各サブユニットがAビット長である、各チャンクレットを複数のサブユニットに分割することと、
    iii.各サブユニットを分析して、前記第2の端部における前記ビットが値0を有するかを判断し、前記第2の端部における前記ビットが値0を有する場合に、前記第2の端部における前記ビットおよび前記値0を有して、前記第2の端部における前記ビットとともに連続的なビット列を形成する全てのビットを除去し、それにより前記第2の端部に0を有する任意のチャンクレットに対して修正されたチャンクレットを形成することと、
    iv.持続性記録媒体上に、前記順序で、各修正されたサブユニット、およびAビット長であって、その第2の端部に1を有する、各サブユニットを格納することと
    を含む、データを記録媒体上に格納するための方法。
  34. データを記録媒体上に格納するための方法であって、
    i.複数のデジタル2値信号を受信することであって、前記デジタル2値信号がチャンクレットに編成されており、各チャンクレットがNビット長で、各チャンクレットが第1の端部および第2の端部を有し、Nが1より大きい整数であり、前記チャンクレットが順序を有する、複数のデジタル2値信号を受信することと、
    ii.各チャンクレットを複数のサブユニットに分割することであって、各サブユニットがAビット長である、各チャンクレットを複数のサブユニットに分割することと、
    iii.各サブユニットを分析して、前記第1の端部における前記ビットが値0を有するかを判断し、前記第1の端部における前記ビットが値0を有する場合に、前記第1の端部における前記ビットおよび前記値0を有して、前記第1の端部における前記ビットとともに連続的なビット列を形成する全てのビットを除去し、それにより前記第1の端部に0を有する任意のサブユニットに対して第1の修正されたサブユニットを形成することと、
    iv.各サブユニットを分析して、前記第2の端部における前記ビットが値0を有するかを判断し、前記第2の端部における前記ビットが値0を有する場合に、前記第2の端部における前記ビット、および前記値0を有して、前記第2の端部における前記ビットとともに連続的なビット列を形成する全てのビットを除去し、それにより前記第2の端部に0を有する任意のサブユニットに対して第2の修正されたサブユニットを形成することと、
    v.各サブユニットに対して、
    (a)前記第1の修正されたサブユニットおよび前記第2の修正されたサブユニットの前記サイズが同じである場合、前記第1の修正されたサブユニットまたは前記第2の修正されたサブユニットを格納することと、
    (b)前記第1の修正されたサブユニットが前記第2の修正されたサブユニットよりも小さい場合、前記第1の修正されたサブユニットを格納することと、
    (c)前記第2の修正されたサブユニットが前記第1の修正されたサブユニットよりも小さい場合、前記第2の修正されたサブユニットを格納することと、
    (d)修正されたサブユニットがない場合、前記サブユニットを格納することと、
    (e)第1の修正されたサブユニットはないが、第2の修正されたサブユニットがある場合には、前記第2の修正されたサブユニットを格納することと、
    (f)第2の修正されたサブユニットはないが、第1の修正されたサブユニットがある場合には、前記第1の修正されたサブユニットを格納することと
    を含み、
    格納される各修正されたサブユニットが、1つ以上のビットが前記第1の端部または前記第2の端部から除去されたかを示す情報とともに格納される、
    記録媒体上にデータを格納するための方法。
  35. 記録媒体からデータを取得するための方法であって、
    i.記録媒体にアクセスすることであって、前記記録媒体が複数のデータユニットを複数の位置に格納し、各データユニットが複数のビットを含み、前記データユニットの最大サイズがNビットであり、少なくとも1つのデータユニットがNビットよりも少ないビットを含み、前記データユニットが順序を有する、記録媒体にアクセスすることと、
    ii.前記データユニットを取得し、1つ以上のビットを、Nビット長よりも少ない任意のデータユニットの端部に追加して、前記データユニットに対応するチャンクレットのセットを生成することであって、各チャンクレットが同じビット数を含む、チャンクレットのセットを生成することと、
    iii.チャンクレットの前記セットを含む出力を、前記データユニットの前記順序に対応する順序で生成することと
    を含む、記録媒体からデータを取得するための方法。
  36. (ii)において、値0のビットが追加される、請求項35に記載の方法。
  37. 請求項36に記載の方法を含む、文書を記憶装置から取得するための方法であって、前記出力をファイルタイプと関連付けることと、前記出力を、前記チャンクレットを前記ファイルタイプの文書に変換することが可能なオペレーティングシステムに伝送することとをさらに含む、文書を記憶装置から取得するための方法。
  38. 電子データを格納するための方法であって、前記方法が、
    i.パラメータのセットを受信することであって、前記パラメータが、ファイルシステム情報、ブート可能性情報、およびパーティション情報のうちの1つ以上を含む、パラメータのセットを受信することと、
    ii.メタデータを受信することと、
    iii.1つ以上のファイルを受信することであって、各ファイルがファイル名を有する、1つ以上のファイルを受信することと、
    iv.前記パラメータおよびメタデータをメディエータ上に格納することと、
    v.前記ファイルの各々をある位置において非キャッシュ媒体上に格納することと、
    vi.前記メディエータ上に、各ファイル名の、前記非キャッシュ媒体上の位置との相関関係を格納することと
    を含む、電子データを格納するための方法。
  39. 前記ファイルを前記非キャッシュ媒体上に格納する前に、前記ファイルを符号化することをさらに含む、請求項38に記載の方法。
  40. 前記符号化が、変換されたファイルを作成するためにビットマーカーテーブルを使用することを含む、請求項39に記載の方法。
  41. 前記符号化が、変換されたファイルを作成するために頻度変換器を使用することを含む、請求項39に記載の方法。
  42. 前記変換されたファイルが、ファイルシステム情報、ブート可能性情報、およびパーティション情報のいずれも含まない、請求項40に記載の方法。
  43. 前記パラメータが、複数の予約トラック内に格納されている、請求項38に記載の方法。
  44. 前記複数の予約トラックが、予約トラックの第1のセットであり、前記方法が、前記パラメータを予約トラックの第2のセットにコピーすることをさらに含む、請求項38に記載の方法。
  45. 予約トラックの前記第1のセット内のエラーを検査するために、予約トラックの前記第2のセットを使用することをさらに含む、請求項44に記載の方法。
  46. 前記メタデータが、シンプロビジョニングのための命令に対応する、請求項45に記載の方法。
  47. 前記ファイルが、前記ファイルを仮想アドレスに格納されているとして記録するホストから受信されて、前記仮想アドレスが、前記ファイルの前記位置と同じではない、請求項38に記載の方法。
  48. データをバックアップするための方法であって、前記方法が、請求項38に記載の方法を含み、前記メディエータが第1のメディエータで、位置が第1の位置であり、前記方法が第2のメディエータを生成することをさらに含み、前記第2のメディエータが、時間T1における前記第1のメディエータのコピーであり、T1の後である、時間T2において:
    i.第1の位置に置かれている修正されたファイルを保存するための命令を受信することと、
    ii.新しいファイルを第2の位置に格納することであって、前記新しいファイルが前記修正されたファイルに対応する、新しいファイルを第2の位置に格納することと、
    iii.前記ファイル名を前記第2の位置と相互に関連付けるように前記第1のメディエータを更新することであって、前記第2のメディエータ上で、前記ファイル名が前記第1の位置と相互に関連付けられている、前記第1のメディエータを更新することと
    を行う、
    データをバックアップするための方法。
  49. データをバックアップするための方法であって、前記方法が、
    i.第1のメディエータ上で、複数のファイル名を複数のデータファイルの位置と相互に関連付けることであって、前記データファイルの前記位置が第1の非キャッシュ媒体上の位置に対応し、前記第1のメディエータが、特定のファイル名を識別するユーザーが、前記特定のファイル名に対応するデータファイルを取得するのを可能にするように構成されている、複数のファイル名を複数のデータファイルの位置と相互に関連付けることと、
    ii.前記複数のデータファイルを第2の非キャッシュ媒体にコピーすることと、
    iii.第2のメディエータを生成することであって、前記第2のメディエータが時間T1における前記第1のメディエータのコピーであり、前記第2のメディエータ内で、前記第2の非キャッシュ媒体上の複数のデータファイルの前記位置が前記ファイル名と相互に関連付けられている、第2のメディエータを生成することと、
    iv.データファイルに対する修正を保存するための命令を受信することと、
    v.T1の後である、時間T2において、前記第1の非キャッシュ媒体内で、前記データファイルに対する前記修正を保存することと
    を含む、
    データをバックアップするための方法。
  50. i.非キャッシュデータ記憶媒体と、
    ii.メディエータであって、前記メディエータが非キャッシュデータ記憶媒体からリモートに保存されていて、前記メディエータが:
    (a)トラックの第1のセットと、
    (b)トラックの第2のセットと、
    (c)トラックの第3のセットと、
    (d)トラックの第4のセットと、
    を含む、メディエータと、
    iii.マネージャであって、前記マネージャが:
    (a)ファイルシステム情報、ブート可能性情報、およびパーティション情報のうちの1つ以上を含むデータをトラックの前記第1のセット内に格納することと、
    (b)メタデータをトラックの前記第3のセット内に格納することと、
    (c)1つ以上のファイルを前記非キャッシュ媒体上に格納することであって、前記1つ以上のファイルが前記非キャッシュ媒体上に、ファイルシステム情報、ブート可能性情報、およびパーティション情報のいずれもなしで保存される、1つ以上のファイルを非キャッシュ媒体上に格納することと、
    (d)トラックの前記第4のセット内に、非キャッシュ媒体内の各ファイルの前記位置を格納することと、
    (e)前記非キャッシュ媒体内の各ファイルの前記位置の、ファイルに対するホスト名との相関関係を格納することと
    を行うように構成されている、マネージャと
    を含む、データ格納および取得システム。
  51. 前記マネージャが、トラックの前記第1のセット内の前記情報を、トラックの前記第2のセットにコピーするようにさらに構成されている、請求項50に記載のシステム。
  52. 前記非キャッシュ媒体内の各ファイルの前記位置が、前記ファイルが置かれていると前記ホストが信じる前記位置と同じでない、請求項50に記載のシステム。
  53. 前記1つ以上のファイルが、変換されたファイルを形成するために変換され、前記変換されたファイルが、それらが変換された元の前記ファイルよりも少ない空間を占める、請求項50に記載のシステム。
  54. 前記メディエータが、第1のメディエータであり、前記システムが、第2のメディエータおよび前記第1のメディエータ内の前記情報を前記第2のメディエータにコピーするためのモジュールをさらに含む、請求項50に記載のシステム。
  55. 前記第1のメディエータおよび前記第2のメディエータが、前記同じファイル名を、前記非キャッシュデータ記憶媒体内の異なる位置と相互に関連付ける、請求項54に記載のシステム。
  56. 前記非キャッシュデータ記憶媒体が第1の非キャッシュデータ記憶媒体であり、前記システムが、第2の非キャッシュデータ記憶媒体をさらに含み、前記第1のメディエータがファイル名を前記第1の非キャッシュデータ記憶媒体内の位置と相互に関連付け、前記第2のメディエータが前記ファイル名を前記第2の非キャッシュデータ記憶媒体内の位置と関連付ける、請求項54に記載のシステム。
JP2015556178A 2013-02-01 2014-01-31 データを格納および取得するための方法およびシステム Expired - Fee Related JP6352308B2 (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US13/756,921 US20140223118A1 (en) 2013-02-01 2013-02-01 Bit Markers and Frequency Converters
US13/756,921 2013-02-01
US13/797,093 2013-03-12
US13/797,093 US10133636B2 (en) 2013-03-12 2013-03-12 Data storage and retrieval mediation system and methods for using same
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
PCT/US2014/014209 WO2014121102A2 (en) 2013-02-01 2014-01-31 Methods and systems for storing and retrieving data

Related Child Applications (1)

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

Publications (3)

Publication Number Publication Date
JP2016509309A true JP2016509309A (ja) 2016-03-24
JP2016509309A5 JP2016509309A5 (ja) 2017-03-02
JP6352308B2 JP6352308B2 (ja) 2018-07-04

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 (1)

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

Family Applications After (2)

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

Country Status (12)

Country Link
US (2) US9467294B2 (ja)
EP (2) EP2951701A4 (ja)
JP (4) JP6345698B2 (ja)
KR (2) KR20150119880A (ja)
CN (3) CN110083552A (ja)
AU (2) AU2014212163A1 (ja)
BR (1) BR112015018448A2 (ja)
CA (2) CA2900034A1 (ja)
HK (2) HK1219155A1 (ja)
MX (2) MX2015009954A (ja)
PH (2) PH12015501699A1 (ja)
WO (2) WO2014121102A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180099422A (ko) * 2017-02-27 2018-09-05 충남대학교산학협력단 프로그램 분류 방법 및 장치

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10133636B2 (en) 2013-03-12 2018-11-20 Formulus Black Corporation Data storage and retrieval mediation system and methods for using same
US9628108B2 (en) 2013-02-01 2017-04-18 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
US9304703B1 (en) * 2015-04-15 2016-04-05 Symbolic Io Corporation Method and apparatus for dense hyper IO digital retention
US9519805B2 (en) * 2013-08-01 2016-12-13 Cellco Partnership Digest obfuscation for data cryptography
JP6312344B2 (ja) * 2014-02-18 2018-04-18 日本電信電話株式会社 セキュリティ装置、その方法、およびプログラム
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
US10873781B2 (en) 2017-06-13 2020-12-22 Comcast Cable Communications, Llc Video fragment file processing
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
US11366790B2 (en) 2017-10-30 2022-06-21 AtomBeam Technologies Inc. System and method for random-access manipulation of compacted data files
US10572186B2 (en) 2017-12-18 2020-02-25 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 浙江正泰仪器仪表有限责任公司 一种数据搜索方法、装置、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090055593A1 (en) * 2007-08-21 2009-02-26 Ai Satoyama Storage system comprising function for changing data storage mode using logical volume pair
JP2012027587A (ja) * 2010-07-21 2012-02-09 Tokyo Denki Univ データ分散保管装置及び方法及びプログラム及び記録媒体
WO2012117658A1 (ja) * 2011-02-28 2012-09-07 日本電気株式会社 ストレージシステム

Family Cites Families (74)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL225002A (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
WO2001016756A1 (fr) * 1999-08-31 2001-03-08 Fujitsu Limited Systeme de fichier et procede d'acces a un fichier
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
JP5432450B2 (ja) 2004-07-29 2014-03-05 オセ−テクノロジーズ ビーブイ エントロピー符号化を利用したカラー画像データの可逆圧縮
US7457813B2 (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
US7436330B2 (en) * 2006-03-24 2008-10-14 The 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 データ検索装置、デバイス管理装置、データ検索方法、およびコンピュータプログラム
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 株式会社東芝 ホスト装置と連携して重複データを排除するストレージ装置、同ストレージ装置を備えたストレージシステム、及び同システムにおける重複排除方法
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
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
US10133636B2 (en) 2013-03-12 2018-11-20 Formulus Black Corporation Data storage and retrieval mediation system and methods for using same
US20140223118A1 (en) 2013-02-01 2014-08-07 Brian Ignomirello Bit Markers and Frequency Converters

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090055593A1 (en) * 2007-08-21 2009-02-26 Ai Satoyama Storage system comprising function for changing data storage mode using logical volume pair
JP2012027587A (ja) * 2010-07-21 2012-02-09 Tokyo Denki Univ データ分散保管装置及び方法及びプログラム及び記録媒体
WO2012117658A1 (ja) * 2011-02-28 2012-09-07 日本電気株式会社 ストレージシステム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180099422A (ko) * 2017-02-27 2018-09-05 충남대학교산학협력단 프로그램 분류 방법 및 장치
KR101963822B1 (ko) * 2017-02-27 2019-04-01 충남대학교산학협력단 프로그램 분류 방법 및 장치

Also Published As

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

Similar Documents

Publication Publication Date Title
JP6352308B2 (ja) データを格納および取得するための方法およびシステム
US20190146881A1 (en) Data storage and retrieval mediation system and methods for using same
US7716445B2 (en) Method and system for storing a sparse file using fill counts
US7584229B2 (en) Method and system for priority-based allocation in a storage pool
US10387066B1 (en) Providing data deduplication in a data storage system with parallelized computation of crypto-digests for blocks of host I/O data
US7415653B1 (en) Method and apparatus for vectored block-level checksum for file system data integrity
US20140223118A1 (en) Bit Markers and Frequency Converters
US11226774B2 (en) Deep data-compression
US7480684B2 (en) Method and system for object allocation using fill counts
US7526622B1 (en) Method and system for detecting and correcting data errors using checksums and replication
US7930495B2 (en) Method and system for dirty time log directed resilvering
US7437528B1 (en) Gang blocks
US7281188B1 (en) Method and system for detecting and correcting data errors using data permutations
US7925827B2 (en) Method and system for dirty time logging
US7533225B1 (en) Method and apparatus for enabling adaptive endianness
US7603568B1 (en) Method and apparatus for self-validating checksums in a file system

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170119

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170119

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180420

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180606

R150 Certificate of patent or registration of utility model

Ref document number: 6352308

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees