一种读缓存的方法及装置制造方法

文档序号:6513980阅读:136来源:国知局
一种读缓存的方法及装置制造方法
【专利摘要】本发明提供一种读缓存的方法及装置,用以解决存储系统中数据读取速度慢,等待时间过长的问题。本发明的读缓存的方法包括:获得从存储池的虚拟卷读请求数据的指令;根据所述指令,直接从缓存中读取欲读取的数据;若所述欲读取的数据不在缓存中,则从所述虚拟卷对应的存储设备中读取所述欲读取的数据,并将所述欲读取的数据保存到所述缓存中;其中,所述缓存为物理内存。本发明帮助用户在不用大幅增加硬件成本的情况下,在存储系统中实现高速度读取数据。
【专利说明】一种读缓存的方法及装置

【技术领域】
[0001]本发明涉及提高数据读性能的方法,特别涉及一种读缓存的方法及装置。

【背景技术】
[0002]日常生活中人们对存储的依赖日益提高,平时采用电子化来处理日常事务和存储数据,因此对数据的响应时间也提出了很高要求。数据读写慢,使用者的工作效率大大降低,等待的时间过长,造成资源浪费。因此,如何提升数据读写速度,提高存储系统响应灵敏度,是存储得以推广的重要前提条件。
[0003]内存是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。在存储系统中,通过软件机制,内存可以发挥更大的作用。业内其他厂商也有类似技术,但是存储架构不同,1工作流程也不同,缺乏全面的替换算法,因此数据命中率(数据存在于缓存中的概率)不高,性能提升不显著。


【发明内容】

[0004]本发明的目的在于提供一种读缓存的方法及装置,用以解决存储系统中数据读取速度慢的问题。
[0005]为了实现上述目的,本发明提供了一种读缓存的方法,包括:
[0006]获得从存储池的虚拟卷读请求数据的指令;
[0007]根据所述指令,直接从缓存中读取欲读取的数据;
[0008]若所述欲读取的数据不在缓存中,则从所述虚拟卷对应的存储设备中读取所述欲读取的数据,并将所述欲读取的数据保存到所述缓存中;其中,所述缓存为物理内存。
[0009]其中,上述的读缓存的方法,若所述欲读取的数据的第一部分存在于所述缓存中,则从所述缓存中读取所述第一部分,并从存储设备读取第二部分数据,再将所述第一部分数据和所述第二部分数据合在一起返回给上层应用,同时将所述第二部分数据保存到所述缓存中。
[0010]其中,所述欲读取的数据不存在所述缓存中或者部分存在于所述缓存的情况下,还包括:
[0011]采用替换算法对所述缓存进行替换。
[0012]其中,采用替换算法对所述缓存进行替换的步骤包括:
[0013]将所述缓存中的已使用的数据块采用双向循环链表表示,将最近访问的数据块移到链表的头部;
[0014]将所述链表的尾部的数据块替换掉。
[0015]其中,采用替换算法对所述缓存进行替换的步骤包括:
[0016]将所述缓存中的访问频率低于第一预设值的数据块放入第一队列中;
[0017]将所述缓存中的访问频率高于所述第一预设值的数据块放入第二队列中;
[0018]优先对所述第一队列中的数据块进行替换,并在数据块访问频率达到第二预设值时,将该数据块从所述第一队列调入所述第二队列。
[0019]本发明的实施例还提供了一种读缓存的装置,包括:
[0020]获取模块,用于获取从存储池的虚拟卷读请求数据的指令;
[0021]第一读取模块,用于根据所述指令,直接从缓存中读取欲读取的数据;
[0022]第二读取模块,用于判断若所述欲读取的数据不在缓存中,则从所述虚拟卷对应的存储设备中读取所欲读取的数据,并将所述欲读取的数据保存到所述缓存中;其中,所述缓存为物理内存。
[0023]其中,上述的读缓存的装置,还包括:读取控制模块,用于判断若所述欲读取的数据的第一部分存在于所述缓存中,则从所述缓存中读取所述第一部分,并从存储设备读取第二部分数据,再将所述第一部分数据和所述第二部分数据合在一起返回给上层应用,同时将所述第二部分数据保存到所述缓存中。
[0024]其中,还包括:替换模块,用于在所述欲读取的数据不存在所述缓存或者部分存在所述缓存的情况下,采用替换算法对所述缓存进行替换。
[0025]其中,所述替换模块包括:
[0026]第一控制转移模块,用于将缓存中的已使用的数据块采用双向循环链表表示,将最近访问的数据块移到链表的头部;
[0027]第一替换子模块,用于将所述链表的尾部的数据块替换掉。
[0028]其中,所述替换模块包括:
[0029]第二控制转移模块,用于将所述缓存中的访问频率低于第一预设值的数据块放入第一队列中;
[0030]第三控制转移模块,用于将所述缓存中的访问频率高于所述第一预设值的数据块放入第二队列中;
[0031]第二替换子模块,用于优先对所述第一队列中的数据块进行替换,并在数据块访问频率达到第二预设值时,将该数据块从所述第一队列调入所述第二队列。
[0032]本发明实施例具有以下有益效果:
[0033]本发明实施例的读缓存的方法,直接从缓存中读取欲读取的数据,并当欲读取的数据不存在缓存中时,从虚拟卷对应的存储设备中读取所欲读取的数据,并将所述欲读取的数据保存到所述缓存中,当下次软件或用户再次读取同一文件时直接从缓存中读取,提高了数据读取的速度,解决了存储系统中数据读取速度慢的问题。

【专利附图】

【附图说明】
[0034]图1表示本发明实施例的方法流程图:
[0035]图2表示本发明实施例的1流程图;
[0036]图3表示本发明实施例的内存资源管理示意图;
[0037]图4表示本发明的实施例的结构框图。

【具体实施方式】
[0038]为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合具体实施例及附图进行详细描述。
[0039]本发明实施例提供了一种读缓存的方法,解决了存储系统中数据读取速度慢的问题。
[0040]如图1所示,本发明实施例的读缓存的方法,包括:
[0041]步骤S1:获得从存储池的虚拟卷读请求数据的指令;
[0042]步骤S2:根据所述指令,直接从缓存中读取欲读取的数据;
[0043]步骤S3:若所述欲读取的数据不在缓存中,则从所述虚拟卷对应的存储设备中读取所述欲读取的数据,并将所述欲读取的数据保存到所述缓存中;其中,所述缓存为物理内存。
[0044]在本发明的具体实施例中,如图2所示,在存储系统中部署存储虚拟化软件,将存储系统分为应用层1、存储管理控制层2和存储设备层3三个层面,存储管理控制器4负责管理后端的存储设备,如其中的阵列1、阵列2、阵列3,并将后端所有存储设备整合成一个统一的逻辑存储池,并将池中资源分成虚拟卷,如图中的存储1、存储2、存储3,应用的数据存储在虚拟卷上。本发明实施例对使用该虚拟卷并伴随大量读请求的相关应用提供支持,存储池中的每个虚拟卷可以单独开启或者关闭缓存功能。
[0045]下面具体说明上述实施例的实现过程。
[0046]应用服务器产生的1会请求写入虚拟卷,写入虚拟卷的1会通过链路送给存储管理控制器;存储管理控制器收到1请求后根据类型做不同处理:如果是写10,转入写处理模块,如果是读1则做如下处理:
[0047]根据从存储池的虚拟卷获取的读请求数据的指令,直接从缓存中读取欲读取的数据,若此时虚拟卷没有开启读缓存的功能,则开启读缓存功能后再读取欲读取的数据。
[0048]若所欲读取的数据不在缓存中,则从所述虚拟卷对应的存储设备中读取所欲读取的数据,并将所述欲读取的数据保存到所述缓存中;其中,所述缓存为物理内存,大大提高了读取数据的速度。
[0049]如图3所示,内存资源的组织和管理分两个部分:全局资源管理6和独立资源管理
5。全局资源管理6是指整个驱动使用总的内存资源的管理,根据用户设置对卷进行内存分配和回收操作,同时可以向系统申请更多或者释放多余的内存资源;独立资源管理5是指每个卷根据分配到的内存资源按数据块(chunk)进行组织管理的。segment表示内存申请单元,用开始地址StartAddr和长度length来表示,所有的segment之和就是缓存模块申请的总的内存。针对具体设备而言,如存储I申请的资源11、存储2申请的资源12、存储3申请的资源13,申请的空间以chunk为单位进行组织管理。本发明实施例中的缓存可以为从全部资源申请得到的内存资源也可以为从独立资源申请得到的内存资源。
[0050]其中,若所欲读取的数据的第一部分存在于缓存中,则从所述缓存中读取所述第一部分,并从存储设备读取第二部分数据,再将所述第一部分数据和所述第二部分数据合在一起返回给上层应用,同时将所述第二部分数据保存到所述缓存中。
[0051]其中,所述欲读取的数据不存在所述缓存中或者部分存在于所述缓存的情况下,还包括:
[0052]采用替换算法对所述缓存进行替换。
[0053]其中,一种实现方式中,采用替换算法对所述缓存进行替换的步骤包括:
[0054]将缓存中的已使用的数据块采用双向循环链表表示,将最近访问的数据块移到链表的头部;将链表的尾部的数据块替换掉。
[0055]该替换算法,被称为LRU最近最少使用替换算法,设备的chunk全部被占用后,需要选择其中一个chunk来保存最新的数据。LRU算法可以用双向循环链表来实现,最近访问的chunk移到链表头部,这样在需要替换的时候只要把链表尾部的chunk进行替换就可以,从而提闻缓存的命中率。
[0056]另一实现方式中,采用替换算法对所述缓存进行替换的步骤包括:
[0057]将缓存中的访问频率低于第一预设值的数据块放入第一队列中;
[0058]将缓存中的访问频率高于所述第一预设值的数据块放入第二队列中;
[0059]优先对所述第一队列中的数据块进行替换,并在数据块访问频率达到第二预设值时,将该数据块从第一队列调入第二队列。
[0060]具体的,用二个缓存列队(L,H)来实现。L队列表示访问频率低的队列,H队列表示访问频率高的队列。数据首先进入L队列,当数据块访问频率达到第一预设值时,将数据块从L队列调入H队列。当两队列中的数据块都被占满时,优先对L队列中的数据块进行替换。L队列和H队列内部是通过双向循环链表来实现的,将最近访问的数据块移到链表头部。当L队列中的数据块全部被占用后,需要选择其中一个数据块来保存最新的数据。,这样在需要替换的时候只要把链表尾部的数据块进行替换掉就可以,提高了数据的命中率。
[0061]本发明的上述实施例中,还可以进一步进行对缓存的的运行效果进行统计,方便用户能够直观了解当前缓存的运行情况。
[0062]如图4所示,本发明实施例还提供了一种读缓存的装置,包括:
[0063]获取模块,用于获取从存储池的虚拟卷读请求数据的指令;
[0064]第一读取模块,用于根据所述指令,直接从缓存中读取欲读取的数据;
[0065]第二读取模块,用于判断若所述欲读取的数据不在缓存中,则从所述虚拟卷对应的存储设备中读取所述欲读取的数据,并将所述欲读取的数据保存到所述缓存中;其中,所述缓存为物理内存。
[0066]本发明实施例的读缓存的装置中,还可以进一步包括:读取控制模块,用于判断若所述欲读取的数据的第一部分存在于所述缓存中,则从所述缓存中读取所述第一部分,并从存储设备读取第二部分数据,再将所述第一部分数据和所述第二部分数据合在一起返回给上层应用,同时将所述第二部分数据保存到所述缓存中。
[0067]本发明实施例的读缓存的装置中,还包括:替换模块,用于判断在所述欲读取的数据不存在缓存或者部分存在所述缓存的情况下,采用替换算法对所述缓存进行替换。
[0068]本发明实施例的读缓存的装置中,所述替换模块包括:
[0069]第一控制转移模块,用于将所述缓存中的已使用的数据块采用双向循环链表表示,将最近访问的数据块移到链表的头部;
[0070]第一替换子模块,用于将所述链表的尾部的数据块替换掉。
[0071]本发明实施例的读缓存的装置中,所述替换模块包括:
[0072]第二控制转移模块,用于将所述缓存中的访问频率低于第一预设值的数据块放入第一队列中;
[0073]第三控制转移模块,用于将所述缓存中的访问频率高于所述第一预设值的数据块放入第二队列中;
[0074]第二替换子模块,用于优先对所述第一队列中的数据块进行替换,并在数据块访问频率达到第二预设值时,将该数据块从所述第一队列调入所述第二队列。
[0075]需要说明的是,该读缓存的装置是与上述方法实施例对应的装置,上述方法实施例中所有实现方式均适用于该装置的实施例中,也能达到相同的技术效果。
[0076]本发明实施例的读缓存的方法及装置,解决了存储系统中数据读取速度慢的问题,帮助用户在不用大幅增加硬件成本的情况下,在存储系统中实现高速度读取数据。
[0077]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种读缓存的方法,其特征在于,包括: 获得从存储池的虚拟卷读请求数据的指令; 根据所述指令,直接从缓存中读取欲读取的数据; 若所述欲读取的数据不在所述缓存中,则从所述虚拟卷对应的存储设备中读取所述欲读取的数据,并将所述欲读取的数据保存到所述缓存中;其中,所述缓存为物理内存。
2.根据权利要求1所述的读缓存的方法,其特征在于,若所述欲读取的数据的第一部分存在于所述缓存中,则从所述缓存中读取所述第一部分,并从存储设备读取第二部分数据,再将所述第一部分数据和所述第二部分数据合在一起返回给上层应用,同时将所述第二部分数据保存到所述缓存中。
3.根据权利要求2所述的读缓存的方法,其特征在于,所述欲读取的数据不存在所述缓存中或者部分存在于所述缓存的情况下,还包括: 采用替换算法对所述缓存进行替换。
4.根据权利要求3所述的读缓存的方法,其特征在于,采用替换算法对所述缓存进行替换的步骤包括: 将所述缓存中的已使用的数据块采用双向循环链表表示,将最近访问的数据块移到链表的头部; 将所述链表的尾部的数据块替换掉。
5.根据权利要求3所述的读缓存的方法,其特征在于,采用替换算法对所述缓存进行替换的步骤包括: 将所述缓存中的访问频率低于第一预设值的数据块放入第一队列中; 将所述缓存中的访问频率高于所述第一预设值的数据块放入第二队列中; 优先对所述第一队列中的数据块进行替换,并在数据块访问频率达到第二预设值时,将该数据块从所述第一队列调入所述第二队列。
6.一种读缓存的装置,其特征在于,包括: 获取模块,用于获取从存储池的虚拟卷读请求数据的指令; 第一读取模块,用于根据所述指令,直接从缓存中读取欲读取的数据; 第二读取模块,用于判断若所欲读取的数据不在所述缓存中,则从所述虚拟卷对应的存储设备中读取所述欲读取的数据,并将所述欲读取的数据保存到所述缓存中;其中,所述缓存为物理内存。
7.根据权利要求6所述的读缓存的装置,其特征在于,还包括:读取控制模块,用于判断若所述欲读取的数据的第一部分存在于所述缓存中,则从所述缓存中读取所述第一部分,并从存储设备读取第二部分数据,再将所述第一部分数据和所述第二部分数据合在一起返回给上层应用,同时将所述第二部分数据保存到所述缓存中。
8.根据权利要求7所述的读缓存的装置,其特征在于,还包括:替换模块,用于在所述欲读取的数据不存在缓存或者部分存在所述缓存的情况下,采用替换算法对所述缓存进行替换。
9.根据权利要求8所述的读缓存的装置,其特征在于,所述替换模块包括: 第一控制转移模块,用于将所述缓存中的已使用的数据块采用双向循环链表表示,将最近访问的数据块移到链表的头部; 第一替换子模块,用于将所述链表的尾部的数据块替换掉。
10.根据权利要求8所述的读缓存的装置,其特征在于,所述替换模块包括: 第二控制转移模块,用于将所述缓存中的访问频率低于第一预设值的数据块放入第一队列中; 第三控制转移模块,用于将所述缓存中的访问频率高于所述第一预设值的数据块放入第二队列中; 第二替换子模块,用于优先对所述第一队列中的数据块进行替换,并在数据块访问频率达到第二预设值时,将该数据块从所述第一队列调入所述第二队列。
【文档编号】G06F12/08GK104516827SQ201310454505
【公开日】2015年4月15日 申请日期:2013年9月27日 优先权日:2013年9月27日
【发明者】施苗峰, 陈烨 申请人:杭州信核数据科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1