一种数据存储方法及装置与流程

文档序号:16531650发布日期:2019-01-05 10:48阅读:245来源:国知局
一种数据存储方法及装置与流程
本发明涉及计算机及通讯
技术领域
,特别涉及一种数据存储方法及装置。
背景技术
:近年来,以闪存为代表的新型存储器件迎来了飞速发展,但是仍然无法撼动已经存在几十年的存储金字塔结构。究其根本原因,高速的存储器件(如闪存、内存)虽然性能高,但价格贵、容量小、寿命短;而低速的存储器件(如磁盘、磁带)虽然容量大、价格低、寿命长,但性能低下,如图1所示。存储金字塔结构正是解决高低速存储器件在性能、容量、寿命、价格等因素上巨大鸿沟的最佳的、折衷的、常规的手段。在实际的应用业务中,数据(包括但不限于页page、块block、文件file、对象object,在本发明中统称数据)访问热度符合帕累托定律(也叫二八定律),即少数的数据被频繁访问(热数据),因此将热数据存放在高速存储器件中,获得较高的性能;多数的数据被不频繁访问(冷数据),因此将冷数据存放在低速存储器件中,获得较低的成本;当产生新的热数据时,需要将高速存储器件中的冷数据换出到低速存储器件中,从而可以将新的热数据换入到高速存储器件中,这个过程即为缓存替换。不难看出,缓存替换是否合理的关键在于——对热度的判断是否准确。在上个世纪,典型的存储金字塔结构为:内存作为缓存,磁盘作为存储池,缓存替换算法主要有:fifo(firstinputfirstoutput,先入先出)、lfu(leastfrequentlyused最少使用频率)、lru(leastrecentlyused,最近最久未使用)。如图2所示,其中,fifo算法淘汰最先被访问的数据,仅考虑时间因素和是否被访问,未考虑访问次数。其中,lfu算法淘汰访问次数最少的数据,但未考虑访问时间的远近;其中,lru算法淘汰最久没有被访问的数据,只记录访问但不区分访问次数。以上缓存替换存在的主要问题包括:(1)热度判断的主体局限于进入缓存的数据,以上缓存替换算法不仅缺乏对被换出数据的长期跟踪,而且缺乏对全体数据的热度判断,被换出数据的再次被换入时其热度等同于首次进入缓存的数据,但其实热度是不同的。(2)热度判断准确率低下,以上缓存替换算法没有同时考虑访问时间和历史访问频率,导致一些只是近期没有被访问到,但实际上访问频率很高的数据替换出去,热度判断的合理性存在较大提升空间。(3)未能充分发挥硬件性能,受限于当时的cpu计算能力和内存容量,以上缓存替换算法十分节约计算和内存,以链表作为最主要的缓存管理方法。也正是因为问题(3),使得问题(1)和问题(2)更加难以得到解决;也是因为问题(1),使得问题(2)更加难以得到解决。进入21世纪后,计算机产生了巨大的变化:(1)计算机由单机向分布式集群发展,存储金字塔结构更加复杂(典型的存储金字塔结构为:内存作为一级缓存,闪存作为二级缓存,本地磁盘作为一级存储池,云存储作为二级存储池),涉及到多个存储层级之间的冷热数据的判断与迁移,需要对全体数据进行热度统计与计算。(2)对热度判断的准确性提出了更高的期望,一旦出现缓存命中率低则产生大量的跨网络读写,时延较大。(3)硬件水平迅速发展。cpu(centralpocessingunit,中央处理器)、内存等电子器件遵循摩尔定律——性能每隔18个月提高一倍,价格下降一半。以cpu为例,从1980年至2010年,cpu的有效周期时间从1000纳秒降为0.1纳秒,降低了10000倍。硬件水平(计算和内存)不再是制约计算机系统设计的绊脚石。然而,产生于上世纪的经典缓存替换算法沿用至今,虽然国内外诸多计算机学家针对fifo、lru、lfu做了大量的改进,提出了诸如lrv、hybrid、lowest-latency-first、pitkow、recker、hyper-g、chunkstash、i-cash等缓存算法,但受制于经典缓存替换算法的惯性思维,这些缓存替换算法仍旧无法全面地考虑全体数据的热度情况;仍旧难以提升热度判断的准确率,难以满足新时代的新期望;仍旧在计算和内存上畏手畏脚,仍旧停留在以链表作为主要的缓存管理方法。技术实现要素:根据本发明实施例提供的方案解决的技术问题是不能准确有效得对数据热度进行判断。根据本发明实施例提供的一种数据存储方法,包括:统计当前时间片内存储数据的被访问次数;根据所述被访问次数计算所述存储数据在当前时间片的热度评分,并根据所述热度评分确定所述存储数据在当前时间片的热度级别;根据所述热度级别将所述存储数据存储于对应的存储器件。优选地,所述根据所述被访问次数计算所述存储数据在当前时间片的热度评分包括:根据所述存储数据在上个时间片的热度评分以及在当前时间片内的被访问次数,计算所述存储数据在当前时间片的热度评分。优选地,根据所述热度评分确定所述存储数据在当前时间片的热度级别包括:根据热度阈值表中热度评分和热度级别的对应关系,确定所述存储数据在当前时间片的热度级别。优选地,根据所述热度级别将所述存储数据存储于对应的存储器件包括:根据热度阈值表中热度级别与存储器件的对应关系,确定所述存储数据在当前时间片对应的存储器件,并将所述存储数据存储于所确定的存储器件。优选地,所述根据热度阈值表中热度级别与存储器件的对应关系,确定所述存储数据在当前时间片对应的存储器件,并将所述存储数据存储于所确定的存储器件包括:根据所述存储数据在当前时间片的热度级别从所述热度阈值表中查找对应的存储器件;对所述存储器件的当前存储容量进行检测;在所述当前存储容量达到存储容量阈值的情况下,通过调整所述热度阈值表中热度评分和热度级别的对应关系,重新确定所述存储数据在当前时间片所对应的存储器件,并将所述存储数据存储于所确定的存储器件。根据本发明实施例提供的一种数据存储装置,包括:统计模块,用于统计当前时间片内存储数据的被访问次数;计算及确定模块,用于根据所述被访问次数计算所述存储数据在当前时间片的热度评分,并根据所述热度评分确定所述存储数据在当前时间片的热度级别;存储模块,用于根据所述热度级别将所述存储数据存储于对应的存储器件。优选地,所述计算及确定模块包括计算单元,用于根据每个存储数据在其上个时间片结束时计算的热度评分以及在当前时间片内统计每个存储数据被访问次数,计算当前时间片结束时所述每个存储数据的热度评分。优选地,所述计算及确定模块包括确定单元,用于根据热度阈值表中热度评分和热度级别对应关系,确定所述存储数据在当前时间片的热度级别。优选地,所述存储模块具体用于根据热度阈值表中热度级别与存储器件的对应关系,确定所述存储数据在当前时间片对应的存储器件,并将所述存储数据存储于所确定的存储器件。优选地,所述存储模块包括:查找单元,用于根据所述存储数据在当前时间片的热度级别从所述热度阈值表中查找对应的存储器件;检测单元,用于对所述存储器件的当前存储容量进行检测;存储单元,用于在所述当前存储容量达到存储容量阈值的情况下,通过调整所述热度阈值表中热度评分和热度级别的对应关系,重新确定所述存储数据在当前时间片所对应的存储器件,并将所述存储数据存储于所确定的存储器件。根据本发明实施例提供的方案,取得了热度判断的主体全面的进步,达到了热度判断准确率高效果,充分发挥了硬件性能。附图说明图1是现有技术提供的旧式存储金字塔结构示意图;图2是现有技术提供的经典缓存替换方法的原理图;图3是本发明实施例提供的一种数据存储方法流程图;图4是本发明实施例提供的一种数据存储装置示意图;图5是本发明实施例提供的存储金字塔结构示意图;图6是本发明实施例提供的与经典缓存替换方法lru的对比示意图;图7是本发明实施例提供的多级热度缓存替换的流程图。具体实施方式以下结合附图对本发明的优选实施例进行详细说明,应当理解,以下所说明的优选实施例仅用于说明和解释本发明,并不用于限定本发明。图3是本发明实施例提供的一种数据存储方法流程图,如图3所示,包括:步骤s301:统计当前时间片内存储数据的被访问次数;步骤s302:根据所述被访问次数计算所述存储数据在当前时间片的热度评分,并根据所述热度评分确定所述存储数据在当前时间片的热度级别;步骤s303:根据所述热度级别将所述存储数据存储于对应的存储器件。其中,所述根据所述被访问次数计算所述存储数据在当前时间片的热度评分包括:根据所述存储数据在上个时间片的热度评分以及在当前时间片内的被访问次数,计算所述存储数据在当前时间片的热度评分。其中,根据所述热度评分确定所述存储数据在当前时间片的热度级别包括:根据热度阈值表中热度评分和热度级别的对应关系,确定所述存储数据在当前时间片的热度级别。其中,根据所述热度级别将所述存储数据存储于对应的存储器件包括:根据热度阈值表中热度级别与存储器件的对应关系,确定所述存储数据在当前时间片对应的存储器件,并将所述存储数据存储于所确定的存储器件。其中,所述根据热度阈值表中热度级别与存储器件的对应关系,确定所述存储数据在当前时间片对应的存储器件,并将所述存储数据存储于所确定的存储器件包括:根据所述存储数据在当前时间片的热度级别从所述热度阈值表中查找对应的存储器件;对所述存储器件的当前存储容量进行检测;在所述当前存储容量达到存储容量阈值的情况下,通过调整所述热度阈值表中热度评分和热度级别的对应关系,重新确定所述存储数据在当前时间片所对应的存储器件,并将所述存储数据存储于所确定的存储器件。图4是本发明实施例提供的一种数据存储装置示意图,如图4所示,包括:统计模块401,用于统计当前时间片内存储数据的被访问次数;计算及确定模块402,用于根据所述被访问次数计算所述存储数据在当前时间片的热度评分,并根据所述热度评分确定所述存储数据在当前时间片的热度级别;存储模块403,用于根据所述热度级别将所述存储数据存储于对应的存储器件。其中,所述计算及确定模块402包括计算单元,用于根据每个存储数据在其上个时间片结束时计算的热度评分以及在当前时间片内统计每个存储数据被访问次数,计算当前时间片结束时所述每个存储数据的热度评分。其中,所述计算及确定模块402包括确定单元,用于根据热度阈值表中热度评分和热度级别对应关系,确定所述存储数据在当前时间片的热度级别。其中,所述存储模块403具体用于根据热度阈值表中热度级别与存储器件的对应关系,确定所述存储数据在当前时间片对应的存储器件,并将所述存储数据存储于所确定的存储器件。其中,所述存储模块403包括:查找单元,用于根据所述存储数据在当前时间片的热度级别从所述热度阈值表中查找对应的存储器件;检测单元,用于对所述存储器件的当前存储容量进行检测;存储单元,用于在所述当前存储容量达到存储容量阈值的情况下,通过调整所述热度阈值表中热度评分和热度级别的对应关系,重新确定所述存储数据在当前时间片所对应的存储器件,并将所述存储数据存储于所确定的存储器件。图5是本发明实施例提供的存储金字塔结构示意图,如图5所示,包括内存、闪存、磁盘以及云存储。图6是本发明实施例提供的与经典缓存替换方法lru的对比示意图,如图6所示,其中细线为本发明实施例的热度曲线,粗线为lru的热度曲线。可以很明显地看到,现有的经典缓存替换算法在热度计算时仅有0和1两种状态,根本无法科学地、全面地判断数据的真实热度,缺乏精确热度量化的能力。图7是本发明实施例提供的多级热度缓存替换的流程图,如图7所示,包括:步骤1:系统初始化:设置时间片阈值、热度阈值表,将热度评分数组score、访问次数数组visit、热度级别数组level均归零。步骤2:时间片t开始。统计该时间片内所有数据的访问次数,数据a在该时间片t的访次数表示为visit[a][t]。步骤3:时间片t结束。计算所有数据的热度评分,数据a在时间片t之后的热度表示为score[a][t]。步骤4:根据数据的热度评分和热度阈值表,确定数据的热度级别及对应存储器件。步骤5:是否出现某热度的存储器件容量达到警戒阈值之上,若出现,则调整热度阈值表;若没有出现,进入步骤6。步骤6:是否存在下一个时间片t+1,若出现,重新进入步骤2,否则结束。进一步地,步骤1中的热度分级与存储系统的缓存层数有直接关系,可按照经验值设置;热度阈值与存储系统中各缓存层的容量有直接关系,可按照经验值设置。第1个时间片代表了距离当前最远的时间片,第t个时间片代表了距离当前最近的时间片。表1热度阈值表进一步地,步骤3中具体的步骤包括:步骤3.1:遍历所有数据,求热度。步骤3.2:数据a在时间片t之后的热度评分计算公式为score[a][t]=score[a][t-1]*k+visit[a][t]其中k为热度衰减常数,取值范围为k∈[0,1]。典型值如10-3、10-2、10-1。其中k值越大,历史访问对当前热度评分的影响越显著,反之则越不显著。该值可根据经验设置。步骤3.3:计算下一个数据的热度评分,进入步骤3.2,直至所有数据的热度被计算完毕。进一步地,步骤4中具体的步骤包括:步骤4.1:遍历所有数据的热度。步骤4.2:将数据a的当前热度score[a][t]与热度阈值表进行比对,确定数据a所属的热度级别level[a][t]。步骤4.3:比较level[a][t]与level[a][t-1]是否相同,若相同则无需缓存的置换,若不相同则将数据a由热度级别level[a][t-1]对应的存储器件迁移到热度级别level[a][t]对应的存储器件中。进一步地,步骤5中警戒阈值为可设经验值,典型值为95%,目的在于在容量满之前及时调整阈值,提前迁移数据,避免出现因容量已满而导致新换入数据失败的情况。缓存容量达到警戒值说明热度阈值表设置不当,需对其进行调整。调整热度阈值表不限于手动调整或自动调整。手动调整适用于水平较高的用户,自动调整的方法包括但不限于:将该热度的范围下界调低、或将该热度的范围上界调高。下面以具体的实施方式对本发明实施例的技术方案作进一步的详细描述:在该实施用例中,存储系统为cephfs分布式文件系统,数据的表现形式是文件,假设有6个文件,文件名分别为a、b、c、d、e、f。数据分级形式为:非易失性内存(32gb*4)作为1级缓存,pcie(peripheralcomponentinterconnectexpress,总线接口)固态硬盘(512gb*8)作为2级缓存,sata(serialadvancedtechnologyattachment,串行高级技术附件)固态硬盘(1tb*16)作为3级缓存,sata磁盘(4tb*32)作为存储池。初始时所有文件均存储于存储池中,处理步骤如下:步骤101:设置时间片为10分钟,警戒阈值为95%,热度衰减常数k为0.1,热度阈值表为热度级别热度范围对应存储器件第1热度[100,+∞)非易失性内存第2热度[20,100)pcie固态硬盘第3热度[1,20)sata固态硬盘第4热度[0,1)sata磁盘步骤102:第1个时间片开始。开启统计该时间片内所有文件的访问次数。在第1个时间片结束。所有文件的访问次数统计结果为:文件名在第1时间片的访问次数a0b117c18d55e0f210步骤103:计算所有数据的热度评分:其中,以数据a为例,数据a在第1个时间片的热度评分计算公式为score[a][1]=score[a][1-1]*k+visit[a][1]其中k为热度衰减常数,取值为0.1。文件名在第1时间片后的热度评分a0b117c18d55e0f210步骤104:根据在第1时间片后的热度评分和热度阈值表,得出:文件名在第1时间片后的对应存储器件asata磁盘b非易失性内存csata固态硬盘dpcie固态硬盘esata磁盘f非易失性内存将文件b、c、d、f从存储池迁移到对应存储器件。步骤105:第2个时间片。其中,以数据a为例,数据a在第2个时间片的热度评分计算公式为score[a][2]=score[a][2-1]*k+visit[a][2]其中k为热度衰减常数,取值为0.1。将文件c、d、e、f迁移到对应存储器件。步骤106:第3个时间片。其中,以数据a为例,数据a在第3个时间片的热度评分计算公式为score[a][3]=score[a][3-1]*k+visit[a][3]其中k为热度衰减常数,取值为0.1。将文件a、c、e、g、h迁移到对应存储器件。步骤107:依次类推……步骤108:在第5526个时间片时,出现非易失性内存容量使用率达到95.1%,超过警戒阈值95%,因此调整热度阈值表热度级别热度范围对应存储器件第1热度[101,+∞)非易失性内存第2热度[20,101)pcie固态硬盘第3热度[1,20)sata固态硬盘第4热度[0,1)sata磁盘调整之后,热度为100.3的文件h迁移到对应存储器件。步骤109:在第52560个时间片时,系统已运行了一年时间,实施重启,本实施用例结束。根据本发明实施例提供的方案,使得热度判断的主体更加全面,提高了热度判断准确率,且充分发挥了硬件性能。尽管上文对本发明进行了详细说明,但是本发明不限于此,本
技术领域
技术人员可以根据本发明的原理进行各种修改。因此,凡按照本发明原理所作的修改,都应当理解为落入本发明的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1