CN109359063A - 面向存储系统软件的缓存置换方法、存储设备及存储介质 - Google Patents
面向存储系统软件的缓存置换方法、存储设备及存储介质 Download PDFInfo
- Publication number
- CN109359063A CN109359063A CN201811198282.5A CN201811198282A CN109359063A CN 109359063 A CN109359063 A CN 109359063A CN 201811198282 A CN201811198282 A CN 201811198282A CN 109359063 A CN109359063 A CN 109359063A
- Authority
- CN
- China
- Prior art keywords
- access request
- chained list
- storage equipment
- spatial cache
- caching
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种面向存储系统软件的缓存置换方法,包括:存储设备获取服务器发来的访问请求;存储设备判断访问请求是否为大块连续读写数据;当访问请求是大块连续读写数据时,存储设备分配访问请求直接访问后端磁盘;当访问请求不是大块连续读写数据时,存储设备分配访问请求访问前端缓存;其中,存储设备包括前端缓存、后端磁盘及用于控制前端缓存和后端磁盘工作的存储软件;本申请实施例还提供一种存储设备及存储介质,用于执行上述方法;本申请通过对LRU算法进行改进,首先判断访问请求是否为大块连续读写数据,若是则直接分配其访问后端磁盘,防止大块连续读写数据存储在缓存空间中覆盖了热点数据,提升缓存质量和IO访问效率。
Description
技术领域
本发明涉及存储技术领域,具体涉及一种面向存储系统软件的缓存置换方法、存储设备及存储介质。
背景技术
缓存置换算法是指令的一个明细表,用于提示计算设备的缓存信息中哪些条目应该被删去,从而节省缓存空间,同时又不影响缓存的使用效率;其核心思路为,在有限的缓存空间中删去一些用户不常用的缓存,保留常用的缓存。目前常用的缓存置换算法主要包括:
最不经常使用算法(least frequently used,LFU):这个缓存算法使用一个计数器来记录条目被访问的频率。通过使用LFU缓存算法,最低访问数的条目首先被移除。这个方法并不经常使用,因为它无法对一个拥有最初高访问率之后长时间没有被访问的条目缓存负责。
最近最少使用算法(least least recently used,LRU):这个缓存算法将最近使用的条目存放到靠近缓存顶部的位置。当一个新条目被访问时,LRU将它放置到缓存的顶部。当缓存达到极限时,较早之前访问的条目将从缓存底部开始被移除。
现有技术中,对于LRU算法来说,依然存在缺陷。例如,当有连续对存储设备进行数据读写的访问请求(input/output,IO)访问缓存时,如果之前内存中没有存缓存这些数据,那么这些连续IO请求会替代原来的缓存数据驻留在内存中,如果这些数据的访问率很低(非热点数据),则会严重影响缓存的性能。同时,内存、缓存一般使用flash、SSD等闪存介质,而最终存储数据的磁盘一般都是机械盘。其中,闪存介质的优势主要在于小块数据的随机读写,对大块数据的顺序读写方面相对于机械盘并没有优势。
因此,现有技术中所存在的上述问题还有待于改进。
发明内容
本发明实施例提供一种面向存储系统软件的缓存置换方法、存储设备及存储介质,能够对服务器的访问请求进行判断,当该访问请求为大块连续读写数据时,存储设备分配该访问数据直接跳过前端缓存,对后端磁盘进行访问,以节省缓存空间,避免大块连续读写数据覆盖缓存中的热点数据;当该访问请求不是大块连续读写数据时,依然分配访问请求访问缓存,从而实现缓存的功能。
有鉴于此,本申请第一方面提供一种面向存储系统软件的缓存置换方法,该方法包括:存储设备获取服务器发来的访问请求;其中,该访问请求,可以是大块连续读写数据,也可以是小块的读写数据、小块读取数据或者小块写入数据;该存储设备判断该访问请求是否为大块连续读写数据;当该访问请求是大块连续读写数据时,该存储设备分配该访问请求直接访问后端磁盘;当该访问请求不是大块连续读写数据时,该存储设备分配该访问请求访问前端缓存;其中,该存储设备包括该前端缓存、该后端磁盘及用于控制该前端缓存和该后端磁盘工作的存储软件。由以上第一方面可见,存储设备在接收到服务器发来的访问请求之后,会对该访问请求进行判断,若该访问请求为大块连续读写数据,则直接分配该访问请求访问后端磁盘,从而防止大块连续读写数据对缓存中热点数据的覆盖;若该访问请求不是大块连续读写数据,则分配该访问请求访问前端缓存,进行正常的LRU访问;通过上述方式提高了IO访问的效率。
结合上述第一方面,在第一种可能的实现方式中,该存储设备获取服务器发来的访问请求之前,还包括:该存储设备在该前端缓存中设置第一缓存空间及第二缓存空间,其中,该第二缓存空间的内存大小为第一缓存容量;该存储设备在该前端缓存中设置第一链表和第二链表;其中,该第一链表用于管理该第一缓存空间的数据项,该第二链表用于管理该第二缓存空间的数据项;该第二链表的头部与该第一链表的尾部相接;其中,该第二链表可以用于接收该第一链表淘汰的数据;该存储设备判断该访问请求是否为大块连续读写数据,包括:该存储设备分配该访问请求访问该第一链表;该存储设备控制该第一链表读取内存大小为第一缓存容量的访问请求;当该第一缓存容量的访问请求所要求访问的后端磁盘的物理地址为连续时,该存储设备判断该访问请求为大块连续读写数据;当该第一缓存容量的访问请求所要求访问的后端磁盘的物理地址不连续时,该存储设备判断该访问请求不是大块连续读写数据。由以上第一方面可见,存储设备划分第一缓存空间和第二缓存空间两个逻辑空间,并构建第一链表和第二链表用于对该第一缓存空间和该第二缓存空间的数据项进行管理,其中,当访问请求为非大块连续读写数据时,该第一链表用于接收访问请求,该第二链表用于接收该第一链表的淘汰数据,从而实现普通的LRU算法;在大块连续读写数据对存储设备进行访问的情况下,该第一缓存容量为判断的阈值,当访问数据容量大于第一缓存容量且所要求访问的后端磁盘的物理地址为连续时,存储设备判断改访问请求为大块连续读写数据,此时,由该第二缓存空间来对第一缓存容量的访问请求进行缓存,其余部分的访问请求直接访问后端磁盘,从而通过划分两个缓存逻辑空间的方式,实现了对大块连续读写数据的甄别。
结合上述第一方面第一种可能的实现方式,在第二种可能的实现方式中,该存储设备判断该访问请求是否为大块连续读写数据之后,还包括:该存储设备将存储在该第一链表中的该第一缓存容量的访问请求的数据项插入该第二链表中;当该访问请求再次访问该存储设备时,该存储设备控制该第二链表将该数据项插入该第一链表中。由以上第二种可能的实现方式可见,对于访问请求为大块连续读写数据在存储设备中的存储,分为两个部分,一是第一缓存容量的访问请求,被存储在前端缓存中;二是其余部分的访问请求,存储在后端磁盘中;其中,存储在前段缓存中的部分,首先由第一链表接收,用于判断该访问请求是否为大块连续读写数据,判断完成后,第一链表将该部分数据放入第二链表中,作为对该部分数据的淘汰,若该访问请求再次访问存储设备,说明该访问请求为热点数据,此时,将该部分数据重新放入第一链表中作为热点缓存使用,既避免了非热点大块连续读写数据在缓存中覆盖热点数据的情况,又能够兼顾大块连续读写数据作为热点数据的情形。
结合上述第一方面第一种可能的实现方式,在第三种可能的实现方式中,该存储设备分配该访问请求访问该第一链表,还包括:该存储设备通过该第一链表及该第二链表查询该访问请求是否命中该第一缓存空间或该第二缓存空间中的数据项;当该访问请求命中该第一缓存空间或该第二缓存空间时,该存储设备在该第一链表的头部建立第一节点;当该访问请求没有命中该第一缓存空间或该第二缓存空间时,该存储设备新建第二节点插入到该第一链表的头部。由以上第三种可能的实现方式可见,由于该第一缓存空间和该第二缓存空间对访问请求起到了判断的作用,因此访问请求在访问存储设备时,必须首先通过该第一缓存空间或该第二缓存空间,才能实现本发明实施例所公开的方法,因此,当访问请求没有命中该第一缓存空间或该第二缓存空间中的数据项时,存储设备建立该第二节点,确保访问请求无论如何都先进入第一缓存空间或第二缓存空间。
本申请第二方面提供一种存储设备,该存储设备具有实现上述第一方面或第一方面任意一种可能实现方式的方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
本申请第三方面提供一种存储设备,包括:处理器和存储器;该存储器用于存储计算机执行指令,当该智能设备运行时,该处理器执行该存储器存储的该计算机执行指令,以使该测试服务器执行如上述第一方面或第一方面任意一种可能实现方式的方法。
本申请第四方面提供一种计算机可读存储介质,包括指令,当该指令在计算机设备上运行时,使得该计算机设备执行如上述第一方面或第一方面任意一种可能实现方式的方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
本发明实施例中,提供了一种面向存储系统软件的缓存置换方法、存储设备及存储介质,对LRU算法进行了改进,通过把缓存划分为第一缓存空间和第二缓存空间,得到两个独立的逻辑空间,创建第一链表和第二链表分别对该第一缓存空间和该第二缓存空间进行管理,其中,该第一缓存空间用于缓存热点数据,实现LRU算法,该第二缓存空间用于缓存大块连续IO数据。当没有连续IO访问请求时,从逻辑角度该第一缓存空间和该第二缓存空间可看做一个整体,第二链表可以看做第一链表的一部分,用于接收第一链表淘汰的数据,作用等同于一个LRU。当有连续IO访问缓存时,第二链表缓存连续IO的前N字节(第一缓存容量)的数据,其中,该第一缓存容量作为一个阈值,判断IO访问是否为连续IO访问缓存,剩下的数据直接访问后端磁盘。通过这种方式,在不破坏缓存中原有数据的同时,识别没有被缓存的连续IO请求,提高IO访问效率。
附图说明
图1为本申请实施例中服务器与存储设备数据交互的拓扑图;
图2为本申请实施例中的面向存储系统软件的缓存置换方法的一实施例示意图;
图3为本申请实施例中的面向存储系统软件的缓存置换方法另一实施例示意图;
图4为本申请实施例中的面向存储系统软件的缓存置换方法另一实施例示意图;
图5为本申请实施例中的面向存储系统软件的缓存置换方法另一实施例示意图;
图6为本申请实施例中的面向存储系统软件的缓存置换方法另一实施例示意图;
图7为本申请实施例中存储设备的示意图;
图8为本申请实施例中存储设备的装置示意图。
具体实施方式
本发明实施例提供一种面向存储系统软件的缓存置换方法、存储设备及存储介质,能够在存储设备接收到服务器访问请求时,对该访问请求进行判断,当该访问请求为大块连续读写数据时,分配该访问请求跳过前端缓存直接访问后端磁盘,从而防止大块连续读写数据覆盖缓存中的热点数据。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
如图1所示,存储设备10的主要功能是存储程序和各种数据,并能在计算机运行过程中高速、自动地完成程序或数据的存取。随着网络30云计算技术的诞生,出现了服务器20和存储设备10分离的现象,存储设备10对数据进行存储,服务器20通过网络30向访问存储设备10发送访问请求实现数据的读取,在服务器20与存储设备10信息交互的过程中,缓存11就是数据交换的缓冲区(cache),当某一硬件要读取数据时,会首先从缓存11中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中找。由于缓存11的运行速度比内存快得多,故缓存11的作用就是帮助硬件更快地运行。然而,缓存11空间的内存容量是有限的,当内存容量满时,需要按照一定的缓存11算法,删去一些用户不常使用的缓存11,目前,较常使用的算法包括最近最少使用算法(least least recently used,LRU),这个缓存11算法将最近使用的条目存放到靠近缓存11顶部的位置。当一个新条目被访问时,LRU将它放置到缓存11的顶部,当缓存11达到极限时,较早之前访问的条目将从缓存11底部开始被移除,从而实现对缓存11空间的清理。然而,在LRU算法中,当有连续对存储设备10进行数据读写的访问请求(input/output,IO)访问缓存11时,如果之前内存中没有存缓存11这些数据,那么这些连续IO请求会替代原来的缓存11数据驻留在内存中,如果这些数据的访问率很低(非热点数据),则会严重影响缓存11的性能;同时,在存储设备10中,内存、缓存11一般使用flash、SSD等闪存介质,而最终存储数据的磁盘12一般都是机械盘。其中,闪存介质的优势主要在于小块数据的随机读写,对大块数据的顺序读写方面相对于机械盘并没有优势。
为解决上述问题,本发明实施例提供一种面向存储系统软件的缓存置换方法,在存储设备接收到来自服务器的访问请求时,首先对该访问请求进行判断,确认其是否为大块连续IO请求,若该访问请求为大块连续IO请求,则分配该访问请求直接访问后端磁盘,避免该大块连续IO请求覆盖缓存中的热点数据,若该访问请求不是大块连续IO请求,则分配该访问请求按照正常的IRU算法对缓存进行访问,为便于理解,下面对本申请实施例中的具体流程进行描述,请参阅图2,本申请实施例中面向存储系统软件的缓存置换方法的一个实施例包括。
201、存储设备获取服务器发来的访问请求。
本实施例中,当服务器需要从存储设备中获取数据时,向存储设备发出访问请求,该存储设备对该访问请求进行获取。
202、存储设备判断访问请求是否为大块连续读写数据。
本实施例中,该存储设备按照预置的方式对该访问请求进行判断,确认其是否为大块连续读写数据。
203、当访问请求是大块连续读写数据时,存储设备分配访问请求直接访问后端磁盘;
本实施例中,当访问请求是大块连续读写数据时,存储设备分配该访问请求跳过前端缓存直接访问后端磁盘,从而杜绝大块连续读写数据覆盖缓存中热点数据的情况,同时充分利用了后端磁盘读取大块连续数据的优势。
204、当访问请求不是大块连续读写数据时,存储设备分配访问请求访问前端缓存。
本实施例中,对于非大块连续读写数据,按照普通LRU算法,存储设备分配该访问请求访问前端缓存,一方面使得缓存功能正常运作,同时发挥闪存介质对于小块数据的随机读写的优势。
本实施例中,该存储设备包括该前端缓存、该后端磁盘及用于控制该前端缓存和该后端磁盘工作的存储软件;工作过程中,当存储设备接收到服务器发来的访问请求时,由该存储软件来对该访问请求进行判断,当该访问请求是大块连续读写数据时,该存储软件分配该访问请求直接访问后端磁盘;当该访问请求不是大块连续读写数据时,该存储软件分配该访问请求访问前端缓存;通过存储软件对存储设备的存储空间进行资源分配,杜绝了大块连续读写数据覆盖缓存中热点数据的情况,同时充分利用的闪存介质和机械盘各自的存储优势。
需要说明的是,上述步骤在工作的过程中,存储设备需要对访问请求是否为大块连续读写数据进行判断,对于该判断,本申请实施例提供如下一种实施方式。为便于理解,下面对该种情况的具体流程进行描述,请参阅图3,本申请实施例中面向存储系统软件的缓存置换方法的一个实施例包括。
301、存储设备在前端缓存中设置第一缓存空间及第二缓存空间。
本实施例中,该第二缓存空间的内存大小为第一缓存容量,该第一缓存容量,作为判断大块连续读写数据的一个阈值。
302、存储设备在前端缓存中设置第一链表和第二链表。
本实施例中,该第一链表用于管理该第一缓存空间的数据项,该第二链表用于管理该第二缓存空间的数据项;该第二链表的头部与该第一链表的尾部相接;通过该种方式,在执行LRU算法时,可以理解为,第二链表为第一链表的回收站,用于储存第一链表所淘汰的数据项。
303、存储设备获取服务器发来的访问请求。
本实施例中,本步骤与步骤201相同,此处不再赘述。
304、存储设备分配访问请求访问第一链表。
本实施例中,访问请求统一访问第一链表,由第一链表来对访问请求进行判断,该第二链表的作用是接收存储第一链表所淘汰的数据。
305、存储设备控制第一链表读取内存大小为第一缓存容量的访问请求。
本实施例中,假设该访问请求的大小为2MB,该第一缓存容量的大小为512Kb,在该访问请求访问第一链表时,该第一链表只读取该访问请求512Kb的数据,在后续步骤中通过这512kKb的数据来对该访问请求进行判断,从而避免了大块连续读写数据覆盖缓第一链表中热点数据的情况。
306、当第一缓存容量的访问请求所要求访问的后端磁盘的物理地址为连续时,存储设备判断访问请求为大块连续读写数据。
307、当第一缓存容量的访问请求所要求访问的后端磁盘的物理地址不连续时,存储设备判断访问请求不是大块连续读写数据。
本实施例中,服务器发送的访问请求中,会携带有要求访问的后端磁盘的地址,从而读取到后端磁盘中相应的数据,若访问请求为大块连续读写的访问数据,其要求访问的后端磁盘地址必然是连续的,因此,通过这个特征,即可判定该访问请求是否为大块连续读写数据。
308、当访问请求是大块连续读写数据时,存储设备分配访问请求直接访问后端磁盘;
本实施例中,本步骤与步骤203相同,此处不再赘述。
309、当访问请求不是大块连续读写数据时,存储设备分配访问请求访问前端缓存。
本实施例中,本步骤与步骤204相同,此处不再赘述。
本实施例中,通过第一链表读取访问请求的部分数据,从而判断该访问请求是否为大块连续读写数据,从而可以仅仅通过一小块数据即可实现对访问数据的判断,避免了在判断这个过程中大块连续读写数据覆盖前端缓存中的热点数据。
需要说明的是,在上述步骤中,虽然第一链条仅仅通过读取第一缓存容量的访问请求即可对大块连续读写数据进行识别,但是在第一链条中,仍然缓存了内存容量为第一缓存容量的访问请求,占用了第一链表的存储空间;针对该情况,第一链表可以采取两种措施:一、删去该部分缓存,如果该大块连续读写数据为经常访问存储设备的热点数据,则会造成热点数据的丢失;二、保留该部分缓存,如果该大块连续读写数据为非热点数据,又会浪费第一链表中的缓存空间。针对上述两难的情形,本申请实施例提供一种解决方式,为便于理解,下面对该种情况的具体流程进行描述,请参阅图4,本申请实施例中面向存储系统软件的缓存置换方法的一个实施例包括。
401、存储设备在前端缓存中设置第一缓存空间及第二缓存空间。
本实施例中,本步骤与步骤301相同,此处不再赘述。
402、存储设备在前端缓存中设置第一链表和第二链表。
本实施例中,本步骤与步骤302相同,此处不再赘述。
403、存储设备获取服务器发来的访问请求。
本实施例中,本步骤与步骤201相同,此处不再赘述。
404、存储设备分配访问请求访问第一链表。
本实施例中,本步骤与步骤304相同,此处不再赘述。
405、存储设备控制第一链表读取内存大小为第一缓存容量的访问请求。
本实施例中,本步骤与步骤305相同,此处不再赘述。
406、当第一缓存容量的访问请求所要求访问的后端磁盘的物理地址为连续时,存储设备判断访问请求为大块连续读写数据。
本实施例中,本步骤与步骤306相同,此处不再赘述。
407、当访问请求是大块连续读写数据时,存储设备分配访问请求直接访问后端磁盘;
本实施例中,本步骤与步骤308相同,此处不再赘述。
408、存储设备将存储在第一链表中的第一缓存容量的访问请求的数据项插入第二链表中。
本实施例中,第一链表若不删除,会造成了缓存空间的浪费,针对这种情况,第一链表将该第一缓存容量的访问请求数据存储在第二链表中,从而释放了第一链表的缓存空间,不影响第一链表中LRU算法的正常工作。
409、当访问请求再次访问存储设备时,存储设备控制第二链表将该数据项插入第一链表中。
本实施例中,若该大块连续读写数据为用户经常需要访问的数据,删除缓存空间中该第一缓存容量的访问请求数据会造成热点数据的浪费,因此当同样的访问请求再次访问存储设备时,说明该大块连续读写数据为高频访问请求,应该被标识为热点数据,此时,第二链表将该数据项重新插入回第一链表中,从而使得第一链表对该大块连续读写数据的前第一缓存容量的数据进行缓存,加快了该大块连续读写数据的访问速度,发挥了缓存空间应有的作用。
需要说明的是,上述公开了在接收到访问请求后,第一链表和第二链表通过管理第一缓存空间和第二缓存空间,实现对访问请求的判断和访问控制的步骤,可见,按照上述步骤,访问请求必须首先访问第一链表,才能够使得上述工作步骤完整地实现,然而在实际工作的过程中,访问请求未必每次都命中第一缓存空间,此时,需要对访问请求进行干预,使得访问请求能够按照上述流程进行处理;若访问请求没有命中第一缓存空间,可以分为命中了第二缓存空间和没有命中第二缓存空间两种情况,以下分别进行说明。
一、访问请求命中第二缓存空间。
第一缓存空间与第二缓存空间,是存储软件在前端缓存中划分的逻辑空间,该第二缓存空间为第一缓存空间内划分出来的子空间,因此,可以理解为第二缓存空间是第一缓存空间的一部分,当访问请求命中第缓存空间时,通过移动访问节点,即可使得访问请求首先访问第一链表,为便于理解,下面对该种情况的具体流程进行描述,请参阅图5,本申请实施例中面向存储系统软件的缓存置换方法的一个实施例包括。
501、存储设备在前端缓存中设置第一缓存空间及第二缓存空间。
本实施例中,本步骤与步骤301相同,此处不再赘述。
502、存储设备在前端缓存中设置第一链表和第二链表。
本实施例中,本步骤与步骤302相同,此处不再赘述。
503、存储设备获取服务器发来的访问请求。
本实施例中,本步骤与步骤201相同,此处不再赘述。
504、当访问请求命中第二缓存空间时,存储设备在第一链表的头部建立第一节点。
本实施例中,第一节点为访问请求访问存储设备的起点,当访问请求命中第二缓存空间时,通过在第一链表的头部建立第一节点,引导访问请求从第一链表的头部开始进行访问。
505、存储设备控制第一链表读取内存大小为第一缓存容量的访问请求。
本实施例中,本步骤与步骤305相同,此处不再赘述。
506、当第一缓存容量的访问请求所要求访问的后端磁盘的物理地址为连续时,存储设备判断访问请求为大块连续读写数据。
本实施例中,本步骤与步骤306相同,此处不再赘述。
507、当访问请求是大块连续读写数据时,存储设备分配访问请求直接访问后端磁盘;
本实施例中,本步骤与步骤308相同,此处不再赘述。
508、存储设备将存储在第一链表中的第一缓存容量的访问请求的数据项插入第二链表中。
本实施例中,本步骤与步骤408相同,此处不再赘述。
509、当访问请求再次访问存储设备时,存储设备控制第二链表将该数据项插入第一链表中。
本实施例中,本步骤与步骤409相同,此处不再赘述。
本实施例中,当访问请求命中第二缓存空间时,由于第二缓存空间本来就是第一缓存空间的子空间,二者属于同一逻辑空间,因此,在第一链表的头部建立第一节点,用于引导访问请求访问的起点,从而使得访问请求从第一链表的头部开始访问,确保后续判断处理步骤能够顺利执行。
二、访问请求既没有命中第一缓存空间,也没有命中第二缓存空间。
访问请求既没有命中第一缓存空间也没有命中第二缓存空间,意味着该访问请求没有名称存储设备预设的逻辑空间,此时需要重新做引导,使得该访问请求从第一链表开始访问。为便于理解,下面对该种情况的具体流程进行描述,请参阅图6,本申请实施例中面向存储系统软件的缓存置换方法的一个实施例包括。
601、存储设备在前端缓存中设置第一缓存空间及第二缓存空间。
本实施例中,本步骤与步骤301相同,此处不再赘述。
602、存储设备在前端缓存中设置第一链表和第二链表。
本实施例中,本步骤与步骤302相同,此处不再赘述。
603、存储设备获取服务器发来的访问请求。
本实施例中,本步骤与步骤201相同,此处不再赘述。
604、当访问请求没有命中第一缓存空间或第二缓存空间时,存储设备新建第二节点插入到第一链表的头部。
本实施例中,由于访问请求没有命中第一缓存空间与第二缓存空间,因此需要新建一个第二节点,该第二节点插入到该第一链表的头部,作为访问请求访问的起点,起到了引导访问请求进行访问的作用。
后续步骤可参考步骤505至步骤509,此处不再赘述。
本实施例中,当访问请求没有命中第一缓存空间或第二缓存空间时,存储设备新建第二节点插入到第一链表的头部,用于引导访问请求对第一链表进行访问,从而使得无论访问请求命中缓存中的什么位置,均能够确保访问请求最终都是从第一链表开始访问。
上述主要从服务器与存储设备之间交互的角度对本申请实施例提供的方案进行了介绍。可以理解的是,上述存储设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
从硬件结构上来描述,上述面向存储系统软件的缓存置换方法可以由一个实体设备实现,也可以由多个实体设备共同实现,还可以是一个实体设备内的一个逻辑功能模块,本申请实施例对此不作具体限定。
例如,上述面向存储系统软件的缓存置换方法可以通过图7中的电子设备来实现。图7为本申请实施例提供的电子设备的硬件结构示意图。该电子设备包括至少一个处理器701,通信线路702,存储器703以及至少一个通信接口704。
处理器701可以是一个通用中央处理器(central processing unit,CPU),微处理器,特定应用集成电路(application-specific integrated circuit,服务器IC),或一个或多个用于控制本申请方案程序执行的集成电路。
通信线路702可包括一通路,在上述组件之间传送信息。
通信接口704,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线接入网(radio access network,RAN),无线局域网(wireless local areanetworks,WLAN)等。
存储器703可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyer服务器able programmable read-only memory,EEPROM)、只读光盘(compact discread-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过通信线路702与处理器相连接。存储器也可以和处理器集成在一起。
其中,存储器703用于存储执行本申请方案的计算机执行指令,并由处理器701来控制执行。处理器701用于执行存储器703中存储的计算机执行指令,从而实现本申请上述实施例提供的方法。
可选的,本申请实施例中的计算机执行指令也可以称之为应用程序代码,本申请实施例对此不作具体限定。
在具体实现中,作为一种实施例,处理器701可以包括一个或多个CPU,例如图7中的CPU0和CPU1。
在具体实现中,作为一种实施例,电子设备可以包括多个处理器,例如图7中的处理器701和处理器707。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,电子设备还可以包括输出设备705和输入设备706。输出设备705和处理器701通信,可以以多种方式来显示信息。例如,输出设备705可以是液晶显示器(liquid crystal display,LCD),发光二级管(light emitting diode,LED)显示设备,阴极射线管(cathode ray tube,CRT)显示设备,或投影仪(projector)等。输入设备706和处理器701通信,可以以多种方式接收用户的输入。例如,输入设备706可以是鼠标、键盘、触摸屏设备或传感设备等。
上述的电子设备可以是一个通用设备或者是一个专用设备。在具体实现中,电子设备可以是台式机、便携式电脑、网络服务器、掌上电脑(personal digital assistant,PDA)、移动手机、平板电脑、无线终端设备、嵌入式设备或有图7中类似结构的设备。本申请实施例不限定电子设备的类型。
本申请实施例可以根据上述方法示例对存储设备进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
比如,以采用集成的方式划分各个功能单元的情况下,图8示出了一种存储设备的示意图。
如图8所示,本申请实施例提供的存储设备,包括:
获取单元801,用于获取服务器发来的访问请求;
判断单元802,用于判断所述获取单元801获取到的所述访问请求是否为大块连续读写数据;
分配单元803,用于:
当所述判断单元802判断所述访问请求是大块连续读写数据时,分配所述访问请求直接访问后端磁盘;
当所述判断单元802判断所述访问请求不是大块连续读写数据时,分配所述访问请求访问前端缓存;
其中,所述存储设备包括所述前端缓存、所述后端磁盘及用于控制所述前端缓存和所述后端磁盘工作的存储软件。
可选地,该存储设备还包括设置单元804,用于在所述前端缓存中设置第一缓存空间及第二缓存空间,其中,所述第二缓存空间的内存大小为第一缓存容量;
所述存储设备在所述前端缓存中设置第一链表和第二链表;其中,所述第一链表用于管理所述第一缓存空间的数据项,所述第二链表用于管理所述第二缓存空间的数据项;所述第二链表的头部与所述第一链表的尾部相接;
对应地,所述判断单元802,用于:
分配所述访问请求访问所述设置单元804设置的所述第一链表;
控制所述第一链表读取内存大小为第一缓存容量的访问请求;
当所述第一缓存容量的访问请求所要求访问的后端磁盘的物理地址为连续时,判断所述访问请求为大块连续读写数据;
当所述第一缓存容量的访问请求所要求访问的后端磁盘的物理地址不连续时,判断所述访问请求不是大块连续读写数据。
可选地,该存储设备还包括插入单元805,用于将存储在所述第一链表中的所述第一缓存容量的访问请求的数据项插入所述第二链表中;
当所述访问请求再次访问所述存储设备时,控制所述第二链表将所述数据项插入所述第一链表中。
可选地,该存储设备还包括查询创建单元806,用于:
通过所述第一链表及所述第二链表查询所述访问请求是否命中所述第一缓存空间或所述第二缓存空间中的数据项;
当所述访问请求命中所述第一缓存空间或所述第二缓存空间时,在所述第一链表的头部建立第一节点;
当所述访问请求没有命中所述第一缓存空间或所述第二缓存空间时,新建第二节点插入到所述第一链表的头部。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本发明实施例该的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。
以上对本发明实施例所提供的面向存储系统软件的缓存置换方法、存储设备及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种面向存储系统软件的缓存置换方法,其特征在于,包括:
存储设备获取服务器发来的访问请求;
所述存储设备判断所述访问请求是否为大块连续读写数据;
当所述访问请求是大块连续读写数据时,所述存储设备分配所述访问请求直接访问后端磁盘;
当所述访问请求不是大块连续读写数据时,所述存储设备分配所述访问请求访问前端缓存;
其中,所述存储设备包括所述前端缓存、所述后端磁盘及用于控制所述前端缓存和所述后端磁盘工作的存储软件。
2.根据权利要求1所述的方法,其特征在于,所述存储设备获取服务器发来的访问请求之前,还包括:
所述存储设备在所述前端缓存中设置第一缓存空间及第二缓存空间,其中,所述第二缓存空间的内存大小为第一缓存容量;
所述存储设备在所述前端缓存中设置第一链表和第二链表;其中,所述第一链表用于管理所述第一缓存空间的数据项,所述第二链表用于管理所述第二缓存空间的数据项;所述第二链表的头部与所述第一链表的尾部相接;
所述存储设备判断所述访问请求是否为大块连续读写数据,包括:
所述存储设备分配所述访问请求访问所述第一链表;
所述存储设备控制所述第一链表读取内存大小为第一缓存容量的访问请求;
当所述第一缓存容量的访问请求所要求访问的后端磁盘的物理地址为连续时,所述存储设备判断所述访问请求为大块连续读写数据;
当所述第一缓存容量的访问请求所要求访问的后端磁盘的物理地址不连续时,所述存储设备判断所述访问请求不是大块连续读写数据。
3.根据权利要求2所述的方法,其特征在于,所述存储设备判断所述访问请求是否为大块连续读写数据之后,还包括:
所述存储设备将存储在所述第一链表中的所述第一缓存容量的访问请求的数据项插入所述第二链表中;
当所述访问请求再次访问所述存储设备时,所述存储设备控制所述第二链表将所述数据项插入所述第一链表中。
4.根据权利要求2所述的方法,其特征在于,所述存储设备分配所述访问请求访问所述第一链表,包括:
所述存储设备通过所述第一链表及所述第二链表查询所述访问请求是否命中所述第一缓存空间或所述第二缓存空间中的数据项;
当所述访问请求命中所述第一缓存空间或所述第二缓存空间时,所述存储设备在所述第一链表的头部建立第一节点;
当所述访问请求没有命中所述第一缓存空间或所述第二缓存空间时,所述存储设备新建第二节点插入到所述第一链表的头部。
5.一种存储设备,其特征在于,包括:
获取单元,用于获取服务器发来的访问请求;
判断单元,用于判断所述获取单元获取到的所述访问请求是否为大块连续读写数据;
分配单元,用于:
当所述判断单元判断所述访问请求是大块连续读写数据时,分配所述访问请求直接访问后端磁盘;
当所述判断单元判断所述访问请求不是大块连续读写数据时,分配所述访问请求访问前端缓存;
其中,所述存储设备包括所述前端缓存、所述后端磁盘及用于控制所述前端缓存和所述后端磁盘工作的存储软件。
6.根据权利要求5所述的设备,其特征在于,还包括设置单元,用于在所述前端缓存中设置第一缓存空间及第二缓存空间,其中,所述第二缓存空间的内存大小为第一缓存容量;
所述存储设备在所述前端缓存中设置第一链表和第二链表;其中,所述第一链表用于管理所述第一缓存空间的数据项,所述第二链表用于管理所述第二缓存空间的数据项;所述第二链表的头部与所述第一链表的尾部相接;
所述判断单元,用于:
分配所述访问请求访问所述设置单元设置的所述第一链表;
控制所述第一链表读取内存大小为第一缓存容量的访问请求;
当所述第一缓存容量的访问请求所要求访问的后端磁盘的物理地址为连续时,判断所述访问请求为大块连续读写数据;
当所述第一缓存容量的访问请求所要求访问的后端磁盘的物理地址不连续时,判断所述访问请求不是大块连续读写数据。
7.根据权利要求6所述的设备,其特征在于,还包括插入单元,用于将存储在所述第一链表中的所述第一缓存容量的访问请求的数据项插入所述第二链表中;
当所述访问请求再次访问所述存储设备时,控制所述第二链表将所述数据项插入所述第一链表中。
8.根据权利要求6所述的设备,其特征在于,还包括查询创建单元,用于:
通过所述第一链表及所述第二链表查询所述访问请求是否命中所述第一缓存空间或所述第二缓存空间中的数据项;
当所述访问请求命中所述第一缓存空间或所述第二缓存空间时,在所述第一链表的头部建立第一节点;
当所述访问请求没有命中所述第一缓存空间或所述第二缓存空间时,新建第二节点插入到所述第一链表的头部。
9.一种存储设备,其特征在于,所述存储设备包括:交互装置、输入/输出(I/O)接口、处理器和存储器,所述存储器中存储有程序指令;
所述交互装置用于获取用户输入的操作指令;
所述处理器用于执行存储器中存储的程序指令,执行如权利要求1-4任一所述的方法。
10.一种计算机可读存储介质,包括指令,其特征在于,当所述指令在计算机设备上运行时,使得所述计算机设备执行如权利要求1-4中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811198282.5A CN109359063B (zh) | 2018-10-15 | 2018-10-15 | 面向存储系统软件的缓存置换方法、存储设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811198282.5A CN109359063B (zh) | 2018-10-15 | 2018-10-15 | 面向存储系统软件的缓存置换方法、存储设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109359063A true CN109359063A (zh) | 2019-02-19 |
CN109359063B CN109359063B (zh) | 2021-10-29 |
Family
ID=65349458
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811198282.5A Active CN109359063B (zh) | 2018-10-15 | 2018-10-15 | 面向存储系统软件的缓存置换方法、存储设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109359063B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110058819A (zh) * | 2019-04-19 | 2019-07-26 | 深圳忆联信息系统有限公司 | 基于可变缓存管理机制的主机命令处理方法和装置 |
CN112948286A (zh) * | 2019-12-10 | 2021-06-11 | 阿里巴巴集团控股有限公司 | 数据缓存方法、装置、电子设备及计算机可读介质 |
CN113220212A (zh) * | 2020-02-04 | 2021-08-06 | 阿里巴巴集团控股有限公司 | 存储节点的调度方法、装置、存储节点、设备及可读介质 |
CN113495678A (zh) * | 2020-04-01 | 2021-10-12 | 荣耀终端有限公司 | 一种dm缓存的分配方法及装置 |
CN113918483A (zh) * | 2021-12-14 | 2022-01-11 | 南京芯驰半导体科技有限公司 | 一种多主设备缓存控制方法及系统 |
CN117687932A (zh) * | 2023-08-31 | 2024-03-12 | 荣耀终端有限公司 | 一种内存分配的方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101241420A (zh) * | 2008-03-20 | 2008-08-13 | 杭州华三通信技术有限公司 | 用于提高写地址非连续的数据存储效率的方法和存储设备 |
JP2017204068A (ja) * | 2016-05-10 | 2017-11-16 | 富士通株式会社 | 情報処理装置、キャッシュメモリ制御方法、およびキャッシュメモリ制御プログラム |
US10009412B1 (en) * | 2017-02-09 | 2018-06-26 | International Business Machines Corporation | Distributed file transfer with high performance |
-
2018
- 2018-10-15 CN CN201811198282.5A patent/CN109359063B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101241420A (zh) * | 2008-03-20 | 2008-08-13 | 杭州华三通信技术有限公司 | 用于提高写地址非连续的数据存储效率的方法和存储设备 |
JP2017204068A (ja) * | 2016-05-10 | 2017-11-16 | 富士通株式会社 | 情報処理装置、キャッシュメモリ制御方法、およびキャッシュメモリ制御プログラム |
US10009412B1 (en) * | 2017-02-09 | 2018-06-26 | International Business Machines Corporation | Distributed file transfer with high performance |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110058819A (zh) * | 2019-04-19 | 2019-07-26 | 深圳忆联信息系统有限公司 | 基于可变缓存管理机制的主机命令处理方法和装置 |
CN112948286A (zh) * | 2019-12-10 | 2021-06-11 | 阿里巴巴集团控股有限公司 | 数据缓存方法、装置、电子设备及计算机可读介质 |
CN113220212A (zh) * | 2020-02-04 | 2021-08-06 | 阿里巴巴集团控股有限公司 | 存储节点的调度方法、装置、存储节点、设备及可读介质 |
CN113495678A (zh) * | 2020-04-01 | 2021-10-12 | 荣耀终端有限公司 | 一种dm缓存的分配方法及装置 |
CN113918483A (zh) * | 2021-12-14 | 2022-01-11 | 南京芯驰半导体科技有限公司 | 一种多主设备缓存控制方法及系统 |
CN113918483B (zh) * | 2021-12-14 | 2022-03-01 | 南京芯驰半导体科技有限公司 | 一种多主设备缓存控制方法及系统 |
CN117687932A (zh) * | 2023-08-31 | 2024-03-12 | 荣耀终端有限公司 | 一种内存分配的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109359063B (zh) | 2021-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109359063A (zh) | 面向存储系统软件的缓存置换方法、存储设备及存储介质 | |
US10866905B2 (en) | Access parameter based multi-stream storage device access | |
US20220382460A1 (en) | Distributed storage system and data processing method | |
US6047356A (en) | Method of dynamically allocating network node memory's partitions for caching distributed files | |
EP2478441B1 (en) | Read and write aware cache | |
CN101493826A (zh) | 基于web应用的数据库系统及其数据管理方法 | |
US10482062B1 (en) | Independent evictions from datastore accelerator fleet nodes | |
CN110555001B (zh) | 数据处理方法、装置、终端及介质 | |
JPH10187505A (ja) | 情報記憶システム及び同システムに適用するデータ配置方法 | |
US20220027284A1 (en) | Reading Sequential Data from Memory Using a Pivot Table | |
US20160041776A1 (en) | Storage system and cache control method | |
US8656119B2 (en) | Storage system, control program and storage system control method | |
CN112632069B (zh) | 哈希表数据存储管理方法、装置、介质和电子设备 | |
CN106484330A (zh) | 一种混合磁盘分层数据优化方法和装置 | |
KR20180086120A (ko) | 테일 레이턴시를 인식하는 포어그라운드 가비지 컬렉션 알고리즘 | |
CN110727403B (zh) | 元数据管理方法及装置 | |
CN104951239B (zh) | 高速缓存驱动器、主机总线适配器及其使用的方法 | |
US20210132987A1 (en) | Computer program for asynchronous data processing in a database management system | |
CN103345451A (zh) | 一种在多核处理器中缓冲数据的方法 | |
US11593268B2 (en) | Method, electronic device and computer program product for managing cache | |
CN107133183B (zh) | 一种基于tcmu虚拟块设备的缓存数据访问方法及系统 | |
CN110287152A (zh) | 一种数据管理的方法以及相关装置 | |
JP5969122B2 (ja) | ホストバスアダプタおよびシステム | |
CN113343045B (zh) | 一种数据缓存方法及网络设备 | |
CN108920095A (zh) | 一种基于crush的数据存储优化方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |