CN105190573B - 存储数据的减少冗余 - Google Patents
存储数据的减少冗余 Download PDFInfo
- Publication number
- CN105190573B CN105190573B CN201480016699.9A CN201480016699A CN105190573B CN 105190573 B CN105190573 B CN 105190573B CN 201480016699 A CN201480016699 A CN 201480016699A CN 105190573 B CN105190573 B CN 105190573B
- Authority
- CN
- China
- Prior art keywords
- user
- hashed value
- buffer cell
- data
- storage
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3088—Compression; 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
- G06F11/1453—Management of the data involved in backup or backup restore using de-duplication of the data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0661—Format or protocol conversion arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3091—Data deduplication
- H03M7/3093—Data deduplication using fixed length segments
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3236—Cryptographic 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/3239—Cryptographic 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/113—Details of archiving
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/34—Encoding or coding, e.g. Huffman coding or error correction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods 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/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Power Engineering (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Communication Control (AREA)
Abstract
通过使用本发明的技术,相关人员能够通过使用最小化重复数据存储需求的新颖且非显而易知的方法、系统和计算机程序产品,而有效地存储数据。可选地,用户数据可以进行预处理,从而在进入协议之前编码所述数据,以便减少相关人员存储冗余数据的次数。
Description
发明领域
本发明涉及数据的存储。
发明背景
二十一世纪已经见证了人们和公司生成和存储的数字化信息的量成指数级增长。这类信息由通常存储在磁性表面(如磁盘)上的电子数据组成。这些磁盘含有尺寸为亚微米并且能够存储数条单独二进制数据的较小区域。
在任何给定实体所存储的巨量数据内,经常存在信息的明显重复。举例而言,相同的公司信头可以出现在数千个文档中,并且对应于这个数据的每个文件将含有针对信头进行编码的比特。历史上,许多实体已经接受这类重复存在于它们的文件中,以及相同信息的冗余存储的无效是开展业务的成本。
因为存储成本不断增加以及存储的可用性不断降低,所以众多实体已经开始探究某些方式来供存储比文件内或文件之间所有重复信息更少的信息。理论上,力图避免重复信息的存储或最小化重复信息存储的次数的实体,可以力图识别其数据集内的独特比特或字节样式,并且以最小的次数来存储这些独特比特或字节样式。为了执行这些方法,在准备新的文件用于存储时,这些文件内的信息将会与已存储的参考信息集进行比较,并且,只有正在考虑的比特或字节样式是独特的,其才会被存储。如果所述比特或字节样式不是独特的,那么便会用参考数据来取代冗余数据,所述参考数据在大小上小于指向所存储数据的数据,所述数据是存储数据的重复。
减少重复信息存储的次数的目标面临很多挑战,包括但不限于:(1)保持检查冗余的足够速度;(2)保持数据重建而便于检索的足够速度;(3)确保在检查冗余或存储对应于最初文件的信息的过程中数据不会丢失;(4)针对存储信息未经授权的存取进行保护;以及(5)提供可以与获取数据快照、克隆数据和恢复数据中的一个或多个操作(即便不是所有这些操作)结合使用的有效技术和方法。本发明的各种实施方案的意图在于克服这些挑战中的一个或多个挑战。
发明概述
本发明提供方法、系统和计算机程序产品,用以改善数据存储和检索的效率,而同时最小化冗余数据多次不必要存储的程度。通过使用本发明的各种实施方案,相关人员可以有效地存储和存取数据。借助本发明的这些各种实施方案,相关人员可以变换数据和/或更改变换后或转换后数据所存储的物理装置。这可以借助使用计算机的自动化过程来完成,所述计算机包括或可操作性地耦接至计算机程序产品,在运行时,所述计算机程序产品执行本发明方法或过程中的一个或多个方法或过程。这些方法或过程可以(例如)体现在计算机算法或脚本中或者包括所述计算机算法或脚本,并且可选地由系统借助一个或多个模块来执行。
根据第一实施方案,本发明针对一种用于将数据存储在非高速缓存器记录介质上的方法,所述方法包括:(i)接收指令来将数据写入到非高速缓存器记录介质,其中所述指令包括用户感知逻辑区块地址(“LBA”)和用户供应缓冲(user supplied buffer),其中所述用户供应缓冲由(例如)512个字节至2MB字节或512个字节至64K字节组成;(ii)将所述用户供应缓冲划分为用户供应缓冲单元,并将加密散列函数应用到所述用户供应缓冲单元中的每个单元,从而生成一个生成散列值;(iii)激活包括算法的计算机程序产品,所述算法致使所述计算机程序产品存取散列值表并确定所述生成散列值是否与所述散列值表内的存储散列值重复,其中所述散列值表使多个存储散列值中的每个存储散列值与不同存储缓冲单元以及真实逻辑区块地址相互关联;以及(A)如果所述生成散列值并不处于所述散列值表内,那么便将所述用户供应缓冲单元写入到非高速缓存器记录介质中的区块,更新所述散列值表以便包括所述用户供应缓冲单元、所述生成散列值以及所述用户供应缓冲单元所存储的真实逻辑区块地址的相关性,并在中介器上写入与所述用户供应缓冲单元已经写入的位置相对应的所述真实逻辑区块地址以及用于所述用户供应缓冲的所述用户感知逻辑区块地址(或多个用户感知逻辑区块地址),并且,(B)如果所述生成散列值是与所述散列值表内的存储散列值重复,那么便查询是否存在冲突,其中冲突定义为同一散列值与存储缓冲单元以及当前用户供应缓冲单元相关联且所述两个缓冲单元具有不同内容的情形,而且,(a)如果存在冲突,那么便将所述用户供应缓冲单元写入到所述非高速缓存器记录介质中的区块,渲染不活动的或删除所述散列值表内所述存储缓冲单元与所述存储散列值之间的关联,更新所述散列值表以便包括所述用户供应缓冲单元、所述生成散列值和所述用户供应缓冲单元所存储的真实逻辑区块地址的相关性,并在所述中介器上写入与所述用户供应缓冲单元已经写入的位置相对应的所述真实逻辑区块地址以及所述用户感知逻辑区块地址;以及(b)如果不存在冲突,那么便在所述中介器上写入存储在所述非高速缓存器记录介质上的、与所述用户生成缓冲单元相同的缓冲单元的真实逻辑区块地址,并使所述真实逻辑区块地址与用于所述用户供应缓冲的所述用户感知逻辑区块地址相互关联,而并不在所述非高速缓存器记录介质上写入所述用户供应缓冲单元。
在步骤(A)中,当写入所述用户供应缓冲单元时,本领域普通技术人员将会了解,所述方法要求写入已经确定为并未与所述表中的散列值相关联的用户供应缓冲单元。
通常,用户会供应处于流中或者处在比所述散列值算法被配置成接受为其输入的用户供应缓冲单元更大的单元中的数据(所述用户供应缓冲)。在这些情况下,所述用户供应缓冲单元可以通过将主机所发送的原始数据分割(也称为分裂)成更小单元来形成,这些更小单元可以视为所述用户供应缓冲单元,而无论所述主机是否将它们分割或者本发明的系统或方法是否进行这样的分割。因此,这些分割的用户供应缓冲单元可以充当所述加密散列函数的输入。举一个非限制性示例,所述用户供应数据可以是16K至2MB,而每个分割的用户供应缓冲单元为512个字节至4K,例如,512个字节或4K。因此,在一些实施方案中,所述分割的用户供应缓冲单元不大于分割之前的所述用户供应缓冲的大小的1/4或不大于1/16或不大于1/64。如果在进入所述散列值算法之前使用所述分割步骤,那么所述散列值表便会含有所述用户供应缓冲单元和散列值的相关性,向所述存储装置的写入便是分割的用户供应缓冲单元而不是更大的数据缓冲单元,并且所述中介器会使所述用户供应缓冲单元的所述用户感知地址(或多个用户感知地址)与所述多个分割的用户供应缓冲单元相互关联。
本发明方法的各种步骤可以存储在一个或多个模块中,例如,缓冲和用户感知逻辑区块地址接收模块、分割模块、散列值搜索模块、散列值重复分析模块、冲突模块以及写入模块。类似地,可以存在文件读取和重建模块。这些模块可以按照可执行代码的形式存储在非暂时性介质中。
根据第二实施方案,本发明提供一种用于存储数据的系统,其中,所述系统包括:(a)永久性存储器,其中所述永久性存储器存储散列值表,所述散列值表被配置来使存储缓冲单元与存储散列值以及真实逻辑区块地址相关联;(b)中央处理单元,所述中央处理单元包括或可操作性地耦接至存储在非暂时性介质中的计算机程序产品,其中所述计算机程序产品包括可执行代码,所述可执行代码在运行时自动进行下述操作:(i)将散列值算法应用于一个或多个用户供应缓冲单元中的每个单元,以便生成一个生成散列值;和(ii)确定所述生成散列值是否为所述散列值表内的、与存储缓冲单元相关联的存储散列值的重复,并且如果是,便确定是否存在冲突,其中冲突定义为散列值是与两个不同缓冲单元相关联,而且如果存在冲突,便更新所述散列值表以便致使所述表内的所述散列值与所述用户供应缓冲单元相关联,而不与所述存储缓冲单元相关联;(c)非高速缓存器记录介质,其中所述非高速缓存器记录介质被配置用于区块级存储;以及(d)中介器,其中所述中介器存储真实逻辑区块地址与用户感知逻辑区块地址的相关性。
根据第三实施方案,本发明提供一种计算机程序产品,所述计算机程序产品包括非暂时性计算机可用介质,所述非暂时性计算机可用介质包括计算机可读程序,其中所述计算机可读程序在计算机上运行时,会致使所述计算机来实施用于消重和管理文件系统内数据区块的方法,所述方法包括本发明方法中的任何方法。这些方法可以组织在一个或多个模块中。
借助本发明的各种实施方案,相关人员可以提高数据存储和检索的效率,因为在大多数情形中,与之前写入的数据重复的较大缓冲单元将不需要重新写入到非高速缓存器记录介质(NCM)。相反,中介器上的、就大小而言小于与容纳所指向数据的存储单元物理分离的结构且处于所述结构内的指针,会将所述计算机定向到这个数据的之前存储复本。可以通过比普遍应用的方法中使用的使用更小的存储空间以及在存储和/或检索信息的活动中投入更少的时间和努力,而实现效率的提高。此外,在一些实施方案中,本发明使得提高文档存储和检索的速度。因此,本发明的技术和方法论有助于减少存储数据所需要的物理存储总量。这通过最小化重复数据写入和存储的次数而完成,并且在存在重复数据的情况下,通过使用中介器来指向到之前存储数据而完成。
附图简述
图1为根据本发明实施方案的用于写入数据的方法的表示图。
图2为根据本发明方法的用于解决冲突的协议的表示图。
图3为根据本发明实施方案的用于读取信息的方法的表示图。
发明详述
现将详细参考本发明的实施方案,其示例在附图中予以说明。在以下详细描述中,阐述了许多具体细节以提供对本发明的充分理解。然而,除非上下文中另有指示或暗示,否则这些细节都是作为示例,并且不应该视为以任何方式来限制本发明的范围。
定义
除非上下文中另有陈述或暗示,否则下述术语和短语都具有下文所提供的意义。
术语“比特”是指二进制数字。其可以具有两个数值中的一个数值。每个数值可以由0或1表示。
术语“区块”是指具有预定长度的数据字节或比特序列。在记录介质上,物理介质可以划分为由区块大小所界定的单元。记录介质上的每个区块可以通过逻辑区块地址来识别。在行业中,目前512个字节是区块的标准大小。然而,存在使用4096个字节作为标准的渐进趋势。另外,正如本领域普通技术人员将会了解的,短语“区块大小”和“扇区大小”常常被本领域普通技术人员互换使用。
短语“可启动性代码”、“可启动性信息”和“可启动性特征”是指提供相应方式来进入可启动状态并且可以存储在启动扇区上的信息。启动扇区可以含有机器代码,所述机器代码被配置成由固件加载到RAM(随机存取存储器)中,这又允许启动进程来从存储装置加载程序或将程序加载到存储装置上。举例而言,主启动记录可以含有定位现用分区并调用卷启动记录的代码,其可以含有代码来加载和调用操作系统或其它独立程序。
短语“缓冲单元”是指具有兼容用作散列值算法输入的大小的一系列比特。缓冲单元可以与小盘具有相同大小。然而,在一些实施方案中,缓冲单元可以是小盘大小的几分之一或者是小盘大小的倍数。
术语“字节”是指八比特序列。
术语“高速缓存器”是指为了将来更快提供数据的请求或出于缓冲的目的而临时存储数据的位置。L1高速缓存器(1级高速缓存器)是指(例如)与处理器核心集成的静态存储器。L1高速缓存器可以用来在CPU(中央处理单元)多次存取相同数据的情况下提升数据存取速度。L2高速缓存器(2级高速缓存器)通常比L1高速缓存器更大,并且,如果在L1高速缓存器中寻找但并未发现数据文件,那么便可以在查看外部存储器之前对L2高速缓存器进行搜索。在一些实施方案中,L1高速缓存器并不处于中央处理单元内。相反,其可以位于DDR、DIMM或DRAM内。另外或替代地,L2高速缓存器可以是PCI2.0/3.0的一部分,所述PCI2.0/3.0并入到主板中。因此,L1高速缓存器和L2高速缓存器中的每个高速缓存器可以处于主板的单独部分中。在一些实施方案中,当实施本发明的方法时,散列值表存在于L2高速缓存器中。
术语“小盘”是指可以对应于扇区群集的一组比特。小盘的大小由存储系统确定,并且可以具有某个小盘大小。传统上,小盘大小是通过CHS方案得出,所述CHS方案会经由元组来定址区块,所述元组定义所述区块在硬盘上出现的柱面、磁头和扇区。更近地,小盘大小已经从逻辑区块地址(LBA)测量中得出。举例而言,小盘大小可以是512B、1K、2K、4K、8K、16K、32K、64K或1MB。正如本领域普通技术人员所知晓的,1K=1024B。小盘可以从主机作为原始数据进行接收。
术语“冲突”是指针对不同输入(例如,缓冲单元)出现了生成相同输出的情况,例如,通过函数(如散列值算法)生成相同的散列值。
“文件”是相关字节或比特的集合,这些相关字节或比特组合来提供具有某个大小的文件,而且长度可以用比特或字节来度量。文件可以小于小盘、与小盘具有相同大小或者大于小盘。
短语“文件名”是指允许计算机识别特定文件并将所述文件与其它文件加以区别的名称或代码。
短语“文件系统”是指用来存储、检索和更新一组文件的抽象概念。因此,文件系统是用来管理数据和文件的元数据以及含有数据的存储装置上的可用空间的存取的工具。一些文件系统可以(例如)存在于服务器上。文件系统的示例包括但不限于Unix文件系统和其关联的目录表和索引节点、Windows FAT16和FAT32文件系统(FAT是指文件分配表)、Windows NTFS(其基于主文件表)以及Apple Mac OSX(其使用HFS或HFS plus)。
短语“散列函数”、“加密散列函数”、“加密散列函数值算法”和“散列函数值算法”是指针对特定散列函数而将较大数据组(具有相同或可变长度)映射到具有固定长度的更小数据组的算法或子程序。“散列函数值”是指在应用散列函数算法之后返回的输出。所述算法返回的数值也可以称为散列值、散列代码、散列和、校验和或散列数据。当(例如)使用MD5时,输出为128个比特,然而,当使用SHA-1时,输出便为160个比特。因此,在一些实施方案中,散列值的长度为32至512个比特。
术语“主机”、“用户”和“发起器”可以互换使用,并且是指发送数据以便存储到本发明的数据存储和检索中介系统上的实体或系统。主机可以发送与一种或多种类型的文档或文件相对应的数据并且接收数据。优选地,在任何输入/输出(“I/O”)流内,数据对应于单个文档类型的文件。
术语“包括(including)”和“包括(comprising)”以开放的方式使用,且因此应解释为表示“包括但不限于”的意思。
缩写“LBA”是指“逻辑区块寻址”或“逻辑区块地址”。LBA是线性定址方案,并且是用来指定存储在某些存储介质(例如,硬盘)中的数据区块位置的系统。在LBA方案中,区块是通过整数来定位,并且只有一个数字用来定址数据。通常,第一区块为区块0。用户可以认为数据是存储在特定LBA上。用户感知到的数据存储位置是“用户感知逻辑区块地址”。这可以不同于数据实际存储的位置。数据在NCM上实际存储的位置可以称为“真实逻辑区块地址”。
缩写“LUN”是指逻辑单元数字,并且是用来识别逻辑单元的数字。LUN通常用来管理SAN上共享的区块存储阵列。
术语“管理器”是指可以存储在非暂时性介质中并且致使采取一个或多个其它动作(例如,接收、传输或处理数据)的计算机程序产品,例如,代码。它可以存储在硬件、软件或其组合上。在一些实施方案中,管理器可以是计算机和/或系统的一部分,所述计算机和/或系统被配置成允许管理器执行其预期功能。
术语“中介器”是指可以存储在硬件、软件或其组合上并且使至少一个非高速缓存器介质内存储空间的一个或多个单元与文件名相互关联的计算机程序产品。因此,中介器可以使用户感知LBA与真实LBA相互关联。中介器可以是比其所指向的非高速缓存器介质更小的量级。举例而言,中介器可以大约小到典型柱面大小的约0.2%。在一些实施方案中,中介器存在于计算云中,然而在其它实施方案中,其存在于非暂时性有形记录介质中。中介器能够组织、转译、转换并控制主机察觉到是处于记录介质的某些磁道中而实际上出现在记录介质的不同磁道中的位置中的数据存储,或者中介器可以可操作性地耦接到管理器,所述管理器即便不会提供所有这些功能,也会提供其中的一个或多个功能。此外,中介器可以包括可位于物理装置或结构内的扇区图、表或其它数据组织,因此,中介器的内容可以致使物理装置或结构具有某种几何排列。在一些实施方案中,中介器存在于L2高速缓存器上。
术语“元数据”是指关于数据容器的管理信息。元数据的示例包括但不限于:正在读取的文件的长度或字节计数;与文件修改的最后一次有关的信息;描述文件类型和存取许可的信息;以及LUN QoS、VM和WORM。其它类型的元数据包括操作系统信息、自动初始化信息、分组许可以及文档类型内比特的频次。
缩写“NCM”是指非高速缓存器记录介质。NCM的示例包括但不限于硬盘和固态驱动器。NCM可以(例如)被配置来存有100TB字节的数据。NCM存储独特的缓冲单元。在一些实施方案中,NCM也存储摘要图,所述摘要图含有缓冲单元和存储散列值的关联形式。这些存储的关联形式可以用来填写服务器的RAM中的散列值表。通过向RAM中填写来自NCM永久性储存器的这个信息,可以完成快速加载。另外或替代地,NCM存储每个单元区块1比特的比特图,所述比特图可以用来跟踪本发明的存储保存内容。作为惯例,摘要图和比特图的存储需要介于5个字节与10个字节之间的较小开销,例如,在NCM上每个区块的存储数据需要8.125个字节。或者,摘要图和比特图可以与作为本发明方法或系统用途的结果而写入的缓冲单元,存储在不同的存储介质上。
短语“可操作性地耦接”与术语“耦接”可互换使用,而且意味着系统、装置和/或模块被配置成彼此或互相通信,并能够在通信时或通信之后执行它们的预期目的。这个短语和术语包括间接、直接、光学、有线或无线连接。因此,如果第一装置可操作性地耦接至第二装置,那么这个连接可以借助直接电气连接、经由其它装置和连接而借助间接电气连接、借助光学连接或借助无线连接,或者借助这些连接的组合。
短语“操作系统”是指管理计算机硬件资源的软件。操作系统的示例包括但不限于Microsoft Windows、Linux和Mac OS X。
术语“分区”是指将存储介质(例如,磁盘驱动器)划分为多个单元的格式。因此,分区也可以称为磁盘分区。分区的示例包括但不限于GUID分区表和Apple分区图。
术语“记录介质”是指非暂时性有形计算机可读存储介质,在其中相关人员可以存储对应于比特的磁性信号。举例而言,记录介质包括但不限于NCM,如硬驱、硬盘、软盘、计算机磁带、ROM、EEPROM、非易失性RAM、CD-ROM以及穿孔卡。
术语“扇区”是指磁盘(例如,磁性磁盘)上磁道的细分。每个扇区存储固定量的数据。针对磁盘而言的普通扇区大小为512个字节(512B)、2048个字节(2048B)和4096个字节(4K)。如果小盘的大小为4K且每个扇区的大小为512B,那么每个小盘对应于8个扇区(4*1024/512=8)。扇区具有磁道并且位于盘片上。通常,两个或四个盘片构成一个柱面,并且255个柱面构成硬盘和介质装置。
短语“扇区图”是指从主机接收调用信号并关联存储装置中文件所存储的位置的工具。扇区图可以(例如)在iSCSI(互联网小型计算机系统接口)协议定义的参数下进行运作。在本发明的一些实施方案中,扇区图可以位于中介器的比特字段中。
术语“磁道”是指磁盘内横跨所有扇区的圆形单元。“磁道扇区”为任何一个扇区内的磁道。“磁道群集”跨越一个以上扇区。
优选实施方案
本发明提供用于将数据存储在非高速缓存器记录介质上的方法、用于执行这些方法的计算机程序产品以及被配置来执行这些方法的系统。借助本发明的各种实施方案,相关人员可以通过降低重复数据存储的次数来有效地存储和检索数据。
根据一个实施方案,本发明提供一种用于将数据存储在非高速缓存器记录介质上的方法。在一些实施方案中,所接收的数据包括用户定义逻辑区块地址(LBA)和用户供应缓冲、基本上由用户定义逻辑区块地址(LBA)和用户供应缓冲组成,或者由用户定义逻辑区块地址(LBA)和用户供应缓冲组成。用户供应缓冲的大小可以是(例如)512个字节至64K,或者甚至更高,例如,高达2MB。所接收的数据可以呈(LBAx,缓冲x)格式,其中x=1至n且n=用户所发送的缓冲的数目。缓冲是原始数据,且因此它们可以对应于任何文档类型,例如,JPEG、PDF、WORD文档、MPEG以及TXT文档。
用户所发送的整个流可以呈N个字节的形式。所述流可以在有线或无线网络上并且借助已知的用于传输I/O流的方法和技术来接收。用户可以将数据格式化成(LBAx,缓冲x)格式,或者用户可以将数据发送给服务器,所述服务器将数据格式化成这个格式。因此,N可以大于缓冲单元的大小。优选地,用户传输具有文件名和/或文件识别符的数据。
当N大于缓冲单元的大小时,在接收数据流之后,服务器可以将所述N个字节分割成缓冲单元。因此,缓冲是可以具有任何大小的数据流,但是缓冲单元具有固定大小并且对应于NCM上存储单元的大小。举例而言,用户可以发送具有文件名称的单个1024字节缓冲,以便开始于LBA10。如果本发明的实施方式的缓冲单元大小为512个字节,那么数据可以存储在LBA20和LBA21处。值得注意地,在一些实施方案中,用户可以仅仅传输起始LBA,并且其系统将感知到有待于存储在NCM上的文件是开始于所述地址处且延展到连贯区块,从而使得存在足够的空间用于所述文件。
这个分割可以针对整个流或小盘执行。举例而言,如果所述方法被配置来接收大小为4K的缓冲单元,但是用户传输大小为16K的小盘,那么在服务器接收小盘之后或在服务器接收小盘时,服务器会发起协议来将每个小盘划分为四个大小各自为4K的缓冲单元。因此,根据一些方法,相关人员以(LBAx,缓冲x)的形式来接收数据,或者将其所接收的数据转换成这个形式。无论用户是否以被配置成具有必要的缓冲单元大小或被转换成这个大小的封包来供应数据,充当散列值算法的输入的缓冲单元中的每个单元都称为“用户供应缓冲单元”。
在数据以正确形式接收(或转换成正确形式)之后,将加密散列函数值算法应用于每个缓冲单元,以便针对所述缓冲单元来形成一个生成散列值。所生成的散列值可以称为生成散列值。加密散列值算法可以(例如)呈计算机程序产品的形式或者呈存储在非暂时性存储介质中的计算机程序产品内的协议的形式。这些类型算法的示例包括但不限于MD5散列算法(也称为消息摘要算法)、MD4散列算法和SHA-1。从散列函数值算法中输出的值可以称为散列值、校验和或者总和。在一些实例中,散列值大小为64、128或256个比特或8个字节,或者是介于其间的任何值。由于I/O流内数据高度重复的特性,所以生成冲突散列值(也就是,相同的但对应于不同缓冲单元的散列值)的可能性便相对较低。所述方法可以根据先进先出(“FIFO”)协议来获取散列值,并且在正接收I/O流时、在正生成散列值时或者在所有I/O流已经接收、分割(必要时)以及经受散列函数值算法之后,开始存取相关性文件。
在针对用户供应缓冲单元获取生成散列值之后,访问不同的计算机程序产品或者同一计算机程序产品内产生所述生成散列值的不同模块。这个计算机程序产品存取散列值表。散列值表可以(例如)存储在永久性存储器中,并调用到L2高速缓存器中而便于存取和使用。在散列值表内,多个存储散列值各自与NCM上一组存储缓冲单元内的不同存储缓冲单元以及所述存储缓冲单元的真实LBA相关联。短语“存储散列值”用来与通过散列值算法而针对特定用户供应缓冲单元来生成的散列值(其可以称为生成散列值)形成对照。
散列值表最初可以填写有通过特定散列值算法而关联的一组已知散列值和缓冲单元。这些已知的值可能已经基于算法的经验先前使用加以确定,例如,之前针对类似行业中主机文件或主机的文件所生成的那些值。或者,散列值表最初可以是空的,并且将第一用户供应缓冲单元与一组无效关联性进行对比。在使用时,散列值表可以存在于(例如)服务器上的RAM中。因此,散列值表或者将要填入其中的数据可以存在于永久性储存器中,如存在于存储缓冲单元的NCM上,或者按照可以在系统启动或重启时进行存取而用于RAM的重新填写的格式存在于其它地方。在更新时,会对RAM中的表并且也会对永久性存储器做出更新。
在一些实施方案中,任何时候,在所述表内,给定存储散列值与不超过一个缓冲单元主动进行关联。当缓冲单元处于散列值表内且与存储散列值相关联时,缓冲单元为“存储缓冲单元”。与散列值表内的特定散列值相关联的缓冲单元可以随着时间发生改变,并且,在发生下文所述的冲突的情况下,散列值算法所确定的最近缓冲单元、散列值关联将在应用本文中所述的方法之后,成为表内的主动关联。短语“主动关联性”和“主动进行关联”是指所述表赖以提供、配置或表示有待提取的数据而与生成散列值进行比较的条件。主动关联性可以包括在NCM上最近接收缓冲单元的真实逻辑区块地址,所述缓冲单元使得在应用散列值算法后生成散列值。一旦散列值变成存储散列值,那么其将保留在所述表中;然而,随着时间的推移,这个散列值所关联的缓冲单元可以发生改变。因此,存储缓冲单元可以不再是存储缓冲单元。
本领域普通技术人员将会认识到,在某些实施方案中,相关人员可以不使用散列值表,而是使用多重映射。当使用多重映射时,散列值可以与一个以上缓冲单元关联,且因此之前存储的散列值无须在存在冲突时进行移除。
因为散列值算法可以针对多个不同缓冲单元而生成相同散列值,所以需要某个操作程序来确定如何处置表内的这些发生情况。当已经针对用户供应缓冲单元生成与存储散列值相同的散列值时,可以使用下述三个操作程序中的一个:(1)可以用新的关联性来改写预先存在的关联性;(2)可以删除预先存在的关联性,并且可以在表内(例如)新的位置处制作新的条目;或者(3)可以将预先存在的关联性移动到不活动文件,或者以其它方式进行修改以便表示其是不活动的,但是信息保持在(例如)归档文件中,并且借助适当设计的计算机程序,信息可以在稍后时间上进行存取。条件(1)或(3)是将关联性渲染为不活动的示例。正如本领域普通技术人员将会认识到的,因为从NCM中进行的数据检索并不需要存取散列值表,所以不需要任何归档信息来实施本发明的各种实施方案。然而,这个信息可以用来核查针对不同用户供应缓冲单元或分割用户供应缓冲单元来生成相同散列值的程度。
由于数据的高度重复特性,因此作为应用散列值算法的结果而生成冲突散列值的机率较低。举例而言,SHA-1的160比特散列算法针对不同样式随机生成相同散列值的机率为1024之一。本发明利用散列值算法的这个特征,从而最小化将要存储重复缓冲单元的范围。为了完成这个操作,所述方法使得分配两个模块或两个单独计算机程序算法,所述模块或算法查询:(1)新生成的散列值与存在存储缓冲单元的存储散列值相同?并且如果相同,(2)存在冲突,从而使得针对所述散列值的存储缓冲单元不同于用户供应缓冲单元?
上文所论述的查询的结果确定什么样的新信息将会存储在NCM上并且是在什么情形下,以及什么内容会写入到中介器。在最简单的情况下,本发明的协议确定不存在散列值的重复。不存在散列值的重复则指示用户供应缓冲单元不处于散列值表内。因此,缓冲单元写入在NCM的新区块中,并且对散列值表做出更新,从而使得如果用户随后提交相同的缓冲单元来作为不同数据流或数据包的一部分,或者随后在相同数据流内提交相同的缓冲单元,所述方法论将能够检测到这个缓冲单元是与NCM上已经存储的数据相同。散列值表也会进行更新,以便包括缓冲单元所写入的真实LBA。在将生成散列值和用户供应缓冲单元写入到散列值表后,它们便分别变成存储散列值和存储缓冲单元。
如果所述方法论确定存在散列值的重复,那么便进行第二查询。正如上文所提到的,在这个第二查询中,所述方法考虑将所述算法应用于用户供应缓冲单元是否会致使产生已存储缓冲单元所关联的相同散列值,即使这两个缓冲单元是不同的。
正如本领域普通技术人员将会轻易认识到的,这个两级方式将效率带入到方法中,从而减少在NCM上存储重复数据的次数。在第一步骤中,比较散列值。这些值小于缓冲单元,例如,比缓冲单元小至少2倍、至少10倍、至少100倍或至少1000倍,且因此比缓冲单元本身更容易进行比较。只有在这些值指示散列值重复的情况下,系统才会比较实际缓冲单元。因此,通过在将与已经不处于散列值表内的散列值关联的缓冲单元进行彼此检查之前除去这些缓冲单元,系统是有效的。
在查询的第二级中,相关人员会将两个缓冲单元彼此进行比较。如果不存在冲突,也就是存在缓冲单元(存储缓冲单元和当前用户供应缓冲单元)的真实身份,那么便不需要写入到NCM的额外步骤。相反,只需要针对缓冲单元之前所存储的区块的中介器进行标记。因此,效率便得以提高,因为这些缓冲单元将不需要再次写入。为了跟踪区块所从属的文件,在中介器内,LBA与用户感知LBA进行关联,并且可选地与用户生成文件名或文件系统相关联。
当(与存储缓冲单元相关联的)存储散列值与生成散列值相同,但是因为存储缓冲单元和用户供应缓冲单元不同而存在冲突时,便出现第二级查询的另一结果。在这些情况下,本发明的方法将用户供应缓冲单元视为需要写入到NCM。这些方法也致使改变散列值表,从而使得其将共同散列值与用户供应缓冲单元相关联。共同散列值的之前关联性被渲染为不活动的或被删除。因此,在搜索重复缓冲单元的后续查询中,只考虑最近存储的散列值、缓冲单元关联性。在这些方法中,从不需要在发生冲突的情况下扩展散列值。
在各种实施方案中,对于每个LBAx而言,所述方法致使中介器将LBAy与LBAx一起存储,其中LBAy是指与用户供应缓冲单元相同的缓冲单元的实际位置。因为LBAx是用户认为缓冲单元所存储的位置而LBAy是缓冲单元实际存储的位置,所以LBAy也存储在散列值表内。然而,LBAx可以从散列值表中省略,并且在一些实施方案中只存在于中介器上。可选地,中介器也存储用户创建的文件名和/或文件识别符,并且使这个文件名与一个或多个用户感知逻辑区块地址相关联。
正如上文所提到的,大多数缓冲单元只存储在NCM上一次。因此,对于多个用户文件而言,存在用户感知逻辑区块地址与真实逻辑区块地址的相关性,并且在(中介器上)对应于不同用户文件的多个相关性内,存在一个或多个相同的真实逻辑区块地址,但是存在不同的用户感知逻辑区块地址。实际用户文件中最高度重复的缓冲单元将出现在最大数目的不同相关性中。另外,因为用户可以供应缓冲并且认为所述缓冲正存储在NCM上的连续位点处,所以可以记录单个LBAx与所述缓冲的关联性,并将数据视为存储在连续LBA处,开始于LBAx。然而,因为存储实际是在缓冲单元级别上,并且常常对于给定缓冲而言不会存储在连续位置上,所以中介器可以存储单个用户感知LBA,(或者暗中地或明确地)将多个连续LBA与多个不连续的真实LBA一起存储。举例而言,用户可以供应大小为4096B的缓冲和用户感知LBA10。如果缓冲单元大小为512B,那么用户可以暗中地认为其数据是处于八个连续存储位点上,开始于LBA10。然而,事实上,它们可以处于LBA4、LBA3、LBA2、LBA2、LBA3、LBA3、LBA9、LBA4处,并且中介器会指向这些位置。值得注意地,对于与用户所发送的缓冲内的数据相对应的大多数重复缓冲单元(即便不是全部)而言,中介器会指向NCM上的同一LBA。因此,在中介器上,在一些实施方案中可以存在所有真实数据位置(例如,所有真实LBA)与从用户接收的用户感知位置或多个用户感知位置的相关性。
因此,在这些方法中,不是使用扩展来虑及多个散列值算法生成相同散列值的机率,而是关联性的最近发生情况的上述使用,仅仅是在下述情形下才会将特定供应缓冲单元写入到NCM:(i)可比散列值已经不处于与任何缓冲单元关联的散列值表内;或者(ii)对于任何给定散列值而言,存在冲突。在这些后者情况下,可以将之前已经写入的相同数据部分地写入到NCM。然而,作为惯例,这个很少发生。
在一些实施方案中,将缓冲单元写入到NCM是连续的,也就是,每个将要写入的用户供应缓冲单元可以写入在NCM上的下一个连续区块中。因此,在NCM上存在最小的数据分散或不存在数据分散,这会改善读取/写入性能并允许节约存储空间。另外,读取/写入性能得以改善,是因为实际上向NCM写入更少数据。这又会使得操作系统的高速缓存器能够更好地发挥作用。此外,可以提高数据的安全性,因为NCM上的数据在不没有中介器和散列值表的情况下无法用来重建文件。
如果相关人员考虑到数据是如何读取的,便会了解本发明的其它益处。用户可以发送请求来读取文件。所述请求包括文件识别符以及与一个或多个用户感知逻辑区块地址相关的信息。通过访问相关中介器,相关人员可以确定实际逻辑区块地址(或多个实际逻辑区块地址)并检索相关数据。值得注意地,与写入协议相比而言,在检索和读取步骤中不需要散列值算法或表。相反,读者从中介器所指向的、NCM上的位点检索数据,并且中介器可以针对一个或多个文件而多次指向一个或多个缓冲单元。
本发明也提供用于数据有效存储的系统。这些系统可以包括:(a)永久性存储器;(b)中央处理单元(“CPU”);(c)非高速缓存器记录介质;以及(d)中介器。这些部件中的每个部件可操作性地耦接至一个或多个其它部件,从而执行它们的指定功能。
永久性存储器包括散列值表,并且可以是下文所述的非高速缓存器记录介质的一部分,或者截然不同于所述非高速缓存器记录介质。散列值表使多个存储散列值中的每个散列值与不同存储缓冲单元相关联。通过将散列值算法应用于缓冲单元来确定散列值。每个存储缓冲单元也与真实逻辑区块地址相关联。本领域普通技术人员将会认识到,散列值表可以在一个表中含有下述三种类型数据之间的关联性:存储散列值、存储缓冲单元和真实逻辑区块地址。或者,散列值表可以在一个表中仅仅含有前两种类型数据的关联性,并且,在同一或不同存储器装置(例如,中介器)中的另一个表中,可以存储使真实LBA和存储缓冲单元相互关联的表。永久性存储器可以存储在CPU内或者可操作性地耦接至CPU。
中央处理单元包含硬件或硬件与软件的组合。CPU被配置来访问永久性存储器并搜索散列值表。CPU也被配置来执行本发明方法中的一个或多个方法,包括但不限于向NCM和中介器进行写入。此外,CPU被配置成借助无线或有线网络(例如,借助服务器)来与一个或多个远程用户通信。
NCM被配置用于区块级存储。NCM可以与CPU相分离或者作为CPU的一部分。
在上述系统的一些实施方案中,中介器、散列值表、CPU和非高速缓存器记录介质中的每一者彼此都是远程地存储。它们可以处于同一外壳内或不同外壳中的单独结构中。
正如上文所提到的,本发明的系统(其可以借助服务器进行控制)可以在咨询中介器之后且在不存取散列值表的情况下,重新创建文件并向用户传输数据。因此,在一个实施方案中,本发明的系统包括检索模块,其中所述检索模块被配置成通过访问所述中介器并按照所述中介器所传达的顺序重新组合多个缓冲单元来重建数据文件,而不存取散列值表,并且其中所述中介器所传达的所述顺序不同于非高速缓存器记录介质上的缓冲单元的顺序。
本发明的各种方法可以由管理器自动控制。管理器可以包括一个或多个模块,并且存在于本地计算机上、网络上或云中或(例如)CPU中。管理器可以被配置来协调信息的接收或亲自接收信息,并将这个信息传递给中介器,或者直接通过中介器来控制信息的接收。因此,所述方法可以经过设计,从而使得来自发起器的信息流过管理器而用于本发明的消重方法并且流向中介器,或者在管理器的方向上流向系统的其它部件,但其并不流过管理器。
在一些实施方案中,管理器可以控制一个或多个中介器的活动、与所述一个或多个中介器通信,并且协调所述一个或多个中介器的活动。对于每个中介器而言,管理器接收一组参数(或者协调这组参数的接收)。这些参数可以包括文件系统信息、可启动性信息和分区信息中的一个信息、两个信息或全部三个信息,基本上由所述一个信息、两个信息或全部三个信息组成,或者由所述一个信息、两个信息或全部三个信息组成。
中介器可以(例如)包括:(a)第一组磁道;(b)第二组磁道;(c)第三组磁道;以及(d)第四组磁道。管理器致使将文件系统信息、可启动性信息和分区信息存储在中介器上的第一组磁道中,所述第一组磁道可以称为预留1或R1。这个信息可以包括文件系统信息的识别,所述识别信息将传达如何使用预留区块。举例而言,当使用NTFS时,扇区1至2可以用于MBR(主启动记录),并且扇区3可以用于$MFT。可选地,这些磁道可以复制到第二组磁道中,所述第二组磁道可以称为预留2或R2。
在这些实施方案中,除了前面段落中所描述的参数之外,管理器还可以接收元数据。元数据可以存储在中介器上的第三组磁道中。在管理器接收所述参数和元数据的时间上,或者在稍后时间上,管理器也可以接收一个或多个文件以便存储在非高速缓存器介质上。每个文件都是在带有文件名和一个或多个用户感知LBA的情况下接收的。文件名由传输文件的主机生成,并且可以由主机的文件系统来定义。可以(例如)是SAN或NAS或其组合或者作为SAN或NAS或其组合的一部分的管理器,在接收带有文件名的文件后,可以自动执行本文中所述的步骤来进行存储,包括将真实和用户感知LBA存储在第四组磁道的比特字段中。
在一些实施方案中,在接收原始数据后,本发明的方法可以致使将接收确认自动返回给主机。在一个QoS(服务品质)协议中,数据文件是借助I/O来接收,并立即发送给L1高速缓存器。在接收后,借助I/O而从L1高速缓存器发回确认。数据文件可以从L1高速缓存器发送给L2高速缓存器,L2高速缓存器会将确认传回给L1高速缓存器。L2高速缓存器也可以在经受本发明的消重协议之后,将数据文件发送给执行本发明实施方案中的一个或多个实施方案的系统或系统的一部分,并写入到中介器,而且在一些情况下写入到非高速缓存器介质(NCM)以便长期存储。NCM又可以将确认发回给L2高速缓存器。
在一些实施方案中,中介器可以存在于L1高速缓存器内的堆(动态分配存储器)中或者可操作性地耦接至所述堆。或者,中介器可以存在于卡片内,或者可以是L2高速缓存器的一部分或可操作性地耦接至L2高速缓存器,或者可以处于固态驱动器上或任何用于存储的区块装置上。
正如本领域普通技术人员所知晓的,将中介器放置在L1与L2中的决策将受到诸如存储数据的使用频次等因素的影响。因此,L1高速缓存器用来存储系统或最终用户频繁使用的数据,而L2高速缓存器可以用于稍微频繁存取的数据。
在另一QoS协议中,数据文件是由L1高速缓存器借助I/O来接收。数据文件从L1高速缓存器传递给L2高速缓存器和NCM。L2高速缓存器和NCM中的每一者都向L1高速缓存器发送确认。在从L2高速缓存器和NCM中的一者或两者接收确认之前或之后,L1高速缓存器借助I/O来发送确认。
正如上文所提到的,中介器可以包括第一组预留磁道(R1)和第二组预留磁道(R2)。在一些实施方案中,第二组预留磁道(R2)是第一组预留磁道(R1)的复本。另外,在一些实施方案中,相关人员可以使用第二组预留磁道(R2)来检查第一组预留磁道(R1)中的错误。
R1可以被配置来充当主机发起的中心点。因此,在本发明的消重方法中的任何一个方法之前,主机可选择参数来发送给R1。中介器可以直接从主机或者间接地借助管理器来接收这个信息。优选地,R2从不暴露给主机。因此,只有中介器本身或管理器可以致使将信息存储在R2中。R1和R2中的每一者可以(例如)含有16个扇区,并且填充有真实数据,如主机修改符。按照惯例,编号可以从0开始。因此,R1可以(例如)含有扇区(或磁道)0至15,而R2可以含有扇区(或磁道)16至31。然而,中介器可以经过构建,从而允许将R1和R2中的每一者扩展成超过16个磁道的初始大小。
在一些实施方案中,R1含有独特的预留扇区信息和分区信息。在分区信息内,相关人员可以存储文件系统信息。
举一个非限制性示例,并且正如本领域普通技术人员所意识到的,当利用NFTS文件系统格式化某个卷时,相关人员会创建元数据文件,如$MFT(主文件表)、$Bitmap、$Log文件以及其他文件。这个元数据含有与NFTS卷上所有文件和文件夹相关的信息。NFTS卷上的第一信息可以是分区启动扇区($Boot元数据文件)信息,并且可以位于扇区0处。这个文件可以描述基本的NTFS卷信息和主要元数据文件$MFT的位置。
格式化程序会为$Boot元数据文件分配前16个扇区。第一扇区为具有引导程序代码的启动扇区,并且随后的15个扇区为启动扇区的IPL(初始程序加载程序)。
除了R1和R2磁道之外,中介器还可以存储额外的元数据。这个元数据可以(例如)对应于允许运行自动精简配置策略的信息,所述自动精简配置策略对应于允许装置看上去比实际可用资源具有更多物理资源的可视化技术,并且,这个元数据可以(例如)包含在R2之后的八个磁道中,所述八个磁道是磁道32至39。元数据也可以提供有多个特征,如LUN QoS、VM和WORM。
最后,中介器也可以包括比特字段。比特字段含有指示数据在存储介质内物理上存储的位置的信息,并且如果元数据位于磁道32至39中,那么比特字段的扇区编号便开始于磁道40。主机的文件名与数据的位置之间的相关性也是存储在中介器的比特字段内。因此,比特字段可以包括扇区图、基本上由扇区图组成或者由扇区图组成。
作为惯例,优选地中介器并不位于存储缓冲单元数据的磁盘或记录介质上。另外,优选地中介器只需要对应磁盘或记录介质的总内存的约0.1%至0.2%。
出于进一步说明的目的,可以参考附图。图1为本发明方法的表示图,用于本发明方法的指令可以存储在非暂时性记录介质中的永久性储存器中。出于说明性目的,图1中从步骤130至结束所示的方法是针对单个用户供应缓冲单元来展示的;然而,所述方法可以针对被分割成多个用户供应缓冲单元的给定缓冲而多次重复。当用户感知LBA和真实LBA的关联性写入到中介器时,它们的关联性一起进行分组并表示为对应于特定文件。正如本领域普通技术人员将会认识到的,如果用户供应缓冲与用户供应缓冲单元具有相同大小,那么它便不需要进行分割,并且本发明的各种实施方案可以被配置来检测这个条件。本发明的各种实施方案也可以被配置来确认所有缓冲能够被划分为具有同等大小的缓冲单元,并且,如果不能够被划分,那么便将0添加到缓冲的比特串的末端或者添加到原本作为最后一个缓冲单元的数据的比特串末端,以便将它们全部渲染为具有相同大小。
如图中所展示的,可以接收指令来将信息写入到存储介质。这些指令可以呈用户感知逻辑区块地址(LBA)或(LBAx)和用户供应缓冲单元的形式110。
正如上文所描述的,用户感知LBA是用户认为其数据将会存储的位置。用户供应缓冲单元内的数据通常将会具有其所存储的装置上的区块的大小。如果用户提交大于所述装置上的区块大小的数据,那么用户所提交的数据便可以进行预处理,从而使得所述数据含有多个缓冲单元,每个缓冲垫单元具有区块的大小。如果缓冲单元小于区块大小,那么计算机程序产品便可以将所有的0添加到缓冲单元的一个末端,直到它具有区块的大小。
因此,所接收的指令呈可以由(LBA,缓冲)表示的形式,或者转换为这个形式。对于用户供应缓冲单元而言,计算机程序产品在必要时会分割所接收的数据,并计算散列值120。当接收多个指令时,便针对每个缓冲单元来计算散列值。
在算法生成散列值之后,算法会查询散列值是否与已经存在于散列值表内的存储散列值重复130。如果所述表并不含有生成散列值,那么算法便断定缓冲单元对于NCM而言是新的,并且将缓冲单元写入到NCM内之前尚未使用的区块140。算法也会致使更新存储器中所存储的散列值表,以便包括新写入到NCM的这个用户生成缓冲单元与其生成散列值的关联性150。这个生成散列值变成存储散列值,并且用户供应缓冲单元变成存储缓冲单元。在一些实施方案中,散列值表也识别缓冲单元在NCM上所存储的真实逻辑区块地址,然而在其它实施方案中,散列值表不包括这个信息,并且这个信息是存储在其它地方,例如,存储在中介器上或另一数据文件中。
在更新散列值表之后,用户感知LBA和用户供应缓冲单元所存储的真实LBA会存储在中介器上,并彼此相互关联160。
返回到步骤130,在图1内,如果所述查询得出结论是,新计算的散列值与散列值表内的存储散列值重复,那么所述方法便发起询问是否存在冲突的协议170。
如果不存在冲突,那么所述协议便致使中介器来存储已经处于NCM上且与用户供应缓冲单元相同的缓冲单元数据的位置与用户感知位置的相关性160。因此,对于这个重复数据而言,不会将新信息写入到NCM。
返回到查询是否存在冲突170,当回应为“是”时,意味着相同散列值被指配给不同缓冲单元,所述协议便会要求将用户供应缓冲单元写入到NCM 140,并将存储器内的散列值表更新成与新写入的缓冲单元主动进行关联的散列值。另外,将会更新中介器以便含有用户感知位置和真实位置的新相关性。
图2进一步说明这个步骤。类似于图1,在进入冲突确定协议270后,如果存在“是”输出,那么便将缓冲单元的独特数据写入到NCM上的新区块240。在写入到新区块之后,算法会更新散列值表。
当更新散列值表时,所述方法会使之前存储的散列值与缓冲单元不再关联,使存储散列值与更近接收的缓冲单元相关联251,并移除或去活散列值与之前存储的缓冲单元的关联性256。在更新散列值表之后,所述协议会将最近接收的缓冲单元的真实逻辑区块地址写入到中介器,并使其与用户感知逻辑区块地址相关联260。
图3表示读取指令。系统可以接收指令来读取区块,也就是检索(LBA,缓冲)的信息310。请求可以是通过文件名来请求文件的形式,所述文件名是用户与一个或多个用户感知LBA的系统关联性。
协议会致使存取中介器内的相关性表,并在对应于缓冲或缓冲一部分的每个LBA位置上进行读取320。因为相关性表使用户感知LBA与真实LBA相互关联,所以在获取LBA(或多个LBA)的信息之后,所述协议会在指定的实际LBA或多个LBA上读取NCM、检索区块信息并填充缓冲参数330。在利用这个信息的情况下,系统将会使原始数据处于正确顺序中,并且能够将其发送给主机,以便借助主机的操作系统来重建请求文件。
值得注意地,在读取步骤中,不需要存取散列值算法或表。相反,存储在NCM上的LBA可以进行读取来检索用户所调用的缓冲单元。如果任何一个或多个缓冲单元在读取的时候仍然处于L1或L2高速缓存器内,那么所述缓冲单元便可以从适当的高速缓存器中读取,而不是从NCM中读取。
再举例而言,相关人员可以考虑下述表:
表1
用户感知LBA | 用户供应缓冲单元 | 散列值 | 真实LBA位置 |
1 | A | x | 100 |
2 | B | y | 110 |
3 | C | z | 111 |
4 | D | a | 112 |
5 | E | b | 113 |
6 | F | c | 114 |
7 | G | x | 115 |
8 | H | d | 116 |
9 | I | e | 117 |
10 | J | y | 110 |
11 | K | f | 118 |
12 | L | x | 115 |
13 | M | g | 119 |
14 | N | h | 120 |
15 | O | b | 113 |
16 | P | z | 111 |
17 | Q | y | 121 |
18 | R | x | 122 |
假设:A≠G
G=L
B≠Q
B=J
E=O
C=P
A=R
在用户提交用于存储的数据时,用户感知到对于18个区块而言LBA为1至18,其中每个区块具有缓冲单元的大小,例如,512个字节。当传输用于存储的数据时,用户将每个缓冲单元视为独特的,假设其是存储在不同区块处。
在应用散列值算法后,会生成几个重复散列值。正如可以看出的,散列值x适用于缓冲单元A、G、L和R;散列值y适用于缓冲单元B、J和Q;散列值z适用于缓冲单元C和P;以及,散列值b适用于缓冲单元E和O。然而,数据的真实副本位于A与R、G与L、B与J、E与O以及C与P之间。因此,冲突会发生在A与G、G与R、B与Q以及Q与J之间。
正如第四列所展示的,当写入数据时,对于真实副本而言,不写入新区块。参见(例如)用户感知LBA2和LBA10所存储的实际位置。这两者都存储在区块110处。如果相关人员考虑第三和第三列,那么其便会看到,在分析前七个用户供应缓冲单元之后,便生成第一重复散列值(x值)。然而,因为A≠G,所以G必须写入到NCM上的区块。在这个发生之后,出于进一步冲突分析的目的,在存储于存储器中的散列值表内,x与G相关联,而不与A相关联。
在分析第十个缓冲单元J之后,相关人员会看到生成重复散列值y。然而,因为缓冲单元是相同的,所以不存在冲突。因此,不需要对散列值表进行更新,并且不需要将新的区块写入到NCM。相反,将会更新中介器以便指向真实LBA110,并使其与用户感知LBA相互关联。在分析第12个用户感知LBA并且分析第15和第16个用户感知LBA之后,便会显露类似的真实副本。
在分析缓冲单元Q之后,便生成散列值y。然而,因为Q≠B,所以存在冲突。因此,在LBA121处写入新区块,并且更新散列值表以便使y与Q相关联,而不再使y与B(其与J相同)相关联。
在分析用户供应缓冲单元R之后,便生成散列值x。R=A。然而,A并非是与散列值表内的x的最近关联性。因此,所述协议会将R视为其是第一次看到R,并且必须执行下述两个操作:(1)将新的相关性保存在散列值表中或者改写旧的相关性(但是所述协议不会复原存储器中所存储的关联性);以及(2)将新区块的数据存储在NCM中(这里是区块122)。因此,示例中的NCM将含有某个副本。
表1是出于说明性的目的,并且在一些实施方案中,只有第一列和第四列是中介器的一部分,而且它们不是散列值表的一部分。中介器的大小要求是较小的。举例而言,在一些实施方案中,对于存储在NCM上、大小为512字节或4K的每个缓冲单元而言,中介器需要8个或16个字节。
借助本发明的各种实施方案,可以大大减小NCM的物理存储空间。举例而言,它们可以减小至少50%、至少100%、至少200%、至少500%或至少1000%。因此,在一些实施方案中,所需要的存储空间量比标准条件下所需要的存储空间量小50至150倍。举例而言,在中介器上仅仅需要5至10个字节来存储对应于例如为512字节至4K的缓冲单元的数据。因此,通过降低多次存储相同缓冲单元(或分割缓冲单元)的需求,8GB USB棒(其是本发明的NCM的示例)可以用来存储与1.53TB数据对应的内容。
已经在假设所存储的缓冲单元与从用户接收的缓冲单元相同(即使进行分割)的情况下,描述了本发明的方法、系统和计算机程序产品。在这些实施方案中,因为所述缓冲单元是存储在与用户所感知的LBA不同的LBA处,并且是以用户无法感知的顺序存储的,所以需要中介器来用于检索信息,并且在没有中介器的情况下用户无法检索数据。因此,中介器提供一定程度的安全性。
使用相同散列值算法的不同用户将会生成相同的散列值。因此,它们的散列值表将是类似的,除了NCM上缓冲单元的位置。另外,中介器中的相关性信息将会是不同的。作为额外的安全性级别,在进入本发明的方法之前,用户可能希望编码或转换数据。这些动作可以称为预处理。
在一些实施方案中,在进入上文所述的协议或系统之前,用户的数据首先通过使用比特标记符表或频次转换器或其它散列值算法进行转换,以便生成大小上更小和/或编码的数据。用于执行这些技术的方法、系统和计算机程序产品公开于下述申请中:2013年2月2日提交的、标题为Bit Markers and Frequency Converters的U.S.13/756,921;2013年3月12日提交的、标题为Data Storage and Retrieval Mediation Systems and Methodsfor Using Same的U.S.13/797,003;以及,2013年6月3日提交的、标题为Methods andSystems for Storing and Retrieving Data的U.S.13/908,239。上述申请的所有公开内容全部以引用的方式并入本文中。这些方法的输出可以用来生成缓冲单元以便减少重复。
这些申请描述了可以作为预处理步骤(也就是,在目前实施方案的消重策略之前)并入到本发明中的方法论。在这些情况下,缓冲单元将会对应于预处理方法的输出,依靠所述预处理方法、通过使用比特标记符表或频次转换器来转换数据。
因此,在一个实施方案中,这个预处理步骤包括:(i)接收多个数字二进制信号,其中所述数字二进制信号组织在多个小盘中,其中每个小盘的长度为N个比特,其中N是大于1的整数且其中所述小盘具有某个顺序;(ii)将每个小盘划分为具有统一大小的子单元,并从一组X个标记符中指配标记符给每个子单元,以便形成一组多个标记符,其中X小于或等于子单元内不同比特组合的数目,同样的子单元指配有相同标记符,并且至少一个标记符小于子单元的大小;以及(iii)使用所述标记符作为缓冲单元。这个预处理步骤利用比特标记符表,所述比特标记符表可以与散列值表存储在同一个或不同的永久性存储器中。当读取数据时,这些预处理步骤可以按照相反顺序执行,并且是在从NCM中检索数据且NCM上的缓冲单元以中介器所传达的方式重新组合之后执行。当使用标记符作为缓冲单元时,相关人员可以组合或划分标记符,从而形成具有必要大小的缓冲单元。
比特标记符表可以含有全部具有相同大小或全部具有不同大小的标记符。当具有不同大小时,正如下文所述的,这些大小可以由比特串或字节串的预测频次来决定。
再举例而言,当预处理步骤利用比特标记符表时,原始数据会转译成一系列表示原始数据的标记符。原始数据对应于从主机所接收的数据,且因此可以(例如)是单独或共同形成一个或多个文件(如JPEG、PDF、TIFF或WORD文档)的一个或多个小盘。
小盘是按顺序接收的。举例而言,文件可以含有系统连续接收的十个小盘。或者,针对给定文件的多个小盘可以并行或一起传输,条件是它们含有允许其以合适方式彼此重新关联的信息,所述方式允许通过主机的操作系统重新创建和使用所述文件。因此,在一些实施方案中,本发明的方法以接收小盘的相同顺序来生成标记符。因此,当主机想要检索文件时,对应的检索方法论将会以相同顺序来调回编码数据,并按照合适顺序将所述编码数据解码成小盘。
可选地,在编码之前,系统可以将小盘划分为比特群组,也称为子单元,其中每个子单元的长度为A个比特。如果系统将小盘划分为子单元,那么这些子单元可以与比特标记符表进行比较。如果系统并未将小盘划分为子单元,那么每个小盘便可以与比特标记符表进行比较。
比特标记符表使独特组的比特与独特标记符相互关联。在一些实施方案中,比特标记符表含有标记符而用于使用子单元时具有大小A的每个独特比特串,或不使用子单元时具有大小N的每个独特比特串。因此,在这种方法下,计算机程序可以接收一组小盘作为输入。所述计算机程序随后可以将每个小盘划分为具有相同大小且每个的长度为A个比特的Y个子单元,其中A/8是整数。对于每个独特的A而言,可以在所述表内存在标记符。
因此,借助自动化协议,在接收小盘之后,计算机程序产品会致使存取比特标记符表。因此每个小盘或子单元可以充当输入,并且每个比特标记符可以充当输出,从而形成输出的标记符组。所述输出的标记符组可以称为转译数据、译码数据或编码数据。在每个小盘并未再分的实施方案中,每个小盘会接收一个标记符。如果小盘划分为两个子单元,那么所述小盘会转译或编码成两个标记符。因此,计算机程序产品使用会将标记符与输入相互关联的比特标记符表,从而指配对应于每个小盘的至少一个标记符。计算机程序产品可以经过设计,从而使得生成对应于每个单独标记符的不同输出、生成含有一组对应于每个小盘的标记符的不同输出,或者生成含有对应于完整文件的所述组标记符的不同输出。
正如上文所提到的,比特标记符表含有X个标记符。在一些实施方案中,X等于长度为N的小盘内不同的比特组合的数目,条件是所述方法并未将小盘划分为子单元,或者X等于长度为A的子单元内不同的比特组合的数目,条件是所述方法划分小盘。如果文档类型已知或预期具有比针对给定长度子单元或小盘的所有比特组合少,那么X(标记符的数目)可以小于可能的比特组合的实际数目。举例而言,在一些实施方案中,所有比特标记符都具有相同大小,并且比特标记符表内的比特标记符的数目等于大小为N或A的比特串内的比特组合的数目。在其它实施方案中,所有比特标记符都具有相同大小,并且比特标记符表内的比特标记符的数目小于大小为N或A的比特串内的比特组合数目的90%、小于其80%、小于其70%或者小于其60%。
举例而言,在一些是实施方案中,每个小盘指配有由多个0和/或1组成的代码(也就是标记符)。在其它实施方案中,每个小盘划分为多个子单元,其中每个子单元指配有由多个0和1组成的代码(也就是标记符)。子单元可以由长度A界定,其中N/A=Y且Y为整数。如果任何子单元并不具有此数目的比特,例如,一个或多个子单元比系统经过配置而接收为输入的比特具有更小数目的比特,那么系统便可以添加比特,例如0,直到所有子单元具有相同大小。此步骤可以(例如)在小盘划分为子单元之后,并且在没有首先进行检查来查看是否所有小盘都具有相同大小的情况下执行。或者,且正如上文所描述的,此步骤可以在将小盘划分为子单元之前,在小盘层面上执行。
正如上文的描述所表明的,所述算法可以被配置来将比特串转译成一组编码数据,并且所述算法可以经过设计,从而使得比特串对应于小盘或对应于小盘的子单元。优选地,所述组编码数据小于从主机或客户端所接收的文件。然而,无论所述组编码数据是否小于起初数据,所述组编码数据都能够转回成文件的小盘。正如本领域普通技术人员将会认识到的,从主机接收而用于存储的数据将是原始数据,并且因此可以对应于任何文档类型。标记符的输出可以按照允许它们进行组合来形成用户供应缓冲单元以便输入到散列值算法中的顺序,正如上文所描述的。
编码可以服务于两个独立目的。第一,通过编码用于存储的数据,会增强安全性。只有知道代码(也就是对比特标记符表具有访问权限)的个人或实体才能够对所述数据进行解码并且重新构建文档。第二,如果使用比起初文档更少的比特来创建代码,那么便会需要更少的存储空间,并且可以节约成本。
对于表内的至少多个独特比特组合而言,优选地,如果系统并未将小盘划分为子单元,那么标记符便小于小盘长度N,或者,如果系统确实将小盘划分为子单元,那么标记符便小于子单元长度A。优选地,如果系统并未将小盘划分为子单元,那么不会有任何标记符大于小盘长度N,或者,如果系统确实将小盘划分为子单元,那么不会有任何标记符大于子单元长度A。在一些实施方案中,所有标记符都小于N或者小于A。另外,在一些实施方案中,每个标记符都可以具有相同大小,或者两个或两个以上标记符可以具有不同大小。
正如上文所描述的,比特标记符表可以针对原始数据以随机或非随机的方式将标记符指配给比特串,并且比特标记符可以具有统一或不统一的大小。然而,相关人员可以不使用如上文所述的比特标记符表,而使用频次转换器。因此,相关人员可以将更小的标记符指配给预期更为频繁地出现在文档类型或一组文档中的原始数据。这个策略利用如下事实:全部信息的大约80%是包含在最频繁子单元的大约最靠前的20%内。换句话来说,对应于数据的子单元是高度重复的。
在一些实施方案中,对于具有不同大小的每批多个转换比特串而言,存在长度为A个比特的第一转换比特串以及长度为B个比特的第二转换比特串,其中A<B,并且所述第一转换比特串中的所述A个比特的身份与所述第二转换比特串中的前A个比特的身份并不相同。当使用来自比特标记符表或频次转换器的标记符时,在它们具有不同大小的情况下,它们必须进行格式化,从而使得系统可以知道一个标记符结束的地方以及下一个标记符开始的地方。这可以(例如)通过下述操作来完成:设置最小标记符大小,并进行读取分析来查询每个具有最小大小的比特串在所述表或转换器内是否为独特的,而且,如果不是独特的,便继续通过读取额外比特而使比特串增大,并重复对每个额外比特的查询。
信息可以进行转换,并且输出代码可以被配置成小于输入,原因在于标记符用来表示比特群组。因此,优选地在表内,标记符中的至少一个标记符、多个标记符、至少50%、至少60%、至少70%、至少80%、至少90%或至少95%在大小上小于子单元。然而,不存在任何技术障碍来使得转换数据与从主机所接收的数据,或根据散列函数值算法而生成的数据,具有相同大小或比其更大。
根据另一实施方案,所述预处理步骤包括:(i)接收具有N个字节的I/O流(通过使用(例如)I/O协议);(ii)将所述N个字节分割成具有X个字节的片段单元;(iii)将加密散列函数(数值算法)应用到具有X个字节的每个片段单元,以便针对具有X个字节的每个片段单元来形成一个生成散列函数值;(iv)存取相关性文件,其中所述相关性文件使所存储的具有Y个比特的散列函数值与多个X字节存储序列中的每个序列关联,并且:(a)如果针对具有X个字节的片段单元的所述生成散列函数值是处于所述相关性文件中,那么便使用所存储的具有Y个比特的散列函数值作为用户供应缓冲单元;以及(b)如果针对所述具有X个字节的片段单元的所述生成散列函数值并未处于所述相关性文件中,那么便将所述具有Y个比特的生成散列函数值与所述具有X个字节的片段单元一起存储在所述相关性文件中,并使用所述生成散列函数值作为用户供应缓冲单元。
当使用这个预处理散列值算法时,相关人员需要解决它们发生冲突的可能性。作为上文所述的用于消重的方法(其中保持和存储最近的散列值关联性)的替代方法,在这个可选预处理步骤中,相关人员可以使用冲突解决模块,从而使得,在生成与相关性文件中的存储散列函数值相同的散列函数值,但对于这个散列函数值而言用户供应小盘不同于存储小盘的情况下,某个方法会致使存在不同的Z个比特与所述存储散列函数值和所述生成散列函数值相关联。这个技术在2013年6月3日提交的美国专利申请第13/908,239号中加以描述,所述申请的全部内容以引用的方式并入本文中。
因此,这个预处理步骤可以利用第一散列值表,并且,对于不存在冲突的所有散列函数值而言,关联Z个比特且所述Z个比特是(例如)8至16个0的统一长度。举一个非限制性示例,当具有8个字节的校验和并未与之前存储的校验和冲突时,所述方法可以在所述校验和的末端处关联8个0。在识别冲突(例如,不同的片段单元与相同校验和关联)后,最新校验和可以指配有不同的Z值。因此,如果存储在相关性文件中的Z值为00000000,那么针对第一冲突校验和的Z值便可以为00000001,并且应当存在另一冲突校验和00000010。如果存在额外的冲突校验和,那么每个冲突校验和便可以在冲突校验和被识别时指配有下一个Z值。因此,可以在存取相关性文件之后且只有新生成的散列值已经处于相关性文件内的情况下,才会作为检查来访问冲突模块。冲突模块随后会确定是否存在冲突,或者所述校验和与来自接收文件的片段单元是否已经在相关性文件内彼此关联。这些扩展文件可以用作替代方式来替换或重写存储散列值与存储缓冲单元的关联性。这些带有扩展的校验和可以组合成必要大小来形成作为用户供应缓冲单元的输入。
在预处理步骤使用散列值算法的任何情况下,将要应用的第一散列值算法可以称为利用第一散列值表的第一散列值算法或预处理散列值算法,并且第二散列值算法可以称为利用第二散列值表的消重散列值算法或第二散列值算法。当预处理散列值算法和第二散列值算法都使用时,正如上文所提到的,优选地,为了解决在使用消重散列值算法时的冲突,对应散列值表通过优先选择最近的关联性而在冲突关联性之间做出抉择,然而,为了解决在使用预处理散列值算法时的冲突,对应散列值表使用上文所述的扩展方法。
当使用预处理技术时,输出(例如,比特标记符)可以与缓冲单元具有相同大小。在一些实施方案中,比特标记符可以大于缓冲单元的大小。在这些情况下,系统可以将它们分割来形成缓冲单元,或者包含默认模块,所述默认模块拒绝任何大于编码针对的数据的比特标记符,而是使用起初的原始数据来形成缓冲单元,从而绕过对比特标记符表的存取。在其它实施方案中,比特标记符可以更小,并且需要组合来形成缓冲单元或形成缓冲以便分割成缓冲单元。这些步骤可以根据计算机程序产品内的模块,而在服务器上执行、在云中执行或者通过CPU来执行。
如果数据预处理是写入过程的一部分,那么数据后处理必须是读取过程的一部分。与本发明的消重步骤的读取不同,后处理步骤与预处理步骤是对称的,但是以相反的顺序执行。
另外,本发明的各种实施方案可以与其它用于保护数据免受损失的方法组合使用。在某些实施方案中,相关人员可以使用两个中介器来促进数据备份。举例而言,在第一中介器中,相关人员可以使存储在第一记录上的数据文件与文件名相互关联。正如上文所描述的,第一中介器被配置成允许识别文件名的用户或实体来从记录介质检索数据文件。
可以执行数据保护协议,从而生成第二中介器。第二中介器将会是第一中介器在时间T1上的精确复本。因此,在时间T1上,第一中介器和第二中介器都将指向第一记录介质上的相同LBA。
在时间T1之后,例如在时间T2上,主机可以试图更新其认为是存储在(例如)给定扇区或扇区群集上的给定位置中的文件。主机将不会更改第一存储地址上所存储的数据。不是致使改写NCM上的信息,而是第一中介器可以生成与主机认为是更新后文件的数据相对应的新相关性条目。因为写入在NCM上的大多数缓冲单元(即便不是全部)都是独特条目,所以中介器上的新相关性将会仅仅针对与起初相关性中的缓冲单元不同的缓冲单元,而不同于起初相关性。因此,在针对文件(A)的时间T0上,第一中介器可以关联下述真实LBA:200、201、202、203、204、205、206。在T1上,可以制作中介器的复本。在T2上,用户可以尝试更新文件(A)。在第一中介器上,可以保存新相关性,所述新相关性指向下述真实LBA:200、201、310、203、204、205、206。然而,第二中介器将不会改变。因此,这两个中介器就其所指向的位置而言是不同的。早先保存的相关性可以在第一中介器上渲染为不活动的,或者删除或重写。
使用这两个中介器,将会允许相关人员提供数据在T1上存在时的快照,而不会致使主机需要更新其文件系统来指示正存储T1和T2上都存在过的文件。因此,快照会锁定时间T1上存储的所有数据文件,并且防止任何人删除或改写这些物理文件。然而,如果主机想要修正这些文件,那么主机可以在持有正在修正文件的印象下工作,事实上这时仅仅存储文件新的部分,并且制作新的中介器条目。
正如上文所表明的,这种方法可以由包括第一中介器、第二中介器和非高速缓存器存储介质的系统来实施。第一中介器、第二中介器和记录介质中的每一者可以存储在单独装置上或者由单独装置形成,所述单独装置包括非暂时性介质、基本上由非暂时性介质组成或者由非暂时性介质组成。另外,在系统内,中介器和记录介质可操作性地彼此耦接,并且可选地耦接至一个或多个计算机或CPU,所述一个或多个计算机或CPU存储指令以便致使它们执行其预期功能,并在网络上借助一个或多个门户来与一个或多个主机进行通信。此外,尽管这个实施方案是结合两个中介器的使用来描述的,但是相关人员也可以使用同一中介器的两个区段来实施系统,而不是使用两个单独中介器。
用于备份数据的前述系统是在两个中介器的情境中加以描述的。然而,也可以使用两个以上的中介器来捕获存储文件或文件版本的历史数据。举例而言,可以使用至少三个、至少四个、至少五个、至少十个中介器,等等。另外,主机可以使得中介器在有规律间隔上(例如,每周、每月、每个季度或每年)或者在不规律间隔上(例如根据需要)获取快照。
根据另一种用于备份数据的方法,可以制作非高速缓存器介质的克隆形式。在这种方法中,在第一中介器中,相关人员使多个文件名与存储在非高速缓存器存储介质上的数据的多个位置相互关联。第一中介器被配置成允许识别特定文件名的用户来从第一非高速缓存器存储介质检索对应于所述特定文件名的数据文件。特定文件的一部分或整个特定文件可以存储在第一扇区或扇区群集中。
相关人员可以将所述多个数据文件(或第一非高速缓存器存储介质的所有数据文件)复制到第二非高速缓存器存储介质和第二中介器。第二中介器是第一中介器在时间T1上的复本,并且可操作性地耦接至第二非高速缓存器存储介质。在时间T1之后的时间T2上,用户可以指引系统来保存第一非高速缓存器存储介质上的所述第一扇区或扇区群集中所存储的数据文件的修正。仅仅新的缓冲单元(或未与散列值主动进行关联的缓冲单元)会添加到第一非高速缓存器存储介质,并且不会改写第一非高速缓存器存储介质上的数据。相反,新相关性会写入在第一中介器上。不会对第二中介器或第二非高速缓存器存储介质做出任何更改。用户在时间T2之后请求文件时,他或她将会仔细查看第一中介器并检索文件的最近存储版本。然而,系统管理员会对存储在第二非高速缓存器介质上的早先版本具有存取权限,并且可以通过仔细查看第二中介器来检索早先版本。
这种方法可以由包括第一中介器、第二中介器、第一非高速缓存器存储介质以及第二非高速缓存器存储介质的系统来实施。用于存储数据文件的第一中介器、第二中介器以及第一和第二记录介质中的每一者可以存储在单独装置上,所述单独装置包括非暂时性介质、基本上由非暂时性介质组成或者由非暂时性介质组成。在一些实施方案中,存储在第一非高速缓存器介质中的最近的文件,与第二非高速缓存器介质内的遗留文件具有相同的LUN。
本说明书中所描述的各种实施方案的特征中的任何特征,都可以与结合所公开的任何其它实施方案来描述的特征联合使用,除非另有说明。因此,结合各种或特定实施方案来描述的特征不应解释为不适于结合本文所公开的其它实施方案,除非上下文中明确陈述或暗含此类排他性。
Claims (18)
1.一种用于将数据存储在非高速缓存器记录介质上的方法,所述方法包括:
i.接收指令来将数据写入到非高速缓存器记录介质,其中所述指令包括用户感知逻辑区块地址和用户供应缓冲,其中,所述用户供应缓冲是原始数据;
ii.将所述用户供应缓冲划分为用户供应缓冲单元;
iii.将加密散列函数应用于每个用户供应缓冲单元,从而针对每个用户供应缓冲单元来生成生成散列值;
iv.激活包括算法的计算机程序产品,所述算法致使所述计算机程序产品存取散列值表并确定每个生成散列值是否与所述散列值表内的散列值重复,其中所述散列值表使多个存储散列值中的每个存储散列值与不同存储缓冲单元以及真实逻辑区块地址相关联;以及
A.如果所述生成散列值并不处于所述散列值表内,那么便将所述用户供应缓冲单元写入到非高速缓存器记录介质中的区块,更新所述散列值表以便包括所述用户供应缓冲单元、所述生成散列值以及所述用户供应缓冲单元所存储的真实逻辑区块地址的相关性,并在中介器上使与所述用户供应缓冲已经写入的位置相对应的所述真实逻辑区块地址和用于所述用户供应缓冲的所述用户感知逻辑区块地址相互关联;并且
B.如果所述生成散列值是与所述散列值表内的存储散列值重复,那么便查询是否存在冲突,其中冲突定义为同一散列值与存储缓冲单元以及所述用户供应缓冲单元相关联且所述存储缓冲单元和所述存储缓冲用途以及所述用户供应缓冲单元具有不同值的情形,而且
a.如果存在冲突,那么便将所述用户供应缓冲单元写入到所述非高速缓存器记录介质中的区块,渲染不活动的或删除所述散列值表内所述存储缓冲单元与所述存储散列值之间的关联,更新所述散列值表以便包括所述用户供应缓冲单元、所述生成散列值和所述用户供应缓冲单元所存储的真实逻辑区块地址的相关性,并在所述中介器上写入与所述用户供应缓冲单元已经写入的位置相对应的所述真实逻辑区块地址以及所述用户感知逻辑区块地址,以及
b.如果不存在冲突,那么便在所述中介器上写入存储在所述非高速缓存器记录介质上的、与所述用户生成缓冲单元相同的缓冲单元的真实逻辑区块地址,并使所述真实逻辑区块地址与用于所述用户供应缓冲的所述用户感知逻辑区块地址相互关联,而并不在所述非高速缓存器介质上写入所述用户供应缓冲单元。
2.根据权利要求1所述的方法,其还包括针对多个用户供应缓冲单元中的每个单元来重复(iii)至(iv),其中所述多个用户供应缓冲单元共同对应于文件。
3.根据权利要求1所述的方法,其中所述用户供应缓冲由512个字节至2MB字节组成。
4.根据权利要求1所述的方法,其中对于用户感知逻辑区块地址而言,所述中介器多次关联同一个真实逻辑区块地址。
5.根据权利要求1所述的方法,其中所述缓冲单元大小为512B或4K。
6.根据权利要求5所述的方法,其中所述散列值大小为8个字节或16个字节。
7.根据权利要求1所述的方法,其中所述用户供应缓冲单元是通过预处理来形成,其中所述预处理包括:(i)接收多个数字二进制信号,其中所述数字二进制信号组织在多个小盘中,其中每个小盘的长度为N个比特,其中N是大于1的整数且其中所述小盘具有某个顺序;(ii)从一组X个标记符中指配标记符给每个小盘,以便形成一组多个标记符,其中X等于或小于小盘内不同比特组合的数目,同样的子单元指配有相同标记符;以及(iii)使用所述标记符作为缓冲单元。
8.根据权利要求1所述的方法,其中所述用户供应缓冲单元是通过预处理来形成,其中所述预处理包括:(i)接收多个数字二进制信号,其中所述数字二进制信号组织在多个小盘中,其中每个小盘的长度为N个比特,其中N是大于1的整数且其中所述小盘具有某个顺序;(ii)将每个小盘划分为具有统一大小的子单元,并从一组X个标记符中指配标记符给每个子单元,以便形成一组多个标记符,其中X等于或小于子单元内不同比特组合的数目,同样的子单元指配有相同标记符;以及(iii)使用所述标记符作为缓冲单元。
9.根据权利要求8所述的方法,其中至少一个标记符在大小上小于子单元。
10.根据权利要求7所述的方法,其中步骤(ii)包括通过预处理计算机程序存取比特标记符表。
11.根据权利要求8所述的方法,其中步骤(ii)包括通过预处理计算机程序存取比特标记符表。
12.根据权利要求7所述的方法,其中步骤(ii)包括通过预处理计算机程序存取频次转换器。
13.根据权利要求8所述的方法,其中步骤(ii)包括通过预处理计算机程序存取频次转换器。
14.一种用于存储数据的系统,其中所述系统包括:
(a)永久性存储器,其中所述永久性存储器存储散列值表,所述散列值表被配置来使存储缓冲单元与存储散列值以及真实逻辑区块地址相关联;
(b)中央处理单元,所述中央处理单元包括或可操作性地耦接至存储在非暂时性介质中的计算机程序产品,其中所述计算机程序产品包括可执行代码,所述可执行代码在运行时自动进行下述操作,
i.将散列值算法应用于一个或多个用户供应缓冲单元中的每个单元,以便生成生成散列值,所述用户缓冲单元从用户供应缓冲划分得到,其中所述用户供应缓冲是原始数据;和
ii.确定所述生成散列值是否为所述散列值表内的、与存储缓冲单元相关联的存储散列值的重复,并且如果是,便确定是否存在冲突,其中所述冲突定义为散列值是与两个不同缓冲单元相关联,而且如果存在冲突,便更新所述散列值表,以便致使所述散列值表内的所述散列值与所述用户供应缓冲单元相关联,而不与所述存储缓冲单元相关联;
(c)非高速缓存器记录介质,其中所述非高速缓存器记录介质被配置用于区块级存储;以及
(d)中介器,其中所述中介器存储真实逻辑区块地址与用户感知逻辑区块地址的相关性。
15.根据权利要求14所述的系统,其中只有出现如下情况,所述计算机程序才会将所述用户供应缓冲单元写入到所述非高速缓存器记录介质:
i.所述生成散列值不是所述散列值表内的所述散列值的重复;或
ii.所述生成散列值是存储散列值的重复,并且存在冲突。
16.根据权利要求14所述的系统,其中对于多个用户文件而言,存在用户感知逻辑区块地址与真实逻辑区块地址的相关性,并且在针对不同文件的多个相关性内,存在相同的真实逻辑区块地址中的一个或多个,但是存在不同的用户感知逻辑区块地址。
17.根据权利要求14至16中任一项所述的系统,其还包括检索模块,其中所述检索模块被配置成通过访问所述中介器并按照所述中介器所传达的顺序重新组合多个缓冲单元来重建数据文件,而不存取散列值表,并且其中所述中介器所传达的所述顺序不同于所述非高速缓存器记录介质上的所述缓冲单元的顺序。
18.一种计算机程序产品,所述计算机程序产品包括非暂时性计算机可读介质,所述非暂时性计算机可读介质包括计算机可读程序,其中所述计算机可读程序在计算机上运行时,会致使所述计算机来实施用于消重和管理文件系统内数据区块的方法,所述方法包括权利要求1至13中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910359196.6A CN110083552A (zh) | 2013-02-01 | 2014-01-31 | 存储数据的减少冗余 |
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 US9467294B2 (en) | 2013-02-01 | 2013-06-03 | Methods and systems for storing and retrieving data |
US13/908,239 | 2013-06-03 | ||
PCT/US2014/014225 WO2014121109A2 (en) | 2013-02-01 | 2014-01-31 | Reduced redundancy in stored data |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910359196.6A Division CN110083552A (zh) | 2013-02-01 | 2014-01-31 | 存储数据的减少冗余 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105190573A CN105190573A (zh) | 2015-12-23 |
CN105190573B true CN105190573B (zh) | 2019-05-17 |
Family
ID=51260352
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480016699.9A Expired - Fee Related CN105190573B (zh) | 2013-02-01 | 2014-01-31 | 存储数据的减少冗余 |
CN201910359196.6A Pending CN110083552A (zh) | 2013-02-01 | 2014-01-31 | 存储数据的减少冗余 |
CN201480016823.1A Expired - Fee Related CN105339904B (zh) | 2013-02-01 | 2014-01-31 | 用于存储和检索数据的方法和系统 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910359196.6A Pending CN110083552A (zh) | 2013-02-01 | 2014-01-31 | 存储数据的减少冗余 |
CN201480016823.1A Expired - Fee Related CN105339904B (zh) | 2013-02-01 | 2014-01-31 | 用于存储和检索数据的方法和系统 |
Country Status (12)
Country | Link |
---|---|
US (2) | US9467294B2 (zh) |
EP (2) | EP2951701A4 (zh) |
JP (4) | JP6352308B2 (zh) |
KR (2) | KR20150121703A (zh) |
CN (3) | CN105190573B (zh) |
AU (2) | AU2014212170A1 (zh) |
BR (1) | BR112015018448A2 (zh) |
CA (2) | CA2900030A1 (zh) |
HK (2) | HK1219155A1 (zh) |
MX (2) | MX2015009954A (zh) |
PH (2) | PH12015501699A1 (zh) |
WO (2) | WO2014121102A2 (zh) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US9628108B2 (en) | 2013-02-01 | 2017-04-18 | Symbolic Io Corporation | Method and apparatus for dense hyper IO digital retention |
US10133636B2 (en) | 2013-03-12 | 2018-11-20 | Formulus Black Corporation | Data storage and retrieval mediation system and methods for using same |
US9519805B2 (en) * | 2013-08-01 | 2016-12-13 | Cellco Partnership | Digest obfuscation for data cryptography |
US10574438B2 (en) * | 2014-02-18 | 2020-02-25 | Nippon Telegraph And Telephone Corporation | Security apparatus, method thereof, and program |
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 |
EP3440549A4 (en) * | 2016-04-04 | 2019-11-13 | Formulus Black Corporation | FAST SYSTEM STATUS CLONING |
CN106230907B (zh) * | 2016-07-22 | 2019-05-14 | 华南理工大学 | 一种社保大数据可视化方法及系统 |
CN107783728B (zh) * | 2016-08-31 | 2021-07-23 | 百度在线网络技术(北京)有限公司 | 数据存储方法、装置和设备 |
EP3767450A1 (en) * | 2016-09-28 | 2021-01-20 | Huawei Technologies Co., Ltd. | Method for deduplication in storage system, storage system, and controller |
CN106528703A (zh) * | 2016-10-26 | 2017-03-22 | 杭州宏杉科技股份有限公司 | 一种重复删除的模式切换方法及装置 |
CN108241710A (zh) * | 2016-12-27 | 2018-07-03 | 中移(苏州)软件技术有限公司 | 一种文件创建方法、装置以及文件查询方法、装置 |
US11341488B2 (en) * | 2017-02-06 | 2022-05-24 | Northern Trust Corporation | Systems and methods for issuing and tracking digital tokens within distributed network nodes |
KR101963822B1 (ko) * | 2017-02-27 | 2019-04-01 | 충남대학교산학협력단 | 프로그램 분류 방법 및 장치 |
US10873781B2 (en) | 2017-06-13 | 2020-12-22 | Comcast Cable Communications, Llc | Video fragment file processing |
US10509771B2 (en) * | 2017-10-30 | 2019-12-17 | AtomBeam Technologies Inc. | System and method for data storage, transfer, synchronization, and security using recursive encoding |
US11232076B2 (en) | 2017-10-30 | 2022-01-25 | AtomBeam Technologies, Inc | System and methods for bandwidth-efficient cryptographic data transfer |
US11366790B2 (en) | 2017-10-30 | 2022-06-21 | AtomBeam Technologies Inc. | System and method for random-access manipulation of compacted data files |
WO2019126072A1 (en) | 2017-12-18 | 2019-06-27 | Formulus Black Corporation | Random access memory (ram)-based computer systems, devices, and methods |
CN108984719B (zh) * | 2018-07-10 | 2021-08-03 | 上海达梦数据库有限公司 | 基于列存储的数据删除方法、装置、服务器及存储介质 |
CN109521954B (zh) * | 2018-10-12 | 2021-11-16 | 许继集团有限公司 | 一种配网ftu定点文件管理方法及装置 |
CN109710668B (zh) * | 2018-11-29 | 2021-05-04 | 中国电子科技集团公司第二十八研究所 | 一种多源异构数据访问中间件构建方法 |
US10725853B2 (en) | 2019-01-02 | 2020-07-28 | 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 |
WO2019228567A2 (en) * | 2019-09-11 | 2019-12-05 | Alibaba Group Holding Limited | 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 (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8200923B1 (en) * | 2008-12-31 | 2012-06-12 | Emc Corporation | Method and apparatus for block level data de-duplication |
CN102609442A (zh) * | 2010-12-28 | 2012-07-25 | 微软公司 | 用于数据去重复的自适应索引 |
Family Cites Families (75)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
BE564376A (zh) | 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 |
EP1158740B1 (en) * | 2000-05-24 | 2009-09-16 | Sony Deutschland GmbH | Quality of Service negotiation |
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 |
EP1779648A1 (en) | 2004-07-29 | 2007-05-02 | Océ-Technologies B.V. | Lossless compression of color image data using entropy encoding |
JP4932726B2 (ja) | 2004-10-06 | 2012-05-16 | パーマビット テクノロジー コーポレイション | データのランダムに命名したブロック用の記憶システム |
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 |
AU2007230901B2 (en) * | 2006-03-24 | 2010-12-16 | University Of Mississippi | High-speed data compression based on set associative cache mapping techniques |
JP2007272826A (ja) * | 2006-03-31 | 2007-10-18 | Sharp Corp | 情報処理装置、情報処理方法、情報処理プログラム、および記録媒体 |
CA2546148A1 (en) * | 2006-05-09 | 2007-11-09 | Nikolajs Volkovs | Method, system and computer program for polynomial based hashing and message authentication coding with separate generation of spectrums |
US7962499B2 (en) * | 2006-08-18 | 2011-06-14 | Falconstor, Inc. | System and method for identifying and mitigating redundancies in stored data |
AU2006204634B2 (en) | 2006-08-31 | 2009-10-29 | Canon Kabushiki Kaisha | Runlength encoding of leading ones and zeros |
JP2008165293A (ja) * | 2006-12-27 | 2008-07-17 | Seiko Epson Corp | データ検索装置、デバイス管理装置、データ検索方法、およびコンピュータプログラム |
JP4990066B2 (ja) * | 2007-08-21 | 2012-08-01 | 株式会社日立製作所 | 論理ボリュームのペアを利用したデータ保存の方式を変更する機能を備えたストレージシステム |
US9413825B2 (en) | 2007-10-31 | 2016-08-09 | Emc Corporation | Managing file objects in a data storage system |
GB0721648D0 (en) * | 2007-11-05 | 2007-12-19 | Roke Manor Research | Internet data processing systems |
US20090169001A1 (en) | 2007-12-28 | 2009-07-02 | Cisco Technology, Inc. | System and Method for Encryption and Secure Transmission of Compressed Media |
US8214425B2 (en) | 2008-01-29 | 2012-07-03 | Mitel Networks Corporation | System and method for storing a program using partial compression |
JP4814999B2 (ja) | 2008-01-31 | 2011-11-16 | 富士通株式会社 | データ圧縮・復元方法及び圧縮・復元プログラム |
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 |
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 | 符号化装置、復号装置、情報処理システム、符号化方法およびプログラム |
US9900150B2 (en) | 2009-10-30 | 2018-02-20 | International Business Machines Corporation | Dispersed storage camera device and method of operation |
JP4892072B2 (ja) * | 2010-03-24 | 2012-03-07 | 株式会社東芝 | ホスト装置と連携して重複データを排除するストレージ装置、同ストレージ装置を備えたストレージシステム、及び同システムにおける重複排除方法 |
JP5594828B2 (ja) * | 2010-07-21 | 2014-09-24 | 学校法人東京電機大学 | データ分散保管装置及び方法及びプログラム及び記録媒体 |
US8831221B2 (en) * | 2010-09-28 | 2014-09-09 | Lsi Corporation | Unified architecture for crypto functional units |
US9104326B2 (en) | 2010-11-15 | 2015-08-11 | Emc Corporation | Scalable block data storage using content addressing |
US8918607B2 (en) | 2010-11-19 | 2014-12-23 | International Business Machines Corporation | Data archiving using data compression of a flash copy |
US20120239860A1 (en) | 2010-12-17 | 2012-09-20 | Fusion-Io, Inc. | Apparatus, system, and method for persistent data management on a non-volatile storage media |
US9170882B2 (en) * | 2010-12-22 | 2015-10-27 | Cleversafe, Inc. | Retrieving data segments from a dispersed storage network |
JP5561425B2 (ja) * | 2011-02-28 | 2014-07-30 | 日本電気株式会社 | ストレージシステム |
US8539008B2 (en) | 2011-04-29 | 2013-09-17 | Netapp, Inc. | Extent-based storage architecture |
US8620865B2 (en) | 2011-06-24 | 2013-12-31 | Netapp, Inc. | System and method for providing a unified storage system that supports file/object duality |
US20140082324A1 (en) * | 2012-09-14 | 2014-03-20 | Reuven Elhamias | Method and Storage Device for Using File System Data to Predict Host Device Operations |
US20140223118A1 (en) | 2013-02-01 | 2014-08-07 | Brian Ignomirello | Bit Markers and Frequency Converters |
US10133636B2 (en) | 2013-03-12 | 2018-11-20 | Formulus Black Corporation | Data storage and retrieval mediation system and methods for using same |
-
2013
- 2013-06-03 US US13/908,239 patent/US9467294B2/en active Active
-
2014
- 2014-01-31 AU AU2014212170A patent/AU2014212170A1/en not_active Abandoned
- 2014-01-31 WO PCT/US2014/014209 patent/WO2014121102A2/en active Application Filing
- 2014-01-31 MX MX2015009954A patent/MX2015009954A/es unknown
- 2014-01-31 MX MX2015009953A patent/MX2015009953A/es unknown
- 2014-01-31 CN CN201480016699.9A patent/CN105190573B/zh not_active Expired - Fee Related
- 2014-01-31 CA CA2900030A patent/CA2900030A1/en not_active Abandoned
- 2014-01-31 AU AU2014212163A patent/AU2014212163A1/en not_active Abandoned
- 2014-01-31 BR BR112015018448A patent/BR112015018448A2/pt not_active IP Right Cessation
- 2014-01-31 WO PCT/US2014/014225 patent/WO2014121109A2/en active Application Filing
- 2014-01-31 JP JP2015556178A patent/JP6352308B2/ja not_active Expired - Fee Related
- 2014-01-31 CA CA2900034A patent/CA2900034A1/en not_active Abandoned
- 2014-01-31 JP JP2015556181A patent/JP6345698B2/ja not_active Expired - Fee Related
- 2014-01-31 EP EP14745861.6A patent/EP2951701A4/en not_active Ceased
- 2014-01-31 EP EP14745756.8A patent/EP2951703B1/en active Active
- 2014-01-31 CN CN201910359196.6A patent/CN110083552A/zh active Pending
- 2014-01-31 KR KR1020157023746A patent/KR20150121703A/ko not_active Application Discontinuation
- 2014-01-31 CN CN201480016823.1A patent/CN105339904B/zh not_active Expired - Fee Related
- 2014-01-31 KR KR1020157023747A patent/KR20150119880A/ko not_active Application Discontinuation
-
2015
- 2015-07-31 PH PH12015501699A patent/PH12015501699A1/en unknown
- 2015-07-31 PH PH12015501698A patent/PH12015501698A1/en unknown
-
2016
- 2016-06-20 HK HK16107089.9A patent/HK1219155A1/zh unknown
- 2016-06-20 HK HK16107090.6A patent/HK1219156A1/zh unknown
- 2016-10-05 US US15/286,331 patent/US9584312B2/en active Active
-
2018
- 2018-05-23 JP JP2018099121A patent/JP2018152116A/ja active Pending
- 2018-06-06 JP JP2018108556A patent/JP2018152126A/ja active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8200923B1 (en) * | 2008-12-31 | 2012-06-12 | Emc Corporation | Method and apparatus for block level data de-duplication |
CN102609442A (zh) * | 2010-12-28 | 2012-07-25 | 微软公司 | 用于数据去重复的自适应索引 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105190573B (zh) | 存储数据的减少冗余 | |
CN103635900B (zh) | 基于时间的数据分割 | |
US20230013281A1 (en) | Storage space optimization in a system with varying data redundancy schemes | |
US8793466B2 (en) | Efficient data object storage and retrieval | |
US9659047B2 (en) | Data deduplication utilizing extent ID database | |
EP3376393B1 (en) | Data storage method and apparatus | |
US11580162B2 (en) | Key value append | |
CN103562914B (zh) | 节约资源型扩展文件系统 | |
CN112889034A (zh) | 对数据块的内容驱动的分布进行擦除编码 | |
US20190146881A1 (en) | Data storage and retrieval mediation system and methods for using same | |
CN107590019B (zh) | 一种数据存储的方法和装置 | |
JP2016536694A (ja) | 自律的メモリ検索のための方法及びシステム | |
TW201702860A (zh) | 自主空間壓縮之儲存裝置以及方法 | |
US20130262799A1 (en) | Control method and storage device | |
CN116848517A (zh) | 使用基于数据指纹的数据地址的高速缓存编索引 | |
CN111158606B (zh) | 存储方法、装置、计算机设备和存储介质 | |
US10511665B2 (en) | Efficient resource reclamation after deletion of slice from common file |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1219155 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190517 Termination date: 20220131 |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1219155 Country of ref document: HK |