一种云环境下基于重复数据的缓存方法与流程

文档序号:11829529阅读:278来源:国知局
一种云环境下基于重复数据的缓存方法与流程

本发明属于计算机云存储技术领域,具体涉及云环境下基于重复数据的缓存方法。



背景技术:

在计算机系统中,缓存的引入能对CPU和磁盘的读写性能进行协调处理,从而提升系统整体性能。当某一硬件要读取数据时,缓存通过一定的方式提前存储硬件所需的数据。缓存主要通过局部性原理来实现,可以分为时间局部性和空间局部性。

在处理器高速发展的情况下,缓存同样需要面对材料和成本的问题,处理器的性能以每18个月翻一倍的速度在增长,而缓存在性能和速度上的增长仅仅为每年10%左右,缓存性能的高低已成为整个计算机工业快速发展的主要瓶颈之一。

大部分情况下,计算机工业界解决缓存问题一直采用的是增加缓存容量。但随着硬件加工技术已经接近物理极限,单纯依靠提高单位面积上晶体管数量的方式来提升缓存性能已经举步维艰。因此设计出先进的管理方法,最大程度的挖掘现有硬件设备的潜在性能,成为一个研究重点。涌现出了大量优秀的缓存替换算法。

随着大数据的到来,网络环境已从原本的纯文件数据到现在的多媒体环境。这将导致用户的数据的访问模式和习惯发生改变。公认的类Zipf分布的数据访问模式主要适用于文本数据主导网络存储的情况;所以,随着现有的网络模型的改变,Zipf分布模式已经越来越不符合用户的真实数据访问方式。随着大量学者的研究,发现SE(Stretched Exponential)分布比Zipf分布更符合大数据时代用户的数据访问特性。在SE分布的数据访问模式下,大量的数据访问分散在并不经常访问的数据中,集中的热访问数据占比越来越少,传统的缓存系统在不扩充容量的情况下,命中率变得越来越低。所以在这种情况下经典的传统替换算法已经无法满足云存储环境的要求。如果能进一步深入挖掘潜在性能,提出一种更适合的缓存替换算法,提高缓存的命中率,将是增强CPU利用率、提高云存储服务性能的一个重要途径。



技术实现要素:

针对现有技术的缺陷和迫切需求,本发明目的在于,提出一种云环境下基于重复数据的缓存方法,该方法将文件拆分为多个数据块进行存储,对于重复数据块进行重删处理,由此提高了缓存空间的利用率。

一种云环境下基于重复数据的缓存方法,具体为:将文件分为多个数据块,以数据块的方式加载于缓存中,重复的数据块只加载一次。

进一步地,

在加载数据块的同时还构建:

用于记录加载文件哈希值的文件级哈希映射表;

用于记录加载的数据块哈希值、数据块大小、数据块在文件中的起始位置信息的元数据文件,元数据文件以文件哈希值命名;

记录数据块哈希值和引用次数的元数据属性表;所述引用次数的定义为:缓存中某数据块被多个文件同时拥有,所涉及的文件总数被定义为该数据块的引用次数。

进一步地,

该方法包括以下步骤:

1)记欲加载的文件为T;

2)根据文件T的哈希值查询文件级哈希映射表以判定该文件是否已被缓存,若未缓存,则进入步骤3),否则结束;

3)将T的文件哈希值增加至文件级哈希列表,将文件T包含的数据块信息增加至元数据文件;

4)将文件T中的数据块按照如下方式加载于内存中:

41)将文件T的文件哈希值添加至文件级哈希映射表;

42)根据文件哈希值找到该文件对应的元数据文件,元数据文件包括该文件的所有分块数据块信息。

43)从元数据文件中读取某一数据块的哈希值;

44)根据数据块哈希值在元数据属性表查询是否已缓存该数据块,若未缓存,则进入步骤45);若已缓存,然后继续读取下一数据块,返回步骤43),直到文件T的所有数据块处理完毕;

45)将数据块加载于缓存中,在元数据属性表中添加新加载的数据块哈希值,其对应的引用次数初始化为1,然后继续读取下一数据块,返回步骤43),直到文件T的所有数据块处理完毕。

进一步地,该方法还包括以下步骤:

在所述步骤45)之前,还判定缓存是否已满,若满,则从缓存中选取文件删除,将删除的文件哈希值从文件级哈希映射表移除,将删除文件涉及的数据块引用次数减1,如果引用次数为0,删除数据块,进入步骤45);若未满,直接进入步骤45);

所述从缓存中选取文件删除的选取原则是:选取重复比例Dup最低的文件删除,所述重复比例定义为:统计文件中有多少个数据块与其它文件具有相同的数据块;用相同数据块的个数除以这个文件的数据块总数得到重复比例。

进一步地,

所述步骤3)还初始化文件T的访问次数frequent和访问时间recency为空;

所述44)根据数据块哈希值在元数据属性表查询是否已缓存该数据块,若未缓存,则进入步骤45);若已缓存,文件T的访问次数frequent加1,文件T的访问时间recency更新为当前时间,然后继续读取下一数据块,返回步骤43),直到文件T的所有数据块处理完毕;

所述步骤45)将数据块加载于缓存中,文件T的访问次数frequent加1,文件T的访问件recency更新为当前时间,然后继续读取下一数据块,返回步骤43),直到文件T的所有数据块处理完毕。

进一步地,

在所述步骤45)之前,还判定缓存是否已满,若满,则从缓存中选取文件删除,将删除的文件哈希值从文件级哈希映射表移除,将删除文件涉及的数据块引用次数减1则进入步骤46);若未满,直接进入步骤45);

所述从缓存中选取文件删除的选取原则是:综合考虑文件的重复比例Dup、访问次数和访问时间,文件的重复比例Dup越低、文件访问次数越低、文件访问时间越近则文件选取删除的可能性越高。

本发明的有益技术效果体现在:

本发明对缓存系统的缓存数据项进行了分析,通过利用相似数据项中相同的数据块来实现在缓存中数据块的重复数据删除,从而提高缓存空间的利用率;进一步地,研究文件间的重复块的规律,提出一种基于重复比例考量的缓存替换算法,提高缓存命中率,最终提高缓存系统的效率。

附图说明

图1为Zipf和SE数据的访问分布图;

图2为本发明缓存原理示意图;

图3为本发明缓存方法流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

图2给出了本发明缓存原理示意图。本发明将文件分为多个数据块,以数据块的方式加载于缓存中,对于重复的数据块做删除处理。在图2中,显示了4个文件f1、f2、f3和f4,这4个文件被分成11个数据块,用不同的图案进行了分别标记;不同文件间,数据块图案相同的表示是重复数据块。缓存层右边的表示实际在缓存中存储的数据块,将相同的数据块删除,只保存一份数据。在图中可以看出,原本的11个数据块在实际的存储中只需要存储6个数据块,这样将大大的提高缓存的利用率。

缓存文件的预处理过程就是对输入的文件进行分块处理并计算哈希。

对文件的分块处理有两种方法:定长分块和变长分块。定长分块的方法实现起来简单方便快速,不用消耗多少计算机的计算资源。变长分块的方法实现起来就比前者困难,且要消耗更多的计算资源,但是却能找到更多的重复块,能更好的提高重删的效果。

在本系统中,优选变长分块的方式,实验中用到的一种具体实施方式是基于内容可变长度分块(CDC)算法。通过各方面的综合考虑,实验中将数据块的大小限定在4KB到64KB之间。在存储时,需要额外的存储空间来存储每个数据块元数据信息;如果将数据块的大小限定到低于4KB的话,相对于设定为大于4KB,分块后将会产生更多的数据块,这样就需要更多的额外空间来存储数据块的元数据信息,而且会对元数据信息的管理带来更大的负担;而如果将数据块的大小限定到大于64KB的话,对文件进行分块后产生的数据块将会很大,可能使一个文件只会切分成几个数据块;这样,文件间数据块重复的可能性就将降低。

对文件和所得数据块采用哈希算法计算得到哈希值,哈希值相同则表示对应的两数据块是重复数据块。作为示例,使用SHA1算法对文件和文件分块后的数据块求哈希,得到一个160bit的字符串,将文件和文件分块后的数据块计算哈希得到的字符串命名为file_gcid与block_gcid,它们来作为文件和数据块的唯一标识符。

建立存有文件哈希值的文件级哈希映射表,文件级哈希映射表可存储于缓存中。

对每一个文件,当进行分块后,将这个文件的数据块哈希值、数据块的大小、数据块在文件中的起始位置作为元数据信息记录到元数据文件中。元数据文件采用文件哈希值命名,可存储于内存中。

在对数据文件进行缓存时,如果缓存中某数据块被多个文件同时拥有,其所涉及的文件总数被定义为数据块的引用次数。在内存中构建有元数据属性表,元数据属性表中包含已缓存数据块哈希值和引用次数。

在上述数据块重删缓存方法的基础上,本发明提出了一种缓存替换方法。本发明缓存替换方法主要考虑数据块的重复比例,以此作为筛选标准,选出被替换的文件。

所述的重复比例是指当一个文件被分块后,统计这些分块信息,确定这个文件中有多少个块与存储系统其它文件具有相同的数据块;用相同数据块的个数除以这个文件的整个数据块数得到的就是重复比例Dup。在文件预处理的时候就会统计文件中有多少个块与存储系统其它文件具有相同的数据块,进而计算得到重复比例Dup。

将缓存中的数据块按照访问时间的先后顺序记录在一个链表中,每次获取到新的元数据时在链表尾插入,新插入数据的时间信息即为文件的recency的值。Dup指当一个文件被分块后,统计这些分块信息,确定这个文件中有多少个块与其它文件具有相同的是数据块,用相同块数除以这个文件的整个块数得到的就是重复比例。Dup是一个百分比数值。Frequent记录文件在缓存中的访问次数,当访问一个文件中时,如果文件在缓存中则frequent+1,如果文件不再缓存中的时候使frequent=1,重新计算。

如图3所示,本发明缓存方法具体为:

1)记欲加载的文件为T;

2)根据T的文件哈希值查询文件级哈希映射表以判定该文件是否被缓存,若未查到,则进入步骤3),否则结束;

3)将T的文件哈希值增加至文件级哈希列表,将该文件T包含的数据块信息增加至元数据文件,初始化文件T的访问次数frequent和recency为空;

4)将文件T中的数据块按照如下方式加载于内存中:

41)将文件T的文件哈希值添加至文件级哈希映射表,记录文件T的Dup;

42)根据文件哈希值找到该文件对应的元数据文件,元数据文件包括该文件的所有分块数据块信息。

43)从元数据文件中读取某一数据块的哈希值;

44)根据数据块哈希值在元数据属性表查询是否已缓存该数据块,若未缓存,则进入步骤45);若已缓存,文件T的访问次数frequent加1,文件T的recency更新为当前时间,然后继续读取下一数据块,返回步骤43),直到文件T的所有数据块处理完毕;

45)判定缓存是否已满,若满,则进入步骤46);若未满,进入步骤47);

46)从缓存中选取文件删除,将删除的文件哈希值从文件级哈希映射表移除,将删除文件涉及的数据块引用次数减1;如果引用次数为0,删除数据块;

47)将数据块加载于缓存中,文件T的访问次数frequent加1,文件T的recency更新为当前时间,在元数据属性表中添加新加载的数据块哈希值,其对应的引用次数初始化为1,然后继续读取下一数据块,返回步骤43),直到文件T的所有数据块处理完毕。

所述步骤46)选取删除文件的原则是:

根据缓存中已有文件的重复比例dup进行选取。重复比例Dup越高说明这个文件与别的文件重复的数据块越多;当这个文件被选取存入缓存中时节约的缓存空间可能越多,使该文件选取删除的可能性越低。

进一步地,可再考虑最近被访问的次数Frequency,Frequency越高说明数据被访问的局部性越强,使文件被选取删除的可能性越低。

进一步,还可再考虑最近被访问的时间recency,recency时间越近说明数据被访问的局部性越强,使文件被选取删除的可能性越低。

在具体选择时,可以仅仅考量重复比例Dup,也可以将上述三个参数按照重复比例Dup、被访问的次数Frequency、最近被访问的时间recency的先后顺序逐一判定选取,也可以通过譬如加权求和方式得到一个权值,依据权值大小进行判定选取。

若采用加权求和,三个参数的量纲不同,首先就需要进行归一化处理,使它们统一到0到1之间。重复比例Dup取值在0到1之间,无需再归一化处理;通过缓存空间大小和数据集文件大小的比例设定了一个访问频率的最大值max,frequent归一化处理为frequent/max;当frequent大于max,frequent处理为1;文件的recency的归一化处理方式是:设现在被访问的文件的时间为a,这个文件上次被访问的时间为b,在整个缓存中取其中最久远被访问的文件时间为c,recency的归一化结果为(b-c)/(a-c)。其次,对三个参数赋予权值,权值为经验值,通过实验方式调整确定的;最后,加权求和得到一个评估值,将缓存中所有的文件的评估值进行排序,取出其中值最小的文件,删除文件。从缓存中删除选取的文件,将删除文件的信息移除文件级哈希映射表,将删除文件的数据块信息移除元数据属性表;

为了测试算法的性能,设计的缓存系统包括三层,应用层,缓存层和磁盘层。应用层用于接收用户的请求,并将请求传递给中间的缓存;缓存层用于数据的存储,这中间包括两阶段的操作,一个是缓存文件的预处理过程,另一个是缓存数据块的替换管理过程;磁盘层是用于存储全部的数据文件。在趋于SE分布的用户数据访问模式的云存储环境下,本发明对缓存系统的缓存数据项进行了分析,通过利用相似数据项中相同的数据块来实现在缓存中数据块的重复数据删除,从而提高缓存空间的利用率;并研究文件间的重复块的规律,采用基于重复比率考虑的缓存替换算法,提高缓存命中率,最终提高缓存系统的效率。

实例:

1)收集数据集。实验中的数据集为apk文件。有8877个apk类型文件,数据集大小为126GB,文件平均大小为16M。

2)获得数据分块和收集数据指纹。对每一个输入的apk文件,通过使用CDC变长分块算法对这个文件进行切分;将切分好的数据块使用SHA1算法求哈希;将求到的哈希值、数据块的大小、数据块在文件中的起始位置作为元数据信息记录到元数据文件中。

3)获取实验所需的trace。实验中的trace获取至迅雷公司,来源于用户通过迅雷app下载数据的真实trace。实验中截取了其中六个小时trace,通过其中的网址信息下载了app文件。通过对原始trace的提取和分析,得到了对应apk文件格式的trace。通过实验发现该trace符合zipf分布;通过数学的方法合成了符合SE分布的trace。这两种trace分别命名为apk-Zipf和apk-SE。

4)确定CIH缓存替换算法的三个要素最近访问时间(recency)、被访问的频率(frequency)、在存储系统中的重复数(dupnum)的权值。在这里,由于这三个参数的量纲不同,这里就需要进行归一化处理,使它们统一到0到1之间。

5)缓存系统文件的访问过程。根据用户访问数据的文件名查询文件级哈希表来判断该文件是否被缓存,如果被缓存则同时获取该文件的文件哈希,通过文件哈希获得该文件的数据块哈希构成,最终根据数据块哈希读取数据块内容,同时更新该数据块所属文件的参数:frequency和recency;如果查询文件时未在缓存系统中查到,即文件未命中,缓存系统则将该文件的哈希添加到文件级哈希表中,同时获取该文件的元数据文件,缓存系统根据该文件的数据块哈希查询缓存系统已有的数据块元数据判断该数据块是否被缓存,如果在缓存系统则直接读取数据块内容并更新其所属文件的参数值,否则,缓存系统将从存储系统中读取该数据块,读取新数据块时需要判断缓存空间是否已满,如果缓存空间已满,则需要通过替换算法移除一个文件,同时移除该数据块的元数据以及其影响到的文件的元数据,初始化新载入缓存系统的数据块所属文件的参数值,其中frequency初始化为1,recency从缓存系统的链表中读取,Dup的值则从缓存系统的数据库中读取,如果缓存空间未满,则可直接载入该数据块并初始化其数据块元数据。

6)用步骤3中的两种trace模拟文件的访问序列来模拟用户对缓存系统的对文件的访问过程,计算缓存系统的文件命中率。从计算结果可知,当使用的缓存空间越大,数据集的重复度越高的时候,CIH算法的效果将越好

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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