CN111258967A - 文件系统中数据读取方法、装置及计算机可读存储介质 - Google Patents

文件系统中数据读取方法、装置及计算机可读存储介质 Download PDF

Info

Publication number
CN111258967A
CN111258967A CN202010086808.1A CN202010086808A CN111258967A CN 111258967 A CN111258967 A CN 111258967A CN 202010086808 A CN202010086808 A CN 202010086808A CN 111258967 A CN111258967 A CN 111258967A
Authority
CN
China
Prior art keywords
read
data
reading
size
monitoring
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.)
Pending
Application number
CN202010086808.1A
Other languages
English (en)
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.)
Orca Data Technology Xian Co Ltd
Original Assignee
Orca Data Technology Xian Co Ltd
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 Orca Data Technology Xian Co Ltd filed Critical Orca Data Technology Xian Co Ltd
Priority to CN202010086808.1A priority Critical patent/CN111258967A/zh
Publication of CN111258967A publication Critical patent/CN111258967A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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/13File access structures, e.g. distributed indices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种文件系统中数据读取方法,所述方法包括:循环监控缓存中顺序预读文件的状态,计算顺序预读文件中后续需要读取的待读数据的数据大小;判断数据大小是否小于或等于预设下限阈值,并在判断为是的情况下,根据预设上限阈值从磁盘中预读一定大小的后续待读数据到缓存中。本发明能够可以保证针对文件系统的大文件顺序读取一直保持缓存命中,降低了文件顺序读的响应时间,解决了文件顺序读过程中的周期性延时抖动问题。

Description

文件系统中数据读取方法、装置及计算机可读存储介质
技术领域
本发明涉及计算机存储领域,尤其涉及一种文件系统中数据读取方法、装置及计算机可读存储介质。
背景技术
在现有技术中,文件系统(File System,简称为FS)是操作系统用于明确存储设备(常见的是磁盘和固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。
目前,几乎所有的FS实现都采用缓存(cache)机制来加速文件的读写性能,因为内存的读写速度远高于磁盘,在现有FS的实现中,将操作系统内存划分出一部分来作为FS的缓存。当应用程序顺序读取一个大文件时,FS会将当前读取位置的数据连同后面连续的一大块数据从磁盘上一起取出放到缓存中,应用程序后续的文件读操作就可以直接在缓存中读取到需要的数据,而不必再访问慢速的磁盘,从而提升FS的读性能,这种机制称为文件系统的预读机制。
应用程序对文件的读取方式分为顺序读和随机读两种,因为随机读无法对文件后续的读取位置做出预测,所以预读只针对文件的顺序读。
当之前被预读到缓存中的数据被应用程序全部读取完毕之后,下一次应用程序对文件的读取操作在缓存中将不会找到需要的数据,这种情况称为未命中,于是该次操作需要访问磁盘,从磁盘上再次读取出一大块数据到缓存之中作为预读数据,后续的读操作就可以继续从缓存中读到所需数据,如此反复。也就是说,如图1所示,缓存命中则读缓存,未命中则读磁盘并预读。
在评估文件系统的读写性能时,响应时间(延时)是很重要的一项指标,响应时间指的是应用程序对文件的一次读或者写操作从发起请求开始到收到返回数据的时间间隔。
目前现有的文件系统预读机制存在一个明显缺点,当某一次读取操作出现缓存未命中,因为读取磁盘速度远低于读取内存速度,那么这一次读操作的延时会显著增长,在整个大文件顺序读取过程中,响应时间呈现有规律的周期性延时波动。这种缺陷对于某些需要持续低延时的应用场景是不能容忍的。
发明内容
本发明实施例提供一种文件系统中数据读取方法、装置及计算机可读存储介质,用以解决现有技术中的上述问题。
本发明实施例提供一种文件系统中数据读取方法,包括:
循环监控缓存中顺序预读文件的状态,计算顺序预读文件中后续需要读取的待读数据的数据大小;
判断数据大小是否小于或等于预设下限阈值,并在判断为是的情况下,根据预设上限阈值从磁盘中预读一定大小的后续待读数据到缓存中。
本发明实施例还提供一种文件系统中数据读取装置,包括:
计算模块,用于循环监控缓存中顺序预读文件的状态,计算顺序预读文件中后续需要读取的待读数据的数据大小;
判断模块,用于判断数据大小是否小于或等于预设下限阈值,并在判断为是的情况下,根据预设上限阈值从磁盘中预读一定大小的后续待读数据到缓存中。
本发明实施例还提供一种文件系统中数据读取装置,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,计算机程序被处理器执行时实现上述文件系统中数据读取方法的步骤。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有信息传递的实现程序,程序被处理器执行时实现上述文件系统中数据读取方法的步骤。
采用本发明实施例,能够可以保证针对文件系统的大文件顺序读取一直保持缓存命中,降低了文件顺序读的响应时间,解决了文件顺序读过程中的周期性延时抖动问题。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是现有技术中应用程序顺序读取文件的流程图;
图2是本发明实施例的文件系统中数据读取方法的示意图;
图3是本发明实施例的文件系统中数据读取方法的详细处理示意图;
图4是本发明装置实施例一的文件系统中数据读取装置的示意图;
图5是本发明装置实施例二的文件系统中数据读取装置的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
方法实施例
根据本发明的实施例,提供了一种文件系统中数据读取方法,图2是本发明实施例的文件系统中数据读取方法的示意图,如图2所示,根据本发明实施例的文件系统中数据读取方法具体包括:
步骤201,循环监控缓存中顺序预读文件的状态,计算顺序预读文件中后续需要读取的待读数据的数据大小;步骤201具体包括如下处理:
步骤2010,对文件的顺序读取操作创建监控任务到监控队列中,其中,监控任务包括文件名、当前读请求的起始位置和当前读取数据大小;在实际应用中,以预定频率对文件的顺序读取操作创建监控任务到监控队列中。也就是说,发送监控任务的频率可以适当调整,不必每次读请求都需要监控模块检查待读数据剩余量,这样可以减轻监控模块的压力。
步骤2011,循环从监控队列中读取一个监控任务,根据监控任务中的文件名、当前读请求的起始位置和当前读取数据大小,计算顺序预读文件中后续需要读取的待读数据的数据大小。
从上述处理可以看出,本发明实施例在原有的文件系统顺序读的预读流程中,增加一个监控模块(该监控模块执行步骤201和步骤202的步骤),监控模块以无限循环的线程模式在后台运行,监控模块和文件系统其它模块并发运行,用来监控每个需要顺序读取的文件在缓存中的状态,对文件的顺序读操作会创建监控任务放到一个队列中,该监控任务包含的内容是文件名、读请求的起始位置和读取长度。监控模块每次循环开始时,从队列中取出一个监控任务进行处理,根据任务中包含的文件名、当前已经读到的位置和每次读取的长度计算出后续需要读取的连续的一部分数据(上述待读数据)在缓存中的状态。
步骤202,判断数据大小是否小于或等于预设下限阈值,并在判断为是的情况下,根据预设上限阈值从磁盘中预读一定大小的后续待读数据到缓存中。其中,后续待读数据的数据大小小于或者等于预设上限阈值减去待读取数据的数据大小。
也就是说,如果缓存中的待读数据不足事先设定的一个阈值,监控模块就到磁盘上预读一部分数据到缓存中来保证待读数据的充足,在本发明实施例中,预读操作和文件系统读操作并发执行,不占用读操作时间,通过本发明实施例的上述技术方案,提前将待读数据从磁盘中取出放入缓存,就可以保证应用程序每次都可以在缓存中读取到所需文件数据,避免延时波动。
此外,缓存中待读数据量阈值下限(即预设下限阈值)和上限(即预设上限阈值)具体为:
下限:待读数据量低于这个值,监控模块才会预读。
上限:监控模块预读时,从磁盘读取到缓存的数据量加上之前缓存剩余的待读数据量不能超过该上限。该值如果设置过高,会导致缓存的数据量过多,部分缓存数据将长时间不会被读取,造成资源浪费。如果过低会造成预读过于频繁而增大监控模块压力。
在实际应用中,阈值上限和下限值的设定由很多因素影响,例如,缓存总大小、文件系统块大小、并发访问文件的数量、后端磁盘的读取速度等,需要根据不同应用场景设定不同的值。
需要说明的是,缓存空间的回收由文件系统自身实现,大多数文件系统采用最近最少使用(Least Recently Used,简称为LRU)算法回收最近最久未使用的缓存空间。
以下结合附图,对本发明实施例的上述技术方案进行详细说明。
图3是本发明实施例的文件系统中数据读取方法的详细处理示意图,如图3所示,根据本发明实施例的文件系统中数据读取方法具体包括:
步骤301,应用程序顺序读取文件;
步骤302,判断顺序读取的数据是否在缓存中,如果判断为是,则执行步骤304,否则,执行步骤303;
步骤303,从磁盘读取所需数据并预读到缓存中,返回步骤302;
步骤304,发送监控任务到任务队列,返回步骤301;
步骤305,监控线程启动;
步骤306,判断任务队列是否为空,如果判断为是,则执行步骤310,否则执行步骤307;
步骤307,从任务队列中取出一个监控任务;
步骤308,判断缓存中待读取数据的数据大小是否小于或者等于预设下限阈值,如果判断为是,则执行309,否则,执行步骤310;
步骤309,从磁盘中预读一定大小的后续待读数据到缓存中,执行步骤310;
步骤310,休眠一定时间,返回步骤306。
综上所述,借助于本发明实施例的技术方案,将预读过程从原文件系统读流程中分离,放到新增的监控模块在后台并发执行,降低了文件顺序读的响应时间,避免了应用程序周期性读请求的高延时导致的抖动问题。本发明实施例的技术方案可以在所有文件系统中采用。其具体实现具有较大弹性,可以根据实际项目情况调整。
装置实施例一
根据本发明的实施例,提供了一种文件系统中数据读取装置,下述计算模块和判断模块的操作对应于下述监控模块,为了清楚的对监控模块的操作进行说明,将监控模块拆分成了计算模块和判断模块,特此说明。图4是本发明装置实施例一的文件系统中数据读取装置的示意图,如图4所示,根据本发明实施例的文件系统中数据读取装置具体包括:
计算模块40,用于循环监控缓存中顺序预读文件的状态,计算顺序预读文件中后续需要读取的待读数据的数据大小;
所述计算模块40具体用于:
对文件的顺序读取操作创建监控任务到监控队列中,其中,所述监控任务包括文件名、当前读请求的起始位置和当前读取数据大小;在实际应用中,可以以预定频率对文件的顺序读取操作创建监控任务到监控队列中。也就是说,发送监控任务的频率可以适当调整,不必每次读请求都需要监控模块检查待读数据剩余量,这样可以减轻监控模块的压力。
循环从监控队列中读取一个监控任务,根据所述监控任务中的文件名、当前读请求的起始位置和当前读取数据大小,计算顺序预读文件中后续需要读取的待读数据的数据大小。
从上述处理可以看出,本发明实施例在原有的文件系统顺序读的预读流程中,增加一个监控模块(该监控模块执行步骤201和步骤202的步骤),监控模块以无限循环的线程模式在后台运行,监控模块和文件系统其它模块并发运行,用来监控每个需要顺序读取的文件在缓存中的状态,对文件的顺序读操作会创建监控任务放到一个队列中,该监控任务包含的内容是文件名、读请求的起始位置和读取长度。监控模块每次循环开始时,从队列中取出一个监控任务进行处理,根据任务中包含的文件名、当前已经读到的位置和每次读取的长度计算出后续需要读取的连续的一部分数据(上述待读数据)在缓存中的状态。
判断模块42,用于判断所述数据大小是否小于或等于预设下限阈值,并在判断为是的情况下,根据预设上限阈值从磁盘中预读一定大小的后续待读数据到缓存中。其中,所述后续待读数据的数据大小小于或者等于所述预设上限阈值减去所述待读取数据的数据大小。
也就是说,如果缓存中的待读数据不足事先设定的一个阈值,监控模块就到磁盘上预读一部分数据到缓存中来保证待读数据的充足,在本发明实施例中,预读操作和文件系统读操作并发执行,不占用读操作时间,通过本发明实施例的上述技术方案,提前将待读数据从磁盘中取出放入缓存,就可以保证应用程序每次都可以在缓存中读取到所需文件数据,避免延时波动。
此外,缓存中待读数据量阈值下限(即预设下限阈值)和上限(即预设上限阈值)具体为:
下限:待读数据量低于这个值,监控模块才会预读。
上限:监控模块预读时,从磁盘读取到缓存的数据量加上之前缓存剩余的待读数据量不能超过该上限。该值如果设置过高,会导致缓存的数据量过多,部分缓存数据将长时间不会被读取,造成资源浪费。如果过低会造成预读过于频繁而增大监控模块压力。
在实际应用中,阈值上限和下限值的设定由很多因素影响,例如,缓存总大小、文件系统块大小、并发访问文件的数量、后端磁盘的读取速度等,需要根据不同应用场景设定不同的值。
需要说明的是,缓存空间的回收由文件系统自身实现,大多数文件系统采用最近最少使用(Least Recently Used,简称为LRU)算法回收最近最久未使用的缓存空间。
监控模块的具体操作还可以参照图4和方法实施例中对图4的描述进行理解,在此不再赘述。
综上所述,借助于本发明实施例的技术方案,将预读过程从原文件系统读流程中分离,放到新增的监控模块在后台并发执行,降低了文件顺序读的响应时间,避免了应用程序周期性读请求的高延时导致的抖动问题。本发明实施例的技术方案可以在所有文件系统中采用。其具体实现具有较大弹性,可以根据实际项目情况调整。
装置实施例二
本发明实施例提供一种边缘节点设备,如图5所示,包括:存储器50、处理器52存储在所述存储器50上并可在所述处理器52上运行的计算机程序,所述计算机程序被所述处理器52执行时实现如下方法步骤:
步骤201,循环监控缓存中顺序预读文件的状态,计算顺序预读文件中后续需要读取的待读数据的数据大小;步骤201具体包括如下处理:
步骤2010,对文件的顺序读取操作创建监控任务到监控队列中,其中,监控任务包括文件名、当前读请求的起始位置和当前读取数据大小;在实际应用中,以预定频率对文件的顺序读取操作创建监控任务到监控队列中。也就是说,发送监控任务的频率可以适当调整,不必每次读请求都需要监控模块检查待读数据剩余量,这样可以减轻监控模块的压力。
步骤2011,循环从监控队列中读取一个监控任务,根据监控任务中的文件名、当前读请求的起始位置和当前读取数据大小,计算顺序预读文件中后续需要读取的待读数据的数据大小。
从上述处理可以看出,本发明实施例在原有的文件系统顺序读的预读流程中,增加一个监控模块(该监控模块执行步骤201和步骤202的步骤),监控模块以无限循环的线程模式在后台运行,监控模块和文件系统其它模块并发运行,用来监控每个需要顺序读取的文件在缓存中的状态,对文件的顺序读操作会创建监控任务放到一个队列中,该监控任务包含的内容是文件名、读请求的起始位置和读取长度。监控模块每次循环开始时,从队列中取出一个监控任务进行处理,根据任务中包含的文件名、当前已经读到的位置和每次读取的长度计算出后续需要读取的连续的一部分数据(上述待读数据)在缓存中的状态。
步骤202,判断数据大小是否小于或等于预设下限阈值,并在判断为是的情况下,根据预设上限阈值从磁盘中预读一定大小的后续待读数据到缓存中。其中,后续待读数据的数据大小小于或者等于预设上限阈值减去待读取数据的数据大小。
也就是说,如果缓存中的待读数据不足事先设定的一个阈值,监控模块就到磁盘上预读一部分数据到缓存中来保证待读数据的充足,在本发明实施例中,预读操作和文件系统读操作并发执行,不占用读操作时间,通过本发明实施例的上述技术方案,提前将待读数据从磁盘中取出放入缓存,就可以保证应用程序每次都可以在缓存中读取到所需文件数据,避免延时波动。
此外,缓存中待读数据量阈值下限(即预设下限阈值)和上限(即预设上限阈值)具体为:
下限:待读数据量低于这个值,监控模块才会预读。
上限:监控模块预读时,从磁盘读取到缓存的数据量加上之前缓存剩余的待读数据量不能超过该上限。该值如果设置过高,会导致缓存的数据量过多,部分缓存数据将长时间不会被读取,造成资源浪费。如果过低会造成预读过于频繁而增大监控模块压力。
在实际应用中,阈值上限和下限值的设定由很多因素影响,例如,缓存总大小、文件系统块大小、并发访问文件的数量、后端磁盘的读取速度等,需要根据不同应用场景设定不同的值。
需要说明的是,缓存空间的回收由文件系统自身实现,大多数文件系统采用最近最少使用(Least Recently Used,简称为LRU)算法回收最近最久未使用的缓存空间。
以下结合附图,对本发明实施例的上述技术方案进行详细说明。
图3是本发明实施例的文件系统中数据读取方法的详细处理示意图,如图3所示,根据本发明实施例的文件系统中数据读取方法具体包括:
步骤301,应用程序顺序读取文件;
步骤302,判断顺序读取的数据是否在缓存中,如果判断为是,则执行步骤304,否则,执行步骤303;
步骤303,从磁盘读取所需数据并预读到缓存中,返回步骤302;
步骤304,发送监控任务到任务队列,返回步骤301;
步骤305,监控线程启动;
步骤306,判断任务队列是否为空,如果判断为是,则执行步骤310,否则执行步骤307;
步骤307,从任务队列中取出一个监控任务;
步骤308,判断缓存中待读取数据的数据大小是否小于或者等于预设下限阈值,如果判断为是,则执行309,否则,执行步骤310;
步骤309,从磁盘中预读一定大小的后续待读数据到缓存中,执行步骤310;
步骤310,休眠一定时间,返回步骤306。
综上所述,借助于本发明实施例的技术方案,将预读过程从原文件系统读流程中分离,放到新增的监控模块在后台并发执行,降低了文件顺序读的响应时间,避免了应用程序周期性读请求的高延时导致的抖动问题。本发明实施例的技术方案可以在所有文件系统中采用。其具体实现具有较大弹性,可以根据实际项目情况调整。
装置实施例三
本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有信息传输的实现程序,所述程序被处理器53执行时实现如下方法步骤:
步骤201,循环监控缓存中顺序预读文件的状态,计算顺序预读文件中后续需要读取的待读数据的数据大小;步骤201具体包括如下处理:
步骤2010,对文件的顺序读取操作创建监控任务到监控队列中,其中,监控任务包括文件名、当前读请求的起始位置和当前读取数据大小;在实际应用中,以预定频率对文件的顺序读取操作创建监控任务到监控队列中。也就是说,发送监控任务的频率可以适当调整,不必每次读请求都需要监控模块检查待读数据剩余量,这样可以减轻监控模块的压力。
步骤2011,循环从监控队列中读取一个监控任务,根据监控任务中的文件名、当前读请求的起始位置和当前读取数据大小,计算顺序预读文件中后续需要读取的待读数据的数据大小。
从上述处理可以看出,本发明实施例在原有的文件系统顺序读的预读流程中,增加一个监控模块(该监控模块执行步骤201和步骤202的步骤),监控模块以无限循环的线程模式在后台运行,监控模块和文件系统其它模块并发运行,用来监控每个需要顺序读取的文件在缓存中的状态,对文件的顺序读操作会创建监控任务放到一个队列中,该监控任务包含的内容是文件名、读请求的起始位置和读取长度。监控模块每次循环开始时,从队列中取出一个监控任务进行处理,根据任务中包含的文件名、当前已经读到的位置和每次读取的长度计算出后续需要读取的连续的一部分数据(上述待读数据)在缓存中的状态。
步骤202,判断数据大小是否小于或等于预设下限阈值,并在判断为是的情况下,根据预设上限阈值从磁盘中预读一定大小的后续待读数据到缓存中。其中,后续待读数据的数据大小小于或者等于预设上限阈值减去待读取数据的数据大小。
也就是说,如果缓存中的待读数据不足事先设定的一个阈值,监控模块就到磁盘上预读一部分数据到缓存中来保证待读数据的充足,在本发明实施例中,预读操作和文件系统读操作并发执行,不占用读操作时间,通过本发明实施例的上述技术方案,提前将待读数据从磁盘中取出放入缓存,就可以保证应用程序每次都可以在缓存中读取到所需文件数据,避免延时波动。
此外,缓存中待读数据量阈值下限(即预设下限阈值)和上限(即预设上限阈值)具体为:
下限:待读数据量低于这个值,监控模块才会预读。
上限:监控模块预读时,从磁盘读取到缓存的数据量加上之前缓存剩余的待读数据量不能超过该上限。该值如果设置过高,会导致缓存的数据量过多,部分缓存数据将长时间不会被读取,造成资源浪费。如果过低会造成预读过于频繁而增大监控模块压力。
在实际应用中,阈值上限和下限值的设定由很多因素影响,例如,缓存总大小、文件系统块大小、并发访问文件的数量、后端磁盘的读取速度等,需要根据不同应用场景设定不同的值。
需要说明的是,缓存空间的回收由文件系统自身实现,大多数文件系统采用最近最少使用(Least Recently Used,简称为LRU)算法回收最近最久未使用的缓存空间。
以下结合附图,对本发明实施例的上述技术方案进行详细说明。
图3是本发明实施例的文件系统中数据读取方法的详细处理示意图,如图3所示,根据本发明实施例的文件系统中数据读取方法具体包括:
步骤301,应用程序顺序读取文件;
步骤302,判断顺序读取的数据是否在缓存中,如果判断为是,则执行步骤304,否则,执行步骤303;
步骤303,从磁盘读取所需数据并预读到缓存中,返回步骤302;
步骤304,发送监控任务到任务队列,返回步骤301;
步骤305,监控线程启动;
步骤306,判断任务队列是否为空,如果判断为是,则执行步骤310,否则执行步骤307;
步骤307,从任务队列中取出一个监控任务;
步骤308,判断缓存中待读取数据的数据大小是否小于或者等于预设下限阈值,如果判断为是,则执行309,否则,执行步骤310;
步骤309,从磁盘中预读一定大小的后续待读数据到缓存中,执行步骤310;
步骤310,休眠一定时间,返回步骤306。
综上所述,借助于本发明实施例的技术方案,将预读过程从原文件系统读流程中分离,放到新增的监控模块在后台并发执行,降低了文件顺序读的响应时间,避免了应用程序周期性读请求的高延时导致的抖动问题。本发明实施例的技术方案可以在所有文件系统中采用。其具体实现具有较大弹性,可以根据实际项目情况调整。
本实施例所述计算机可读存储介质包括但不限于为:ROM、RAM、磁盘或光盘等。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种文件系统中数据读取方法,其特征在于,包括:
循环监控缓存中顺序预读文件的状态,计算顺序预读文件中后续需要读取的待读数据的数据大小;
判断所述数据大小是否小于或等于预设下限阈值,并在判断为是的情况下,根据预设上限阈值从磁盘中预读一定大小的后续待读数据到缓存中。
2.如权利要求1所述的方法,其特征在于,所述后续待读数据的数据大小小于或者等于所述预设上限阈值减去所述待读取数据的数据大小。
3.如权利要求1所述的方法,其特征在于,循环监控缓存中顺序预读文件的状态,计算顺序预读文件中后续需要读取的待读数据的数据大小具体包括:
对文件的顺序读取操作创建监控任务到监控队列中,其中,所述监控任务包括文件名、当前读请求的起始位置和当前读取数据大小;
循环从监控队列中读取一个监控任务,根据所述监控任务中的文件名、当前读请求的起始位置和当前读取数据大小,计算顺序预读文件中后续需要读取的待读数据的数据大小。
4.如权利要求1所述的方法,其特征在于,对文件的顺序读取操作创建监控任务到监控队列中具体包括:
以预定频率对文件的顺序读取操作创建监控任务到监控队列中。
5.一种文件系统中数据读取装置,其特征在于,包括:
计算模块,用于循环监控缓存中顺序预读文件的状态,计算顺序预读文件中后续需要读取的待读数据的数据大小;
判断模块,用于判断所述数据大小是否小于或等于预设下限阈值,并在判断为是的情况下,根据预设上限阈值从磁盘中预读一定大小的后续待读数据到缓存中。
6.如权利要求5所述的装置,其特征在于,所述后续待读数据的数据大小小于或者等于所述预设上限阈值减去所述待读取数据的数据大小。
7.如权利要求5所述的装置,其特征在于,所述计算模块具体用于:
对文件的顺序读取操作创建监控任务到监控队列中,其中,所述监控任务包括文件名、当前读请求的起始位置和当前读取数据大小;
循环从监控队列中读取一个监控任务,根据所述监控任务中的文件名、当前读请求的起始位置和当前读取数据大小,计算顺序预读文件中后续需要读取的待读数据的数据大小。
8.如权利要求5所述的装置,其特征在于,所述计算模块具体用于:
以预定频率对文件的顺序读取操作创建监控任务到监控队列中。
9.一种文件系统中数据读取装置,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至4中任一项所述的文件系统中数据读取方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有信息传递的实现程序,所述程序被处理器执行时实现如权利要求1至4中任一项所述的文件系统中数据读取方法的步骤。
CN202010086808.1A 2020-02-11 2020-02-11 文件系统中数据读取方法、装置及计算机可读存储介质 Pending CN111258967A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010086808.1A CN111258967A (zh) 2020-02-11 2020-02-11 文件系统中数据读取方法、装置及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010086808.1A CN111258967A (zh) 2020-02-11 2020-02-11 文件系统中数据读取方法、装置及计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN111258967A true CN111258967A (zh) 2020-06-09

Family

ID=70949252

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010086808.1A Pending CN111258967A (zh) 2020-02-11 2020-02-11 文件系统中数据读取方法、装置及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN111258967A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111930307A (zh) * 2020-07-30 2020-11-13 北京浪潮数据技术有限公司 一种数据读取方法、装置、设备及计算机可读存储介质
CN112558866A (zh) * 2020-12-03 2021-03-26 Oppo(重庆)智能科技有限公司 数据的预读方法、移动终端及计算机可读存储介质
CN112685363A (zh) * 2020-12-30 2021-04-20 湖南博匠信息科技有限公司 一种用户文件读取、写入方法及装置
CN113821460A (zh) * 2021-08-27 2021-12-21 济南浪潮数据技术有限公司 一种文件预读缓存分配方法和装置
WO2022001133A1 (zh) * 2020-06-28 2022-01-06 苏州浪潮智能科技有限公司 一种提升软拷贝读性能的方法、系统、终端及存储介质
CN114168272A (zh) * 2022-02-14 2022-03-11 麒麟软件有限公司 一种缓存读文件时随机读的内核io优化方法
CN116028437A (zh) * 2023-03-29 2023-04-28 苏州浪潮智能科技有限公司 文件读取方法、装置、raid卡、存储系统及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103577158A (zh) * 2012-07-18 2014-02-12 阿里巴巴集团控股有限公司 数据处理方法与装置
CN106844740A (zh) * 2017-02-14 2017-06-13 华南师范大学 基于内存对象缓存系统的数据预读方法
CN110737388A (zh) * 2018-07-18 2020-01-31 中兴通讯股份有限公司 数据预读方法、客户端、服务器以及文件系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103577158A (zh) * 2012-07-18 2014-02-12 阿里巴巴集团控股有限公司 数据处理方法与装置
CN106844740A (zh) * 2017-02-14 2017-06-13 华南师范大学 基于内存对象缓存系统的数据预读方法
CN110737388A (zh) * 2018-07-18 2020-01-31 中兴通讯股份有限公司 数据预读方法、客户端、服务器以及文件系统

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022001133A1 (zh) * 2020-06-28 2022-01-06 苏州浪潮智能科技有限公司 一种提升软拷贝读性能的方法、系统、终端及存储介质
CN111930307A (zh) * 2020-07-30 2020-11-13 北京浪潮数据技术有限公司 一种数据读取方法、装置、设备及计算机可读存储介质
CN111930307B (zh) * 2020-07-30 2022-06-17 北京浪潮数据技术有限公司 一种数据读取方法、装置、设备及计算机可读存储介质
CN112558866A (zh) * 2020-12-03 2021-03-26 Oppo(重庆)智能科技有限公司 数据的预读方法、移动终端及计算机可读存储介质
CN112685363A (zh) * 2020-12-30 2021-04-20 湖南博匠信息科技有限公司 一种用户文件读取、写入方法及装置
CN113821460A (zh) * 2021-08-27 2021-12-21 济南浪潮数据技术有限公司 一种文件预读缓存分配方法和装置
CN113821460B (zh) * 2021-08-27 2024-03-01 济南浪潮数据技术有限公司 一种文件预读缓存分配方法和装置
CN114168272A (zh) * 2022-02-14 2022-03-11 麒麟软件有限公司 一种缓存读文件时随机读的内核io优化方法
CN114168272B (zh) * 2022-02-14 2022-04-19 麒麟软件有限公司 一种缓存读文件时随机读的内核io优化方法
CN116028437A (zh) * 2023-03-29 2023-04-28 苏州浪潮智能科技有限公司 文件读取方法、装置、raid卡、存储系统及存储介质

Similar Documents

Publication Publication Date Title
CN111258967A (zh) 文件系统中数据读取方法、装置及计算机可读存储介质
EP3229142B1 (en) Read cache management method and device based on solid state drive
US5895488A (en) Cache flushing methods and apparatus
US5649156A (en) Cache management system utilizing a cache data replacer responsive to cache stress threshold value and the period of time a data element remains in cache
CN107526546B (zh) 一种Spark分布式计算数据处理方法及系统
US6728837B2 (en) Adaptive data insertion for caching
EP2798501B1 (en) Data migration for composite non-volatile storage device
US6857047B2 (en) Memory compression for computer systems
US20060129763A1 (en) Virtual cache for disk cache insertion and eviction policies and recovery from device errors
EP2889776B1 (en) Data arrangement control program, data arrangement control method and data arrangment control apparatus
CN107544926B (zh) 处理系统及其访存方法
CN113377291A (zh) 一种缓存设备的数据处理方法、装置、设备及介质
CN111427804B (zh) 一种减少缺页中断次数的方法、存储介质及智能终端
CN105574008B (zh) 应用于分布式文件系统的任务调度方法和设备
CN112379841A (zh) 数据处理方法、装置和电子设备
CN112015343A (zh) 存储卷的缓存空间管理方法、装置及电子设备
JP2006350633A (ja) データ管理方法及びデータ管理システム
CN111309257A (zh) 恒定速率读文件的预读方法、装置及计算机可读存储介质
JP2015141545A (ja) ストレージ制御装置、ストレージ制御方法、及び、プログラム
CN112445794B (zh) 一种大数据系统的缓存方法
CN113093994A (zh) 一种数据处理方法及装置
CN113076070A (zh) 数据处理方法和装置
CN111026681A (zh) 一种基于Ceph的缓存方法、系统及存储介质
CN113297106A (zh) 基于混合存储的数据置换方法、相关方法及装置和系统
JPH06243042A (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