CN115858421B - 一种缓存管理方法、装置、设备、可读存储介质及服务器 - Google Patents
一种缓存管理方法、装置、设备、可读存储介质及服务器 Download PDFInfo
- Publication number
- CN115858421B CN115858421B CN202310181860.9A CN202310181860A CN115858421B CN 115858421 B CN115858421 B CN 115858421B CN 202310181860 A CN202310181860 A CN 202310181860A CN 115858421 B CN115858421 B CN 115858421B
- Authority
- CN
- China
- Prior art keywords
- page
- cache
- state
- cache page
- data
- 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.)
- Active
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种缓存管理方法、装置、设备、可读存储介质及服务器,属于分布式存储系统领域,用于对存储系统中的缓存进行管理。本申请中首先为缓存页设计了被写入过小于页容量的数据块的小数据块状态以及页中数据完备的更新状态,也就是说单个数据块可以填满/不填满一个缓存页,在这种情况下,可以设计较大容量的缓存页,从而降低了缓存页的切换次数以及访问次数,提升了数据处理效率,且本申请中可以利用链表来维护预申请的缓存页,在需要时从链表中进行申请即可,减少了缓存层与系统缓存池的交互,进一步提升了数据处理效率。
Description
技术领域
本发明涉及分布式存储系统领域,特别是涉及一种缓存管理方法,本发明还涉及一种缓存管理装置、设备、计算机可读存储介质及服务器。
背景技术
分布式文件存储系统通常包括存储服务器及数量庞大的客户端,用户可以通过客户端将数据存储在存储服务器中,近年来在人工智能、大数据等技术的催动下,分布式存储系统的应用越来越多,同时,也对分布式存储系统的性能提出越来越高的要求。
由于写入缓存的速度要高于直接写落盘的速度,所以很多场景下缓存读写的方式优先级高于直读直写的优先级,然而现有技术中缺少一种成熟的缓存管理方法,导致分布式文件存储系统的数据读写效率受到了一定限制。
因此,如何提供一种解决上述技术问题的方案是本领域技术人员目前需要解决的问题。
发明内容
本发明的目的是提供一种缓存管理方法,可以设计较大容量的缓存页,从而降低了缓存页的切换次数以及访问次数,提升了数据处理效率,且减少了缓存层与系统缓存池的交互,进一步提升了数据处理效率;本发明的另一目的是提供一种缓存管理装置、设备、计算机可读存储介质及服务器,可以设计较大容量的缓存页,从而降低了缓存页的切换次数以及访问次数,提升了数据处理效率,且减少了缓存层与系统缓存池的交互,进一步提升了数据处理效率。
为解决上述技术问题,本发明提供了一种缓存管理方法,包括:
确定出客户端发送的缓存写请求指定的待缓存文件当前的待缓存数据块;
判断缓存层中是否存在与所述待缓存数据块对应的第一目标缓存页;
若不存在,则从包含预申请缓存页的链表中取出一个缓存页作为所述第一目标缓存页并将所述待缓存数据块写入所述第一目标缓存页;
根据所述第一目标缓存页本次被写入数据前的页状态以及本次被写入数据后的饱和状态,对所述第一目标缓存页的页状态进行更新;
其中,所述页状态包括被写入过数据的脏状态、页中数据完备的更新状态、被写入过小于页容量的数据块的小数据块状态以及非其他所有页状态的干净状态,所述饱和状态包括饱和与未饱和。
优选地,所述确定出客户端发送的缓存写请求指定的待缓存文件当前的待缓存数据块具体为:
确定出客户端发送的缓存写请求指定的待缓存文件最新的第一参数、第二参数以及用户态地址;
所述判断缓存层中是否存在与所述待缓存数据块对应的第一目标缓存页具体为:
判断根据所述第一参数是否能够从缓存层中找到与所述待缓存数据块对应的第一目标缓存页;
所述将所述待缓存数据块写入所述第一目标缓存页具体为:
将所述第一参数、所述第二参数以及所述用户态地址指向的所述待缓存数据块写入所述第一目标缓存页;
其中,第一参数为所述待缓存文件的本次待写入位置相对于文件起始位置的偏移,第二参数为所述待缓存文件的本次待写入长度,用户态地址为所述待缓存文件的当前地址。
优选地,所述根据所述第一目标缓存页本次被写入数据前的页状态以及本次被写入数据后的饱和状态,对所述第一目标缓存页的页状态进行更新具体为:
若所述本次被写入数据前的页状态为脏状态以及更新状态,则不更新所述第一目标缓存页的页状态;
若所述本次被写入数据后的页状态为脏状态以及小数据块状态且所述饱和状态为不饱和,则不更新所述第一目标缓存页的页状态;
若所述本次被写入数据前的页状态为脏状态以及小数据块状态且所述饱和状态为饱和,则更新所述第一目标缓存页的页状态为脏状态以及更新状态;
若所述本次被写入数据前的页状态为干净状态且所述饱和状态为饱和,则更新所述第一目标缓存页的页状态为脏状态以及更新状态;
若所述本次被写入数据前的页状态为干净状态且所述饱和状态为未饱和,则更新所述第一目标缓存页的页状态为脏状态以及小数据块状态。
优选地,所述将所述待缓存数据块写入所述第一目标缓存页之后,该缓存管理方法还包括:
在所述第一目标缓存页本次被写入数据为首次被写入数据时,将所述第一目标缓存页加入脏缓存页链表;
响应于下刷触发指令,从所述脏缓存页链表中选择缓存页存入存储系统。
优选地,所述在所述第一目标缓存页本次被写入数据为首次被写入数据时,将所述第一目标缓存页加入脏缓存页链表具体为:
在所述第一目标缓存页本次被写入数据为首次被写入数据时,将所述第一目标缓存页加入脏缓存页链表的首部;
所述响应于下刷触发指令,从所述脏缓存页链表的尾部选择缓存页存入存储系统。
优选地,所述响应于下刷触发指令,从所述脏缓存页链表的尾部选择缓存页存入存储系统具体为:
每隔预设周期,判断所述脏缓存页链表尾部的缓存页被加入所述脏缓存页链表的时间是否达到预设时长;
若未达到,则结束;
若达到,则将所述脏缓存页链表尾部的缓存页下刷至存储系统并判断所述脏缓存页链表是否遍历完毕;
若未遍历完毕,则执行所述判断所述脏缓存页链表尾部的缓存页被加入所述脏缓存页链表的时间是否达到预设时长的步骤。
优选地,所述响应于下刷触发指令,从所述脏缓存页链表的尾部选择缓存页存入存储系统具体为:
在从所述包含预申请缓存页的链表中获取缓存页时,判断所述包含预申请缓存页的链表中当前的缓存页总数是否小于预设阈值;
若小于,将所述脏缓存页链表尾部的缓存页下刷至存储系统。
优选地,所述将所述脏缓存页链表尾部的缓存页下刷至存储系统具体为:
判断所述脏缓存页链表尾部的缓存页的页状态是否为脏状态;
若否,将该缓存页从所述脏缓存页链表以及该缓存页所处的文件缓存中删除,并将该缓存页加入所述包含预申请缓存页的链表中;
若是,将所述脏缓存页链表尾部的缓存页所属对象中的所有缓存页,按照对象中的固有次序下刷至存储系统;
将下刷至所述存储系统的缓存页的状态置为干净状态后重新加入所述脏缓存页链表的首部。
优选地,所述将所述脏缓存页链表尾部的缓存页所属对象中的所有缓存页,按照对象中的固有次序下刷至存储系统具体为:
从存储系统中,读取所述脏缓存页链表尾部的缓存页所属对象中的不处于所述更新状态的缓存页对应的落盘数据;
将所述落盘数据合并至对应的所述缓存页;
将所述脏缓存页链表尾部的缓存页所属对象中的所有缓存页,按照对象中的固有次序下刷至所述存储系统。
优选地,所述根据所述第一目标缓存页本次被写入数据前的页状态以及本次被写入数据后的饱和状态,对所述第一目标缓存页的页状态进行更新还包括:
在所述第一目标缓存页本次被写入小数据块的数据后,判断所述第一目标缓存页本次是否为首次被写入小数据块;
若否,则将所述第一目标缓存页中具有相邻或重叠关系的小数据块进行合并;
其中,所述小数据块的数据量小于所述缓存页的额定容量。
优选地,所述在所述第一目标缓存页本次被写入小数据块的数据后,判断所述第一目标缓存页本次是否为首次被写入小数据块具体为:
在所述第一目标缓存页本次被写入小数据块的数据后,将所述第一目标缓存页的计数参数加一,并在所述第一目标缓存页预设数组中记录本次写入的小数据块在所述第一目标缓存页中的位置;
判断所述第一目标缓存页的计数参数的数值是否大于1;
若大于,则判定所述第一目标缓存页本次非首次被写入小数据块;
所述将所述第一目标缓存页中具有相邻或重叠关系的小数据块进行合并具体为:
根据所述预设数组中记录的各个位置,将所述第一目标缓存页中具有相邻或重叠关系的小数据块进行合并。
优选地,所述根据所述第一目标缓存页本次被写入数据前的页状态以及本次被写入数据后的饱和状态,对所述第一目标缓存页的页状态进行更新还包括:
在所述第一目标缓存页本次被写入小数据块的数据后,判断所述第一目标缓存页中被写入的小数据块的数量是否达到预设饱和值;
若达到,则从所述存储系统中,读取所述第一目标缓存页对应的落盘数据;
将所述第一目标缓存页对应的落盘数据合并至所述第一目标缓存页。
优选地,该缓存管理方法还包括:
获取所述缓存层的实时状态以及执行动作;
控制提示器提示所述缓存层的实时状态以及执行动作。
优选地,该缓存管理方法还包括:
确定出所述客户端发送的缓存读请求当前需要读取的第二目标缓存页;
判断所述缓存层中是否存在所述第二目标缓存页;
若存在,则将所述第二目标缓存页中的数据反馈至所述客户端;
若不存在,则从所述包含预申请缓存页的链表中取出一个缓存页作为所述第二目标缓存页;
从所述存储系统中获取所述第二目标缓存页对应的落盘数据;
将所述第二目标缓存页对应的落盘数据合并至所述第二目标缓存页并执行所述将所述第二目标缓存页中的数据反馈至所述客户端的步骤。
优选地,所述确定出所述客户端发送的缓存读请求当前需要读取的第二目标缓存页具体为:
确定出所述客户端发送的缓存读请求最新的第一参数、第二参数以及用户态地址;
根据所述缓存读请求最新的所述第一参数确定出所述缓存读请求当前需要读取的第二目标缓存页;
所述将所述第二目标缓存页中的数据反馈至所述客户端具体为:
根据所述缓存读请求最新的所述第二参数以及所述用户态地址,将所述第二目标缓存页中的数据反馈至所述客户端。
优选地,所述确定出客户端发送的缓存读请求当前需要读取的第二目标缓存页之后,该缓存管理方法还包括:
根据所述第一参数计算本次待预读缓存页的数量;
从所述包含预申请缓存页的链表中取出缓存页作为当前不存在于所述缓存层的所述待预读缓存页;
所述从所述存储系统中获取所述第二目标缓存页对应的落盘数据具体为:
从所述存储系统中获取所述第二目标缓存页以及所述待预读缓存页对应的落盘数据;
该缓存管理方法还包括:
将所述待预读缓存页对应的落盘数据合并至所述待预读缓存页。
为解决上述技术问题,本发明还提供了一种缓存管理装置,包括:
确定模块,用于确定出客户端发送的缓存写请求指定的待缓存文件当前的待缓存数据块;
判断模块,用于判断缓存层中是否存在与所述待缓存数据块对应的第一目标缓存页,若不存在,则触发执行模块;
所述执行模块,用于从包含预申请缓存页的链表中取出一个缓存页作为所述第一目标缓存页并将所述待缓存数据块写入所述第一目标缓存页;
更新模块,用于根据所述第一目标缓存页本次被写入数据前的页状态以及本次被写入数据后的饱和状态,对所述第一目标缓存页的页状态进行更新;
其中,所述页状态包括被写入过数据的脏状态、页中数据完备的更新状态、被写入过小于页容量的数据块的小数据块状态以及非其他所有页状态的干净状态,所述饱和状态包括饱和与未饱和。
为解决上述技术问题,本发明还提供了一种缓存管理设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上所述缓存管理方法的步骤。
为解决上述技术问题,本发明还提供了一种服务器,包括服务器本体以及与所述服务器本体连接的如上所述的缓存管理设备。
为解决上述技术问题,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述缓存管理方法的步骤。
本发明提供了一种缓存管理方法,考虑到较小容量的缓存页会导致同样大小的文件所占缓存页的数量较多,那么由于缓存页的切换次数以及访问次数的提升便会导致数据处理效率的减低,因此本申请中首先为缓存页设计了被写入过小于页容量的数据块的小数据块Small_IO状态以及页中数据完备的更新Update状态,也就是说单个数据块可以填满/不填满一个缓存页,在这种情况下,可以设计较大容量的缓存页,从而降低了缓存页的切换次数以及访问次数,提升了数据处理效率,且本申请中可以利用链表来维护预申请的缓存页,在需要时从链表中进行申请即可,减少了缓存层与系统缓存池的交互,进一步提升了数据处理效率。
本发明还提供了一种缓存管理装置、设备、计算机可读存储介质以及服务器,具有如上缓存管理方法相同的有益效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明是提供的一种缓存管理方法的流程示意图;
图2为本发明提供的一种内核客户端的架构示意图;
图3为本发明提供的另一种缓存管理方法的流程示意图;
图4为本发明提供的一种缓存管理装置的结构示意图;
图5为本发明提供的一种缓存管理设备的结构示意图;
图6为本发明提供的一种计算机可读存储介质的结构示意图。
具体实施方式
本发明的核心是提供一种缓存管理方法,可以设计较大容量的缓存页,从而降低了缓存页的切换次数以及访问次数,提升了数据处理效率,且减少了缓存层与系统缓存池的交互,进一步提升了数据处理效率;本发明的另一核心是提供一种缓存管理装置、设备、计算机可读存储介质及服务器,可以设计较大容量的缓存页,从而降低了缓存页的切换次数以及访问次数,提升了数据处理效率,且减少了缓存层与系统缓存池的交互,进一步提升了数据处理效率。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,图1为本发明是提供的一种缓存管理方法的流程示意图,该缓存管理方法包括:
S101:确定出客户端发送的缓存写请求指定的待缓存文件当前的待缓存数据块;
具体的,考虑到如上背景技术中的技术问题,又结合考虑到较小容量的缓存页会导致同样大小的文件所占缓存页的数量较多,那么由于缓存页的切换次数以及访问次数的提升便会导致数据处理效率的减低,因此本申请中首先为缓存页设计了被写入过小于页容量的数据块的小数据块Small_IO状态以及页中数据完备的更新Update状态,也就是说单个数据块可以填满/不填满一个缓存页,在这种情况下,可以设计较大容量的缓存页,从而达到降低了缓存页的切换次数以及访问次数的目的,有利于提升数据处理效率。
具体的,为了顺利的对用户的缓存写请求进行处理,可以先接收客户端发送的缓存写请求,然后确定出客户端发送的缓存写请求指定的待缓存文件当前的待缓存数据块,这里的缓存数据库是待缓存文件划分的存在次序的缓存数据块,可以将缓存数据块依次写入缓存层。
S102:判断缓存层中是否存在与待缓存数据块对应的第一目标缓存页;
具体的,如果该待缓存数据块之前被写入过缓存层,那么缓存层内便可能已存在与待缓存数据块对应的第一目标缓存页,因此本发明实施例步骤中可以判断缓存层中是否存在与待缓存数据块对应的第一目标缓存页,并根据判断结果触发后续动作,例如如果存在的话,便可以将待缓存数据块写入第一目标缓存页。
S103:若不存在,则从包含预申请缓存页的链表中取出一个缓存页作为第一目标缓存页并将待缓存数据块写入第一目标缓存页;
具体的,如果不存在,那么便可以从包含预申请缓存页的链表中取出一个缓存页作为第一目标缓存页并将待缓存数据块写入第一目标缓存页。
其中,值得一提的是,为了减少缓存层与系统缓存池的交互次数,也即减少缓存层对于缓存页的频繁申请与释放,本发明实施例中可以预先申请若干缓存页,然后通过包含预申请缓存页的链表对这些预申请的缓存页进行维护,在需要使用的时候便可以从链表中取下一个缓存页,而在不再使用某个缓存页的时候便可以将其归还给链表,由于减少了与系统缓存池的交互,从而提高了数据处理效率。
其中,预申请的缓存页的总数量可以进行自主设定,本发明实施例在此做限定。
S104:根据第一目标缓存页本次被写入数据前的页状态以及本次被写入数据后的饱和状态,对第一目标缓存页的页状态进行更新;
其中,页状态包括被写入过数据的脏Dirty状态、页中数据完备的更新Update状态、被写入过小于页容量的数据块的小数据块Small_IO状态以及非其他所有页状态的干净Clean状态,饱和状态包括饱和与未饱和。
具体的,本发明实施例中预先设计了以上四种缓存页状态,其中的Small_IO状态表示被写入缓存页的数据块可以是小于缓存页的额定容量的小数据块,当然,也可以写入等于缓存页的额定容量的数据块,使其直接达到Updade状态,基于此,本发明实施例中便可以将缓存页的额定容量设定的较大,例如可以设计为1Mb,从而减少了缓存层中使用的缓存页的数量,减少了缓存页的切换以及访问次数,提高了数据处理效率。
具体的,本发明实施例中的缓存页可以具备以下四个要素:(1)一段较大的内存,用以装载客户的数据;(2)页的状态,包括dirty(意为页被写入过数据但还未下刷)、update(意为页中的数据是完备的,可以被读)、small_IO(意为页中写过小于缓存页额定容量的块)、clean(意为页是干净的,非前几种状态)(3)页锁,保证多个线程在同时访问页时具有互斥的特性;(4)指向文件缓存的指针及在文件中的index(在文件缓存中查询页时,根据index可唯一确定一个页)。
本发明提供了一种缓存管理方法,考虑到较小容量的缓存页会导致同样大小的文件所占缓存页的数量较多,那么由于缓存页的切换次数以及访问次数的提升便会导致数据处理效率的减低,因此本申请中首先为缓存页设计了被写入过小于页容量的数据块的小数据块Small_IO状态以及页中数据完备的更新Update状态,也就是说单个数据块可以填满/不填满一个缓存页,在这种情况下,可以设计较大容量的缓存页,从而降低了缓存页的切换次数以及访问次数,提升了数据处理效率,且本申请中可以利用链表来维护预申请的缓存页,在需要时从链表中进行申请即可,减少了缓存层与系统缓存池的交互,进一步提升了数据处理效率。
为了更好地对本发明实施例进行说明,请参考图2以及图3,图2为本发明提供的一种内核客户端的架构示意图;图3为本发明提供的另一种缓存管理方法的流程示意图,在上述实施例的基础上:
作为一种优选的实施例,确定出客户端发送的缓存写请求指定的待缓存文件当前的待缓存数据块具体为:
确定出客户端发送的缓存写请求指定的待缓存文件最新的第一(offset)参数、第二(len)参数以及用户态地址;
判断缓存层中是否存在与待缓存数据块对应的第一目标缓存页具体为:
判断根据offset参数是否能够从缓存层中找到与待缓存数据块对应的第一目标缓存页;
将待缓存数据块写入第一目标缓存页具体为:
将offset参数、len参数以及用户态地址指向的待缓存数据块写入第一目标缓存页;
其中,offset参数为待缓存文件的本次待写入位置相对于文件起始位置的偏移,len参数为待缓存文件的本次待写入长度,用户态地址为待缓存文件的当前地址。
具体的,由于offset参数能够唯一确定页的index(索引),因此通过offset能够寻找对应的缓存页,在确定出第一目标缓存页后,便可以从用户态地址中,根据offset参数以及len参数找到本次的待缓存数据块并将其写入第一目标缓存页。
具体的,通过offset参数、len参数以及用户态地址这三个参数可以快捷方便的进行缓存页的确定以及待缓存数据块的传递。
当然,除了该种具体方式外,还可以通过其他方式确定出客户端发送的缓存写请求指定的待缓存文件当前的待缓存数据块,本发明实施例在此不做限定。
具体的,在本发明实施例中,内核客户端为独立的内核态客户端,以ko文件的形式安装在客户主机;缓存指的是用户与硬盘之间的缓冲,用户数据在写入时并非直接落入硬盘,而是先写入缓存中,在某个特定机制下,再由缓存落入硬盘;页(缓存页)指的是内核客户端缓存层数据的管理单元;OSD(Object Storage Device,对象存储设备)指的是响应客户端数据请求的集群端服务,物理介质是存储磁盘;MDS指的是响应客户端元数据请求的集群端服务,管理文件的元数据(权限等);VFS(virtual File System)层指的是虚拟文件系统层,Linux原生的文件系统层,具有各系统调用函数及基本的读写流程,向上对接用户程序,向下对接具体文件系统。
其中,在图3中,页管理模块可以认为是管理所有预申请的缓存页的模块。
作为一种优选的实施例,根据第一目标缓存页本次被写入数据前的页状态以及本次被写入数据后的饱和状态,对第一目标缓存页的页状态进行更新具体为:
若本次被写入数据前的页状态为Dirty以及Update,则不更新第一目标缓存页的页状态;
若本次被写入数据后的页状态为Dirty以及Small_IO且饱和状态为不饱和,则不更新第一目标缓存页的页状态;
若本次被写入数据前的页状态为Dirty以及Small_IO且饱和状态为饱和,则更新第一目标缓存页的页状态为Dirty以及Update;
若本次被写入数据前的页状态为Clean且饱和状态为饱和,则更新第一目标缓存页的页状态为Dirty以及Update;
若本次被写入数据前的页状态为Clean且饱和状态为未饱和,则更新第一目标缓存页的页状态为Dirty以及Small_IO。
具体的,Dirty以及Update表示被写入数据前已经处于写入过数据且完备的状态,因此本次无论写入多大的数据,均不会改变第一目标缓存页的页状态。
具体的,Dirty以及Small_IO表示被写入数据前已经处于写入过小数据块的状态,因此如果此时的饱和状态为饱和,便将其更新为Dirty以及Update,否则不更新其状态。
其中,对于本次被写入数据前的页状态为Clean的处理与前述逻辑相似,本发明实施例在此不再赘述。
作为一种优选的实施例,将待缓存数据块写入第一目标缓存页之后,该缓存管理方法还包括:
在第一目标缓存页本次被写入数据为首次被写入数据时,将第一目标缓存页加入脏缓存页链表;
响应于下刷触发指令,从脏缓存页链表中选择缓存页存入存储系统。
具体的,为了便于对缓存层中的缓存页进行下刷落盘,本发明实施例中设计了脏缓存页链表,用以维护缓存层中存在的所有缓存页,因此在第一目标缓存页本次被写入数据为首次被写入数据时,将第一目标缓存页加入脏缓存页链表,并且可以响应于下刷触发指令,从脏缓存页链表中选择缓存页存入存储系统,便于及时可靠的对缓存层中的缓存页进行下刷落盘。
作为一种优选的实施例,在第一目标缓存页本次被写入数据为首次被写入数据时,将第一目标缓存页加入脏缓存页链表具体为:
在第一目标缓存页本次被写入数据为首次被写入数据时,将第一目标缓存页加入脏缓存页链表的首部;
响应于下刷触发指令,从脏缓存页链表的尾部选择缓存页存入存储系统。
具体的,为了基于存在的时间长短对缓存层中的缓存页进行下刷的判断,本发明实施例中可以在第一目标缓存页本次被写入数据为首次被写入数据时,将第一目标缓存页加入脏缓存页链表的首部,如此一来,随着不断的填充,脏缓存页链表中首部存放的是最新的缓存页,而尾部存放的是存在时间最长的缓存页,而存放时间较长的缓存页显然更有必要进行下刷,因此本发明实施例中可以响应于下刷触发指令,从脏缓存页链表的尾部选择缓存页存入存储系统。
作为一种优选的实施例,响应于下刷触发指令,从脏缓存页链表的尾部选择缓存页存入存储系统具体为:
每隔预设周期,判断脏缓存页链表尾部的缓存页被加入脏缓存页链表的时间是否达到预设时长;
若未达到,则结束;
若达到,则将脏缓存页链表尾部的缓存页下刷至存储系统并判断脏缓存页链表是否遍历完毕;
若未遍历完毕,则执行判断脏缓存页链表尾部的缓存页被加入脏缓存页链表的时间是否达到预设时长的步骤。
具体的,本发明实施例中可以周期性的触发对于脏缓存页链表的下刷判断动作,可以及时进行缓存页中数据的下刷,每次判断时可以由脏缓存页链表的尾部开始进行判断,可以将被加入脏缓存页链表的时间达到预设时长的缓存页中的数据下刷落盘。
具体的,缓存下刷工作可以由一个主线程和四个下刷线程完成,主线程用于执行上述判断分析工作,而下刷线程专门用于将缓存页中的数据下刷至存储系统。
另外,值得一提的是,本发明实施例中的缓存页可以设置页锁,从而保证多个线程在同时访问缓存页时具有互斥的特性。
其中,预设周期以及预设时长均可以进行自主设定,例如预设周期可以为1s,而预设时长可以为5s等,本发明实施例在此不做限定。
作为一种优选的实施例,响应于下刷触发指令,从脏缓存页链表的尾部选择缓存页存入存储系统具体为:
在从包含预申请缓存页的链表中获取缓存页时,判断包含预申请缓存页的链表中当前的缓存页总数是否小于预设阈值;
若小于,将脏缓存页链表尾部的缓存页下刷至存储系统。
具体的,考虑到只要保持包含预申请缓存页的链表中,剩余缓存页的数量在一定水平,那么便可以保证缓存层稳定可靠地进行工作,因此本发明实施例中可以在从包含预申请缓存页的链表中获取缓存页时,判断包含预申请缓存页的链表中当前的缓存页总数是否小于预设阈值,在判断结果为小于的时候,便可以将脏缓存页链表尾部的缓存页下刷至存储系统,从而保证包含预申请缓存页的链表中当前的缓存页总数不小于预设阈值。
其中,预设阈值可以进行自主设定,例如可以设定为预申请的所有缓存页总数的三分之一等,本发明实施例在此不做限定。
作为一种优选的实施例,将脏缓存页链表尾部的缓存页下刷至存储系统具体为:
判断脏缓存页链表尾部的缓存页的页状态是否为Dirty;
若否,将该缓存页从脏缓存页链表以及该缓存页所处的文件缓存中删除,并将该缓存页加入包含预申请缓存页的链表中;
若是,将脏缓存页链表尾部的缓存页所属对象中的所有缓存页,按照对象中的固有次序下刷至存储系统;
将下刷至存储系统的缓存页的状态置为Clean后重新加入脏缓存页链表的首部。
具体的,为了使得在将某个缓存页的数据下刷至存储系统后,用户在短时间内还能够从缓存层中读取该缓存页的数据,本发明实施例中可以判断脏缓存页链表尾部的缓存页的页状态是否为Dirty,如果是的话,便可以在将缓存页中的数据下刷的同时,将下刷至存储系统的缓存页的状态置为Clean后重新加入脏缓存页链表的首部,那么随着时间的推移,该缓存页从脏缓存页链表首部移动至尾部并再次进行判断时,判断到其不属于Dirty状态,也即为Clean状态,便可以将该缓存页从脏缓存页链表以及该缓存页所处的文件缓存中删除,并将该缓存页加入包含预申请缓存页的链表中。
具体的,在存储系统中数据通常是以对象为单位来进行存储的,通常每个对象中存储4Mb数据,当缓存页的容量为1Mb时,每个对象中最多具有四个页,由于考虑到用户每次下刷数据时,通常会以对象为单位进行下刷,因此本发明实施例中在欲对某个缓存页的数据进行下刷时,可以将脏缓存页链表尾部的缓存页所属对象中的所有缓存页,按照对象中的固有次序下刷至存储系统,从而提升了工作效率。
作为一种优选的实施例,将脏缓存页链表尾部的缓存页所属对象中的所有缓存页,按照对象中的固有次序下刷至存储系统具体为:
从存储系统中,读取脏缓存页链表尾部的缓存页所属对象中的不处于Update状态的缓存页对应的落盘数据;
将落盘数据合并至对应的缓存页;
将脏缓存页链表尾部的缓存页所属对象中的所有缓存页,按照对象中的固有次序下刷至存储系统。
具体的,考虑到不属于Update状态的缓存页中可能会有不存在数据的空白区域,若直接将不属于Update状态的缓存页下刷,那么可能会覆盖存储系统中该对象原本存在的数据,因此为了避免这一点,本发明实施例中可以从存储系统中,读取脏缓存页链表尾部的缓存页所属对象中的不处于Update状态的缓存页对应的落盘数据,然后将落盘数据合并至对应的缓存页,最后便可以将脏缓存页链表尾部的缓存页所属对象中的所有缓存页,按照对象中的固有次序下刷至存储系统,保证了数据下刷工作的可靠进行。
具体的,值得一提的是,在内核客户端卸载阶段可以完成两个工作,其一为:负责预设周期计量的定时器停止工作,其二为将缓存页的内存及数据结构释放。
作为一种优选的实施例,根据第一目标缓存页本次被写入数据前的页状态以及本次被写入数据后的饱和状态,对第一目标缓存页的页状态进行更新还包括:
在第一目标缓存页本次被写入小数据块的数据后,判断第一目标缓存页本次是否为首次被写入小数据块;
若否,则将第一目标缓存页中具有相邻或重叠关系的小数据块进行合并;
小数据块的数据量小于缓存页的额定容量。
具体的,考虑到在多次被写入小数据块后,缓存页内同时存在的小数据块可能会存在多种位置关系,例如不相邻、存在部分重叠以及相邻的状态,而对于存在部分重叠以及相邻的状态的小数据块,可以对其进行合并,从而提升数据完整性,因此本发明实施例中可以在第一目标缓存页本次被写入小数据块的数据后,判断第一目标缓存页本次是否为首次被写入小数据块,若否,则将第一目标缓存页中具有相邻或重叠关系的小数据块进行合并。
作为一种优选的实施例,在第一目标缓存页本次被写入小数据块的数据后,判断第一目标缓存页本次是否为首次被写入小数据块具体为:
在第一目标缓存页本次被写入小数据块的数据后,将第一目标缓存页的Count参数加一,并在第一目标缓存页预设数组中记录本次写入的小数据块在第一目标缓存页中的位置;
判断第一目标缓存页的Count参数的数值是否大于1;
若大于,则判定第一目标缓存页本次非首次被写入小数据块;
将第一目标缓存页中具有相邻或重叠关系的小数据块进行合并具体为:
根据预设数组中记录的各个位置,将第一目标缓存页中具有相邻或重叠关系的小数据块进行合并。
具体的,为了对单个缓存页内同时存在的多个小数据块进行管理,本发明实施例中为每个缓存页设计了count参数以及预设数组,Count可以记录缓存页内存在的小数据块的数量,预设数组则可以记录每个小数据块在缓存页中的位置,从而方便地对单个缓存页内同时存在的多个小数据块进行管理。
其中,预设数组可以包含两个子数组,一个子数组记录小数据块的起始位置相对于所在的缓存页起始位置的偏移,另一个子数组记录小数据块的长度,从而通过两个子数组的信息便可以确定小数据块在缓存页中的位置。
作为一种优选的实施例,根据第一目标缓存页本次被写入数据前的页状态以及本次被写入数据后的饱和状态,对第一目标缓存页的页状态进行更新还包括:
在第一目标缓存页本次被写入小数据块的数据后,判断第一目标缓存页中被写入的小数据块的数量是否达到预设饱和值;
若达到,则从存储系统中,读取第一目标缓存页对应的落盘数据;
将第一目标缓存页对应的落盘数据合并至第一目标缓存页。
具体的,由于预设数组中可以记录的小数据块的位置信息是有限的,因此本发明实施例中设计了预设饱和值,并在第一目标缓存页本次被写入小数据块的数据后,判断第一目标缓存页中被写入的小数据块的数量是否达到预设饱和值,若达到,则从存储系统中,读取第一目标缓存页对应的落盘数据;将第一目标缓存页对应的落盘数据合并至第一目标缓存页,此时便可以无需再接收新的小数据块至该缓存页,甚至还可以将该缓存页进行下刷。
作为一种优选的实施例,该缓存管理方法还包括:
获取缓存层的实时状态以及执行动作;
控制提示器提示缓存层的实时状态以及执行动作。
具体的,为了便于工作人员及时知悉缓存层的实时状态以及执行动作,本发明实施例中可以获取缓存层的实时状态以及执行动作,然后控制提示器提示缓存层的实时状态以及执行动作。
其中,提示器可以为多种类型,例如可以为显示器等,本发明实施例在此不做限定。
作为一种优选的实施例,该缓存管理方法还包括:
确定出客户端发送的缓存读请求当前需要读取的第二目标缓存页;
判断缓存层中是否存在第二目标缓存页;
若存在,则将第二目标缓存页中的数据反馈至客户端;
若不存在,则从包含预申请缓存页的链表中取出一个缓存页作为第二目标缓存页;
从存储系统中获取第二目标缓存页对应的落盘数据;
将第二目标缓存页对应的落盘数据合并至第二目标缓存页并执行将第二目标缓存页中的数据反馈至客户端的步骤。
具体的,本发明实施例中提供了对于客户端发送的缓存读请求的处理方法,可以顺利地实现客户的缓存度,考虑到客户需要读取的数据可能已经下刷,因此在这种情况下可以先从包含预申请缓存页的链表中取出一个缓存页作为第二目标缓存页,然后从存储系统中获取第二目标缓存页对应的落盘数据并将第二目标缓存页对应的落盘数据合并至第二目标缓存页,最后便可以将第二目标缓存页中的数据反馈至客户端。
作为一种优选的实施例,确定出客户端发送的缓存读请求当前需要读取的第二目标缓存页具体为:
确定出客户端发送的缓存读请求最新的offset参数、len参数以及用户态地址;
根据缓存读请求最新的offset参数确定出缓存读请求当前需要读取的第二目标缓存页;
将第二目标缓存页中的数据反馈至客户端具体为:
根据缓存读请求最新的len参数以及用户态地址,将第二目标缓存页中的数据反馈至客户端。
具体的,本发明实施例中同样可以基于offset参数、len参数以及用户态地址进行缓存页的寻找以及数据流转,区别在于这里的用户态地址是空的,缓存层可以将第二目标缓存页中的数据填充至该用户态地址。
作为一种优选的实施例,确定出客户端发送的缓存读请求当前需要读取的第二目标缓存页之后,该缓存管理方法还包括:
根据offset参数计算本次待预读缓存页的数量;
从包含预申请缓存页的链表中取出缓存页作为当前不存在于缓存层的待预读缓存页;
从存储系统中获取第二目标缓存页对应的落盘数据具体为:
从存储系统中获取第二目标缓存页以及待预读缓存页对应的落盘数据;
该缓存管理方法还包括:
将待预读缓存页对应的落盘数据合并至待预读缓存页。
具体的,考虑到用户每次在进行缓存读时,往往需要连续进行多次的缓存读,因此为了提高工作效率,本发明实施例中可以根据offset参数计算本次待预读缓存页的数量,然后从包含预申请缓存页的链表中取出缓存页作为当前不存在于缓存层的待预读缓存页,那么在读取落盘数据的时候,便可以从存储系统中,同时获取第二目标缓存页以及待预读缓存页对应的落盘数据(从而提升了数据获取效率),然后将待预读缓存页对应的落盘数据合并至待预读缓存页,以便后续过程中客户对待预读缓存页中数据的读取。
另外,值得一提的是,如果第二目标缓存页以及待预读缓存页本身存在于缓存层中但是不属于Update状态,那么也需要从存储系统中获取其落盘数据并进行合并,以便将完备的缓存页中的数据反馈给客户端。
其中,为了保证缓存页中数据的准确性,本发明实施例中的缓存层还可以设计有writebacking(意为页正在被下刷)以及readaheading(意为页正在被预读)两种状态,分别用于正在被下刷的缓存层以及正在被预读(从存储系统获取落盘数据并合并至该缓存页)的缓存页,防止当处于这两种状态时,缓存页被其他线程进行读写。
其中,值得一提的是,缓存层中的每个文件都可以具备一个缓存结构,例如可以为树形结构,基本元素为单个页。
请参考图4,图4为本发明提供的一种缓存管理装置的结构示意图,该缓存管理装置包括:
确定模块41,用于确定出客户端发送的缓存写请求指定的待缓存文件当前的待缓存数据块;
判断模块42,用于判断缓存层中是否存在与待缓存数据块对应的第一目标缓存页,若不存在,则触发执行模块43;
执行模块43,用于从包含预申请缓存页的链表中取出一个缓存页作为第一目标缓存页并将待缓存数据块写入第一目标缓存页;
更新模块44,用于根据第一目标缓存页本次被写入数据前的页状态以及本次被写入数据后的饱和状态,对第一目标缓存页的页状态进行更新;
其中,页状态包括被写入过数据的脏Dirty状态、页中数据完备的更新Update状态、被写入过小于页容量的数据块的小数据块Small_IO状态以及非其他所有页状态的干净Clean状态,饱和状态包括饱和与未饱和。
对于本发明实施例提供的缓存管理装置的介绍请参照前述的缓存管理方法的实施例,本发明实施例在此不再赘述。
请参考图5,图5为本发明提供的一种缓存管理设备的结构示意图,该缓存管理设备包括:
存储器51,用于存储计算机程序;
处理器52,用于执行计算机程序时实现如前述实施例中缓存管理方法的步骤。
对于本发明实施例提供的缓存管理设备的介绍请参照前述的缓存管理方法的实施例,本发明实施例在此不再赘述。
本发明还提供了一种服务器,包括服务器本体以及与服务器本体连接的如上的缓存管理设备。
对于本发明实施例提供的服务器的介绍请参照前述的缓存管理方法的实施例,本发明实施例在此不再赘述。
请参考图6,图6为本发明提供的一种计算机可读存储介质的结构示意图,该计算机可读存储介质60上存储有计算机程序61,计算机程序61被处理器51执行时实现如前述实施例中缓存管理方法的步骤。
对于本发明实施例提供的计算机可读存储介质的介绍请参照前述的缓存管理方法的实施例,本发明实施例在此不再赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (18)
1.一种缓存管理方法,其特征在于,包括:
确定出客户端发送的缓存写请求指定的待缓存文件当前的待缓存数据块;
判断缓存层中是否存在与所述待缓存数据块对应的第一目标缓存页;
若不存在,则从包含预申请缓存页的链表中取出一个缓存页作为所述第一目标缓存页并将所述待缓存数据块写入所述第一目标缓存页;
根据所述第一目标缓存页本次被写入数据前的页状态以及本次被写入数据后的饱和状态,对所述第一目标缓存页的页状态进行更新;
其中,所述页状态包括被写入过数据的脏状态、页中数据完备的更新状态、被写入过小于页容量的数据块的小数据块状态以及非其他所有页状态的干净状态,所述饱和状态包括饱和与未饱和;
所述确定出客户端发送的缓存写请求指定的待缓存文件当前的待缓存数据块具体为:
确定出客户端发送的缓存写请求指定的待缓存文件最新的第一参数、第二参数以及用户态地址;
所述判断缓存层中是否存在与所述待缓存数据块对应的第一目标缓存页具体为:
判断根据所述第一参数是否能够从缓存层中找到与所述待缓存数据块对应的第一目标缓存页;
所述将所述待缓存数据块写入所述第一目标缓存页具体为:
将所述第一参数、所述第二参数以及所述用户态地址指向的所述待缓存数据块写入所述第一目标缓存页;
其中,第一参数为所述待缓存文件的本次待写入位置相对于文件起始位置的偏移,第二参数为所述待缓存文件的本次待写入长度,用户态地址为所述待缓存文件的当前地址;
所述根据所述第一目标缓存页本次被写入数据前的页状态以及本次被写入数据后的饱和状态,对所述第一目标缓存页的页状态进行更新具体为:
若所述本次被写入数据前的页状态为脏状态以及更新状态,则不更新所述第一目标缓存页的页状态;
若所述本次被写入数据后的页状态为脏状态以及小数据块状态且所述饱和状态为不饱和,则不更新所述第一目标缓存页的页状态;
若所述本次被写入数据前的页状态为脏状态以及小数据块状态且所述饱和状态为饱和,则更新所述第一目标缓存页的页状态为脏状态以及更新状态;
若所述本次被写入数据前的页状态为干净状态且所述饱和状态为饱和,则更新所述第一目标缓存页的页状态为脏状态以及更新状态;
若所述本次被写入数据前的页状态为干净状态且所述饱和状态为未饱和,则更新所述第一目标缓存页的页状态为脏状态以及小数据块状态。
2.根据权利要求1所述的缓存管理方法,其特征在于,所述将所述待缓存数据块写入所述第一目标缓存页之后,该缓存管理方法还包括:
在所述第一目标缓存页本次被写入数据为首次被写入数据时,将所述第一目标缓存页加入脏缓存页链表;
响应于下刷触发指令,从所述脏缓存页链表中选择缓存页存入存储系统。
3.根据权利要求2所述的缓存管理方法,其特征在于,所述在所述第一目标缓存页本次被写入数据为首次被写入数据时,将所述第一目标缓存页加入脏缓存页链表具体为:
在所述第一目标缓存页本次被写入数据为首次被写入数据时,将所述第一目标缓存页加入脏缓存页链表的首部;
所述响应于下刷触发指令,从所述脏缓存页链表的尾部选择缓存页存入存储系统。
4.根据权利要求3所述的缓存管理方法,其特征在于,所述响应于下刷触发指令,从所述脏缓存页链表的尾部选择缓存页存入存储系统具体为:
每隔预设周期,判断所述脏缓存页链表尾部的缓存页被加入所述脏缓存页链表的时间是否达到预设时长;
若未达到,则结束;
若达到,则将所述脏缓存页链表尾部的缓存页下刷至存储系统并判断所述脏缓存页链表是否遍历完毕;
若未遍历完毕,则执行所述判断所述脏缓存页链表尾部的缓存页被加入所述脏缓存页链表的时间是否达到预设时长的步骤。
5.根据权利要求3所述的缓存管理方法,其特征在于,所述响应于下刷触发指令,从所述脏缓存页链表的尾部选择缓存页存入存储系统具体为:
在从所述包含预申请缓存页的链表中获取缓存页时,判断所述包含预申请缓存页的链表中当前的缓存页总数是否小于预设阈值;
若小于,将所述脏缓存页链表尾部的缓存页下刷至存储系统。
6.根据权利要求4所述的缓存管理方法,其特征在于,所述将所述脏缓存页链表尾部的缓存页下刷至存储系统具体为:
判断所述脏缓存页链表尾部的缓存页的页状态是否为脏状态;
若否,将该缓存页从所述脏缓存页链表以及该缓存页所处的文件缓存中删除,并将该缓存页加入所述包含预申请缓存页的链表中;
若是,将所述脏缓存页链表尾部的缓存页所属对象中的所有缓存页,按照对象中的固有次序下刷至存储系统;
将下刷至所述存储系统的缓存页的状态置为干净状态后重新加入所述脏缓存页链表的首部。
7.据权利要求6所述的缓存管理方法,其特征在于,所述将所述脏缓存页链表尾部的缓存页所属对象中的所有缓存页,按照对象中的固有次序下刷至存储系统具体为:
从存储系统中,读取所述脏缓存页链表尾部的缓存页所属对象中的不处于所述更新状态的缓存页对应的落盘数据;
将所述落盘数据合并至对应的所述缓存页;
将所述脏缓存页链表尾部的缓存页所属对象中的所有缓存页,按照对象中的固有次序下刷至所述存储系统。
8.根据权利要求1所述的缓存管理方法,其特征在于,所述根据所述第一目标缓存页本次被写入数据前的页状态以及本次被写入数据后的饱和状态,对所述第一目标缓存页的页状态进行更新还包括:
在所述第一目标缓存页本次被写入小数据块的数据后,判断所述第一目标缓存页本次是否为首次被写入小数据块;
若否,则将所述第一目标缓存页中具有相邻或重叠关系的小数据块进行合并;
其中,所述小数据块的数据量小于所述缓存页的额定容量。
9.根据权利要求8所述的缓存管理方法,其特征在于,所述在所述第一目标缓存页本次被写入小数据块的数据后,判断所述第一目标缓存页本次是否为首次被写入小数据块具体为:
在所述第一目标缓存页本次被写入小数据块的数据后,将所述第一目标缓存页的计数参数加一,并在所述第一目标缓存页预设数组中记录本次写入的小数据块在所述第一目标缓存页中的位置;
判断所述第一目标缓存页的计数参数的数值是否大于1;
若大于,则判定所述第一目标缓存页本次非首次被写入小数据块;
所述将所述第一目标缓存页中具有相邻或重叠关系的小数据块进行合并具体为:
根据所述预设数组中记录的各个位置,将所述第一目标缓存页中具有相邻或重叠关系的小数据块进行合并。
10.根据权利要求9所述的缓存管理方法,其特征在于,所述根据所述第一目标缓存页本次被写入数据前的页状态以及本次被写入数据后的饱和状态,对所述第一目标缓存页的页状态进行更新还包括:
在所述第一目标缓存页本次被写入小数据块的数据后,判断所述第一目标缓存页中被写入的小数据块的数量是否达到预设饱和值;
若达到,则从存储系统中,读取所述第一目标缓存页对应的落盘数据;
将所述第一目标缓存页对应的落盘数据合并至所述第一目标缓存页。
11.根据权利要求1所述的缓存管理方法,其特征在于,该缓存管理方法还包括:
获取所述缓存层的实时状态以及执行动作;
控制提示器提示所述缓存层的实时状态以及执行动作。
12.根据权利要求1至11任一项所述的缓存管理方法,其特征在于,该缓存管理方法还包括:
确定出所述客户端发送的缓存读请求当前需要读取的第二目标缓存页;
判断所述缓存层中是否存在所述第二目标缓存页;
若存在,则将所述第二目标缓存页中的数据反馈至所述客户端;
若不存在,则从所述包含预申请缓存页的链表中取出一个缓存页作为所述第二目标缓存页;
从存储系统中获取所述第二目标缓存页对应的落盘数据;
将所述第二目标缓存页对应的落盘数据合并至所述第二目标缓存页并执行所述将所述第二目标缓存页中的数据反馈至所述客户端的步骤。
13.根据权利要求12所述的缓存管理方法,其特征在于,所述确定出所述客户端发送的缓存读请求当前需要读取的第二目标缓存页具体为:
确定出所述客户端发送的缓存读请求最新的第一参数、第二参数以及用户态地址;
根据所述缓存读请求最新的所述第一参数确定出所述缓存读请求当前需要读取的第二目标缓存页;
所述将所述第二目标缓存页中的数据反馈至所述客户端具体为:
根据所述缓存读请求最新的所述第二参数以及所述用户态地址,将所述第二目标缓存页中的数据反馈至所述客户端。
14.根据权利要求13所述的缓存管理方法,其特征在于,所述确定出客户端发送的缓存读请求当前需要读取的第二目标缓存页之后,该缓存管理方法还包括:
根据所述第一参数计算本次待预读缓存页的数量;
从所述包含预申请缓存页的链表中取出缓存页作为当前不存在于所述缓存层的所述待预读缓存页;
从所述存储系统中获取所述第二目标缓存页对应的落盘数据具体为:
从所述存储系统中获取所述第二目标缓存页以及所述待预读缓存页对应的落盘数据;
该缓存管理方法还包括:
将所述待预读缓存页对应的落盘数据合并至所述待预读缓存页。
15.一种缓存管理装置,其特征在于,包括:
确定模块,用于确定出客户端发送的缓存写请求指定的待缓存文件当前的待缓存数据块;
判断模块,用于判断缓存层中是否存在与所述待缓存数据块对应的第一目标缓存页,若不存在,则触发执行模块;
所述执行模块,用于从包含预申请缓存页的链表中取出一个缓存页作为所述第一目标缓存页并将所述待缓存数据块写入所述第一目标缓存页;
更新模块,用于根据所述第一目标缓存页本次被写入数据前的页状态以及本次被写入数据后的饱和状态,对所述第一目标缓存页的页状态进行更新;
其中,所述页状态包括被写入过数据的脏状态、页中数据完备的更新状态、被写入过小于页容量的数据块的小数据块状态以及非其他所有页状态的干净状态,所述饱和状态包括饱和与未饱和;
所述确定出客户端发送的缓存写请求指定的待缓存文件当前的待缓存数据块具体为:
确定出客户端发送的缓存写请求指定的待缓存文件最新的第一参数、第二参数以及用户态地址;
所述判断缓存层中是否存在与所述待缓存数据块对应的第一目标缓存页具体为:
判断根据所述第一参数是否能够从缓存层中找到与所述待缓存数据块对应的第一目标缓存页;
所述将所述待缓存数据块写入所述第一目标缓存页具体为:
将所述第一参数、所述第二参数以及所述用户态地址指向的所述待缓存数据块写入所述第一目标缓存页;
其中,第一参数为所述待缓存文件的本次待写入位置相对于文件起始位置的偏移,第二参数为所述待缓存文件的本次待写入长度,用户态地址为所述待缓存文件的当前地址;
所述根据所述第一目标缓存页本次被写入数据前的页状态以及本次被写入数据后的饱和状态,对所述第一目标缓存页的页状态进行更新具体为:
若所述本次被写入数据前的页状态为脏状态以及更新状态,则不更新所述第一目标缓存页的页状态;
若所述本次被写入数据后的页状态为脏状态以及小数据块状态且所述饱和状态为不饱和,则不更新所述第一目标缓存页的页状态;
若所述本次被写入数据前的页状态为脏状态以及小数据块状态且所述饱和状态为饱和,则更新所述第一目标缓存页的页状态为脏状态以及更新状态;
若所述本次被写入数据前的页状态为干净状态且所述饱和状态为饱和,则更新所述第一目标缓存页的页状态为脏状态以及更新状态;
若所述本次被写入数据前的页状态为干净状态且所述饱和状态为未饱和,则更新所述第一目标缓存页的页状态为脏状态以及小数据块状态。
16.一种缓存管理设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至14任一项所述缓存管理方法的步骤。
17.一种服务器,其特征在于,包括服务器本体以及与所述服务器本体连接的如权利要求16所述的缓存管理设备。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至14任一项所述缓存管理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310181860.9A CN115858421B (zh) | 2023-03-01 | 2023-03-01 | 一种缓存管理方法、装置、设备、可读存储介质及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310181860.9A CN115858421B (zh) | 2023-03-01 | 2023-03-01 | 一种缓存管理方法、装置、设备、可读存储介质及服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115858421A CN115858421A (zh) | 2023-03-28 |
CN115858421B true CN115858421B (zh) | 2023-05-23 |
Family
ID=85659459
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310181860.9A Active CN115858421B (zh) | 2023-03-01 | 2023-03-01 | 一种缓存管理方法、装置、设备、可读存储介质及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115858421B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118377443B (zh) * | 2024-06-27 | 2024-09-17 | 山东云海国创云计算装备产业创新中心有限公司 | 数据存储方法、设备、存储系统、程序产品及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109144896A (zh) * | 2018-08-10 | 2019-01-04 | 暨南大学 | 一种基于mlc奇偶对称性的可感知型数据缓存管理方法 |
CN109324979A (zh) * | 2018-08-20 | 2019-02-12 | 华中科技大学 | 3d闪存固态盘系统的数据缓存划分方法及数据分配方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102156753B (zh) * | 2011-04-29 | 2012-11-14 | 中国人民解放军国防科学技术大学 | 面向固态硬盘文件系统的数据页缓存方法 |
CN103136121B (zh) * | 2013-03-25 | 2014-04-16 | 中国人民解放军国防科学技术大学 | 一种固态盘的缓存管理方法 |
EP3376394B1 (en) * | 2015-12-30 | 2022-09-28 | Huawei Technologies Co., Ltd. | Method and device for processing access request, and computer system |
CN107590287B (zh) * | 2017-09-26 | 2021-03-02 | 苏州浪潮智能科技有限公司 | 一种文件系统页缓存回写方法、系统、装置及存储介质 |
CN108427537A (zh) * | 2018-01-12 | 2018-08-21 | 上海凯翔信息科技有限公司 | 分布式存储系统及其文件写入优化方法、客户端处理方法 |
CN110737388A (zh) * | 2018-07-18 | 2020-01-31 | 中兴通讯股份有限公司 | 数据预读方法、客户端、服务器以及文件系统 |
CN109522240A (zh) * | 2018-10-22 | 2019-03-26 | 郑州云海信息技术有限公司 | 一种数据处理方法和装置 |
CN111124267B (zh) * | 2018-10-31 | 2023-10-31 | 伊姆西Ip控股有限责任公司 | 数据写入的方法、设备和计算机程序产品 |
CN111694703B (zh) * | 2019-03-13 | 2023-05-02 | 阿里云计算有限公司 | 缓存区管理方法、装置和计算机设备 |
CN110555001B (zh) * | 2019-09-05 | 2021-05-28 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、终端及介质 |
CN111158601A (zh) * | 2019-12-30 | 2020-05-15 | 北京浪潮数据技术有限公司 | 一种缓存中的io数据下刷方法、系统及相关装置 |
CN115686881A (zh) * | 2022-10-10 | 2023-02-03 | 曙光网络科技有限公司 | 数据处理方法、装置和计算机设备 |
-
2023
- 2023-03-01 CN CN202310181860.9A patent/CN115858421B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109144896A (zh) * | 2018-08-10 | 2019-01-04 | 暨南大学 | 一种基于mlc奇偶对称性的可感知型数据缓存管理方法 |
CN109324979A (zh) * | 2018-08-20 | 2019-02-12 | 华中科技大学 | 3d闪存固态盘系统的数据缓存划分方法及数据分配方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115858421A (zh) | 2023-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8909887B1 (en) | Selective defragmentation based on IO hot spots | |
CN102349055B (zh) | 对存储在存储器上的文件的访问时间最优化 | |
CN103186350B (zh) | 混合存储系统及热点数据块的迁移方法 | |
US8438334B2 (en) | Hybrid storage subsystem with mixed placement of file contents | |
US20100332446A1 (en) | Storage pool scrubbing with concurrent snapshots | |
CN101241472B (zh) | 映射管理方法及系统 | |
CN106662981A (zh) | 存储设备、程序和信息处理方法 | |
WO2011008807A2 (en) | Database storage architecture | |
CN108628542B (zh) | 一种文件合并方法及控制器 | |
CN115858421B (zh) | 一种缓存管理方法、装置、设备、可读存储介质及服务器 | |
CN113568582B (zh) | 数据管理方法、装置和存储设备 | |
CN109388346B (zh) | 一种数据落盘方法和相关装置 | |
WO2023116346A1 (zh) | 异常掉电下Trim数据的恢复方法、系统及固态硬盘 | |
US8935470B1 (en) | Pruning a filemark cache used to cache filemark metadata for virtual tapes | |
Na et al. | Dynamic In-Page Logging for B⁺-tree Index | |
WO2024119775A1 (zh) | 一种raid卡的节点更新方法、系统及相关装置 | |
US10169160B2 (en) | Database batch update method, data redo/undo log producing method and memory storage apparatus | |
CN111158578B (zh) | 存储空间管理方法及装置 | |
CN109508140B (zh) | 存储资源管理方法、装置、电子设备及电子设备、系统 | |
KR101144321B1 (ko) | 에스에스디를 확장 버퍼로 이용한 버퍼 캐쉬 관리 방법 및 에스에스디를 확장 버퍼로 사용한 장치 | |
CN118377443B (zh) | 数据存储方法、设备、存储系统、程序产品及存储介质 | |
RU2469388C1 (ru) | Способ обращения к данным, хранимым в параллельной файловой системе, с иерархической организацией памяти | |
JP4079244B2 (ja) | 追記型記憶媒体ボリュームの再編成処理方法 | |
US11853577B2 (en) | Tree structure node compaction prioritization | |
CN115858407B (zh) | 一种数据存储方法、装置、设备、可读存储介质及服务器 |
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 |