CN106537321B - 存取文件的方法、装置和存储*** - Google Patents
存取文件的方法、装置和存储*** Download PDFInfo
- Publication number
- CN106537321B CN106537321B CN201580014438.8A CN201580014438A CN106537321B CN 106537321 B CN106537321 B CN 106537321B CN 201580014438 A CN201580014438 A CN 201580014438A CN 106537321 B CN106537321 B CN 106537321B
- Authority
- CN
- China
- Prior art keywords
- file
- request messages
- information
- files
- call request
- 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 61
- 238000012545 processing Methods 0.000 claims abstract description 37
- 238000012546 transfer Methods 0.000 description 12
- 238000012217 deletion Methods 0.000 description 10
- 230000037430 deletion Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 6
- 239000012634 fragment Substances 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 239000002699 waste material Substances 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000001824 photoionisation detection Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- 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
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1724—Details of de-fragmentation performed by the file system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- 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
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例涉及存取文件的方法、装置和存储***,该方法包括:确定L个第一文件调用请求消息;根据该L个第一文件调用请求消息中的物理扇区信息,将该L个第一文件调用请求消息分别添加到M个第一文件调度队列中;对每个第一文件调度队列包括的第一文件调用请求消息进行处理,获得每个第一文件调度队列的调用请求消息并用来存取第一文件。本发明实施例的存取文件的方法、装置和存储***,通过为小文件的调用请求消息分配对应的调度队列,从而可以将多个小文件的调用请求消息进行合并处理,减少小文件的调用次数,可以避免小文件的调用请求而增加的I/O次数并导致的占用过多内存资源,并增加I/O请求的吞吐量,进而整体提升文件***的I/O效率。
Description
技术领域
本发明涉及信息技术领域,尤其涉及存取文件的方法、装置和存储***。
背景技术
文件***通常为每一个文件分配一个inode(information node,信息节点),为每个文件对应的实际数据分配数据块data block,并将data block的号码记录到inode中。文件***中所支持的data block大小有1K,2K,4K等。在格式化时data block的大小就固定了,且每个data block都有编号,以方便inode的记录。
由于现有技术中每个data block仅能容纳一个文件的数据,而文件***中往往存在大量的小文件,比如几百个字节或者更小。如果为这样的小文件分配单独的data block,便会引起内部碎片,浪费磁盘空间。而且,频繁的小文件读写还会增加输入(Input,I)/输出(Output,O)次数,产生过多的***调用,***调用也会引起上下文切换,占用过多的CPU和内存资源,从而降低文件***的整体I/O效率。
发明内容
本发明提供了一种存取文件的方法、装置和存储***,能够整体提升文件***的I/O效率。
第一方面,提供了一种存取文件的方法,该方法包括:确定L个第一文件调用请求消息,该L个第一文件调用请求消息中的每个第一文件调用请求消息用于请求调用第一文件,该第一文件的大小小于或等于门限值,该每个第一文件调用请求消息包括物理扇区信息,该物理扇区信息包括存储该第一文件的物理扇区的地址,L为大于1的整数;根据该物理扇区信息,将该L个第一文件调用请求消息分别添加到与该L个第一文件调用请求消息对应的M个第一文件调度队列中,M为正整数;对该M个第一文件调度队列中的每个第一文件调度队列包括的K个第一文件调用请求消息进行处理,获得该每个第一文件调度队列的调用请求消息,该每个第一文件调度队列的调用请求消息用于请求调用该K个第一文件调用请求消息对应的第一文件,K为正整数;根据该每个第一文件调度队列的调用请求消息,存取该K个第一文件调用请求消息对应的第一文件。
结合第一方面,在第一方面的一种实现方式中,该方法还包括:在存储文件的物理扇区上,确定N个第一文件存储空间组,该N个第一文件存储空间组用于存储第一文件,N为正整数;当该N个第一文件存储空间组中至少两个第一文件存储空间组存在可用存储空间时,将该至少两个第一文件存储空间组包括的第一文件进行合并;当该N个第一文件存储空间组中至少一个第一文件存储空间组不存储文件时,释放该至少一个第一文件存储空间组;当该N个第一文件的存储空间组都不存在该可用存储空间时,增加该N个第一文件的存储空间组的个数;该根据该每个第一文件调度队列的调用请求消息,存取该K个第一文件调用请求消息对应的第一文件,包括:根据该每个第一文件调度队列的调用请求消息,从该N个第一文件存储空间组中存取该K个第一文件调用请求消息对应的第一文件。
结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,该根据该物理扇区信息,将该L个第一文件调用请求消息分别添加到与该L个第一文件调用请求消息对应的M个第一文件调度队列中,包括:根据该物理扇区信息,将该L个第一文件调用请求消息中的至少两个第一文件调用请求消息添加到同一个第一文件调度队列中,该至少两个第一文件调用请求消息请求调用的第一文件的物理扇区的地址连续。
结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,该每个第一文件调用请求消息还包括存取路径信息,该存取路径信息用于指示存取该每个第一文件调用消息对应的第一文件的物理扇区的路径。
结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,该确定L个第一文件调用请求消息,包括:确定L个第一文件信息节点,该L个第一文件信息节点中的每个第一文件信息节点用于存储该每个第一文件调用请求消息请求调用的第一文件的该存取路径信息;根据该每个第一文件信息节点,确定该每个第一文件调用请求消息请求调用的第一文件的该存取路径信息。
结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,该确定L个第一文件信息节点,包括:在信息节点链表中确定是否存在该L个第一文件信息节点中第i个第一文件信息节点;当该信息节点链表中不存在该第i个第一文件信息节点时,在该信息节点链表中创建该第i个第一文件信息节点,并将第i个第一文件的该存取路径信息存储到该第i个第一文件信息节点中;当该信息节点链表中存在该第i个第一文件信息节点时,根据该第i个第一文件信息节点确定该第i个第一文件的该存取路径信息。
第二方面,提供了一种存取文件的装置,该装置包括:第一确定模块,用于确定L个第一文件调用请求消息,该L个第一文件调用请求消息中的每个第一文件调用请求消息用于请求调用第一文件,该第一文件的大小小于或等于门限值,该每个第一文件调用请求消息包括物理扇区信息,该物理扇区信息包括存储该第一文件的物理扇区的地址,L为大于1的整数;分配模块,用于根据该物理扇区信息,将该第一确定模块确定的该L个第一文件调用请求消息分别添加到与该L个第一文件调用请求消息对应的M个第一文件调度队列中,M为正整数;处理模块,用于对该分配模块分配的该M个第一文件调度队列中的每个第一文件调度队列包括的K个第一文件调用请求消息进行处理,获得该每个第一文件调度队列的调用请求消息,该每个第一文件调度队列的调用请求消息用于请求调用该K个第一文件调用请求消息对应的第一文件,K为正整数;调用模块,用于根据该处理模块获得的该每个第一文件调度队列的调用请求消息,存取该K个第一文件调用请求消息对应的第一文件。
结合第二方面,在第二方面的一种实现方式中,该装置还包括:第二确定模块,用于在存储文件的物理扇区上,确定N个第一文件存储空间组,该N个第一文件存储空间组用于存储该第一文件,当该N个第一文件存储空间组中至少两个第一文件存储空间组存在可用存储空间时,将该至少两个第一文件存储空间组包括的第一文件进行合并,或当该N个第一文件存储空间组中至少一个第一文件存储空间组不存储文件时,释放该至少一个第一文件存储空间组,或当该N个第一文件的存储空间组都不存在该可用存储空间时,增加该N个第一文件的存储空间组的个数;该调用模块还用于:根据该每个第一文件调度队列的调用请求消息,从该N个第一文件存储空间组中存取该K个第一文件调用请求消息对应的第一文件。
结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,该处理模块具体用于:根据该物理扇区信息,将该L个第一文件调用请求消息中的至少两个第一文件调用请求消息添加到同一个第一文件调度队列中,该至少两个第一文件调用请求消息请求调用的第一文件的物理扇区的地址连续。
结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,该每个第一文件调用请求消息还包括存取路径信息,该存取路径信息用于指示存取该每个第一文件调用消息对应的第一文件的物理扇区的路径。
结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,该确定模块具体用于:确定L个第一文件信息节点,该L个第一文件信息节点中的每个第一文件信息节点用于存储该每个第一文件调用请求消息请求调用的第一文件的该存取路径信息;根据该每个第一文件信息节点,确定该每个第一文件调用请求消息请求调用的第一文件的该存取路径信息。
结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,该确定模块具体用于:在信息节点链表中确定是否存在该L个第一文件信息节点中第i个第一文件信息节点;当该信息节点链表中不存在该第i个第一文件信息节点时,在该信息节点链表中创建该第i个第一文件信息节点,并将第i个第一文件的该存取路径信息存储到该第i个第一文件信息节点中;当该信息节点链表中存在该第i个第一文件信息节点时,根据该第i个第一文件信息节点确定该第i个第一文件的该存取路径信息。
第三方面,提供了一种存储***,该存储***包括:存储器,用于存储文件和程序;处理器,用于执行该程序,以实现:确定L个第一文件调用请求消息,该L个第一文件调用请求消息中的每个第一文件调用请求消息用于请求调用第一文件,该第一文件的大小小于或等于门限值,该每个第一文件调用请求消息包括物理扇区信息,该物理扇区信息包括存储该第一文件的物理扇区的地址,L为大于1的整数;根据该物理扇区信息,将该L个第一文件调用请求消息分别添加到与该L个第一文件调用请求消息对应的M个第一文件调度队列中,M为正整数;对该M个第一文件调度队列中的每个第一文件调度队列包括的K个第一文件调用请求消息进行处理,获得该每个第一文件调度队列的调用请求消息,该每个第一文件调度队列的调用请求消息用于请求调用该K个第一文件调用请求消息对应的第一文件,K为正整数;根据该每个第一文件调度队列的调用请求消息,存取该K个第一文件调用请求消息对应的第一文件。
结合第三方面,在第三方面的一种实现方式中,该处理器还用于:该处理器还用于:在存储文件的物理扇区上,确定N个第一文件存储空间组,该N个第一文件存储空间组用于存储该第一文件,当该N个第一文件存储空间组中至少两个第一文件存储空间组存在可用存储空间时,将该至少两个第一文件存储空间组包括的第一文件进行合并,或当该N个第一文件存储空间组中至少一个第一文件存储空间组不存储文件时,释放该至少一个第一文件存储空间组,或当该N个第一文件的存储空间组都不存在该可用存储空间时,增加该N个第一文件的存储空间组的个数;根据该每个第一文件调度队列的调用请求消息,从该N个第一文件存储空间组中存取该K个第一文件调用请求消息对应的第一文件。
结合第三方面及其上述实现方式,在第三方面的另一种实现方式中,该处理器具体用于:根据该物理扇区信息,将该L个第一文件调用请求消息中的至少两个第一文件调用请求消息添加到同一个第一文件调度队列中,该至少两个第一文件调用请求消息请求调用的第一文件的物理扇区的地址连续。
结合第三方面及其上述实现方式,在第三方面的另一种实现方式中,该每个第一文件调用请求消息还包括存取路径信息,该存取路径信息用于指示存取该每个第一文件调用消息对应的第一文件的物理扇区的路径。
结合第三方面及其上述实现方式,在第三方面的另一种实现方式中,该处理器具体用于:确定L个第一文件信息节点,该L个第一文件信息节点中的每个第一文件信息节点用于存储该每个第一文件调用请求消息请求调用的第一文件的该存取路径信息;根据该每个第一文件信息节点,确定该每个第一文件调用请求消息请求调用的第一文件的该存取路径信息。
结合第三方面及其上述实现方式,在第三方面的另一种实现方式中,该处理器具体用于:在信息节点链表中确定是否存在该L个第一文件信息节点中第i个第一文件信息节点;当该信息节点链表中不存在该第i个第一文件信息节点时,在该信息节点链表中创建该第i个第一文件信息节点,并将第i个第一文件的该存取路径信息存储到该第i个第一文件信息节点中;当该信息节点链表中存在该第i个第一文件信息节点时,根据该第i个第一文件信息节点确定该第i个第一文件的该存取路径信息。
基于上述技术方案,本发明实施例的存取文件的方法、装置和存储***,通过确定小文件的调用请求消息,并为这些小文件的调用请求消息分配对应的第一文件调度队列,从而可以将多个小文件的调用请求消息进行合并和/或删除处理,减少小文件的调用次数,可以避免小文件的调用请求而增加的I/O次数并导致的占用过多内存资源,可以减少***调用次数,并增加I/O请求的吞吐量,进而整体提升文件***的I/O效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的存取文件的方法的示意性流程图。
图2是根据本发明实施例的存取文件的方法的另一示意性流程图。
图3是根据本发明实施例的存取文件的装置200的示意性框图。
图4是根据本发明实施例的存取文件的装置200的另一示意性框图。
图5是根据本发明实施例的存储***300的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
经初步统计,linux***由数以万记的文件组成,甚至达到百万级。文件***使用目录结构组织存储数据,并将其原信息和实际数据关联起来。linux支持许多不同的文件***,例如:ext4,F2FS,Brtfs,Vfat等。linux内核通过一个额外的软件层VFS将不同的底层文件***关联起来。
根据I/O访问的流程,我们可以将***分为五大模块:用户层(User Space),文件***层,块设备层,多媒体卡(Multimedia Card,简称“MMC”)驱动层,硬件。
这里的User Space包含所有在用户空间处理I/O请求的应用程序及标准库。
其中,文件***层,块设备层,MMC驱动层运行在内核空间。
硬件是指MMC主机控制器,主要依赖于JEDEC标准和各厂家的硬件实现,不作为本专利讨论的重点。
图1示出了根据本发明实施例的存取文件的方法100的示意性流程图,该方法100可以由文件***内的块设备层执行。如图1所示,该方法100包括:
S110,确定L个第一文件调用请求消息,该L个第一文件调用请求消息中的每个第一文件调用请求消息用于请求调用第一文件,该第一文件的大小小于或等于门限值,该每个第一文件调用请求消息包括物理扇区信息,该物理扇区信息包括存储该第一文件的物理扇区的地址,L为大于1的整数;
S120,根据该物理扇区信息,将该L个第一文件调用请求消息分别添加到与该L个第一文件调用请求消息对应的M个第一文件调度队列中,M为正整数;
S130,对该M个第一文件调度队列中的每个第一文件调度队列包括的K个第一文件调用请求消息进行处理,获得该每个第一文件调度队列的调用请求消息,该每个第一文件调度队列的调用请求消息用于请求调用该K个第一文件调用请求消息对应的第一文件,K为正整数;
S140,根据该每个第一文件调度队列的调用请求消息,存取该K个第一文件调用请求消息对应的第一文件。
具体地,从用户设备发送的文件调用请求消息中,确定出L个第一文件调用请求消息,L为大于1的整数,该第一文件调用请求消息用于调用第一文件,该第一文件即为小文件,每个第一文件调用请求消息中都包括物理扇区信息,该物理扇区信息包括存储对应的小文件的物理扇区的地址。为L个第一文件调用请求消息分配M个第一文件调度队列,M为正整数,并根据每个第一文件调用请求消息中的物理扇区信息,将该L个第一文件调用请求消息分别添加到M个第一文件调度队列中,将每个第一文件调度队列中被分配到的K个第一文件调用请求消息进行处理,例如可以进行合并和/或删除处理,从而获得每个第一文件调度队列对应的调用请求消息,根据每个第一文件调度队列的调用请求消息,对K个第一文件调用请求消息所对应的第一文件进行调用,例如可以进行存取该第一文件。
因此,本发明实施例的存取文件的方法,通过确定小文件的调用请求消息,并为这些小文件的调用请求消息分配对应的第一文件调度队列,从而可以将多个小文件的调用请求消息进行合并和/或删除处理,减少小文件的调用次数,可以避免小文件的调用请求而增加的I/O次数并导致的占用过多内存资源,可以减少***调用次数,并增加I/O请求的吞吐量,进而整体提升文件***的I/O效率。
在S110中,文件***可以从接收到的文件调用请求消息中确定L个第一文件调用请求消息,L为大于1的正整数。该L个第一文件调用请求消息中每个第一文件请求消息用于请求调用对应的一个第一文件。可选地,该第一文件为小文件(Micro File,简称“MF”),根据实际应用,可以设置门限值,将文件的大小小于或等于该门限值的文件确定为小文件,即第一文件,例如,门限值可以设置为1K,即将文件大小小于或等于1K的文件限定为小文件,门限值也可以设置为2M、4M等,本发明并不限于此,则文件***可以从接收到的文件调用请求消息中确定小文件的调用请求消息,这些小文件的调用请求消息用于向文件***请求调用对应的小文件。
在本发明实施例中,文件***确定L个第一文件调用请求消息,可以一次接受一个第一文件调用请求消息,也可以一次接收多个第一文件调用请求消息,例如,文件***可以一次接收3个第一文件调用请求消息,则文件***确定L个第一文件调用请求消息,即确定接收到的3个第一文件调用请求消息。也可以接收随机的第一文件调用请求消息,当积累到L个时,即确定L个第一文件调用请求消息,该L的值可以根据实际应用确定,也可以根据经验值设置,本发明并不限于此。
可选地,在本发明实施例中,每个第一文件调用请求消息中可以包括物理扇区信息,该物理扇区信息包括存储该每个第一文件调用请求消息请求调用的第一文件的物理扇区的地址。可选地,该物理扇区信息中具体可以包括请求调用的第一文件的起始地址、被调用的第一文件的大小、以及下发该第一文件调用请求消息的设备的相关信息中的至少一个。文件***可以根据包括该物理扇区信息的第一文件调用请求消息确定要调用的第一文件。
可选地,在本发明实施例中,该第一文件调用请求消息中还可以包括存取路径信息,该存取路径信息包括对应的存储该第一文件的物理扇区的路径信息,根据该存取路径信息可以在文件***中找到存储对应的第一文件的物理扇区,即存储该小文件的物理扇区。具体地,当打开open或关闭close一个文件或创建一个新文件时,文件***的内核会分配一个文件描述符并返回给用户程序,该文件描述符表项中的指针指向新打开的文件。在存取文件时,用户程序把文件描述符传给内核,内核根据文件描述符找到相应的表项,再通过表项中的指针找到相应的文件。每个文件结构体都有一个指向dentry(directoryentry,目录项)结构体的指针,我们可以根据路径找到文件的inode节点。为了减少读盘次数,内核一般会缓存了目录的树状结构,称为dentry cache,其中每个inode节点都是是一个dentry结构体,只要沿着路径各部分的dentry搜索即可,dentry cache只保存最近访问过的目录项,如果要没有命中,就要从磁盘读到内存中。
具体地,对于小文件,文件***可以将小文件的信息节点MF-inode以链表的形式进行存储,这些小文件的信息节点分别存储了对应的小文件的存取路径信息,可以根据信息节点中的存取路径信息查找小文件。当文件***接收到第i个第一文件调用请求消息时,在存储的MF-inode链表中查找对应的第i个第一文件的信息节点,若该链表中存在该第i个第一文件的信息节点,则根据该第i个第一文件的信息节点,确定用于指示该第一文件的存储路径的存取路径信息,可以将该存取路径信息存储到该第i个第一文件调用请求消息中。当在MF-inode链表中无法查找到对应的第i个第一文件的信息节点,则申请该第i个第一文件对应的新的inode,并将该新的inode加入到MF-inode链表中,同时将该第一文件对应的存储路径和文件名保存到该新的inode中,记录为该inode的成员变量,也将该存取路径信息存储到该第i个第一文件调用请求消息中。
可选地,对于小文件对应的MF-inode链表,当其中包括的inode对应的文件由于文件数据的不断写入,从小文件变为大文件时,例如当该小文件的大小超过4M时,可以通过调用截断(O_TRUNC)操作,使得大文件被截断为小文件;也可以将变大的文件移除小文件的MF-inode链表中,为其分配普通inode,由于性能上没有什么影响,也可以保持现状。相反地,当大文件变为小文件时,可以将该小文件添加到MF-inode链表,可选地,可以通过磁盘碎片整理程序(defragement daemon)在***空闲的时候完成。
在本发明实施例中,Linux的I/O调度程序是块设备I/O子***的主要组件,它介于通用块层和块设备驱动程序之间,当Linux内核组件要读写一些数据时,并不是请求一发出,内核便立即执行该请求,而是将其推迟执行。延迟分配是块设备性能的关键机制,当传输一个新数据块时,内核检查能否通过扩展前一个一直处于等待状态的请求而满足新请求。
具体地,每个块设备程序都有一个请求队列与之关联。在块设备初始化时,会分配并初始化请求队列。在这个时候,我们便可以为块设备驱动程序指定特定的I/O调度算法,默认情况下是使用***默认的调度算法。默认的调度算法会优先处理与上一个处理请求最近的请求,因而就会对某个请求忽略很长一段时间,即为电梯算法。为了避免这种情况,当请求被传给电梯算法是,就会启动超时定时器,从而来避免某个请求永远得不到处理的情况。为了提升用户体验,读请求将一般优先于写请求,因为读请求通常阻塞发出请求的进程。
在本发明实施例中,可以采用这种算法对小文件的调用请求消息进行处理,可选地,还可以通过下面的I/O调度(scheduler)算法方法进行调度。在S120中,可以根据L个第一文件调用请求消息中的物理扇区信息,将该L个第一文件调用请求消息分别添加到M个第一文件调度队列(MF dispatch Queue)中,M为整数。文件***为小文件的调用请求消息分配了对应的第一文件调度队列,对于文件***接收到的第一文件调用请求消息,可以根据每个调用请求消息中的物理扇区信息,将L个第一文件调用请求消息分别添加到M个第一文件调度队列中,使得具有物理扇区地址连续的至少两个第一文件调用请求消息被添加到同一个第一文件调度队列中,其中,每个第一文件调度队列包括K个第一文件调用请求消息,K和M均为正整数。
例如,在本发明实施例中,文件***确定了6个第一文件调用请求消息,即L=6,当只有一个第一文件调度队列,即小文件的调度队列时,M=1,而6个第一文件调用请求消息中存在三个第一文件调用请求消息中的物理扇区信息显示其物理扇区地址连续,另外三个不连续。将6个第一文件调用请求消息均放入该第一文件调度队列中,并将物理扇区地址连续的三个第一文件调用请求消息进行合并,即此时K=3;而另外三个物理扇区地址不连续的第一文件调用请求消息暂时不做处理,待有新的第一文件调用请求消息时,再进行物理扇区地址是否连续的判断,若连续,则进行合并,如果不连续,则仍然不做处理。可选地,可以通过物理扇区地址是否连续来判断是否进行合并处理,还可以根据调用的第一文件的大小进行第一文件调用请求信息的合并,例如,当两个第一文件调用请求消息请求写入的两个第一文件的大小之和,恰好可以构成一个数据块(block),则也可以将这两个第一文件调用请求消息合并,并将对应的要求写入的第一文件写入同一个物理扇区内,同一个数据块中,本发明并不限于此。
可选地,还例如,文件***确定了6个第一文件调用请求消息,即L=6,且将第一文件调度队列分为5个,即小文件的调度队列有5个,M=5时,而6个第一文件调用请求消息中存在三个第一文件调用请求消息中的物理扇区信息显示其物理扇区地址连续,另外三个不连续。则将该三个物理扇区地址连续的第一文件调用请求消息放入同一个第一文件调度队列中,例如将该三个第一文件调用请求消息放入第一个第一文件调度队列中,另外三个互相之间不连续的第一文件调用请求消息则可以放入另外三个第一文件调度队列中,而还有一个第一文件调度队列暂时为空。此时,第一个第一文件调度队列中存在3个第一文件调用请求消息,即K=3,则可以对该第一文件调度队列中的三个第一文件调用请求消息进行合并处理,合并为一个第一文件调度队列的调用请求消息。而另外各有一个第一文件调用请求消息的三个第一调度队列则可以先不进行合并处理,继续等待分配其它第一文件调度请求消息,当这几个第一文件调度队列中存在多个可以合并的第一文件调用请求消息时,则同样地,与第一个第一文件调度队列一样,将在同一个第一文件调度队列中的多个第一文件调用请求消息进行合并。可选地,可以通过物理扇区地址是否连续来判断是否进行合并处理,还可以根据调用的第一文件的大小进行第一文件调用请求信息的合并,例如,当两个第一文件调用请求消息请求写入的两个第一文件的大小之和,恰好可以构成一个数据块(block),则也可以将这两个第一文件调用请求消息合并,并将对应的要求写入的第一文件写入同一个物理扇区内,同一个数据块中,本发明并不限于此。
可选地,又例如,文件***确定了6个第一文件调用请求消息,即L=6,如果存在3个第一文件调度队列,即M=3,并且6个第一文件调用请求消息中三个第一文件调用请求消息中的物理扇区信息显示其物理扇区地址连续,另外三个不连续,则先将该三个物理扇区地址连续的第一文件调用请求消息放入同一个第一文件调度队列中,例如将该三个第一文件调用请求消息放入第一个第一文件调度队列中,而对于另外三个物理地址不连续的第一文件调用请求消息,可以将他们按照大小分配或随机分配到三个第一文件调度队列中;或者也可以根据他们请求调用的第一文件的存储地址的相关性,将他们分配到三个第一文件调度队列中;还可以将他们随机分配到三个第一文件调度队列中。然后对第一个第一文件调度队列中物理扇区信息连续的三个第一文件调用请求消息进行合并处理,合并为一个第一文件调度队列的调用请求消息。而另外的两个第一文件调度队列可以先不进行处理,或者第一个第一文件调度队列中如果还有没有被合并的第一文件调用请求消息,也暂时不进行处理,当这几个第一文件调度队列中存在多个可以合并的第一文件调用请求消息时,则同样地,与第一个第一文件调度队列一样,将在同一个第一文件调度队列中的多个第一文件调用请求消息进行合并。可选地,可以通过物理扇区地址是否连续来判断是否进行合并处理,还可以根据调用的第一文件的大小进行第一文件调用请求信息的合并,例如,当两个第一文件调用请求消息请求写入的两个第一文件的大小之和,恰好可以构成一个数据块(block),则也可以将这两个第一文件调用请求消息合并,并将对应的要求写入的第一文件写入同一个物理扇区内,同一个数据块中,本发明并不限于此。
可选地,可以按照L个第一文件调用请求消息的进程号(PID)的不同,将文件***接收的调用请求消息进行分组。再将分组后的调用请求消息中的第一文件调用请求消息存储到第一文件调度队列,该第一文件调度队列可以包括M个调度队列。可选地,可以在文件***中新增一个结构体,用于判断哪些是第一文件调用请求消息;也可以在S110中确定第一文件调用请求消息时,将第一文件调用请求消息进行标识,通过该标识区分第一文件调用请求消息,并将第一文件调用请求消息分配到对应的M个第一文件调度队列中,每个第一文件调度对应可以包括K个第一文件调用请求消息。
在S130中,文件***中的M个第一文件调度队列中的每个第一文件调度队列可以对其包括的K个第一文件调用请求消息进行处理,获得该每个第一文件调度队列的调用请求消息。具体地,将L个第一文件调用请求消息添加至M个第一文件调度队列,对于每个第一文件调度队列,当其中包括的至少两个第一文件调用请求消息,具有连续的物理扇区(bi_sector)地址,可以将该至少两个第一文件调用请求消息进行合并处理,使得该至少两个第一文件调用请求消息可以合成为一个调用请求消息,即第一文件调度队列的调用请求消息,从而减少了调用的次数。例如,对于任意一个第一文件调度队列,该第一文件调度队列包括K个第一文件调用请求消息,根据该K个第一文件调用请求消息中包括的物理扇区信息,可以对该K个第一文件调用请求消息进行处理,生成一个该第一文件调度队列的调用请求消息,该第一文件调度队列的调用请求消息用于调用K个第一文件调用请求消息对应的第一文件。可选地,文件***还可以对第一文件调用请求消息进行删除处理,删除不必要的调用请求,也可以减少调用次数。
可选地,当某个第一文件调度队列只包括一个第一文件调用请求消息时,即不存在与该调用请求消息中物理扇区地址相连续的另一个调用请求消息时,可以暂时对该第一文件调用请求消息不作处理,当该第一文件调度队列中包括至少两个第一文件调用请求消息的物理扇区地址连续时,再进行合并处理,本发明并不限于此。
在S140中,文件***将第一文件调度队列中包括的K个第一文件调用请求消息进行合并或删除处理后,可以根据获得的第一文件调度队列的调用请求消息,存取相应的第一文件。具体地,由于每个第一文件调用请求消息中可以包括存取路径信息,在第一文件调度队列进行合并后,每个第一文件调度队列的调用请求消息仍然具有对应的存取路径信息,因此可以根据该存取路径信息,对应的对第一文件进行存取处理。可选地,第一文件调度队列的调用请求消息可以发送至存储介质请求队列(mmc_request)中,mmc_request处理第一文件调度队列的调用请求消息,并设置设备控制器,主要用于产生数据并传送,当数据传输完成后可以从对应的调度队列中删除当前的调用请求消息,并开始下一个请求对应的数据传输。
应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
因此,本发明实施例的存取文件的方法,通过确定小文件的调用请求消息,并为这些小文件的调用请求消息分配对应的第一文件调度队列,从而可以将多个小文件的调用请求消息进行合并和/或删除处理,减少小文件的调用次数,可以避免小文件的调用请求而增加的I/O次数并导致的占用过多内存资源,可以减少***调用次数,并增加I/O请求的吞吐量,进而整体提升文件***的I/O效率。
可选地,作为一个实施例,根据本发明实施例的存取文件的方法100还包括:
S150,在存储文件的物理扇区上,确定N个第一文件存储空间组,该N个第一文件存储空间组用于存储第一文件。
在本发明实施例中,具体地,文件***可以为小文件的存取设置单独的物理扇区,该物理扇区中包括多个单独的区域,该区域包括多个第一文件存储空间组(MF Group),该区域的大小可以根据时隙应用进行调整及优化,该区域内包括的MF Groups的个数可以根据需求动态调整。可选地,对于单独存放小文件的多个MF Group,每个MF Group可以包括多个数据库(date block),每个date block可以存储一个或多个小文件,本发明并不限于此。
具体地,可以通过磁盘碎片整理程序(defragement daemon)在***空闲时完成多个MF Group的合并和/或删除。例如,可以将多个MF Group进行合并,保证多个第一文件存储在连续的物理扇区上,进而可以更好地利用eMMC的特性。在***的运行的过程中,由于文件的删除操作,使得某些MF Group中用于存储文件的空间有剩余,即该MF Group中大部分空间被加入了待删除的列表中,可以将这些MF Group进行合并,将至少两个MF Group中的数据合并存储到为一个或多个MF Group中,从而释放出更多的空间,提升空间的利用率。
可选地,作为一个实施例,也可以对MF Groups进行删除处理。例如,当MF Group中存在某些小文件变成大文件时,例如超过了4M的范围,可以找到该变大的文件所在的MFGroup进行标记,然后当defragement daemon遍历待删除的列表,发现该MF Group中包括的第一文件均被加入到删除列表,使得该MF Group中已经不存在文件时,即该MF Groups为空时,会进行删除,删除该MF Group来释放资源。
可选地,作为一个实施例,也可以对MF Group进行增加处理。例如,当新增加了小文件时,例如:某个大文件变成小文件时,defragement daemon首先会在多个MF Group中查找存在剩余空间的MF Group,如果存在可用存储空间可以将该小文件存到该MF Group中,则将新增加的小文件存储到该MF Group中;如果不存在有剩余空间的MF Groups,defragement daemon会增加新的MF Group,用来存放该小文件以及其它新增加的小文件。
在本发明实施例,文件***可以该根据该至少一个第一文件调度队列的调用请求消息,在存储文件的MF Group中查找需要存取调用的第一文件。
应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
因此,本发明实施例的存取文件的方法,通过确定小文件的调用请求消息,并为这些小文件的调用请求消息分配对应的第一文件调度队列,从而可以将多个小文件的调用请求消息进行合并和/或删除处理,可以避免小文件的调用请求而增加的I/O次数并导致的占用过多内存资源,可以减少***调用次数,并增加I/O请求的吞吐量,进而整体提升文件***的I/O效率。另外,还可以为小文件分配相应的动态存储区域,将不同的小文件聚合在一起存放,可以减少存储空间的浪费,提升空间的利用率。
上文中结合图1和图2,详细描述了根据本发明实施例的存取文件的方法,下面将结合图3和图4,描述根据本发明实施例的存取文件的装置200。
如图3所示,根据本发明实施例的存取文件的装置200包括:
第一确定模块210,用于确定L个第一文件调用请求消息,该L个第一文件调用请求消息中的每个第一文件调用请求消息用于请求调用第一文件,该第一文件的大小小于或等于门限值,该每个第一文件调用请求消息包括物理扇区信息,该物理扇区信息包括存储该第一文件的物理扇区的地址,L为大于1的整数;
分配模块220,用于根据该物理扇区信息,将该第一确定模块确定的该L个第一文件调用请求消息分别添加到与该L个第一文件调用请求消息对应的M个第一文件调度队列中,M为正整数;
处理模块230,用于对该分配模块分配的该M个第一文件调度队列中的每个第一文件调度队列包括的K个第一文件调用请求消息进行处理,获得该每个第一文件调度队列的调用请求消息,该每个第一文件调度队列的调用请求消息用于请求调用该K个第一文件调用请求消息对应的第一文件,K为正整数;
调用模块240,用于根据该处理模块获得的该每个第一文件调度队列的调用请求消息,存取该K个第一文件调用请求消息对应的第一文件。
具体地,确定模块210从用户设备发送文件的调用请求消息中,确定出L个第一文件的调用请求消息,L为大于1的整数,该第一文件调用请求消息用于调用第一文件,该第一文件即为小文件,每个小文件的调用请求消息可以包括物理扇区信息,该物理扇区信息包括存储该小文件的物理扇区的地址。分配模块220为确定模块210确定的L个第一文件调用请求消息分配M个第一文件调度队列,M为正整数,并根据每个第一文件调用请求消息中的物理扇区信息,将该L个第一文件的调用请求消息分别添加到M个第一文件调度队列中,处理模块230针对每个第一文件调度队列,将被分配到其中的K个第一文件调用请求消息进行处理,例如可以进行合并和/或删除处理,从而获得每个第一文件调度队列对应的调用请求消息,调用模块240可以根据每个第一文件调度队列的调度请求消息,对K个第一文件调用请求消息所对应的第一文件进行调用,例如可以进行存取该第一文件。
因此,本发明实施例的存取文件的装置,通过确定小文件的调用请求消息,并为这些小文件的调用请求消息分配对应的第一文件调度队列,从而可以将多个小文件的调用请求消息进行合并和/或删除处理,减少小文件的调用次数,可以避免小文件的调用请求而增加的I/O次数并导致的占用过多内存资源,可以减少***调用次数,并增加I/O请求的吞吐量,进而整体提升文件***的I/O效率。
在本发明实施例中,文件***存取文件的装置200的确定模块210可以从接收到的文件调用请求消息中确定L个第一文件调用请求消息,该L个第一文件调用请求消息中每个第一文件请求消息用于请求调用对应的一个第一文件。可选地,该第一文件为小文件(Micro File,简称“MF”),根据实际应用,可以设置门限值,将文件的大小小于或等于该门限值的文件确定为小文件,即第一文件,例如,门限值可以设置为1K,即将文件大小小于或等于1K的文件限定为小文件,门限值也可以设置为2M、4M等,本发明并不限于此,则文件***可以从接收到的文件调用请求消息中确定小文件的调用请求消息,这些小文件的调用请求消息用于向文件***请求调用对应的小文件。
在本发明实施例中,文件***确定L个第一文件调用请求消息,可以一次接受一个第一文件调用请求消息,也可以一次接收多个第一文件调用请求消息,例如,文件***可以一次接收3个第一文件调用请求消息,则文件***确定L个第一文件调用请求消息,即确定接收到的3个第一文件调用请求消息。也可以接收随机的第一文件调用请求消息,当积累到L个时,即确定L个第一文件调用请求消息,该L的值可以根据实际应用确定,也可以根据经验值设置,本发明并不限于此。
可选地,在本发明实施例中,存取文件的装置200的确定模块210确定的该L个第一文件调用请求消息中每个第一文件调用请求消息中可以包括物理扇区信息,该物理扇区信息包括存储该每个第一文件的调用请求消息请求调用的第一文件的物理扇区的地址。可选地,该物理扇区信息中具体可以包括请求调用的第一文件的起始地址、被调用的第一文件的大小以及下发该第一文件调用请求消息的设备的相关信息等。文件***可以根据包括该物理扇区信息的第一文件调用请求消息确定要调用的第一文件。
可选地,在本发明实施例中,确定模块210确定的该第一文件调用请求消息中还可以包括存取路径信息,该存取路径信息包括对应的存储该第一文件的物理扇区的路径信息,根据该存取路径信息可以在文件***中找到存储对应的小文件的物理扇区。具体地,当打开open或关闭close一个文件或创建一个新文件时,文件***的内核会分配一个文件描述符并返回给用户程序,该文件描述符表项中的指针指向新打开的文件。在存取文件时,用户程序把文件描述符传给内核,内核根据文件描述符找到相应的表项,再通过表项中的指针找到相应的文件。每个文件结构体都有一个指向dentry(directory entry,目录项)结构体的指针,我们可以根据路径找到文件的inode节点。为了减少读盘次数,内核一般会缓存了目录的树状结构,称为dentry cache,其中每个inode节点都是是一个dentry结构体,只要沿着路径各部分的dentry搜索即可,dentry cache只保存最近访问过的目录项,如果要没有命中,就要从磁盘读到内存中。
具体地,对于小文件,文件***可以将小文件的信息节点MF-inode以链表的形式进行存储,这些小文件的信息节点分别存储了对应的小文件的存取路径信息,可以根据信息节点中的存取路径信息查找小文件。当文件***接收到第i个第一文件调用请求消息时,在存储的MF-inode链表中查找对应的第i个第一文件的信息节点,若该链表中存在该第i个第一文件的信息节点,则根据该第i个第一文件的信息节点,确定用于指示该第一文件的存储路径的存取路径信息,可以将该存取路径信息存储到该第i个第一文件调用请求消息中。当在MF-inode链表中无法查找到对应的第i个第一文件的信息节点,则申请该第i个第一文件对应的新的inode,并将该新的inode加入到MF-inode链表中,同时将该第一文件对应的存储路径和文件名保存到该新的inode中,记录为该inode的成员变量,也将该存取路径信息存储到该第i个第一文件调用请求消息中。
可选地,对于小文件对应的MF-inode链表,当其中包括的inode对应的文件由于文件数据的不断写入,从小文件变为大文件时,例如当该小文件的大小超过4M时,可以通过调用截断(O_TRUNC)操作,使得大文件被截断为小文件;也可以将变大的文件移除小文件的MF-inode链表中,为其分配普通inode,由于性能上没有什么影响,也可以保持现状。相反地,当大文件变为小文件时,可以将该小文件添加到MF-inode链表,可选地,可以通过磁盘碎片整理程序(defragement daemon)在***空闲的时候完成。
在本发明实施例中,Linux的I/O调度程序是块设备I/O子***的主要组件,它介于通用块层和块设备驱动程序之间,当Linux内核组件要读写一些数据时,并不是请求一发出,内核便立即执行该请求,而是将其推迟执行。延迟分配是块设备性能的关键机制,当传输一个新数据块时,内核检查能否通过扩展前一个一直处于等待状态的请求而满足新请求。
具体地,每个块设备程序都有一个请求队列与之关联。在块设备初始化时,会分配并初始化请求队列。在这个时候,我们便可以为块设备驱动程序指定特定的I/O调度算法,默认情况下是使用***默认的调度算法。默认的调度算法会优先处理与上一个处理请求最近的请求,因而就会对某个请求忽略很长一段时间,即为电梯算法。为了避免这种情况,当请求被传给电梯算法是,就会启动超时定时器,从而来避免某个请求永远得不到处理的情况。为了提升用户体验,读请求将一般优先于写请求,因为读请求通常阻塞发出请求的进程。
在本发明实施例中,可以采用这种算法对小文件的调用请求消息进行处理,可选地,还可以通过下面的I/O调度(scheduler)算法方法进行调度。在本发明实施例中,可以通过分配模块220根据L个第一文件调用请求消息中的物理扇区信息,将该L个第一文件调用请求消息分别添加到M个第一文件调度队列(MF dispatch Queue)中。文件***为小文件的调用请求消息分配了对应的第一文件调度队列,对于文件***接收到的第一文件调用请求消息,可以根据每个调用请求消息中的物理扇区信息,将L个第一文件调用请求消息分别添加到M个第一文件调度队列中,使得具有物理扇区地址连续的至少两个第一文件调用请求消息被添加到同一个第一文件调度队列中,其中,每个第一文件调度队列包括K个第一文件调用请求消息,K和M均为正整数。
例如,在本发明实施例中,文件***确定了6个第一文件调用请求消息,即L=6,当只有一个第一文件调度队列,即小文件的调度队列时,M=1,而6个第一文件调用请求消息中存在三个第一文件调用请求消息中的物理扇区信息显示其物理扇区地址连续,另外三个不连续。将6个第一文件调用请求消息均放入该第一文件调度队列中,并将物理扇区地址连续的三个第一文件调用请求消息进行合并,即此时K=3;而另外三个物理扇区地址不连续的第一文件调用请求消息暂时不做处理,待有新的第一文件调用请求消息时,再进行物理扇区地址是否连续的判断,若连续,则进行合并,如果不连续,则仍然不做处理。可选地,可以通过物理扇区地址是否连续来判断是否进行合并处理,还可以根据调用的第一文件的大小进行第一文件调用请求信息的合并,例如,当两个第一文件调用请求消息请求写入的两个第一文件的大小之和,恰好可以构成一个数据块(block),则也可以将这两个第一文件调用请求消息合并,并将对应的要求写入的第一文件写入同一个物理扇区内,同一个数据块中,本发明并不限于此。
可选地,还例如,文件***确定了6个第一文件调用请求消息,即L=6,且将第一文件调度队列分为5个,即小文件的调度队列有5个,M=5时,而6个第一文件调用请求消息中存在三个第一文件调用请求消息中的物理扇区信息显示其物理扇区地址连续,另外三个不连续。则将该三个物理扇区地址连续的第一文件调用请求消息放入同一个第一文件调度队列中,例如将该三个第一文件调用请求消息放入第一个第一文件调度队列中,另外三个互相之间不连续的第一文件调用请求消息则可以放入另外三个第一文件调度队列中,而还有一个第一文件调度队列暂时为空。此时,第一个第一文件调度队列中存在3个第一文件调用请求消息,即K=3,则可以对该第一文件调度队列中的三个第一文件调用请求消息进行合并处理,合并为一个第一文件调度队列的调用请求消息。而另外各有一个第一文件调用请求消息的三个第一调度队列则可以先不进行合并处理,继续等待分配其它第一文件调度请求消息,当这几个第一文件调度队列中存在多个可以合并的第一文件调用请求消息时,则同样地,与第一个第一文件调度队列一样,将在同一个第一文件调度队列中的多个第一文件调用请求消息进行合并。可选地,可以通过物理扇区地址是否连续来判断是否进行合并处理,还可以根据调用的第一文件的大小进行第一文件调用请求信息的合并,例如,当两个第一文件调用请求消息请求写入的两个第一文件的大小之和,恰好可以构成一个数据块(block),则也可以将这两个第一文件调用请求消息合并,并将对应的要求写入的第一文件写入同一个物理扇区内,同一个数据块中,本发明并不限于此。
可选地,又例如,文件***确定了6个第一文件调用请求消息,即L=6,如果存在3个第一文件调度队列,即M=3,并且6个第一文件调用请求消息中三个第一文件调用请求消息中的物理扇区信息显示其物理扇区地址连续,另外三个不连续,则先将该三个物理扇区地址连续的第一文件调用请求消息放入同一个第一文件调度队列中,例如将该三个第一文件调用请求消息放入第一个第一文件调度队列中,而对于另外三个物理地址不连续的第一文件调用请求消息,可以将他们按照大小分配或随机分配到三个第一文件调度队列中;或者也可以根据他们请求调用的第一文件的存储地址的相关性,将他们分配到三个第一文件调度队列中;还可以将他们随机分配到三个第一文件调度队列中。然后对第一个第一文件调度队列中物理扇区信息连续的三个第一文件调用请求消息进行合并处理,合并为一个第一文件调度队列的调用请求消息。而另外的两个第一文件调度队列可以先不进行处理,或者第一个第一文件调度队列中如果还有没有被合并的第一文件调用请求消息,也暂时不进行处理,当这几个第一文件调度队列中存在多个可以合并的第一文件调用请求消息时,则同样地,与第一个第一文件调度队列一样,将在同一个第一文件调度队列中的多个第一文件调用请求消息进行合并。可选地,可以通过物理扇区地址是否连续来判断是否进行合并处理,还可以根据调用的第一文件的大小进行第一文件调用请求信息的合并,例如,当两个第一文件调用请求消息请求写入的两个第一文件的大小之和,恰好可以构成一个数据块(block),则也可以将这两个第一文件调用请求消息合并,并将对应的要求写入的第一文件写入同一个物理扇区内,同一个数据块中,本发明并不限于此。
可选地,分配模块220可以按照L个第一文件调用请求消息的进程号(PID)的不同,将文件***接收的调用请求消息进行分组,再将分组后的调用请求消息中的第一文件调用请求消息存储到第一文件的调度队列,该第一文件调度队列可以包括M个调度队列。可选地,可以在文件***中新增一个结构体,用于判断哪些是第一文件调用请求消息;也可以在S110中确定第一文件调用请求消息时,将第一文件调用请求消息进行标识,通过该标识区分第一文件调用请求消息,并将第一文件调用请求消息分配到对应的M个第一文件调度队列中,每个第一文件调度对应可以包括K个第一文件调用请求消息。
在本发明实施例中,文件***中的处理模块230针对M个第一文件调度队列中的每个第一文件调度队列,可以对其包括的K个第一文件调用请求消息进行处理,获得该每个第一文件调度队列的调用请求消息。具体地,将L个第一文件调用请求消息添加至M个第一文件调度队列,对于每个第一文件调度队列,当其中包括的至少两个第一文件调用请求消息,具有连续的物理扇区(bi_sector)地址,可以将该至少两个第一文件调用请求消息进行合并处理,使得该至少两个第一文件调用请求消息可以合成为一个调用请求消息,即第一文件调度队列的调用请求消息,从而减少了调用的次数。例如,对于任意一个第一文件调度队列,该第一文件调度队列包括K个第一文件调用请求消息,根据该K个第一文件调用请求消息中包括的物理扇区信息,可以对该K个第一文件调用请求消息进行处理,生成一个该第一文件调度队列的调用请求消息,该第一文件调度队列的调用请求消息用于调用K个第一文件调用请求消息对应的第一文件。可选地,文件***还可以对第一文件调用请求消息进行删除处理,删除不必要的调用请求,也可以减少调用次数。
可选地,当某个第一文件调度队列只包括一个第一文件调用请求消息时,即不存在与该调用请求消息中物理扇区地址相连续的另一个调用请求消息时,可以暂时对该第一文件调用请求消息不作处理,当该第一文件的调度队列中包括至少两个第一文件调用请求消息的物理扇区地址连续时,再进行合并处理,本发明并不限于此。
在本发明实施例中,文件***的处理模块230将第一文件调度队列中包括的K个第一文件调用请求消息进行合并或删除处理后,调用模块240可以根据获得的第一文件调度队列的调用请求消息,存取相应的第一文件。具体地,由于每个第一文件调用请求消息中可以包括存取路径信息,在第一文件调度队列进行合并后,每个第一文件调度队列的调用请求消息仍然具有对应的存取路径信息,因此可以根据该存取路径信息,对应的对第一文件进行存取处理。可选地,第一文件调度队列的调用请求消息可以发送至存储介质请求队列(mmc_request)中,mmc_request处理第一文件调度队列的调用请求消息,并设置设备控制器,主要用于产生数据并传送,当数据传输完成后可以从对应的调度队列中删除当前的调用请求消息,并开始下一个请求对应的数据传输。
因此,本发明实施例的存取文件的装置,通过确定小文件的调用请求消息,并为这些小文件的调用请求消息分配对应的第一文件调度队列,从而可以将多个小文件的调用请求消息进行合并和/或删除处理,减少小文件的调用次数,可以避免小文件的调用请求而增加的I/O次数并导致的占用过多内存资源,可以减少***调用次数,并增加I/O请求的吞吐量,进而整体提升文件***的I/O效率。
可选地,作为一个实施例,根据本发明实施例的存取文件的装置200还包括:
第二确定模块250,用于在存储文件的物理扇区上,确定N个第一文件存储空间组,该N个第一文件存储空间组用于存储第一文件。
在本发明实施例中,具体地,文件***可以为小文件的存取设置单独的物理扇区,该物理扇区中包括多个单独的区域,该区域包括多个第一文件存储空间组(MF Group),该区域的大小可以根据时隙应用进行调整及优化,该区域内包括的MF Groups的个数可以根据需求动态调整。可选地,对于单独存放小文件的多个MF Group,每个MF Group可以包括多个数据库(date block),每个date block可以存储一个或多个小文件,本发明并不限于此。
具体地,第二确定模块250可以通过磁盘碎片整理程序(defragement daemon)在***空闲时完成多个MF Group的合并和/或删除。例如,可以将多个MF Group进行合并,保证多个第一文件存储在连续的物理扇区上,进而可以更好地利用eMMC的特性。在***的运行的过程中,由于文件的删除操作,使得某些MF Group中用于存储文件的空间有剩余,即该MF Group中大部分空间被加入了待删除的列表中,可以将这些MF Group进行合并,将至少两个MF Group中的数据合并存储到为一个或多个MF Group中,从而释放出更多的空间,提升空间的利用率。
可选地,作为一个实施例,也可以对MF Groups进行删除处理。例如,当MF Group中存在某些小文件变成大文件时,例如超过了4M的范围,可以找到该变大的文件所在的MFGroup进行标记,然后当defragement daemon遍历待删除的列表,发现该MF Group中包括的第一文件均被加入到删除列表,使得该MF Group中已经不存在文件时,即该MF Groups为空时,会进行删除,删除该MF Group来释放资源。
可选地,作为一个实施例,也可以对MF Group进行增加处理。例如,当新增加了小文件时,例如:某个大文件变成小文件时,defragement daemon首先会在多个MF Group中查找存在剩余空间的MF Group,如果存在可用存储空间可以将该小文件存到该MF Group中,则将新增加的小文件存储到该MF Group中;如果不存在有剩余空间的MF Groups,defragement daemon会增加新的MF Group,用来存放该小文件以及其它新增加的小文件。
在本发明实施例,文件***的调用模块240可以该根据该至少一个第一文件调度队列的调用请求消息,在存储文件的MF Group中查找需要存取调用的第一文件。
应理解,根据本发明实施例的存取文件的装置200可对应于执行本发明实施例中的方法100,并且存取文件的装置200中的各个模块的上述和其它操作和/或功能分别为了实现图1和图2中的各个方法的相应流程,为了简洁,在此不再赘述。
因此,本发明实施例的存取文件的装置,通过确定小文件的调用请求消息,并为这些小文件的调用请求消息分配对应的第一文件调度队列,从而可以将多个小文件的调用请求消息进行合并和/或删除处理,可以避免小文件的调用请求而增加的I/O次数并导致的占用过多内存资源,可以减少***调用次数,并增加I/O请求的吞吐量,进而整体提升文件***的I/O效率。另外,还可以为小文件分配相应的动态存储区域,将不同的小文件聚合在一起存放,可以减少存储空间的浪费,提升空间的利用率。
如图5所示,本发明实施例还提供了一种存储***300,包括处理器310、存储器320和总线***330。其中,处理器310和存储器320通过总线***330相连,该存储器320用于存储指令,该处理器310用于执行该存储器320存储的指令。该存储器320存储程序代码,且处理器310可以调用存储器320中存储的程序代码执行以下操作:确定L个第一文件调用请求消息,该L个第一文件调用请求消息中的每个第一文件调用请求消息用于请求调用第一文件,该第一文件的大小小于或等于门限值,该每个第一文件调用请求消息包括物理扇区信息,该物理扇区信息包括存储该第一文件的物理扇区的地址,L为大于1的整数;根据该物理扇区信息,将该L个第一文件调用请求消息分别添加到与该L个第一文件调用请求消息对应的M个第一文件调度队列中,M为正整数;对该M个第一文件调度队列中的每个第一文件调度队列包括的K个第一文件调用请求消息进行处理,获得该每个第一文件调度队列的调用请求消息,该每个第一文件调度队列的调用请求消息用于请求调用该K个第一文件调用请求消息对应的第一文件,K为正整数;根据该每个第一文件调度队列的调用请求消息,存取该K个第一文件调用请求消息对应的第一文件。
因此,本发明实施例的存储***,通过确定小文件的调用请求消息,并为这些小文件的调用请求消息分配对应的第一文件调度队列,从而可以将多个小文件的调用请求消息进行合并和/或删除处理,可以避免小文件的调用请求而增加的I/O次数并导致的占用过多内存资源,可以减少***调用次数,并增加I/O请求的吞吐量,进而整体提升文件***的I/O效率。另外,还可以为小文件分配相应的动态存储区域,将不同的小文件聚合在一起存放,可以减少存储空间的浪费,提升空间的利用率。
应理解,在本发明实施例中,该处理器310可以是中央处理单元(CentralProcessing Unit,简称为“CPU”),该处理器310还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
该存储器320可以包括只读存储器和随机存取存储器,并向处理器310提供指令和数据。存储器320的一部分还可以包括非易失性随机存取存储器。例如,存储器320还可以存储设备类型的信息。
该总线***330除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线***330。
在实现过程中,上述方法的各步骤可以通过处理器310中的硬件的集成逻辑电路或者软件形式的指令完成。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器320,处理器310读取存储器320中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
可选地,作为一个实施例,处理器310可以调用存储器320中存储的程序代码执行以下操作:在存储文件的物理扇区上,确定N个第一文件存储空间组,该N个第一文件存储空间组用于存储第一文件,N为正整数;当该N个第一文件存储空间组中至少两个第一文件存储空间组存在可用存储空间时,将该至少两个第一文件存储空间组包括的第一文件进行合并;当该N个第一文件存储空间组中至少一个第一文件存储空间组不存储文件时,释放该至少一个第一文件存储空间组;当该N个第一文件的存储空间组都不存在该可用存储空间时,增加该N个第一文件的存储空间组的个数;根据该每个第一文件调度队列的调用请求消息,从该N个第一文件存储空间组中存取该K个第一文件调用请求消息对应的第一文件。
可选地,作为一个实施例,处理器310可以调用存储器320中存储的程序代码执行以下操作:根据该物理扇区信息,将该L个第一文件调用请求消息中的至少两个第一文件调用请求消息添加到同一个第一文件调度队列中,该至少两个第一文件调用请求消息请求调用的第一文件的物理扇区的地址连续。
可选地,作为一个实施例,该每个第一文件调用请求消息还包括存取路径信息,该存取路径信息用于指示存取该每个第一文件调用消息对应的第一文件的物理扇区的路径。
可选地,作为一个实施例,处理器310可以调用存储器320中存储的程序代码执行以下操作:确定L个第一文件信息节点,该L个第一文件信息节点中的每个第一文件信息节点用于存储该每个第一文件调用请求消息请求调用的第一文件的该存取路径信息;根据该每个第一文件信息节点,确定该每个第一文件调用请求消息请求调用的第一文件的该存取路径信息。
可选地,作为一个实施例,处理器310可以调用存储器320中存储的程序代码执行以下操作:在信息节点链表中确定是否存在该L个第一文件信息节点中第i个第一文件信息节点;当该信息节点链表中不存在该第i个第一文件信息节点时,在该信息节点链表中创建该第i个第一文件信息节点,并将第i个第一文件的该存取路径信息存储到该第i个第一文件信息节点中;当该信息节点链表中存在该第i个第一文件信息节点时,根据该第i个第一文件信息节点确定该第i个第一文件的该存取路径信息。
因此,本发明实施例的存储***,通过确定小文件的调用请求消息,并为这些小文件的调用请求消息分配对应的第一文件调度队列,从而可以将多个小文件的调用请求消息进行合并和/或删除处理,可以避免小文件的调用请求而增加的I/O次数并导致的占用过多内存资源,可以减少***调用次数,并增加I/O请求的吞吐量,进而整体提升文件***的I/O效率。另外,还可以为小文件分配相应的动态存储区域,将不同的小文件聚合在一起存放,可以减少存储空间的浪费,提升空间的利用率。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (15)
1.一种存取文件的方法,其特征在于,包括:
确定L个用于请求调用文件大小小于或等于门限值的第一文件的第一文件调用请求消息,所述L个第一文件调用请求消息中的每个第一文件调用请求消息包括物理扇区信息,所述物理扇区信息包括存储所述第一文件的物理扇区的地址,L为大于1的整数;
根据所述物理扇区信息,将所述L个第一文件调用请求消息分别添加到与所述L个第一文件调用请求消息对应的M个第一文件调度队列中,M为正整数,其中,所述L个第一文件调用请求消息中的至少两个第一文件调用请求消息被添加到同一个第一文件调度队列中,所述至少两个第一文件调用请求消息请求调用的第一文件的物理扇区的地址连续;
对所述M个第一文件调度队列中的每个第一文件调度队列包括的K个第一文件调用请求消息进行处理,获得所述每个第一文件调度队列的调用请求消息,所述每个第一文件调度队列的调用请求消息用于请求调用所述K个第一文件调用请求消息对应的第一文件,K为正整数;
其中,所述对所述M个第一文件调度队列中的每个第一文件调度队列包括的K个第一文件调用请求消息进行处理,包括:若所述每个第一文件调度队列包括的至少两个第一文件调用请求消息请求写入的第一文件的大小之和恰好构成一个数据块,将所述至少两个第一文件调用请求消息被合并为一个调用请求消息,使得所述至少两个第一文件调用请求消息请求写入的第一文件被写入同一个数据块的同一个物理扇区内;
根据所述每个第一文件调度队列的调用请求消息,存取所述K个第一文件调用请求消息对应的第一文件。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在存储文件的物理扇区上,确定N个第一文件存储空间组,所述N个第一文件存储空间组用于存储第一文件,N为正整数;
当所述N个第一文件存储空间组中至少两个第一文件存储空间组存在可用存储空间时,将所述至少两个第一文件存储空间组包括的第一文件进行合并;
当所述N个第一文件存储空间组中至少一个第一文件存储空间组不存储文件时,释放所述至少一个第一文件存储空间组;
当所述N个第一文件的存储空间组都不存在所述可用存储空间时,增加所述N个第一文件的存储空间组的个数;
所述根据所述每个第一文件调度队列的调用请求消息,存取所述K个第一文件调用请求消息对应的第一文件,包括:
根据所述每个第一文件调度队列的调用请求消息,从所述N个第一文件存储空间组中存取所述K个第一文件调用请求消息对应的第一文件。
3.根据权利要求1或2所述的方法,其特征在于,所述每个第一文件调用请求消息还包括存取路径信息,所述存取路径信息用于指示存取所述每个第一文件调用消息对应的第一文件的物理扇区的路径。
4.根据权利要求3所述的方法,其特征在于,所述确定L个用于请求调用文件大小小于或等于门限值的第一文件的第一文件调用请求消息,包括:
确定L个第一文件信息节点,所述L个第一文件信息节点中的每个第一文件信息节点用于存储所述每个第一文件调用请求消息请求调用的第一文件的所述存取路径信息;
根据所述每个第一文件信息节点,确定所述每个第一文件调用请求消息请求调用的第一文件的所述存取路径信息。
5.根据权利要求4所述的方法,其特征在于,所述确定L个第一文件信息节点,包括:
在信息节点链表中确定是否存在所述L个第一文件信息节点中第i个第一文件信息节点;
当所述信息节点链表中不存在所述第i个第一文件信息节点时,在所述信息节点链表中创建所述第i个第一文件信息节点,并将第i个第一文件的所述存取路径信息存储到所述第i个第一文件信息节点中;
当所述信息节点链表中存在所述第i个第一文件信息节点时,根据所述第i个第一文件信息节点确定所述第i个第一文件的所述存取路径信息。
6.一种存取文件的装置,其特征在于,包括:
第一确定模块,用于确定L个用于请求调用文件大小小于或等于门限值的第一文件的第一文件调用请求消息,所述L个第一文件调用请求消息中的每个第一文件调用请求消息包括物理扇区信息,所述物理扇区信息包括存储所述第一文件的物理扇区的地址,L为大于1的整数;
分配模块,用于根据所述物理扇区信息,将所述第一确定模块确定的所述L个第一文件调用请求消息分别添加到与所述L个第一文件调用请求消息对应的M个第一文件调度队列中,M为正整数,其中,所述L个第一文件调用请求消息中的至少两个第一文件调用请求消息被添加到同一个第一文件调度队列中,所述至少两个第一文件调用请求消息请求调用的第一文件的物理扇区的地址连续;
处理模块,用于对所述分配模块分配的所述M个第一文件调度队列中的每个第一文件调度队列包括的K个第一文件调用请求消息进行处理,获得所述每个第一文件调度队列的调用请求消息,所述每个第一文件调度队列的调用请求消息用于请求调用所述K个第一文件调用请求消息对应的第一文件,K为正整数;
其中,所述处理模块具体用于,若所述每个第一文件调度队列包括的至少两个第一文件调用请求消息请求写入的第一文件的大小之和恰好构成一个数据块,将所述至少两个第一文件调用请求消息被合并为一个调用请求消息,使得所述至少两个第一文件调用请求消息请求写入的第一文件被写入同一个数据块的同一个物理扇区内;
调用模块,用于根据所述处理模块获得的所述每个第一文件调度队列的调用请求消息,存取所述K个第一文件调用请求消息对应的第一文件。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第二确定模块,用于在存储文件的物理扇区上,确定N个第一文件存储空间组,所述N个第一文件存储空间组用于存储所述第一文件,N为正整数;
当所述N个第一文件存储空间组中至少两个第一文件存储空间组存在可用存储空间时,将所述至少两个第一文件存储空间组包括的第一文件进行合并,或
当所述N个第一文件存储空间组中至少一个第一文件存储空间组不存储文件时,释放所述至少一个第一文件存储空间组,或
当所述N个第一文件的存储空间组都不存在所述可用存储空间时,增加所述N个第一文件的存储空间组的个数;
所述调用模块还用于:
根据所述每个第一文件调度队列的调用请求消息,从所述N个第一文件存储空间组中存取所述K个第一文件调用请求消息对应的第一文件。
8.根据权利要求6或7所述的装置,其特征在于,所述每个第一文件调用请求消息还包括存取路径信息,所述存取路径信息用于指示存取所述每个第一文件调用消息对应的第一文件的物理扇区的路径。
9.根据权利要求8所述的装置,其特征在于,所述第一确定模块具体用于:
确定L个第一文件信息节点,所述L个第一文件信息节点中的每个第一文件信息节点用于存储所述每个第一文件调用请求消息请求调用的第一文件的所述存取路径信息;
根据所述每个第一文件信息节点,确定所述每个第一文件调用请求消息请求调用的第一文件的所述存取路径信息。
10.根据权利要求9所述的装置,其特征在于,所述第一确定模块具体用于:
在信息节点链表中确定是否存在所述L个第一文件信息节点中第i个第一文件信息节点;
当所述信息节点链表中不存在所述第i个第一文件信息节点时,在所述信息节点链表中创建所述第i个第一文件信息节点,并将第i个第一文件的所述存取路径信息存储到所述第i个第一文件信息节点中;
当所述信息节点链表中存在所述第i个第一文件信息节点时,根据所述第i个第一文件信息节点确定所述第i个第一文件的所述存取路径信息。
11.一种存储***,其特征在于,包括:
存储器,用于存储文件和程序;
处理器,用于执行所述程序,以实现:
确定L个用于请求调用文件大小小于或等于门限值的第一文件的第一文件调用请求消息,所述L个第一文件调用请求消息中的每个第一文件调用请求消息包括物理扇区信息,所述物理扇区信息包括存储所述第一文件的物理扇区的地址,L为大于1的整数;
根据所述物理扇区信息,将所述L个第一文件调用请求消息分别添加到与所述L个第一文件调用请求消息对应的M个第一文件调度队列中,M为正整数,其中,所述L个第一文件调用请求消息中的至少两个第一文件调用请求消息被添加到同一个第一文件调度队列中,所述至少两个第一文件调用请求消息请求调用的第一文件的物理扇区的地址连续;
对所述M个第一文件调度队列中的每个第一文件调度队列包括的K个第一文件调用请求消息进行处理,获得所述每个第一文件调度队列的调用请求消息,所述每个第一文件调度队列的调用请求消息用于请求调用所述K个第一文件调用请求消息对应的第一文件,K为正整数;
其中,所述处理器具体用于,若所述每个第一文件调度队列包括的至少两个第一文件调用请求消息请求写入的第一文件的大小之和恰好构成一个数据块,将所述至少两个第一文件调用请求消息被合并为一个调用请求消息,使得所述至少两个第一文件调用请求消息请求写入的第一文件被写入同一个数据块的同一个物理扇区内;
根据所述每个第一文件调度队列的调用请求消息,存取所述K个第一文件调用请求消息对应的第一文件。
12.根据权利要求11所述的存储***,其特征在于,所述处理器还用于:
在存储文件的物理扇区上,确定N个第一文件存储空间组,所述N个第一文件存储空间组用于存储所述第一文件,N为正整数;
当所述N个第一文件存储空间组中至少两个第一文件存储空间组存在可用存储空间时,将所述至少两个第一文件存储空间组包括的第一文件进行合并,或
当所述N个第一文件存储空间组中至少一个第一文件存储空间组不存储文件时,释放所述至少一个第一文件存储空间组,或
当所述N个第一文件的存储空间组都不存在所述可用存储空间时,增加所述N个第一文件的存储空间组的个数;
根据所述每个第一文件调度队列的调用请求消息,从所述N个第一文件存储空间组中存取所述K个第一文件调用请求消息对应的第一文件。
13.根据权利要求11或12所述的存储***,其特征在于,所述每个第一文件调用请求消息还包括存取路径信息,所述存取路径信息用于指示存取所述每个第一文件调用消息对应的第一文件的物理扇区的路径。
14.根据权利要求13所述的存储***,其特征在于,所述处理器具体用于:
确定L个第一文件信息节点,所述L个第一文件信息节点中的每个第一文件信息节点用于存储所述每个第一文件调用请求消息请求调用的第一文件的所述存取路径信息;
根据所述每个第一文件信息节点,确定所述每个第一文件调用请求消息请求调用的第一文件的所述存取路径信息。
15.根据权利要求14所述的存储***,其特征在于,所述处理器具体用于:
在信息节点链表中确定是否存在所述L个第一文件信息节点中第i个第一文件信息节点;
当所述信息节点链表中不存在所述第i个第一文件信息节点时,在所述信息节点链表中创建所述第i个第一文件信息节点,并将第i个第一文件的所述存取路径信息存储到所述第i个第一文件信息节点中;
当所述信息节点链表中存在所述第i个第一文件信息节点时,根据所述第i个第一文件信息节点确定所述第i个第一文件的所述存取路径信息。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2015/079894 WO2016187831A1 (zh) | 2015-05-27 | 2015-05-27 | 存取文件的方法、装置和存储*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106537321A CN106537321A (zh) | 2017-03-22 |
CN106537321B true CN106537321B (zh) | 2020-04-28 |
Family
ID=57393766
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580014438.8A Active CN106537321B (zh) | 2015-05-27 | 2015-05-27 | 存取文件的方法、装置和存储*** |
Country Status (6)
Country | Link |
---|---|
US (1) | US10846265B2 (zh) |
EP (1) | EP3293625B1 (zh) |
JP (1) | JP6584529B2 (zh) |
KR (1) | KR102063281B1 (zh) |
CN (1) | CN106537321B (zh) |
WO (1) | WO2016187831A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107509085B (zh) * | 2017-08-24 | 2019-12-24 | 山东浪潮商用***有限公司 | 一种流媒体文件的存储方法及装置 |
CN112148683A (zh) * | 2019-06-26 | 2020-12-29 | ***通信集团江西有限公司 | 文件采集方法和装置 |
CN111176566B (zh) * | 2019-12-25 | 2023-09-19 | 山东方寸微电子科技有限公司 | 一种支持queue命令的eMMC读写控制方法及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11317008A (ja) * | 1998-04-30 | 1999-11-16 | Toshiba Corp | ディスク記憶装置及び同装置におけるセグメントキャッシュ制御方法 |
CN103914522A (zh) * | 2014-03-20 | 2014-07-09 | 电子科技大学 | 一种应用于云存储重复数据删除的数据块合并方法 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB8829919D0 (en) * | 1988-12-22 | 1989-02-15 | Int Computer Limited | File system |
US6931501B1 (en) * | 2001-10-26 | 2005-08-16 | Adaptec, Inc. | Method and apparatus for merging contiguous like commands |
US7996903B2 (en) * | 2006-07-07 | 2011-08-09 | Webroot Software, Inc. | Method and system for detecting and removing hidden pestware files |
JP4331220B2 (ja) * | 2007-03-07 | 2009-09-16 | 株式会社東芝 | 未使用物理領域自律管理機能を持つストレージ装置 |
JP5247192B2 (ja) * | 2008-03-14 | 2013-07-24 | 三菱電機株式会社 | 周期更新データ管理システム |
WO2010124291A1 (en) * | 2009-04-24 | 2010-10-28 | Level 3 Communications, Llc | Media resource storage and management |
US20110035557A1 (en) * | 2009-08-05 | 2011-02-10 | Nokia Corporation | Fragmentation reduction using virtual sectors for static data |
US8578126B1 (en) * | 2009-10-29 | 2013-11-05 | Netapp, Inc. | Mapping of logical start addresses to physical start addresses in a system having misalignment between logical and physical data blocks |
US8768980B2 (en) | 2009-11-02 | 2014-07-01 | Stg Interactive S.A. | Process for optimizing file storage systems |
US9009388B2 (en) * | 2010-11-30 | 2015-04-14 | Red Hat, Inc. | Performing discard commands on RAID storage devices |
US20150143021A1 (en) | 2012-12-26 | 2015-05-21 | Unisys Corporation | Equalizing wear on storage devices through file system controls |
US20140351485A1 (en) * | 2013-05-23 | 2014-11-27 | Spansion Llc | Differential File System for Computer Memory |
JP6095539B2 (ja) * | 2013-09-20 | 2017-03-15 | 株式会社日立製作所 | I/o処理制御装置及びi/o処理制御方法 |
CN104571931B (zh) * | 2013-10-10 | 2017-10-03 | 中国科学院声学研究所 | 基于***资源的i/o请求合并调度***与方法 |
CN104866428B (zh) * | 2014-02-21 | 2018-08-31 | 联想(北京)有限公司 | 数据存取方法和数据存取装置 |
CN104536959B (zh) | 2014-10-16 | 2018-03-06 | 南京邮电大学 | 一种Hadoop存取海量小文件的优化方法 |
CN104571952B (zh) * | 2014-12-25 | 2017-08-01 | 华中科技大学 | 一种分开处理数据与元数据读写请求的方法 |
US10793713B2 (en) * | 2015-11-17 | 2020-10-06 | University Of Houston System | Biorenewable blends of polylactide and acrylated epoxidized soybean oil compatibilized by a polylactide star polymer |
-
2015
- 2015-05-27 EP EP15892912.5A patent/EP3293625B1/en active Active
- 2015-05-27 CN CN201580014438.8A patent/CN106537321B/zh active Active
- 2015-05-27 KR KR1020177037049A patent/KR102063281B1/ko active IP Right Grant
- 2015-05-27 US US15/576,637 patent/US10846265B2/en active Active
- 2015-05-27 JP JP2017561340A patent/JP6584529B2/ja active Active
- 2015-05-27 WO PCT/CN2015/079894 patent/WO2016187831A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11317008A (ja) * | 1998-04-30 | 1999-11-16 | Toshiba Corp | ディスク記憶装置及び同装置におけるセグメントキャッシュ制御方法 |
CN103914522A (zh) * | 2014-03-20 | 2014-07-09 | 电子科技大学 | 一种应用于云存储重复数据删除的数据块合并方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3293625A1 (en) | 2018-03-14 |
KR102063281B1 (ko) | 2020-01-07 |
JP6584529B2 (ja) | 2019-10-02 |
WO2016187831A1 (zh) | 2016-12-01 |
EP3293625B1 (en) | 2021-07-07 |
CN106537321A (zh) | 2017-03-22 |
EP3293625A4 (en) | 2018-05-23 |
US10846265B2 (en) | 2020-11-24 |
JP2018515859A (ja) | 2018-06-14 |
US20180129672A1 (en) | 2018-05-10 |
KR20180011255A (ko) | 2018-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100462940C (zh) | 一种在内存中缓存数据的方法及装置 | |
US11314689B2 (en) | Method, apparatus, and computer program product for indexing a file | |
CN111324427B (zh) | 一种基于dsp的任务调度方法及装置 | |
CN110858162B (zh) | 内存管理方法及装置、服务器 | |
CN110196681B (zh) | 业务写操作的磁盘数据写入控制方法及装置、电子设备 | |
CN108038062B (zh) | 嵌入式***的内存管理方法和装置 | |
US10049035B1 (en) | Stream memory management unit (SMMU) | |
US20190026317A1 (en) | Memory use in a distributed index and query system | |
US11977548B2 (en) | Allocating partitions for executing operations of a query | |
CN107728935B (zh) | 对分布式计算***中的数据重新分区 | |
US11520520B2 (en) | Memory system and method of controlling nonvolatile memory | |
US20130232124A1 (en) | Deduplicating a file system | |
WO2024099448A1 (zh) | 内存释放、内存恢复方法、装置、计算机设备及存储介质 | |
CN106537321B (zh) | 存取文件的方法、装置和存储*** | |
CN109213423B (zh) | 基于地址屏障无锁处理并发io命令 | |
CN115080455A (zh) | 一种计算机芯片、计算机板卡、存储空间分配方法及装置 | |
CN112148736A (zh) | 缓存数据的方法、设备及存储介质 | |
CN116483740B (zh) | 内存数据的迁移方法、装置、存储介质及电子装置 | |
US20100299672A1 (en) | Memory management device, computer system, and memory management method | |
US9858204B2 (en) | Cache device, cache system, and cache method | |
US11960723B2 (en) | Method and system for managing memory associated with a peripheral component interconnect express (PCIE) solid-state drive (SSD) | |
CN113778688A (zh) | 内存管理***、内存管理方法、内存管理装置 | |
CN109213424B (zh) | 并发io命令的无锁处理方法 | |
US10289330B2 (en) | Allocating shared memory among multiple tasks in a multiprocessor environment | |
CN118034932A (zh) | 一种内存管理方法、装置、设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210421 Address after: Unit 3401, unit a, building 6, Shenye Zhongcheng, No. 8089, Hongli West Road, Donghai community, Xiangmihu street, Futian District, Shenzhen, Guangdong 518040 Patentee after: Honor Device Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TR01 | Transfer of patent right |