基于分布式文件系统的文件处理方法、系统及客户端技术方案

技术编号:8132590 阅读:212 留言:0更新日期:2012-12-27 05:44
本申请公开了一种基于分布式文件系统的文件处理方法、系统及客户端,该方法包括:客户端向元数据节点发送文件写入请求;接收元数据节点返回的文件标识,每个数据块的数据块标识、数据块的副本数量以及选择性因子;对文件的文件标识、数据块的数据块标识和选择性因子进行哈希运算得到哈希值;根据哈希值查找一致性哈希环,获取大于该哈希值的最小虚拟节点的值,从该虚拟节点开始在一致性哈希环上顺时针选择与副本数量一致的虚拟节点;当所选择的虚拟节点满足预设条件时,将数据块发送到不同的存储设备上进行存储。本申请减少了对元数据节点存储空间的占用,可以提高写入数据时的定位速度,实现了系统负载均衡。

【技术实现步骤摘要】

本申请涉及计算机存储
,特别是涉及一种基于分布式文件系统的文件处理方法、系统及客户端
技术介绍
分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。分布式文件系统的设计基于客户机/服务器模式。参见图1A,为一种典型的分布式文件系统架构示意图,主要包括客户端、元数据节点和数据存储节点。其中,客户端(Client)通常部署在业务应用服务器上,业务应用程序通过所在客户端向分布式文件系统集群发送数据访问请求;数据存储节 点(chunk node)用于存放文件数据,其中每个数据存储节点上可能由若干存储设备组成;分布式文件系统集群中的元数据节点(meta node)上保存了设备信息表和文件布局分配表,其中设备信息表中用于保存组成每个数据存储节点的存储设备的属性信息,例如,存储容量、可用容量等,文件布局分配表中保存了组成每个文件的每个数据块所在的存储设备,如图IB所示,其中文件I由N个数据块组成,以数据块I为例,需要记录该数据块的数据块id(标识)、数据块所在数据节点的数据节点id和存储设备id。现有技术,在进行文件写入操作时,元数据节点需要查找设备信息表中各个存储设备的可用容量,以选择合适的存储设备,当客户端根据元数据节点选择的存储设备完成文件写入后,将该文件的文件标识,以及各个数据块与所在存储设备的对应关系记录到文件布局分配表中;在进行文件读取操作时,元数据节点根据文件标识查找文件布局分配表,将获取到的组成该文件的各个数据块所在的位置信息返回给客户端,由客户端根据该位置信息到对应的存储设备上读取文件数据。专利技术人在对现有技术的研究过程中发现,现有技术要实现基于分布式文件系统的文件读写操作时,需要在元数据节点上通过文件布局分配表记录每个文件的数据块的存储位置信息,当分布式文件系统规模扩大时,文件数量将快速增长,相应的文件布局分配表也相应增大,因此增加了元数据节点为存储文件布局分配表所占用的磁盘空间;并且,当文件布局分配表增大时,对该文件布局分配表进行1/0(输入/输出)操作的时间也将变长,由此降低了文件的读写性能。
技术实现思路
本申请实施例提供了一种基于分布式文件系统的文件处理方法、系统及客户端,以解决现有根据文件布局分配表进行分布式文件的读写操作,导致占用磁盘存储空间,文件读写性能不高的问题。为了解决上述技术问题,本申请实施例公开了如下技术方案—种基于分布式文件系统的文件处理方法,所述系统包括元数据节点、和与所述元数据节点分别通信的客户端和数据存储节点,每个数据存储节点由至少一个存储设备组成,客户端内保存基于虚拟节点的一致性哈希环,其中每个存储设备根据其存储容量的大小对应到所述一致性哈希环上的至少一个虚拟节点,每个虚拟节点保存所述虚拟节点所属的存储设备的设备标识和使用状态,根据所述虚拟节点的总数为每个虚拟节点分配虚拟节点的值,所述方法包括客户端向元数据节点发送文件写入请求;接收元数据节点根据所述文件写入请求返回的为所述文件分配的文件标识,以及组成所述文件的每个数据块的数据块标识、数据块的副本数量以及选择性因子,所述选择性因子初始化值为零;对于顺序组成所述文件的每个数据块,对所述文件的文件标识、所述数据块的数据块标识和选择性因子进行哈希运算得到哈希值;根据所述哈希值查找所述一致性哈希环,从所述一致性哈希环上获取大于所述哈 希值的最小虚拟节点的值,从所述虚拟节点开始在所述一致性哈希环上顺时针选择与所述副本数量一致的虚拟节点;当所选择的虚拟节点分别属于不同的存储设备,且所述不同的存储设备的使用状态为可用状态时,将数据块发送到所述不同的存储设备上进行存储。一种分布式文件系统,包括元数据节点、和与所述元数据节点分别通信的客户端和数据存储节点,每个数据存储节点由至少一个存储设备组成,所述客户端,用于保存基于虚拟节点的一致性哈希环,其中每个存储设备根据其存储容量的大小对应到所述一致性哈希环上的至少一个虚拟节点,每个虚拟节点保存所述虚拟节点所属的存储设备的设备标识和使用状态,根据所述虚拟节点的总数为每个虚拟节点分配虚拟节点的值;以及向元数据节点发送文件写入请求;所述元数据节点,用于根据所述文件写入请求向所述客户端返回的为所述文件分配的文件标识,以及组成所述文件的每个数据块的数据块标识、数据块的副本数量以及选择性因子,所述选择性因子初始化值为零;所述客户端,还用于对于顺序组成所述文件的每个数据块,对所述文件的文件标识、所述数据块的数据块标识和选择性因子进行哈希运算得到哈希值;根据所述哈希值查找所述一致性哈希环,从所述一致性哈希环上获取大于所述哈希值的最小虚拟节点的值,从所述虚拟节点开始在所述一致性哈希环上顺时针选择与所述副本数量一致的虚拟节点;当所选择的虚拟节点分别属于不同的存储设备,且所述不同的存储设备的使用状态为可用状态时,将数据块发送到所述不同的存储设备上;所述存储设备,用于对所述客户端发送的数据块进行保存。一种客户端,应用在分布式文件系统中,所述系统包括元数据节点,所述元数据节点分别与所述客户端和数据存储节点通信,每个数据节点由至少一个存储设备组成,所述客户端包括保存单元,用于保存基于虚拟节点的一致性哈希环,其中每个存储设备根据其存储容量的大小对应到所述一致性哈希环上的至少一个虚拟节点,每个虚拟节点保存所述虚拟节点所属的存储设备的设备标识和使用状态,根据所述虚拟节点的总数为每个虚拟节点分配虚拟节点的值;发送单元,用于向元数据节点发送文件写入请求;接收单元,用于接收元数据节点根据所述文件写入请求返回的为所述文件分配的文件标识,以及组成所述文件的每个数据块的数据块标识、数据块的副本数量以及选择性因子,所述选择性因子初始化值为零;运算单元,用于对于顺序组成所述文件的每个数据块,对所述文件的文件标识、所述数据块的数据块标识和选择性因子进行哈希运算得到哈希值;获取单元,用于根据所述哈希值查找所述一致性哈希环,从所述一致性哈希环上获取大于所述哈希值的最小虚拟节点的值,从所述虚拟节点开始在所述一致性哈希环上顺时针选择与所述副本数量一致的虚拟节点;发送单元,还用于当所选择的虚拟节点分别属于不同的存储设备,且所述不同的 存储设备的使用状态为可用状态时,将数据块发送到所述不同的存储设备上进行存储。由上述实施例可以看出,本申请实施例中由客户端向元数据节点发送文件写入请求,接收元数据节点根据文件写入请求返回的为该文件分配的文件标识,以及组成所述文件的每个数据块的数据块标识、数据块的副本数量以及初始化值为零的选择性因子,对于顺序组成所述文件的每个数据块,对文件的文件标识、数据块的数据块标识和选择性因子进行哈希运算得到哈希值,根据哈希值查找客户端上保存的一致性哈希环,获取大于该哈希值的最小虚拟节点的值,从该虚拟节点开始在一致性哈希环上顺时针选择与副本数量一致的虚拟节点,当所选择的虚拟节点分别属于不同的存储设备,且不同的存储设备的使用状态为可用状态时,将数据块发送到不同的存储设备上进行存储。本申请实施例的分布式文件系统中,由于客户端中保存了一致性哈希环,因此在执行写入文件操作时,无需元数据节点预先通过文件布局分配表保存文件在各个存储本文档来自技高网
...

【技术保护点】
一种基于分布式文件系统的文件处理方法,所述系统包括元数据节点、和与所述元数据节点分别通信的客户端和数据存储节点,每个数据存储节点由至少一个存储设备组成,其特征在于,客户端内保存基于虚拟节点的一致性哈希环,其中每个存储设备根据其存储容量的大小对应到所述一致性哈希环上的至少一个虚拟节点,每个虚拟节点保存所述虚拟节点所属的存储设备的设备标识和使用状态,根据所述虚拟节点的总数为每个虚拟节点分配虚拟节点的值,所述方法包括:客户端向元数据节点发送文件写入请求;接收元数据节点根据所述文件写入请求返回的为所述文件分配的文件标识,以及组成所述文件的每个数据块的数据块标识、数据块的副本数量以及选择性因子,所述选择性因子初始化值为零;对于顺序组成所述文件的每个数据块,对所述文件的文件标识、所述数据块的数据块标识和选择性因子进行哈希运算得到哈希值;根据所述哈希值查找所述一致性哈希环,从所述一致性哈希环上获取大于所述哈希值的最小虚拟节点的值,从所述虚拟节点开始在所述一致性哈希环上顺时针选择与所述副本数量一致的虚拟节点;当所选择的虚拟节点分别属于不同的存储设备,且所述不同的存储设备的使用状态为可用状态时,将数据块发送到所述不同的存储设备上进行存储。...

【技术特征摘要】
1.一种基于分布式文件系统的文件处理方法,所述系统包括元数据节点、和与所述元数据节点分别通信的客户端和数据存储节点,每个数据存储节点由至少一个存储设备组成,其特征在于,客户端内保存基于虚拟节点的一致性哈希环,其中每个存储设备根据其存储容量的大小对应到所述一致性哈希环上的至少一个虚拟节点,每个虚拟节点保存所述虚拟节点所属的存储设备的设备标识和使用状态,根据所述虚拟节点的总数为每个虚拟节点分配虚拟节点的值,所述方法包括 客户端向元数据节点发送文件写入请求; 接收元数据节点根据所述文件写入请求返回的为所述文件分配的文件标识,以及组成所述文件的每个数据块的数据块标识、数据块的副本数量以及选择性因子,所述选择性因子初始化值为零; 对于顺序组成所述文件的每个数据块,对所述文件的文件标识、所述数据块的数据块标识和选择性因子进行哈希运算得到哈希值; 根据所述哈希值查找所述一致性哈希环,从所述一致性哈希环上获取大于所述哈希值的最小虚拟节点的值,从所述虚拟节点开始在所述一致性哈希环上顺时针选择与所述副本数量一致的虚拟节点; 当所选择的虚拟节点分别属于不同的存储设备,且所述不同的存储设备的使用状态为可用状态时,将数据块发送到所述不同的存储设备上进行存储。2.根据权利要求I所述的方法,其特征在于,还包括 元数据节点中维护存储设备的链表,所述存储设备的设备标识按照加入分布式文件系统的时间逆序添加到所述链表中; 当所述分布式文件系统启动时,以及启动后每次达到预设时间间隔时,元数据节点接收所述数据存储节点上报的存储状态信息,所述存储状态信息包括组成所述存储节点的每个存储设备的设备标识、设备容量、设备已用容量和可能性因子; 元数据节点根据存储状态信息中存储设备的设备标识与链表中的设备标识进行比较,将新增加的存储设备的设备标识逆序添加到所述链表中; 元数据节点遍历所述链表,并根据所述每个存储设备的设备容量生成所述基于虚拟节点的一致性哈希环,并为所述一致性哈希环分配版本号。3.根据权利要求2所述的方法,其特征在于,所述客户端向元数据节点发送文件写入请求之前,还包括 客户端向所述元数据节点发送当前所保存的一致性哈希环的版本号; 所述元数据节点比较所述版本号与当前已保存的版本号是否一致,当不一致时,将与所述当前已保存的版本号对应的一致性哈希环和版本号发送到所述客户端。4.根据权利要求2所述的方法,其特征在于,所述每个虚拟节点还保存所述虚拟节点所属的存储设备的可能性因子; 当所述选择的虚拟节点分别属于不同的存储设备,且所述存储设备的使用状态为可用状态时,所述方法还包括 判断所述存储设备的可能性因子的随机运算值是否为1,如果为I则执行将数据块发送到所述不同的存储设备上进行存储。5.根据权利要求4所述的方法,其特征在于,还包括当所述选择的虚拟节点中的至少两个虚拟节点属于同一个数据存储节点、或所述存储设备的使用状态不为可用状态、或所述存储设备的可能性因子的随机运算值不为1,则将所述选择性因子的值加一; 返回执行对所述文件的文件标识、所述数据块的数据块标识和选择性因子进行哈希运算得到哈希值,直至所述选择的虚拟节点分别属于不同的存储设备,且所述不同的存储设备的使用状态为可用状态,且所述可能性因子的随机运算值为I。6.根据权利要求I所述的方法,其特征在于,还包括 当将所述数据块发送到所述不同的存储设备上进行存储后,客户端将当前选择性因子的值发送到所述元数据节点; 所述元数据节点将所述数据块的选择性因子的初始化值更新为所述当前选择性因子的值。7.根据权利要求6所述的方法,其特征在于,还包括 客户端向所述元数据节点发送文件读取请求,所述文件读取请求中包含文件标识;元数据节点根据所述文件标识获取组成所述文件的每个数据块的数据块标识、数据块的副本数量以及选择性因子的值; 元数据节点将所述文件标识、每个数据块的数据块标识和选择性因子发送给客户端;对于顺序组成所述文件的每个数据块,客户端根据所述文件标识,每个数据块的数据块标识和选择性因子的值进行哈希运算得到哈希值; 客户端根据所述哈希值查找所述一致性哈希环,从所述一致性哈希环上获取大于所述哈希值的最小虚拟节点的值,从所述虚拟节点开始在所述一致性哈希环上顺时针选择与所述副本数量一致的虚拟节点; 客户端根据查找到的虚拟节点,到其中一个虚拟节点对应的存储设备上读取所述数据块; 客户端按照读取的数据块的数据块标识将所有数据块按照顺序组成所述文件。8.一种分布式文件系统,包括元数据节点、和与所述元数据节点分别通信的客户端和数据存储节点,每个数据存储节点由至少一个存储设备组成,其特征在于, 所述客户端,用于保存基于虚拟节点的一致性哈希环,其中每个存储设备根据其存储容量的大小对应到所述一致性哈希环上的至少一个虚拟节点,每个虚拟节点保存所述虚拟节点所属的存储设备的设备标识和使用状态,根据所述虚拟节点的总数为每个虚拟节点分配虚拟节点的值;以及向元数据节点发送文件写入请求; 所述元数据节点,用于根据所述文件写入请求向所述客户端返回的为所述文件分配的文件标识,以及组成所述文件的每个数据块的数据块标识、数据块的副本数量以及选择性因子,所述选择性因子初始化值为零; 所述客户端,还用于对于顺序组成所述文件的每个数据块,对所述文件的文件标识、所述数据块的数据块标识和选择性因子进行哈希运算得到哈希值;根据所述哈希值查找所述一致性哈希环,从所述一致性哈希环上获取大于所述哈希值的最小虚拟节点的值,从所述虚拟节点开始在所述一致性哈希环上顺时针选择与所述副本数量一致的虚拟节点;当所选择的虚拟节点分别属于不同的存储设备,且所述不同的存储设备的使用状态为可用状态时,将数据块发送到所述不同的存储设备上;所述存储设备,用于对所述客户端发送的数据块进行保存。9.根据权利要求8所述的系统,其特征在于, 所述元数据节点,还用于维护存储设备的链表,所述存储设备的设备标识按照加入分布式文件系统的时间逆序添加到所述链表中; 所述数据存储节点,用于当所述分布式文件系统启动时,以及启动后每次达到预设时间间隔时,向所述元数据节点上报所述数据存储节点的存储状态信息,所述存储状态信息包括组成所述存储节点的每个存储设备的设备标识、设备容量、设备已用容量和可能性因子; 所述元数据节点,还用于根据存储状态信息中存储设备的设备标识与链表中的设备标识进行比较,将新增加的存储设备的设备标识逆序添加到所述链表中;遍历所述链表,并根据所述每个存储设备的设备容量生成所述基于虚拟节点的一致性哈希环,并为所述一致性哈希环分配版本号;将所述一致性哈希环和所述版本号发送给所述客户端。10.根据权利要求9所述的系统,其特征在于, 所述客户端,还用于向元数据节点发送文件写入请求之前,向所述元数据节点发送当前所保存的一致性哈希环的版本号; 所述元数据节点,还用于比较所述版本号与当前已保存的版本号是否一致,当不一致时,将与所述当前已保存的版本号对应的一致性哈希环和...

【专利技术属性】
技术研发人员:俞强华邓明潘佳伟王本结
申请(专利权)人:盛大计算机上海有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1