一种文件存储的方法及装置与流程

文档序号:11620710阅读:220来源:国知局
一种文件存储的方法及装置与流程

本发明涉及文件系统领域,特别是涉及一种文件存储的方法及装置。



背景技术:

随着文件系统技术的发展,分布式存储文件系统的应用也越来越广泛。

分布式存储文件系统中,为了应对海量小文件存储场景,一般将小文件聚合写入磁盘中,以减少写入磁盘的次数,提高文件写性能。但是,当文件只是较大,以或者是数量不多时,就没有必要再利用文件聚合写功能来实现文件存储。

当文件较大或者数量较少时,利用小文件聚合写功能会使得底层集群的写入压力较大。



技术实现要素:

本发明的目的是提供一种文件存储的方法及装置,目的在于解决现有技术中文件较大且数量较少时,利用小文件聚合写功能会使得底层集群的写入压力较大的问题。

为解决上述技术问题,本发明提供一种文件存储的方法,该方法包括:

检测待存储文件的目录属性,判断所述目录属性是否为预先根据应用场景设定的聚合属性;

若是,开启文件聚合写功能,将所述待存储文件存储至聚合文件,当所述聚合文件内的obj对象的剩余存储空间等于或小于预设容量时,将所述obj对象内的多个所述待存储文件批量写入磁盘,所述聚合文件包含多个obj对象;

若否,将所述待存储文件写入磁盘。

可选地,在所述检测待存储文件的目录属性,判断所述目录属性是否为预先根据应用场景设定的聚合属性之前还包括:

接收设置指令;

根据所述设置指令,将当前文件扩展属性内的字段值设为预设数值,以将所述当前文件的目录属性设为聚合属性。

可选地,所述检测待存储文件的目录属性,判断所述目录属性是否为预先根据应用场景设定的聚合属性包括:

判断所述待存储文件的所述字段值是否为所述预设数值;

若是,确定所述待存储文件的所述目录属性为所述聚合属性;

若否,确定所述待存储文件的所述目录属性为非聚合属性。

此外,本发明还提供了一种文件存储的装置,该装置包括:

判断模块,用于检测待存储文件的目录属性,判断所述目录属性是否为预先根据应用场景设定的聚合属性;

聚合写模块,用于若是,开启文件聚合写功能,将所述待存储文件存储至聚合文件,当所述聚合文件内的obj对象的剩余存储空间等于或小于预设容量时,将所述obj对象内的多个所述待存储文件批量写入磁盘,所述聚合文件包含多个obj对象;

非聚合写模块,用于若否,将所述待存储文件写入磁盘。

可选地,还包括:

接收模块,用于接收设置指令;

数值设置模块,用于根据所述设置指令,将当前文件扩展属性内的字段值设为预设数值,以将所述当前文件的目录属性设为聚合属性。

可选地,所述判断模块包括:

数值判断单元,用于判断所述待存储文件的所述字段值是否为所述预设数值;

第一确定单元,用于若是,确定所述待存储文件的所述目录属性为所述聚合属性;

第二确定单元,用于若否,确定所述待存储文件的所述目录属性为非聚合属性。

本发明所提供的一种文件存储的方法及装置,通过检测待存储文件的目录属性,判断目录属性是否为预先根据应用场景设定的聚合属性;若是,开启文件聚合写功能,将待存储文件存储至聚合文件,当聚合文件内的obj对象的剩余存储空间等于或小于预设容量时,将obj对象内的多个所述待存储文件批量写入磁盘,聚合文件包含多个obj对象;若否,将待存储文件写入磁盘。本申请通过判断目录属性是否为聚合属性,来确定当前文件是文件聚合写,还是普通的非聚合写,实现根据场景不同,预先设定目录属性,选择性开启或关闭文件聚合写功能,以减少底层集群的写入压力。

附图说明

为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例所提供的文件存储方法的一种具体实施方式的流程示意图;

图2为本发明实施例所提供的文件存储装置的结构框图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参见图1,图1为本发明实施例所提供的文件存储方法的一种具体实施方式的流程示意图,该方法包括以下步骤:

步骤101:检测待存储文件的目录属性,判断所述目录属性是否为预先根据应用场景设定的聚合属性。

需要说明的是,上述待存储文件可以是指小文件,也可以是指大文件。上述应用场景可以是指海量小文件存储场景以及文件较大且数量较少存储场景中的一个。

上述目录属性可以是指文件的目录是否为聚合目录。具体地,可以通过文件的扩展属性内的相应字段来设置该文件的目录是否聚合目录,即设置字段的数字,来设置当前目录是否为聚合目录。将目录设为聚合目录之后,该文件则可以按照文件聚合写流程存储,而目录为普通目录的文件则可以按照普通文件存储流程进行存储。

具体地,运行处理函数,处理函数检测当前待存储文件的目录属性,判断其是否为聚合目录。

可以理解的是,将目录设定为聚合目录之后,在该聚合目录创建的子目录也是聚合目录。

文件目录的属性可以预先由用户设定,具体可以通过设置字段数值来设置。

作为一种具体实施方式,在上述检测待存储文件的目录属性,判断所述目录属性是否为预先根据应用场景设定的聚合属性之前还可以包括:接收设置指令;根据所述设置指令,将当前文件扩展属性内的字段值设为预设数值,以将所述当前文件的目录属性设为聚合属性。

需要说明的是,上述设置指令可以是用户的设置指令,即用户可以指定特定目录是否为聚合目录,即指定当前待存储文件是文件聚合写入磁盘,还是非聚合写入磁盘中。

上述预设数值可以具体表现为0或1,例如,即可以将文件扩展属性内的特定字段的值设为0,表示屏蔽聚合写功能,设为1时,表示开启文件聚合写功能。具体地,可以将小文件的目录设置为聚合属性,而大文件设置为非聚合属性。

将字段值设置好之后,即设置好文件的目录属性之后,检测时可以检测字段值为多少,进而判断文件的目录属性是什么。

作为一种具体实施方式,上述检测待存储文件的目录属性,判断所述目录属性是否为预先根据应用场景设定的聚合属性的过程可以具体为:判断所述待存储文件的所述字段值是否为所述预设数值;若是,确定所述待存储文件的所述目录属性为所述聚合属性;若否,确定所述待存储文件的所述目录属性为非聚合属性。

具体地,处理函数可以检测当前文件的字段数值是否为1,若为1,则判断当前文件的目录属性为聚合属性,若为0,则判断当前文件的目录属性为非聚合属性。

步骤102:若是,开启文件聚合写功能,将所述待存储文件存储至聚合文件,当所述聚合文件内的obj对象的剩余存储空间等于或小于预设容量时,将所述obj对象内的多个所述待存储文件批量写入磁盘,所述聚合文件包含多个obj对象。

需要说明的是,上述聚合文件可以包括多个obj对象,且每个obj对象内可以存储多个小文件,此时,聚合文件可以有n个obj对象,每个obj对象可以存储m个源文件。且上述obj对象的存储空间是固定的,例如为4mb。

上述预设容量可以是0,也可以是其它数值,在此不再限定。具体地,当obj对象在被写满或将近被写满时,可以将该obj对象内的所有待更新源文件统一写入至磁盘,即批量写入磁盘,实现批量更新源文件的目的。

步骤103:若否,将所述待存储文件写入磁盘。

具体地,当文件目录属性为非聚合属性,则将待存储文件按照普通存储流程进行存储。具体地,将待存储文件存储至obj对象内,然后再将obj对象内的文件写入磁盘中,而不用等到obj对象存满之后再写。

本发明实施例所提供的文件存储方法,通过检测待存储文件的目录属性,判断目录属性是否为预先根据应用场景设定的聚合属性;若是,开启文件聚合写功能,将待存储文件存储至聚合文件,当聚合文件内的obj对象的剩余存储空间等于或小于预设容量时,将obj对象内的多个所述待存储文件批量写入磁盘,聚合文件包含多个obj对象;若否,将待存储文件写入磁盘。该方法通过判断目录属性是否为聚合属性,来确定当前文件是文件聚合写,还是普通的非聚合写,实现根据场景不同,预先设定目录属性,选择性开启或关闭文件聚合写功能,以减少底层集群的写入压力。

下面对本发明实施例提供的文件存储装置进行介绍,下文描述的文件存储装置与上文描述的文件存储方法可相互对应参照。

图2为本发明实施例所提供的文件存储装置的结构框图,参照图2文件存储装置可以包括:

判断模块21,用于检测待存储文件的目录属性,判断目录属性是否为预先根据应用场景设定的聚合属性;

聚合写模块22,用于若是,开启文件聚合写功能,将待存储文件存储至聚合文件,当聚合文件内的obj对象的剩余存储空间等于或小于预设容量时,将obj对象内的多个待存储文件批量写入磁盘,聚合文件包含多个obj对象;

非聚合写模块23,用于若否,将待存储文件写入磁盘。

可选地,还包括:

接收模块,用于接收设置指令;

数值设置模块,用于根据设置指令,将当前文件扩展属性内的字段值设为预设数值,以将当前文件的目录属性设为聚合属性。

可选地,上述判断模块包括:

数值判断单元,用于判断待存储文件的字段值是否为预设数值;

第一确定单元,用于若是,确定待存储文件的目录属性为聚合属性;

第二确定单元,用于若否,确定待存储文件的目录属性为非聚合属性。

本发明实施例所提供的文件存储装置,通过检测待存储文件的目录属性,判断目录属性是否为预先根据应用场景设定的聚合属性;若是,开启文件聚合写功能,将待存储文件存储至聚合文件,当聚合文件内的obj对象的剩余存储空间等于或小于预设容量时,将obj对象内的多个所述待存储文件批量写入磁盘,聚合文件包含多个obj对象;若否,将待存储文件写入磁盘。该装置通过判断目录属性是否为聚合属性,来确定当前文件是文件聚合写,还是普通的非聚合写,实现根据场景不同,预先设定目录属性,选择性开启或关闭文件聚合写功能,以减少底层集群的写入压力。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的文件存储的方法及装置进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1