CN110109886B - 分布式文件系统的文件存储方法及分布式文件系统 - Google Patents
分布式文件系统的文件存储方法及分布式文件系统 Download PDFInfo
- Publication number
- CN110109886B CN110109886B CN201810103081.6A CN201810103081A CN110109886B CN 110109886 B CN110109886 B CN 110109886B CN 201810103081 A CN201810103081 A CN 201810103081A CN 110109886 B CN110109886 B CN 110109886B
- Authority
- CN
- China
- Prior art keywords
- storage area
- file
- written
- storage
- data
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- 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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种分布式文件系统的文件存储方法、分布式文件系统、计算机可读存储介质,该方法包括:将单个磁盘划分成多个存储区域;获取待写文件数据;根据当前的策略类型获取对应的存储区域;将所述待写文件数据写入所述对应的存储区域。本发明在存储阶段就尽可能的做到按当前策略对文件进程存储,减少磁盘小碎片的产生,实现了文件存储的聚合,优化了对磁盘空间的管理和分配,提升了磁盘读写性能。
Description
技术领域
本发明涉及云存储领域,尤其涉及一种分布式文件系统的文件存储方法、及分布式文件系统。
背景技术
云存储是通过集群应用、网格技术、分布式文件系统等,将网络中大量类型各异的存储设备整合起来,并对外提供数据存储和业务访问功能的系统。云存储系统具有良好的可扩展性、容错性,以及内部实现对用户透明等特性。分布式文件系统屏蔽了底层文件系统之间的差异,提供了统一的访问接口和资源管理,为云存储提供有力的支撑。
文件存储时被切割成很多碎片存储在磁盘上的,碎片越多,磁盘的机械摇臂来回寻址的次数越多,文件的读写效率越低。磁盘使用时间越长其产生的磁盘碎片越多,严重影响磁盘的读写性能。另外随着磁盘使用时间的增加,磁盘小碎片就会越积越多就无法更有效的被分配使用,造成磁盘存储空间的浪费。
因此,文件如何进行存储才能提高读写性能仍是亟待解决的问题。
发明内容
有鉴于此,本发明的目的在于提供一种分布式文件系统的文件存储方法、分布式文件系统及计算机可读存储介质,以优化了对磁盘空间的管理和分配,提升了磁盘读写性能。
本发明解决上述技术问题所采用的技术方案如下:
根据本发明的一个方面,提供一种分布式文件系统的文件存储方法,包括:
获取待写文件数据;
根据当前的策略类型获取对应的存储区域;所述策略类型包括根据待写文件大小的文件策略、根据待写文件所属目录的目录策略或根据待写文件所属用户的用户策略;
将所述待写文件数据写入所述对应的存储区域。
在一个可能的设计中,在所述当前的策略类型为文件策略的情况下,当所述待写文件数据为未有存储的新数据时,所述根据当前的策略类型获取对应的存储区域包括:
判断是否有未写入文件数据的存储区域;若否,则
根据所述待写文件数据的文件大小获取对应的存储区域。
在一个可能的设计中,所述根据所述待写文件数据的文件大小获取对应的存储区域包括:
判断所述待写文件数据的文件大小是否大于预设阈值;
若是,则判定所述待写文件数据为大文件,并将已存有大文件的存储区域作为所述待写文件数据对应的存储区域;
若否,判定所述待写文件数据为小文件,并将已存有小文件的存储区域作为所述待写文件数据对应的存储区域。
在一个可能的设计中,当所述待写文件数据为某一已写入文件的文件碎片时,所述根据当前的策略类型获取对应的存储区域包括:
判断所述已写入文件所处的存储区域是否已满;若否,则
将所述已写入文件所处的存储区域作为所述待写文件数据对应的存储区域。
在一个可能的设计中,在所述当前的策略类型为目录策略的情况下,所述根据当前的策略类型获取对应的存储区域包括:
获取所述待写文件数据的目录名;
判断处于使用状态的存储区域中是否存在标识列表中包含所述目录名的存储区域,若是,则
将标识列表中包含所述目录名的存储区域作为所述待写文件数据对应的存储区域。
在一个可能的设计中,在所述当前的策略类型为用户策略的情况下,所述根据当前的策略类型获取对应的存储区域包括:
获取所述待写文件数据的用户名;
判断处于使用状态的存储区域中是否存在标识列表中包含所述用户名的存储区域,若是,则
将标识列表中包含所述用户名的存储区域作为所述待写文件数据对应的存储区域。
在一个可能的设计中,所述在所述存储区域上写入所述文件数据并在数据库中更新所述存储区域的属性信息之后,包括:
获取状态为using的存储区域;
判断所述状态为using的存储区域已使用的存储空间是否小于聚合阈值;
若是,则将所述状态为using的存储区域记为子聚合存储区域;
将至少两个所述子聚合存储区域进行聚合到其中一个所述子聚合存储区域中,得到聚合存储区域。
在一个可能的设计中,所述将所述子聚合存储区域进行聚合到其中一个所述子聚合存储区域中,得到聚合存储区域后,包括:
更新已聚合的聚合存储区域的文件列表信息或目录标识或用户标识。
根据本发明的另一个方面,提供一种分布式文件系统,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现本发明实施例提供的分布式文件系统的文件存储方法的步骤。
根据本发明的另一个方面,提供一种计算机可读存储介质,所述计算机可读存储介质上存储有文件存储程序,所述文件存储程序被处理器执行时实现本发明实施例提供的分布式文件系统的文件存储方法的步骤。
本发明实施例的分布式文件系统的文件存储方法、分布式文件系统、计算机可读存储介质,在存储阶段就尽可能的做到大小文件存储单元分别连续存储,减少磁盘小碎片的产生,实现了文件存储的聚合,优化了对磁盘空间的管理和分配,提升了磁盘读写性能。
附图说明
图1为本发明实施例的一种分布式文件系统的文件存储方法的流程示意图;
图2为本发明另一实施例的分布式文件系统的文件存储方法的流程示意图;
图3为本发明另一实施例的分布式文件系统的文件存储方法的流程示意图;
图4为本发明另一实施例的分布式文件系统的文件存储方法的流程示意图;
图5为本发明另一实施例的分布式文件系统的文件存储方法的流程示意图;
图6为本发明另一实施例的分布式文件系统的文件存储方法的流程示意图;
图7为本发明另一实施例的分布式文件系统的文件存储方法的流程示意图;
图8为本发明实施例的聚合存储区域的示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,本发明提供一种分布式文件系统的文件存储方法,包括以下步骤:
101、开始。
将单个磁盘划分成多个存储区域。更具体地,将磁盘作为一个存储池,分成多个用于存储文件数据的存储区域,一般地,存储区域的存储空间大小是可配的,默认为1G,如此,目前主流的单个磁盘就会分成数千个存储区域。
102、获取待写文件数据。
103、根据当前的策略类型获取对应的存储区域。
当前的策略类型可以包括根据文件大小制定的文件策略、根据目录名称制定的目录策略或根据用户名称制定用户策略。其中,文件策略是指文件根据大小在存储池内分类存储;目录策略是指相同目录下的所有文件存储在同一存储区域内;用户策略是指同一用户的所有文件存储在同一个存储区域内。
104、将所述待写文件数据写入所述对应的存储区域;
105、结束。
一般地,还需要在所述存储区域上写入所述文件数据并在数据库中更新所述存储区域的属性信息。
本发明中所述的存储区域的属性信息可以包括但不限于:存储区域序列号、存储区域地址、存储区域写指针、写入的文件列表、存储区域大小文件标识、存储区域策略类型标识、存储区域的目录标识、存储区域的用户标识、存储区域状态标识。
其中,存储区域序列号用于标识和区分不同的存储区域。存储区域地址用于记录本存储区域所在磁盘位置。存储区域写指针用于记录本存储区域当前写入位置。写入的文件列表用于记录写入本存储区域的文件列表。存储区域大小文件标识用于标识本存储区域存储的是大文件还是小文件。存储区域策略类型标识用于标识本存储区域的策略类型。存储区域的目录标识用于标识本存储区域所属的目录目录策略使用。存储区域的用户标识用于标识本存储区域所属的useruser策略使用。存储区域状态标识用于标识本存储区域的存储状态。
上述存储区域状态包含三种free、using、full。存储区域的free状态是指本存储区域为空,还未曾写入过数据;存储区域的using状态是指存储区域已经写入了数据,使用中;存储区域full状态说明此存储区域数据已经写满,不能再申请写入数据。
一般地,存储区域的属性存储在数据库中,当存储区域属性变化时更新数据库记录,在存储区域有数据读写时会去数据库获取这些属性信息。
在图1对应的实施例的基础上,在所述当前的策略类型为文件策略的情况下,则在执行步骤103,即所述根据当前的策略类型获取对应的存储区域时,如图2所示,包括:
201、开始。
由于在文件策略下大文件和小文件会被存储到不同的存储区域里,因此,可以先对存储池内的存储区域创建两个队列,大文件存储区域队列和小文件存储区域队列,分别用于大文件和小文件的写盘。
202、查询所述待写文件数据是否已有存储;若是,则进入步骤203;若否,则进入步骤205;
203、判断已有存储的存储区域的存储空间是否足够;若是,则进入步骤204;若否,则进入步骤205;
204、将已有存储的储存区域作为所述待写文件数据的对应存储区域;并进入步骤210。
例如,一块磁盘(一个存储池)包含1000个存储区域,第一次存储有500个不同文件的数据,依次存储到前500个存储区域并更新存储区域大小文件标识等信息,第二次若再写500个不同文件的数据,则要先查询文件是否已有存储。如此,可以保证同一文件只存储到同一存储区域中。
205、查询是否还有未写入文件数据的存储区域即状态位free的存储区域;若是,则进入步骤206;若否,则进入步骤207;
206、将所述未写入文件数据的存储区域作为所述待写文件数据对应的存储区域;并进入步骤210。
例如,一块磁盘(一个存储池)包含1000个存储区域,前500个存储区域已经存储了文件数据,且此次的待写入文件数据未有存储或已有存储的存储区域满了,则会从上次申请的最后一个存储区域之后的一个开始存储,即从第501个存储区域开始存储。
207、获取所述待写文件数据的文件大小并判断是否大于预设阈值;若是,则进入步骤208;若否,则进入步骤210。
若没有未写入文件数据的存储区域,则表示本存储池所有的存储区域都均匀的存有不同的文件,此时,再次从存储池的头部第一个存储区域开始按照不同的大小文件标识来存后续的新写文件数据。
208、判定所述待写文件数据为大文件,并将已存有大文件的存储区域作为所述待写文件数据对应的存储区域。并进入步骤210。
209、判定所述待写文件数据为小文件,并将已存有小文件的存储区域作为所述待写文件数据对应的存储区域。
210、结束。
本实施例中,若一块磁盘包含1000个存储区域,第一次存储有500个不同文件的数据,依次存储到前500个存储区域并更新存储区域大小文件标识等信息,第二次比如再写500个不同文件的数据,先查询文件是否已有存储,保证同一文件只存储到同一存储区域中(除非已写满),如果第二次写的文件中存在未有存储的新数据,则会从上次申请的最后一个存储区域之后的一个开始存储(即从第501个存储区域开始存储),依次存储下去,直到本存储池所有的存储区域都均匀的存有不同的文件,然后再次从存储池的头部第一个存储区域开始按照不同的大小文件标识来存后续的新写文件数据。尽可能的把不同的文件写到不同的存储区域中,实现尽可能的文件聚合之目的。
如果文件大小小于预设阈值则判定是小文件,否则是大文件。大文件和小文件分开存储在不同的存储区域,即对于任一存储区域,存储的内容只能全部是大文件或者全部是小文件。存储区域使用存储区域大小文件标识来区分,小文件与大文件分开存储,实现了大小文件的分类聚合,可以更有效的减少文件碎片,降低磁盘磁头的来回寻址次数,提升系统数据的吞吐量。
可见,当所述待写文件数据为未有存储的新数据时,优先存入未写入文件数据的存储区域即状态为free的存储区域。若没有状态为free的存储区域,则根据所述待写文件数据的文件大小获取对应的存储区域。
在图1对应的实施例的基础上,在所述当前的策略类型为文件策略的情况下,在执行步骤103,即所述根据当前的策略类型获取对应的存储区域时,如图3所示,
301、开始。
对存储池内的存储区域创建两个队列,大文件存储区域队列和小文件存储区域队列,分别用于大文件和小文件的写盘。
302、判断所述文件名是否在状态为using的存储区域的文件列表中存在,若是,则进入步骤304;若否,则进入步骤303。
在具体实施时,可以根据待写文件数据的文件名在数据库中进行查询。当所述文件名不在状态为using的存储区域的文件列表中存在时,说明待写文件数据为新写或者对应的存储区域已写满,状态为full,需要重新申请新的存储区域
303、确定待写文件数据对应的存储区域大小文件标识类型。
在具体实施时,可以通过判断待写文件数据的大小是否大于预设阈值,若是,则其对应的储区域大小文件标识类型为大文件,否则,对应的储区域大小文件标识类型为小文件。
304、确定待写文件数据对应的存储区域。
更具体地,若状态为using的存储区域的文件列表中存在待写文件数据的文件名,则该状态为using的存储区域为待写文件数据对应的存储区域;否则,从状态为free的存储区域中申请一个,如果申请成功就把此存储区域的大小文件标识更新到数据库。在本发明的另一实施例中,也可以根据存储区域大小文件标识类型从对应的存储区域队列的头部获取存储区域的地址,并把此存储区域放到队列的尾部。
305、对应的存储区域上报本次将写入的数据大小给数据库。
数据库及时更新存储区域写指针,判断存储区域剩余空间是否还够下次数据写入,如果已满更新存储区域状态标识等信息,同时存储区域开始写入数据。
306、判断本次数据是否全部写完,若是,则进入步骤307;若否,则返回步骤302。
307、结束。
在图1对应的实施例的基础上,在所述当前的策略类型为目录策略的情况下,则在执行步骤103,即所述根据当前的策略类型获取对应的存储区域时,如图4所示,包括:
401、开始。
402、获取所述待写文件数据的目录名。
403、判断处于使用状态的存储区域中是否存在标识列表中包含所述目录名的存储区域,若是,则进入步骤404;若否,则进入步骤405。
本发明中处于使用状态的存储区域就是状态为using的存储区域,即查询此目录名已经存在于存储区域的目录标识列表中并且此存储区域状态为using,如果有说明此目录存在可写的存储区域,如果没有说明此目录没有可写的存储区域,原因有两个,一个是此目录本次第一次数据写盘,另一个是此目录原先有写盘但是对应的存储区域均已写满,状态为full。
404、将标识列表中包含所述目录名的存储区域作为所述待写文件数据对应的存储区域。完成步骤404后,进入步骤406。
405、将状态为free的存储区域作为所述待写文件数据对应的存储区域。
即从状态为free的存储区域中申请一个,如果申请成功就把此存储区域的目录名标识更新到数据库。
406、结束。
可见,目录策略把同一目录下的所有文件的文件碎片统一存储到单个或者有限数个存储区域内,实现了文件的批量聚合,对于单目录下文件的连续访问尤其适用。
在图4对应的实施例的基础上,在步骤405之后,步骤406之前还包括:
对应的存储区域上报本次将写入的数据大小给数据库,数据库及时更新存储区域写指针,判断存储区域剩余空间是否还够下次数据写入,如果已满更新存储区域状态标识等信息,同时存储区域开始写入数据。
判断本次数据是否全部写完,如果还有待写数据,重新执行步骤402;如果没有就进入步骤406。
在图1对应的实施例的基础上在所述当前的策略类型为用户策略的情况下,则在执行步骤103,即所述根据当前的策略类型获取对应的存储区域时,如图5所示,包括:
501、开始。
502、获取所述待写文件数据的用户名。
503、判断处于使用状态的存储区域中是否存在标识列表中包含所述用户名的存储区域,若是,则进入步骤504;若否,则进入步骤505。
即查询此用户名已经存在于存储区域的用户标识列表中并且此存储区域状态为using,如果有说明此用户存在可写的存储区域,如果没有说明此用户没有可写的存储区域,原因有两个,一个是此用户本次第一次数据写盘,另一个是此用户原先有写盘但是对应的存储区域均已写满,状态为full。
504、将标识列表中包含所述用户名的存储区域作为所述待写文件数据对应的存储区域。完成步骤504后,进入步骤506。
505、将状态为free的存储区域作为所述待写文件数据对应的存储区域。
即从状态为free的存储区域中申请一个,如果申请成功就把此存储区域的用户标识更新到数据库。
506、结束。
本实施例中,根据不同的用户user,把其对应的文件分类存储到不同的存储区域内。即一个存储区域只保存其所属的user的文件数据。
在具体实施时,存储区域的用户标识确定办法为:当有新user A申请文件写盘时,会申请一个状态为free的存储区域用于存储文件数据,如果申请成功,就标识此存储区域所属的user为A,存储区域的状态为using,并存储到数据库。当user A后续写盘时会先查询数据库是否已经存在存储区域的用户标识为A的并且状态为using的存储区域,如果查询到就选择此存储区域并写盘,如果查询不到就重新申请新的存储区域。
在图5对应的实施例的基础上,在步骤505之后,步骤506之前还包括:
对应的存储区域上报本次将写入的数据大小给数据库,数据库及时更新存储区域写指针,判断存储区域剩余空间是否还够下次数据写入,如果已满更新存储区域状态标识等信息,同时存储区域开始写入数据。
判断本次数据是否全部写完,如果还有待写数据,重新执行步骤502;如果没有就进入步骤506。
在本发明的一个实施例中,当有文件开始请求写盘时,申请一个存储区域,如果选中的存储区域状态为free就修改状态为using,然后把存储区域状态、文件名、根据文件大小和阈值计算出来的大小文件标识、本次文件写盘的数据量大小等信息上报给数据库,数据库接收到信息后更新保存的信息。
当有文件后续请求写盘时,根据文件名查询数据库,此文件名是否已存在于某存储区域的列表内,如果存在,说明此文件之前已经在此存储区域写过数据,就选择此存储区域继续写盘,然后更新数据库的存储区域写指针等信息。
为了降低文件碎片的离散度,在上述任一实施例的基础上,在结束步骤之后,还可以进行存储区域聚合,如图6所示,包括:
601、开始。
602、获取状态为using的存储区域。
603、判断所述状态为using的存储区域已使用的存储空间是否小于聚合阈值;若是,则进入步骤604;若否,则进入步骤606。
该聚合阈值包括存储区域阈值以及保持时间阈值,如果某一存储区域E使用率未达到存储区域阈值,并且在保持时间阈值T内没有数据变化,则判定存储区域E小于聚合阈值。
604、将所述状态为using的存储区域记为子聚合存储区域。
605、将至少两个所述子聚合存储区域进行聚合到其中一个所述子聚合存储区域中,得到聚合存储区域。
若将存储区域E内的数据聚合到本存储池的其他存储区域F中去,则还有设置此迁移后的存储区域E为free。
606、结束。
在结束之前,可以更新已聚合的聚合存储区域的文件列表信息或目录标识或用户标识。
图6所示的存储区域聚合,其对象为本存储池内状态为using的存储区域,状态为full的存储区域是已经存储满了不需要再聚合,状态为free的存储区域说明还未存储过数据是空的也不需要聚合数据;存储区域聚合的基本方法为,从存储池的底部向存储池顶部逐个获取状态为using的存储区域,然后再从存储池的顶部向存储池底部逐个判断,把符合条件的存储区域进行聚合。
需要说明的是,本实施例中,存储池中的存储区域从存储池顶部向下依次编号并记录为存储区域序列号,用于标识不同的存储区域,存储区域序列号在存储池初始化时就完成,并把信息更新到数据库。给存储池内状态为using的存储区域创建两条链表,一条是从存储池底部向上排序,记为链表L1,一条是从存储池顶部向下排序,记为L2。
以文件策略的存储区域聚合为例,如图7所示,包括:
701、开始。
702、从存储池的底部开始获取一个状态为using的存储区域,即获取链表L1的第一个元素;
703、计算该存储区域已经使用的存储空间大小是否小于聚合阈值;若是,则进入步骤705;若否,则进入步骤704。
704、获取链表L1的下一个元素,即向上获取下一个状态为using的存储区域,如果获取到了执行步骤703,如果获取不到说明没有需要聚合的存储区域了,退出,即如步骤811所示,结束;
705、记此存储区域为A,对应存储区域序列号为SN1,已使用空间大小为K1;
706、从存储池的顶部开始获取一个状态为using的存储区域,即获取链表L2的第一个元素;
707、判断此存储区域的序列号是否大于等于SN1,如果是说明已经没有可以用于聚合存储区域A的存储区域了,执行步骤704;如果此存储区域的序列号小于SN1,执行步骤708;
708、计算此存储区域的剩余空间大小是否大于K1,如果否说明此存储区域的剩余空间不足以保存存储区域A中的数据,忽略,执行步骤709;如果是记此存储区域为B,执行步骤810;
709、获取链表L2的下一个元素,记向下获取下一个状态为us i ng的存储区域,执行步骤707;
710、把存储区域A中的数据迁移到存储区域B,更新存储区域B的文件列表,存储区域写指针等信息,然后删除掉存储区域A的数据,设置存储区域A状态为free,把变更的信息更新到数据库。执行步骤704;
711、结束。
以图8为例,共有M个存储区域,若存储区域1内有data1;存储区域2内有data2;存储区域3内有data3;存储区域K内有datak;存储区域1、2、3、K均为可以聚合的子聚合存储区域,采用图8所示的方法,其得到的聚合区域为存储区域1,该存储区域1内依次存储有data1、datak、data2。
目录策略和用户策略的聚合步骤与文件策略的存储区域聚合实施步骤基本一致,不同的就是在把存储区域A中的数据迁移到存储区域B之后,需要多更新存储区域B的目录标识或者用户标识,即把存储区域A的目录标识或者用户标识添加到存储区域B上,存储区域B对应两个或者多个目录标识或者用户标识,把变更的信息更新到数据库。
可见,本实施例中,在实现存储区域聚合时,计算本存储区域A的已使用空间大小,从本存储池头部开始查找状态为using并且剩余存储空间大于本存储区域已使用空间的存储区域作为聚合目的存储区域B。聚合完成后,更新目的存储区域B的文件名列表等信息。对于采用的目录策略存储方式,需要把存储区域A的目录标识添加到存储区域B的目录标识中,以实现原先存储区域A对应的目录下的文件操作可以正常迁移到存储区域B中进行。同样的,对于采用的user策略存储方式,需要把存储区域A的user目录标识添加到存储区域B的用户标识中,以实现原先的存储区域A对应的user的文件操作可以正常迁移到存储区域B中进行。
此外,本发明实施例还提供一种分布式文件系统,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现本发明实施例提供的分布式文件系统的文件存储方法的步骤。
需要说明的是,上述分布式文件系统实施例与方法实施例属于同一构思,其具体实现过程详见方法实施例,且方法实施例中的技术特征在分布式文件系统实施例中均对应适用,这里不再赘述。
另外,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有文件存储程序,所述文件存储程序被处理器执行时实现本发明实施例提供的分布式文件系统的文件存储方法的步骤。
需要说明的是,上述计算机可读存储介质上的文件存储程序实施例与方法实施例属于同一构思,其具体实现过程详见方法实施例,且方法实施例中的技术特征在上述计算机可读存储介质的实施例中均对应适用,这里不再赘述。
本发明提供一种分布式文件系统的文件存储方法、分布式文件系统及计算机可读存储介质,在存储阶段就尽可能的做到按当前策略对文件进程存储,减少磁盘小碎片的产生,实现了文件存储的聚合,优化了对磁盘空间的管理和分配,提升了磁盘读写性能。
本发明通过设置同一文件的数据存储在同一个存储区域的方法,有效的减少了文件碎片分布的离散度,实现了一定程度上的文件聚合,提升了文件访问的吞吐量。
本发明将大文件和小文件分别存储到不同的存储区域内,实现了大小文件的分类聚合,可以更有效的减少文件碎片,降低磁盘磁头的来回寻址次数,提升系统数据的吞吐量。
本发明把同一目录下的所有文件的文件碎片统一存储到单个或者有限数个存储区域内,实现了文件的批量聚合,对于单目录下文件的连续访问尤其适用。
本发明把同一用户user的所有文件的文件碎片统一存储到单个或者有限数个存储区域内,实现了文件的批量聚合,对于某user在一时间段内大量的磁盘访问情况具有更高的磁盘IO和数据吞吐量。
本发明在一段时间T内写入磁盘的数据量较小的时候,文件碎片的分布还是较为离散,可以通过聚合方式把存储池内两个或者多个存储区域的文件碎片聚合到一个存储区域里,可有效的降低文件碎片的离散度,也可优化磁盘的空间管理和再次分配。
以上参照附图说明了本发明的优选实施例,并非因此局限本发明的权利范围。本领域技术人员不脱离本发明的范围和实质,可以有多种变型方案实现本发明,比如作为一个实施例的特征可用于另一实施例而得到又一实施例。凡在运用本发明的技术构思之内所作的任何修改、等同替换和改进,均应在本发明的权利范围之内。
Claims (8)
1.一种分布式文件系统的文件存储方法,其特征在于,包括:
获取待写文件数据;
根据当前的策略类型获取对应的存储区域;所述策略类型包括根据待写文件大小的文件策略、根据待写文件所属目录的目录策略或根据待写文件所属用户的用户策略;
将所述待写文件数据写入所述对应的存储区域;
其中,在所述当前的策略类型为目录策略的情况下,所述根据当前的策略类型获取对应的存储区域包括:获取所述待写文件数据的目录名;判断处于使用状态的存储区域中是否存在标识列表中包含所述目录名的存储区域,若是,则将标识列表中包含所述目录名的存储区域作为所述待写文件数据对应的存储区域;
其中,在所述当前的策略类型为用户策略的情况下,所述根据当前的策略类型获取对应的存储区域包括:获取所述待写文件数据的用户名;判断处于使用状态的存储区域中是否存在标识列表中包含所述用户名的存储区域,若是,则将标识列表中包含所述用户名的存储区域作为所述待写文件数据对应的存储区域。
2.根据权利要求1所述的方法,其特征在于,在所述当前的策略类型为文件策略的情况下,当所述待写文件数据为未有存储的新数据时,所述根据当前的策略类型获取对应的存储区域包括:
判断是否有未写入文件数据的存储区域;若否,则
根据所述待写文件数据的文件大小获取对应的存储区域。
3.根据权利要求2所述的方法,其特征在于,所述根据所述待写文件数据的文件大小获取对应的存储区域包括:
判断所述待写文件数据的文件大小是否大于预设阈值;
若是,则判定所述待写文件数据为大文件,并将已存有大文件的存储区域作为所述待写文件数据对应的存储区域;
若否,判定所述待写文件数据为小文件,并将已存有小文件的存储区域作为所述待写文件数据对应的存储区域。
4.根据权利要求1所述的分布式文件系统的文件存储方法,其特征在于,当所述待写文件数据为某一已写入文件的文件碎片时,所述根据当前的策略类型获取对应的存储区域包括:
判断所述已写入文件所处的存储区域是否已满;若否,则
将所述已写入文件所处的存储区域作为所述待写文件数据对应的存储区域。
5.根据权利要求1所述的分布式文件系统的文件存储方法,其特征在于,所述在所述存储区域上写入所述文件数据并在数据库中更新所述存储区域的属性信息之后,包括:
获取状态为using的存储区域;
判断所述状态为using的存储区域已使用的存储空间是否小于聚合阈值;
若是,则将所述状态为using的存储区域记为子聚合存储区域;
将至少两个所述子聚合存储区域聚合到其中一个所述子聚合存储区域中,得到聚合存储区域。
6.根据权利要求1所述的分布式文件系统的文件存储方法,其特征在于,将子聚合存储区域进行聚合到其中一个所述子聚合存储区域中,得到聚合存储区域后,包括:
更新已聚合的聚合存储区域的文件列表信息或目录标识或用户标识。
7.一种分布式文件系统,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至6中任一项所述的分布式文件系统的文件存储方法的步骤。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有文件存储程序,所述文件存储程序被处理器执行时实现如权利要求1至6中任一项所述的分布式文件系统的文件存储方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810103081.6A CN110109886B (zh) | 2018-02-01 | 2018-02-01 | 分布式文件系统的文件存储方法及分布式文件系统 |
PCT/CN2019/074332 WO2019149261A1 (zh) | 2018-02-01 | 2019-02-01 | 分布式文件系统的文件存储方法及分布式文件系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810103081.6A CN110109886B (zh) | 2018-02-01 | 2018-02-01 | 分布式文件系统的文件存储方法及分布式文件系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110109886A CN110109886A (zh) | 2019-08-09 |
CN110109886B true CN110109886B (zh) | 2022-11-18 |
Family
ID=67478607
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810103081.6A Active CN110109886B (zh) | 2018-02-01 | 2018-02-01 | 分布式文件系统的文件存储方法及分布式文件系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110109886B (zh) |
WO (1) | WO2019149261A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110636122A (zh) * | 2019-09-11 | 2019-12-31 | 中移(杭州)信息技术有限公司 | 分布式存储方法、服务器、系统、电子设备以及存储介质 |
CN111400302B (zh) * | 2019-11-28 | 2023-09-19 | 杭州海康威视系统技术有限公司 | 连续存储数据的修改方法、装置和系统 |
CN112925472A (zh) * | 2019-12-06 | 2021-06-08 | 阿里巴巴集团控股有限公司 | 请求处理方法、装置、电子设备及计算机存储介质 |
CN112597481A (zh) * | 2020-12-29 | 2021-04-02 | 平安银行股份有限公司 | 敏感数据访问方法、装置、计算机设备及存储介质 |
CN113095645B (zh) * | 2021-03-31 | 2023-06-23 | 中国科学院自动化研究所 | 针对任务分布不均的紧急场景的异构无人机任务分配方法 |
CN113192558A (zh) * | 2021-05-26 | 2021-07-30 | 北京自由猫科技有限公司 | 用于第三代基因测序数据的读写方法及分布式文件系统 |
CN114265559B (zh) * | 2021-12-24 | 2024-02-09 | 中电信数智科技有限公司 | 一种存储管理方法、装置、电子设备及存储介质 |
CN117408576B (zh) * | 2023-12-14 | 2024-03-26 | 鲁信科技股份有限公司 | 一种基于工业互联网的产品质量分析方法、设备及介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1914609A (zh) * | 2003-12-12 | 2007-02-14 | 英国电讯有限公司 | 分布式计算机系统 |
CN102377827A (zh) * | 2011-12-13 | 2012-03-14 | 方正国际软件有限公司 | 多级云存储系统及其存储方法 |
CN102394935A (zh) * | 2011-11-10 | 2012-03-28 | 方正国际软件有限公司 | 无线共享存储系统及其无线共享存储方法 |
CN103885887A (zh) * | 2012-12-21 | 2014-06-25 | 腾讯科技(北京)有限公司 | 用户数据存储方法、读取方法及系统 |
CN105981033A (zh) * | 2014-02-14 | 2016-09-28 | 慧与发展有限责任合伙企业 | 将放置策略分配给片段集合 |
CN106407355A (zh) * | 2016-09-07 | 2017-02-15 | 中国农业银行股份有限公司 | 一种数据存储方法及装置 |
CN107436952A (zh) * | 2017-08-15 | 2017-12-05 | 郑州云海信息技术有限公司 | 一种基于分布式存储系统的文件拷贝方法及装置 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6643654B1 (en) * | 2001-06-25 | 2003-11-04 | Network Appliance, Inc. | System and method for representing named data streams within an on-disk structure of a file system |
CN101556557B (zh) * | 2009-05-14 | 2011-03-23 | 浙江大学 | 一种基于对象存储设备的对象文件组织方法 |
US9633041B2 (en) * | 2013-09-26 | 2017-04-25 | Taiwan Semiconductor Manufacturing Co., Ltd. | File block placement in a distributed file system network |
EP2933733A4 (en) * | 2013-12-31 | 2016-05-11 | Huawei Tech Co Ltd | DATA PROCESSING METHOD AND DEVICE IN A DISTRIBUTED FILE STORAGE SYSTEM |
CN103778222A (zh) * | 2014-01-22 | 2014-05-07 | 浪潮(北京)电子信息产业有限公司 | 一种分布式文件系统存储文件的方法及系统 |
CN104391961A (zh) * | 2014-12-03 | 2015-03-04 | 浪潮集团有限公司 | 千万级小文件数据的一种读写解决策略 |
CN105718484A (zh) * | 2014-12-04 | 2016-06-29 | 中兴通讯股份有限公司 | 写文件、读文件、删除文件、查询文件的方法及客户端 |
CN105138655A (zh) * | 2015-08-31 | 2015-12-09 | 深圳市茁壮网络股份有限公司 | 一种数据存储、读取方法及装置 |
US10108631B2 (en) * | 2016-01-06 | 2018-10-23 | Acronis International Gmbh | System and method of removing unused regions of a data file |
CN106980618B (zh) * | 2016-01-15 | 2021-03-26 | 航天信息股份有限公司 | 基于MongoDB分布式集群架构的文件存储方法和系统 |
CN106227795A (zh) * | 2016-07-20 | 2016-12-14 | 曙光信息产业(北京)有限公司 | 分级存储的检测方法和系统 |
CN106294585B (zh) * | 2016-07-28 | 2019-10-18 | 上海倍增智能科技有限公司 | 一种云计算平台下的存储方法 |
-
2018
- 2018-02-01 CN CN201810103081.6A patent/CN110109886B/zh active Active
-
2019
- 2019-02-01 WO PCT/CN2019/074332 patent/WO2019149261A1/zh active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1914609A (zh) * | 2003-12-12 | 2007-02-14 | 英国电讯有限公司 | 分布式计算机系统 |
CN102394935A (zh) * | 2011-11-10 | 2012-03-28 | 方正国际软件有限公司 | 无线共享存储系统及其无线共享存储方法 |
CN102377827A (zh) * | 2011-12-13 | 2012-03-14 | 方正国际软件有限公司 | 多级云存储系统及其存储方法 |
CN103885887A (zh) * | 2012-12-21 | 2014-06-25 | 腾讯科技(北京)有限公司 | 用户数据存储方法、读取方法及系统 |
CN105981033A (zh) * | 2014-02-14 | 2016-09-28 | 慧与发展有限责任合伙企业 | 将放置策略分配给片段集合 |
CN106407355A (zh) * | 2016-09-07 | 2017-02-15 | 中国农业银行股份有限公司 | 一种数据存储方法及装置 |
CN107436952A (zh) * | 2017-08-15 | 2017-12-05 | 郑州云海信息技术有限公司 | 一种基于分布式存储系统的文件拷贝方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2019149261A1 (zh) | 2019-08-08 |
CN110109886A (zh) | 2019-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110109886B (zh) | 分布式文件系统的文件存储方法及分布式文件系统 | |
CN110622152B (zh) | 用于查询时间序列数据的可扩展数据库系统 | |
KR102462781B1 (ko) | Kvs 트리 데이터베이스 | |
TWI702503B (zh) | 實施用於維護操作之合併樹修改之系統、方法及電腦可讀媒體 | |
JP6025149B2 (ja) | データを管理するシステムおよび方法 | |
JP4477681B2 (ja) | 階層記憶装置、制御装置、および制御方法 | |
US9355112B1 (en) | Optimizing compression based on data activity | |
CN110268394A (zh) | Kvs树 | |
CN106502587B (zh) | 硬盘数据管理方法和硬盘控制装置 | |
US20060212495A1 (en) | Method and system for storing data into a database | |
CN103597444A (zh) | 按照使用来管理基于闪存的存储上的数据放置 | |
CN112740198A (zh) | 用于在数据库中提早移除墓碑记录的系统和方法 | |
CN103488685B (zh) | 一种基于分布式存储系统的碎片文件存储方法 | |
CN109947363A (zh) | 一种分布式存储系统的数据缓存方法 | |
US7752206B2 (en) | Method and data processing system for managing a mass storage system | |
CN109885642B (zh) | 面向全文检索的分级存储方法及装置 | |
CN112947860A (zh) | 一种分布式数据副本的分级存储与调度方法 | |
CN111078143B (zh) | 基于段映射进行数据布局和调度的混合存储方法及系统 | |
CN116467267A (zh) | 垃圾回收方法、设备、存储介质和系统 | |
CN115878027A (zh) | 一种存储对象的处理方法、装置、终端及存储介质 | |
KR20090007926A (ko) | 플래시 메모리에 저장된 데이터의 인덱스 정보 관리 장치및 방법 | |
WO2024187818A1 (zh) | 一种数据迁移方法、系统、设备及非易失性可读存储介质 | |
US20120209891A1 (en) | Database management method, database management system and database management program | |
WO2017024802A1 (zh) | 多种存储介质并存的系统及进行文件操作的方法、装置及计算机存储介质 | |
CN111752941A (zh) | 一种数据存储、访问方法、装置、服务器及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |