[发明专利]一种flashcache混合存储系统的缓存调度方法及系统在审
申请号: | 201610258512.7 | 申请日: | 2016-04-22 |
公开(公告)号: | CN107305475A | 公开(公告)日: | 2017-10-31 |
发明(设计)人: | 吴方鸣;陈岚;郝晓冉 | 申请(专利权)人: | 中国科学院微电子研究所 |
主分类号: | G06F3/06 | 分类号: | G06F3/06 |
代理公司: | 北京集佳知识产权代理有限公司11227 | 代理人: | 党丽,王宝筠 |
地址: | 100029 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 flashcache 混合 存储系统 缓存 调度 方法 系统 | ||
技术领域
本发明涉及存储系统领域,特别涉及一种flashcache混合存储系统的缓存调度方法及系统。
背景技术
随着互联网行业的迅速发展,云计算、大数据等技术的兴起让存储系统的处理速度变得越来越重要。机械硬盘(Hard Disk Drive,HDD)是目前大容量存储的主要方式,其容量可以不断的增大,但处理速度却难以增长,这成为制约存储系统速度提高的重要因素。固态硬盘(Solid State Drives,SSD)由固态电子存储芯片阵列而制成,非常适合处理大量的读写访问,但其价格昂贵,寿命有限,因此,基于机械硬盘和固态硬盘这两种存储介质的数据混合存储方案应运而生。
目前,一种主存-固态硬盘-机械硬盘的混合存储结构为其中一种混合存储方案的应用,该混合存储结构中,固态硬盘作为机械硬盘的缓存,flashcache混合存储系统便是这种混合存储结构,flashcache是基于Linux设备映射层框架之上的内核模块,用于接受来自上层下发的读写操作(I/O)请求,并根据请求将热数据调度到固态硬盘作为缓存,进而实现机械硬盘的读写。
在flashcache混合存储系统中,主要采用LRU(Least Recent Used,近期最少使用)算法,将近期最少使用的数据替换出缓存,从而把热数据保存在缓存中,加速数据的处理速度。LRU算法能够较好的保护热数据,然而,在实际应用中,尤其是大量数据的读写时,一次读写的数据会将缓存中的热数据替换出来,造成较多的随机小写,增加了随机的无效块及垃圾块的回收难度,带来更多的写入放大。
发明内容
有鉴于此,本发明的目的在于提供一种flashcache混合存储系统的缓存调度方法及系统,保护热数据和提高命中率,同时减少随机小写的产生。
为实现上述目的,本发明有如下技术方案:
一种flashcache混合存储系统的缓存调度方法,包括:
根据硬盘读写操作请求中的磁盘块号,判断数据是否已缓存在的缓存块中;
若否,则将数据缓存至缓存块中并将对应的元数据结构链接到非热读链表,以及将元数据结构中的热度标志设置为第一热度值;
若是,则判断缓存块对应的元数据结构中的热度标志的值是否不小于第二热度值,若小于,则将热度标志的值增加预定数值,且当热度标志的值等于第二热度值时,将此缓存块对应的元数据结构从非热读链表断开并链接到热读链表,并判断热读链表的长度是否大于长度阈值,若大于,则按照LRU算法,将热读链表的一个缓存块对应的元数据结构中的热度标志的第二热度值减少预定数值,从热读链表断开,并将此缓存块对应的元数据结构链接到非热读链表;
在将数据缓存至缓存块中时,若无空闲缓存块,将非热读链表中的至少部分元数据结构对应的缓存块进行回收。
可选的,在将热度标志的值增加预定数值的步骤包括:若热度标志为第一热度值,则将第一热度值增加预定数值后变为中间热读值,若热度标志为中间热读值,则将中间热度值增加预定数值后变为第二热度值;则,
将热读链表的一个缓存块对应的元数据结构中的热度标志的第二热度值减少预定数值的步骤包括:
将热读链表的一个缓存块对应的元数据结构中的热度标志的第二热度值减少预定数值后变为中间热度值。
可选的,非热读链表和热读链表为LRU链表。
可选的,将非热读链表中的至少部分元数据结构对应的缓存块进行回收的步骤包括:
将非热读链表中元数据结构中的热度标志为第一热度值的缓存块部分或全部回收。
此外,本发明还提供了一种flashcache混合存储系统的缓存调度系统,包括:
缓存块命中判断单元,用于根据硬盘读写操作请求中的磁盘块号,判断数据是否已缓存在的缓存块中;
缓存单元,用于在数据没有缓存在缓存块中时,将数据缓存至缓存块中并将对应的元数据结构连接到非热读链表,,并将缓存块对应的元数据结构中的热度标志设置为第一热度值;
缓存调度单元,用于在数据已缓存在缓存块中时,判断缓存块对应的元数据结构中的热度标志的值是否不小于第二热度值,若小于,则将热度标志的值增加预定数值,且当热度标志的值等于第二热度值时,将此缓存块对应的元数据结构从非热读链表断开并链接到热读链表,并判断热读链表的长度是否大于长度阈值,若大于,则按照LRU算法,将热读链表的一个缓存块对应的元数据结构中的热度标志的第二热度值减少预定数值,从热读链表断开,并将此缓存块对应的元数据结构链接到非热读链表;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院微电子研究所,未经中国科学院微电子研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610258512.7/2.html,转载请声明来源钻瓜专利网。