CN108717420B - 一种分布式文件系统中提高小文件读取效率的方法 - Google Patents

一种分布式文件系统中提高小文件读取效率的方法 Download PDF

Info

Publication number
CN108717420B
CN108717420B CN201810359241.3A CN201810359241A CN108717420B CN 108717420 B CN108717420 B CN 108717420B CN 201810359241 A CN201810359241 A CN 201810359241A CN 108717420 B CN108717420 B CN 108717420B
Authority
CN
China
Prior art keywords
file
distributed
small
file system
distributed file
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
Application number
CN201810359241.3A
Other languages
English (en)
Other versions
CN108717420A (zh
Inventor
王晓强
李迪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Perabytes Technology Co ltd
Original Assignee
Perabytes Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Perabytes Technology Co ltd filed Critical Perabytes Technology Co ltd
Priority to CN201810359241.3A priority Critical patent/CN108717420B/zh
Publication of CN108717420A publication Critical patent/CN108717420A/zh
Application granted granted Critical
Publication of CN108717420B publication Critical patent/CN108717420B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种分布式文件系统中提高小文件读取效率的方法,包括:在分布式文件系统挂载节点中构建缓存单元;当存在文件读取操作时,所述分布式文件系统挂载节点将向所述分布式文件存储节点发送lookup操作;基于所述lookup操作判断目标文件是否为小文件;若所述目标文件为小文件,则将小文件对应的文件内容作为所述lookup操作的扩展属性并返回到所述分布式文件系统挂载节点中;提取所述lookup操作的扩展属性中的文件内容并且将所述文件内容存储到所述缓存单元中;在所述分布式文件系统挂载节点的缓存单元中进行文件的打开、读取以及关闭操作。本申请能够在不增加硬件成本的基础上,提高小文件的读取速率。

Description

一种分布式文件系统中提高小文件读取效率的方法
技术领域
本发明涉及分布式文件系统中的文件读取相关技术领域,特别是指一种分布式文件系统中提高小文件读取效率的方法。
背景技术
分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与分布的节点相连。这样虽然充分利用了储存资源,但是同样会给文件读取带来负担,尤其是在分布式文件系统中读取大量小文件,例如文件大小小于1MB的文件时的读取速度非常慢。其中,原因主要有3个:(1)读取1个文件必须经过查询(lookup)、打开(open)、读取(read)、关闭(close)这4步操作,而相较于大文件,小文件真正的有效操作中的读取(read)操作的占比过低;(2)所有操作都必须通过网络完成挂载节点以及存储节点的通信,而以太网的延迟较大;(3)小文件通常是随机分布在机械盘的各个扇区上,因此,在机械盘寻道时间长,操作过多时会响应不过来。
为了解决上述问题,针对缺点(2),现有方案通常采用低延迟的无限带宽技术(infiniband)网络来替代以太网,用更高效的远程直接数据存取(rdma,Remote DirectMemory Access)协议来替代TCP/IP协议;针对缺点3,现有解决方案是使用固态硬盘(SolidState Drives)来替代机械盘。
虽然同样能够解决问题,但是现有解决方案全部是基于硬件方面的解决方案,因此导致成本相对要高出很多,这对于很多企业或者场景来说并不适用。
发明内容
有鉴于此,本发明的目的在于提出一种分布式文件系统中提高小文件读取效率的方法,能够在不增加硬件成本的基础上,提高小文件的读取速率。
基于上述目的本发明提供的分布式文件系统中提高小文件读取效率的方法,包括:
在分布式文件系统挂载节点中构建缓存单元;其中,所述分布式文件系统包括分布式文件系统挂载节点以及分布式文件存储节点且分布式文件存储于所述分布式文件存储节点中;
当存在文件读取操作时,所述分布式文件系统挂载节点将向所述分布式文件存储节点发送lookup操作;基于所述lookup操作判断目标文件是否为小文件;其中,所述小文件为文件大小小于预设文件大小阈值的文件;
若所述目标文件为小文件,则将小文件对应的文件内容作为所述lookup操作的扩展属性并返回到所述分布式文件系统挂载节点中;
提取所述lookup操作的扩展属性中的文件内容并且将所述文件内容存储到所述缓存单元中;
在所述分布式文件系统挂载节点的缓存单元中进行文件的打开、读取以及关闭操作。
可选的,所述判断目标文件是否为小文件的步骤还包括:
基于所述lookup操作,在所述分布式文件存储节点中找到目标文件并且得到目标文件的大小;
将目标文件的大小与预设的文件大小阈值进行比较,判断目标文件的大小是否小于预设的文件大小阈值;
若目标文件的大小小于预设的文件大小阈值,则目标文件为小文件;
否则,目标文件不是小文件,则按照正常数据读取操作。
可选的,所述在所述分布式文件系统挂载节点的缓存单元中进行文件的打开、读取以及关闭操作的步骤包括:
若检测到打开操作,则从分布式文件系统挂载节点向用户反馈一个匿名文件描述符;其中,所述匿名文件描述符为虚拟或者空置的文件描述符;
进一步判断是否存在读取操作,若检测到读取操作,则在所述分布式文件系统挂载节点的缓存单元中执行打开目标文件的操作。
可选的,所述将所述文件内容存储到所述缓存单元中的步骤还包括:
检测当前缓存单元中的文件数量;
判断所述文件数量是否超过预设的文件数量限制;
若是,则将所述缓存单元中访问频率最低的文件以及超过预设时效的文件清除掉。
从上面所述可以看出,本发明提供的分布式文件系统中提高小文件读取效率的方法,通过分析小文件的特点,提出利用查询操作中的扩展属性来存储待读取的目标文件并且将其返回到分布式文件系统挂载节点中,这样使得后续的文件打开读取以及关闭操作均只需要在用于与分布式文件系统挂载节点之间进行,而不需要进一步通过网络访问到分布式文件存储节点上,这样一方面大大提高了读取效率,而且基于整个过程利用网络更少,也即避免网络延迟带来的数据读取延迟,因此,本申请能够在不增加硬件成本的基础上,提高小文件的读取速率。
附图说明
图1为现有技术中的分布式文件系统中的文件读取流程图;
图2为本发明提供的分布式文件系统中提高小文件读取效率的方法一个实施例的流程示意图;
图3为本发明提供的分布式文件系统中的文件读取流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
参照图1所示,为现有技术中的分布式文件系统中的文件读取流程图。由图可知,通常一个分布式文件系统至少包括两个部分:分布式文件系统挂载节点以及分布式文件存储节点且分布式文件存储于所述分布式文件存储节点中;通常,所述分布式文件系统挂载节点对应用户端进程,而分布式文件存储节点对应磁盘管理进程。而对于储存在分布式文件系统中的文件来说,文件的读取过程至少需要经过如图所示的14个步。其中,分布式文件系统的内部调用共有8步,也即图中的lookup、lookup return、open、open return、read、read return、close、close return,8个操作,这里的8个操作都需要经过网络来回传递数据,不仅效率很低,而且容易受到网络状态限制的影响。
本申请基于上述问题,考虑到针对于文件大小很小的文件,其文件内容较小,而对于lookup操作中存在一个参数xdata,能够用来存放和扩展属性相关的键值对并返回给调用者,所以,结合上述考虑,本申请提出了在文件不大时,可以利用lookup操作的扩展属性用来直接存放目标文件内容。这样后续就不需要在分布式文件系统内部调用之间,也即网络上进行open、open return、read、read return、close、close return等操作了,这样不仅节约了数据读取的步骤,进而提高数据读取效率,而且不容易收到网络状态的影响,保证数据读取的安全有效。
需要说明的是,本申请所述分布式文件系统挂载节点既可以是用户终端设备,此时通常需要在用户设备上相应安装分布式文件系统客户端,也可以是分布式文件系统中的一个存储节点,此时不需要在用户设备上安装额外软件,而是用户通过nfs/samba等通用NAS协议访问存储位置,且nfs/samba发送过来的请求最终也会递交给存储节点上的分布式文件系统客户端进行处理。
具体的,参照图2所示,为本发明提供的分布式文件系统中提高小文件读取效率的方法一个实施例的流程示意图。由图可知,本申请所述分布式文件系统中提高小文件读取效率的方法包括:
步骤S1,在分布式文件系统挂载节点中构建缓存单元;其中,所述分布式文件系统包括分布式文件系统挂载节点以及分布式文件存储节点且分布式文件存储于所述分布式文件存储节点中;这样,可以使得后续返回的小文件存储到这里构建的缓存单元中。
步骤S2,当存在文件读取操作时,所述分布式文件系统挂载节点将向所述分布式文件存储节点发送查询(lookup)操作;基于所述lookup操作判断目标文件是否为小文件;其中,所述小文件为文件大小小于预设文件大小阈值的文件;所述预设文件大小阈值可以根据lookup操作的扩展属性进行确定,只要保证lookup操作的扩展属性能够存储小文件即可。
可选的,所述判断目标文件是否为小文件的步骤S2还包括如下步骤:
基于所述lookup操作,在所述分布式文件存储节点中找到目标文件并且得到目标文件的大小;
将目标文件的大小与预设的文件大小阈值进行比较,判断目标文件的大小是否小于预设的文件大小阈值;
若目标文件的大小小于预设的文件大小阈值,则目标文件为小文件;
否则,目标文件不是小文件,则按照正常数据读取操作。
这样,基于lookup操作最终会下发到磁盘管理进程,对应于分布式文件存储节点,因此,可以由磁盘管理进程来判断目标文件是否为小文件,如果是则进一步读取其内容并返回,该过程在一个节点内部完成无需经过网络,因此具有很好的稳定性和可靠性。
步骤S3,若所述目标文件为小文件,则将小文件对应的文件内容作为所述lookup操作的扩展属性并返回到所述分布式文件系统挂载节点中;也即可以将目标文件的文件内容存储到所述lookup操作的扩展属性中并且返回给分布式文件系统挂载节点,最后可以存储到缓存节点中。
步骤S4,提取所述lookup操作的扩展属性中的文件内容并且将所述文件内容存储到所述缓存单元中;
可选的,,所述将所述文件内容存储到所述缓存单元中的步骤还还包括:
检测当前缓存单元中的文件数量;
判断所述文件数量是否超过预设的文件数量限制;
若是,则将所述缓存单元中访问频率最低的文件以及超过预设时效的文件清除掉。
也即,通过上述设计使得所述缓存单元会维护一个数据结构,进而保存所有最近读过的小文件的内容,该数据结构中对文件数量和缓存时效做了限制,当需要缓存的文件数量超出该限制时会把最近访问频率最低的文件缓存释放,同理,超过时效的文件也会被释放。
步骤S5,在所述分布式文件系统挂载节点的缓存单元中进行文件的打开、读取以及关闭操作。这样,经过上述优化后,基于目标文件的内容存储在所述分布式文件系统挂载节点的缓存单元中,若是需要进行小文件的读取,其后续的打开、读取以及关闭操作均只需要在分布式文件系统挂载节点中实现,而不需要进一步通过网络访问分布式文件存储节点。具体参照图3所示,为本发明提供的分布式文件系统中的文件读取流程图。由图可知,数据读取过程由原来的14步精简为了8步,且减少的6步操作全部为需要通过网络传输数据的操作。本申请上述方案经测试优化后比优化前小文件的读取速度提升了60%左右。
进一步,所述在所述分布式文件系统挂载节点的缓存单元中进行文件的打开、读取以及关闭操作的步骤还包括:
若检测到打开操作,则从分布式文件系统挂载节点向用户反馈一个匿名文件描述符;其中,所述匿名文件描述符为虚拟或者空置的文件描述符;
进一步判断是否存在读取操作,若检测到读取操作,则在所述分布式文件系统挂载节点的缓存单元中执行打开目标文件的操作。
也即,基于想要读取的目标文件为小文件时,文件内容已经缓存在构建的缓存单元中,那就没有必要向分布式文件存储节点真正下发open以及close操作,其中,基于分布式文件系统中任何操作都是要经过网络最终传递给磁盘管理进程,而这里的不真正下发的含义是在客户端自己构造一个值返回,不必再通过网络到分布式文件存储节点走一圈。同样,当系统调用的open操作到来时,可以先返回一个匿名文件描述符(fd,filedescriptor);其中文件描述符为文件系统中描述已经打开的文件的一种结构体,该结构体的地址由open操作返回给用户,在关闭文件时也需要用到该结构体地址。这里所谓的匿名fd是为了区别于普通的fd,因为与其关联的open操作并没有真正下发到磁盘管理进程取回真实的数据,因此匿名fd中的部分数据值是虚构的或没有填写的。当有read操作需要发送到磁盘时才执行真正的open操作。进一步,没有真正下发open也就不需要真正close操作。通过上述open延迟设计,使得只有在需要访问磁盘数据时,才需要自行open操作,否则只需要返回一个匿名的fd即可,这样可以节约读写资源,实现文件准确有效的读取。
由上述实施例可知,本申请提供的分布式文件系统中提高小文件读取效率的方法,通过分析小文件的特点,提出利用查询操作中的扩展属性来存储待读取的目标文件并且将其返回到分布式文件系统挂载节点中,这样使得后续的文件打开读取以及关闭操作均只需要在用于与分布式文件系统挂载节点之间进行,而不需要进一步通过网络访问到分布式文件存储节点上,这样一方面大大提高了读取效率,而且基于整个过程利用网络更少,也即避免网络延迟带来的数据读取延迟,因此,本申请能够在不增加硬件成本的基础上,提高小文件的读取速率。
因此,可以得到本申请所述分布式文件系统中提高小文件读取效率的方法,(1)通过利用lookup扩展属性传回整个小文件的文件内容可以优化数据读取流程,提高效率;(2)采用延迟open技术,实现在真正需要访问磁盘数据的时候才执行open操作。也即本申请从数据读取步骤上考虑,通过优化数据访问路径来提升大量小文件的读取速度,同时不会增加额外的硬件成本。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本发明难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本发明难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本发明的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本发明的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本发明。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本发明的具体实施例对本发明进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本发明的实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本发明的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (4)

1.一种分布式文件系统中提高小文件读取效率的方法,其特征在于,包括:
在分布式文件系统挂载节点中构建缓存单元;其中,所述分布式文件系统包括分布式文件系统挂载节点以及分布式文件存储节点且分布式文件存储于所述分布式文件存储节点中;
当存在文件读取操作时,所述分布式文件系统挂载节点将向所述分布式文件存储节点发送lookup操作;基于所述lookup操作判断目标文件是否为小文件;其中,所述小文件为文件大小小于预设文件大小阈值的文件;
若所述目标文件为小文件,则将小文件对应的文件内容作为所述lookup操作的扩展属性并返回到所述分布式文件系统挂载节点中;
提取所述lookup操作的扩展属性中的文件内容并且将所述文件内容存储到所述缓存单元中;
在所述分布式文件系统挂载节点的缓存单元中进行文件的打开、读取以及关闭操作;
其中,所述lookup操作的扩展属性存放于所述lookup操作的参数xdata中。
2.根据权利要求1所述的方法,其特征在于,所述判断目标文件是否为小文件的步骤还包括:
基于所述lookup操作,在所述分布式文件存储节点中找到目标文件并且得到目标文件的大小;
将目标文件的大小与预设的文件大小阈值进行比较,判断目标文件的大小是否小于预设的文件大小阈值;
若目标文件的大小小于预设的文件大小阈值,则目标文件为小文件;
否则,目标文件不是小文件,则按照正常数据读取操作。
3.根据权利要求1所述的方法,其特征在于,所述在所述分布式文件系统挂载节点的缓存单元中进行文件的打开、读取以及关闭操作的步骤包括:
若检测到打开操作,则从分布式文件系统挂载节点向用户反馈一个匿名文件描述符;其中,所述匿名文件描述符为虚拟或者空置的文件描述符;
进一步判断是否存在读取操作,若检测到读取操作,则在所述分布式文件系统挂载节点的缓存单元中执行打开目标文件的操作。
4.根据权利要求1所述的方法,其特征在于,所述将所述文件内容存储到所述缓存单元中的步骤还包括:
检测当前缓存单元中的文件数量;
判断所述文件数量是否超过预设的文件数量限制;
若是,则将所述缓存单元中访问频率最低的文件以及超过预设时效的文件清除掉。
CN201810359241.3A 2018-04-20 2018-04-20 一种分布式文件系统中提高小文件读取效率的方法 Active CN108717420B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810359241.3A CN108717420B (zh) 2018-04-20 2018-04-20 一种分布式文件系统中提高小文件读取效率的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810359241.3A CN108717420B (zh) 2018-04-20 2018-04-20 一种分布式文件系统中提高小文件读取效率的方法

Publications (2)

Publication Number Publication Date
CN108717420A CN108717420A (zh) 2018-10-30
CN108717420B true CN108717420B (zh) 2022-04-15

Family

ID=63899244

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810359241.3A Active CN108717420B (zh) 2018-04-20 2018-04-20 一种分布式文件系统中提高小文件读取效率的方法

Country Status (1)

Country Link
CN (1) CN108717420B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112148681A (zh) * 2020-10-15 2020-12-29 南京邮电大学 一种基于分布式文件系统hdfs的小文件存取优化方法
CN114415940B (zh) * 2021-12-16 2023-08-29 航天信息股份有限公司 减少嵌入式系统存储介质读取干扰的方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103049574A (zh) * 2013-01-04 2013-04-17 中国科学院高能物理研究所 实现文件动态副本的键值文件系统及方法
CN103916465A (zh) * 2014-03-21 2014-07-09 中国科学院计算技术研究所 一种基于分布式文件系统的数据预读装置及其方法
CN104021137A (zh) * 2014-04-21 2014-09-03 中国科学院计算技术研究所 一种基于目录授权的客户端本地开闭文件的方法及系统
CN104657500A (zh) * 2015-03-12 2015-05-27 浪潮集团有限公司 一种基于key-value键值对的分布式存储方法
CN106776759A (zh) * 2016-11-17 2017-05-31 郑州云海信息技术有限公司 分布式文件系统的小文件预读方法及系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE390788T1 (de) * 1999-10-14 2008-04-15 Bluearc Uk Ltd Vorrichtung und verfahren zur hardware-ausführung oder hardware-beschleunigung von betriebssystemfunktionen
US7260576B2 (en) * 2002-11-05 2007-08-21 Sun Microsystems, Inc. Implementing a distributed file system that can use direct connections from client to disk
CN107222587B (zh) * 2017-06-29 2018-01-30 冯哲 一种远程访问私网设备的方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103049574A (zh) * 2013-01-04 2013-04-17 中国科学院高能物理研究所 实现文件动态副本的键值文件系统及方法
CN103916465A (zh) * 2014-03-21 2014-07-09 中国科学院计算技术研究所 一种基于分布式文件系统的数据预读装置及其方法
CN104021137A (zh) * 2014-04-21 2014-09-03 中国科学院计算技术研究所 一种基于目录授权的客户端本地开闭文件的方法及系统
CN104657500A (zh) * 2015-03-12 2015-05-27 浪潮集团有限公司 一种基于key-value键值对的分布式存储方法
CN106776759A (zh) * 2016-11-17 2017-05-31 郑州云海信息技术有限公司 分布式文件系统的小文件预读方法及系统

Also Published As

Publication number Publication date
CN108717420A (zh) 2018-10-30

Similar Documents

Publication Publication Date Title
CN106796547B (zh) 用于代理缓存智能对象淘汰的方法和系统
US20190172538A1 (en) Hybrid memory architectures
US20120317153A1 (en) Caching responses for scoped and non-scoped domain name system queries
CN113010818A (zh) 访问限流方法、装置、电子设备及存储介质
KR101719500B1 (ko) 캐싱된 플로우들에 기초한 가속
CN107015978B (zh) 一种网页资源处理方法以及装置
CN108717420B (zh) 一种分布式文件系统中提高小文件读取效率的方法
CN105302801A (zh) 一种资源缓存方法及装置
CN107040606B (zh) 用于处理http请求的方法与设备
US11811733B2 (en) Systems and methods for operating a networking device
CN106528451A (zh) 针对小文件的二级缓存预取的云存储框架及构建方法
CN107135242A (zh) Mongodb集群访问方法、装置及系统
CN107506154A (zh) 一种元数据的读取方法、装置及计算机可读存储介质
EP3151520B1 (en) Quarantining an internet protocol address
WO2016101748A1 (zh) 一种网络连接的缓存方法和装置
WO2023012534A1 (en) Database system with run-time query mode selection
US8694659B1 (en) Systems and methods for enhancing domain-name-server responses
CN115982091B (zh) 基于rdma引擎的数据处理方法与系统、介质、设备
CN103746926A (zh) 一种局域网加速装置及局域网加速系统
CN107707373A (zh) 一种基于api请求的动态资源访问加速方法
CN113329035B (zh) 一种攻击域名的检测方法、装置、电子设备及存储介质
CN114884883B (zh) 一种流量转发方法、装置、设备及存储介质
CN110781500A (zh) 一种数据风控系统以及方法
CN113342275B (zh) 区块链节点存取数据的方法、设备和计算机可读存储介质
CN105939315A (zh) 一种http攻击防护方法及装置

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