CN106326239B - 分布式文件系统及其文件元信息管理方法 - Google Patents
分布式文件系统及其文件元信息管理方法 Download PDFInfo
- Publication number
- CN106326239B CN106326239B CN201510342104.5A CN201510342104A CN106326239B CN 106326239 B CN106326239 B CN 106326239B CN 201510342104 A CN201510342104 A CN 201510342104A CN 106326239 B CN106326239 B CN 106326239B
- Authority
- CN
- China
- Prior art keywords
- file
- information
- identification information
- level index
- level
- 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
- G06F16/134—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/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/164—File meta data generation
-
- 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)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请供公开一种分布式文件系统及其文件元信息管理方法,其中所述方法包括:所述主控节点接收到所述客户端发送的创建文件元信息请求后,生成文件的一级索引标识信息,其中,一级索引标识信息在系统内部全局唯一;所述数据节点接收到所述客户端发送的创建文件元信息请求后,根据所述一级索引标识信息分配文件的二级索引标识信息,其中,二级索引标识信息在一级索引内部全局唯一;所述客户端根据所述一级索引标识信息和二级索引标识信息生成文件名;所述数据节点存储文件元信息,其包括:一级索引标识信息、二级索引标识信息以及文件名。通过本申请解决了文件元信息集中存储在主控节点而易导致的单点故障问题。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及分布式文件系统及其文件元信息管理方法。
背景技术
目前分布式文件系统(例如Hadoop Distribute File System,简称HDFS)大多采用存储在本地磁盘的方式管理文件的元信息。随着分布式文件系统规模越来越大,文件元信息的规模也越来越大,这样就无法将全部的元信息存储在内存中,因此系统需要从磁盘中加载元信息,这导致加载元信息的时间也越来越长。
这种分布式文件系统的集中式存储文件元信息的方式使得扩展不容易,并导致了性能瓶颈,具体表现在:
(1)元信息集中存储在主控节点,存在单点故障;
(2)集群的规模受限于主控节点的内存大小;
(3)系统启动速度慢,无法做到边加载边提供服务;
(4)元信息规模大时无法动态平滑扩展。
基于现有技术中存在的分布式文件系统的集中式存储导致的系统启动慢、系统长时间不能提供服务等性能瓶颈,因此有必要提出改进的技术手段解决上述问题。
发明内容
本申请的主要目的在于提供一种分布式文件系统及其文件元信息管理方法,以克服现有技术中的分布式文件系统的集中式存储导致的性能瓶颈的问题。
根据本申请实施例提供了一种分布式文件系统的文件元信息管理方法,所述分布式文件系统包括主控节点、数据节点以及客户端,所述方法包括:所述主控节点接收到所述客户端发送的创建文件元信息请求后,生成文件的一级索引标识信息,其中,一级索引标识信息在系统内部全局唯一;所述数据节点接收到所述客户端发送的创建文件元信息请求后,根据所述一级索引标识信息分配文件的二级索引标识信息,其中,二级索引标识信息在一级索引内部全局唯一;所述客户端根据所述一级索引标识信息和二级索引标识信息生成文件名;所述数据节点存储文件元信息,其包括:一级索引标识信息、二级索引标识信息以及文件名。
其中,所述方法还包括:所述客户端接收到所述主控节点返回的文件的一级索引标识信息;所述客户端向对应的数据节点发送创建文件请求,其中携带有文件的一级索引标识信息。
其中,创建文件后,所述数据节点存储的文件元信息还包括:文件创建时间、文件修改时间、文件大小、文件状态。
其中,所述方法还包括:所述数据节点向备份的数据节点转发所述文件元信息。
其中,所述方法还包括:所述主控节点接收到系统内的数据节点的位置信息;所述主控节点根据数据节点的位置信息分别向数据节点发送汇报一级索引的汇报请求;所述数据节点接收到汇报请求后,将其本地存储的一级索引发送至所述主控节点,其中,所述一级索引包括以下信息:一级索引标识信息、一级索引管理的文件的大小、一级索引管理的文件的数量、一级索引版本信息;所述主控节点将接收到的一级索引加载至主控节点内存,如果内存中已经存在对应的一级索引,则存储两个一级索引信息中较新的一级索引。
其中,所述方法还包括:系统启动时或按照预定时间,所述主控节点要求系统内的数据节点汇报一级索引,并执行将一级索引加载至主控节点内存的步骤。
其中,在所述主控节点执行将一级索引加载至主控节点内存的步骤同时或之后,所述方法还包括:所述客户端接收到访问文件元信息请求,根据该请求中携带的文件名解析得到对应的一级索引标识信息和二级索引标识信息;所述主控节点接收到客户端发送的访问文件元信息请求,其中携带有一级索引标识信息;所述主控节点在其内存中查询是否存在该一级索引标识信息,如果是则将该一级索引标识信息返回至所述客户端;所述数据节点接收到客户端发送的访问文件元信息请求,其中携带有一级索引标识信息和二级索引标识信息;所述数据节点根据一级索引标识信息和二级索引标识信息查询到对应的文件元信息并返回给所述客户端。
其中,在所述主控节点执行将一级索引加载至主控节点内存的步骤同时或之后,所述方法还包括:所述主控节点接收到所述客户端发送的创建文件元信息请求,所述主控节点新生成或分配已有的一级索引标识信息返回至所述客户端;所述数据节点接收到所述客户端发送的创建文件元信息请求,根据其中携带的一级索引标识信息分配二级索引标识信息;所述数据节点创建文件元信息并将创建的文件元信息返回给所述客户端。
其中,所述方法还包括:所述主控节点根据负载均衡算法确定出需要迁移的一级索引、该一级索引的源数据节点和目标数据节点,并向所述目标数据节点发送数据迁移命令;接收到数据迁移命令后,所述目标数据节点通过所述源数据节点获取该一级索引下所有的文件元信息并进行存储;所述主控节点存储该一级索引与目标数据节点的关系,并向所述源数据节点发送删除一级索引的命令,以使所述源数据节点删除该一级索引。
根据本申请实施例还提供了一种分布式文件系统,其包括:主控节点、数据节点以及客户端;所述主控节点,用于接收到所述客户端发送的创建文件元信息请求后,生成文件的一级索引标识信息,其中,一级索引标识信息在系统内部全局唯一;所述数据节点,用于接收到所述客户端发送的创建文件元信息请求后,根据所述一级索引标识信息分配文件的二级索引标识信息,其中,二级索引标识信息在一级索引内部全局唯一;所述客户端,用于根据所述一级索引标识信息和二级索引标识信息生成文件名;所述数据节点还用于存储文件元信息,其包括:一级索引标识信息、二级索引标识信息以及文件名。
其中,所述客户端还用于,接收到所述主控节点返回的文件的一级索引标识信息,向对应的数据节点发送创建文件请求,其中携带有文件的一级索引标识信息。
其中,创建文件后,所述数据节点存储的文件元信息还包括:文件创建时间、文件修改时间、文件大小、文件状态。
其中,所述数据节点还用于,向备份的数据节点转发所述文件元信息。
其中,所述主控节点还用于,接收到系统内的数据节点的位置信息,根据数据节点的位置信息分别向数据节点发送汇报一级索引的汇报请求;所述数据节点还用于,接收到汇报请求后,将其本地存储的一级索引发送至所述主控节点,其中,所述一级索引包括以下信息:一级索引标识信息、一级索引管理的文件的大小、一级索引管理的文件的数量、一级索引的版本信息;所述主控节点还用于,将接收到的一级索引加载至主控节点内存,如果内存中已经存在对应的一级索引,则存储两个一级索引中较新的一级索引。
其中,所述主控节点还用于,系统启动时或按照预定时间要求系统内的数据节点汇报一级索引,并执行将一级索引加载至主控节点内存的步骤。
其中,所述客户端还用于,在所述主控节点执行加载一级索引信息的步骤同时或之后接收到访问文件元信息请求,根据该请求中携带的文件名解析得到对应的一级索引标识信息和二级索引标识信息;所述主控节点还用于,接收到客户端发送的访问文件元信息请求,其中携带有一级索引标识信息;所述主控节点在其内存中查询是否存在该一级索引标识信息,如果是则将该一级索引标识信息返回至所述客户端;所述数据节点还用于,接收到客户端发送的访问文件元信息请求,其中携带有一级索引标识信息和二级索引标识信息;所述数据节点根据一级索引标识信息和二级索引标识信息查询到对应的文件元信息并返回给所述客户端。
其中,所述主控节点还用于,在执行加载一级索引信息的步骤同时或之后接收到所述客户端发送的创建文件元信息请求;所述主控节点新生成或分配已有的一级索引标识信息返回至所述客户端;所述数据节点还用于,接收到所述客户端发送的创建文件元信息请求,,根据其中携带的一级索引标识信息分配二级索引标识信息;所述数据节点创建文件元信息并将创建的文件元信息返回给所述客户端。
其中,所述主控节点还用于,根据负载均衡算法确定出需要迁移的一级索引、该一级索引的源数据节点和目标数据节点,并向所述目标数据节点发送数据迁移命令;所述目标数据节点用于,接收到数据迁移命令后,通过所述源数据节点获取该一级索引下所有的文件元信息并进行存储;所述主控节点还用于,存储该一级索引与目标数据节点的关系,并向所述源数据节点发送删除一级索引的命令,以使所述源数据节点删除该一级索引。
综上所述,根据本申请的技术方案,文件元信息管理存储由主控节点和数据节点(存储节点)协作完成,解决了文件元信息集中存储在主控节点而易导致的单点故障问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1示出根据本申请实施例的分布式文件系统的文件元信息管理方法的流程图;
图2示出根据本申请实施例的文件元信息加载的流程图;
图3示出根据本申请实施例的分布式文件系统的结构框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
根据本申请实施例提供一种分布式文件系统的文件元信息管理方法,所述分布式文件系统包括:至少一个主控节点、多个数据节点以及至少一个客户端。
参考图1,图1示出根据本申请一个实施例的分布式文件系统的文件元信息管理方法的流程图,所述方法包括:
步骤S102,主控节点接收到所述客户端发送的创建文件元信息请求后,生成文件的一级索引标识信息,其中,一级索引标识信息在系统内部全局唯一。
根据本申请实施例,客户端负责提供创建文件(创建文件元信息)的接口,用户通过客户端向主控节点发起创建文件元信息请求(即创建文件请求),创建文件的同时生成文件元信息,主控节点生成并在本地存储文件的一级索引以及负责管理该文件的数据节点的位置信息。在具体实施中,主控节点可以根据负载均衡算法确定负责管理文件的数据节点,具体细节此处不再赘述。
其中,所述文件的一级索引信息包括:一级索引标识信息(ID)、一级索引管理的文件的大小(Size)、一级索引管理的文件的数量(Count)、一级索引版本信息(Version),而一级索引ID在系统内部全局唯一。
步骤S104,所述数据节点接收到所述客户端发送的创建文件元信息请求后,根据所述一级索引标识信息分配文件的二级索引标识信息,其中,二级索引标识信息在一级索引内部全局唯一。
根据本申请实施例,所述客户端接收到所述主控节点返回的文件的一级索引标识信息后,客户端根据负责管理该文件的数据节点的位置信息向对应的数据节点发送创建文件请求,其中该创建文件请求中携带有文件的一级索引标识信息。然后,所述数据节点根据一级索引标识信息分配件的二级索引标识信息(ID),其中,二级索引ID在同一个一级索引内部全局唯一。
步骤S106,所述客户端根据所述一级索引标识信息和二级索引标识信息生成文件名。
所述数据节点生成文件的二级索引标识信息后,将所述二级索引标识信息返回给所述客户端;所述客户端根据返回的一级索引标识信息和二级索引标识信息通过加密算法(例如base64算法)生成文件名(filename),然后将生成的文件名发送至所述数据节点。
步骤S108,所述数据节点存储文件元信息,其包括:一级索引标识信息、二级索引标识信息以及文件名。
在本申请的一个实施例中,所述数据节点创建文件之后,所述数据节点存储的文件元信息还包括:文件创建时间(create_time)、文件修改时间(modify_time)、文件大小(size)、文件状态(status)等。此外,所述数据节点(Master数据节点)还需要将上述的文件元信息转发至备份的数据节点(Slave数据节点)。
上述实施例描述了文件元信息生成过程,本申请的文件元信息管理存储由主控节点和数据节点(存储节点)协作完成,解决了现有技术中的元信息集中存储在主控节点而易导致的单点故障问题。
下面结合图2详细描述文件元信息的加载流程。分布式文件系统在启动时需要将文件的元信息加载到主控节点内存,根据本申请实施例的文件元信息分散存储在分布式文件系统的每一个数据节点上,如图2所示,具体的文件元信息加载流程包括:
步骤S202,系统启动时,主控节点获取系统内所有数据节点的相关信息,包括:数据节点的位置信息(IP地址)以及该数据节点所监听的主控节点的端口号(PORT);
步骤S204,主控节点根据全部数据节点的位置信息,分别向每个数据节点发送汇报一级索引的汇报请求;
步骤S206,数据节点收到汇报请求后,从本地磁盘读取一级索引并发送给主控节点,其中,所述一级索引包括以下信息:一级索引标识信息、一级索引管理的文件的大小、一级索引管理的文件的数量、一级索引版本信息;
步骤S208,主控节点接收到返回的信息后,遍历返回的一级索引并在主控节点内存中查询是否存在对应的一级索引;
步骤S210,如果不存在,则新建与一级索引相关的数据结构,即在主控节点新建与该一级索引相同的一级索引;
步骤S212,如果存在,则对比两个一级索引相关信息,存储较新的一级索引,并将另一个一级索引从相关的节点上删除;
具体地,在比对两个一级索引时,可通过索引的版本号(Version)判断哪个一级索引较新。如果主控节点存储的一级索引较新,则删除数据节点存储的一级索引,如果数据节点存储的一级索引较新,则主控数据节点存储该一级索引,以实现主控节点与数据节点之间对齐一级索引信息。
步骤S214,主控节点定时检查所有的数据节点是否汇报成功,如果不成功继续执行步骤S204,向数据节点发送汇报命令直到汇报成功。
需要说明,在系统运行过程中由于网络不稳定或者系统有漏洞(bug),可能会出现一部分索引在数据节点上存在,但在主控节点上不存在的情况(用户看不到也不能访问)。这时就需要主控节点定期(例如1天)要求数据节点重新汇报一级索引信息,以实现主控节点与数据节点之间对齐一级索引的目的。
在本申请的一个实施例中,主控节点启动时会等待数据节点汇报一级索引信息,主控节点不需要等待所有数据节点汇报完成(即不需要全部建立一级索引信息)后才对外提供服务;主控节点可以一边加载一级索引、建立一级索引与数据节点的关系,一边对外提供读写服务,下面详细描述读写服务的过程。
读服务流程包括:
(1)客户端接收到来自用户的访问文件元信息请求,该请求中携带有文件名信息;所述客户端根据该请求中携带的文件名反解析得到对应文件的一级索引ID和二级索引ID;
(2)所述客户端向主控节点发送访问文件元信息请求,该请求中携带有一级索引ID;
(3)主控节点在其内存中查询是否存在与一级索引ID一致的信息,如果存在就将内存中的一级索引信息以及负责管理该文件的数据节点的位置信息返回给客户端,否则返回失败消息;
(4)客户端根据返回的数据节点的位置信息向对应的数据节点发送访问文件元信息请求,该请求中包括一级索引ID和二级索引ID;
(5)数据节点根据一级索引ID和二级索引ID查询到对应的文件元信息并返回给客户端,流程结束。
写服务流程包括:
(1)用户通过客户端向主控节点发送创建文件(创建文件元信息)请求;
(2)主控节点从其内存中查找符合条件的一级索引,如果有则将该一级索引返回给客户端,否则分配一个全新的一级索引并返回给客户端;
(3)客户端向对应的数据节点发送创建文件(创建文件元信息)请求;
(4)数据节点创建文件(文件元信息)并将文件元信息持久存储到本地磁盘,然后将所述文件元信息返回给客户端。
根据本申请实施例,主控节点只需要加载少量的一级索引信息,只要加载一个一级索引就可以对外提供读写服务。并且,多个数据节点同时加载元信息,单个数据节点从磁盘上读取元信息的数据量只有总元信息的1/(数据节点数量),使得系统启动更快。
在本申请的一个实施例中,由于数据和文件元信息存放在一起,当对元信息扩容或者对存储数据的空间扩容时,这两者都会一起扩容。扩容的过程主要由主控节点来控制,主控节点每一次只迁移一个一级索引,直到所有的数据节点容量、文件元信息所占的空间基本均衡为止。正在迁移的一级索引此时不能对外提供写服务,但可以提供读服务;没有迁移的一级索引不受任何影响,既可以对外提供写服务又可以提供读服务。主控节点会控制迁移的速度,迁移过程中对用户基本没有什么影响,下面详细描述扩容流程。
(1)主控节点定期在后台执行负载均衡算法,确定出需要迁移的一级索引ID、一级索引所在的源数据节点、以及目标数据节点,然后向目标数据节点发送数据迁移命令;
(2)目标数据节点接收到数据迁移命令后,主动向源数据节点拉取一级索引下所有的文件元信息到本地,并持久存储;
具体地,目标数据节点根据源数据节点的位置信息向源数据节点发送迁移命令,其中包括有一级索引ID;源数据节点收到数据迁移命令后,根据一级索引ID查询出该一级索引下所有的二级索引以及文件元信息(创建时间、修改时间、大小等)并打包返回给目标数据节点;目标数据节点从源数据节点将打包数据拉到本地,文件元信息以及数据都在本地存储成功后向主控节点汇报迁移结果。
(3)主控节点重建一级索引与数据节点的关系(增加一级索引与目标节点的关系),同时向源数据节点发送删除一级索引命令,由源数据节点删除一级索引。
根据本申请实施例还提供一种分布式文件系统,所述系统包括:至少一个主控节点、多个数据节点以及至少一个客户端。
图3示出根据本申请实施例的分布式文件系统的结构框图,为简明图3中仅示出一个主控节点、一个数据节点以及一个客户端,但是这并不限制本申请中主控节点、数据节点以及客户端的数量。
所述主控节点10,用于接收到所述客户端发送的创建文件元信息请求后,生成文件的一级索引标识信息,其中,一级索引标识信息在系统内部全局唯一;
其中,所述客户端30接收到所述主控节点返回的文件的一级索引标识信息,向对应的数据节点发送创建文件请求,其中携带有文件的一级索引标识信息。
所述数据节点20,用于接收到所述客户端发送的创建文件元信息请求后,根据所述一级索引标识信息分配文件的二级索引标识信息,其中,二级索引标识信息在一级索引内部全局唯一;
所述客户端30,用于根据所述一级索引标识信息和二级索引标识信息生成文件名;
所述数据节点20,还用于存储文件元信息,其包括:一级索引标识信息、二级索引标识信息以及文件名。进一步地,所述数据节点还用于,向备份的数据节点转发所述文件元信息。
根据本申请实施例,创建文件之后,数据节点存储的文件元信息包括有:
文件名(filename):由一级索引ID、二级索引ID通过加密算法(例如base64算法)生成;
文件创建时间(create_time);
文件修改时间(modify_time);
文件长度或文件大小(size);
文件状态(status);
一级索引ID(first_index_id):由主控节点生成,全局唯一;
二级索引ID(second_index_id):由数据节点生成,在同一个一级索引内部全局唯一;一级索引ID以及二级索引ID可以确定一个唯一的文件。
分布式文件系统在启动时需要将文件的元信息加载到主控节点内存,根据本申请实施例的文件元信息分散存储在分布式文件系统的每一个数据节点上,主控节点需要将数据节点的文件元信息加载到主控节点内存。
首先,所述主控节点接收所有数据节点的位置信息,并根据数据节点的位置信息向数据节点发送汇报一级索引信息的汇报请求。数据节点收到汇报请求后,将其本地存储的一级索引信息发送至所述主控节点。所述主控节点接收到返回的一级索引信息后,遍历返回的一级索引信息并在内存中查询一级索引信息是否存在,如果存在则存储两个一级索引信息中较新的一级索引信息;否则,在所述主控节点新建该一级索引信息。最后,主控节点定时检查所有的数据节点是否汇报成功,如果不成功继续执行文件元信息加载的过程,主控节点向数据节点发送汇报命令直到汇报成功。
需要说明,在系统运行过程中由于网络不稳定或者系统有漏洞(bug),可能会出现一部分索引在数据节点上存在,但在主控节点上不存在的情况(用户看不到也不能访问)。这时就需要主控节点定期(例如1天)要求数据节点重新汇报一级索引信息,以实现主控节点与数据节点之间对齐一级索引的目的。
在本申请的一个实施例中,主控节点启动时会等待数据节点汇报一级索引信息,主控节点不需要等待所有数据节点汇报完成(即不需要全部建立一级索引信息)后才对外提供服务;主控节点可以一边加载一级索引、建立一级索引与数据节点的关系,一边对外提供读写服务,下面详细描述读写服务的过程。
读服务流程包括:
(1)客户端接收到来自用户的访问文件元信息请求,该请求中携带有文件名信息;所述客户端根据该请求中携带的文件名反解析得到对应文件的一级索引ID和二级索引ID;
(2)所述客户端向主控节点发送访问文件元信息请求,该请求中携带有一级索引ID;
(3)主控节点在其内存中查询是否存在与一级索引ID一致的信息,如果存在就将内存中的一级索引信息以及负责管理该文件的数据节点的位置信息返回给客户端,否则返回失败消息;
(4)客户端根据返回的数据节点的位置信息向对应的数据节点发送访问文件元信息请求,该请求中包括一级索引ID和二级索引ID;
(5)数据节点根据一级索引ID和二级索引ID查询到对应的文件元信息并返回给客户端,流程结束。
写服务流程包括:
(1)用户通过客户端向主控节点发送创建文件(创建文件元信息)请求;
(2)主控节点从其内存中查找符合条件的一级索引,如果有则将该一级索引返回给客户端,否则分配一个全新的一级索引并返回给客户端;
(3)客户端向对应的数据节点发送创建文件(创建文件元信息)请求;
(4)数据节点创建文件(文件元信息)并将文件元信息持久存储到本地磁盘,然后将所述文件元信息返回给客户端。
根据本申请实施例,主控节点只需要加载少量的一级索引信息,只要加载一个一级索引就可以对外提供读写服务。并且,多个数据节点同时加载元信息,单个数据节点从磁盘上读取元信息的数据量只有总元信息的1/(数据节点数量),使得系统启动更快。
在本申请的一个实施例中,由于数据和文件元信息存放在一起,当对元信息扩容或者对存储数据的空间扩容时,这两者都会一起扩容。扩容的过程主要由主控节点来控制,主控节点每一次只迁移一个一级索引,直到所有的数据节点容量、文件元信息所占的空间基本均衡为止。正在迁移的一级索引此时不能对外提供写服务,但可以提供读服务;没有迁移的一级索引不受任何影响,既可以对外提供写服务又可以提供读服务。主控节点会控制迁移的速度,迁移过程中对用户基本没有什么影响,下面详细描述扩容流程。
(1)主控节点定期在后台执行负载均衡算法,确定出需要迁移的一级索引ID、一级索引所在的源数据节点、以及目标数据节点,然后向目标数据节点发送数据迁移命令;
(2)目标数据节点接收到数据迁移命令后,主动向源数据节点拉取一级索引下所有的文件元信息到本地,并持久存储;
具体地,目标数据节点根据源数据节点的位置信息向源数据节点发送迁移命令,其中包括有一级索引ID;源数据节点收到数据迁移命令后,根据一级索引ID查询出该一级索引下所有的二级索引以及文件元信息(创建时间、修改时间、大小等)并打包返回给目标数据节点;目标数据节点从源数据节点将打包数据拉到本地,文件元信息以及数据都在本地存储成功后向主控节点汇报迁移结果。
(3)主控节点重建一级索引与数据节点的关系(增加一级索引与目标节点的关系),同时向源数据节点发送删除一级索引命令,由源数据节点删除一级索引。
本申请的方法的操作步骤与系统的结构特征对应,可以相互参照,不再一一赘述。
综上所述,根据本申请实施例具备以下优点:
(1)元信息分散存储在多个数据节点上,避免单点故障;
(2)主控节点只需要存储部分元信息,即只存储一级索引信息,减轻了主控节点的存储负担;
(3)元信息平滑扩容不影响对外提供读写服务;
(4)元信息能够边加载边对外提供读写服务。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (18)
1.一种分布式文件系统的文件元信息管理方法,所述分布式文件系统包括主控节点、数据节点以及客户端,其特征在于,所述方法包括:
所述主控节点接收到所述客户端发送的创建文件元信息请求后,生成文件的一级索引标识信息,以及,所述主控节点接收所述数据节点发送的一级索引,其中,所述一级索引包括一级索引标识信息,一级索引标识信息在系统内部全局唯一;
所述数据节点接收到所述客户端发送的创建文件元信息请求后,根据所述一级索引标识信息分配文件的二级索引标识信息,其中,二级索引标识信息在一级索引内部全局唯一;
所述客户端根据所述一级索引标识信息和二级索引标识信息生成文件名;
所述数据节点存储文件元信息,其包括:一级索引标识信息、二级索引标识信息以及文件名。
2.根据权利要求1所述的方法,其特征在于,还包括:
所述客户端接收到所述主控节点返回的文件的一级索引标识信息;
所述客户端向对应的数据节点发送创建文件请求,其中携带有文件的一级索引标识信息。
3.根据权利要求1所述的方法,其特征在于,创建文件后,所述数据节点存储的文件元信息还包括:文件创建时间、文件修改时间、文件大小、文件状态。
4.根据权利要求3所述的方法,其特征在于,还包括:
所述数据节点向备份的数据节点转发所述文件元信息。
5.根据权利要求1所述的方法,其特征在于,还包括:
所述主控节点接收到系统内的数据节点的位置信息;
所述主控节点根据数据节点的位置信息分别向数据节点发送汇报一级索引的汇报请求;
所述数据节点接收到汇报请求后,将其本地存储的一级索引发送至所述主控节点,其中,所述一级索引包括以下信息:一级索引标识信息、一级索引管理的文件的大小、一级索引管理的文件的数量、一级索引版本信息;
所述主控节点将接收到的一级索引加载至主控节点内存,如果内存中已经存在对应的一级索引,则存储两个一级索引信息中较新的一级索引。
6.根据权利要求5所述的方法,其特征在于,还包括:
系统启动时或按照预定时间,所述主控节点要求系统内的数据节点汇报一级索引,并执行将一级索引加载至主控节点内存的步骤。
7.根据权利要求5所述的方法,其特征在于,在所述主控节点执行将一级索引加载至主控节点内存的步骤同时或之后,所述方法还包括:
所述客户端接收到访问文件元信息请求,根据该请求中携带的文件名解析得到对应的一级索引标识信息和二级索引标识信息;
所述主控节点接收到客户端发送的访问文件元信息请求,其中携带有一级索引标识信息;所述主控节点在其内存中查询是否存在该一级索引标识信息,如果是则将该一级索引标识信息返回至所述客户端;
所述数据节点接收到客户端发送的访问文件元信息请求,其中携带有一级索引标识信息和二级索引标识信息;所述数据节点根据一级索引标识信息和二级索引标识信息查询到对应的文件元信息并返回给所述客户端。
8.根据权利要求5所述的方法,其特征在于,在所述主控节点执行将一级索引加载至主控节点内存的步骤同时或之后,所述方法还包括:
所述主控节点接收到所述客户端发送的创建文件元信息请求,所述主控节点新生成或分配已有的一级索引标识信息返回至所述客户端;
所述数据节点接收到所述客户端发送的创建文件元信息请求,根据其中携带的一级索引标识信息分配二级索引标识信息;
所述数据节点创建文件元信息并将创建的文件元信息返回给所述客户端。
9.根据权利要求5所述的方法,其特征在于,还包括:
所述主控节点根据负载均衡算法确定出需要迁移的一级索引、该一级索引的源数据节点和目标数据节点,并向所述目标数据节点发送数据迁移命令;
接收到数据迁移命令后,所述目标数据节点通过所述源数据节点获取该一级索引下所有的文件元信息并进行存储;
所述主控节点存储该一级索引与目标数据节点的关系,并向所述源数据节点发送删除一级索引的命令,以使所述源数据节点删除该一级索引。
10.一种分布式文件系统,其特征在于,包括:主控节点、数据节点以及客户端;
所述主控节点,用于接收到所述客户端发送的创建文件元信息请求后,生成文件的一级索引标识信息,以及,所述主控节点接收所述数据节点发送的一级索引,其中,所述一级索引包括一级索引标识信息,一级索引标识信息在系统内部全局唯一;
所述数据节点,用于接收到所述客户端发送的创建文件元信息请求后,根据所述一级索引标识信息分配文件的二级索引标识信息,其中,二级索引标识信息在一级索引内部全局唯一;
所述客户端,用于根据所述一级索引标识信息和二级索引标识信息生成文件名;
所述数据节点还用于存储文件元信息,其包括:一级索引标识信息、二级索引标识信息以及文件名。
11.根据权利要求10所述的系统,其特征在于,所述客户端还用于,接收到所述主控节点返回的文件的一级索引标识信息,向对应的数据节点发送创建文件请求,其中携带有文件的一级索引标识信息。
12.根据权利要求10所述的系统,其特征在于,创建文件后,所述数据节点存储的文件元信息还包括:文件创建时间、文件修改时间、文件大小、文件状态。
13.根据权利要求12所述的系统,其特征在于,所述数据节点还用于,向备份的数据节点转发所述文件元信息。
14.根据权利要求10所述的系统,其特征在于,
所述主控节点还用于,接收到系统内的数据节点的位置信息,根据数据节点的位置信息分别向数据节点发送汇报一级索引的汇报请求;
所述数据节点还用于,接收到汇报请求后,将其本地存储的一级索引发送至所述主控节点,其中,所述一级索引包括以下信息:一级索引标识信息、一级索引管理的文件的大小、一级索引管理的文件的数量、一级索引的版本信息;
所述主控节点还用于,将接收到的一级索引加载至主控节点内存,如果内存中已经存在对应的一级索引,则存储两个一级索引中较新的一级索引。
15.根据权利要求14所述的系统,其特征在于,
所述主控节点还用于,系统启动时或按照预定时间要求系统内的数据节点汇报一级索引,并执行将一级索引加载至主控节点内存的步骤。
16.根据权利要求14所述的系统,其特征在于,
所述客户端还用于,在所述主控节点执行加载一级索引信息的步骤同时或之后接收到访问文件元信息请求,根据该请求中携带的文件名解析得到对应的一级索引标识信息和二级索引标识信息;
所述主控节点还用于,接收到客户端发送的访问文件元信息请求,其中携带有一级索引标识信息;所述主控节点在其内存中查询是否存在该一级索引标识信息,如果是则将该一级索引标识信息返回至所述客户端;
所述数据节点还用于,接收到客户端发送的访问文件元信息请求,其中携带有一级索引标识信息和二级索引标识信息;所述数据节点根据一级索引标识信息和二级索引标识信息查询到对应的文件元信息并返回给所述客户端。
17.根据权利要求14所述的系统,其特征在于,
所述主控节点还用于,在执行加载一级索引信息的步骤同时或之后接收到所述客户端发送的创建文件元信息请求;所述主控节点新生成或分配已有的一级索引标识信息返回至所述客户端;
所述数据节点还用于,接收到所述客户端发送的创建文件元信息请求,根据其中携带的一级索引标识信息分配二级索引标识信息;所述数据节点创建文件元信息并将创建的文件元信息返回给所述客户端。
18.根据权利要求14所述的系统,其特征在于,
所述主控节点还用于,根据负载均衡算法确定出需要迁移的一级索引、该一级索引的源数据节点和目标数据节点,并向所述目标数据节点发送数据迁移命令;
所述目标数据节点用于,接收到数据迁移命令后,通过所述源数据节点获取该一级索引下所有的文件元信息并进行存储;
所述主控节点还用于,存储该一级索引与目标数据节点的关系,并向所述源数据节点发送删除一级索引的命令,以使所述源数据节点删除该一级索引。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510342104.5A CN106326239B (zh) | 2015-06-18 | 2015-06-18 | 分布式文件系统及其文件元信息管理方法 |
PCT/CN2016/085208 WO2016202199A1 (zh) | 2015-06-18 | 2016-06-08 | 分布式文件系统及其文件元信息管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510342104.5A CN106326239B (zh) | 2015-06-18 | 2015-06-18 | 分布式文件系统及其文件元信息管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106326239A CN106326239A (zh) | 2017-01-11 |
CN106326239B true CN106326239B (zh) | 2020-01-31 |
Family
ID=57545012
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510342104.5A Active CN106326239B (zh) | 2015-06-18 | 2015-06-18 | 分布式文件系统及其文件元信息管理方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN106326239B (zh) |
WO (1) | WO2016202199A1 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110727652B (zh) * | 2018-07-17 | 2023-06-30 | 阿里巴巴集团控股有限公司 | 一种云存储处理系统及其实现数据处理的方法 |
CN111221814B (zh) * | 2018-11-27 | 2023-06-27 | 阿里巴巴集团控股有限公司 | 二级索引的构建方法、装置及设备 |
CN109766318B (zh) * | 2018-12-17 | 2021-03-02 | 新华三大数据技术有限公司 | 文件读取方法及装置 |
CN111666035B (zh) * | 2019-03-05 | 2023-06-20 | 阿里巴巴集团控股有限公司 | 一种分布式存储系统的管理方法及装置 |
CN110196851B (zh) * | 2019-05-09 | 2024-05-10 | 腾讯科技(深圳)有限公司 | 一种数据存储方法、装置、设备及存储介质 |
CN110334054A (zh) * | 2019-05-17 | 2019-10-15 | 杭州亦笔科技有限公司 | 一种区块链文件分片存储方法 |
CN110413407B (zh) * | 2019-06-27 | 2022-05-17 | 国网浙江省电力有限公司电力科学研究院 | 一种大流量环境下还原文件的存储及快速索引方法 |
CN111125216B (zh) * | 2019-12-10 | 2024-03-12 | 中盈优创资讯科技有限公司 | 数据导入Phoenix的方法及装置 |
CN111399764B (zh) * | 2019-12-25 | 2023-04-14 | 杭州海康威视系统技术有限公司 | 数据存储方法、读取方法、装置、设备及存储介质 |
CN111190861B (zh) * | 2019-12-27 | 2023-06-30 | 中移(杭州)信息技术有限公司 | 热点文件管理方法、服务器及计算机可读存储介质 |
CN113239013B (zh) * | 2021-05-17 | 2024-04-09 | 北京青云科技股份有限公司 | 分布式系统及存储介质 |
CN114860655A (zh) * | 2022-03-21 | 2022-08-05 | 阿里巴巴(中国)有限公司 | 文件处理方法、装置及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102411637A (zh) * | 2011-12-30 | 2012-04-11 | 创新科软件技术(深圳)有限公司 | 分布式文件系统的元数据管理方法 |
CN103092927A (zh) * | 2012-12-29 | 2013-05-08 | 华中科技大学 | 一种分布式环境下的文件快速读写方法 |
CN103150394A (zh) * | 2013-03-25 | 2013-06-12 | 中国人民解放军国防科学技术大学 | 面向高性能计算的分布式文件系统元数据管理方法 |
CN103577500A (zh) * | 2012-08-10 | 2014-02-12 | 腾讯科技(深圳)有限公司 | 分布式文件系统进行数据处理的方法及该分布式文件系统 |
CN104376025A (zh) * | 2013-08-16 | 2015-02-25 | 华为技术有限公司 | 分布式数据库的数据存储方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10120868B2 (en) * | 2013-09-04 | 2018-11-06 | Red Hat, Inc. | Outcast index in a distributed file system |
-
2015
- 2015-06-18 CN CN201510342104.5A patent/CN106326239B/zh active Active
-
2016
- 2016-06-08 WO PCT/CN2016/085208 patent/WO2016202199A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102411637A (zh) * | 2011-12-30 | 2012-04-11 | 创新科软件技术(深圳)有限公司 | 分布式文件系统的元数据管理方法 |
CN103577500A (zh) * | 2012-08-10 | 2014-02-12 | 腾讯科技(深圳)有限公司 | 分布式文件系统进行数据处理的方法及该分布式文件系统 |
CN103092927A (zh) * | 2012-12-29 | 2013-05-08 | 华中科技大学 | 一种分布式环境下的文件快速读写方法 |
CN103150394A (zh) * | 2013-03-25 | 2013-06-12 | 中国人民解放军国防科学技术大学 | 面向高性能计算的分布式文件系统元数据管理方法 |
CN104376025A (zh) * | 2013-08-16 | 2015-02-25 | 华为技术有限公司 | 分布式数据库的数据存储方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106326239A (zh) | 2017-01-11 |
WO2016202199A1 (zh) | 2016-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106326239B (zh) | 分布式文件系统及其文件元信息管理方法 | |
EP3739845B1 (en) | Borrowing data storage resources in a distributed file system | |
US9052962B2 (en) | Distributed storage of data in a cloud storage system | |
US9628438B2 (en) | Consistent ring namespaces facilitating data storage and organization in network infrastructures | |
US20130218934A1 (en) | Method for directory entries split and merge in distributed file system | |
CN107562757B (zh) | 基于分布式文件系统的查询、访问方法、装置及系统 | |
EP3076307A1 (en) | Method and device for responding to a request, and distributed file system | |
JP6388339B2 (ja) | 分散キャッシングおよびキャッシュ分析 | |
CN104331453A (zh) | 一种分布式文件系统及分布式文件系统的构建方法 | |
CN114594914B (zh) | 用于分布式存储系统的控制方法及系统 | |
CN111444157B (zh) | 分布式文件系统及数据访问方法 | |
KR101236477B1 (ko) | 비대칭 클러스터 파일 시스템의 데이터 처리 방법 | |
CN112596762A (zh) | 一种滚动升级方法及装置 | |
CN107943412B (zh) | 一种分区分裂、删除分区中数据文件的方法、装置及系统 | |
KR101341412B1 (ko) | 비대칭 분산 파일 시스템에서의 메타데이터 관리 장치 및 방법 | |
CN107493309B (zh) | 一种分布式系统中的文件写入方法及装置 | |
CN111291062A (zh) | 数据同步写入方法、装置、计算机设备及存储介质 | |
CN110298031B (zh) | 一种词典服务系统及模型版本一致性配送方法 | |
JP2015022327A (ja) | データ再配置装置、方法およびプログラム | |
KR20130038517A (ko) | 분산된 컨테이너들을 사용하여 데이터를 관리하는 시스템 및 방법 | |
CN110119389B (zh) | 虚拟机块设备的写操作方法、快照创建方法及装置 | |
CN114661246B (zh) | 一种存储控制的方法和装置 | |
CN113626404B (zh) | 分布式文件系统嵌套目录配额的控制方法、装置及介质 | |
CN110059075B (zh) | 一种数据库迁移的方法、装置、设备及计算机可读介质 | |
CN108023914B (zh) | 一种内存数据共享系统、内存数据的写入以及读取方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |