CN107506447A - 一种基于本地文件系统的小文件读写方法及系统 - Google Patents
一种基于本地文件系统的小文件读写方法及系统 Download PDFInfo
- Publication number
- CN107506447A CN107506447A CN201710742715.8A CN201710742715A CN107506447A CN 107506447 A CN107506447 A CN 107506447A CN 201710742715 A CN201710742715 A CN 201710742715A CN 107506447 A CN107506447 A CN 107506447A
- Authority
- CN
- China
- Prior art keywords
- file
- small documents
- small
- catalogue
- big
- 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
Links
Classifications
-
- 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/172—Caching, prefetching or hoarding of files
-
- 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
- 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/0611—Improving I/O performance in relation to response time
-
- 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/0643—Management of files
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于本地文件系统的小文件读写方法及系统,将本地文件系统中属于同一目录的小文件聚合成N个大文件,N为正整数;为每个目录生成一一对应的索引文件,索引文件包括目录中所有小文件的名称、小文件所在的大文件的名称及小文件在大文件中的位置;接收包括小文件的路径名的小文件操作指令,根据小文件操作指令确定与小文件所属的目录对应的索引文件,操作包括读和/或写;根据确定的索引文件将小文件操作指令的路径名中的小文件的名称和位置修改为小文件所在的大文件的名称及小文件在大文件中的位置;根据修改后的指令对小文件所在的大文件执行相应的操作,以实现对小文件的操作。本发明提供的方法和系统提高了对小文件的操作效率。
Description
技术领域
本发明涉及文件系统领域,特别是涉及一种基于本地文件系统的小文件读写方法。本发明还涉及一种基于本地文件系统的小文件读写系统。
背景技术
随着技术的发展和存储性能的提高,存储的数据越来越多样化,存储的应用场景也越来越广泛,其中一种就是以海量小文件为主的应用场景。针对这种应用场景,使用较广泛的存储方式是多节点的分布式存储。然而分布式存储并不是在所有的情况下都可以使用,而且成本相对较高。因此,在传统的统一存储当中也有以海量小文件为主的应用场景。
传统的统一存储中使用的都是单节点的本地文件系统比如XFS(Extensions forFinancialServices,金融服务扩展)、Ext4(Fourth Extended Filesystem,第四代扩展文件系统)等,在以海量小文件为主的应用场景中,对每个小文件进行操作时都需要从磁盘读取相应的数据,显然,由于各个小文件在磁盘中存储的位置不同,对数量较多的不同小文件进行操作时则需要频繁的换道读取数据,磁盘上的寻道时间损耗较多,从而大幅降低了本地文件系统对小文件进行操作的效率。
因此,如何提供一种解决上述技术问题的方案是本领域技术人员目前需要解决的问题。
发明内容
本发明的目的是提供一种基于本地文件系统的小文件读写方法,读写过程中磁盘上的时间损耗较少;本发明的另一目的是提供一种基于本地文件系统的小文件读写系统,对小文件的读写效率较高。
为解决上述技术问题,本发明提供了一种基于本地文件系统的小文件读写方法,包括:
将本地文件系统中属于同一目录的小文件聚合成N个大文件,N为正整数;
为每个所述目录生成一一对应的索引文件,所述索引文件包括所述目录中所有小文件的名称、小文件所在的大文件的名称及小文件在大文件中的位置;
接收包括小文件的路径名的小文件操作指令,根据所述小文件操作指令确定与所述小文件所属的目录对应的索引文件,所述操作包括读和/或写;
根据确定的所述索引文件将所述小文件操作指令的路径名中的小文件的名称和位置修改为所述小文件所在的大文件的名称及所述小文件在大文件中的位置;
根据修改后的指令对所述小文件所在的大文件执行相应的操作,以实现对所述小文件的操作。
优选地,所述将本地文件系统中属于同一目录的小文件聚合成N个大文件的过程具体为:
将本地文件系统中属于同一目录的小文件聚合成第一大文件,直至所述第一大文件的大小达到预设的第一阈值;
当所述第一大文件的大小达到所述预设的第一阈值时,判断是否还有属于所述目录的小文件不在所述第一大文件中,如果是,将不在所述第一大文件中的属于所述目录的小文件聚合成下一个大文件,直至属于所述目录的所有小文件聚合完毕,其中,每个大文件的大小不超过所述预设的第一阈值。
优选地,当要进行操作的所述小文件所属的目录中没有大文件时,所述根据所述小文件操作指令确定与所述小文件所属的目录对应的索引文件的过程具体为:
在所述小文件所属的目录中创建一个大文件,将所述小文件聚合在创建的所述大文件中,并根据所述小文件的名称、创建的所述大文件的名称及所述小文件在创建的所述大文件中的位置创建与所述小文件所属的目录一一对应的索引文件。
优选地,当要进行操作的所述小文件所属的目录中有大文件时,所述根据所述小文件操作指令确定与所述小文件所属的目录对应的索引文件的过程具体为:
判断所述小文件是否为新建的文件;
如果是,则判断所述小文件所属的目录中最后一个大文件是否未达到预设的第一阈值,如果否,将所述小文件聚合在所述最后一个大文件中,并将所述小文件的名称、最后一个所述大文件的名称及所述小文件在最后一个所述大文件中的位置更新至与所述小文件所属的目录对应的索引文件;如果是,在所述小文件所属的目录中新建一个大文件将所述小文件聚合在新建的所述大文件中,并将所述小文件的名称、新建的所述大文件的名称及所述小文件在新建的所述大文件中的位置更新至与所述小文件所属的目录对应的索引文件;
如果否,则判断本次操作是否需要为所述小文件分配新的空间,如果是,确定分配新的空间后的小文件在所述小文件所在的大文件中新的位置,并将所述新的位置更新至与所述小文件所属的目录对应的索引文件;如果否,在所述本地文件系统当前的索引文件中得到与所述小文件所属的目录对应的索引文件。
优选地,所述根据修改后的指令对所述小文件所在的大文件执行相应的操作之后,该方法还包括:
将进行操作的所述小文件所在的大文件保存在缓存中。
优选地,所述根据所述小文件操作指令确定与所述小文件所属的目录对应的索引文件之后,该方法还包括:
将确定出的与所述小文件所属的目录对应的索引文件保存在所述缓存中。
优选地,所述将确定出的与所述小文件所属的目录对应的索引文件保存在缓存中之后,该方法还包括:
在所述缓存中生成一个列表元素与保存在所述缓存中的索引文件一一对应的目录列表;
其中,所述目录列表的每个所述列表元素包括与所述列表元素对应的索引文件对应的目录的名称、指向所述列表元素对应的索引文件对应的目录中的大文件在内存中的缓存的索引指针、与所述列表元素对应的索引文件的最近访问时间和标识与所述列表元素对应的索引文件在所述缓存中是否被修改过的脏标志位,当所述列表元素对应的索引文件在所述缓存中被修改过时将所述脏标志位标记为脏。
优选地,所述接收包括小文件的路径名的小文件操作指令之后,该方法还包括:
每隔预设时间间隔将所述脏标志位标记为脏的索引文件从所述缓存中刷写到磁盘上,以保证所述磁盘中保存的索引文件为所述本地文件系统接收到所述小文件操作指令之后更新的索引文件。
优选地,所述将确定出的与所述小文件所属的目录对应的索引文件保存在缓存中的过程具体为:
判断所述缓存中是否存在与所述小文件所属的目录对应的索引文件;
当所述缓存中存在与所述小文件所属的目录对应的索引文件时,将所述缓存中存在的所述小文件所属的目录对应的索引文件更新为接收到所述小文件操作指令之后确定的新的与所述小文件所属的目录对应的索引文件,并更新所述目录列表;
当所述缓存中不存在与所述小文件所属的目录对应的索引文件时,将接收到所述小文件操作指令之后确定的新的与所述小文件所属的目录对应的索引文件保存在所述缓存中,并判断所述缓存的大小是否超过预设的第二阈值;
当所述缓存的大小超过所述预设的第二阈值时,根据所述目录列表的各个列表元素对应的索引文件的最近访问时间确定所述最近访问时间最前的索引文件;
如果所述最近访问时间最前的索引文件对应的所述目录列表的列表元素中的脏标志位是标记为脏的脏标志位,将所述最近访问时间最前的索引文件刷写到所述磁盘,如果所述最近访问时间最前的索引文件对应的所述目录列表的列表元素中的脏标志位不是标记为脏的脏标志位,将所述最近访问时间最前的索引文件丢弃,直至所述缓存的大小不超过所述预设的第二阈值。
为解决上述技术问题,本发明还提供了一种基于本地文件系统的小文件读写系统,包括:
聚合模块,用于将本地文件系统中属于同一目录的小文件聚合成N个大文件,所述N为正整数;
索引模块,用于为每个所述目录生成一一对应的索引文件,所述索引文件包括所述目录中所有小文件的名称、小文件所在的大文件的名称及小文件在大文件中的位置;
接收模块,用于接收包括小文件的路径名的小文件操作指令,根据所述小文件操作指令确定与所述小文件所属的目录对应的索引文件,所述操作包括读和/或写;
修改模块,用于根据确定的所述索引文件将所述小文件操作指令的路径名中的小文件的名称和位置修改为所述小文件所在的大文件的名称及所述小文件在大文件中的位置;
执行模块,用于根据修改后的指令对所述小文件所在的大文件执行相应的操作,以实现对所述小文件的操作。
本发明提供了一种基于本地文件系统的小文件读写方法,包括:将本地文件系统中属于同一目录的小文件聚合成N个大文件,N为正整数;为每个目录生成一一对应的索引文件,索引文件包括目录中所有小文件的名称、小文件所在的大文件的名称及小文件在大文件中的位置;接收包括小文件的路径名的小文件操作指令,根据小文件操作指令确定与小文件所属的目录对应的索引文件,操作包括读和/或写;根据确定的索引文件将小文件操作指令的路径名中的小文件的名称和位置修改为小文件所在的大文件的名称及小文件在大文件中的位置;根据修改后的指令对小文件所在的大文件执行相应的操作,以实现对小文件的操作。
可见,本发明提供的小文件读写方法将对小文件的操作转换为对小文件聚合成的大文件的操作,具体地,本发明会首先将同一目录中的小文件聚合为大文件,当需要对某个小文件进行操作时,本发明会对小文件所在的大文件进行操作,在对大文件中的小文件操作完后,当后续待处理的小文件也在上述大文件中时,那么对后续待处理的小文件进行的操作其实也是对上述小文件所在的大文件进行的操作。因此,进行操作的大文件为同一个大文件,同一个大文件在磁盘中存储的位置不会发生变化,所以操作的过程在磁盘上读取数据时不需要换道,减少了寻道时间,从而减少了操作过程中磁盘上的时间损耗,提高了本地文件系统对小文件的操作效率。
本发明还提供了一种基于本地文件系统的小文件读写系统,与上述方法具有相同的有益效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种基于本地文件系统的小文件读写方法的过程流程图;
图2为本发明提供的一种基于本地文件系统的小文件读写系统的结构示意图。
具体实施方式
本发明的核心是提供一种基于本地文件系统的小文件读写方法,读写过程中磁盘上的时间损耗较少;本发明的另一核心是提供一种基于本地文件系统的小文件读写系统,对小文件的读写效率较高。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参照图1,图1为本发明提供的一种基于本地文件系统的小文件读写方法的过程流程图,该方法包括:
步骤S11:将本地文件系统中属于同一目录的小文件聚合成N个大文件,N为正整数;
具体地,考虑到本地文件系统在遇到以海量小文件为主的应用场景时对小文件的读写效率较低,用户可以在初始化本地文件系统时预先判断自己的应用场景是否以海量小文件为主,如果自己的应用场景是以海量小文件为主,为了提高本地文件系统在上述应用场景下的存储性能,可以对本地文件系统的数据结构进行修改。具体地,将属于同一目录的小文件聚合成大文件进行存储,从而将数据结构的最小单位由单个小文件转换成单个大文件。那么,对本地文件系统中的某个小文件进行操作读取数据时,先根据小文件所在的大文件在磁盘上的位置读取小文件所在的大文件的数据,再根据小文件在所在的大文件中的位置进行分离获取小文件的数据。可见,在以海量小文件为主的应用场景中本发明的数据结构可以减少对同一大文件中的不同小文件进行操作读取数据的过程中磁盘上的换道次数,减少了寻道时间损耗。
步骤S12:为每个目录生成一一对应的索引文件,索引文件包括目录中所有小文件的名称、小文件所在的大文件的名称及小文件在大文件中的位置;
具体地,本发明将本地文件系统中属于同一目录的的小文件聚合成了大文件,为了能在聚合后的大文件中快速准确的读取某个指定的小文件的数据,本发明在每个目录中预留一定的空间保存与目录一一对应的索引文件。每个索引文件的形式可以是一个链表,链表的每个链表元素中保存索引文件对应的目录下的所有的小文件的名称,小文件所在的大文件的名称以及小文件在大文件中的位置。其中,小文件在大文件中的位置也可以用链表的形式来保存,每个链表元素保存小文件在大文件中的起始位置和偏移。可见,本发明可以根据小文件的名称在索引文件中顺利的获取上述小文件在大文件中的位置进而得到小文件的数据,提高了操作效率和准确度。
步骤S13:接收包括小文件的路径名的小文件操作指令,根据小文件操作指令确定与小文件所属的目录对应的索引文件,操作包括读和/或写;
具体地,为了提高本地文件系统在以海量小文件为主的应用场景中对小文件的操作效率,本发明修改了本地文件系统的数据结构,基于此,在新修改的本地文件系统的数据结构下,本发明可以将对小文件的操作转换为对小文件所在的大文件的操作。具体地,本发明在接收到小文件操作指令后不是直接对小文件进行读和/或写操作,而是先根据小文件操作指令中的路径名中的小文件的名称和位置确定上述小文件所属的目录对应的索引文件,从而得到小文件所在的大文件的名称和小文件在大文件中的位置,进而可以将对小文件的操作转换为对大文件的操作,从而避免了对海量小文件进行操作的过程中频繁的换道读写磁盘。
步骤S14:根据确定的索引文件将小文件操作指令的路径名中的小文件的名称和位置修改为小文件所在的大文件的名称及小文件在大文件中的位置;
具体地,考虑到本发明对小文件进行操作读取数据时读取的是小文件所在的大文件的数据,基于此,本发明需要修改接收到的小文件操作指令,将小文件操作指令中的路径名中的小文件的名称修改为小文件所在的大文件的名称,小文件的位置修改为上述小文件在大文件中的位置,以便本地文件系统可以根据修改后的指令对小文件所在的大文件中该小文件相应的部分进行操作。
步骤S15:根据修改后的指令对小文件所在的大文件执行相应的操作,以实现对小文件的操作。
具体地,小文件操作指令修改完成之后,对小文件进行操作时就可以根据修改后的指令中的路径名中的大文件的名称和位置直接在磁盘的相应位置读取小文件所在的大文件的数据,然后再根据小文件在大文件中的位置获取该小文件部分的数据并对该小文件部分的数据进行操作。在对该小文件操作完成之后,当后续待处理的小文件也在上述大文件中时,不再需要换道读取数据,避免了换道过程,减少了磁盘上的时间损耗,提高了本地文件系统的存储性能。
本发明提供了一种基于本地文件系统的小文件读写方法,包括:将本地文件系统中属于同一目录的小文件聚合成N个大文件,N为正整数;为每个目录生成一一对应的索引文件,索引文件包括目录中所有小文件的名称、小文件所在的大文件的名称及小文件在大文件中的位置;接收包括小文件的路径名的小文件操作指令,根据小文件操作指令确定与小文件所属的目录对应的索引文件,操作包括读和/或写;根据确定的索引文件将小文件操作指令的路径名中的小文件的名称和位置修改为小文件所在的大文件的名称及小文件在大文件中的位置;根据修改后的指令对小文件所在的大文件执行相应的操作,以实现对小文件的操作。
可见,本发明提供的小文件读写方法将对小文件的操作转换为对小文件聚合成的大文件的操作,具体地,本发明会首先将同一目录中的小文件聚合为大文件,当需要对某个小文件进行操作时,本发明会对小文件所在的大文件进行操作,在对大文件中的小文件操作完后,当后续待处理的小文件也在上述大文件中时,那么对后续待处理的小文件进行的操作其实也是对上述小文件所在的大文件进行的操作。因此,进行操作的大文件为同一个大文件,同一个大文件在磁盘中存储的位置不会发生变化,所以操作的过程在磁盘上读取数据时不需要换道,减少了寻道时间,从而减少了操作过程中磁盘上的时间损耗,提高了本地文件系统对小文件的操作效率。
在上述实施例的基础上:
作为一种优选地实施例,将本地文件系统中属于同一目录的小文件聚合成N个大文件的过程具体为:
将本地文件系统中属于同一目录的小文件聚合成第一大文件,直至第一大文件的大小达到预设的第一阈值;
当第一大文件的大小达到预设的第一阈值时,判断是否还有属于目录的小文件不在第一大文件中,如果是,将不在第一大文件中的属于目录的小文件聚合成下一个大文件,直至属于目录的所有小文件聚合完毕,其中,每个大文件的大小不超过预设的第一阈值。
具体地,考虑到如果将属于同一目录的小文件聚合成一个大文件,当上述目录下的小文件的数量较多时,聚合成的大文件的大小将会比较大,每次从磁盘上读取相应的数据时耗费的时间将会较长;如果属于同一目录的小文件聚合的大文件的数量过多,那么就不能很好地发挥本发明读写海量小文件的优势。因此,本发明可以根据实际应用中的实验数据和经验为聚合成的大文件的大小设定一个阈值,当一个聚合成的大文件的大小超出上述阈值,聚合成的大文件所在的目录中还有其他小文件时,将其他小文件聚合到新的大文件中,每个大文件的大小都不能超出上述阈值,直至属于该目录的所有的小文件聚合完毕。可见,为聚合成的大文件的大小设置阈值并将属于同一目录的小文件聚合成不超过阈值的大文件,可以更好地提高本地文件系统的存储效率。
作为一种优选地实施例,当要进行操作的小文件所属的目录中没有大文件时,根据小文件操作指令确定与小文件所属的目录对应的索引文件的过程具体为:
在小文件所属的目录中创建一个大文件,将小文件聚合在创建的大文件中,并根据小文件的名称、创建的大文件的名称及小文件在创建的大文件中的位置创建与小文件所属的目录一一对应的索引文件。
具体地,考虑到本发明对小文件所在的大文件进行的操作是根据修改后的指令进行的,修改指令又需要小文件所属的目录对应的索引文件,基于此,本发明接收包括小文件的路径名的小文件操作指令之后,需要先获取与小文件所属的目录对应的索引文件。具体地,先根据小文件操作指令中的路径名中的小文件名和位置查看本地文件系统中有没有该小文件,考虑到本地文件系统中可能没有该小文件且该小文件所属的目录是空目录,比如要进行的操作的小文件是向本地文件系统中的一个空目录下写入一个新的小文件。基于此,由于小文件所属的目录是空目录,空目录中没有任何文件也就不会有大文件,也没有对应的索引文件。所以需要在上述空目录下创建一个大文件,然后将要进行操作的小文件聚合到创建的大文件中,计算要进行操作的小文件在创建的大文件中的位置,最后可以根据小文件的名称、创建的大文件的名称及小文件在创建的大文件中的位置创建出与空目录对应的索引文件。从而使得当要进行操作的小文件所属的目录中没有大文件时,也能获取该目录对应的索引文件,以便根据获取的索引文件进行后续的操作。
作为一种优选地实施例,当要进行操作的小文件所属的目录中有大文件时,根据小文件操作指令确定与小文件所属的目录对应的索引文件的过程具体为:
判断小文件是否为新建的文件;
如果是,则判断小文件所属的目录中最后一个大文件是否未达到预设的第一阈值,如果否,将小文件聚合在最后一个大文件中,并将小文件的名称、最后一个大文件的名称及小文件在最后一个大文件中的位置更新至与小文件所属的目录对应的索引文件;如果是,在小文件所属的目录中新建一个大文件将小文件聚合在新建的大文件中,并将小文件的名称、新建的大文件的名称及小文件在新建的大文件中的位置更新至与小文件所属的目录对应的索引文件;
如果否,则判断本次操作是否需要为小文件分配新的空间,如果是,确定分配新的空间后的小文件在小文件所在的大文件中新的位置,并将新的位置更新至与小文件所属的目录对应的索引文件;如果否,在本地文件系统当前的索引文件中得到与小文件所属的目录对应的索引文件。
具体地,本发明根据小文件操作指令中的路径名中的小文件名和位置查看本地文件系统中有没有该小文件,考虑到本地文件系统中可能没有该小文件,同时该小文件所属的目录不是空目录,目录中有大文件,比如要进行的操作是向本地文件系统中已经存在的一个目录下写入一个新的小文件。基于此,由于小文件所属的目录不是空目录,目录中已经有大文件,也有与小文件所属的目录对应的索引文件,所以只需要将要进行操作的小文件聚合到小文件所属的目录下的大文件中,并更新索引文件即可,更新后的索引文件就是根据接收的小文件操作指令确定出的索引文件。此外,考虑到将要进行操作的小文件聚合到小文件所属的目录中的大文件中时,上述目录中的最后一个大文件的大小可能已经达到了预设的阈值,如果达到了预设的阈值就不能再向最后一个大文件中聚合小文件了,需要再新建一个大文件,直接把要进行操作的小文件聚合在新建的大文件中即可。如果没有达到预设的阈值则可以直接将要进行操作的小文件聚合在最后一个大文件中。
具体地,考虑到本地文件系统中可能已经存在要进行操作的小文件,比如本次操作是对本地文件系统中的某个小文件进行修改,或者读取某个小文件,那么本地文件系统中是存在要进行操作的小文件的。显然,上述小文件的名字,小文件所在的大文件的名字,小文件在大文件中的位置也都保存在小文件所属的目录对应的索引文件中了。考虑到本次对小文件进行的操作可能会也可能不会改变小文件,如果本次操作不需要为小文件分配新的空间,那么本地文件系统中保存的小文件所属的目录对应的索引文件就可以直接作为接收到小文件操作指令后确定的索引文件。如果本次操作需要为小文件分配新的空间,就要计算新分配的空间在小文件所在的大文件中的起始位置和偏移,并在索引文件中该小文件对应的条目下增加一条小文件位置的记录来保存新分配的空间在小文件所在的大文件中的起始位置和偏移。
可见,当要进行操作的小文件所属的目录中有大文件时,本发明也能顺利的获取该目录对应的索引文件,以便根据获取的索引文件进行后续的操作。
作为一种优选地实施例,根据修改后的指令对小文件所在的大文件执行相应的操作之后,该方法还包括:
将进行操作的小文件所在的大文件保存在缓存中。
具体地,考虑到缓存中存取数据的速度远大于磁盘上存取数据的速度,基于此,为了进一步缩短本地文件系统读取数据的时间,本申请把每次进行操作之后的大文件保存在缓存中,当下一次对该大文件中的小文件进行操作时,可以直接在缓存中获取该大文件的数据,不需要再从磁盘上读取数据,极大的提高了获取数据的速度,进一步提高了本地文件系统对小文件进行操作的效率。
作为一种优选地实施例,根据小文件操作指令确定与小文件所属的目录对应的索引文件之后,该方法还包括:
将确定出的与小文件所属的目录对应的索引文件保存在缓存中。
具体地,考虑到本地文件系统每次接收到小文件操作指令之后,对小文件所在的大文件进行操作之前,为了将对小文件的操作转换为对大文件的操作,本申请还需要获得小文件所属的目录对应的索引文件,索引文件保存在磁盘上与索引文件对应的目录中,获取索引文件时也需要在磁盘上读取相应的数据。基于此,为了进一步提高本地文件系统的存储性能,本发明将根据小文件操作指令确定的索引文件也保存在缓存中,在接收到下一个小文件的操作指令之后先在缓存中获取下一个小文件所属的目录对应的索引文件,如果缓存中没有保存下一个小文件对应的索引文件再去磁盘上读取。由于在缓存中获取数据的速度远大于在磁盘上读取数据的速度,因此,本发明可以进一步提高本地文件系统对小文件的操作效率。
作为一种优选地实施例,将确定出的与小文件所属的目录对应的索引文件保存在缓存中之后,该方法还包括:
在缓存中生成一个列表元素与保存在缓存中的索引文件一一对应的目录列表;
其中,目录列表的每个列表元素包括与列表元素对应的索引文件对应的目录的名称、指向列表元素对应的索引文件对应的目录中的大文件在内存中的缓存的索引指针、与列表元素对应的索引文件的最近访问时间和标识与列表元素对应的索引文件在缓存中是否被修改过的脏标志位,当列表元素对应的索引文件在缓存中被修改过时将脏标志位标记为脏。
具体地,本发明的缓存中保存了一些索引文件,为了可以实时的确定缓存中保存的索引文件具体是哪些目录对应的索引文件,本发明为缓存中保存的索引文件生成一个目录列表,目录列表中的每个列表元素与索引文件对应的目录一一对应。考虑到实际应用中可能需要直观的确定出与目录对应的索引文件,每个索引文件对应的目录列表的列表元素中包含了目录的名称。为了可以确定索引文件对应的目录中的大文件在内存中的缓存,列表元素中还包括了指向该列表元素对应的索引文件对应的目录中的大文件在内存中的缓存的索引指针,根据索引指针可以准确的得到某个大文件在内存中的缓存。当然,目录列表中的每个列表元素还可以包含与列表元素对应的索引文件的最近访问时间,可以根据最近访问时间保证缓存中保存的索引文件都是最近经常使用的索引文件。此外,由于根据小文件操作指令确定出索引文件之后,将确定出的索引文件保存在了缓存中,没有立即根据新确定出的索引文件更新磁盘上保存的索引文件,如果新确定出的索引文件发生了变化,那么缓存中保存的本次操作新确定出的索引文件与磁盘上保存的索引文件将会是不同的索引文件,为了指示出不同,该索引文件对应的列表元素中还包括了脏标志位。脏标志位可以标识对应的索引文件在缓存中是否被修改过,当索引文件在缓存中被修改过时,将脏标志位设置为脏。可见,本发明为缓存中保存的索引文件生成的目录列表不仅可以提高在缓存中获取要进行操作的大文件的数据的速度,还可以实时的展现各个索引文件的状态。
作为一种优选地实施例,接收包括小文件的路径名的小文件操作指令之后,该方法还包括:
每隔预设时间间隔将脏标志位标记为脏的索引文件从缓存中刷写到磁盘上,以保证磁盘中保存的索引文件为本地文件系统接收到小文件操作指令之后更新的索引文件。
具体地,由于接收到小文件操作指令之后进行的操作可能会需要修改索引文件,比如进行的操作是在某个已经存在的目录下新建一个小文件,那么索引文件会更新新建的小文件的名称,新建的小文件所在的大文件的名称以及新建的小文件在大文件中的位置,所以保存在缓存里的更新后的索引文件与磁盘上保存的更新前的索引文件是不同的。基于此,为了保证缓存中和磁盘上保存的索引文件内容上的一致性,每隔一定的时间间隔,本发明会将目录列表中标记为脏也就是修改过的索引文件从缓存中刷写到磁盘上,降低了丢失更新后的索引文件的可能性,提高了本地文件系统的存储性能。
作为一种优选地实施例,将确定出的与小文件所属的目录对应的索引文件保存在缓存中的过程具体为:
判断缓存中是否存在与小文件所属的目录对应的索引文件;
当缓存中存在与小文件所属的目录对应的索引文件时,将缓存中存在的小文件所属的目录对应的索引文件更新为接收到小文件操作指令之后确定的新的与小文件所属的目录对应的索引文件,并更新目录列表;
当缓存中不存在与小文件所属的目录对应的索引文件时,将接收到小文件操作指令之后确定的新的与小文件所属的目录对应的索引文件保存在缓存中,并判断缓存的大小是否超过预设的第二阈值;
当缓存的大小超过预设的第二阈值时,根据目录列表的各个列表元素对应的索引文件的最近访问时间确定最近访问时间最前的索引文件;
如果最近访问时间最前的索引文件对应的目录列表的列表元素中的脏标志位是标记为脏的脏标志位,将最近访问时间最前的索引文件刷写到磁盘,如果最近访问时间最前的索引文件对应的目录列表的列表元素中的脏标志位不是标记为脏的脏标志位,将最近访问时间最前的索引文件丢弃,直至缓存的大小不超过预设的第二阈值。
具体地,本发明中将接收到小文件操作指令之后确定出的与小文件所属的目录对应的索引文件保存在缓存中,考虑到实际操作的过程中缓存中可能已经保存过上述小文件所属的目录对应的索引文件了,那么就不需要再在缓存中单独保存一个,只需要将缓存中已经存在的索引文件更新为新确定出来的索引文件即可,同时也要相应的更新缓存中保存的目录列表中与上述索引文件对应的列表元素。如果缓存中没有保存过上述小文件所属的目录对应的索引文件,那么就需要将新确定出的索引文件保存在缓存中,考虑到缓存的容量大小并不是无限大的而是有一个阈值,所以向缓存中新存入索引文件时还要判断缓存的大小是否达到预设的阈值,如果缓存的大小达到了预设的阈值,本发明将根据目录列表的列表元素对应的索引文件的最近访问时间将部分最近访问时间最前也即时间最久的索引文件从缓存中清除直至缓存的大小不超过预设的阈值,以保证缓存中的索引都是最近经常使用的。此外,将需要清除的最近访问时间最前的索引文件从缓存中清除时是根据索引文件对应的目录列表的列表元素中的脏标志位来进行的,如果索引文件对应的脏标志位是标记为脏的脏标志位,说明索引文件在缓存中被修改过,因此需要将标记为脏的脏标志位对应的索引文件刷写到磁盘上,如果索引文件对应的脏标志位不是标记为脏的脏标志位,说明索引文件在缓存中未被修改过,直接丢弃即可。可见,本发明的缓存中存放的都是最近访问时间较后的索引文件,也就是访问比较频繁的索引文件,当接下来对这些索引文件对应的目录中的小文件进行操作时,可以直接从缓存中调用这些索引文件,有效地利用了缓存,明显地提高了本地文件系统的读取性能。
请参照图2,图2为本发明提供的一种基于本地文件系统的小文件读写系统的结构示意图,该系统包括:
聚合模块1,用于将本地文件系统中属于同一目录的小文件聚合成N个大文件,N为正整数;
索引模块2,用于为每个目录生成一一对应的索引文件,索引文件包括目录中所有小文件的名称、小文件所在的大文件的名称及小文件在大文件中的位置;
接收模块3,用于接收包括小文件的路径名的小文件操作指令,根据小文件操作指令确定与小文件所属的目录对应的索引文件,操作包括读和/或写;
修改模块4,用于根据确定的索引文件将小文件操作指令的路径名中的小文件的名称和位置修改为小文件所在的大文件的名称及小文件在大文件中的位置;
执行模块5,用于根据修改后的指令对小文件所在的大文件执行相应的操作,以实现对小文件的操作。
对于本发明提供的系统的介绍请参照上述方法实施例,本发明在此不再赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其他形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种基于本地文件系统的小文件读写方法,其特征在于,包括:
将本地文件系统中属于同一目录的小文件聚合成N个大文件,N为正整数;
为每个所述目录生成一一对应的索引文件,所述索引文件包括所述目录中所有小文件的名称、小文件所在的大文件的名称及小文件在大文件中的位置;
接收包括小文件的路径名的小文件操作指令,根据所述小文件操作指令确定与所述小文件所属的目录对应的索引文件,所述操作包括读和/或写;
根据确定的所述索引文件将所述小文件操作指令的路径名中的小文件的名称和位置修改为所述小文件所在的大文件的名称及所述小文件在大文件中的位置;
根据修改后的指令对所述小文件所在的大文件执行相应的操作,以实现对所述小文件的操作。
2.如权利要求1所述的方法,其特征在于,所述将本地文件系统中属于同一目录的小文件聚合成N个大文件的过程具体为:
将本地文件系统中属于同一目录的小文件聚合成第一大文件,直至所述第一大文件的大小达到预设的第一阈值;
当所述第一大文件的大小达到所述预设的第一阈值时,判断是否还有属于所述目录的小文件不在所述第一大文件中,如果是,将不在所述第一大文件中的属于所述目录的小文件聚合成下一个大文件,直至属于所述目录的所有小文件聚合完毕,其中,每个大文件的大小不超过所述预设的第一阈值。
3.如权利要求1所述的方法,其特征在于,当要进行操作的所述小文件所属的目录中没有大文件时,所述根据所述小文件操作指令确定与所述小文件所属的目录对应的索引文件的过程具体为:
在所述小文件所属的目录中创建一个大文件,将所述小文件聚合在创建的所述大文件中,并根据所述小文件的名称、创建的所述大文件的名称及所述小文件在创建的所述大文件中的位置创建与所述小文件所属的目录一一对应的索引文件。
4.如权利要求1所述的方法,其特征在于,当要进行操作的所述小文件所属的目录中有大文件时,所述根据所述小文件操作指令确定与所述小文件所属的目录对应的索引文件的过程具体为:
判断所述小文件是否为新建的文件;
如果是,则判断所述小文件所属的目录中最后一个大文件是否未达到预设的第一阈值,如果否,将所述小文件聚合在所述最后一个大文件中,并将所述小文件的名称、最后一个所述大文件的名称及所述小文件在最后一个所述大文件中的位置更新至与所述小文件所属的目录对应的索引文件;如果是,在所述小文件所属的目录中新建一个大文件将所述小文件聚合在新建的所述大文件中,并将所述小文件的名称、新建的所述大文件的名称及所述小文件在新建的所述大文件中的位置更新至与所述小文件所属的目录对应的索引文件;
如果否,则判断本次操作是否需要为所述小文件分配新的空间,如果是,确定分配新的空间后的小文件在所述小文件所在的大文件中新的位置,并将所述新的位置更新至与所述小文件所属的目录对应的索引文件;如果否,在所述本地文件系统当前的索引文件中得到与所述小文件所属的目录对应的索引文件。
5.如权利要求1-4任一项所述的方法,其特征在于,所述根据修改后的指令对所述小文件所在的大文件执行相应的操作之后,该方法还包括:
将进行操作的所述小文件所在的大文件保存在缓存中。
6.如权利要求5所述的方法,其特征在于,所述根据所述小文件操作指令确定与所述小文件所属的目录对应的索引文件之后,该方法还包括:
将确定出的与所述小文件所属的目录对应的索引文件保存在所述缓存中。
7.如权利要求6所述的方法,其特征在于,所述将确定出的与所述小文件所属的目录对应的索引文件保存在缓存中之后,该方法还包括:
在所述缓存中生成一个列表元素与保存在所述缓存中的索引文件一一对应的目录列表;
其中,所述目录列表的每个所述列表元素包括与所述列表元素对应的索引文件对应的目录的名称、指向所述列表元素对应的索引文件对应的目录中的大文件在内存中的缓存的索引指针、与所述列表元素对应的索引文件的最近访问时间和标识与所述列表元素对应的索引文件在所述缓存中是否被修改过的脏标志位,当所述列表元素对应的索引文件在所述缓存中被修改过时将所述脏标志位标记为脏。
8.如权利要求7所述的方法,其特征在于,所述接收包括小文件的路径名的小文件操作指令之后,该方法还包括:
每隔预设时间间隔将所述脏标志位标记为脏的索引文件从所述缓存中刷写到磁盘上,以保证所述磁盘中保存的索引文件为所述本地文件系统接收到所述小文件操作指令之后更新的索引文件。
9.如权利要求7所述的方法,其特征在于,所述将确定出的与所述小文件所属的目录对应的索引文件保存在缓存中的过程具体为:
判断所述缓存中是否存在与所述小文件所属的目录对应的索引文件;
当所述缓存中存在与所述小文件所属的目录对应的索引文件时,将所述缓存中存在的所述小文件所属的目录对应的索引文件更新为接收到所述小文件操作指令之后确定的新的与所述小文件所属的目录对应的索引文件,并更新所述目录列表;
当所述缓存中不存在与所述小文件所属的目录对应的索引文件时,将接收到所述小文件操作指令之后确定的新的与所述小文件所属的目录对应的索引文件保存在所述缓存中,并判断所述缓存的大小是否超过预设的第二阈值;
当所述缓存的大小超过所述预设的第二阈值时,根据所述目录列表的各个列表元素对应的索引文件的最近访问时间确定所述最近访问时间最前的索引文件;
如果所述最近访问时间最前的索引文件对应的所述目录列表的列表元素中的脏标志位是标记为脏的脏标志位,将所述最近访问时间最前的索引文件刷写到所述磁盘,如果所述最近访问时间最前的索引文件对应的所述目录列表的列表元素中的脏标志位不是标记为脏的脏标志位,将所述最近访问时间最前的索引文件丢弃,直至所述缓存的大小不超过所述预设的第二阈值。
10.一种基于本地文件系统的小文件读写系统,其特征在于,包括:
聚合模块,用于将本地文件系统中属于同一目录的小文件聚合成N个大文件,所述N为正整数;
索引模块,用于为每个所述目录生成一一对应的索引文件,所述索引文件包括所述目录中所有小文件的名称、小文件所在的大文件的名称及小文件在大文件中的位置;
接收模块,用于接收包括小文件的路径名的小文件操作指令,根据所述小文件操作指令确定与所述小文件所属的目录对应的索引文件,所述操作包括读和/或写;
修改模块,用于根据确定的所述索引文件将所述小文件操作指令的路径名中的小文件的名称和位置修改为所述小文件所在的大文件的名称及所述小文件在大文件中的位置;
执行模块,用于根据修改后的指令对所述小文件所在的大文件执行相应的操作,以实现对所述小文件的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710742715.8A CN107506447A (zh) | 2017-08-25 | 2017-08-25 | 一种基于本地文件系统的小文件读写方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710742715.8A CN107506447A (zh) | 2017-08-25 | 2017-08-25 | 一种基于本地文件系统的小文件读写方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107506447A true CN107506447A (zh) | 2017-12-22 |
Family
ID=60693567
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710742715.8A Pending CN107506447A (zh) | 2017-08-25 | 2017-08-25 | 一种基于本地文件系统的小文件读写方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107506447A (zh) |
Cited By (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108958659A (zh) * | 2018-06-29 | 2018-12-07 | 郑州云海信息技术有限公司 | 一种分布式存储系统的小文件聚合方法、装置及介质 |
CN109086460A (zh) * | 2018-09-20 | 2018-12-25 | 中国科学院电子学研究所苏州研究院 | 一种局域网共享文件索引构建方法及搜索方法 |
CN109597578A (zh) * | 2018-12-03 | 2019-04-09 | 郑州云海信息技术有限公司 | 一种数据存储方法、系统、设备及计算机可读存储介质 |
CN111090633A (zh) * | 2019-12-13 | 2020-05-01 | 浪潮电子信息产业股份有限公司 | 一种分布式文件系统的小文件聚合方法、装置及设备 |
CN111400302A (zh) * | 2019-11-28 | 2020-07-10 | 杭州海康威视系统技术有限公司 | 连续存储数据的修改方法、装置和系统 |
US11176208B2 (en) | 2016-09-26 | 2021-11-16 | Splunk Inc. | Search functionality of a data intake and query system |
US11232100B2 (en) | 2016-09-26 | 2022-01-25 | Splunk Inc. | Resource allocation for multiple datasets |
US11250056B1 (en) | 2016-09-26 | 2022-02-15 | Splunk Inc. | Updating a location marker of an ingestion buffer based on storing buckets in a shared storage system |
US11269939B1 (en) | 2016-09-26 | 2022-03-08 | Splunk Inc. | Iterative message-based data processing including streaming analytics |
US11281706B2 (en) | 2016-09-26 | 2022-03-22 | Splunk Inc. | Multi-layer partition allocation for query execution |
US11294941B1 (en) | 2016-09-26 | 2022-04-05 | Splunk Inc. | Message-based data ingestion to a data intake and query system |
US11321321B2 (en) | 2016-09-26 | 2022-05-03 | Splunk Inc. | Record expansion and reduction based on a processing task in a data intake and query system |
US11334543B1 (en) * | 2018-04-30 | 2022-05-17 | Splunk Inc. | Scalable bucket merging for a data intake and query system |
US11341131B2 (en) | 2016-09-26 | 2022-05-24 | Splunk Inc. | Query scheduling based on a query-resource allocation and resource availability |
US11416528B2 (en) | 2016-09-26 | 2022-08-16 | Splunk Inc. | Query acceleration data store |
US11442935B2 (en) | 2016-09-26 | 2022-09-13 | Splunk Inc. | Determining a record generation estimate of a processing task |
US11461334B2 (en) | 2016-09-26 | 2022-10-04 | Splunk Inc. | Data conditioning for dataset destination |
US11494380B2 (en) | 2019-10-18 | 2022-11-08 | Splunk Inc. | Management of distributed computing framework components in a data fabric service system |
US11500875B2 (en) | 2017-09-25 | 2022-11-15 | Splunk Inc. | Multi-partitioning for combination operations |
US11550847B1 (en) | 2016-09-26 | 2023-01-10 | Splunk Inc. | Hashing bucket identifiers to identify search nodes for efficient query execution |
US11562023B1 (en) | 2016-09-26 | 2023-01-24 | Splunk Inc. | Merging buckets in a data intake and query system |
US11567993B1 (en) | 2016-09-26 | 2023-01-31 | Splunk Inc. | Copying buckets from a remote shared storage system to memory associated with a search node for query execution |
US11580107B2 (en) | 2016-09-26 | 2023-02-14 | Splunk Inc. | Bucket data distribution for exporting data to worker nodes |
US11586692B2 (en) | 2016-09-26 | 2023-02-21 | Splunk Inc. | Streaming data processing |
US11586627B2 (en) | 2016-09-26 | 2023-02-21 | Splunk Inc. | Partitioning and reducing records at ingest of a worker node |
US11593377B2 (en) | 2016-09-26 | 2023-02-28 | Splunk Inc. | Assigning processing tasks in a data intake and query system |
US11599541B2 (en) | 2016-09-26 | 2023-03-07 | Splunk Inc. | Determining records generated by a processing task of a query |
US11604795B2 (en) | 2016-09-26 | 2023-03-14 | Splunk Inc. | Distributing partial results from an external data system between worker nodes |
US11615104B2 (en) | 2016-09-26 | 2023-03-28 | Splunk Inc. | Subquery generation based on a data ingest estimate of an external data system |
US11615087B2 (en) | 2019-04-29 | 2023-03-28 | Splunk Inc. | Search time estimate in a data intake and query system |
US11620336B1 (en) | 2016-09-26 | 2023-04-04 | Splunk Inc. | Managing and storing buckets to a remote shared storage system based on a collective bucket size |
US11663227B2 (en) | 2016-09-26 | 2023-05-30 | Splunk Inc. | Generating a subquery for a distinct data intake and query system |
US11704313B1 (en) | 2020-10-19 | 2023-07-18 | Splunk Inc. | Parallel branch operation using intermediary nodes |
US11715051B1 (en) | 2019-04-30 | 2023-08-01 | Splunk Inc. | Service provider instance recommendations using machine-learned classifications and reconciliation |
US11860940B1 (en) | 2016-09-26 | 2024-01-02 | Splunk Inc. | Identifying buckets for query execution using a catalog of buckets |
US11874691B1 (en) | 2016-09-26 | 2024-01-16 | Splunk Inc. | Managing efficient query execution including mapping of buckets to search nodes |
US11921672B2 (en) | 2017-07-31 | 2024-03-05 | Splunk Inc. | Query execution at a remote heterogeneous data store of a data fabric service |
US11922222B1 (en) | 2020-01-30 | 2024-03-05 | Splunk Inc. | Generating a modified component for a data intake and query system using an isolated execution environment image |
US11989194B2 (en) | 2017-07-31 | 2024-05-21 | Splunk Inc. | Addressing memory limits for partition tracking among worker nodes |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103514210A (zh) * | 2012-06-28 | 2014-01-15 | 华为技术有限公司 | 小文件处理方法及装置 |
CN103577123A (zh) * | 2013-11-12 | 2014-02-12 | 河海大学 | 一种基于hdfs的小文件优化存储方法 |
CN104462563A (zh) * | 2014-12-26 | 2015-03-25 | 浙江宇视科技有限公司 | 一种文件存储方法和系统 |
US20150379024A1 (en) * | 2014-06-27 | 2015-12-31 | International Business Machines Corporation | File storage processing in hdfs |
CN106802950A (zh) * | 2017-01-16 | 2017-06-06 | 郑州云海信息技术有限公司 | 一种分布式文件系统小文件写缓存优化的方法 |
CN106909651A (zh) * | 2017-02-23 | 2017-06-30 | 郑州云海信息技术有限公司 | 一种基于hdfs小文件写入和读取的方法 |
-
2017
- 2017-08-25 CN CN201710742715.8A patent/CN107506447A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103514210A (zh) * | 2012-06-28 | 2014-01-15 | 华为技术有限公司 | 小文件处理方法及装置 |
CN103577123A (zh) * | 2013-11-12 | 2014-02-12 | 河海大学 | 一种基于hdfs的小文件优化存储方法 |
US20150379024A1 (en) * | 2014-06-27 | 2015-12-31 | International Business Machines Corporation | File storage processing in hdfs |
CN104462563A (zh) * | 2014-12-26 | 2015-03-25 | 浙江宇视科技有限公司 | 一种文件存储方法和系统 |
CN106802950A (zh) * | 2017-01-16 | 2017-06-06 | 郑州云海信息技术有限公司 | 一种分布式文件系统小文件写缓存优化的方法 |
CN106909651A (zh) * | 2017-02-23 | 2017-06-30 | 郑州云海信息技术有限公司 | 一种基于hdfs小文件写入和读取的方法 |
Cited By (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11567993B1 (en) | 2016-09-26 | 2023-01-31 | Splunk Inc. | Copying buckets from a remote shared storage system to memory associated with a search node for query execution |
US11461334B2 (en) | 2016-09-26 | 2022-10-04 | Splunk Inc. | Data conditioning for dataset destination |
US11995079B2 (en) | 2016-09-26 | 2024-05-28 | Splunk Inc. | Generating a subquery for an external data system using a configuration file |
US11797618B2 (en) | 2016-09-26 | 2023-10-24 | Splunk Inc. | Data fabric service system deployment |
US11966391B2 (en) | 2016-09-26 | 2024-04-23 | Splunk Inc. | Using worker nodes to process results of a subquery |
US11176208B2 (en) | 2016-09-26 | 2021-11-16 | Splunk Inc. | Search functionality of a data intake and query system |
US11580107B2 (en) | 2016-09-26 | 2023-02-14 | Splunk Inc. | Bucket data distribution for exporting data to worker nodes |
US11232100B2 (en) | 2016-09-26 | 2022-01-25 | Splunk Inc. | Resource allocation for multiple datasets |
US11238112B2 (en) | 2016-09-26 | 2022-02-01 | Splunk Inc. | Search service system monitoring |
US11250056B1 (en) | 2016-09-26 | 2022-02-15 | Splunk Inc. | Updating a location marker of an ingestion buffer based on storing buckets in a shared storage system |
US11269939B1 (en) | 2016-09-26 | 2022-03-08 | Splunk Inc. | Iterative message-based data processing including streaming analytics |
US11586692B2 (en) | 2016-09-26 | 2023-02-21 | Splunk Inc. | Streaming data processing |
US11294941B1 (en) | 2016-09-26 | 2022-04-05 | Splunk Inc. | Message-based data ingestion to a data intake and query system |
US11321321B2 (en) | 2016-09-26 | 2022-05-03 | Splunk Inc. | Record expansion and reduction based on a processing task in a data intake and query system |
US11860940B1 (en) | 2016-09-26 | 2024-01-02 | Splunk Inc. | Identifying buckets for query execution using a catalog of buckets |
US11341131B2 (en) | 2016-09-26 | 2022-05-24 | Splunk Inc. | Query scheduling based on a query-resource allocation and resource availability |
US11392654B2 (en) | 2016-09-26 | 2022-07-19 | Splunk Inc. | Data fabric service system |
US11416528B2 (en) | 2016-09-26 | 2022-08-16 | Splunk Inc. | Query acceleration data store |
US11442935B2 (en) | 2016-09-26 | 2022-09-13 | Splunk Inc. | Determining a record generation estimate of a processing task |
US11663227B2 (en) | 2016-09-26 | 2023-05-30 | Splunk Inc. | Generating a subquery for a distinct data intake and query system |
US11636105B2 (en) | 2016-09-26 | 2023-04-25 | Splunk Inc. | Generating a subquery for an external data system using a configuration file |
US11620336B1 (en) | 2016-09-26 | 2023-04-04 | Splunk Inc. | Managing and storing buckets to a remote shared storage system based on a collective bucket size |
US11550847B1 (en) | 2016-09-26 | 2023-01-10 | Splunk Inc. | Hashing bucket identifiers to identify search nodes for efficient query execution |
US11562023B1 (en) | 2016-09-26 | 2023-01-24 | Splunk Inc. | Merging buckets in a data intake and query system |
US11615104B2 (en) | 2016-09-26 | 2023-03-28 | Splunk Inc. | Subquery generation based on a data ingest estimate of an external data system |
US11874691B1 (en) | 2016-09-26 | 2024-01-16 | Splunk Inc. | Managing efficient query execution including mapping of buckets to search nodes |
US11281706B2 (en) | 2016-09-26 | 2022-03-22 | Splunk Inc. | Multi-layer partition allocation for query execution |
US11586627B2 (en) | 2016-09-26 | 2023-02-21 | Splunk Inc. | Partitioning and reducing records at ingest of a worker node |
US11593377B2 (en) | 2016-09-26 | 2023-02-28 | Splunk Inc. | Assigning processing tasks in a data intake and query system |
US11599541B2 (en) | 2016-09-26 | 2023-03-07 | Splunk Inc. | Determining records generated by a processing task of a query |
US11604795B2 (en) | 2016-09-26 | 2023-03-14 | Splunk Inc. | Distributing partial results from an external data system between worker nodes |
US11921672B2 (en) | 2017-07-31 | 2024-03-05 | Splunk Inc. | Query execution at a remote heterogeneous data store of a data fabric service |
US11989194B2 (en) | 2017-07-31 | 2024-05-21 | Splunk Inc. | Addressing memory limits for partition tracking among worker nodes |
US11860874B2 (en) | 2017-09-25 | 2024-01-02 | Splunk Inc. | Multi-partitioning data for combination operations |
US11500875B2 (en) | 2017-09-25 | 2022-11-15 | Splunk Inc. | Multi-partitioning for combination operations |
US11720537B2 (en) | 2018-04-30 | 2023-08-08 | Splunk Inc. | Bucket merging for a data intake and query system using size thresholds |
US11334543B1 (en) * | 2018-04-30 | 2022-05-17 | Splunk Inc. | Scalable bucket merging for a data intake and query system |
CN108958659A (zh) * | 2018-06-29 | 2018-12-07 | 郑州云海信息技术有限公司 | 一种分布式存储系统的小文件聚合方法、装置及介质 |
CN109086460B (zh) * | 2018-09-20 | 2021-11-19 | 中国科学院电子学研究所苏州研究院 | 一种局域网共享文件索引构建方法及搜索方法 |
CN109086460A (zh) * | 2018-09-20 | 2018-12-25 | 中国科学院电子学研究所苏州研究院 | 一种局域网共享文件索引构建方法及搜索方法 |
CN109597578A (zh) * | 2018-12-03 | 2019-04-09 | 郑州云海信息技术有限公司 | 一种数据存储方法、系统、设备及计算机可读存储介质 |
US11615087B2 (en) | 2019-04-29 | 2023-03-28 | Splunk Inc. | Search time estimate in a data intake and query system |
US11715051B1 (en) | 2019-04-30 | 2023-08-01 | Splunk Inc. | Service provider instance recommendations using machine-learned classifications and reconciliation |
US11494380B2 (en) | 2019-10-18 | 2022-11-08 | Splunk Inc. | Management of distributed computing framework components in a data fabric service system |
CN111400302B (zh) * | 2019-11-28 | 2023-09-19 | 杭州海康威视系统技术有限公司 | 连续存储数据的修改方法、装置和系统 |
CN111400302A (zh) * | 2019-11-28 | 2020-07-10 | 杭州海康威视系统技术有限公司 | 连续存储数据的修改方法、装置和系统 |
CN111090633A (zh) * | 2019-12-13 | 2020-05-01 | 浪潮电子信息产业股份有限公司 | 一种分布式文件系统的小文件聚合方法、装置及设备 |
US11922222B1 (en) | 2020-01-30 | 2024-03-05 | Splunk Inc. | Generating a modified component for a data intake and query system using an isolated execution environment image |
US11704313B1 (en) | 2020-10-19 | 2023-07-18 | Splunk Inc. | Parallel branch operation using intermediary nodes |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107506447A (zh) | 一种基于本地文件系统的小文件读写方法及系统 | |
CN103136243B (zh) | 基于云存储的文件系统去重方法及装置 | |
CN108647151A (zh) | 一种全闪系统元数据落盘方法、装置、设备及存储介质 | |
CN100583832C (zh) | 数据管理方法及系统 | |
CN109445713A (zh) | 一种元数据卷的存储状态记录方法、系统及相关组件 | |
CN107315547A (zh) | 一种读取分布式元数据文件的方法及装置 | |
CN108228649B (zh) | 用于数据访问的方法和设备 | |
CN103838853B (zh) | 一种基于不同存储介质的混合文件系统 | |
CN107239569A (zh) | 一种分布式文件系统子树存储方法及装置 | |
US8291186B2 (en) | Volume record data set optimization apparatus and method | |
CN100492365C (zh) | 文件分配系统中的文件名生成方法及生成装置 | |
CN107707600B (zh) | 一种数据存储方法及装置 | |
CN107729558A (zh) | 文件系统碎片整理的方法、系统、装置及计算机存储介质 | |
CN106951375A (zh) | 在存储系统中删除快照卷的方法及装置 | |
CN109189772A (zh) | 用于无文件系统存储介质的文件管理方法及系统 | |
CN107817946A (zh) | 用于混合存储设备读写数据的方法以及装置 | |
CN107665255A (zh) | 键值数据库数据变更的方法、装置、设备及存储介质 | |
CN109240607A (zh) | 一种文件读取方法和装置 | |
CN109918234A (zh) | 一种基于ssd的元数据恢复方法、装置、设备及介质 | |
CN110008174A (zh) | 一种目录导出方法、系统及相关装置 | |
CN104079600B (zh) | 文件存储方法、装置、访问客户端及元数据服务器系统 | |
CN107506466A (zh) | 一种小文件存储方法及系统 | |
CN105045891B (zh) | 提高顺序表性能方法、系统、架构、优化方法及存储装置 | |
CN109325001A (zh) | 基于元数据服务器删除小文件的方法、装置及设备 | |
CN108897554A (zh) | 一种unity3D打包系统优化方法 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171222 |