存储数据的减少冗余的制作方法

文档序号:9438900阅读:429来源:国知局
存储数据的减少冗余的制作方法
【专利说明】存储数据的减少冗余 发明领域
[0001] 本发明涉及数据的存储。
[0002] 发明背景
[0003] 二十一世纪已经见证了人们和公司生成和存储的数字化信息的量成指数级增长。 这类信息由通常存储在磁性表面(如磁盘)上的电子数据组成。这些磁盘含有尺寸为亚微 米并且能够存储数条单独二进制数据的较小区域。
[0004] 在任何给定实体所存储的巨量数据内,经常存在信息的明显重复。举例而言,相同 的公司信头可以出现在数千个文档中,并且对应于这个数据的每个文件将含有针对信头进 行编码的比特。历史上,许多实体已经接受这类重复存在于它们的文件中,以及相同信息的 冗余存储的无效是开展业务的成本。
[0005] 因为存储成本不断增加以及存储的可用性不断降低,所以众多实体已经开始探究 某些方式来供存储比文件内或文件之间所有重复信息更少的信息。理论上,力图避免重复 信息的存储或最小化重复信息存储的次数的实体,可以力图识别其数据集内的独特比特或 字节样式,并且以最小的次数来存储这些独特比特或字节样式。为了执行这些方法,在准备 新的文件用于存储时,这些文件内的信息将会与已存储的参考信息集进行比较,并且,只有 正在考虑的比特或字节样式是独特的,其才会被存储。如果所述比特或字节样式不是独特 的,那么便会用参考数据来取代冗余数据,所述参考数据在大小上小于指向所存储数据的 数据,所述数据是存储数据的重复。
[0006] 减少重复信息存储的次数的目标面临很多挑战,包括但不限于:(1)保持检查冗 余的足够速度;(2)保持数据重建而便于检索的足够速度;(3)确保在检查冗余或存储对应 于最初文件的信息的过程中数据不会丢失;(4)针对存储信息未经授权的存取进行保护; 以及(5)提供可以与获取数据快照、克隆数据和恢复数据中的一个或多个操作(即便不是 所有这些操作)结合使用的有效技术和方法。本发明的各种实施方案的意图在于克服这些 挑战中的一个或多个挑战。
[0007] 发明概述
[0008] 本发明提供方法、系统和计算机程序产品,用以改善数据存储和检索的效率,而同 时最小化冗余数据多次不必要存储的程度。通过使用本发明的各种实施方案,相关人员可 以有效地存储和存取数据。借助本发明的这些各种实施方案,相关人员可以变换数据和/ 或更改变换后或转换后数据所存储的物理装置。这可以借助使用计算机的自动化过程来完 成,所述计算机包括或可操作性地耦接至计算机程序产品,在运行时,所述计算机程序产品 执行本发明方法或过程中的一个或多个方法或过程。这些方法或过程可以(例如)体现在 计算机算法或脚本中或者包括所述计算机算法或脚本,并且可选地由系统借助一个或多个 模块来执行。
[0009] 根据第一实施方案,本发明针对一种用于将数据存储在非高速缓存器记录介质上 的方法,所述方法包括:(i)接收指令来将数据写入到非高速缓存器记录介质,其中所述指 令包括用户感知逻辑区块地址("LBA")和用户供应缓冲(user supplied buffer),其中 所述用户供应缓冲由(例如)512个字节至2MB字节或512个字节至64K字节组成;(ii)将 所述用户供应缓冲划分为用户供应缓冲单元,并将加密散列函数应用到所述用户供应缓冲 单元中的每个单元,从而生成一个生成散列值;(iii)激活包括算法的计算机程序产品,所 述算法致使所述计算机程序产品存取散列值表并确定所述生成散列值是否与所述散列值 表内的存储散列值重复,其中所述散列值表使多个存储散列值中的每个存储散列值与不同 存储缓冲单元以及真实逻辑区块地址相互关联;以及(A)如果所述生成散列值并不处于所 述散列值表内,那么便将所述用户供应缓冲单元写入到非高速缓存器记录介质中的区块, 更新所述散列值表以便包括所述用户供应缓冲单元、所述生成散列值以及所述用户供应缓 冲单元所存储的真实逻辑区块地址的相关性,并在中介器上写入与所述用户供应缓冲单元 已经写入的位置相对应的所述真实逻辑区块地址以及用于所述用户供应缓冲的所述用户 感知逻辑区块地址(或多个用户感知逻辑区块地址),并且,(B)如果所述生成散列值是与 所述散列值表内的存储散列值重复,那么便查询是否存在冲突,其中冲突定义为同一散列 值与存储缓冲单元以及当前用户供应缓冲单元相关联且所述两个缓冲单元具有不同内容 的情形,而且,(a)如果存在冲突,那么便将所述用户供应缓冲单元写入到所述非高速缓存 器记录介质中的区块,渲染不活动的或删除所述散列值表内所述存储缓冲单元与所述存储 散列值之间的关联,更新所述散列值表以便包括所述用户供应缓冲单元、所述生成散列值 和所述用户供应缓冲单元所存储的真实逻辑区块地址的相关性,并在所述中介器上写入与 所述用户供应缓冲单元已经写入的位置相对应的所述真实逻辑区块地址以及所述用户感 知逻辑区块地址;以及(b)如果不存在冲突,那么便在所述中介器上写入存储在所述非高 速缓存器记录介质上的、与所述用户生成缓冲单元相同的缓冲单元的真实逻辑区块地址, 并使所述真实逻辑区块地址与用于所述用户供应缓冲的所述用户感知逻辑区块地址相互 关联,而并不在所述非高速缓存器记录介质上写入所述用户供应缓冲单元。
[0010] 在步骤(A)中,当写入所述用户供应缓冲单元时,本领域普通技术人员将会了解, 所述方法要求写入已经确定为并未与所述表中的散列值相关联的用户供应缓冲单元。
[0011] 通常,用户会供应处于流中或者处在比所述散列值算法被配置成接受为其输入的 用户供应缓冲单元更大的单元中的数据(所述用户供应缓冲)。在这些情况下,所述用户供 应缓冲单元可以通过将主机所发送的原始数据分割(也称为分裂)成更小单元来形成,这 些更小单元可以视为所述用户供应缓冲单元,而无论所述主机是否将它们分割或者本发明 的系统或方法是否进行这样的分割。因此,这些分割的用户供应缓冲单元可以充当所述加 密散列函数的输入。举一个非限制性示例,所述用户供应数据可以是16K至2MB,而每个分 割的用户供应缓冲单元为512个字节至4K,例如,512个字节或4K。因此,在一些实施方案 中,所述分割的用户供应缓冲单元不大于分割之前的所述用户供应缓冲的大小的1/4或不 大于1/16或不大于1/64。如果在进入所述散列值算法之前使用所述分割步骤,那么所述散 列值表便会含有所述用户供应缓冲单元和散列值的相关性,向所述存储装置的写入便是分 割的用户供应缓冲单元而不是更大的数据缓冲单元,并且所述中介器会使所述用户供应缓 冲单元的所述用户感知地址(或多个用户感知地址)与所述多个分割的用户供应缓冲单元 相互关联。
[0012] 本发明方法的各种步骤可以存储在一个或多个模块中,例如,缓冲和用户感知逻 辑区块地址接收模块、分割模块、散列值搜索模块、散列值重复分析模块、冲突模块以及写 入模块。类似地,可以存在文件读取和重建模块。这些模块可以按照可执行代码的形式存 储在非暂时性介质中。
[0013] 根据第二实施方案,本发明提供一种用于存储数据的系统,其中,所述系统包括: (a)永久性存储器,其中所述永久性存储器存储散列值表,所述散列值表被配置来使存储 缓冲单元与存储散列值以及真实逻辑区块地址相关联;(b)中央处理单元,所述中央处理 单元包括或可操作性地耦接至存储在非暂时性介质中的计算机程序产品,其中所述计算机 程序产品包括可执行代码,所述可执行代码在运行时自动进行下述操作:(i)将散列值算 法应用于一个或多个用户供应缓冲单元中的每个单元,以便生成一个生成散列值;和(ii) 确定所述生成散列值是否为所述散列值表内的、与存储缓冲单元相关联的存储散列值的重 复,并且如果是,便确定是否存在冲突,其中冲突定义为散列值是与两个不同缓冲单元相关 联,而且如果存在冲突,便更新所述散列值表以便致使所述表内的所述散列值与所述用户 供应缓冲单元相关联,而不与所述存储缓冲单元相关联;(c)非高速缓存器记录介质,其中 所述非高速缓存器记录介质被配置用于区块级存储;以及(d)中介器,其中所述中介器存 储真实逻辑区块地址与用户感知逻辑区块地址的相关性。
[0014] 根据第三实施方案,本发明提供一种计算机程序产品,所述计算机程序产品包括 非暂时性计算机可用介质,所述非暂时性计算机可用介质包括计算机可读程序,其中所述 计算机可读程序在计算机上运行时,会致使所述计算机来实施用于消重和管理文件系统内 数据区块的方法,所述方法包括本发明方法中的任何方法。这些方法可以组织在一个或多 个模块中。
[0015] 借助本发明的各种实施方案,相关人员可以提高数据存储和检索的效率,因为在 大多数情形中,与之前写入的数据重复的较大缓冲单元将不需要重新写入到非高速缓存器 记录介质(NCM)。相反,中介器上的、就大小而言小于与容纳所指向数据的存储单元物理分 离的结构且处于所述结构内的指针,会将所述计算机定向到这个数据的之前存储复本。可 以通过比普遍应用的方法中使用的使用更小的存储空间以及在存储和/或检索信息的活 动中投入更少的时间和努力,而实现效率的提高。此外,在一些实施方案中,本发明使得提 高文档存储和检索的速度。因此,本发明的技术和方法论有助于减少存储数据所需要的物 理存储总量。这通过最小化重复数据写入和存储的次数而完成,并且在存在重复数据的情 况下,通过使用中介器来指向到之前存储数据而完成。
[0016] 附图简述
[0017] 图1为根据本发明实施方案的用于写入数据的方法的表示图。
[0018] 图2为根据本发明方法的用于解决冲突的协议的表示图。
[0019] 图3为根据本发明实施方案的用于读取信息的方法的表示图。
[0020] 发明详述
[0021] 现将详细参考本发明的实施方案,其示例在附图中予以说明。在以下详细描述中, 阐述了许多具体细节以提供对本发明的充分理解。然而,除非上下文中另有指示或暗示,否 则这些细节都是作为示例,并且不应该视为以任何方式来限制本发明的范围。
[0022] 定义
[0023] 除非上下文中另有陈述或暗示,否则下述术语和短语都具有下文所提供的意义。
[0024] 术语"比特"是指二进制数字。其可以具有两个数值中的一个数值。每个数值可 以由O或1表示。
[0025] 术语"区块"是指具有预定长度的数据字节或比特序列。在记录介质上,物理介质 可以划分为由区块大小所界定的单元。记录介质上的每个区块可以通过逻辑区块地址来识 另IJ。在行业中,目前512个字节是区块的标准大小。然而,存在使用4096个字节作为标准 的渐进趋势。另外,正如本领域普通技术人员将会了解的,短语"区块大小"和"扇区大小" 常常被本领域普通技术人员互换使用。
[0026] 短语"可启动性代码"、"可启动性信息"和"可启动性特征"是指提供相应方式来 进入可启动状态并且可以存储在启动扇区上的信息。启动扇区可以含有机器代码,所述机 器代码被配置成由固件加载到RAM (随机存取存储器)中,这又允许启动进程来从存储装置 加载程序或将程序加载到存储装置上。举例而言,主启动记录可以含有定位现用分区并调 用卷启动记录的代码,其可以含有代码来加载和调用操作系统或其它独立程序。
[0027] 短语"缓冲单元"是指具有兼容用作散列值算法输入的大小的一系列比特。缓冲 单元可以与小盘具有相同大小。然而,在一些实施方案中,缓冲单元可以是小盘大小的几分 之一或者是小盘大小的倍数。
[0028] 术语"字节"是指八比特序列。
[0029] 术语"高速缓存器"是指为了将来更快提供数据的请求或出于缓冲的目的而临时 存储数据的位置。Ll高速缓存器(1级高速缓存器)是指(例如)与处理器核心集成的静 态存储器。Ll高速缓存器可以用来在CPU(中央处理单元)多次存取相同数据的情况下提 升数据存取速度。L2高速缓存器(2级高速缓存器)通常比Ll高速缓存器更大,并且,如果 在Ll高速缓存器中寻找但并未发现数据文件,那么便可以在查看外部存储器之前对L2高 速缓存器进行搜索。在一些实施方案中,Ll高速缓存器并不处于中央处理单元内。相反, 其可以位于DDR、DIMM或DRAM内。另外或替代地,L2高速缓存器可以是PCI2. 0/3. 0的一 部分,所述PCI2. 0/3. 0并入到主板中。因此,Ll高速缓存器和L2高速缓存器中的每个高 速缓存器可以处于主板的单独部分中。在一些实施方案中,当实施本发明的方法时,散列值 表存在于L2高速缓存器中。
[0030] 术语"小盘"是指可以对应于扇区群集的一组比特。小盘的大小由存储系统确定, 并且可以具有某个小盘大小。传统上,小盘大小是通过CHS方案得出,所述CHS方案会经由 元组来定址区块,所述元组定义所述区块在硬盘上出现的柱面、磁头和扇区。更近地,小盘 大小已经从逻辑区块地址(LBA)测量中得出。举例而言,小盘大小可以是512B、1K、2K、4K、 81(、161(、321(、641(或1]\^。正如本领域普通技术人员所知晓的,11(= 10248。小盘可以从主 机作为原始数据进行接收。
[0031] 术语"冲突"是指针对不同输入(例如,缓冲单元)出现了生成相同输出的情况, 例如,通过函数(如散列值算法)生成相同的散列值。
[0032] "文件"是相关字节或比特的集合,这些相关字节或比特组合来提供具有某个大小 的文件,而且长度可以用比特或字节来度量。文件可以小于小盘、与小盘具有相同大小或者 大于小盘。
[0033] 短语"文件名"是指允许计算机识别特定文件并将所述文件与其
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1