一种加速二级缓存预热的方法及装置制造方法

文档序号:6625619阅读:161来源:国知局
一种加速二级缓存预热的方法及装置制造方法
【专利摘要】本发明涉及一种加速二级缓存预热的方法及装置,其中,所述方法在二级缓存设备上保存与二级缓存数据相应的元数据,并对二级缓存数据进行压缩处理,实现二级缓存数据的写入和读取,其中,二级缓存数据的写入具体为:周期性扫描主缓存中的缓存数据,获得设定时间内使用次数量少的数据及其相应元数据,该元数据包含主缓存与二级缓存设备间的映射关系;对数据进行压缩处理;压缩后的数据及元数据一起写入二级缓存设备;二级缓存数据的读取具体为:遍历二级缓存设备上的元数据,读取二级缓存设备中的数据并解压缩后,根据元数据中的映射关系,将数据加载到主缓存中。与现有技术相比,本发明具有提高缓存数据预热的效率和二级缓存设备的利用率等优点。
【专利说明】
一种加速二级缓存预热的方法及装置

【技术领域】
[0001]本发明涉及计算机存储【技术领域】,具体涉及一种加速二级缓存预热的方法及装置。

【背景技术】
[0002]当前,随着信息化技术的不断发展,人们需要保存的资料、数据越来越多,对存储容量的需求越来越大,而且各种应用程序随着软、硬件的升级,对存储设备的性能要求也越来越高。从存储领域来看,不管是传统的存储设备,还是基于软件定义的新型存储设备,为了实现性能最大化和成本最低化,各存储厂商往往采用基于混合存储池的分级存储方式,通过采用大容量的固态硬盘(SSD)或者NVRAM等非易失性存储设备作为缓存,实现对磁盘、磁带等持久化存储设备的二级或者多级缓存系统,达到性能和价格的一个均衡。这样的系统性能虽然上无法和新型的全闪存存储阵列媲美,但在价格上却有巨大的优势,而且性能比传统存储阵列要高很多。性能的提升主要是依据存储系统的局部性原理,通过将热点数据(频繁访问的特定区域)缓存在高速设备中来实现。
[0003]这些二级或者多级缓存系统,作为高速访问设备(内存)和低速访问设备(磁盘、磁带)之间的缓存,屏蔽了不同设备之间访问速度的差距,以有限的投资,即能取得较好的加速效果,但也存在一些问题:比如需要一定时间的预热,即需要存储系统运行一段时间后,通过被动或者主动(数据预取)的方式,将数据从磁盘重新加载到二级缓存设备。而事实上,通常二级缓存设备(如SSD)本身就具有非易失的特性(即所存储的数据不会因为设备断电而丢失的存储器),需要预热的原因,很大程度上是因为二级缓存设备上保存的是纯粹的数据块,没保存元数据(即数据存储的属性、位置等信息,用来对数据进行定位、查找),且数据也是无组织的,导致缓存与二级缓存在系统重新上电后,无法直接使用,而需要一个重新预热的过程。预热的时间随着二级缓存大小以及业务1的特性而不同,有些存储系统甚至需要几天时间连续运行来实现预热。另一方面,二级缓存的空间是十分宝贵的,传统的存储将裸数无组织存放的另一个缺陷是空间浪费严重。
[0004]综上可知,在传统的二级缓存系统设计和实现上,存在预热时间过长和空间浪费严重的问题,有改进和优化的空间。


【发明内容】

[0005]本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种加速二级缓存预热的方法及装置,针对基于混合存储池的系统,通过持久化和压缩二级缓存数据,提高了缓存数据预热的效率,同时也提高了二级缓存设备的利用率,一定程度上降低了存储设备的成本。
[0006]本发明的目的可以通过以下技术方案来实现:
[0007]本发明提供一种加速二级缓存预热的方法,该方法在二级缓存设备上保存与二级缓存数据相应的元数据,并对二级缓存数据进行压缩处理,实现二级缓存数据的写入和读取,其中,
[0008]所述二级缓存数据的写入具体为:
[0009]I)周期性扫描主缓存中的缓存数据,获得设定时间内使用次数量少的数据及其相应元数据,该元数据包含主缓存与二级缓存设备间的映射关系;
[0010]2)对步骤I)获得的数据进行压缩处理;
[0011]3)将步骤2)中压缩后的数据及步骤I)中的元数据写入二级缓存设备;
[0012]所述二级缓存数据的读取具体为:
[0013]遍历二级缓存设备上的元数据,读取二级缓存设备中的数据并解压缩后,根据元数据中的映射关系,将数据加载到主缓存中。
[0014]所述元数据由超级块、索引块和索引块指针组织而成。
[0015]所述遍历二级缓存设备上的元数据具体为:
[0016]a)读取超级块,开始遍历元数据;
[0017]b)判断当前超级块所对应的索引块是否遍历完,若是,则结束,若否,则执行步骤c);
[0018]c)判断当前索引块所对应的索引块指针是否遍历完,若是,则返回步骤a),若否,则执行步骤d);
[0019]d)读取数据并解压缩,返回步骤c)。
[0020]数据加载到主缓存中后,应用程序读取数据时,首先判断是否在主缓存中命中数据时,若是,则直接从主缓存中读取,若否,则向磁盘设备读取,有效避免频繁向磁盘设备发起I/O请求。
[0021 ] 所述二级缓存设备包括SSD或NVRAM。
[0022]本发明还提供一种加速二级缓存预热的装置,包括:
[0023]异步扫描模块,用于周期性扫描主缓存中的缓存数据,获得设定时间内使用次数量少的数据;
[0024]压缩模块,用于对写入二级缓存设备的数据进行压缩或对从二级缓存设备读取的数据进行解压缩;
[0025]异步预热模块,用于将二级缓存设备中的数据加载到主缓存。
[0026]所述异步预热模块包括:
[0027]元数据遍历单元,用于遍历二级缓存设备中保存的元数据;
[0028]数据传输单元,用于根据元数据遍历结果读取二级缓存设备中的数据并传输给压缩丰吴块。
[0029]与现有技术相比,本发明具有以下有益效果:
[0030]1、在存储设备重新上电时,避免了从磁盘频繁加载数据到主缓存,减少了对磁盘进行的大量I/o操作,使得系统上电完毕就可以使用之前缓存的数据,加速了缓存的预热(系统上电后数据从磁盘搬移到缓存的过程),极大提高缓存的可用性。
[0031]2、通过压缩技术,使得小容量的二级缓存设备,可以达到大容量设备的缓存效果,提高了存储设备的性价比。
[0032]3、由于压缩技术的使用,使得需要加载的数据量变小,进一步加速了缓存的预热。
[0033]4、本发明设置异步预热模块,通过异步的方式,在系统加载存储池时实现缓存预热,不影响系统启动速度。

【专利附图】

【附图说明】
[0034]图1为二级缓存设备上元数据组织方式示意图;
[0035]图2为混合存储池1数据流示意图;
[0036]图3为本发明扫描流程示意图;
[0037]图4为本发明预热流程示意图;
[0038]图5为本发明装置的结构示意图。

【具体实施方式】
[0039]下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
[0040]本发明实施例提供一种加速二级缓存预热的方法,该方法在二级缓存设备上保存与二级缓存数据相应的元数据,并对二级缓存数据进行压缩处理,实现二级缓存数据的写入和读取。本发明方法主要包含以下几个要点:
[0041]1、引入一种元数据保存方式,如图1所示,通过超级块、索引块和索引块指针,实现元数据以该方式保存在二级缓存设备(SSD或者NVRAM)上。当主缓存中的数据写入二级缓存设备时,其相应的元数据也随之写入二级缓存设备。这样二级缓存设备重新上电后,通过索引元数据,我们可以将保存在二级缓存设备中的数据恢复到主缓存,提供给应用程序使用。
[0042]2、在缓存数据写入和读取过程中增加压缩模块,即数据保存到二级缓存设备前先经过压缩,数据恢复到主缓存时经过解压,这样既保证了数据的完整性,也大大减少了数据、元数据在二级缓存设备上占用的空间。
[0043]基于上述两点,本发明实施例提供一种加速二级缓存预热的方法对二级缓存数据的写入和读取具体描述如下:
[0044](I)写入过程
[0045]I)如图3所示,周期性扫描主缓存中的缓存数据,获得设定时间内使用次数量少的数据及其相应元数据,该元数据包含主缓存与二级缓存设备间的映射关系;
[0046]2)对步骤I)获得的数据进行压缩处理;
[0047]3)将步骤2)中压缩后的数据及步骤I)中的元数据写入二级缓存设备。
[0048](2)读取过程
[0049]虚拟池在上电时,启动一个异步预热任务,将二级缓存中数据加载到主缓存,加载过程中遍历二级缓存设备上的元数据,读取二级缓存设备中的数据并解压缩后,根据元数据中的映射关系,将数据加载到主缓存中。
[0050]如图4所示,所述遍历二级缓存设备上的元数据具体为:
[0051]a)读取超级块,开始遍历元数据;
[0052]b)判断当前超级块所对应的索引块是否遍历完,若是,则结束,若否,则执行步骤c);
[0053]c)判断当前索引块所对应的索引块指针是否遍历完,若是,则返回步骤a),若否,则执行步骤d);
[0054]d)读取数据并解压缩,返回步骤c)。
[0055]数据加载到主缓存中后,应用程序读取数据时,首先判断是否在主缓存中命中数据时,若是,则直接从主缓存中读取,若否,则向磁盘设备读取,有效避免频繁向磁盘设备发起I/O请求。
[0056]本发明中涉及到的数据1流如图2所示,通过上述过程,可以大大降低系统上电时主缓存的预热时间,提高缓存设备空间的利用率,从而避免向磁盘(disk)发起大量I/O请求,最终提升了存储设备的性能。
[0057]如图5所示,本发明实施例还提供一种实现上述加速二级缓存预热方法的装置,包括:
[0058]异步扫描模块1,用于周期性扫描主缓存中的缓存数据,获得设定时间内使用次数量少的数据;
[0059]压缩模块2,用于对写入二级缓存设备的数据进行压缩或对从二级缓存设备读取的数据进行解压缩;
[0060]异步预热模块3,用于将二级缓存设备中的数据加载到主缓存。
[0061]所述异步预热模块包括:
[0062]元数据遍历单元,用于遍历二级缓存设备中保存的元数据;
[0063]数据传输单元,用于根据元数据遍历结果读取二级缓存设备中的数据并传输给压缩丰吴块。
[0064]上述加速二级缓存预热的装置在初次使用时,需要在应用环境下进行正常预热。
[0065]在本发明实施例中,需要启动二级缓存装置,将主缓存中淘汰的数据和元数据写入二级缓存设备,在系统重新上电时,将二级缓存中的数据恢复到主缓存,这样系统在访问这些数据的时候就可以直接从主缓存中读取。
【权利要求】
1.一种加速二级缓存预热的方法,其特征在于,该方法在二级缓存设备上保存与二级缓存数据相应的元数据,并对二级缓存数据进行压缩处理,实现二级缓存数据的写入和读取,其中, 所述二级缓存数据的写入具体为: 1)周期性扫描主缓存中的缓存数据,获得设定时间内使用次数量少的数据及其相应元数据,该元数据包含主缓存与二级缓存设备间的映射关系; 2)对步骤I)获得的数据进行压缩处理; 3)将步骤2)中压缩后的数据及步骤I)中的元数据写入二级缓存设备; 所述二级缓存数据的读取具体为: 遍历二级缓存设备上的元数据,读取二级缓存设备中的数据并解压缩后,根据元数据中的映射关系,将数据加载到主缓存中。
2.根据权利要求1所述的一种加速二级缓存预热的方法,其特征在于,所述元数据由超级块、索引块和索引块指针组织而成。
3.根据权利要求2所述的一种加速二级缓存预热的方法,其特征在于,所述遍历二级缓存设备上的元数据具体为: a)读取超级块,开始遍历元数据; b)判断当前超级块所对应的索引块是否遍历完,若是,则结束,若否,则执行步骤c); c)判断当前索引块所对应的索引块指针是否遍历完,若是,则返回步骤a),若否,则执行步骤d); d)读取数据并解压缩,返回步骤C)。
4.根据权利要求1所述的一种加速二级缓存预热的方法,其特征在于,数据加载到主缓存中后,应用程序读取数据时,首先判断是否在主缓存中命中数据时,若是,则直接从主缓存中读取,若否,则向磁盘设备读取。
5.根据权利要求1-4任一所述的一种加速二级缓存预热的方法,其特征在于,所述二级缓存设备包括SSD或NVRAM。
6.一种加速二级缓存预热的装置,其特征在于,包括: 异步扫描模块,用于周期性扫描主缓存中的缓存数据,获得设定时间内使用次数量少的数据; 压缩模块,用于对写入二级缓存设备的数据进行压缩或对从二级缓存设备读取的数据进行解压缩; 异步预热模块,用于将二级缓存设备中的数据加载到主缓存。
7.根据权利要求6所述的一种加速二级缓存预热的装置,其特征在于,所述异步预热模块包括: 元数据遍历单元,用于遍历二级缓存设备中保存的元数据; 数据传输单元,用于根据元数据遍历结果读取二级缓存设备中的数据并传输给压缩模块。
【文档编号】G06F12/08GK104239231SQ201410441302
【公开日】2014年12月24日 申请日期:2014年9月1日 优先权日:2014年9月1日
【发明者】卢波 申请人:上海爱数软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1