缓存设备数据的离线去重压缩方法、装置及可读存储介质与流程

文档序号:15229576发布日期:2018-08-21 19:13阅读:186来源:国知局

本发明涉及数据处理技术领域,尤其涉及一种缓存设备数据的离线去重压缩方法、装置及可读存储介质。



背景技术:

压缩算法已经被广泛地应用于计算机系统中来有效地节省存储空间。而且根据各大it公司(比如ibm、emc等)公布的数据,在虚拟机环境下,使用gzip压缩算法可以有效地节省多达一半的存储空间。但是现有的压缩算法具有压缩效率高但是压缩处理速度参差不齐。这是因为压缩算法对于那些已经压缩过的或者是随机化的数据压缩处理速度很慢,计算开销大。这样将压缩算法实时应用在ssd缓存中,会带来io时延抖动和性能下降的问题,从而影响ssd缓存性能效果。

根据idc和gartner提供的数据,在虚拟化环境下,数据中心的数据去重在桌面虚拟化、服务器虚拟化等主要场景可以获得3-8倍的数据去重比收益,可以大幅度降低数据存储设备的成本,提升数据存储效率。但是数据去重需要计算指纹和查找指纹,并增加元数据管理开销,所以将数据去重实时应用在ssd缓存中,也会给ssd缓存增加性能代价。

此外,数据去重和压缩后的数据更新由于数据去重管理和压缩长度的变化,只能做异地更新处理,这带来了数据更新的碎片化问题和空间垃圾回收的难度,这样对数据去重和压缩后的数据读性能和更新操作都带来了io性能下降的影响。



技术实现要素:

本发明实施例提供了一种缓存设备数据的离线去重压缩方法、装置及可读存储介质,用于减少缓存设备去重和压缩对整体存储系统io性能的影响。

本发明实施例第一方面提供了一种缓存设备数据的离线去重压缩方法,包括:

读取缓存设备上预设长度的数据段,判断数据段的修改次数是否大于第一阈值;

若不大于,将数据段划分为预设粒度的数据块,并计算数据块的指纹;

查询缓存设备的指纹库,判断指纹库中是否存在所述指纹;

若存在所述指纹,则确定该数据块为重复数据,并将该数据块的元数据信息存储至缓存设备的元数据区域,元数据信息包括数据块在数据段中的顺序、数据块的物理存储地址及数据块的长度。

优选的,在若存在指纹之后,确定该数据块为重复数据之前,该方法还包括:

计算数据段去重后的分散度;

判断分散度是否大于分散阈值;

若不大于,则触发确定该数据块为重复数据的步骤;

若大于,则将数据段存储至缓存设备的数据区域。

优选的,在读取缓存设备上预设长度的数据段之前,该方法还包括:

判断缓存设备的存储带宽是否大于带宽阈值;

若不大于,则触发读取缓存设备上预设长度的数据段的步骤;

若大于,则执行其他流程。

优选的,在判断数据段的修改次数是否大于第一阈值之后,方法还包括:

若大于第一阈值,则将数据段直接存储至缓存设备的数据区域;

在判断指纹库是否存在指纹之后,该方法还包括:

若不存在所述指纹,则对数据块执行压缩操作,并将压缩后的数据块存储至缓存设备的数据区域,而将压缩后数据块的元数据信息及原数据块的指纹更新至指纹库中,元数据信息包括:数据块压缩后的物理存储地址及数据块压缩后的长度。

优选的,该方法还包括:

判断缓存设备的数据区域及元数据区域的存储量是否超出存储阈值;

若数据区域或元数据区域的存储量超出存储阈值,则按照预设规则淘汰第一数据及第一元数据;

将第一数据及第一元数据存储至第一存储设备中,并更新缓存设备中的数据及元数据。

本发明实施例第二方面提供了一种缓存设备数据的离线去重压缩装置,包括:

读取判断单元,用于读取缓存设备上预设长度的数据段,判断数据段的修改次数是否大于第一阈值;

计算单元,用于在修改次数不大于第一阈值时,将数据段划分为预设粒度的数据块,并计算数据块的指纹;

查询判断单元,用于查询缓存设备的指纹库,判断指纹库中是否存在所述指纹;

去重单元,用于在指纹库中存在指纹时,确定该数据块为重复数据,并将数据块的元数据信息存储至缓存设备的元数据区域,元数据信息包括数据块在数据段中的顺序、数据块的物理存储地址及数据块的长度。

优选的,该去重压缩装置还包括:

去重计算单元,用于计算数据段去重后的分散度;

第一判断单元,用于判断分散度是否大于分散阈值;

第一触发单元,用于在分散度不大于分散阈值时,触发确定该数据块为重复数据的步骤;

第一存储单元,用于在分散度大于分散阈值时,将数据段存储至缓存设备的数据区域。

优选的,该去重压缩装置还包括:

第二判断单元,用于判断缓存设备的存储带宽是否大于带宽阈值;

第二触发单元,用于在存储带宽不大于带宽阈值时,触发读取缓存设备上预设长度的数据段的步骤;

执行单元,用于在存储带宽大于带宽阈值时,执行其他流程。

优选的,该去重压缩装置还包括:

第二存储单元,用于在修改次数大于第一阈值时,将数据段直接存储至缓存设备的数据区域;

第三存储单元,用于在指纹库中不存在所述指纹时,对数据块执行压缩操作,并将压缩后的数据块存储至缓存设备的数据区域,而将压缩后数据块的元数据信息及原数据块的指纹更新至指纹库中,元数据信息包括:数据块压缩后的物理存储地址及数据块压缩后的长度。

优选的,该去重压缩装置还包括:

第三判断单元,用于判断缓存设备的数据区域及元数据区域的存储量是否超出存储阈值;

淘汰单元,用于在数据区域或元数据区域的存储量超出存储阈值时,按照预设规则淘汰第一数据及第一元数据;

回刷更新单元,用于将第一数据及第一元数据存储至第一存储设备中,并更新缓存设备中的数据及元数据。

本发明实施例还提供了一种计算机装置,包括处理器,该处理器在处理存储于存储器上的计算机程序时,用于实现如下的步骤:

读取缓存设备上预设长度的数据段,判断数据段的修改次数是否大于第一阈值;

若不大于,将数据段划分为预设粒度的数据块,并计算数据块的指纹;

查询缓存设备的指纹库,判断指纹库中是否存在所述指纹;

若存在所述指纹,确定该数据块为重复数据块,并将数据块的元数据信息存储至缓存设备的元数据区域,元数据信息包括数据块在数据段中的顺序、数据块的物理存储地址及数据块的长度。

本发明实施例还提供了一种可读存储介质,其上存储有计算机程序,该计算机程序被执行时,用于实现如下的步骤:

读取缓存设备上预设长度的数据段,判断数据段的修改次数是否大于第一阈值;

若不大于,将数据段划分为预设粒度的数据块,并计算数据块的指纹;

查询缓存设备的指纹库,判断指纹库中是否存在所述指纹;

若存在所述指纹,确定该数据块为重复数据块,并将数据块的元数据信息存储至缓存设备的元数据区域,元数据信息包括数据块在数据段中的顺序、数据块的物理存储地址及数据块的长度。

从以上技术方案可以看出,本发明实施例具有以下优点:

本发明实施例中,缓存设备数据的离线去重压缩装置先读取并判断缓存设备上的数据段的修改次数是否大于第一阈值,并在该数据段的修改次数不大于该第一阈值时,将数据段划分为预设粒度的数据块,并在缓存设备的指纹库中存在所述指纹时,确定该数据块属于重复数据,并将数据块的元数据信息存储至所述缓存设备的元数据区域,所述元数据信息包括数据块在数据段中的顺序、数据块的物理存储地址及数据块的长度,本发明实施例在对数据段进行去重操作前,先判断数据段是否属于频繁修改数据,并在修改次数不大于第一阈值时,即该数据段属于非频繁修改数据时,才对数据段执行去重操作,从而避免了直接对频繁修改数据执行去重操作后,频繁修改数据的去重引用问题及数据更新后压缩长度变化,使得数据做异地更新时带来的数据碎片化问题,进而减少了后续数据空间回收的难度和开销,从而减少缓存设备去重和压缩对整体存储系统io性能的影响,并节省缓存设备存储空间。

附图说明

图1为本发明实施例中一种缓存设备数据的离线去重压缩方法的一个实施例示意图;

图2为本发明实施例中一种缓存设备数据的离线去重压缩方法的另一个实施例示意图;

图3为本发明实施例中一种缓存设备数据的离线去重压缩方法的另一个实施例示意图;

图4为本发明实施例中缓存设备及第一存储设备的数据结构和数据区域示意图;

图5为本发明实施例中一种缓存设备数据的离线去重压缩装置的一个实施例示意图;

图6为本发明实施例中一种缓存设备数据的离线去重压缩装置的另一个实施例示意图。

具体实施方式

本发明实施例提供了一种缓存设备数据的离线去重压缩方法、装置及可读存储介质,用于减少缓存设备去重和压缩对整体存储系统io性能的影响。

为方便理解,先对本实施例中的专用术语解释如下:

数据去重:数据去重又称重复数据删除(datadeduplication),是一种应用在存储系统中的全局地识别和消除冗余数据的技术,成为近些年来存储系统研究的热点。数据去重通过计算数据块的安全哈希摘要(比如sha1指纹)来唯一识别数据块,避免了数据的逐个字符的匹配,而且存储系统只需要简单地维护安全哈希摘要的索引表,就可以实现快速方便地识别重复数据,具有良好的可扩展性;重复的数据内容只需要记录相应的数据指针信息即可达到节省存储空间的目的;所以数据去重技术不仅能够极大地节省存储空间从而提高存储设备的资源利用率。

数据压缩:数据压缩也是一种主流的冗余数据消除技术,主要通过编码的方式消除冗余数据信息,即在保证原有数据信息不丢失的前提下,将原始内容进行转换,对于重复的字节序列用更少字节数的编码表示,从而达到消除部分冗余数据并最终节省存储空间的目的。目前应用于存储系统的数据压缩工具主要采纳lz4、lzo等压缩算法。

缓存设备:闪存固态盘(ssd)被广泛用于机械硬盘的缓存,例如ceph和zfs,这主要因为闪存固态盘有良好的随机io性能,而传统的机械硬盘在随机io性能的支持方面表现不佳,同时考虑到ssd的价格昂贵的因素,所以ssd被用于机械硬盘的缓存,可以较好地缓存热点数据,提升存储系统的整体性能。

在现在的云计算和虚拟化环境下,缓存设备(ssd)存在大量的重复冗余数据,通过数据去重和压缩技术可以扩展ssd缓存的逻辑存储空间,提高ssd缓存的整体性能,是目前ssd缓存的研究热点,而将数据去重实时应用在ssd缓存中,会因为数据去重需要计算指纹和查找指纹,而增加元数据管理开销,进而给ssd缓存增加性能代价;而将数据压缩算法实时应用在ssd缓存中,会因现有的压缩算法对已经压缩过的或随机化的数据压缩处理速度慢且计算开销大,而带来io时延抖动和性能下降的问题,从而影响ssd缓存性能效果。

基于将数据去重和压缩实时应用在缓存设备(ssd)中所带来的问题,本发明实施例提供了一种缓存设备数据的离线去重压缩方法、装置及可读存储介质,用于减少缓存设备去重和压缩对整体存储系统io性能的影响。

为方便理解,请参阅图1,本发明实施例中的缓存设备数据的离线去重压缩方法的一个实施例,包括:

101、读取缓存设备上预设长度的数据段,判断数据段的修改次数是否大于第一阈值,若不大于,则执行步骤102,若大于,则执行步骤105;

缓存就是数据交换的缓冲区(称作cache),当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从硬盘中找。由于缓存的运行速度比硬盘快得多,故缓存的作用就是帮助硬件更快地运行。

而磁盘缓存,又称磁盘快取,实际上就是将下载到的数据先保存于系统为软件分配的内存空间中(这个内存空间被称之为“内存池”),当保存到内存池中的数据达到一个程度时,便将数据保存到硬盘中。这样可以减少实际的磁盘操作,有效的保护磁盘免于重复的读写操作而导致的损坏。而闪存固态盘(ssd)被广泛用于机械硬盘的缓存,即处理器将下载到的数据先保存于ssd盘中,而当ssd盘中的数据达到存储阈值时,便将数据保存到硬盘中。而现有的在现在的云计算和虚拟化环境下,缓存设备(ssd)存在大量的重复冗余数据,通过数据去重和压缩技术可以扩展ssd缓存的逻辑存储空间,提高ssd缓存的整体性能,是目前ssd缓存的研究热点,

本实施例对缓存设备上的数据并非直接采用去重和压缩算法,而是在数据存储到缓存设备上以后,对数据的修改次数进行判断,在数据的修改次数不大于第一阈值时,即该数据属于非频繁修改数据时,对该数据执行去重操作,从而避免了直接对频繁修改数据执行去重后,频繁修改数据的去重引用问题及数据更新后压缩长度变化,使得数据做异地更新时带来的数据碎片化问题,进而减少了后续数据空间回收的难度和开销,从而减少缓存设备去重和压缩对整体存储系统io性能的影响。

具体的,为了方便数据的处理,缓存设备数据的离线去重压缩装置可以读取预设长度的数据段,其中预设长度可以为1m或者2m,具体此处对于数据的预设长度,可以根据压缩装置的系统性能以方便数据的处理为目的而进行设计,此处不作具体限制。

而对于数据是否属于频繁修改的类型,可以通过设立计时器,通过计时器记录的预设时间段内(5分钟或10分钟),数据段被写入或读出的次数进行判断,若数据段被写入或读出的次数大于第一阈值(如10次),则判定该数据段属于频繁修改数据,否则属于非频繁修改数据。

102、将数据段划分为预设粒度的数据块,并计算数据块的指纹;

当缓存设备数据的离线去重压缩装置判定数据段为非频繁修改数据,即数据段在预设时段内被修改的次数小于或等于第一阈值时,则对该数据段执行去重操作。

具体的,对数据段的去重操作首先是将数据段划分为预设粒度的数据块,并计算每个数据块的指纹。具体的,数据块的预设粒度可以为4kb的整数倍,即4kb、8kb、16kb、24kb等,此处数据块的大小以系统的处理速度为依据,以提高数据的处理速度为目的进行设置,此处不做具体限制。

因sha-1算法是将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值即为哈希值,哈希值是一段数据唯一且紧凑的数值表示形式,如果散列一段明文且只更改该段落的一个字母,随后的哈希值都将产生不同的值,故要找到散列为同一值的两个不同输入,在计算上是不可能的,所以通过sha-1算法确认的某一散列明文的哈希值可以视为该散列明文的“指纹”,而md5算法与sha-1算法的原理相同,故sha-1及md5算法经常被用于计算数据块的指纹。

103、查询缓存设备的指纹库,判断指纹库中是否存在所述指纹,若存在,则执行步骤104,若不存在,则执行步骤105;

缓存设备数据的离线去重压缩装置(以下简称去重压缩装置)得到数据块的指纹后,查询缓存设备的指纹库,并判断指纹库中是否存储上述数据块的指纹,若存在上述数据块的指纹,则执行步骤104,若不存在上述数据块的指纹,则执行步骤105。

104、确定该数据块为重复数据块,并将数据块的元数据信息存储至缓存设备的元数据区域,元数据信息包括数据块在数据段中的顺序、数据块的物理存储地址及数据块的长度;

若缓存设备的指纹库中有数据块的指纹,则说明该数据块属于重复的数据块,则将所述数据块的元数据信息存储至缓存设备的元数据区域,数据块的元数据信息包括数据块在数据段中的顺序、数据块的物理存储地址及数据块的长度。

其中,数据块的元数据信息是在后期对数据段中各个数据块内容的解压(即数据块内容的恢复)过程中所使用的信息。

具体的,在数据解压过程中,可以根据数据块在数据段中的顺序,从数据块的物理存储地址中按照数据块的长度,依次把各个数据块读取出来,即可恢复数据段的内容。

105、执行其他流程。

当数据段的修改次数大于第一阈值,或缓存设备的指纹库中不存在数据块的指纹时,则执行其他流程,此处不做具体限制。

本发明实施例中,缓存设备数据的离线去重压缩装置先读取并判断缓存设备上的数据段的修改次数是否大于第一阈值,并在该数据段的修改次数不大于该第一阈值时,将数据段划分为预设粒度的数据块,并在缓存设备的指纹库中存在所述指纹时,确定该数据块为重复数据,并将数据块的元数据信息存储至所述缓存设备的元数据区域,所述元数据信息包括数据块在数据段中的顺序、数据块的物理存储地址及数据块的长度,本发明实施例在对数据段进行去重操作前,先判断数据段是否属于频繁修改数据,并在修改次数不大于第一阈值时,即该数据段属于非频繁修改数据时,才对该数据段进行去重操作,从而避免了直接对频繁修改数据执行去重操作后,频繁修改数据的去重引用问题及数据更新后压缩长度变化,使得数据做异地更新时带来的数据碎片化问题,进而减少了后续数据空间回收的难度和开销,从而减少缓存设备去重和压缩对整体存储系统io性能的影响,并节省缓存设备存储空间。

可以理解的是,为了进一步减少数据去重和压缩占据cpu和io资源,对原有存储系统的数据业务的影响,以及进一步减少数据更新和垃圾回收带来的数据更新开销问题,本发明实施例提供了另一个实施例,下面来详细进行说明,请参阅图2,本发明实施例中缓存设备数据的离线去重压缩方法的另一个实施例,包括:

201、判断缓存设备的存储带宽是否大于带宽阈值,若不大于,则执行步骤202,若大于,则执行步骤210;

存储器带宽(memorybandwidth),是指单位时间里存储器所存取的信息量,也称为存储器在单位时间内读出/写入的位数或字节数,体现数据传输速率技术指标(单位:bps,位/秒,或bytes/s,字节/秒),其中,存储器的带宽阈值决定了以存储器为中心的机器获取信息的传输速度,如带宽我们一般用bm表示,若存储周期为tm,每次读/写n个字节,则其带宽

即若存取周期为500ns,每个存取周期可访问16位,则它的带宽为32m位/s。

故为了减少数据去重和压缩占据cpu和io资源,对原有存储系统的数据业务的影响,在读取缓存设备上预设长度的数据段以前,可以先对缓存设备的当前存储带宽进行判断,判定缓存设备的当前存储带宽是否大于带宽阈值,若不大于带宽阈值,则缓存设备可以提供io资源用于数据去重压缩,若大于带宽阈值,则执行步骤210,以减少数据去重和压缩占据cpu和io资源,对原有存储系统的数据业务的影响。

具体的,缓存设备的带宽阈值可以为缓存设备的带宽峰值,也可以为带宽峰值的80%或60%,此处对于带宽阈值的大小不做具体限制。

202、读取缓存设备上预设长度的数据段,判断数据段的修改次数是否大于第一阈值,若不大于,则执行步骤203,若大于,则执行步骤208;

203、将数据段划分为预设粒度的数据块,并计算数据块的指纹;

204、查询缓存设备的指纹库,判断指纹库中是否存在所述指纹,若存在,则执行步骤205,若不存在,则执行步骤209;

需要说明的是,本实施例中的步骤202至204与图1所述实施例中的步骤101至103类似,此处不再赘述。

205、计算数据段去重后的分散度;

当缓存设备中存在数据块的指纹时,则说明该数据块与缓存设备中预先存储的数据内容有重复,可以对该数据块进行去重操作,以减小该数据块在缓存设备中的存储空间,从而增大缓存设备的存储容量。

而本实施例为了进一步减少数据更新和垃圾回收带来的数据更新开销问题,可以先对数据块进行去重判断,并计算数据段去重后的分散度,即该数据段去重后,被分散存储到多少个有物理存储位置的数据块中,得到数据段的分散度后,进一步执行步骤206。

206、判断分散度是否大于分散阈值,若不大于,则执行步骤207,若大于,则执行步骤208;

在得到数据段的分散度后,判断该数据段的分散度是否大于分散阈值(假如分散阈值为4),若该数据段去重压缩后被分散存储到5个有物理存储位置的数据块中,则该数据段的分散度为5,大于分散阈4,这样则可能在后续大规模更新或删除数据时,带来大的更新开销问题,同时也增大了数据空间的回收难度,故缓存设备数据的离线去重压缩装置判定结果为数据段的分散度不大于分散阈值时,执行步骤207;判定结果为数据段的分散度大于分散阈值时,则执行步骤208。

207、确定该数据块为重复数据块,并将该数据块的元数据信息存储至所述缓存设备的元数据区域,元数据信息包括所述数据块在数据段中的顺序、数据块的物理存储地址及数据块的长度;

当数据段的分散度不大于分散阈值时,即该数据段后续更新或删除时,不会增大cpu和缓存设备的更新开销,也不会增大数据空间的后续回收难度,则将所述数据块的元数据信息存储至缓存设备的元数据区域,数据块的元数据信息包括数据块在数据段中的顺序、数据块的物理存储地址及数据块的长度。

其中,数据块的元数据信息是在后期对数据段中各个数据块内容的解压(即数据块内容的恢复)过程中所使用的信息。

具体的,在数据解压过程中,可以根据数据块在数据段中的顺序,从数据块的物体存储地址中按照数据块的长度,依次把各个数据块读取出来,即可恢复数据段的内容。

208、则将数据段直接存储至所述缓存设备的数据区域;

若数据段的修改次数大于第一阈值,则说明该数据段属于频繁修改数据,或对数据块执行去重判断后,计算出数据段的分散度大于分散阈值,而为了避免该数据段后续更新或删除时,增大cpu和缓存设备的更新开销,及增加数据空间的回收难度,则将该数据段直接存储至缓存设备的数据区域。

209、对数据块执行压缩操作,并将压缩后的数据块存储至缓存设备的数据区域,而将压缩后数据块的元数据信息及原数据块的指纹更新至指纹库中,元数据信息包括:数据块压缩后的物理存储地址及数据块压缩后的长度;

若缓存设备中不存在该数据块的指纹,则说明该数据块属于新数据块,则对该数据块执行压缩操作,并将压缩后的数据块存储至缓存设备的数据区域,而将压缩后数据块的元数据信息及原数据块(即压缩前的数据块)的指纹更新至指纹库中,元数据信息包括:数据块压缩后的物体存储地址及数据块压缩后的长度,以便于后期根据元数据信息恢复原数据块的内容。

具体的,数据块的解压过程可以参照现有技术中描述的哈弗曼压缩算法或lz压缩算法,此处不再赘述。

210、执行其他流程。

若缓存设备的当前存储带宽大于带宽预置,则执行其他流程。

可以理解的是,在数据或元数据存储的过程中,缓存设备中的数据区域及元数据区域的可用空间会逐渐减小,当缓存设备上数据区域或元数据区域上存储的数据量或元数据量超出各自的存储阈值时,缓存设备会按照淘汰规则将数据回刷到第一存储设备,以增大缓存设备的容量,其中,第一存储设备的容量大于缓存设备,如第一存储设备可以为机械硬盘,具体的数据处理过程请参阅图3,本发明实施例中缓存设备数据的离线去重压缩方法的另一个实施例,包括:

301、判断缓存设备的数据区域及元数据区域的存储量是否超出存储阈值,若是,则执行步骤302;若否,则执行步骤304;

缓存设备数据的离线去重压缩装置可以定期或不定期,或实时判断缓存设备的数据区域及元数据区域的存储量是否超出各自的存储阈值,若数据区域或元数据区域的存储量超出存储阈值,则执行步骤302,若没超出,则执行其他流程。其中存储阈值可以为缓存设备上数据区域及元数据区域的存储最大值,也可以为数据区域及元数据区域存储最大值的80%或60%,此处对存储阈值的大小不做具体限制。

302、按照预设规则淘汰第一数据及第一元数据;

缓存设备数据的离线去重压缩装置可以按照淘汰算法淘汰出第一数据及第一元数据,并将该第一数据及第一元数据回刷到第一存储设备,其中第一存储设备的存储容量大于缓存设备,如第一存储设备可以为机械硬盘。

具体的淘汰算法可以为lru算法,即计算出缓存设备数据及元数据最近被使用的时间,目前时间最远的数据或元数据被优先淘汰;或lfu算法,即计算出在预设时间段内,数据或元数据被使用次数最少的,优先淘汰,或fifo算法,即判断数据及元数据被存储的时间,其中存储时间最长的优先淘汰。具体的,预设的淘汰规则还可以为opt算法,此处不做具体限制。

303、将第一数据及第一元数据存储至第一存储设备中,并更新缓存设备中的数据及元数据;

当按照预设的淘汰规则淘汰出第一数据或第一元数据后,将第一数据及第一元数据存储至第一存储设备中,并更新缓存设备中的数据及元数据,具体的,缓存设备、第一存储设备的数据结构及数据淘汰过程可以参照图4所示。

需要说明的是,本实施例中的第一数据及第一元数据相互对应,即第一数据为被压缩了的数据段,第一元数据为数据段中被去重了的数据块在原数据段中的顺序、数据块的物体存储地址及数据块的长度,即若按照淘汰规则淘汰出第一数据,则相应的淘汰出第一数据的第一元数据,若按照淘汰规则淘汰出第一元数据,则相应的淘汰出第一元数据对应的第一数据;若按照预设淘汰规则淘汰的第一数据为未压缩的数据段,则直接将该第一数据存储至第一存储设备中即可,则不涉及相应的元数据。

304、执行其他流程。

当缓存设备的数据区域及元数据区域的存储量未超出各自的存储阈值,则缓存设备数据的离线压缩装置在执行正常缓存设备的存储动作时,也可以执行与本压缩方法无关的其他流程。

本发明实施例中,缓存设备数据的离线去重压缩装置先读取并判断缓存设备上的数据段的修改次数是否大于第一阈值,并在该数据段的修改次数不大于该第一阈值时,将数据段划分为预设粒度的数据块,并在缓存设备的指纹库中存在所述指纹时,确定该数据块属于重复数据,并将数据块的元数据信息存储至所述缓存设备的元数据区域,所述元数据信息包括数据块在数据段中的顺序、数据块的物理存储地址及数据块的长度,本发明实施例在对数据段执行去重操作前,先判断数据段是否属于频繁修改数据,并在修改次数不大于第一阈值时,即该数据段属于非频繁修改数据时,才对该数据段进行去重操作,从而避免了直接对频繁修改数据执行去重操作后,频繁修改数据的去重引用问题及数据更新后压缩长度变化,使得数据做异地更新时带来的数据碎片化问题,进而减少了后续数据空间回收的难度和开销,从而减少缓存设备去重和压缩对整体存储系统io性能的影响,并节省缓存设备存储空间。

其次,缓存设备数据的离线去重压缩装置进一步对存储设备的存储带宽及数据段的分散度进行判断,进一步减少了数据去重和压缩占据cpu和io资源,降低了后续数据空间回收的难度和开销,进一步减少了缓存设备去重和压缩对整体存储系统io性能的影响。

上面描述了本发明实施例中的缓存设备数据的离线去重压缩方法,下面来描述本发明实施例中的缓存设备数据的离线去重压缩装置,请参阅图5,本发明实施例中缓存设备数据的离线去重压缩装置的一个实施例,包括:

读取判断单元501,用于读取缓存设备上预设长度的数据段,判断数据段的修改次数是否大于第一阈值;

计算单元502,用于在修改次数不大于第一阈值时,将数据段划分为预设粒度的数据块,并计算数据块的指纹;

查询判断单元503,用于查询缓存设备的指纹库,判断指纹库中是否存在所述指纹;

去重单元504,用于在指纹库中存在所述指纹时,确定该数据块为重复数据,并将数据块的元数据信息存储至缓存设备的元数据区域,元数据信息包括所述数据块在所述数据段中的顺序、所述数据块的物理存储地址及所述数据块的长度。

需要说明的是,本实施例中国各单元的作用与图1所述实施例中缓存设备数据的离线去重压缩装置的作用类似,此处不再赘述。

本发明实施例中,读取判断单元501先读取并判断缓存设备上的数据段的修改次数是否大于第一阈值,并在该数据段的修改次数不大于该第一阈值时,将数据段划分为预设粒度的数据块,并在缓存设备的指纹库中存在所述指纹时,通过去重单元504确定该数据块为重复数据,并将数据块的元数据信息存储至所述缓存设备的元数据区域,所述元数据信息包括数据块在数据段中的顺序、数据块的物理存储地址及数据块的长度,本发明实施例在确定数据块为重复数据前,先判断数据段是否属于频繁修改数据,并在修改次数不大于第一阈值时,即该数据段属于非频繁修改数据时,才对该数据段进行去重操作,从而避免了直接对频繁修改数据执行去重操作后,频繁修改数据的去重引用问题及数据更新后压缩长度变化,使得数据做异地更新时带来的数据碎片化问题,进而减少了后续数据空间回收的难度和开销,从而减少缓存设备去重和压缩对整体存储系统io性能的影响,并节省缓存设备存储空间。

基于图5所述的实施例,下面详细描述本发明实施例中的缓存设备数据的离线去重压缩装置,请参阅图6,本发明实施例中的缓存设备数据的离线去重压缩装置的另一个实施例,包括:

读取判断单元601,用于读取缓存设备上预设长度的数据段,判断数据段的修改次数是否大于第一阈值;

计算单元602,用于在修改次数不大于第一阈值时,将数据段划分为预设粒度的数据块,并计算数据块的指纹;

查询判断单元603,用于查询缓存设备的指纹库,判断指纹库中是否存在所述指纹;

去重单元604,用于在指纹库中存在指纹时,确定该数据块为重复数据,并将数据块的元数据信息存储至缓存设备的元数据区域,元数据信息包括数据块在数据段中的顺序、数据块的物理存储地址及数据块的长度。

优选的,该压缩装置还可包括:

去重计算单元605,用于计算数据段去重后的分散度;

第一判断单元606,用于判断分散度是否大于分散阈值;

第一触发单元607,用于在分散度不大于分散阈值时,触发确定该数据块为重复数据的步骤;

第一存储单元608,用于在分散度大于分散阈值时,将数据段存储至缓存设备的数据区域。

优选的,该装置还包括:

第二判断单元609,用于判断缓存设备的存储带宽是否大于带宽阈值;

第二触发单元610,用于在存储带宽不大于带宽阈值时,触发读取缓存设备上预设长度的数据段的步骤;

执行单元611,用于在存储带宽大于带宽阈值时,执行其他流程。

优选的,该装置还包括:

第二存储单元612,用于在修改次数大于第一阈值时,将数据段直接存储至缓存设备的数据区域;

第三存储单元613,用于在指纹库中不存在指纹时,对数据块执行压缩操作,并将压缩后的数据块存储至缓存设备的数据区域,而将压缩后数据块的元数据信息及原数据块的指纹更新至指纹库中,元数据信息包括:数据块压缩后的物理存储地址及数据块压缩后的长度。

优选的,该装置还包括:

第三判断单元614,用于判断缓存设备的数据区域及元数据区域的存储量是否超出存储阈值;

淘汰单元615,用于在数据区域或元数据区域的存储量超出存储阈值时,按照预设规则淘汰第一数据及第一元数据;

回刷更新单元616,用于将第一数据及第一元数据存储至第一存储设备中,并更新缓存设备中的数据及元数据。

本发明实施例中,读取判断单元601先读取并判断缓存设备上的数据段的修改次数是否大于第一阈值,并在该数据段的修改次数不大于该第一阈值时,将数据段划分为预设粒度的数据块,并在缓存设备的指纹库中存在所述指纹时,通过去重单元604确定该数据块为重复数据,并将数据块的元数据信息存储至所述缓存设备的元数据区域,所述元数据信息包括数据块在数据段中的顺序、数据块的物理存储地址及数据块的长度,本发明实施例在对数据段执行去重操作前,先判断数据段是否属于频繁修改数据,并在修改次数不大于第一阈值时,即该数据段属于非频繁修改数据时,才对该数据段执行去重操作,从而避免了直接对频繁修改数据执行去重操作后,频繁修改数据的去重引用问题及数据更新后压缩长度变化,使得数据做异地更新时带来的数据碎片化问题,进而减少了后续数据空间回收的难度和开销,从而减少缓存设备去重和压缩对整体存储系统io性能的影响,并节省缓存设备存储空间。

其次,通过第二判断单元609和第一判断单元606,进一步对存储设备的存储带宽及数据段的分散度进行判断,进一步减少了数据去重和压缩占据cpu和io资源,降低了后续数据空间回收的难度和开销,进一步减少了缓存设备去重和压缩对整体存储系统io性能的影响。

上面从模块化功能实体的角度对本发明实施例中的缓存设备数据的离线去重压缩装置进行了描述,下面从硬件处理的角度对本发明实施例中的计算机装置进行描述:

该计算机装置用于实现缓存设备数据的离线去重压缩装置的功能,本发明实施例中计算机装置一个实施例包括:

处理器以及存储器;

存储器用于存储计算机程序,处理器用于执行存储器中存储的计算机程序时,可以实现如下步骤:

读取缓存设备上预设长度的数据段,判断数据段的修改次数是否大于第一阈值;

若不大于,将数据段划分为预设粒度的数据块,并计算数据块的指纹;

查询缓存设备的指纹库,判断指纹库中是否存在所述指纹;

若存在所述指纹,确定该数据块为重复数据,并将数据块的元数据信息存储至缓存设备的元数据区域,元数据信息包括数据块在数据段中的顺序、数据块的物理存储地址及数据块的长度。

在本发明的一些实施例中,处理器,还可以用于实现如下步骤:

计算数据段去重后的分散度;

判断分散度是否大于分散阈值;

若不大于,则触发确定该数据块为重复数据的步骤;

若大于,则将数据段存储至缓存设备的数据区域。

在本发明的一些实施例中,处理器,还可以用于实现如下步骤:

判断缓存设备的存储带宽是否大于带宽阈值;

若不大于,则触发读取缓存设备上预设长度的数据段的步骤;

若大于,则执行其他流程。

在本发明的一些实施例中,处理器,还可以用于实现如下步骤:

若大于第一阈值,则将数据段直接存储至缓存设备的数据区域;

在本发明的一些实施例中,处理器,还可以用于实现如下步骤:

若不存在所述指纹,对数据块执行压缩操作,并将压缩后的数据块存储至缓存设备的数据区域,而将压缩后数据块的元数据信息及原数据块的指纹更新至指纹库中,元数据信息包括:数据块压缩后的物理存储地址及数据块压缩后的长度。

在本发明的一些实施例中,处理器,还可以用于实现如下步骤:

判断缓存设备的数据区域及元数据区域的存储量是否超出存储阈值;

若数据区域或元数据区域的存储量超出存储阈值,则按照预设规则淘汰第一数据及第一元数据;

将第一数据及第一元数据存储至第一存储设备中,并更新缓存设备中的数据及元数据。

可以理解的是,上述说明的计算机装置中的处理器执行所述计算机程序时,也可以实现上述对应的各装置实施例中各单元的功能,此处不再赘述。示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述缓存设备数据的离线去重压缩装置的执行过程。例如,所述计算机程序可以被分割成上述缓存设备数据的离线去重压缩装置中的各单元,各单元可以实现如上述相应缓存设备数据的离线去重压缩装置说明的具体功能。

所述计算机装置可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机装置可包括但不仅限于处理器、存储器。本领域技术人员可以理解,处理器、存储器仅仅是计算机装置的示例,并不构成对计算机装置的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述计算机装置还可以包括输入输出设备、网络接入设备、总线等。

所述处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。

所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述计算机装置的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

本发明还提供了一种计算机可读存储介质,该计算机可读存储介质用于实现缓存设备数据的离线去重压缩装置的功能,其上存储有计算机程序,计算机程序被处理器执行时,处理器,可以用于执行如下步骤:

读取缓存设备上预设长度的数据段,判断数据段的修改次数是否大于第一阈值;

若不大于,将数据段划分为预设粒度的数据块,并计算数据块的指纹;

查询缓存设备的指纹库,判断指纹库中是否存在所述指纹;

若存在所述指纹,确定该数据块为重复数据,并将数据块的元数据信息存储至缓存设备的元数据区域,元数据信息包括数据块在数据段中的顺序、数据块的物理存储地址及数据块的长度。

在本发明的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,处理器,还可以用于执行如下步骤:

计算数据段去重后的分散度;

判断分散度是否大于分散阈值;

若不大于,则触发确定该数据块为重复数据的步骤;

若大于,将数据段存储至缓存设备的数据区域。

在本发明的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,处理器,还可以用于执行如下步骤:

判断缓存设备的存储带宽是否大于带宽阈值;

若不大于,则触发读取缓存设备上预设长度的数据段的步骤;

若大于,则执行其他流程。

在本发明的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,处理器,还可以用于执行如下步骤:

若大于第一阈值,则将数据段直接存储至缓存设备的数据区域;

在本发明的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,处理器,还可以用于执行如下步骤:

若不存在所述指纹,对数据块执行压缩操作,并将压缩后的数据块存储至缓存设备的数据区域,而将压缩后数据块的元数据信息及原数据块的指纹更新至指纹库中,元数据信息包括:数据块压缩后的物理存储地址及数据块压缩后的长度。

在本发明的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,处理器,还可以用于执行如下步骤:

判断缓存设备的数据区域及元数据区域的存储量是否超出存储阈值;

若数据区域或元数据区域的存储量超出存储阈值,则按照预设规则淘汰第一数据及第一元数据;

将第一数据及第一元数据存储至第一存储设备中,并更新缓存设备中的数据及元数据。

可以理解的是,所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在相应的一个计算机可读取存储介质中。基于这样的理解,本发明实现上述相应的实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1