一种数据缓存方法、装置及系统的制作方法

文档序号:6532526阅读:123来源:国知局
一种数据缓存方法、装置及系统的制作方法
【专利摘要】本发明提供了一种数据缓存方法及装置,应用于控制器中,所述控制器和存储设1备连接,控制器包括一级缓存,所述存储设备包括二级缓与存储器,所述二级缓存用于中继所述一级缓存与所述存储器之间交互的数据,方法包括:查询二级缓存的命中率,如果低于扩容阈值,从所述存储器中获取存储空间给所述二级缓存使用。本发明可以提高二级缓存的命中率。
【专利说明】一种数据缓存方法、装置及系统
【技术领域】
[0001]本发明涉及IT领域,特别涉及一种存储技术。
【背景技术】
[0002]在存储领域中,磁盘等存储介质虽然可以提供大量的存储空间,但数据的读/写(Input/Output, I/O)的速度往往不高。为了提高数据的读/写速度,会使用缓存(Cache)来暂存数据。主机读数据时,数据先从磁盘读取到控制器的缓存中,再发给主机;主机往磁盘写数据时,先把数据发送给缓存,再从缓存把数据写入主机中。
[0003]控制器中,常见的作为缓存的存储介质例如同步动态随机存储设备(SynchixmousDynamic Random Access Memory, SDRAM),往往成本较高,因此厂商为存储系统提供的SDRAM存储空间有限。为了节约成本,部分厂商使用了多级缓存技术,把原来的SDRAM作为一级缓存,在SDRAM之外增加相对廉价的闪存(Flash Memory)介质例如固态硬盘(Solidstate disk, SSD)作为第二级的缓存,称为 SSD Cache (SSD 缓存)。SSD Cache 位于 SDRAM和磁盘之间,当SDRAM的空间不够用时,把SDRAM中的数据转发到SSD Cache中,然后由SSDCache把数据写入磁盘。
[0004]然而,由于SSD的成本仍然比磁盘等介质更高,因此二级缓存的空间仍然是有限的。当短时间内出现有大量的数据读/写操作时,SSD的存储空间无法满足需求,造成SSD和SDRAM之间会出现数据阻塞。以至于对部分读/写请求所对应的数据而言,存储系统不得不绕过SSD Cache,直接在SDRAM和磁盘之间进行传递。这种绕开二级缓存SSD的做法也称为SSD没有命中,由于磁盘的读/写速度比SDRAM、SSD都低,SSD命中率越低,对存储系统整体效率的影响越明显。
[0005]如何提高二级缓存的命中率,是需要解决的问题。

【发明内容】

[0006]本发明提供一种数据缓存技术,可以提高二级缓存的命中率。
[0007]第一方面,本发明提供一种数据缓存方法,应用于控制器中,所述控制器和存储设备连接,控制器包括一级缓存,所述存储设备包括二级缓与存储器,所述二级缓存用于存储一级缓存发往存储器的数据,所述方法包括:查询所述二级缓存对读请求的命中率;判断命中率是否低于扩容阈值,如果低于所述扩容阈值,从所述存储器中获取存储空间给所述二级缓存使用,其中,从所述存储器中获取的存储空间是新增存储空间;使用所述二级缓存中新增存储空间,缓存所述一级缓发送的存储数据。
[0008]第二方面,本发明提供一种数据缓存装置,用于对存储设备的存储空间进行管理,存储设备包括二级缓存与存储器,该装置包括:命中率查询模块,用于查询二级缓存对读请求的命中率,所述二级缓存用于缓存一级缓存发送的数据;扩容模块,用于判断命中率是否低于扩容阈值,如果低于所述扩容阈值,从所述存储器中获取存储空间给所述二级缓存使用,其中,从所述存储器中获取的存储空间是新增存储空间;缓存模块,用于使用所述新增存储空间,缓存所述一级缓存发往所述存储器发送的存储数据。
[0009]本发明用存储器的存储空间对二级缓存扩容,提高了二级缓存的命中率。
【专利附图】

【附图说明】
[0010]为了更清楚地说明本发明实施例技术方案,下面将对实施例所需要使用的附图作简单地介绍,下面描述中的附图仅仅是本发明的一些实施例,还可以根据这些附图获得其他的附图。
[0011]图1是本发明实施例结构图;
[0012]图2是本发明一种数据缓存方法的实施例流程图;
[0013]图3是本发明一种数据缓存装置实施例的结构图。
【具体实施方式】
[0014]下面将结合本发明实施例中的附图,对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例所获得的所有其他实施例,都属于本发明保护的范围。
[0015]本发明存储系统由控制器和存储设备组成。存储设备提供存储空间,控制器对存储设备提供管理,并对主机提供读/写访问,对主机而言,存储设备可以是不可见的。存储设备和控制器在物理上可以是分开的两个设备;也可以集成在一个设备内,二者集成在一个设备时可以称为存储服务器。
[0016]控制器包括处理器和缓存,本发明实施例中把控制器中的缓存称为一级缓存。存储设备由缓存和多个存储器组成,本发明实施例把存储设备提供的缓存称为二级缓存。控制器发往存储设备的数据,先存入一级缓存,存入一级缓存以后。一级缓存中的数据可以根据数据的冷热程度,周期性的把相对冷的数据转移到二级缓存。二级缓存中的数据,周期性的把相对冷的数据转移到存储器中。把上一级存储器件中相对较冷的数据转移到下一级存储器件的过程,也称为淘汰。此外,控制器可以在数据写入一级缓存后,发送写入完成的响应消息给主机,告诉主机已经完成写入操作;也可以在数据写入存储器后,发送写入完成的响应消息给主机,告诉主机已经完成写入操作。
[0017]一级缓存和二级缓存可以是同一种存储介质,也可以不同。当采用不同介质时,一级缓存读/写速度可以比二级缓存更快,成本也更高,例如一级缓存是SDRAM,而二级缓存31是SSD。一级缓存和二级缓存使用的存储介质本身,可以是易失性存储RAM (RandomAccess Memory),也可以是非易失性存储。但是对控制器而言,把他们作为易失性存储使用,一级缓存和二级缓存中的存储的数据都可以通过老化算法进行淘汰,例如使用冷热数据的识别方法进行淘汰,以提高它们的利用率。本发明实施例中,一级缓存可以再次细分为多个不同的小级别,可以每个级别采用不同的存储介质,小级别存储介质之间串联,并通过淘汰算法进行数据传递。
[0018]由于缓存的读写速度总体比存储器更高。因此在接收到主机的读数据时,控制器优先从一级缓存、一级缓存中获取读请求数据,如果没有找到,再到存储器中获取读请求数据。在某一个介质中找到读请求数据称为命中,在一定数量的读请求中,某个介质被命中的比例,称为这个介质的命中率,命中率用于记录从二级缓存中读取待数据时,成功读取的数量或者比例。
[0019]具体而言,如果一级缓存被命中,也就是说一级缓存中存在读请求数据,则一级缓存把读请求数据发送给主机;如果二级缓存被命中,则读请求数据从二级缓存发给一级缓存,然后从一级缓存发送给主机;如果存储器被命中,则,则读请求数据从存储器发给一级缓存,然后从一级缓存发送给主机。
[0020]出于成本的考虑,二级缓存SSD的存储空间是有限的,当短期有大量读请求时,往往会导致二级缓存命中率降低。虽然可以通过增加二级缓存的总容量来部分的解决这个问题,然而这种提高总容量后,会引起二级缓存的总利用率降低,这与降低二级缓存的成本这一目标是背道而驰的。此外,存储设备在出厂时其内部已经安装二级缓存、存储器等各个部件,用户想要增加额外的缓存,可能存储设备内部已经没有足够的空间安装。即使有空间,这个安装额外缓存的过程也比较复杂,普通用户难以实施。本发明实施例中,符号“/”是“或”的意思。
[0021]本发明实施例可以临时增加二级缓存的存储空间,满足突发性需求,而且实施方便,对成本增加不明显。
[0022]如图1所示,是本发明实施例结构图。主机I通过控制器2访问存储设备3,控制器2中处理器21和一级缓存22通信。一级缓存22和二级缓存31通信,一级缓存和存储器通信32、存储器34以及存储器34通信,一级缓存22和主机I通信。控制器2可以通过二级缓存31和存储设备3中的存储器进行数据交换;可选的,也可以绕过二级缓存31,由一级缓存22经过直连通道访问存储器。
[0023]基于图1的架构,以写数据为例,可以划分为以下步骤:主机发送写请求给一级缓存22 级缓存22可以是SDRAM ;然后一级缓存22把数据缓存到二级缓存31中,接着,二级缓存把数据写入存储设备3中。存储设备3包括多种类型的存储器,例如存储器32是SSD,存储器 33 是 SAS (Serial Attached SCSI)盘,存储器 34 是 SATA (Serial ΑΤΑ)盘,这三种存储器的读写速度依次降低。存储设备3根据数据冷热程度不同,把数据分别存储在不同速度的存储介质中。例如把热数据存储到SSD盘中,普通数据存储到SAS盘中,冷数据存储到SATA盘中。数据的冷热程度可以描述指数据被访问的频度,越频繁被访问的数据越热,反之越冷。
[0024]本发明实施例中,当出现读/写高峰以至二级缓存31命中率降低时,可以把存储器32的一部分存储空间在逻辑上挪给二级缓存使用。如图中所示,把存储器32中的存储空间321挪作二级缓存31中的存储空间311使用,增加了二级缓存31的存储空间。当读/写高峰过去后,二级缓存命中率过高,可以把这部分挪来的空间返还给存储器32。更进一步的,甚至可以在SSD Cache命中率高于预设值时,或者存储器32的存储空间不足时,把原本属于二级缓存31的存储空间挪给存储器32使用。如果把存储器33的存储空间挪给二级缓存31使用,则缓存31将由不同存储介质组成。
[0025]表I是一种策略示例,控制器21周期性查询二级缓存31的命中率(具体而言,可以由处理器21执行这个查询),命中率越低,需要从SSD存储器32分片给二级缓存31的空间越多。除了按比例来分配空间,也可以按容量大小来分配空间,例如命中率每下降5%,从SSD存储器32中分配IGB (吉比特)存储空间给二级缓存31。还可以以固定大小整数倍划分空间给二级缓存31,并且检测划分后命中率的变化情况,直至满足条件。例如以100MB(兆比特)的整数倍把SSD存储器32中存储空间分配给二级缓存31使用,直至命中率达到95%后,才停止分配。
【权利要求】
1.一种数据缓存方法,应用于控制器中,所述控制器和存储设备连接,其特征在于,控制器包括一级缓存,所述存储设备包括二级缓与存储器,所述二级缓存用于存储一级缓存发往存储器的数据,所述方法包括: 查询所述二级缓存对读请求的命中率; 判断命中率是否低于扩容阈值,如果低于所述扩容阈值,从所述存储器中获取存储空间给所述二级缓存使用,其中,从所述存储器中获取的存储空间是新增存储空间; 使用所述二级缓存中新增存储空间,缓存所述一级缓发送的存储数据。
2.如权利要求1所述的方法,其特征在于: 所述存储器的存储介质与所述二级缓存的存储介质相同。
3.如权利要求2所述的方法,其特征在于: 所述存储介质是闪存。
4.如权利要求1所述的方法,其特征在于,所述缓存所述一级缓发送的存待储数据之后,进一步包括: 如果控制器收到对所述存储数据的读请求,则从所述新增存储空间中,获得所述存储数据。
5.如权利要求1所述的方法,其特征在于: 所述一级缓存 和所述存储器之间存在直连通道,所述直连通道旁路所述二级缓存,当所述二级缓存无法命中时,所述一级缓存通过所述直连通道从所述存储器获得数据。
6.如权利要求1所述的方法,其特征在于: 当所述命中率升高至减容阈值时,把所述新增存储空间返还给所述存储器。
7.一种数据缓存装置,用于对存储设备的存储空间进行管理,存储设备包括二级缓存与存储器,其特征在于,该装置包括: 命中率查询模块,用于查询二级缓存对读请求的命中率,所述二级缓存用于缓存一级缓存发送的数据; 扩容模块,用于判断命中率是否低于扩容阈值,如果低于所述扩容阈值,从所述存储器中获取存储空间给所述二级缓存使用,其中,从所述存储器中获取的存储空间是新增存储空间; 缓存模块,用于使用所述新增存储空间,缓存所述一级缓存发往所述存储器发送的存储数据。
8.如权利要求7所述的装置,其特征在于: 所述存储器的存储介质与所述二级缓存的存储介质相同。
9.如权利要求8所述的装置,其特征在于: 所述存储介质是闪存。
10.如权利要求7所述的装置,其特征在于,所述缓存模块进一步用于: 对所述装置收到对所述存储数据的读请求,从所述新增存储空间中,获得所述存储数据。
11.如权利要求1所述的装置,其特征在于,所述一级缓存和所述存储器之间存在直连通道,所述直连通道旁路所述二级缓存,所述缓存模块用于: 当所述二级缓存无法命中时,通过所述直连通道从所述存储器获得数据到所述一级缓存。
12.如权利要求7所述的装置,其特征在于,所示扩容模块进一步用于:当所述命中率升高至减容阈值时,把所述新增存储空间返还给所述存储器。
13.如权利要求7所述的装置,其特征在于,所述装置进一步包括一级缓存,用于缓存数据。
14.一种存储系统,其特征在于:包括权7-13任一项所述的数据缓存装置,以及存储装置,所述存储装置包括二级缓存以及存储器。
15.一种控制器,所述控制器和存储设备连接,所述存储设备包括存储器与二级缓存,其中,所述控制器包括: 一级缓存,用于缓存数据以及用于存储程序指令,和所述二级缓存连接; 处理器,和所述一级缓存连接,通过运行所述程序指令,执行以下步骤: 查询所述二级缓存对读请求的命中率; 判断命中率是否低于扩容阈值,如果低于所述扩容阈值,从所述存储器中获取存储空间给所述二级缓存使用,其中,从所述存储器中获取的存储空间是新增存储空间; 使用所述二级缓存中新增存储空间,缓存所述一级缓发送的存储数据。
16.如权利要求15所述的控制器,所述处理器进一步用于执行: 所述存储器的存储介质与所述二级缓存的存储介质相同。·
17.如权利要求16所述的控制器,所述处理器进一步用于执行: 所述存储介质是闪存。
18.如权利要求15所述的控制器,所述处理器进一步用于执行: 在所述缓存所述一级缓发送的存待储数据之后,如果收到对所述存储数据的读请求,则从所述新增存储空间中,获得所述存储数据。
19.如权利要求15所述的控制器,其中,所述一级缓存和所述存储器之间存在直连通道,所述直连通道旁路所述二级缓存,所述处理器进一步用于执行: 当所述二级缓存无法命中时,通过所述直连通道从所述存储器获得数据发送给所述一级缓存。
20.如权利要求15所述的控制器,其中: 当所述命中率升高至减容阈值时,把所述新增存储空间返还给所述存储器。
21.一种存储系统,包括控制器和存储设备,所述控制器和所述存储设备连接,所述存储设备包括存储器与二级缓存,其中,所述控制器包括: 一级缓存,用于缓存数据以及用于存储程序指令,和所述二级缓存连接; 处理器,和所述一级缓存连接,通过运行所述程序指令,执行以下步骤: 查询所述二级缓存对读请求的命中率; 判断命中率是否低于扩容阈值,如果低于所述扩容阈值,从所述存储器中获取存储空间给所述二级缓存使用,其中,从所述存储器中获取的存储空间是新增存储空间; 使用所述二级缓存中新增存储空间,缓存所述一级缓发送的存储数据。
【文档编号】G06F12/08GK103858112SQ201380002567
【公开日】2014年6月11日 申请日期:2013年12月31日 优先权日:2013年12月31日
【发明者】林宇, 王宇 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1