CN111787062A - 面向广域网络文件系统的自适应快速增量预读方法 - Google Patents

面向广域网络文件系统的自适应快速增量预读方法 Download PDF

Info

Publication number
CN111787062A
CN111787062A CN202010470526.1A CN202010470526A CN111787062A CN 111787062 A CN111787062 A CN 111787062A CN 202010470526 A CN202010470526 A CN 202010470526A CN 111787062 A CN111787062 A CN 111787062A
Authority
CN
China
Prior art keywords
file
cache
block
request
client
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
Application number
CN202010470526.1A
Other languages
English (en)
Other versions
CN111787062B (zh
Inventor
肖利民
常佳辉
秦广军
霍志胜
宋尧
周汉杰
徐耀文
王超波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beihang University
Original Assignee
Beihang University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beihang University filed Critical Beihang University
Priority to CN202010470526.1A priority Critical patent/CN111787062B/zh
Publication of CN111787062A publication Critical patent/CN111787062A/zh
Application granted granted Critical
Publication of CN111787062B publication Critical patent/CN111787062B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5681Pre-fetching or pre-delivering data based on network characteristics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/162Delete operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明提出一种面向广域网络文件系统的自适应快速增量预读方法,其特征在于,客户端对特定数量的文件维护一个预读缓存块,当文件读请求由内核转至客户端时,客户端根据保存的缓存上下文决定是否新增缓存块大小或是替换缓存块,以及预取内容的大小;当文件访问服务节点接收到文件请求后,同样对文件预取保存在主存中以便快速响应文件的预取请求。本发明适用于广域高性能计算环境的CS架构中,运行于文件访问服务节点以及客户端节点上,具有良好的稳定性和可扩展性,能根据实际运行情况自适应的动态调整预取大小,以及缓存块的数量,提升远程文件数据访问性能和可用性。

Description

面向广域网络文件系统的自适应快速增量预读方法
技术领域
本发明公开了一种面向广域网络文件系统的自适应快速增量预读方法,涉及广域高性能计算面临的挑战,属于计算机技术领域。
背景技术
网络文件系统是文件系统之上的一个网络抽象,允许远程客户端以与本地文件系统类似的方式,通过网络进行对远程文件进行访问,目前已有的应用较为广泛的网络文件系统包括NFS、Lustre、Ceph、HDFS等。网络文件系统的实现是通过客户端-服务端模式实现的,服务端进行文件和数据的存储,客户端将本机的文件系统请求如元数据请求和读写请求等封装成TCP或UDP的包通过RPC或其他网络连接形式发送至服务端,再由服务端执行相应的请求动作将结果返回,客户端接收到的文件请求来自linux内核。因为文件系统请求是通过网络传递的,所以相较于本地文件系统具有延迟较高的特点,尤其在读数据性能上表现尤为明显。目前有几种举措能缓解网络文件系统相对于本地文件系统的读性能缺陷上,包括启发式预读和知情预读。
Linux本地文件系统提供三个知情式预读接口,分别为posix_fadvise,readahead,madvise。这三种方式并不经常使用,因为一般情况下,内核中的启发式算法工作的很好。Linux拥有一个虚拟文件系统层,它会缓存最近访问过的文件页面,这个文件缓存被称为pagecache。一般的read操作会发生在应用程序提供的缓冲区与pagecache之间,而预读算法则负责填充这个pagecache。Linux内核支持的两种预读算法为read-around和read-ahead两种,read-around算法适用于那些以mmap方式访问的程序代码和数据,它们具有很强的局域性特征,当有缺页事件发生时,它以当前页面为中心,往前往后预取共计128KB页面。而readahead算法主要针对read系统调用,它们一般具有很好的顺序特性。但是随机和非典型的读取模式也大量存在,因而readahead算法必须具有很好的智能和适应性。通过Steven Pratt、Ram Pai等人的大量工作,readahead算法进一步完善,其中最重要的一点是实现了对随机读的完好支持。随机读在数据库应用中处于非常突出的地位,而一个多页的随机读会触发“顺序预读”。这会导致预读I/O数的增加和命中率的下降。改进后的算法通过监控所有完整的read调用,同时得到读请求的页面偏移量和数量,因而能更好的区分顺序读和随机读。为了保证预读命中率,Linux只对顺序读进行预读,当一个文件是第一次被打开并且读的是文件首部时,内核对文件进行预读。当前的读请求与前一读请求在文件内的位置是连续的,判定为顺序读内核对文件进行预读。当不满足上述顺序性条件,就判定为随机读。在任何一个随机读都将终止当前的顺序序列,从而终止预读行为。Linux用两个预读窗口来跟踪当前顺序流的预读状态:current窗口和ahead窗口。其中current窗口为程序处理数据的窗口,而ahead窗口存储预备给程序的预读缓存,窗口的大小依次递增,以适应CPU快速的运算需求。
针对分布式网络文件系统I/O性能的研究,有两个热点值得注意:1)以顺序读为主的大规模数据的流式处理,如地理信息系统对数据的处理;2)海量文件处理的数据密集型的应用场景中,文件请求具有很强的随机性,如图片、音频搜索的后台服务。目前针对分布式文件系统性能优化的研究包括:Yue等提出二级元数据管理方法来提高分布式文件系统的可用性;MackeyG.等对HDFS小文件的元数据管理方式进行优化,以提高HDFS对小文件的存取效率;Yu等发现文件分布模型对聚合I/O带宽有着显著的影响,提出一种基于用户视角的数据分布策略,并在另一篇文章中提出写操作分块和层次条带化的方法来提高分布式/并行文件系统的I/O性能;
在设计机理上,面向云计算的分布式文件系统有很多共同特点:结构上一般可以分为元数据管理节点、存储节点和客户端3个组成部分;使用较大的文件管理单元(文件块)进行数据存储的统一管理,组成文件块的数据存储文件在物理磁盘上多是连续的;文件目录集中管理,并提供单独的目录空间,对文件I/O请求统一进行处理;上层应用或客户端文件读取的数据流程类似,并采用多层次的文件缓冲结构设计;实现单一的文件映像;一个文件数据可以分布于不同的磁盘或存储节点,而文件存放位置的分布情况对用户是透明的,用户更关注效率而不是实现细节。师明等人提出一种分布式网络文件系统预取的策略,即本地缓存区查找数据-与存储节点建立连接-存储节点根据文件请求触发读线程-定位文件块存储位置-调用linux内核函数读取数据存储文件-数据存放至本地缓存区。文件预取的设计针对存储节点中的文件读取操作进行性能优化设计。张轶彬在其硕士毕业论文中提出一种分布式文件系统客户端的设计与实现,根据流水线吞吐速度动态调整预取分片的数量。
传统的客户端缓存预取方法存在的问题主要为:
本地文件的预取方法虽然可以有效提高文件请求速度,但是没办法照样全搬至网络文件系统中,因为单机上的信息传递速度远大于网络速度,严格的启发式预读会由于网络延迟而效率低下。而普通的网络文件系统的预读要么工作在文件存储机上,也就相当于本地文件预读,要么工作在客户端上,没有照顾双向的速度效率,并且预读没有照顾到多文件并发读取的情景,只考虑串行文件读取的情况。因此研究客户端、服务端双向预读优化以及多文件并发读取时的预取优化策略。
发明内容
本发明的主要目的是提供一种面向广域网络文件系统的自适应快速增量预读方法,适用于广域高性能计算环境的CS架构中,运行于文件访问服务节点以及客户端节点上,能根据实际运行情况自适应的动态调整预取大小,以及缓存块的数量,提升远程文件数据访问性能和可用性,具有良好的稳定性和可扩展性。
本发明的技术方案是:
一种面向广域网络文件系统的自适应快速增量预读方法,其特征在于,客户端对特定数量的文件维护一个预读缓存块,当文件读请求由内核转至客户端时,客户端根据保存的缓存上下文决定是否新增缓存块大小或是替换缓存块,以及预取内容的大小;当文件访问服务节点接收到文件请求后,同样对文件预取保存在主存中以便快速响应文件的预取请求。
包括以下步骤:
步骤1,在访问文件数据时,客户端首先向管理节点获取访问的文件元数据信息,包括文件位置、用户信息、空间名称等。根据空间局部性缓存全局元数据,根据远程访问的反馈信息动态更新全局元数据缓存;
步骤2,根据客户端文件缓存的文件内容,确定是否需要对该文件新增缓存控制块,或更新文件缓存控制块;
步骤3,查找文件缓存块中是否保存有相应的缓存内容,若存在缓存内容则取出缓存内容返回给客户端应用程序,若无缓存内容则进行异步缓存预取;
步骤4,基于文件请求的偏移量以及长度判定文件是否需要预取,若文件需要预取则根据访问文件块位于访问窗口和预取窗口的位置判定预取文件的大小;
步骤5,文件数据服务器接受到数据请求访问后,采用同样的缓存控制块组织结构,而使用本地预取的策略,将预取块放入主存中便于快速响应客户端请求;
步骤6,客户端异步预取结果返回后比对缓存控制块中的时期指示符,若异步获取的文件块已超期,则弃用,否则保存在文件缓存块中。
其中,步骤1包括以下步骤:
步骤1.1,客户端向网络文件系统的管理节点请求文件的全局元数据信息;
步骤1.2,客户端判断本地是否保存有该文件的全局元数据信息;
步骤1.3,若本地没有缓存全局元数据信息,则客户端向网络文件系统的管理节点请求全局元数据信息,并将请求回来的结果进行缓存,如果缓存大小超过设定的阈值,则采用LRU的算法对缓存进行替换;
步骤1.4,若本地缓存有全局元数据信息,则客户端访问缓存的全局元数据获取数据服务器的位置,并向远程的存储节点发送文件数据请求;
步骤1.5,判断存储节点上是否包含对应的数据空间;
步骤1.6,若远程的存储节点上存在相应的数据空间,则访问相应的文件获取数据并返回到客户端;
步骤1.7,若远程的存储节点上不存在相应的数据空间,说明缓存已经过期,则向网络文件系统管理节点请求全局元数据信息,访问远程存储集群获取文件数据并更新全局元数据缓存。
其中步骤2包括以下步骤:
步骤2.1,向远程存储节点发送数据请求前,先按文件名做关键字查找客户端数据缓存;
步骤2.2,若客户端缓存模块并未对该文件进行缓存,且缓存控制块的数量未达到阈值,则新增文件缓存控制块,记录本文件的缓存块的控制信息;
步骤2.3,若客户端缓存模块未对该文件进行缓存,且缓存控制块的数量已经达到阈值,则按照LRU算法对缓存控制块进行替换。
其中步骤3包括以下步骤:
步骤3.1,缓存控制块中保存有缓存的文件块的起始位置和长度;若请求的文件块起始地址小于缓存块的起始地址或者大于缓存块起始地址加长度,则意味着请求块未被缓存,向远程存储节点发送访问请求;
步骤3.2,若文件请求起始位置落在已确定缓存的区域,且数据已经异步读取到客户端,那么向客户端返回缓存的文件块区域;若请求仍有未完成的部分,那么继续向远程存储节点发送访问请求;
步骤3.3,若文件请求起始位置落在已确定缓存的区域,而有部分数据尚未读取到客户端,那么等待一段异步预取返回数据的时间,如果仍未拿到数据则直接向远程存储节点发送访问请求。
其中,步骤4包括以下步骤:
步骤4.1,若请求的偏移量为0则认为文件是从头扫描的模式读取,因此开启文件预读模式;
步骤4.2,内核通常会对发送到客户端的读请求进行切分,若客户端接收到的请求大小为切分后的最大长度,则有足够的理由相信下一文件块也会被请求;因此开启预读模式;
步骤4.3,初次预读将读取四个文件块,第一个文件块做为当前工作窗口,剩下三个文件块做为预读窗口,并将预读窗口的第一个文件块做为二次预读触发块;
步骤4.4,缓存控制块信息中记录此次预取往返时延;
步骤4.5,客户端继续接受下一文件请求,若该请求非上一请求的顺序请求或者不在缓存区内,则开始重新初始化预读;
步骤4.6,客户端继续接受下一文件请求,若该请求命中二次预读触发块,根据上次请求的网络往返时延大小增量或减量进行下次预取,数量不超过配置的最大值;工作窗口和预读窗口向前推进。
其中,步骤5)包括以下步骤:
步骤5.1,远程数据存储节点检查缓存模块是否存在该文件的缓存控制块;
步骤5.2,若不存在该文件的缓存控制块并且缓存控制块数量未达到阈值,则初始化一新的缓存控制块;
步骤5.3,若不存在该文件的缓存控制块并且缓存控制块数量已满则按照LRU的替换策略更新缓存控制块;
步骤5.4,存储节点取出初始化预取请求的四个文件块返回,把后续的四个控制块放入缓存中;
步骤5.5,存储节点接收到的同一文件最大文件块请求数作为缓存数量,当缓存块中内容被取走时,从磁盘中预取一定数量文件块,使缓存的文件块数量等于历史最大请求数;
步骤5.6,若该文件被写,则使缓存失效。
其中,步骤6包括以下步骤:
步骤6.1,检查缓存控制块的时期标志位,若标志位指示该缓存被清空过或是缓存已失效,则启用;
步骤6.2,检查缓存控制块的时期标志位,若合格则将文件块放入缓存中。
本发明的技术效果:
本发明提供一种面向广域网络文件系统的自适应快速增量预读方法,针对广域网络传输读文件请求造成的相对于本地文件系统的性能消耗,它实现了提前预读的特性,提高了缓存的作用效果并能够根据读请求的序列信息以及网络延时自适应的快速调整预读窗口的大小。针对文件访问模式的判定粒度过细导致的网络文件系统预读命中率高但性能低的问题,它采用模糊判定的方式,尽可能地减少网络传输的次数而提高预读的数量扩大读取性能。针对多文件并发访问,请求交叉的情况,本方法实现了队列方式管理文件预读缓存控制体,降低了因交叉访问导致的缓存命中率低的问题。通过在客户端和存储节点双向设置预取模块,进一步提升了文件读取的相应速度。
本发明适用于广域高性能计算环境的CS架构中,运行于文件访问服务节点以及客户端节点上,具有良好的稳定性和可扩展性,能根据实际运行情况自适应的动态调整预取大小,以及缓存块的数量,提升远程文件数据访问性能和可用性。
本发明的优点包括:
本发明所提出的一种面向广域网络文件系统的自适应增量快速预读方法,与现有技术相比,其主要优点是:
所提出的全局元数据和数据的客户端缓存方法,减少了全局元数据和数据的远程实际传输量,避免全局元数据成为热点并提升远程数据访问性能;能够根据网络环境自适应调整预读大小,有效提高了远程I/O速度,减少了远程IO的次数,保持CPU和I/O流水线高速运转;采用客户端和服务端双缓存的方式能降低服务端磁盘扫描读取带来的性能损耗;模糊预取触发条件虽然牺牲了一部分缓存命中率,但在网络传输时延的收益上是巨大的。
附图说明
图1为本发明面向广域网络文件系统的自适应快速增量预读方法实施流程图。
图2为广域网络文件系统架构图。
图3为文件的缓存块在客户端和服务端的组织结构图。
图4为客户端预取流程图。
图5为文件存储节点预取流程图。
具体实施方式
以下结合附图(图1-图5)对本发明作进一步详细的说明。
如图1所示,是本发明的实施流程图。面向广域网络文件系统的自适应增量快速预读方法,包括以下步骤:
1)在访问文件数据时,客户端首先向管理节点获取访问的文件元数据信息,包括文件位置、用户信息、空间名称等。根据空间局部性缓存全局元数据,根据远程访问的反馈信息动态更新全局元数据缓存。
2)根据客户端文件缓存的文件内容,确定是否需要对该文件新增缓存控制块,或更新文件缓存控制块。
3)查找文件缓存块中是否保存有相应的缓存内容,若存在缓存内容则取出缓存内容返回给客户端应用程序,若无缓存内容则进行异步缓存预取。
4)基于文件请求的偏移量以及长度判定文件是否需要预取,若文件需要预取则根据访问文件块位于访问窗口和预取窗口的位置判定预取文件的大小。
5)文件数据服务器接受到数据请求访问后,采用同样的缓存控制块组织结构,而使用本地预取的策略,将预取块放入主存中便于快速响应客户端请求。
6)客户端异步预取结果返回后比对缓存控制块中的时期指示符,若异步获取的文件块已超期,则弃用,否则保存在文件缓存块中。
广域文件系统架构如图2所示,客户机节点通过客户端访问远程文件,客户端首先通过管理节点中的空间管理模块获取全局元数据信息包含用户的数据空间信息、空间名称、位置等,客户端将本地文件路径和数据空间信息拼接成实际的物理路径并发送到文件所在数据中心的文件访问服务节点利用IO代理模块接收文件路径并调用存储集群客户端模块访问文件,对文件进行预取和缓存,并将文件数据返回。
文件的缓存块在客户端和服务端的组织结构如图3所示,预取的文件块按照节进行组织,每一节长128KB。每个缓存块保存在内存中,用一个缓存控制体结构保存缓存块的管理信息,例如缓存块的主存地址、缓存起始节以及已缓存的长度等。客户端处理能力有限缓存的文件数量需要被限制,因此采用链表组织管理缓存控制块的索引。当客户端接收到新的文件读请求时,首先查看文件是否被缓存,如果不存在目标文件缓存控制体,那么将更新组织链表。当缓存空间足够时,采用新增缓存控制体的方式,当缓存空间不够时,利用LRU算法替换出缓存控制块。若请求的文件存在缓存,那么根据LRU算法将其缓存控制体放到链表最前端。
文件数据在客户端和服务端的缓存流程如图4所示,在客户端设置本地缓存用于缓存远程文件数据,减少网络传输开销,设置三种文件访问模式:顺序访问模式、初始化访问模式、随机访问模式;通过对文件访问序列的模糊判定,迅速对文件访问做出反应。如果不存在访问文件的缓存控制体,并且访问地址的偏移量为0,那么该文件应当以初始化访问模式建立缓存控制体进入链表;如果存在访问文件的缓存控制体,并且当前请求的初始位置为上一请求的终点位置,则设置缓存控制体为顺序访问模式;如果存在访问文件的缓存控制体,并且当前请求的初始位置与上一请求的终点位置并不衔接,则设置缓存控制体为随机访问模式,清空该文件的缓存内容。
无论处于那种访问模式,客户端的预读模块都会对文件进行预读,除非手动配置客户端关闭预读工具。对于初始化访问模式和随机访问模式,预读模块都会初始化预读四个文件块缓存到客户端。对于顺序访问模式,设置工作窗口和预读窗口,预读窗口的第一个文件块设置为二次预读触发块,当顺序读到此处时,则依据网络状态和客户端配置设置下一次预读规模,工作窗口和预读窗口后移。
步骤1)包括以下步骤:
步骤(1.1)客户端向网络文件系统的管理节点请求文件的全局元数据信息;
步骤(1.2)客户端判断本地是否保存有该文件的全局元数据信息;
步骤(1.3)若本地没有缓存全局元数据信息,则客户端向网络文件系统的管理节点请求全局元数据信息,并将请求回来的结果进行缓存,如果缓存大小超过设定的阈值,则采用LRU的算法对缓存进行替换;
步骤(1.4)若本地缓存有全局元数据信息,则客户端访问缓存的全局元数据获取数据服务器的位置,并向远程的存储节点发送文件数据请求;
步骤(1.5)判断存储节点上是否包含对应的数据空间;
步骤(1.6)若远程的存储节点上存在相应的数据空间,则访问相应的文件获取数据并返回到客户端;
步骤(1.7)若远程的存储节点上不存在相应的数据空间,说明缓存已经过期,则向网络文件系统管理节点请求全局元数据信息,访问远程存储集群获取文件数据并更新全局元数据缓存。
步骤2)包括以下步骤:
步骤(2.1)向远程存储节点发送数据请求前,先按文件名做关键字查找客户端数据缓存;
步骤(2.2)若客户端缓存模块并未对该文件进行缓存,且缓存控制块的数量未达到阈值,则新增文件缓存控制块,记录本文件的缓存块的控制信息。
步骤(2.3)若客户端缓存模块未对该文件进行缓存,且缓存控制块的数量已经达到阈值,则按照LRU算法对缓存控制块进行替换;
步骤3)包括以下步骤:
步骤(3.1)缓存控制块中保存有缓存的文件块的起始位置和长度。若请求的文件块起始地址小于缓存块的起始地址或者大于缓存块起始地址加长度,则意味着请求块未被缓存,向远程存储节点发送访问请求;
步骤(3.2)若文件请求起始位置落在已确定缓存的区域,且数据已经异步读取到客户端,那么向客户端返回缓存的文件块区域。若请求仍有未完成的部分,那么继续向远程存储节点发送访问请求;
步骤(3.3)若文件请求起始位置落在已确定缓存的区域,而有部分数据尚未读取到客户端,那么等待一段异步预取返回数据的时间,如果仍未拿到数据则直接向远程存储节点发送访问请求;
步骤4)包括以下步骤:
步骤(4.1)若请求的偏移量为0则认为文件是从头扫描的模式读取,因此开启文件预读模式;
步骤(4.2)内核通常会对发送到客户端的读请求进行切分,若客户端接收到的请求大小为切分后的最大长度,则有足够的理由相信下一文件块也会被请求。因此开启预读模式;
步骤(4.3)初次预读将读取四个文件块,第一个文件块做为当前工作窗口,剩下三个文件块做为预读窗口,并将预读窗口的第一个文件块做为二次预读触发块;
步骤(4.4)缓存控制块信息中记录此次预取往返时延;
步骤(4.5)客户端继续接受下一文件请求,若该请求非上一请求的顺序请求或者不在缓存区内,则开始重新初始化预读;
步骤(4.6)客户端继续接受下一文件请求,若该请求命中二次预读触发块,根据上次请求的网络往返时延大小增量或减量进行下次预取,数量不超过配置的最大值。工作窗口和预读窗口向前推进;
参看图5,图5为文件存储节点预取流程图。步骤5)包括以下步骤:
步骤(5.1)远程数据存储节点检查缓存模块是否存在该文件的缓存控制块;
步骤(5.2)若不存在该文件的缓存控制块并且缓存控制块数量未达到阈值,则初始化一新的缓存控制块;
步骤(5.3)若不存在该文件的缓存控制块并且缓存控制块数量已满则按照LRU的替换策略更新缓存控制块;
步骤(5.4)存储节点取出初始化预取请求的四个文件块返回,把后续的四个控制块放入缓存中;
步骤(5.5)存储节点接收到的同一文件最大文件块请求数作为缓存数量,当缓存块中内容被取走时,从磁盘中预取一定数量文件块,使缓存的文件块数量等于历史最大请求数;
步骤(5.6)若该文件被写,则使缓存失效;
步骤6)包括以下步骤:
步骤(6.1)检查缓存控制块的时期标志位,若标志位指示该缓存被清空过或是缓存已失效,则启用;
步骤(6.2)检查缓存控制块的时期标志位,若合格则将文件块放入缓存中。
最后应说明的是:本发明还可有其他多种应用场景,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明做出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明的保护范围。

Claims (8)

1.一种面向广域网络文件系统的自适应快速增量预读方法,其特征在于,客户端对特定数量的文件维护一个预读缓存块,当文件读请求由内核转至客户端时,客户端根据保存的缓存上下文决定是否新增缓存块大小或是替换缓存块,以及预取内容的大小;当文件访问服务节点接收到文件请求后,同样对文件预取保存在主存中以便快速响应文件的预取请求。
2.根据权利要求1所述的方法,其特征在于,包括以下步骤:
步骤1,在访问文件数据时,客户端首先向管理节点获取访问的文件元数据信息,包括文件位置、用户信息、空间名称等;根据空间局部性缓存全局元数据,根据远程访问的反馈信息动态更新全局元数据缓存;
步骤2,根据客户端文件缓存的文件内容,确定是否需要对该文件新增缓存控制块,或更新文件缓存控制块;
步骤3,查找文件缓存块中是否保存有相应的缓存内容,若存在缓存内容则取出缓存内容返回给客户端应用程序,若无缓存内容则进行异步缓存预取;
步骤4,基于文件请求的偏移量以及长度判定文件是否需要预取,若文件需要预取则根据访问文件块位于访问窗口和预取窗口的位置判定预取文件的大小;
步骤5,文件数据服务器接受到数据请求访问后,采用同样的缓存控制块组织结构,而使用本地预取的策略,将预取块放入主存中便于快速响应客户端请求;
步骤6,客户端异步预取结果返回后比对缓存控制块中的时期指示符,若异步获取的文件块已超期,则弃用,否则保存在文件缓存块中。
3.根据权利要求2所述的方法,其特征在于,所述步骤1包括以下步骤:
步骤1.1,客户端向网络文件系统的管理节点请求文件的全局元数据信息;
步骤1.2,客户端判断本地是否保存有该文件的全局元数据信息;
步骤1.3,若本地没有缓存全局元数据信息,则客户端向网络文件系统的管理节点请求全局元数据信息,并将请求回来的结果进行缓存,如果缓存大小超过设定的阈值,则采用LRU的算法对缓存进行替换;
步骤1.4,若本地缓存有全局元数据信息,则客户端访问缓存的全局元数据获取数据服务器的位置,并向远程的存储节点发送文件数据请求;
步骤1.5,判断存储节点上是否包含对应的数据空间;
步骤1.6,若远程的存储节点上存在相应的数据空间,则访问相应的文件获取数据并返回到客户端;
步骤1.7,若远程的存储节点上不存在相应的数据空间,说明缓存已经过期,则向网络文件系统管理节点请求全局元数据信息,访问远程存储集群获取文件数据并更新全局元数据缓存。
4.根据权利要求2所述的方法,其特征在于,所述步骤2包括以下步骤:
步骤2.1,向远程存储节点发送数据请求前,先按文件名做关键字查找客户端数据缓存;
步骤2.2,若客户端缓存模块并未对该文件进行缓存,且缓存控制块的数量未达到阈值,则新增文件缓存控制块,记录本文件的缓存块的控制信息;
步骤2.3,若客户端缓存模块未对该文件进行缓存,且缓存控制块的数量已经达到阈值,则按照LRU算法对缓存控制块进行替换。
5.根据权利要求2所述的方法,其特征在于,所述步骤3包括以下步骤:
步骤3.1,缓存控制块中保存有缓存的文件块的起始位置和长度;若请求的文件块起始地址小于缓存块的起始地址或者大于缓存块起始地址加长度,则意味着请求块未被缓存,向远程存储节点发送访问请求;
步骤3.2,若文件请求起始位置落在已确定缓存的区域,且数据已经异步读取到客户端,那么向客户端返回缓存的文件块区域;若请求仍有未完成的部分,那么继续向远程存储节点发送访问请求;
步骤3.3,若文件请求起始位置落在已确定缓存的区域,而有部分数据尚未读取到客户端,那么等待一段异步预取返回数据的时间,如果仍未拿到数据则直接向远程存储节点发送访问请求。
6.根据权利要求2所述的方法,其特征在于,所述步骤4包括以下步骤:
步骤4.1,若请求的偏移量为0则认为文件是从头扫描的模式读取,因此开启文件预读模式;
步骤4.2,内核通常会对发送到客户端的读请求进行切分,若客户端接收到的请求大小为切分后的最大长度,则有足够的理由相信下一文件块也会被请求;因此开启预读模式;
步骤4.3,初次预读将读取四个文件块,第一个文件块做为当前工作窗口,剩下三个文件块做为预读窗口,并将预读窗口的第一个文件块做为二次预读触发块;
步骤4.4,缓存控制块信息中记录此次预取往返时延;
步骤4.5,客户端继续接受下一文件请求,若该请求非上一请求的顺序请求或者不在缓存区内,则开始重新初始化预读;
步骤4.6,客户端继续接受下一文件请求,若该请求命中二次预读触发块,根据上次请求的网络往返时延大小增量或减量进行下次预取,数量不超过配置的最大值;工作窗口和预读窗口向前推进。
7.根据权利要求2所述的方法,其特征在于,所述步骤5包括以下步骤:
步骤5.1,远程数据存储节点检查缓存模块是否存在该文件的缓存控制块;
步骤5.2,若不存在该文件的缓存控制块并且缓存控制块数量未达到阈值,则初始化一新的缓存控制块;
步骤5.3,若不存在该文件的缓存控制块并且缓存控制块数量已满则按照LRU的替换策略更新缓存控制块;
步骤5.4,存储节点取出初始化预取请求的四个文件块返回,把后续的四个控制块放入缓存中;
步骤5.5,存储节点接收到的同一文件最大文件块请求数作为缓存数量,当缓存块中内容被取走时,从磁盘中预取一定数量文件块,使缓存的文件块数量等于历史最大请求数;
步骤5.6,若该文件被写,则使缓存失效。
8.根据权利要求2所述的方法,其特征在于,所述步骤6包括以下步骤:
步骤6.1,检查缓存控制块的时期标志位,若标志位指示该缓存被清空过或是缓存已失效,则启用;
步骤6.2,检查缓存控制块的时期标志位,若合格则将文件块放入缓存中。
CN202010470526.1A 2020-05-28 2020-05-28 面向广域网络文件系统的自适应快速增量预读方法 Active CN111787062B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010470526.1A CN111787062B (zh) 2020-05-28 2020-05-28 面向广域网络文件系统的自适应快速增量预读方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010470526.1A CN111787062B (zh) 2020-05-28 2020-05-28 面向广域网络文件系统的自适应快速增量预读方法

Publications (2)

Publication Number Publication Date
CN111787062A true CN111787062A (zh) 2020-10-16
CN111787062B CN111787062B (zh) 2021-11-26

Family

ID=72754316

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010470526.1A Active CN111787062B (zh) 2020-05-28 2020-05-28 面向广域网络文件系统的自适应快速增量预读方法

Country Status (1)

Country Link
CN (1) CN111787062B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113192558A (zh) * 2021-05-26 2021-07-30 北京自由猫科技有限公司 用于第三代基因测序数据的读写方法及分布式文件系统
CN113849125A (zh) * 2021-08-30 2021-12-28 北京东方网信科技股份有限公司 一种cdn服务器磁盘读取的方法、装置及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130304842A1 (en) * 2010-11-16 2013-11-14 Intel Corporation Endpoint Caching for Data Storage Systems
CN104715048A (zh) * 2015-03-26 2015-06-17 浪潮集团有限公司 一种文件系统缓存预读取方法
CN106686113A (zh) * 2017-01-19 2017-05-17 郑州云海信息技术有限公司 一种分布式文件系统智能预读实现方法
CN110502498A (zh) * 2019-08-16 2019-11-26 济南浪潮数据技术有限公司 一种分布式文件系统文件预读方法和系统
CN110737388A (zh) * 2018-07-18 2020-01-31 中兴通讯股份有限公司 数据预读方法、客户端、服务器以及文件系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130304842A1 (en) * 2010-11-16 2013-11-14 Intel Corporation Endpoint Caching for Data Storage Systems
CN104715048A (zh) * 2015-03-26 2015-06-17 浪潮集团有限公司 一种文件系统缓存预读取方法
CN106686113A (zh) * 2017-01-19 2017-05-17 郑州云海信息技术有限公司 一种分布式文件系统智能预读实现方法
CN110737388A (zh) * 2018-07-18 2020-01-31 中兴通讯股份有限公司 数据预读方法、客户端、服务器以及文件系统
CN110502498A (zh) * 2019-08-16 2019-11-26 济南浪潮数据技术有限公司 一种分布式文件系统文件预读方法和系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
吴峰光: "Linux内核中的预取算法", 《中国博士学位论文全文数据库》 *
师明: "一种面向分布式文件系统的文件预取模型的设计与实现", 《计算机科学》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113192558A (zh) * 2021-05-26 2021-07-30 北京自由猫科技有限公司 用于第三代基因测序数据的读写方法及分布式文件系统
CN113849125A (zh) * 2021-08-30 2021-12-28 北京东方网信科技股份有限公司 一种cdn服务器磁盘读取的方法、装置及系统
CN113849125B (zh) * 2021-08-30 2024-01-09 北京东方网信科技股份有限公司 一种cdn服务器磁盘读取的方法、装置及系统

Also Published As

Publication number Publication date
CN111787062B (zh) 2021-11-26

Similar Documents

Publication Publication Date Title
US9990296B2 (en) Systems and methods for prefetching data
JP6113199B2 (ja) データを管理する方法、コンピュータ・プログラム、およびシステム
US7058763B2 (en) File system for caching web proxies
US9304928B2 (en) Systems and methods for adaptive prefetching
US9141529B2 (en) Methods and apparatus for providing acceleration of virtual machines in virtual environments
US8397016B2 (en) Efficient use of hybrid media in cache architectures
US8762650B2 (en) Prefetching tracks using multiple caches
US8489820B1 (en) Speculative copying of data from main buffer cache to solid-state secondary cache of a storage server
CN111782612B (zh) 跨域虚拟数据空间中文件数据边缘缓存方法
US8776158B1 (en) Asynchronous shifting windows caching for forward and backward video streaming
US20030188104A1 (en) Provision of a victim cache within a storage cache heirarchy
US20150149742A1 (en) Memory unit and method
US7039765B1 (en) Techniques for cache memory management using read and write operations
US20030074524A1 (en) Mass storage caching processes for power reduction
CN111787062B (zh) 面向广域网络文件系统的自适应快速增量预读方法
CN106528451B (zh) 针对小文件的二级缓存预取的云存储框架及构建方法
CN101853218B (zh) 用于磁盘阵列的读取方法和系统
US20130086325A1 (en) Dynamic cache system and method of formation
US11237975B2 (en) Caching assets in a multiple cache system
CN116069752A (zh) 一种面向分布式文件系统的混合预取方法
CN115268763A (zh) 一种缓存管理方法、装置及设备
CN112650694B (zh) 一种数据读取方法、装置、缓存代理服务器及存储介质
KR101976320B1 (ko) 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법
CN110209343B (zh) 数据存储方法、装置、服务器及存储介质
JP2023137488A (ja) ストレージシステム及びデータキャッシュ方法

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