CN102843403A - 基于分布式文件***的文件处理方法、***及客户端 - Google Patents

基于分布式文件***的文件处理方法、***及客户端 Download PDF

Info

Publication number
CN102843403A
CN102843403A CN 201110172216 CN201110172216A CN102843403A CN 102843403 A CN102843403 A CN 102843403A CN 201110172216 CN201110172216 CN 201110172216 CN 201110172216 A CN201110172216 A CN 201110172216A CN 102843403 A CN102843403 A CN 102843403A
Authority
CN
China
Prior art keywords
node
data block
file
memory device
client
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.)
Pending
Application number
CN 201110172216
Other languages
English (en)
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.)
Shengqu Information Technology (Shanghai) Co., Ltd.
Original Assignee
Shanda Computer Shanghai 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 Shanda Computer Shanghai Co Ltd filed Critical Shanda Computer Shanghai Co Ltd
Priority to CN 201110172216 priority Critical patent/CN102843403A/zh
Publication of CN102843403A publication Critical patent/CN102843403A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

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

Abstract

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

Description

基于分布式文件***的文件处理方法、***及客户端
技术领域
本申请涉及计算机存储技术领域,特别是涉及一种基于分布式文件***的文件处理方法、***及客户端。
背景技术
分布式文件***(Distributed File System)是指文件***管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。分布式文件***的设计基于客户机/服务器模式。参见图1A,为一种典型的分布式文件***架构示意图,主要包括客户端、元数据节点和数据存储节点。其中,客户端(Client)通常部署在业务应用服务器上,业务应用程序通过所在客户端向分布式文件***集群发送数据访问请求;数据存储节点(chunk node)用于存放文件数据,其中每个数据存储节点上可能由若干存储设备组成;分布式文件***集群中的元数据节点(meta node)上保存了设备信息表和文件布局分配表,其中设备信息表中用于保存组成每个数据存储节点的存储设备的属性信息,例如,存储容量、可用容量等,文件布局分配表中保存了组成每个文件的每个数据块所在的存储设备,如图1B所示,其中文件1由N个数据块组成,以数据块1为例,需要记录该数据块的数据块id(标识)、数据块所在数据节点的数据节点id和存储设备id。
现有技术,在进行文件写入操作时,元数据节点需要查找设备信息表中各个存储设备的可用容量,以选择合适的存储设备,当客户端根据元数据节点选择的存储设备完成文件写入后,将该文件的文件标识,以及各个数据块与所在存储设备的对应关系记录到文件布局分配表中;在进行文件读取操作时,元数据节点根据文件标识查找文件布局分配表,将获取到的组成该文件的各个数据块所在的位置信息返回给客户端,由客户端根据该位置信息到对应的存储设备上读取文件数据。
发明人在对现有技术的研究过程中发现,现有技术要实现基于分布式文件***的文件读写操作时,需要在元数据节点上通过文件布局分配表记录每个文件的数据块的存储位置信息,当分布式文件***规模扩大时,文件数量将快速增长,相应的文件布局分配表也相应增大,因此增加了元数据节点为存储文件布局分配表所占用的磁盘空间;并且,当文件布局分配表增大时,对该文件布局分配表进行I/O(输入/输出)操作的时间也将变长,由此降低了文件的读写性能。
发明内容
本申请实施例提供了一种基于分布式文件***的文件处理方法、***及客户端,以解决现有根据文件布局分配表进行分布式文件的读写操作,导致占用磁盘存储空间,文件读写性能不高的问题。
为了解决上述技术问题,本申请实施例公开了如下技术方案:
一种基于分布式文件***的文件处理方法,所述***包括元数据节点、和与所述元数据节点分别通信的客户端和数据存储节点,每个数据存储节点由至少一个存储设备组成,客户端内保存基于虚拟节点的一致性哈希环,其中每个存储设备根据其存储容量的大小对应到所述一致性哈希环上的至少一个虚拟节点,每个虚拟节点保存所述虚拟节点所属的存储设备的设备标识和使用状态,根据所述虚拟节点的总数为每个虚拟节点分配虚拟节点的值,所述方法包括:
客户端向元数据节点发送文件写入请求;
接收元数据节点根据所述文件写入请求返回的为所述文件分配的文件标识,以及组成所述文件的每个数据块的数据块标识、数据块的副本数量以及选择性因子,所述选择性因子初始化值为零;
对于顺序组成所述文件的每个数据块,对所述文件的文件标识、所述数据块的数据块标识和选择性因子进行哈希运算得到哈希值;
根据所述哈希值查找所述一致性哈希环,从所述一致性哈希环上获取大于所述哈希值的最小虚拟节点的值,从所述虚拟节点开始在所述一致性哈希环上顺时针选择与所述副本数量一致的虚拟节点;
当所选择的虚拟节点分别属于不同的存储设备,且所述不同的存储设备的使用状态为可用状态时,将数据块发送到所述不同的存储设备上进行存储。
一种分布式文件***,包括:元数据节点、和与所述元数据节点分别通信的客户端和数据存储节点,每个数据存储节点由至少一个存储设备组成,
所述客户端,用于保存基于虚拟节点的一致性哈希环,其中每个存储设备根据其存储容量的大小对应到所述一致性哈希环上的至少一个虚拟节点,每个虚拟节点保存所述虚拟节点所属的存储设备的设备标识和使用状态,根据所述虚拟节点的总数为每个虚拟节点分配虚拟节点的值;以及向元数据节点发送文件写入请求;
所述元数据节点,用于根据所述文件写入请求向所述客户端返回的为所述文件分配的文件标识,以及组成所述文件的每个数据块的数据块标识、数据块的副本数量以及选择性因子,所述选择性因子初始化值为零;
所述客户端,还用于对于顺序组成所述文件的每个数据块,对所述文件的文件标识、所述数据块的数据块标识和选择性因子进行哈希运算得到哈希值;根据所述哈希值查找所述一致性哈希环,从所述一致性哈希环上获取大于所述哈希值的最小虚拟节点的值,从所述虚拟节点开始在所述一致性哈希环上顺时针选择与所述副本数量一致的虚拟节点;当所选择的虚拟节点分别属于不同的存储设备,且所述不同的存储设备的使用状态为可用状态时,将数据块发送到所述不同的存储设备上;
所述存储设备,用于对所述客户端发送的数据块进行保存。
一种客户端,应用在分布式文件***中,所述***包括元数据节点,所述元数据节点分别与所述客户端和数据存储节点通信,每个数据节点由至少一个存储设备组成,所述客户端包括:
保存单元,用于保存基于虚拟节点的一致性哈希环,其中每个存储设备根据其存储容量的大小对应到所述一致性哈希环上的至少一个虚拟节点,每个虚拟节点保存所述虚拟节点所属的存储设备的设备标识和使用状态,根据所述虚拟节点的总数为每个虚拟节点分配虚拟节点的值;
发送单元,用于向元数据节点发送文件写入请求;
接收单元,用于接收元数据节点根据所述文件写入请求返回的为所述文件分配的文件标识,以及组成所述文件的每个数据块的数据块标识、数据块的副本数量以及选择性因子,所述选择性因子初始化值为零;
运算单元,用于对于顺序组成所述文件的每个数据块,对所述文件的文件标识、所述数据块的数据块标识和选择性因子进行哈希运算得到哈希值;
获取单元,用于根据所述哈希值查找所述一致性哈希环,从所述一致性哈希环上获取大于所述哈希值的最小虚拟节点的值,从所述虚拟节点开始在所述一致性哈希环上顺时针选择与所述副本数量一致的虚拟节点;
发送单元,还用于当所选择的虚拟节点分别属于不同的存储设备,且所述不同的存储设备的使用状态为可用状态时,将数据块发送到所述不同的存储设备上进行存储。
由上述实施例可以看出,本申请实施例中由客户端向元数据节点发送文件写入请求,接收元数据节点根据文件写入请求返回的为该文件分配的文件标识,以及组成所述文件的每个数据块的数据块标识、数据块的副本数量以及初始化值为零的选择性因子,对于顺序组成所述文件的每个数据块,对文件的文件标识、数据块的数据块标识和选择性因子进行哈希运算得到哈希值,根据哈希值查找客户端上保存的一致性哈希环,获取大于该哈希值的最小虚拟节点的值,从该虚拟节点开始在一致性哈希环上顺时针选择与副本数量一致的虚拟节点,当所选择的虚拟节点分别属于不同的存储设备,且不同的存储设备的使用状态为可用状态时,将数据块发送到不同的存储设备上进行存储。本申请实施例的分布式文件***中,由于客户端中保存了一致性哈希环,因此在执行写入文件操作时,无需元数据节点预先通过文件布局分配表保存文件在各个存储节点的存储设备上的分布情况,将原本在元数据节点上执行的文件分配和定位操作迁移到客户端执行,元数据节点只需要更新文件数据块的选择性因子,因此减少了对元数据节点存储空间的占用;由于每个客户端只需要在自身执行写入操作时根据一致性哈希环进行存储设备的定位,而不是由元数据节点对***中的所有客户端的写入请求进行定位,因此可以提高写入数据时的定位速度;并且,通过对一致性哈希环上每个虚拟节点对应的存储设备的使用状态进行判断从而自适应进行存储设备的选择,由此实现了根据磁盘的剩余容量使***达到负载均衡。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1A为一种典型的分布式文件***架构示意图;
图1B为现有技术中的文件布局分配表的结构示意图;
图2为本申请基于分布式文件***的文件处理方法的第一实施例流程图;
图3A为本申请基于分布式文件***的文件处理方法的第二实施例流程图;
图3B为本申请实施例中的存储设备的链表示意图;
图3C为本申请实施例中一致性哈希环的结构示意图;
图4为本申请基于分布式文件***的文件处理方法的第三实施例流程图;
图5为本申请基于分布式文件***的文件处理方法的第四实施例流程图;
图6为本申请分布式文件***的实施例框图;
图7为本申请客户端的实施例框图。
具体实施方式
本发明如下实施例提供了一种基于分布式文件***的式文件处理方法、***及客户端。
为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。
本申请实施例中的分布式文件***包括元数据节点,与元数据节点通信的若干客户端,以及与元数据节点通信的若干数据存储节点,其中每个数据存储节点由至少一个存储设备组成,每个存储设备的存储性能可能不同。
参见图2,为本申请基于分布式文件***的文件处理方法的第一实施例流程图:
步骤201:客户端内保存基于虚拟节点的一致性哈希环。
对于分布式文件***中的数据存储节点,其上的每个存储设备根据其存储容量的大小对应到一致性哈希环上的至少一个虚拟节点,每个虚拟节点保存虚拟节点所属的存储设备的设备标识和使用状态,根据虚拟节点的总数为每个虚拟节点分配虚拟节点的值。进一步,每两个相邻的虚拟节点不属于同一个存储设备,以便在写入操作时,减少选择到属于同一存储设备的虚拟节点的可能性。
步骤202:客户端向元数据节点发送文件写入请求。
当客户端本地缓存内的数据超过预设数量时,需要将这些数据以文件形式写入数据存储节点的存储设备中,因此向元数据节点发送文件写入请求。
步骤203:接收元数据节点根据文件写入请求返回的为该文件分配的文件标识,以及组成该文件的每个数据块的数据块标识、数据块的副本数量以及选择性因子,选择性因子初始化值为零。
其中,为文件分配的文件标识可以用File inode number表示;每个数据块的标识可以用stripe id表示,stripe id按照数据块在文件中的顺序进行分配,在分布式文件***中,文件一般按照预设大小进行分块;数据块的副本数量可以用replication count表示,通常每个数据块需要被保存多份,即副本数量,该副本数量可以由管理员进行设定,通常同一数据块的不同副本保存在不同节点的不同存储设备上,以保证某个存储设备故障时,不影响从其它存储上读取到该数据块;选择性因子用choice factor表示,其初始值为0,在对每个数据块进行哈希值计算时,可以根据需要进行加一调整,以便在一致性哈希环上相应的虚拟节点。
步骤204:对于顺序组成该文件的每个数据块,对该文件的文件标识、数据块的数据块标识和选择性因子进行哈希运算得到哈希值。
步骤205:根据哈希值查找一致性哈希环,从一致性哈希环上获取大于哈希值的最小虚拟节点的值,从该虚拟节点开始在一致性哈希环上顺时针选择与副本数量一致的虚拟节点。
步骤206:当所选择的虚拟节点分别属于不同的存储设备,且不同的存储设备的使用状态为可用状态时,将数据块发送到不同的存储设备上进行存储。
进一步,当所述选择的虚拟节点中的至少两个虚拟节点属于同一个数据存储节点、或某个存储设备的使用状态不为可用状态,则可以将选择性因子的值加一,然后返回步骤204,用当前的选择性因子的值计算哈希值,直至所选择的虚拟节点分别属于不同的存储设备,且不同的存储设备的使用状态为可用状态。此时,客户端可以将当前的选择性因子的值发送给元数据节点,由元数据节点将所记录的数据块的选择性因子的值更新为该当前的选择性因子的值。
参见图3A,为本申请基于分布式文件***的文件处理方法的第二实施例流程图,该实施例示出了分布式文件***中生成一致性哈希环的过程:
步骤301:元数据节点中维护存储设备的链表,该存储设备的设备标识按照加入分布式文件***的时间逆序添加到该链表中。
在分布式文件***中,包含了若干数据存储节点,每个存储节点上包含了若干的存储设备,每个存储设备分配有设备标识,元数据节点中维护一个存储设备的链表,该链表中记录了所有存储设备的设备的标识,这些设备标识按照设备加入***的时间逆序添加到链表中,如图3B所示,链表尾处是最先加入***的存储设备1,链表头处是最新加入***的存储设备N。
步骤302:当该分布式文件***启动时,以及启动后每次达到预设时间间隔时,元数据节点接收该数据存储节点上报的存储状态信息。
在分布式文件***初始启动时,需要将***中所有数据存储节点的存储设备的存储状态信息上报给元数据节点;当***启动后,***中存储节点中的存储设备的状态可能发生变化,因此可以预先设置按照预设的时间间隔由数据存储节点向元数据节点上报存储设备的存储状态信息。
其中,数据存储节点上报的存储状态信息可以包括:组成该存储节点的每个存储设备的设备标识、设备容量、设备已用容量和可能性因子;其中,设备标识用于唯一标识***中的一个存储设备;设备容量表示该存储设备的总存储量大小;设备已用容量表示该存储设备已用存储量的大小,根据该已用容量可以确定存储设备的使用状态,例如,如果已用容量占总存储量的比例大于预设比例,则存储设备的使用状态为“已满状态”,如果小于预设比例,则使用状态为“可用状态”;可能性因子用于表示该存储设备的性能,通常可以用0至1之间的数值表示,例如,高速存储设备如固态硬盘等,其存储性能较高,则可能性因子可以设置为“1”,低速存储设备如SATA硬盘等,其存储性能较低,则可能性因子可以设置为“0.1”,在执行写入操作时,可以根据可能性因子选择存储性能较高的存储设备,以提高写入速度。
步骤303:元数据节点根据存储状态信息中存储设备的设备标识与链表中的设备标识进行比较。
步骤304:根据比较结果将新增加的存储设备的设备标识逆序添加到该链表中。
当分布式***中新增加了存储设备时,则可以按照其所在数据存储节点的上报顺序将新增的存储设备逆序添加到链表中。
步骤305:元数据节点遍历该链表,根据链表中每个存储设备的设备容量生成基于虚拟节点的一致性哈希环,并为该一致性哈希环分配版本号。
其中,每个存储设备根据其存储容量大小对应所述一致性哈希环上的至少一个虚拟节点,根据所述虚拟节点的总数为每个虚拟节点分配虚拟节点的值。
假设分布式文件***中包含三个数据存储节点,分别为NodeA、NodeB和NodeC,上述三个存储节点中包含的存储设备(Storage Device)和各个存储设备的容量如下表1所示:
表1
Figure BDA0000070570020000081
基于上述表1所示出的数据存储节点,假设哈希函数在一致性哈希环上映射的最大值为1000,则每个存储设备根据其存储容量的大小以虚拟节点的形式映射到该一致性哈希环上,每个存储设备对应至少一个虚拟节点(Vnode),每个虚拟节点按照相同间隔分配一个值,任意两个相邻虚拟节点不属于同一个存储设备,参见图3B,为根据上表1所列存储设备生成的一致性哈希环的结构示意图:其中Vnode1所分配的值为100,其属于存储设备A1,顺时针方向的,Vnode2所分配的值为200,其属于存储设备A2,直至Vnode10所分配的值为1000,其属于存储设备C1,由图3C可知,存储设备的容量越大,则属于该存储设备的虚拟节点的数量越多,例如,存储设备A1仅对应一个虚拟节点,而存储设备B1则对应三个虚拟存储节点。
一致性哈希环上的每个虚拟节点维护一个信息列表,该信息列表中包含了该虚拟节点所属的存储设备的设备标识,存储设备的设备容量,存储设备的设备已用容量,使用状态和可能性因子。
对于使用状态,可以分为可用状态、已满状态和不可用状态。其中,可用状态和已满状态可以根据设备已用容量占设备容量的比例进行设置,不可用状态可以根据数据存储节点上报的存储设备的信息,或者***中数据存储节点的状态进行设备,比如某个存储设备的磁盘损坏,或者其所在的数据存储节点下线,则可设置该存储设备的使用状态为不可用状态。当虚拟节点的使用状态为已满状态时,其对应的存储设备的磁盘空间不能再进行分配,但是其上的数据可以读取;当虚拟节点的使用状态为不可用状态,则对应的存储设备的磁盘空间不能再进行分配,且其上的数据也不可以读取。
参见图4,为本申请基于分布式文件***的文件处理方法的第三实施例流程图,该实施例示出了分布式文件***中写入文件的过程:
步骤401:客户端向元数据节点发送当前所保存的一致性哈希环的版本号。
当***中的存储设备增加后,元数据节点生成新的一致性哈希环,并为该新的一致性哈希环分配新的版本号。客户端在执行写入文件操作时,需要需要遵照新的一致性哈希环进行,因此为了获知元数据节点中是否更新了一致性哈希环,客户端向元数据节点发送当前保存的版本号。
步骤402:元数据节点比较该版本号与当前已保存的版本号是否一致。
元数据节点接收到客户端发送的版本号后,与自身保存的版本号进行比较,如果一致,则说明一致性哈希环未更新,如果不一致,则说明一致性哈希环已更新。
步骤403:当不一致时,将与当前已保存的版本号对应的一致性哈希环和版本号发送到客户端。
步骤404:客户端内保存接收到的基于虚拟节点的一致性哈希环,每个虚拟节点保存该虚拟节点所属存储设备的设备标识、使用状态和选择性因子。
通常每个虚拟接节点维护一个信息列表,如前述第二实施例中的描述,该信息列表中除了包括该虚拟节点所属的存储设备的设备标识、使用状态和选择性因子外,还可以包括存储设备的设备容量和定时更新的存储设备的设备已用容量。
步骤405:客户端向元数据节点发送文件写入请求。
步骤406:接收元数据节点根据文件写入请求返回的为该文件分配的文件标识,以及组成该文件的每个数据块的数据块标识、数据块的副本数量以及选择性因子,选择性因子初始化值为零。
其中,为文件分配的文件标识可以用File inode number表示;每个数据块的标识可以用stripe id表示,stripe id按照数据块在文件中的顺序进行分配,在分布式文件***中,文件一般按照预设大小进行分块;数据块的副本数量可以用replication count表示,通常每个数据块需要被保存多份,即副本数量,该副本数量可以由管理员进行设定,通常同一数据块的不同副本保存在不同节点的不同存储设备上,以保证某个存储设备故障时,不影响从其它存储上读取到该数据块;选择性因子用choice factor表示,其初始值为0,在对每个数据块进行哈希值计算时,可以根据需要进行加一调整,以便在一致性哈希环上相应的虚拟节点。
步骤407:对于顺序组成该文件的每个数据块,对该文件的文件标识、数据块的数据块标识和选择性因子进行哈希运算得到哈希值。
步骤408:根据哈希值查找一致性哈希环,从一致性哈希环上获取大于哈希值的最小虚拟节点的值,从该虚拟节点开始在一致性哈希环上顺时针选择与副本数量一致的虚拟节点。
在获得哈希值后,可以具体采用二分法在一致性哈希环上查找大于该哈希值的最小虚拟节点的值,由于一致性哈希环上的虚拟节点按照顺时针方向排列,因此从该最小值对应的虚拟节点开始顺时针获取与副本数量一致的虚拟节点,根据虚拟节点上维护的信息列表,即可获知每个虚拟节点所属的存储设备、使用状态和可能性因子。
步骤409:判断所选择的虚拟节点对应的存储设备是否满足预设的三个条件,若是,则执行步骤411;否则,执行步骤410。
其中,预设的三个条件包括:
1、所选择的虚拟节点所对应的存储设备均不相同;只有虚拟节点对应的存储设备均不相同,才能保证数据块的副本不会保存在同一个存储设备上,由此保证***中冗余备份的目的。
2、所选择的虚拟节点对应的存储设备的使用状态均为可用状态;只有存储设备的使用状态为可用状态才能支持写入数据,已满状态和不可用状态均不支持写入数据。
3、所选择的虚拟节点的选择性因子根据随机函数计算的结果为1;由于每个存储设备根据其存储性能的高低设置了选择性因子,本申请实施例可以采用如下的随机算法:通常编程语言中都提供有随机函数random,利用该函数可以产生0~1之间的随机数,本实施例中假设可能性因子为C,则将C输入上述随机函数random,输出一个计算结果R,如果R小于C则返回值1,否则返回值0。
步骤410:将当前选择性因子的值加一,返回步骤407。
当上述三个条件中的至少一个条件不满足时,需要将选择性因子加一,并根据该新的选择性因子重新计算哈希值,直到满足上述三个条件为止。
步骤411:将数据块发送到选择的虚拟节点对应的不同的存储设备上进行存储。
当上述三个条件均满足,即所选择的虚拟节点分别属于不同的存储设备,且不同的存储设备的使用状态为可用状态,且不同的存储设备的可能性因子的随机运算值是为1时,可以将数据块发到与副本数量一致的虚拟节点所对应的存储设备上进行存储。
步骤412:客户端将组成文件的数据块的当前选择性因子的值发送到元数据节点。
步骤413:元数据节点将数据块的选择性因子的初始化值更新为接收到的当前选择性因子的值。
参见图5,为本申请基于分布式文件***的文件处理方法的第四实施例流程图,该实施例示出了分布式文件***中读取文件的过程:
步骤501:客户端向元数据节点发送文件读取请求,该文件读取请求中包含文件标识。
步骤502:元数据节点根据文件标识获取组成该文件的每个数据块的数据块标识、数据块的副本数量以及选择性因子的值。
步骤503:元数据节点将文件标识、每个数据块的数据块标识和选择性因子发送给客户端。
步骤504:对于顺序组成该文件的每个数据块,客户端根据文件标识,每个数据块的数据块标识和选择性因子的值进行哈希运算得到哈希值。
其中,客户端所采用的哈希运算与写入数据时所采用的哈希运算一致,以保证根据文件标识,每个数据块的数据块标识和选择性因子的值计算得到的哈希值不变。
步骤505:客户端根据该哈希值查找一致性哈希环,从一致性哈希环上获取大于该哈希值的最小虚拟节点的值,从该虚拟节点开始在一致性哈希环上顺时针选择与副本数量一致的虚拟节点。
步骤506:客户端根据查找到的虚拟节点,到其中一个虚拟节点对应的存储设备上读取数据块。
对于每个数据块,在执行写入操作时,都通过与副本数量一致的存储设备进行了保存,因此找到与副本数量一致的存储设备后,可以从中选择一个存储设备读取数据块即可,例如,可以选择大于哈希值的最小虚拟节点的值对应的存储设备。
步骤507:客户端按照读取的数据块的数据块标识将所有数据块按照顺序组成所述文件。
由上述实施例可见,由于客户端中保存了一致性哈希环,因此在执行写入文件操作时,无需元数据节点预先通过文件布局分配表保存文件在各个存储节点的存储设备上的分布情况,将原本在元数据节点上执行的文件分配和定位操作迁移到客户端执行,元数据节点只需要更新文件数据块的选择性因子,因此减少了对元数据节点存储空间的占用;由于每个客户端只需要在自身执行写入操作时根据一致性哈希环进行存储设备的定位,而不是由元数据节点对***中的所有客户端的写入请求进行定位,因此可以提高写入数据时的定位速度;并且,通过对一致性哈希环上每个虚拟节点对应的存储设备的使用状态进行判断从而自适应进行存储设备的选择,由此实现了根据磁盘的剩余容量使***达到负载均衡。
与本申请基于分布式文件***的文件处理方法的实施例相对应,本申请还提供了分布式文件***及客户端的实施例。
参见图6,为本申请分布式文件***的实施例框图:
该分布式文件***包括:元数据节点610、与元数据节点610分别通信的客户端620和数据存储节点630,每个存储节点630由至少一个存储设备631组成。为了示例方便,图6中仅示出了一个客户端610和三个存储节点630,且每个存储节点中分别示出了一个存储设备、两个存储设备和三个存储设备。需要说明的是,在实际应用过程中,客户端、数据存储节点及每个数据存储节点上的存储设备的数量可以根据需要进行设置,图6中的实施例不用于对***的设置进行限制。
其中,所述客户端620,用于保存基于虚拟节点的一致性哈希环,其中每个存储设备根据其存储容量的大小对应到所述一致性哈希环上的至少一个虚拟节点,每个虚拟节点保存所述虚拟节点所属的存储设备的设备标识和使用状态,根据所述虚拟节点的总数为每个虚拟节点分配虚拟节点的值;以及向元数据节点发送文件写入请求;
所述元数据节点610,用于根据所述文件写入请求向所述客户端返回的为所述文件分配的文件标识,以及组成所述文件的每个数据块的数据块标识、数据块的副本数量以及选择性因子,所述选择性因子初始化值为零;
所述客户端620,还用于对于顺序组成所述文件的每个数据块,对所述文件的文件标识、所述数据块的数据块标识和选择性因子进行哈希运算得到哈希值;根据所述哈希值查找所述一致性哈希环,从所述一致性哈希环上获取大于所述哈希值的最小虚拟节点的值,从所述虚拟节点开始在所述一致性哈希环上顺时针选择与所述副本数量一致的虚拟节点;当所选择的虚拟节点分别属于不同的存储设备,且所述不同的存储设备的使用状态为可用状态时,将数据块发送到所述不同的存储设备上;
所述存储设备631,用于对所述客户端发送的数据块进行保存。
进一步,所述元数据节点610,还用于维护存储设备的链表,所述存储设备的设备标识按照加入分布式文件***的时间逆序添加到所述链表中;
所述数据存储节点630,用于当所述分布式文件***启动时,以及启动后每次达到预设时间间隔时,向所述元数据节点上报所述数据存储节点的存储状态信息,所述存储状态信息包括组成所述存储节点的每个存储设备的设备标识、设备容量、设备已用容量和可能性因子;
所述元数据节点610,还用于根据存储状态信息中存储设备的设备标识与链表中的设备标识进行比较,将新增加的存储设备的设备标识逆序添加到所述链表中;遍历所述链表,并根据所述每个存储设备的设备容量生成所述基于虚拟节点的一致性哈希环,并为所述一致性哈希环分配版本号;将所述一致性哈希环和所述版本号发送给所述客户端。
进一步,所述客户端620,还用于向元数据节点发送文件写入请求之前,向所述元数据节点发送当前所保存的一致性哈希环的版本号;
所述元数据节点610,还用于比较所述版本号与当前已保存的版本号是否一致,当不一致时,将与所述当前已保存的版本号对应的一致性哈希环和版本号发送到所述客户端。
进一步,所述客户端620,还用于当每个虚拟节点还保存了所述虚拟节点所属的存储设备的可能性因子,则在当所述选择的虚拟节点分别属于不同的存储设备,且所述存储设备的使用状态为可用状态时,判断所述存储设备的可能性因子的随机运算值是否为1,如果为1则执行将数据块发送到所述不同的存储设备上进行存储。
进一步,所述客户端620,还用于当所述选择的虚拟节点中的至少两个虚拟节点属于同一个数据存储节点、或所述存储设备的使用状态不为可用状态、或所述存储设备的可能性因子的随机运算值不为1,则将所述选择性因子的值加一;返回执行对所述文件的文件标识、所述数据块的数据块标识和选择性因子进行哈希运算得到哈希值,直至所述选择的虚拟节点分别属于不同的存储设备,且所述不同的存储设备的使用状态为可用状态,且所述可能性因子的随机运算值为1。
进一步,所述客户端620,还用于当将所述数据块发送到所述不同的存储设备上进行存储后,将当前选择性因子的值发送到所述元数据节点;
所述元数据节点610,还用于将所述数据块的选择性因子的初始化值更新为所述当前选择性因子的值。
进一步,所述客户端620,还用于向所述元数据节点发送文件读取请求,所述文件读取请求中包含文件标识;
所述元数据节点610,还用于根据所述文件标识获取组成所述文件的每个数据块的数据块标识、数据块的副本数量以及选择性因子的值;将所述文件标识、每个数据块的数据块标识和选择性因子发送给客户端;
所述客户端620,还用于对于顺序组成所述文件的每个数据块,根据所述文件标识,每个数据块的数据块标识和选择性因子的值进行哈希运算得到哈希值;根据所述哈希值查找所述一致性哈希环,从所述一致性哈希环上获取大于所述哈希值的最小虚拟节点的值,从所述虚拟节点开始在所述一致性哈希环上顺时针选择与所述副本数量一致的虚拟节点;根据查找到的虚拟节点,到其中一个虚拟节点对应的存储设备上读取所述数据块;按照读取的数据块的数据块标识将所有数据块按照顺序组成所述文件。
参见图7,为本申请客户端的实施例框图:
该客户端应用在本申请实施例示出的分布式文件***中,该***的架构可以参见图6所示的***实施例,包括元数据节点,所述元数据节点分别与所述客户端和数据存储节点通信,每个数据节点由至少一个存储设备组成。该客户端包括:保存单元710、发送单元720、接收单元730、运算单元740和获取单元750。
其中,保存单元710,用于保存基于虚拟节点的一致性哈希环,其中每个存储设备根据其存储容量的大小对应到所述一致性哈希环上的至少一个虚拟节点,每个虚拟节点保存所述虚拟节点所属的存储设备的设备标识和使用状态,根据所述虚拟节点的总数为每个虚拟节点分配虚拟节点的值;
发送单元720,用于向元数据节点发送文件写入请求;
接收单元730,用于接收元数据节点根据所述文件写入请求返回的为所述文件分配的文件标识,以及组成所述文件的每个数据块的数据块标识、数据块的副本数量以及选择性因子,所述选择性因子初始化值为零;
运算单元740,用于对于顺序组成所述文件的每个数据块,对所述文件的文件标识、所述数据块的数据块标识和选择性因子进行哈希运算得到哈希值;
获取单元750,用于根据所述哈希值查找所述一致性哈希环,从所述一致性哈希环上获取大于所述哈希值的最小虚拟节点的值,从所述虚拟节点开始在所述一致性哈希环上顺时针选择与所述副本数量一致的虚拟节点;
发送单元720,还用于当所选择的虚拟节点分别属于不同的存储设备,且所述不同的存储设备的使用状态为可用状态时,将数据块发送到所述不同的存储设备上进行存储。
进一步,所述接收单元730,还用于当所述分布式文件***启动时,以及启动后每次达到预设时间间隔时,接收所述元数据节点发送的一致性哈希环和所述一致性哈希环的版本号;其中,所述元数据节点用于维护存储设备的的链表,所述存储设备的设备标识按照加入分布式文件***的时间逆序添加到所述链表中,当所述分布式文件***启动时,接收所述数据存储节点上报的存储状态信息,所述存储状态信息包括组成所述存储节点的每个存储设备的设备标识、设备容量、设备已用容量和可能性因子,根据存储状态信息中存储设备的设备标识与链表中的设备标识进行比较,将新增加的存储设备的设备标识逆序添加到所述链表中,遍历所述链表,并根据所述每个存储设备的设备容量生成所述基于虚拟节点的一致性哈希环,并为所述一致性哈希环分配版本号;
所述发送单元720,还用于向元数据节点发送文件写入请求之前,向所述元数据节点发送当前所保存的一致性哈希环的版本号;
所述接收单元730,还用于在所述元数据节点比较所述版本号与当前已保存的版本号不一致时,接收所述元数据节点发送的与所述当前已保存的版本号对应的一致性哈希环和版本号。
进一步,该客户端还可以包括(图7中未示出):判断单元,用于当所述每个虚拟节点还保存所述虚拟节点所属的存储设备的可能性因子,且当所述选择的虚拟节点分别属于不同的存储设备,且所述存储设备的使用状态为可用状态时,判断所述存储设备的可能性因子的随机运算值是否为1;
所述发送单元720,还用于当所述判断单元判断所述随机运算值为1时,将数据块发送到所述不同的存储设备上进行存储。
进一步,所述运算单元740,还用于当所述选择的虚拟节点中的至少两个虚拟节点属于同一个数据存储节点、或所述存储设备的使用状态不为可用状态、或所述存储设备的可能性因子的随机运算值不为1,则将所述选择性因子的值加一,并返回执行对所述文件的文件标识、所述数据块的数据块标识和选择性因子进行哈希运算得到哈希值,直至所述选择的虚拟节点分别属于不同的存储设备,且所述不同的存储设备的使用状态为可用状态,且所述可能性因子的随机运算值为1。
进一步,所述发送单元720,还用于当所述发送单元将所述数据块发送到所述不同的存储设备上进行存储后,将当前选择性因子的值发送到所述元数据节点,以使所述元数据节点将所述数据块的选择性因子的初始化值更新为所述当前选择性因子的值。
进一步,所述发送单元720,还用于向所述元数据节点发送文件读取请求,所述文件读取请求中包含文件标识;
所述接收单元730,还用于接收所述元数据节点发送的根据所述文件标识获取的组成所述文件的每个数据块的数据块标识、数据块的副本数量以及选择性因子的值;
所述运算单元740,还用于对于顺序组成所述文件的每个数据块,客户端根据所述文件标识,每个数据块的数据块标识和选择性因子的值进行哈希运算得到哈希值;
所述获取单元750,还用于根据所述哈希值查找所述一致性哈希环,从所述一致性哈希环上获取大于所述哈希值的最小虚拟节点的值,从所述虚拟节点开始在所述一致性哈希环上顺时针选择与所述副本数量一致的虚拟节点;
所述客户端还包括(图7中未示出):读取单元,根据查找到的虚拟节点,到其中一个虚拟节点对应的存储设备上读取所述数据块,并按照读取的数据块的数据块标识将所有数据块按照顺序组成所述文件。
通过对以上实施方式的描述可知,本申请实施例中由客户端向元数据节点发送文件写入请求,接收元数据节点根据文件写入请求返回的为该文件分配的文件标识,以及组成所述文件的每个数据块的数据块标识、数据块的副本数量以及初始化值为零的选择性因子,对于顺序组成所述文件的每个数据块,对文件的文件标识、数据块的数据块标识和选择性因子进行哈希运算得到哈希值,根据哈希值查找客户端上保存的一致性哈希环,获取大于该哈希值的最小虚拟节点的值,从该虚拟节点开始在一致性哈希环上顺时针选择与副本数量一致的虚拟节点,当所选择的虚拟节点分别属于不同的存储设备,且不同的存储设备的使用状态为可用状态时,将数据块发送到不同的存储设备上进行存储。本申请实施例的分布式文件***中,由于客户端中保存了一致性哈希环,因此在执行写入文件操作时,无需元数据节点预先通过文件布局分配表保存文件在各个存储节点的存储设备上的分布情况,将原本在元数据节点上执行的文件分配和定位操作迁移到客户端执行,元数据节点只需要更新文件数据块的选择性因子,因此减少了对元数据节点存储空间的占用;由于每个客户端只需要在自身执行写入操作时根据一致性哈希环进行存储设备的定位,而不是由元数据节点对***中的所有客户端的写入请求进行定位,因此可以提高写入数据时的定位速度;并且,通过对一致性哈希环上每个虚拟节点对应的存储设备的使用状态进行判断从而自适应进行存储设备的选择,由此实现了根据磁盘的剩余容量使***达到负载均衡。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (20)

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

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201110172216 CN102843403A (zh) 2011-06-23 2011-06-23 基于分布式文件***的文件处理方法、***及客户端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201110172216 CN102843403A (zh) 2011-06-23 2011-06-23 基于分布式文件***的文件处理方法、***及客户端

Publications (1)

Publication Number Publication Date
CN102843403A true CN102843403A (zh) 2012-12-26

Family

ID=47370462

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201110172216 Pending CN102843403A (zh) 2011-06-23 2011-06-23 基于分布式文件***的文件处理方法、***及客户端

Country Status (1)

Country Link
CN (1) CN102843403A (zh)

Cited By (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103384550A (zh) * 2012-12-28 2013-11-06 华为技术有限公司 储存数据的方法及装置
CN103441906A (zh) * 2013-09-25 2013-12-11 哈尔滨工业大学 基于自主计算的代理缓存集群异常检测***
CN104158897A (zh) * 2014-08-25 2014-11-19 曙光信息产业股份有限公司 一种分布式文件***中文件布局的更新方法
CN104636286A (zh) * 2015-02-06 2015-05-20 华为技术有限公司 用于数据访问的方法和设备
CN104780201A (zh) * 2015-03-02 2015-07-15 新浪网技术(中国)有限公司 一种ipvs集群中的数据包处理方法及装置
CN105278882A (zh) * 2015-10-26 2016-01-27 创新科存储技术有限公司 一种分布式文件***的磁盘管理方法
WO2016029744A1 (zh) * 2014-08-27 2016-03-03 华为技术有限公司 一种元数据恢复方法及相关装置
CN105653629A (zh) * 2015-12-28 2016-06-08 湖南蚁坊软件有限公司 一种基于哈希环的分布式数据过滤方法
CN106034144A (zh) * 2015-03-12 2016-10-19 中国人民解放军国防科学技术大学 一种基于负载均衡的虚拟资产数据存储方法
CN106445409A (zh) * 2016-09-13 2017-02-22 郑州云海信息技术有限公司 一种分布式块存储的数据写入方法及装置
CN106776000A (zh) * 2016-11-17 2017-05-31 郑州云海信息技术有限公司 一种分布式文件***负载平衡实现方法
CN106897360A (zh) * 2017-01-09 2017-06-27 深圳市中博科创信息技术有限公司 基于分布式文件***的文件处理方法及装置
CN107071031A (zh) * 2017-04-19 2017-08-18 电子科技大学 基于chunk块版本号的分布式块存储***数据恢复判定方法
CN107908372A (zh) * 2017-12-14 2018-04-13 南京云创大数据科技股份有限公司 一种异地异构的多融合存储方法
CN108132830A (zh) * 2016-12-01 2018-06-08 北京金山云网络技术有限公司 一种任务调度方法、装置及***
CN108197323A (zh) * 2018-02-05 2018-06-22 丁武轩 应用于分布式***地图数据处理方法
CN108304555A (zh) * 2018-02-05 2018-07-20 丁武轩 分布式地图数据处理方法
CN104754000B (zh) * 2013-12-30 2018-08-24 国家电网公司 一种负载均衡方法及***
CN109739435A (zh) * 2018-12-03 2019-05-10 中科恒运股份有限公司 文件存储和更新方法及装置
CN109885423A (zh) * 2019-01-04 2019-06-14 上海七印信息科技有限公司 一种区块链源数据备份方法
CN110046160A (zh) * 2019-03-15 2019-07-23 中国科学院计算技术研究所 一种基于条带的一致性哈希存储***构建方法
CN110086840A (zh) * 2018-01-26 2019-08-02 浙江宇视科技有限公司 图像数据存储方法、装置及计算机可读存储介质
CN110096227A (zh) * 2019-03-28 2019-08-06 北京奇艺世纪科技有限公司 数据存储方法、数据处理方法、装置、电子设备及计算机可读介质
CN110297799A (zh) * 2014-02-19 2019-10-01 斯诺弗雷克公司 数据管理***及方法
CN110427384A (zh) * 2019-07-30 2019-11-08 北京明略软件***有限公司 提示信息的发送方法及装置、存储介质、电子装置
CN110457263A (zh) * 2019-08-13 2019-11-15 北京首都在线科技股份有限公司 一种数据存储方法和装置
CN110603517A (zh) * 2017-06-08 2019-12-20 日立数据管理有限公司 对分布的经过擦除编码的对象去复制
CN110633053A (zh) * 2019-09-16 2019-12-31 北京马赫谷科技有限公司 存储容量均衡方法、对象存储方法及装置
CN111552441A (zh) * 2020-04-29 2020-08-18 重庆紫光华山智安科技有限公司 数据存储方法和装置、主节点及分布式***
CN112230861A (zh) * 2020-10-26 2021-01-15 金钱猫科技股份有限公司 一种基于一致性哈希算法的数据存储方法及终端
CN112241336A (zh) * 2019-07-19 2021-01-19 伊姆西Ip控股有限责任公司 用于备份数据的方法、设备和计算机程序产品
CN112948120A (zh) * 2021-03-18 2021-06-11 广东好太太智能家居有限公司 负载均衡方法、***、装置和存储介质
CN112988680A (zh) * 2021-03-30 2021-06-18 联想凌拓科技有限公司 数据加速方法、缓存单元、电子设备及存储介质
CN113282243A (zh) * 2021-06-09 2021-08-20 杭州海康威视***技术有限公司 存储对象文件的方法及装置
CN113672524A (zh) * 2021-08-20 2021-11-19 上海哔哩哔哩科技有限公司 基于多级缓存的数据处理方法及***
CN113806298A (zh) * 2021-08-09 2021-12-17 中国地质大学(武汉) 分布式文件***存储优化方法、计算机设备及存储介质
CN116522395A (zh) * 2023-05-22 2023-08-01 上海汉朔信息科技有限公司 对大数据存储***中的数据文件进行处理的方法及***

Cited By (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103384550B (zh) * 2012-12-28 2016-05-25 华为技术有限公司 储存数据的方法及装置
CN103384550A (zh) * 2012-12-28 2013-11-06 华为技术有限公司 储存数据的方法及装置
CN103441906A (zh) * 2013-09-25 2013-12-11 哈尔滨工业大学 基于自主计算的代理缓存集群异常检测***
CN104754000B (zh) * 2013-12-30 2018-08-24 国家电网公司 一种负载均衡方法及***
CN110297799A (zh) * 2014-02-19 2019-10-01 斯诺弗雷克公司 数据管理***及方法
CN104158897B (zh) * 2014-08-25 2017-06-23 曙光信息产业股份有限公司 一种分布式文件***中文件布局的更新方法
CN104158897A (zh) * 2014-08-25 2014-11-19 曙光信息产业股份有限公司 一种分布式文件***中文件布局的更新方法
WO2016029744A1 (zh) * 2014-08-27 2016-03-03 华为技术有限公司 一种元数据恢复方法及相关装置
CN104636286A (zh) * 2015-02-06 2015-05-20 华为技术有限公司 用于数据访问的方法和设备
CN104636286B (zh) * 2015-02-06 2018-07-03 华为技术有限公司 用于数据访问的方法和设备
CN104780201A (zh) * 2015-03-02 2015-07-15 新浪网技术(中国)有限公司 一种ipvs集群中的数据包处理方法及装置
CN106034144A (zh) * 2015-03-12 2016-10-19 中国人民解放军国防科学技术大学 一种基于负载均衡的虚拟资产数据存储方法
CN105278882A (zh) * 2015-10-26 2016-01-27 创新科存储技术有限公司 一种分布式文件***的磁盘管理方法
CN105653629B (zh) * 2015-12-28 2020-03-13 湖南蚁坊软件股份有限公司 一种基于哈希环的分布式数据过滤方法
CN105653629A (zh) * 2015-12-28 2016-06-08 湖南蚁坊软件有限公司 一种基于哈希环的分布式数据过滤方法
CN106445409A (zh) * 2016-09-13 2017-02-22 郑州云海信息技术有限公司 一种分布式块存储的数据写入方法及装置
CN106776000A (zh) * 2016-11-17 2017-05-31 郑州云海信息技术有限公司 一种分布式文件***负载平衡实现方法
CN108132830A (zh) * 2016-12-01 2018-06-08 北京金山云网络技术有限公司 一种任务调度方法、装置及***
CN108132830B (zh) * 2016-12-01 2020-12-25 北京金山云网络技术有限公司 一种任务调度方法、装置及***
CN106897360A (zh) * 2017-01-09 2017-06-27 深圳市中博科创信息技术有限公司 基于分布式文件***的文件处理方法及装置
CN107071031A (zh) * 2017-04-19 2017-08-18 电子科技大学 基于chunk块版本号的分布式块存储***数据恢复判定方法
CN107071031B (zh) * 2017-04-19 2019-11-05 电子科技大学 基于chunk块版本号的分布式块存储***数据恢复判定方法
CN110603517A (zh) * 2017-06-08 2019-12-20 日立数据管理有限公司 对分布的经过擦除编码的对象去复制
CN107908372B (zh) * 2017-12-14 2021-09-10 南京云创大数据科技股份有限公司 一种异地异构的多融合存储方法
CN107908372A (zh) * 2017-12-14 2018-04-13 南京云创大数据科技股份有限公司 一种异地异构的多融合存储方法
CN110086840A (zh) * 2018-01-26 2019-08-02 浙江宇视科技有限公司 图像数据存储方法、装置及计算机可读存储介质
CN108197323A (zh) * 2018-02-05 2018-06-22 丁武轩 应用于分布式***地图数据处理方法
CN108197323B (zh) * 2018-02-05 2021-03-30 深圳市易图资讯股份有限公司 应用于分布式***地图数据处理方法
CN108304555A (zh) * 2018-02-05 2018-07-20 丁武轩 分布式地图数据处理方法
CN109739435B (zh) * 2018-12-03 2023-10-13 中科恒运股份有限公司 文件存储和更新方法及装置
CN109739435A (zh) * 2018-12-03 2019-05-10 中科恒运股份有限公司 文件存储和更新方法及装置
CN109885423B (zh) * 2019-01-04 2023-05-23 上海七印信息科技有限公司 一种区块链源数据备份方法
CN109885423A (zh) * 2019-01-04 2019-06-14 上海七印信息科技有限公司 一种区块链源数据备份方法
CN110046160A (zh) * 2019-03-15 2019-07-23 中国科学院计算技术研究所 一种基于条带的一致性哈希存储***构建方法
CN110096227A (zh) * 2019-03-28 2019-08-06 北京奇艺世纪科技有限公司 数据存储方法、数据处理方法、装置、电子设备及计算机可读介质
CN112241336A (zh) * 2019-07-19 2021-01-19 伊姆西Ip控股有限责任公司 用于备份数据的方法、设备和计算机程序产品
CN110427384A (zh) * 2019-07-30 2019-11-08 北京明略软件***有限公司 提示信息的发送方法及装置、存储介质、电子装置
CN110457263A (zh) * 2019-08-13 2019-11-15 北京首都在线科技股份有限公司 一种数据存储方法和装置
CN110457263B (zh) * 2019-08-13 2021-10-26 北京首都在线科技股份有限公司 一种数据存储方法和装置
CN110633053A (zh) * 2019-09-16 2019-12-31 北京马赫谷科技有限公司 存储容量均衡方法、对象存储方法及装置
CN110633053B (zh) * 2019-09-16 2020-07-10 北京马赫谷科技有限公司 存储容量均衡方法、对象存储方法及装置
CN111552441A (zh) * 2020-04-29 2020-08-18 重庆紫光华山智安科技有限公司 数据存储方法和装置、主节点及分布式***
CN111552441B (zh) * 2020-04-29 2023-02-28 重庆紫光华山智安科技有限公司 数据存储方法和装置、主节点及分布式***
CN112230861A (zh) * 2020-10-26 2021-01-15 金钱猫科技股份有限公司 一种基于一致性哈希算法的数据存储方法及终端
CN112948120A (zh) * 2021-03-18 2021-06-11 广东好太太智能家居有限公司 负载均衡方法、***、装置和存储介质
CN112988680A (zh) * 2021-03-30 2021-06-18 联想凌拓科技有限公司 数据加速方法、缓存单元、电子设备及存储介质
CN113282243A (zh) * 2021-06-09 2021-08-20 杭州海康威视***技术有限公司 存储对象文件的方法及装置
CN113806298A (zh) * 2021-08-09 2021-12-17 中国地质大学(武汉) 分布式文件***存储优化方法、计算机设备及存储介质
CN113672524A (zh) * 2021-08-20 2021-11-19 上海哔哩哔哩科技有限公司 基于多级缓存的数据处理方法及***
CN116522395A (zh) * 2023-05-22 2023-08-01 上海汉朔信息科技有限公司 对大数据存储***中的数据文件进行处理的方法及***
CN116522395B (zh) * 2023-05-22 2023-10-13 上海汉朔信息科技有限公司 对大数据存储***中的数据文件进行处理的方法及***

Similar Documents

Publication Publication Date Title
CN102843403A (zh) 基于分布式文件***的文件处理方法、***及客户端
AU2013409624B2 (en) Data processing method and device in distributed file storage system
US20180253484A1 (en) Computer Implemented Method for Dynamic Sharding
CN104794123B (zh) 一种为半结构化数据构建NoSQL数据库索引的方法及装置
CN102708165B (zh) 分布式文件***中的文件处理方法及装置
CN103019960B (zh) 分布式缓存方法及***
US8832113B2 (en) Data management apparatus and system
CN103095687B (zh) 元数据处理方法及装置
CN110334094B (zh) 一种基于倒排索引的数据查询方法、***、装置及设备
CN109522283B (zh) 一种重复数据删除方法及***
CN106649403B (zh) 文件存储中的索引实现方法和***
CN103186554A (zh) 分布式数据镜像方法及存储数据节点
CN104679665A (zh) 一种实现分布式文件***块存储的方法及***
CN110147203B (zh) 一种文件管理方法、装置、电子设备及存储介质
US20130031221A1 (en) Distributed data storage system and method
CN111858676A (zh) 一种数据处理的方法及装置
CN104735110A (zh) 元数据管理方法和***
CN102664914A (zh) 一种IS/DFS-Image分布式文件存储查询***
CN111930556A (zh) 一种分布式存储数据的备份方法及其装置
CN107506466B (zh) 一种小文件存储方法及***
CN104054076A (zh) 数据存储方法、数据库存储节点故障处理方法及装置
CN101344882B (zh) 数据查询方法、***方法及删除方法
CN104516945A (zh) 一种基于关系数据库的hdfs元数据存储方法
CN107423425A (zh) 一种对k/v格式的数据快速存储和查询方法
CN109815207A (zh) 数据存储方法和客户端代理

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
ASS Succession or assignment of patent right

Owner name: SHENGQU INFORMATION TECH (SHANGHAI) CO., LTD.

Free format text: FORMER OWNER: SHANDA NETWORKING CO., LTD.

Effective date: 20130918

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 201203 PUDONG NEW AREA, SHANGHAI TO: 200241 MINHANG, SHANGHAI

TA01 Transfer of patent application right

Effective date of registration: 20130918

Address after: 200241 No. 1, building 690, blue wave road, Zhangjiang hi tech park, Shanghai

Applicant after: Shengqu Information Technology (Shanghai) Co., Ltd.

Address before: 201203 712-A room, No. 625 Zhangjiang Road, Shanghai, Pudong New Area

Applicant before: Shanda computer (Shanghai) Co., Ltd.

C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20121226