CN109240607B - 一种文件读取方法和装置 - Google Patents
一种文件读取方法和装置 Download PDFInfo
- Publication number
- CN109240607B CN109240607B CN201810955560.0A CN201810955560A CN109240607B CN 109240607 B CN109240607 B CN 109240607B CN 201810955560 A CN201810955560 A CN 201810955560A CN 109240607 B CN109240607 B CN 109240607B
- Authority
- CN
- China
- Prior art keywords
- file
- read
- cache space
- disk
- aggregation
- 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
- 238000000034 method Methods 0.000 title claims abstract description 57
- 230000002776 aggregation Effects 0.000 claims abstract description 122
- 238000004220 aggregation Methods 0.000 claims abstract description 122
- 238000010586 diagram Methods 0.000 description 5
- 230000004931 aggregating effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种文件读取方法,接收至少两个文件读请求;根据各文件读请求中的文件标识以及文件索引表,确定各待读取文件在磁盘中的存储位置以及文件大小,文件索引表中记录存储于磁盘中的文件的存储位置和文件大小;根据各待读取文件的文件大小,为各待读取文件分配对应的读取缓存空间,并按照各待读取文件的存储位置的先后顺序和文件大小分配聚合缓存空间;进而,将各待读取文件存储于聚合缓存空间,并在文件索引表中记录各待读取文件在聚合缓存空间中的存储位置和存储空间;根据文件索引表中记录的各待读取文件在聚合缓存空间中的存储位置和存储空间,将各待读取文件拷贝至读取缓存空间中完成待读取文件的聚合读取操作。
Description
技术领域
本申请涉及数据读取技术领域,特别是涉及一种文件读取方法和装置。
背景技术
在互联网、物联网、云计算、大数据等高速发展的背景下,数据呈现爆炸式的增长趋势,根据互联网预测中心的预测,到2020年产生的数据量将达到40ZB。然而,社会化网络、移动通信、网络视频音频、电子商务、传感器网络、科学实验等各种应用产生的数据,不仅存储容量巨大,而且还存在数据类型繁多、数据大小变化大等特点,往往可能产生千万级、亿级甚至十亿级、百亿级的海量小文件,而且更多的是海量大小文件混合存储。
在如今众多的存储业务场景中,以读取海量小文件为主的业务场景越来越多,越来越重要,通常情况下,将大小在1MB以内的文件称为小文件。
然而小文件的读取通常较为耗时,也是影响系统响应时间的一个重要因素。究其原因在于,小文件在磁盘上的存储位置通常是不连续的,经常存储于多个不连续的数据块,如此在依次读多个小文件过程中容易出现磁盘抖动,即在每读取完一个小文件后,可能需要等待磁盘的一次旋转时间,甚至是寻道时间后,才能够读取到下一个小文件,由此将耗费大量时间读取小文件。
发明内容
为了解决上述技术问题,本申请提供了一种文件读取方法,通过聚合读取多个文件,减少磁盘抖动,减少文件读取过程中需要耗费的时间。
本申请实施例公开了如下技术方案:
第一方面,本申请实施例提供了一种文件读取方法,所述方法包括:
接收至少两个文件读请求,所述文件读请求中包括待读取文件对应的文件标识;
根据所述待读取文件对应的文件标识以及文件索引表,确定所述各个待读取文件在磁盘中的存储位置和文件大小;所述文件索引表中记录存储于磁盘中的文件的存储位置和文件大小;
根据所述各个待读取文件的文件大小,为所述各个待读取文件分配对应的读取缓存空间;
按照所述各个待读取文件的存储位置的先后顺序以及所述各个待读取文件的文件大小,分配聚合缓存空间;
将所述各个待读取文件存储于所述聚合缓存空间;在所述文件索引表中记录所述各个待读取文件在所述聚合缓存空间中的存储位置和存储空间;
根据所述文件索引表中记录的所述各个待读取文件在所述聚合缓存空间中的存储位置和存储空间,将所述各个待读取文件拷贝至所述读取缓存空间。
可选的,所述接收至少两个文件读请求,包括:
预先设置所述聚合读取周期;
从接收到第一文件读请求时开始计时;
接收到所述文件读请求后,判断所述文件读请求的接收时间与第一文件读请求的接收时间之间的时间间隔是否超过所述聚合读取周期;
若超过,则执行所述接收至少两个文件读请求步骤之后的步骤;
若不超过,则继续接收所述文件读请求。
可选的,按照所述各个待读取文件的存储位置的先后顺序以及所述各个待读取文件的文件大小,分配聚合缓存空间,包括:
根据所述各个待读取文件的存储位置,确定起始磁盘块和终止磁盘块;所述起始磁盘块为在所述各个待读取文件的存储位置中排序最靠前的磁盘块,所述终止磁盘块为在所述各个待读取文件的存储位置中排序最靠后的磁盘块;
确定所述起始磁盘块与所述终止磁盘块之间所述各个待读取文件存储的磁盘块,统计所述磁盘块的磁盘块数目,所述磁盘块包括所述起始磁盘块和终止磁盘块;
判断所述磁盘块数目是否超过聚合缓存空间阈值;
若超过,则分配所述聚合缓存空间阈值大小的聚合缓存空间;
若不超过,则根据所述磁盘块数目,分配所述聚合缓存空间。
可选的,若所述磁盘块数目超过所述聚合缓存空间阈值,则所述将所述各个待读取文件存储于所述聚合缓存空间,包括:
将所述存储位置靠前的与所述聚合缓存空间阈值对应的磁盘块中存储的所述待读取文件,存储于所述聚合缓存空间;
待所述聚合缓存空间中存储的待读取文件被拷贝至读取缓存空间后,按照所述存储位置的先后顺序,依次获取与所述聚合缓存空间阈值对应的磁盘块中存储的所述待读取文件,存储于所述聚合缓存空间。
第二方面,本申请实施例提供了一种文件写入方法,所述方法包括:
建立文件系统对应的文件索引表,所述文件索引表包括若干项文件索引条目,所述文件索引条目记录有文件标识、文件在磁盘中的存储位置和文件大小之间的对应关系;
接收文件写请求,所述文件写请求中包括待写入文件对应的文件标识和文件大小;
根据所述文件写请求,为所述待写入文件分配存储空间;
根据所述文件写请求和所述文件索引表,判断所述待写入文件是否为新创建的文件;
若是,则在所述文件索引表中创建所述待写入文件对应的文件索引条目,将所述待写入文件对应的文件索引条目插入所述文件索引表;
若否,则在所述文件索引表中查找所述待写入文件对应的文件索引条目,更新所述文件索引条目。
可选的,所述文件索引条目还用于记录文件元数据的存储位置,所述文件元数据为所述文件的属性数据;
所述文件标识包括文件名称和文件唯一标识符。
第三方面,本申请实施例提供了一种文件读取装置,所述装置包括:
接收模块,用于接收至少两个文件读请求,所述文件读请求中包括待读取文件对应的文件标识;
确定模块,用于根据所述待读取文件对应的文件标识以及文件索引表,确定所述各个待读取文件在磁盘中的存储位置和文件大小;所述文件索引表中记录存储于磁盘中的文件的存储位置和文件大小;
读取缓存空间分配模块,用于根据所述各个待读取文件的文件大小,为所述各个待读取文件分配对应的读取缓存空间;
聚合缓存空间分配模块,用于按照所述各个待读取文件的存储位置的先后顺序以及所述各个待读取文件的文件大小,分配聚合缓存空间;
存储模块,用于将所述各个待读取文件存储于所述聚合缓存空间;在所述文件索引表中记录所述各个待读取文件在所述聚合缓存空间中的存储位置和存储空间;
拷贝模块,用于根据所述文件索引表中记录的所述各个待读取文件在所述聚合缓存空间中的存储位置和存储空间,将所述各个待读取文件拷贝至所述读取缓存空间。
可选的,所述接收模块具体用于:
预先设置所述聚合读取周期;
从接收到第一文件读请求时开始计时;
接收到所述文件读请求后,判断所述文件读请求的接收时间与第一文件读请求的接收时间之间的时间间隔是否超过所述聚合读取周期;
若超过,则触发所述确定模块执行相关步骤;
若不超过,则继续接收所述文件读请求。
可选的,所述聚合缓存空间分配模块具体用于:
根据所述各个待读取文件的存储位置,确定起始磁盘块和终止磁盘块;所述起始磁盘块为在所述各个待读取文件的存储位置中排序最靠前的磁盘块,所述终止磁盘块为在所述各个待读取文件的存储位置中排序最靠后的磁盘块;
确定所述起始磁盘块与所述终止磁盘块之间所述各个待读取文件存储的磁盘块,统计所述磁盘块的磁盘块数目,所述磁盘块包括所述起始磁盘块和终止磁盘块;
判断所述磁盘块数目是否超过聚合缓存空间阈值;
若超过,则分配所述聚合缓存空间阈值大小的聚合缓存空间;
若不超过,则根据所述磁盘块数目,分配所述聚合缓存空间。
第四方面,本申请实施例提供了一种文件写入装置,所述装置包括:
建立模块,用于建立文件系统对应的文件索引表,所述文件索引表包括若干项文件索引条目,所述文件索引条目记录有文件标识、文件在磁盘中的存储位置和文件大小之间的对应关系;
接收模块,用于接收文件写请求,所述文件写请求中包括待写入文件对应的文件标识和文件大小;
分配模块,用于根据所述文件写请求,为所述待写入文件分配存储空间;
判断模块,用于根据所述文件写请求和所述文件索引表,判断所述待写入文件是否为新创建的文件;
执行模块,用于若是,则在所述文件索引表中创建所述待写入文件对应的文件索引条目,将所述待写入文件对应的文件索引条目插入所述文件索引表;若否,则在所述文件索引表中查找所述待写入文件对应的文件索引条目,更新所述文件索引条目。
由上述技术方案可以看出,本申请实施例提供的文件读取方法,接收至少两个包括有待读取文件对应的文件标识的文件读请求;然后根据各个文件读请求中的文件标识以及文件索引表,确定各个待读取文件在磁盘中的存储位置以及文件大小,该文件索引表中记录有存储于磁盘中的文件的存储位置和文件大小;接下来,根据各个待读取文件的文件大小,为各个待读取文件分配对应的读取缓存空间,并按照各个待读取文件的存储位置的先后顺序和文件大小,分配聚合缓存空间;进而,将各个待读取文件存储于聚合缓存空间,并在文件索引表中记录各个待读取文件在聚合缓存空间中的存储位置和存储空间;最后,根据文件索引表中记录的各个待读取文件在聚合缓存空间中的存储位置和存储空间,将各个待读取文件拷贝至读取缓存空间中,由此完成待读取文件的聚合读取操作。
在本申请实施例提供的文件读取方法中,按照待读取文件在磁盘中的存储位置,将多个待读取文件的读操作聚合为针对磁盘的一次读操作,一方面一次性聚合读取多个待读取文件减少了文件读取需要耗费的时间,另一方面按照待读取文件在磁盘中的存储位置将各个待读取文件存储于聚合缓存空间,避免了多次读取各个待读取文件过程中可能出现的磁盘抖动,减少了文件读取过程中的磁盘寻道时间和旋转等待时间,提高文件读取效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的文件读取方法的流程示意图;
图2为本申请实施例提供的文件写入方法的流程示意图;
图3为本申请实施例提供的文件索引表的示意图;
图4为本申请实施例提供的文件读取装置的结构示意图;
图5为本申请实施例提供的文件写入装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
现有技术中,逐一读取磁盘上存储的文件存在容易出现磁盘抖动,文件读取效率低等技术问题,特别是对于小文件来说,每读取完一个小文件后,可能需要经历磁盘寻道时间和旋转等待时间,才能读取到下一个小文件,整个文件读取过程将耗费大量的时间,效率极低。
为了解决上述现有技术中存在的技术问题,本申请提供了本申请提供了一种文件读取方法,通过聚合读取多个文件,减少文件读取过程中需要耗费的时间,提高文件读取效率。
下面先对本申请实施例提供的文件读取方法的核心技术思路进行介绍:
本申请实施例提供的文件读取方法中,接收至少两个包括有待读取文件对应的文件标识的文件读请求;然后根据各个文件读请求中的文件标识以及文件索引表,确定各个待读取文件在磁盘中的存储位置以及文件大小,该文件索引表中记录有存储于磁盘中的文件的存储位置和文件大小;接下来,根据各个待读取文件的文件大小,为各个待读取文件分配对应的读取缓存空间,并按照各个待读取文件的存储位置的先后顺序和文件大小,分配聚合缓存空间;进而,将各个待读取文件存储于聚合缓存空间,并在文件索引表中记录各个待读取文件在聚合缓存空间中的存储位置和存储空间;最后,根据文件索引表中记录的各个待读取文件在聚合缓存空间中的存储位置和存储空间,将各个待读取文件拷贝至读取缓存空间中,由此完成待读取文件的聚合读取操作。
在本申请实施例提供的文件读取方法中,按照待读取文件在磁盘中的存储位置,将多个待读取文件的读操作聚合为针对磁盘的一次读操作,一方面一次性聚合读取多个待读取文件减少了文件读取需要耗费的时间,另一方面按照待读取文件在磁盘中的存储位置将各个待读取文件存储于聚合缓存空间,避免了多次读取各个待读取文件过程中可能出现的磁盘抖动,减少了文件读取过程中的磁盘寻道时间和旋转等待时间,提高文件读取效率。
下面以实施例的方式对本申请提供的文件读取方法进行介绍:
参见图1,图1为本申请实施例提供的文件读取方法的流程示意图。应理解,本申请实施例提供的文件读取方法通常应用于文件系统,因此,本实施例以文件系统作为执行主体,对本申请实施例提供的文件读取方法进行介绍。如图1所示,该方法包括以下步骤:
步骤101:接收至少两个文件读请求,所述文件读请求中包括待读取文件对应的文件标识。
文件系统接收至少两个文件读请求,文件系统接收到文件读请求后,不立即执行读操作,而是将一段时间内接收到的多个文件读请求聚合为一次读操作。通常情况下,文件读请求中包括有待读取文件对应的文件标识,该文件标识能够唯一标识待读取文件,由此文件系统可以根据该文件标识在磁盘中查找到待读取文件。
可选的,文件系统可以预先设置聚合读取周期;从接收到第一文件读请求时开始计时;后续接收到文件读请求后,判断文件读请求的接收时间与第一文件读请求的接收时间之间的时间间隔是否超过该聚合读取周期,若超过,则开始执行步骤102;反之,若未超过,则继续接收文件读请求,直至文件读请求的接收时间与第一文件读请求的接收时间之间的时间间隔超过预设聚合读取周期。
具体实现时,文件系统可以根据实际运行需求自定义聚合读取周期waittime,在该waittime内接收到的文件读请求不立即下发执行,而是继续等待其他文件读请求;超过该waittime后,将在该waittime内接收到的文件读请求下发执行,并将超过该waittime后接收到的第一个文件读请求作为新的第一文件读请求重新计时。具体的,文件系统将在前一个waittime过后接收到的第一个文件读请求作为第一文件读请求后,从该第一文件读请求的接收时间开始计时,之后接收到每个文件读请求时,先判断该文件读请求的接收时间与上述第一文件读请求的接收时间之间的时间间隔是否超出waittime,若未超出,则继续接收文件读请求,若超出,则开始执行步骤202,并将该文件读请求作为新的第一文件读请求重新计时,如此循环往复。
应理解,文件系统可以根据实际需求自行定义上述聚合读取周期waittime,在此不对聚合读取周期的具体值做任何限定。
步骤102:根据所述待读取文件对应的文件标识以及文件索引表,确定所述各个待读取文件在磁盘中的存储位置和文件大小;所述文件索引表中记录存储于磁盘中的文件的存储位置和文件大小。
由于所接收的文件读请求中包含待读取文件对应的文件标识,相应地,文件系统可以根据各个文件读请求中的文件标识以及文件索引表,确定各个待读取的文件在磁盘中的存储位置,以及各个待读取文件的文件大小。
需要说明的是,文件索引表中记录有存储于磁盘中的文件的存储位置和文件大小。该文件索引表在文件写入文件系统时,文件系统即相应地记录写入至磁盘的各个文件的文件标识、存储位置以及文件大小的对应关系,此处的文件标识可以包括文件名称和/或文件的唯一标识符inode;可选的,文件系统还可以在文件索引表中记录文件元数据位置,该文件元数据指的是文件对应的属性数据。
步骤103:根据所述各个待读取文件的文件大小,为所述各个待读取文件分配对应的读取缓存空间。
文件系统根据文件索引表中记录的各个待读取文件的文件大小,相应地,为各个待读取文件分配各自对应的读取缓存空间。将待读取文件读取至其对应的读取缓存空间即可认为完成该待读取文件的读取工作。
步骤104:按照所述各个待读取文件的存储位置的先后顺序以及所述各个待读取文件的文件大小,分配聚合缓存空间。
文件系统根据文件索引表中记录的各个待读取文件的存储位置,确定各个待读取文件在磁盘中的存储位置,并对各个待读取文件在磁盘中的存储位置按照先后顺序进行排序;进而,根据各个待读取文件在磁盘中的存储位置的先后顺序以及各个待读取文件的文件大小,相应地分配聚合缓存空间。
需要说明的是,存储于聚合缓存空间中待读取文件即为一次聚合读操作需要读取的文件,其中待读取文件按照其在磁盘中存储位置的先后顺序排序。
具体实现时,文件系统可以根据文件索引表中记录的各个待读取文件的存储位置,确定起始磁盘块和终止磁盘块,该起始磁盘块为各个待读取文件的存储位置中排序最靠前的磁盘块,该终止磁盘块为各个待读取文件的存储位置中排序最靠后的磁盘块。然后,文件系统确定该起始磁盘块和终止磁盘块之间各个待读取文件所存储的磁盘块,统计磁盘块的磁盘块数目,所统计的磁盘块中仍包括起始磁盘块和终止磁盘块。进而判断统计得到的磁盘块数目是否超过聚合缓存空间阈值,若超过,则分配聚合缓存空间阈值大小的聚合缓存空间,若未超过,则根据统计得到的磁盘块数目,分配聚合缓存空间,即分配与磁盘块数目对应的聚合缓存空间。
为了便于理解,下面对上述分配聚合缓存空间的方法进行举例说明;
假设待读取文件为文件A、文件B、文件C和文件D,其中,文件A存储于1号磁盘块,文件B存储于9号磁盘块,文件C存储于6号磁盘块,文件D存储于4号磁盘块。文件系统根据文件A、文件B、文件C和文件D的存储位置,确定起始磁盘块为1号磁盘块,终止磁盘块为9号磁盘块,在起始磁盘块和终止磁盘块之间,待读取文件还存储于4号磁盘块和6号磁盘块,即待读取文件所存储的磁盘块数目为4个。假设聚合缓存空间阈值为2个磁盘块,上述待读取文件所存储的磁盘块数目超过该聚合缓存空间阈值,则相应地分配2个磁盘块大小的聚合缓存空间。假设聚合缓存空间阈值为5个磁盘块,上述待读取文件所存储的磁盘块数目未超过聚合缓存空间阈值,则根据待读取文件所存储的磁盘块数目,相应地分配4个磁盘块作为聚合缓存空间。
应理解,上述聚合缓存空间阈值可以根据实际情况进行设定,在此不对聚合缓存空间阈值的具体大小做任何限定。
步骤105:将所述各个待读取文件存储于所述聚合缓存空间;在所述文件索引表中记录所述各个待读取文件在所述聚合缓存空间中的存储位置和存储空间。
分配出聚合缓存空间后,将各个待读取文件从磁盘中提取出来存储于聚合缓存空间中,以便后续读取该从该聚合缓存空间中存储的多个文件,以完成一次聚合读取操作。
与此同时,文件系统还会在文件索引表中记录各个待读取文件在聚合缓存空间中的存储位置以及存储空间,以便后续聚合读取操作的完成。
具体实现时,文件系统需要根据待读取文件在磁盘中存储位置的先后顺序,将各个待读取文件存储于聚合缓存空间。
若用于存储待读取文件的磁盘数目超过上述在步骤104中设置的聚合缓存空间阈值,则将在磁盘中存储位置靠前的与聚合缓存空间阈值对应的磁盘块中存储的待读取文件,存储于聚合缓存空间中;待该聚合缓存空间中存储的待读取文件被读取出来后,继续按照待读取文件在磁盘中的存储位置的先后顺序,将待读取文件存储于上述聚合缓存空间中,以完成下一次聚合读取操作,以此类推,直至完成所有文件读请求对应的待读取文件的读取操作。
为了便于理解,下面以步骤104中超过聚合缓存空间阈值的例子为例,对该步骤进行举例说明:
假设待读取文件为文件A、文件B、文件C和文件D,其中,文件A存储于1号磁盘块,文件B存储于9号磁盘块,文件C存储于6号磁盘块,文件D存储于4号磁盘块,聚合缓存空间阈值为2个磁盘块。存储位置靠前的2个磁盘块为1号磁盘块和4号磁盘块,1号磁盘块和4号磁盘块分别对应于文件A和文件D,相应地,将文件A和文件D先存储于聚合缓存空间;待完成文件A和文件D的读取工作后,文件系统按照存储位置的先后顺序,继续将6号磁盘块存储的文件C和9号磁盘块存储的文件B存储于聚合缓存空间,以实现下一次聚合读取操作。
步骤106:根据所述文件索引表中记录的所述各个待读取文件在所述聚合缓存空间中的存储位置和存储空间,将所述各个待读取文件拷贝至所述读取缓存空间。
文件系统将待读取文件存储于聚合缓存空间后,根据文件索引表中记录的待读取文件在聚合缓存空间中的存储位置和存储空间,将待读取文件拷贝至在步骤103中为各个待读取文件分配的读取缓存空间中,由此完成一次聚合读取操作。
应理解,若待读取文件在磁盘中存储的磁盘块数目超出聚合缓存空间阈值,则文件系统在完成一次聚合读取操作后,还需要继续执行步骤105和106,以完成后续的聚合读取操作,从而实现完成读取所有文件读请求对应的待读取文件。
本申请实施例提供的文件读取方法中,按照待读取文件在磁盘中的存储位置,将多个待读取文件的读操作聚合为针对磁盘的一次读操作,一方面一次性聚合读取多个待读取文件减少了文件读取需要耗费的时间,另一方面按照待读取文件在磁盘中的存储位置将各个待读取文件存储于聚合缓存空间,避免了多次读取各个待读取文件过程中可能出现的磁盘抖动,减少了文件读取过程中的磁盘寻道时间和旋转等待时间,提高文件读取效率。
针对上述本申请实施例提供的文件读取方法,本申请实施例还提供了一种与之对应的文件写入方法。应理解,本申请实施例提供的文件写入方法通常应用于文件系统,因此,本实施例以文件系统作为执行主体,对本申请实施例提供的文件写入方法进行介绍。如图2所示,该方法包括以下步骤:
步骤201:建立文件系统对应的文件索引表,所述文件索引表包括若干项文件索引条目,所述文件索引条目记录有文件标识、文件在磁盘中的存储位置和文件大小之间的对应关系。
文件系统先建立自身对应的文件索引表,该文件索引表中包括有若干项文件索引条目,每个文件索引条目对应于一个存储于磁盘中的文件。每个文件索引条目中通常记录有与其对应的文件的文件标识、该文件在磁盘中的存储位置以及该文件的文件大小。此处的文件标识可以包括文件名称和文件唯一标识符inode。
可选的,文件索引表中的每个文件索引条目中还可以记录每个文件对应的文件元数据的存储位置,该文件元数据为每个文件对应的相关属性数据。
具体的,文件索引表的形式可以参见图3,图3即为一种示例性的文件索引表的表现形式,其中文件的绝对路径名即为上述文件索引条目中记录的数据。
步骤202:接收文件写请求,所述文件写请求中包括待写入文件对应的文件标识和文件大小。
步骤203:根据所述文件写请求,为所述待写入文件分配存储空间。
文件系统接收文件写请求,该文件写请求中通常包括有待写入文件对应的文件标识以及文件大小。进而,文件系统根据该文件写请中的文件大小,为待写入的文件在磁盘中分配对应的存储空间。
步骤204:根据所述文件写请求和所述文件索引表,判断所述待写入文件是否为新创建的文件。
进而,根据文件写请求中的文件标识以及文件索引表中记录的文件标识,判断该待写入文件是否为新创建的文件。
步骤205:若是,则在所述文件索引表中创建所述待写入文件对应的文件索引条目,将所述待写入文件对应的文件索引条目插入所述文件索引表。
如果待写入文件为新创建的文件,则创建该待写入文件对应的文件索引条目,该文件索引条目中包括该待写入文件对应的文件标识、文件在磁盘中的存储位置和文件大小,进而,将该待写入文件对应的文件索引条目插入文件索引表中。
步骤206:若否,则在所述文件索引表中查找所述待写入文件对应的文件索引条目,更新所述文件索引条目。
反之,如果待写入文件并非新创建的文件,则根据该文件写请求中的文件标识在文件索引表中查找该待写入文件对应的文件索引条目,进而根据文件写请求更新该待写入文件对应的文件索引条目。
通过上述文件写入方法,在将待写入文件写入磁盘的过程中更新文件索引表,以便后续读取磁盘中存储的文件时,可以根据该文件索引表中各条文件索引条目记录的内容,完成图1所示的聚合读取操作。
此外,本申请还提供了一种文件读取装置,参见图4,图4为文件读取装置400的结构示意图,该文件读取装置400包括:
接收模块401,用于接收至少两个文件读请求,所述文件读请求中包括待读取文件对应的文件标识;
确定模块402,用于根据所述待读取文件对应的文件标识以及文件索引表,确定所述各个待读取文件在磁盘中的存储位置和文件大小;所述文件索引表中记录存储于磁盘中的文件的存储位置和文件大小;
读取缓存空间分配模块403,用于根据所述各个待读取文件的文件大小,为所述各个待读取文件分配对应的读取缓存空间;
聚合缓存空间分配模块404,用于按照所述各个待读取文件的存储位置的先后顺序以及所述各个待读取文件的文件大小,分配聚合缓存空间;
存储模块405,用于将所述各个待读取文件存储于所述聚合缓存空间;在所述文件索引表中记录所述各个待读取文件在所述聚合缓存空间中的存储位置和存储空间;
拷贝模块406,用于根据所述文件索引表中记录的所述各个待读取文件在所述聚合缓存空间中的存储位置和存储空间,将所述各个待读取文件拷贝至所述读取缓存空间。
可选的,所述接收模块401具体用于:
预先设置所述聚合读取周期;
从接收到第一文件读请求时开始计时;
接收到所述文件读请求后,判断所述文件读请求的接收时间与第一文件读请求的接收时间之间的时间间隔是否超过所述聚合读取周期;
若超过,则触发所述确定模块执行相关步骤;
若不超过,则继续接收所述文件读请求。
可选的,所述聚合缓存空间分配模块404具体用于:
根据所述各个待读取文件的存储位置,确定起始磁盘块和终止磁盘块;所述起始磁盘块为在所述各个待读取文件的存储位置中排序最靠前的磁盘块,所述终止磁盘块为在所述各个待读取文件的存储位置中排序最靠后的磁盘块;
确定所述起始磁盘块与所述终止磁盘块之间所述各个待读取文件存储的磁盘块,统计所述磁盘块的磁盘块数目,所述磁盘块包括所述起始磁盘块和终止磁盘块;
判断所述磁盘块数目是否超过聚合缓存空间阈值;
若超过,则分配所述聚合缓存空间阈值大小的聚合缓存空间;
若不超过,则根据所述磁盘块数目,分配所述聚合缓存空间。
可选的,若所述磁盘块数目超过所述聚合缓存空间阈值,则存储模块405具体用于:
将所述存储位置靠前的与所述聚合缓存空间阈值对应的磁盘块中存储的所述待读取文件,存储于所述聚合缓存空间;
待所述聚合缓存空间中存储的待读取文件被拷贝至读取缓存空间后,按照所述存储位置的先后顺序,依次获取与所述聚合缓存空间阈值对应的磁盘块中存储的所述待读取文件,存储于所述聚合缓存空间。
本申请实施例提供的文件读取装置中,按照待读取文件在磁盘中的存储位置,将多个待读取文件的读操作聚合为针对磁盘的一次读操作,一方面一次性聚合读取多个待读取文件减少了文件读取需要耗费的时间,另一方面按照待读取文件在磁盘中的存储位置将各个待读取文件存储于聚合缓存空间,避免了多次读取各个待读取文件过程中可能出现的磁盘抖动,减少了文件读取过程中的磁盘寻道时间和旋转等待时间,提高文件读取效率。
此外,本申请还提供了一种文件写入装置,参见图5,图5为文件写入装置500的结构示意图,该文件写入装置500包括:
建立模块501,用于建立文件系统对应的文件索引表,所述文件索引表包括若干项文件索引条目,所述文件索引条目记录有文件标识、文件在磁盘中的存储位置和文件大小之间的对应关系;
接收模块502,用于接收文件写请求,所述文件写请求中包括待写入文件对应的文件标识和文件大小;
分配模块503,用于根据所述文件写请求,为所述待写入文件分配存储空间;
判断模块504,用于根据所述文件写请求和所述文件索引表,判断所述待写入文件是否为新创建的文件;
执行模块505,用于若是,则在所述文件索引表中创建所述待写入文件对应的文件索引条目,将所述待写入文件对应的文件索引条目插入所述文件索引表;若否,则在所述文件索引表中查找所述待写入文件对应的文件索引条目,更新所述文件索引条目。
通过上述文件写入装置,在将待写入文件写入磁盘的过程中更新文件索引表,以便后续读取磁盘中存储的文件时,可以根据该文件索引表中各条文件索引条目记录的内容,完成聚合读取操作。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备及系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的设备及系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述,仅为本申请的一种具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。
Claims (5)
1.一种文件读取方法,其特征在于,所述方法包括:
接收至少两个文件读请求,所述文件读请求中包括待读取文件对应的文件标识;
根据所述待读取文件对应的文件标识以及文件索引表,确定各个待读取文件在磁盘中的存储位置和文件大小;所述文件索引表中记录存储于磁盘中的文件的存储位置和文件大小;
根据所述各个待读取文件的文件大小,为所述各个待读取文件分配对应的读取缓存空间;
按照所述各个待读取文件的存储位置的先后顺序,分配聚合缓存空间;所述按照所述各个待读取文件的存储位置的先后顺序,分配聚合缓存空间,包括:
根据所述各个待读取文件的存储位置,确定起始磁盘块和终止磁盘块;所述起始磁盘块为在所述各个待读取文件的存储位置中排序最靠前的磁盘块,所述终止磁盘块为在所述各个待读取文件的存储位置中排序最靠后的磁盘块;
确定所述起始磁盘块与所述终止磁盘块之间所述各个待读取文件存储的磁盘块,统计磁盘块数目,统计的磁盘块数目包括所述起始磁盘块和终止磁盘块以及起始磁盘块与终止磁盘块之间的磁盘块;
判断所述磁盘块数目是否超过聚合缓存空间阈值;
若超过,则分配所述聚合缓存空间阈值大小的聚合缓存空间;
若不超过,则根据所述磁盘块数目,分配所述聚合缓存空间;
将所述各个待读取文件存储于所述聚合缓存空间;在所述文件索引表中记录所述各个待读取文件在所述聚合缓存空间中的存储位置;
根据所述文件索引表中记录的所述各个待读取文件在所述聚合缓存空间中的存储位置,将所述各个待读取文件拷贝至所述读取缓存空间。
2.根据权利要求1所述的方法,其特征在于,所述接收至少两个文件读请求,包括:
预先设置聚合读取周期;
从接收到第一文件读请求时开始计时;
接收到所述文件读请求后,判断所述文件读请求的接收时间与第一文件读请求的接收时间之间的时间间隔是否超过所述聚合读取周期;
若超过,则执行所述接收至少两个文件读请求步骤之后的步骤;
若不超过,则继续接收所述文件读请求。
3.根据权利要求1所述的方法,其特征在于,若所述磁盘块数目超过所述聚合缓存空间阈值,则所述将所述各个待读取文件存储于所述聚合缓存空间,包括:
将所述存储位置靠前的与所述聚合缓存空间阈值对应的磁盘块中存储的所述待读取文件,存储于所述聚合缓存空间;
待所述聚合缓存空间中存储的待读取文件被拷贝至读取缓存空间后,按照所述存储位置的先后顺序,依次获取与所述聚合缓存空间阈值对应的磁盘块中存储的所述待读取文件,存储于所述聚合缓存空间。
4.一种文件读取装置,其特征在于,所述装置包括:
接收模块,用于接收至少两个文件读请求,所述文件读请求中包括待读取文件对应的文件标识;
确定模块,用于根据所述待读取文件对应的文件标识以及文件索引表,确定各个待读取文件在磁盘中的存储位置和文件大小;所述文件索引表中记录存储于磁盘中的文件的存储位置和文件大小;
读取缓存空间分配模块,用于根据所述各个待读取文件的文件大小,为所述各个待读取文件分配对应的读取缓存空间;
聚合缓存空间分配模块,用于按照所述各个待读取文件的存储位置的先后顺序,分配聚合缓存空间;所述聚合缓存空间分配模块具体用于:
根据所述各个待读取文件的存储位置,确定起始磁盘块和终止磁盘块;所述起始磁盘块为在所述各个待读取文件的存储位置中排序最靠前的磁盘块,所述终止磁盘块为在所述各个待读取文件的存储位置中排序最靠后的磁盘块;
确定所述起始磁盘块与所述终止磁盘块之间所述各个待读取文件存储的磁盘块,统计磁盘块数目,统计的磁盘块数目包括所述起始磁盘块和终止磁盘块以及起始磁盘块与终止磁盘块之间的磁盘块;
判断所述磁盘块数目是否超过聚合缓存空间阈值;
若超过,则分配所述聚合缓存空间阈值大小的聚合缓存空间;
若不超过,则根据所述磁盘块数目,分配所述聚合缓存空间;
存储模块,用于将所述各个待读取文件存储于所述聚合缓存空间;在所述文件索引表中记录所述各个待读取文件在所述聚合缓存空间中的存储位置;
拷贝模块,用于根据所述文件索引表中记录的所述各个待读取文件在所述聚合缓存空间中的存储位置,将所述各个待读取文件拷贝至所述读取缓存空间。
5.根据权利要求4所述的装置,其特征在于,所述接收模块具体用于:
预先设置聚合读取周期;
从接收到第一文件读请求时开始计时;
接收到所述文件读请求后,判断所述文件读请求的接收时间与第一文件读请求的接收时间之间的时间间隔是否超过所述聚合读取周期;
若超过,则触发所述确定模块执行相关步骤;
若不超过,则继续接收所述文件读请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810955560.0A CN109240607B (zh) | 2018-08-21 | 2018-08-21 | 一种文件读取方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810955560.0A CN109240607B (zh) | 2018-08-21 | 2018-08-21 | 一种文件读取方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109240607A CN109240607A (zh) | 2019-01-18 |
CN109240607B true CN109240607B (zh) | 2022-02-18 |
Family
ID=65070087
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810955560.0A Active CN109240607B (zh) | 2018-08-21 | 2018-08-21 | 一种文件读取方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109240607B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109977092B (zh) * | 2019-03-26 | 2021-06-08 | 武汉深之度科技有限公司 | 一种复制文件的方法和计算设备 |
CN110347656B (zh) * | 2019-06-27 | 2021-11-26 | 苏州浪潮智能科技有限公司 | 文件存储系统中请求的管理方法和装置 |
CN110750505A (zh) * | 2019-08-31 | 2020-02-04 | 苏州浪潮智能科技有限公司 | 一种大文件读取优化方法、装置、设备及存储介质 |
US11437062B1 (en) * | 2021-08-23 | 2022-09-06 | International Business Machines Corporation | Reducing time to reposition tape to write index |
CN114116634B (zh) * | 2022-01-26 | 2022-04-22 | 苏州浪潮智能科技有限公司 | 一种缓存方法、装置及可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102222099A (zh) * | 2011-06-21 | 2011-10-19 | 中兴通讯股份有限公司 | 一种数据存储、查找方法及装置 |
CN105069048A (zh) * | 2015-07-23 | 2015-11-18 | 东方网力科技股份有限公司 | 一种小文件存储方法、查询方法和装置 |
CN105550180A (zh) * | 2014-10-29 | 2016-05-04 | 北京奇虎科技有限公司 | 数据处理的方法、装置及系统 |
CN107562915A (zh) * | 2017-09-12 | 2018-01-09 | 郑州云海信息技术有限公司 | 读取小文件的方法、装置和设备及计算机可读存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8239345B2 (en) * | 2007-12-27 | 2012-08-07 | Microsoft Corporation | Asynchronous replication |
-
2018
- 2018-08-21 CN CN201810955560.0A patent/CN109240607B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102222099A (zh) * | 2011-06-21 | 2011-10-19 | 中兴通讯股份有限公司 | 一种数据存储、查找方法及装置 |
CN105550180A (zh) * | 2014-10-29 | 2016-05-04 | 北京奇虎科技有限公司 | 数据处理的方法、装置及系统 |
CN105069048A (zh) * | 2015-07-23 | 2015-11-18 | 东方网力科技股份有限公司 | 一种小文件存储方法、查询方法和装置 |
CN107562915A (zh) * | 2017-09-12 | 2018-01-09 | 郑州云海信息技术有限公司 | 读取小文件的方法、装置和设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109240607A (zh) | 2019-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109240607B (zh) | 一种文件读取方法和装置 | |
CN110149803B (zh) | 数据存储方法、系统及终端设备 | |
US11853549B2 (en) | Index storage in shingled magnetic recording (SMR) storage system with non-shingled region | |
KR101994021B1 (ko) | 파일 조작 방법 및 장치 | |
CN108319654B (zh) | 计算系统、冷热数据分离方法及装置、计算机可读存储介质 | |
WO2017185579A1 (zh) | 一种数据存储方法及装置 | |
CN106874348B (zh) | 文件存储和索引方法、装置及读取文件的方法 | |
CN110764706B (zh) | 存储系统、数据管理方法及存储介质 | |
CN101763437B (zh) | 高速缓冲存储实现方法及装置 | |
EP2863310A1 (en) | Data processing method and apparatus, and shared storage device | |
CN103020174A (zh) | 相似性分析方法、装置及系统 | |
WO2013078583A1 (zh) | 优化数据访问的方法及装置、优化数据存储的方法及装置 | |
CN109033360B (zh) | 一种数据查询方法、装置、服务器及存储介质 | |
CN106970958B (zh) | 一种流文件的查询与存储方法和装置 | |
CN106708912B (zh) | 垃圾文件识别及管理方法、识别装置、管理装置和终端 | |
CN109558456A (zh) | 一种文件迁移方法、装置、设备及可读存储介质 | |
CN101963977A (zh) | 无城市搜索方法及移动终端 | |
CN110851474A (zh) | 数据查询方法、数据库中间件、数据查询设备及存储介质 | |
CN110750211A (zh) | 一种存储空间的管理方法及装置 | |
CN103049574A (zh) | 实现文件动态副本的键值文件系统及方法 | |
CN111159130A (zh) | 一种小文件合并方法及电子设备 | |
CN115114232A (zh) | 一种历史版本对象列举方法、装置及其介质 | |
CN115878027A (zh) | 一种存储对象的处理方法、装置、终端及存储介质 | |
CN108132759B (zh) | 一种文件系统中管理数据的方法和装置 | |
CN111831691A (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 |