一种数据存储方法、装置及系统与流程

文档序号:12271584阅读:151来源:国知局
一种数据存储方法、装置及系统与流程
本发明涉及通信
技术领域
,尤其涉及一种数据存储方法、装置及系统。
背景技术
:分布式文件系统(DistributedFileSystem)是指将固定于某个节点的某个文件系统,扩展到任意多个节点/多个文件系统,通过众多的节点相连形成集群,从而组成的一个文件系统网络。系统中通常包括以下三种类型的节点:协议服务器(ProtocolServer)、元数据服务器(MetaDataServer,简称MDS)、数据服务器(DataServer,简称DS)。该分布式文件系统划分元数据服务的方式有多种,比如基于动态子树的方式。在基于动态子树的方式下,每个节点维护一个或多个子树,即负责一部分元数据服务。目前,在分布式文件系统中的某个MDS故障时,需要选择一个正常MDS(即接管者)将归属于故障MDS的子树接管过来,以便继续提供元数据服务,这一过程称为子树接管或子树恢复。子树接管的过程如下:接管者向系统中的所有节点收集子树路径信息及归属关系,并对收集的子树信息进行去重,重新生成故障MDS上的子树信息,即对故障MDS进行重建。该方式下,由于接管者需要向系统中所有MDS发送请求,使得在接管过程中集群较大,节点的收发消息量较大时,容易造成单点瓶颈,导致接管时间较长。而且,该方式要求各MDS的子树信息有较高的一致性,若各MDS的子树信息不一致则容易导致接管者的重建算法复杂。技术实现要素:本发明实施例提供一种数据存储方法、装置及系统,能够解决数据节点故障时子树接管时间长的问题,并降低了对数据节点的子树信息的一致性要求。第一方面,本发明实施例提供了一种数据存储方法,包括:确定分布式文件系统中的子树路径,获取该子树路径上的节点归属信息,并存储该子树路径上的节点归属信息。其中,该子树路径可包括分布式文件系统中各数据节点中的子树的根节点(子树根节点,简称“子树根”)以及各数据节点的子树的根节点到该系统的根节点的路径上的子树节点。该节点归属信息指示了该子树路径上的子树间的连接信息以及每一个子树的归属数据节点。从而能够基于该存储的节点归属信息来进行子树迁移或子树接管等操作,降低了对系统中的子树信息的一致性要求。在可选的实施例中,所述存储所述子树路径上的节点归属信息,可以具体为:生成包括子树路径上的节点归属信息的子树路径归属表,并存储该子树路径归属表。如可将该子树路径归属表写入磁盘进行持久化存储。其中,该子树路径上的子树间的连接信息包括该子树路径上每一个子树节点的索引节点号、每一个子树节点的上一子树节点的索引节点号。可选的,该子树路径归属表中还可包括该子树路径上的子树根节点信息等等。在可选的实施例中,当归属于第一数据节点的目标子树需要迁移到第二数据节点时,可获取该目标子树的索引节点号;从该子树路径归属表中查找出与所述目标子树的索引节点号相同的索引节点号;将所述子树路径归属表中该查找出的索引节点号对应的归属数据节点更新为所述第二数据节点。其中,该目标子树的索引节点号可以具体指该目标子树的子树根节点的索引节点号。从而能够基于该存储的节点归属信息实现子树迁移。在可选的实施例中,还可接收指示第三数据节点出现故障的子树接管请求;响应该子树接管请求,将该子树路径归属表中归属于第三数据节点的子树的归属数据节点更新为第四数据节点;向所述第四数据节点返回更新之前该子树路径归属表中归属于该第三数据节点的子树信息,以使所述第四数据节点在所述第四数据节点的数据缓存中进行子树重建。使得能够基于该存储的节点归属信息进行子树接管,从而解决了数据节点如MDS故障时子树接管时间长的问题。第二方面,本发明实施例还提供了一种数据存储系统,包括:第一数据节点以及中心节点;其中,第一数据节点,用于为所述第一数据节点的子树提供数据服务;中心节点,用于确定该第一数据节点所在的分布式文件系统中的子树路径;获取所述子树路径上的节点归属信息,并存储所述子树路径上的节点归属信息。其中,该子树路径可包括分布式文件系统中各数据节点中的子树的根节点以及各数据节点的子树的根节点到该系统的根节点的路径上的子树节点。该节点归属信息指示了所述子树路径上的子树间的连接信息以及每一个子树的归属数据节点。可选的,该中心节点可以为该分布式文件系统中的任一数据节点如MDS,即在数据节点上叠加一种身份,其依然具有提供元数据服务的功能;或者为在该系统单独设置的节点,本发明实施例不做限定。在可选的实施例中,该中心节点还可用于生成包括所述子树路径上的节点归属信息的子树路径归属表,并存储所述子树路径归属表。其中,该子树路径上的子树间的连接信息可包括该子树路径上每一个子树节点的索引节点号、每一个子树节点的上一子树节点的索引节点号。可选的,该子树路径归属表中还可包括该子树路径上的子树根节点信息、与该索引节点号相关联的子树节点名称等等。进一步的,所述系统还可包括:第二数据节点;其中,所述第一数据节点,还可用于向中心节点发送迁移通知消息,该迁移通知消息指示了需要迁移的目标子树的索引节点号以及需要迁移到的第二数据节点;所述中心节点,还用于从该子树路径归属表中查找出与该目标子树的索引节点号相同的索引节点号;将该子树路径归属表中该查找出的索引节点号对应的归属数据节点更新为该第二数据节点。其中,该第一数据节点为需要进行子树迁移的数据节点,该第二数据节点为确定出的需要迁移到的数据节点。可选的,该需要迁移到的第二数据节点可以是按照预设规则选择出的,如热度最低的数据节点,也可以是随机选择出的,本发明实施例不做限定。从而能够基于该存储的节点归属信息实现子树迁移。进一步的,所述第二数据节点,还可用于构建数据缓存,并将所述缓存中所述目标子树的归属数据节点更新为所述第二数据节点;所述第一数据节点,还用于将所述第一数据节点的数据缓存中所述目标子树的归属数据节点更新为所述第二数据节点。也就是说,该第二数据节点还可构建数据缓存,在更新了该子树路径归属表之后,第二数据节点即可将缓存中的该目标子树的归属数据节点改为自己,该第一数据节点即可将缓存中的该目标子树的归属数据节点改为该第二数据节点。以便于快速提取子树信息。在可选的实施例中,所述系统可包括:第三数据节点和第四数据节点,该第三数据节点为出现故障的数据节点,该第四数据节点为确定出的接管该第三数据节点的子树的数据节点;其中,所述第四数据节点,用于向中心节点发送用于指示该第三数据节点出现故障的子树接管请求;所述中心节点,用于接收该子树接管请求,将该子树路径归属表中归属于第三数据节点的子树的归属数据节点更新为第四数据节点;并向该第四数据节点返回该更新之前该子树路径归属表中归属于该第三数据节点的子树信息;所述第四数据节点,还用于基于该第三数据节点的子树信息在所述第四数据节点的数据缓存中进行子树重建。其中,该中心节点、第一数据节点、第二数据节点、第三数据节点、第四数据节点等两两之间可以为同一数据节点,或者为不同的节点,本发明实施例不做限定。从而能够基于该存储的节点归属信息进行子树迁移及子树接管,由此解决了数据节点如MDS故障时子树接管时间长的问题,并降低了对系统中的子树信息的一致性要求。第三方面,本发明实施例还提供了一种数据存储装置,包括:路径确定模块、第一获取模块以及存储模块,该数据存储装置可通过上述模块实现上述第一方面的数据存储方法的部分或全部的步骤。第四方面,本发明实施例还提供了一种计算机存储介质,所述计算机存储介质存储有程序,所述程序执行时包括上述第一方面的数据存储方法的部分或全部的步骤。第五方面,本发明实施例还提供了一种数据服务器,包括:存储器和处理器,所述存储器与所述处理器连接;其中,所述存储器用于存储驱动软件;所述处理器用于从所述存储器读取所述驱动软件并在所述驱动软件的作用下执行:确定分布式文件系统中的子树路径;获取所述子树路径上的节点归属信息,所述节点归属信息指示了所述子树路径上的子树间的连接信息以及每一个子树的归属数据节点;存储所述子树路径上的节点归属信息。可选的,所述处理器还用于从所述存储器读取所述驱动软件并在所述驱动软件的作用下执行上述第一方面的数据存储方法的部分或全部的步骤。实施本发明实施例,具有如下有益效果:在本发明实施中,可通过检测分布式文件系统中的子树路径,获取包括该子树路径上的子树间的连接信息以及每一个子树的归属数据节点的节点归属信息,并存储该节点归属信息,使得能够基于该存储的节点归属信息进行子树间的迁移和子树故障时的接管流程,从而解决了数据节点故障时子树接管时间长的问题,并降低了对数据节点的子树信息的一致性要求。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本发明实施例提供的一种分布式文件系统的架构图;图2是本发明实施例提供的一种数据存储方法的流程示意图;图3是本发明实施例提供的一种子树分组示意图;图4是本发明实施例提供的一种子树路径示意图;图5是本发明实施例提供的一种数据存储方法的交互示意图;图6是本发明实施例提供的一种子树迁移示意图;图7是本发明实施例提供的另一种子树路径示意图;图8是本发明实施例提供的另一种数据存储方法的交互示意图;图9是本发明实施例提供的又一种子树路径示意图;图10是本发明实施例提供的一种数据存储装置的结构示意图;图11是本发明实施例提供的一种数据存储系统的结构示意图;图12是本发明实施例的一种数据服务器的结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。在分布式文件系统中,通常包括协议服务器(ProtocolServer)、MDS、DS三种类型的节点,多个节点相连形成集群。其中,协议服务器负责向用户提供标准的网络文件系统(NetworkFileSystem,简称NFS)、SMB(ServerMessageBlock)网络文件服务功能。MDS负责提供解析路径、查找文件、创建文件等元数据相关的服务。MDS负责存储文件的数据。用户程序可通过协议客户端(Protocolclient)访问文件系统。协议客户端与协议服务器通过前端网络(FE)相连,文件系统内部各节点通过后端网络(BE)连接。前端网络用于用户业务与分布式文件系统之间进行请求与数据交互,后端网络用于分布式文件系统内部各个节点设备之间进行请求与数据交互。进一步的,该三种类型的节点可为逻辑节点,实际部署时可以部署于同一物理设备上,也可以分开部署,本发明实施例不做限定。在分布式文件系统中,为了达到更好的性能,可将整系统的元数据服务分散到各个MDS(或DS)上,每个MDS(或DS)负责一部分元数据服务。同时,在某个或某几个MDS(或DS)发生故障时系统也能继续对外提供元数据服务,从而提升系统可靠性。本发明实施例以数据节点为MDS为例进行说明,该分布式文件系统划分元数据服务即划分MDS的方式有多种,比如基于动态子树(Subtree)的方式。具体的,系统可根据业务的访问类型(如getattr、setattr、readdir等)、访问频率等因素在缓存中统计每一个文件、目录(或目录分片)及目录树的热度,不同的访问类型累计不同的热度,且访问频率越高,热度越高。随着热度的增加,从而可将整棵目录树划分成多棵子树,并迁移到不同的MDS上,每个MDS负责提供归属于自己的子树中的元数据服务。其中,每个MDS上只需要缓存与自己相关的元数据,包括归属于自己的那部分子树元数据(用于提供元数据服务),本子树与下级子树的边界点(向下访问的时候能够知道元数据从哪个地方开始归属于另外一个MDS),以及本子树的根到根目录之间的路径(在节点故障时,依然能够解析遍历全路径)。进一步的,随着每个MDS的负载变化、子树热度的变化等等,子树可以在MDS间自由迁移,并且可以再分裂成更小的子树,或者合并成大的子树。其子树的划分及归属会随着业务的访问(即热度,也即节点的负载)动态地调整,而不是静态的。本申请通过引入中心节点,以通过该中心节点集中管理整系统中的子树信息。其中,该中心节点可以为系统中的任一个MDS(或DS)节点(即在MDS上叠加一种身份,其作为MDS依然具有提供元数据服务的功能),或者为额外设置的节点,本发明实施例不做限定。从而解决了大集群下子树接管时单点消息量大和接管时间长的问题,同时也简化了接管逻辑。本发明实施例公开了一种数据存储方法、装置、数据服务器及系统,能够解决数据节点故障时子树接管时间长的问题,并降低了对数据节点的子树信息的一致性要求。以下分别详细说明。请参见图2,图2是本发明实施例提供的一种数据存储方法的流程示意图。具体的,本发明实施例的所述方法可具体应用于中心节点如MDS或DS中。如图2所示,本发明实施例的所述方法可包括以下步骤:101、确定分布式文件系统中的子树路径。其中,某一子树的子树路径可以是指该子树的根到系统根目录的路径。在本发明实施例中,可先确定出分布式文件系统(以下简称“系统”)中各子树的子树路径,也即,该系统中的子树路径可包括系统中各数据节点中的子树的根节点以及各数据节点的子树的根节点到系统的根节点(系统根目录)的路径上的子树节点。102、获取所述子树路径上的节点归属信息,所述节点归属信息指示了所述子树路径上的子树间的连接信息以及每一个子树的归属数据节点。其中,该子树路径上的子树间的连接信息可包括每一个子树节点的索引节点号、每一个子树节点的上一子树节点的索引节点号等信息。该索引节点号为子树节点的标识信息,每一个索引节点号在该分布式文件系统中唯一确定一个子树节点(如目录、文件等)。103、存储所述子树路径上的节点归属信息。可选的,所述存储所述子树路径上的节点归属信息,可以具体为:生成包括所述子树路径上的节点归属信息的子树路径归属表,并存储所述子树路径归属表。也即,该子树路径归属表中包括系统中所有子树到系统根节点的子树路径,可选的,该子树路径归属表中还可包括子树路径上的子树根节点信息、与该索引节点号相关联的子树节点的名称等等。请参见图3,图3是本发明实施例提供的一种子树分组示意图。如图3所示,分布式文件系统中包括3个数据节点,即MDS1、MDS2和MDS3,且被划分为4个子树,包括子树A、B、C和D。其中,子树A中的子树节点(/、var、lib、etc、usr、lib、lib.so.6)归属于MDS1,子树B中的子树节点(log、messages、news、news.err)、子树D中的子树节点(如vim72、plugin)归属于MDS2,子树C中的子树节点(share、bash、helpfiles、kill、cd、vim、site)归属于MDS3;该“/”为该分布式文件系统中的根节点,即系统根目录;该分布式文件系统中的子树路径上的子树节点为/、var、usr、log、share、vim、vim72,假设分别记为ino1、ino2、ino3、ino4、ino5、ino6、ino7(当然,还可标识为其他形式,此处仅用于举例),该子树路径上的子树节点与其对应的标识信息ino相关联(如“/”与ino1关联、“var”与ino2关联、“usr”与ino3关联、“log”与ino4关联、“share”与ino5关联、“vim”与ino6关联、“vim72”与ino7关联),如图4所示。进一步的,基于该子树路径上的子树节点的节点归属信息,可生成一个子树路径归属表,如下表一所示:表一inoDirinosubtreeflagauthino1-1MDS1ino2ino10MDS1ino3ino10MDS1ino4ino21MDS2ino5ino31MDS3ino6ino50MDS3ino7ino61MDS2其中,ino为子树路径上的子树节点,dirino为子树节点的上一子树节点(父节点),subtreeflag表明了子树根节点(简称“子树根”)信息,为“1”表示该子树节点为数据节点的子树根节点,为“0”表示该子树节点不为数据节点的子树根节点;auth表示子树节点的归属数据节点。该子树根信息subtreeflag实际上可作为一个标志位,表示路径上的某个节点是否为子树根(也即上下级节点归属发生变化的边界)。可选的,该子树路径归属表中还可不存储该子树根信息。此时,该子树根信息还可从归属信息反推出来,即根据ino、dirino及auth确定出。例如,ino3的归属数据节点为MDS1,而ino4的归属数据节点为MDS2,归属发生了变化,则可确定从ino4开始,为一棵子树,ino4为该子树的子树根。进一步的,归属表中记录的各ino与/、var、usr、log、share、vim、vim72相关联,该ino为文件或目录属性的一部分,并且在系统中是唯一的,相当于文件、目录等的ID。由此,在归属表中不能以子树节点的名称代替ino,因系统中可能存在多个名称相同的文件(或目录),如可能存在多个叫“var”的目录,导致不能唯一确定该子树节点。可选的,具体可将该子树路径归属表写入磁盘进行持久化存储。进一步的,还可在内存中以树的形式缓存该子树路径归属表中的内容,以快速访问该子树路径,并获取子树节点信息。进一步可选的,在存储该子树路径上的节点归属信息之后,即可基于该存储的节点归属信息进行子树迁移。具体的,当归属于第一数据节点的目标子树需要迁移到第二数据节点时,中心节点可获取所述目标子树的索引节点号;从所述子树路径归属表中查找出与所述目标子树的索引节点号相同的索引节点号;将所述子树路径归属表中该查找出的索引节点号对应的归属数据节点更新为所述第二数据节点。可选的,该子树迁移流程可以是在节点热度过高时触发的,或者是需要进行系统热度分配调整时触发的,等等;该需要迁移到的第二数据节点可以是该系统中的任一数据节点按照预设规则选择出的,如热度最低的数据节点,也可以是随机选择出的,本发明实施例不做限定。进一步可选的,在存储该子树路径上的节点归属信息之后,当某一数据节点出现故障时,即可基于该存储的节点归属信息进行子树接管(子树恢复)。具体的,接收指示第三数据节点出现故障的子树接管请求;响应所述子树接管请求,将所述子树路径归属表中归属于所述第三数据节点的子树的归属数据节点更新为第四数据节点;向所述第四数据节点返回该更新前所述子树路径归属表中归属于所述第三数据节点的子树信息,以使所述第四数据节点在缓存中进行子树重建。其中,该第三数据节点即为出现故障的节点,该第四数据节点即为确定出的用于接管所述第三数据节点的子树的数据节点。可选的,该接管的第四数据节点可以是按照预设规则选择出的,如热度最低的数据节点,也可以是随机选择出的,本发明实施例不做限定。在本发明实施中,可通过检测分布式文件系统中的子树路径,获取包括该子树路径上的子树间的连接信息以及每一个子树的归属数据节点的节点归属信息,并存储该节点归属信息,使得能够基于该存储的节点归属信息进行子树间的迁移和子树故障时的接管流程,从而解决了数据节点如MDS故障时子树接管时间长的问题,并降低了对MDS的子树信息的一致性要求。进一步的,请参见图5,图5是本发明实施例提供的一种数据存储方法的交互示意图。本发明实施例应用于数据节点之间的子树迁移场景,即归属于第一数据节点的目标子树需要迁移到第二数据节点。在本发明实施例中,假设需要将MDS2(即第一数据节点)的子树D(即目标子树)迁移到MDS1(即第二数据节点),如图6所示。则结合图5,一并参见图6,本发明实施例的所述方法可以包括以下步骤:201、MDS2向MDS1发送迁移请求。可选的,该迁移请求可以是在MDS2的业务访问量即热度过高时,如超过预设热度阈值时触发的。该需要迁移到的MDS可以是MDS2所在的分布式文件系统中的任一MDS或中心节点确定出的,比如根据各MDS的热度,将热度最低的MDS1确定为需要迁移到的MDS。具体的,该迁移请求中可携带MDS2中的子树D的元数据信息。其中,该元数据信息包括文件名、属性、大小等信息。202、MDS1在缓存中构建子树D中的元数据。203、MDS1向MDS2回复迁移准备完成的响应消息。具体的,MDS2通过向MDS1发送迁移请求,通知MDS1开始迁移子树D。MDS1即可根据请求中的元数据信息在缓存中构建子树D中的元数据,并可向MDS2回复一个迁移准备完成消息。204、MDS2向中心节点发送迁移通知消息。此外,当确定MDS2中的子树D需要迁移时,还可向中心节点发送一个迁移通知消息,以通知中心节点该子树D的归属变为MDS1。205、中心节点更新子树路径归属表。具体的,中心节点在接收到该迁移通知消息之后,即可修改子树路径归属表,将子树D的归属数据节点由MDS2更新为MDS1,得到新的子树路径归属表,并将该新的子树路径归属表持久化到磁盘,也即保存到磁盘。其中,该新的子树路径归属表可如下表二所示:表二inodirinosubtreeflagauthino1-1MDS1ino2ino10MDS1ino3ino10MDS1ino4ino21MDS2ino5ino31MDS3ino6ino50MDS3ino7ino61MDS1进一步的,还可更新缓存中的子树路径结构,即在内存中以树的形式缓存该新的子树路径归属表,如图7所示,为更新后的子树路径结构示意图。206、中心节点向MDS2返回更新成功的响应消息。207、MDS2通知MDS1迁移成功。具体的,中心节点更新子树路径归属表成功之后,即可向MDS2返回一个更新成功的响应消息,以告知MDS2该归属表以更改。MDS2收到中心节点的响应消息后,即可向MDS1发送消息,以通知子树迁移成功。208、MDS1更改缓存中子树D的归属信息。209、MDS1向MDS2返回迁移成功的响应消息。210、MDS2更改缓存中子树D的归属信息。具体的,MDS1接收到迁移成功的通知消息后,即可将缓存中的子树归属信息改成自己,并可向MDS2返回一个响应消息。MDS2接收到该响应消息后,即可将缓存中的子树归属信息改成MDS1。进一步的,请参见图8,图8是本发明实施例提供的另一种数据存储方法的交互示意图。本发明实施例可应用于数据节点故障时的子树接管场景,即当第三数据节点出现故障,需要将该第三数据节点的子树迁移到第四数据节点。在本发明实施例中,假设检测到MDS2(即第三数据节点)故障,需要将MDS2的子树迁移到MDS1(即第四数据节点)。如图8所示,本发明实施例的所述方法可以包括以下步骤:301、当MDS2故障时,MDS1向中心节点发送接管请求。具体的,当MDS2故障时,可确定出接管该MDS2的子树的MDS。可选的,该MDS2故障情况可以是MDS2所在的分布式文件系统中除MDS2以外的任一MDS或中心节点检测出的。该需要接管的MDS可以是MDS2所在的分布式文件系统中的任一MDS或中心节点确定出的,比如根据各MDS的热度,将热度最低的MDS1确定为接管的MDS。若接管的MDS为MDS1,MDS1即可向中心节点发送接管请求(若确定接管的数据节点为中心节点,则可不发送该接管请求),该接管请求中可携带MDS2的标识信息,以告知中心节点该MDS2发生故障,MDS1需要接管MDS2的子树。302、中心节点更新子树路径归属表。303、中心节点向MDS1返回MDS2的子树信息。具体的,中心节点在接收到该接管请求之后,即可查找子树路径归属表,将归属于MDS2的所有子树的归属信息改成MDS1,得到新的子树路径归属表,并将该新的子树路径归属表持久化到磁盘,也即保存到磁盘。其中,该新的子树路径归属表可如下表三所示:表三inodirinosubtreeflagauthino1-1MDS1ino2ino10MDS1ino3ino10MDS1ino4ino21MDS1ino5ino31MDS3ino6ino50MDS3ino7ino61MDS1进一步的,还可更新缓存中的子树路径结构,在内存中以树的形式缓存该新的子树路径归属表,如图9所示,为更新后的子树路径结构示意图。进一步的,中心节点在更新子树路径归属表之后,还可将归属于MDS2的所有子树信息返回给MDS1。304、MDS1在缓存中重建MDS2的子树信息。具体的,MDS1接收到MDS2的子树信息之后,即可将原来归属于MDS2的子树在缓存中重建出来。由于子树路径归属表记录的是精简的子树信息(只记录了ino),因此MDS4重建出来的元数据缓存也是不完整的,称为empty类型。此类型的元数据可以通过业务触发读盘,从而逐步填充完整。由此,当某个MDS节点故障时,接管者可直接从中心节点获取故障MDS的子树信息,无需向所有MDS发送请求,这就减少了系统中的消息传输量以及MDS故障时子树接管时间,并降低了对MDS的子树信息的一致性要求。进一步可选的,若故障的MDS为中心节点,则还可确定出新的中心节点,如确定出的新的中心节点为MDS1。则MDS1可从低层存储中读取子树路径归属表(因该子树路径归属表是存储在磁盘的),并可在缓存中重建出整个系统的子树信息。可选的,该中心节点的故障情况可以是系统中任一MDS检测出的。该需要接管的MDS也可以是系统中的任一MDS确定出的,此处不赘述。进一步的,MDS1还可检测故障的中心节点上是否存在子树需要接管,若存在,则可从子树路径归属表中查找归属于中心节点的子树,并将其归属改成MDS1,得到新的子树路径归属表,并持久化该新的子树路径归属表到磁盘,替换之前的子树路径归属表。在本发明实施例中,可通过引入中心点集中管理子树与MDS的归属关系及子树路径信息,并持久化到磁盘中,使得系统中的数据节点(包括MDS或中心节点)故障时,能够通过读取持久化信息来重建子树路径归属表,而无需向所有MDS发送请求已获取子树信息进行子树重建,从而减少了接管节点上的消息突发量,减少了MDS故障时子树接管时间,使得接管时间不受集群规模的影响,切换时间一般可控制在5s内。此外,在进行子树接管时,通过以中心节点上的子树路径归属表为准,使得降低了重建子树信息的复杂度,同时降低了对各MDS上的子树信息的一致性要求。请参见图10,图10是本发明实施例提供的一种数据存储装置的结构示意图。具体的,如图10所示,本发明实施例的所述数据存储装置可包括路径确定模块11、第一获取模块12以及存储模块13。其中,所述路径确定模块11,用于确定分布式文件系统中的子树路径。其中,该子树路径可包括分布式文件系统中各数据节点中的子树的根节点以及各数据节点的子树的根节点到该系统的根节点的路径上的子树节点。所述第一获取模块12,用于获取所述子树路径上的节点归属信息。其中,该节点归属信息指示了所述子树路径上的子树间的连接信息以及每一个子树的归属数据节点。所述存储模块13,用于存储所述子树路径上的节点归属信息。可选的,在本发明实施例中,所述存储模块13可具体用于:生成包括所述子树路径上的节点归属信息的子树路径归属表,并存储所述子树路径归属表。其中,该子树路径上的子树间的连接信息包括该子树路径上每一个子树节点的索引节点号、每一个子树节点的上一子树节点的索引节点号。可选的,该子树路径归属表中还可包括该子树路径上的子树根节点信息等等。进一步可选的,所述装置还可包括:第二获取模块,用于当归属于第一数据节点的目标子树需要迁移到第二数据节点时,获取所述目标子树的索引节点号;查找模块,用于从所述子树路径归属表中查找出与所述目标子树的索引节点号相同的索引节点号;第一更新模块,用于将所述子树路径归属表中该查找出的索引节点号对应的归属数据节点更新为所述第二数据节点。其中,该第一数据节点为需要进行子树迁移的数据节点,该第二数据节点为确定出的需要迁移到的数据节点。可选的,该需要迁移到的第二数据节点可以是按照预设规则选择出的,如热度最低的数据节点,也可以是随机选择出的,本发明实施例不做限定。从而能够基于该存储的节点归属信息实现子树迁移。进一步可选的,所述装置还可包括:接收模块,用于接收指示第三数据节点出现故障的子树接管请求;第二更新模块,用于响应所述子树接管请求,将所述子树路径归属表中归属于所述第三数据节点的子树的归属数据节点更新为第四数据节点;发送模块,用于向所述第四数据节点返回归属于所述第三数据节点的子树信息,以使所述第四数据节点在所述第四数据节点的数据缓存中进行子树重建。其中,该中心节点、第一数据节点、第二数据节点、第三数据节点、第四数据节点等两两之间可以为同一数据节点,或者为不同的节点,本发明实施例不做限定。从而能够基于该存储的节点归属信息进行子树迁移及子树接管。在本发明实施中,可通过检测分布式文件系统中的子树路径,获取包括该子树路径上的子树间的连接信息以及每一个子树的归属数据节点的节点归属信息,并存储该节点归属信息,使得能够基于该存储的节点归属信息进行子树间的迁移和子树故障时的接管流程,从而解决了数据节点故障时子树接管时间长的问题,并降低了对数据节点的子树信息的一致性要求。请参见图11,图11是本发明实施例提供的一种数据存储系统的结构示意图。具体的,如图11所示,本发明实施例的所述数据存储系统可包括第一数据节点2以及中心节点1;其中,所述第一数据节点2,用于为所述第一数据节点1的子树提供数据服务;所述中心节点1,用于确定所述第一数据节点2所在的分布式文件系统中的子树路径;获取所述子树路径上的节点归属信息,并存储所述子树路径上的节点归属信息。其中,该节点归属信息指示了该子树路径上的子树间的连接信息以及每一个子树的归属数据节点。可选的,在本发明实施例中,所述中心节点1,还用于生成包括所述子树路径上的节点归属信息的子树路径归属表,并存储所述子树路径归属表;其中,所述子树路径上的子树间的连接信息包括该子树路径上每一个子树节点的索引节点号、每一个子树节点的上一子树节点的索引节点号。可选的,该子树路径归属表中还可包括该子树路径上的子树根节点信息。进一步可选的,所述系统还包括:第二数据节点3;其中,所述第一数据节点2,用于向所述中心节点1发送迁移通知消息,所述迁移通知消息指示了需要迁移的目标子树的索引节点号以及需要迁移到的第二数据节点3;所述中心节点1,用于从所述子树路径归属表中查找出与所述目标子树的索引节点号相同的索引节点号;将所述子树路径归属表中该查找出的索引节点号对应的归属数据节点更新为所述第二数据节点3。所述第一数据节点2用于为所述第一数据节点的子树提供数据服务,所述第二数据节点3用于为所述第二数据节点的子树提供数据服务。进一步可选的,在本发明实施例中,所述第二数据节点3,还用于构建数据缓存,并将所述缓存中所述目标子树的归属数据节点更新为所述第二数据节点3;所述第一数据节点2,还用于将所述第一数据节点2的数据缓存中所述目标子树的归属数据节点更新为所述第二数据节点3。也就是说,该第二数据节点3还可构建数据缓存,在更新了该子树路径归属表之后,第二数据节点3即可将缓存中的该目标子树的归属数据节点改为自己,该第一数据节点2即可将缓存中的该目标子树的归属数据节点改为该第二数据节点3。以便于快速提取子树信息。进一步可选的,所述系统还包括:第三数据节点4和第四数据节点5,所述第三数据节点4为出现故障的数据节点;其中,所述第四数据节点5,用于向所述中心节点1发送用于指示所述第三数据节点4出现故障的子树接管请求;所述中心节点1,用于接收所述子树接管请求,将所述子树路径归属表中归属于所述第三数据节点4的子树的归属数据节点更新为第四数据节点5,并向所述第四数据节点5返回所述更新之前所述子树路径归属表中归属于所述第三数据节点4的子树信息;所述第四数据节点5,还用于基于所述第三数据节点4的子树信息在所述第四数据节点的数据缓存中进行子树重建。在本发明实施例中,该分布式文件系统中的各个数据节点之间可相互通信。该中心节点、第一数据节点、第二数据节点、第三数据节点、第四数据节点等两两之间可以为同一数据节点,或者为不同的节点,本发明实施例不做限定。具体的,本发明实施例中的中心节点、第一数据节点、第二数据节点、第三数据节点、第四数据节点可参照上述图1-9对应实施例中的相关描述,此处不再赘述。请参见图12,图12是本发明实施例提供的一种数据服务器的结构示意图。具体的,如图12所示,本发明实施例的所述数据服务器包括:通信接口300、存储器200和处理器100,所述处理器100分别与所述通信接口300及所述存储器200连接。所述存储器200可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。所述通信接口300、存储器200以及处理器100之间可以通过总线进行数据连接,也可以通过其他方式数据连接。本实施例中以总线连接进行说明。具体的,本发明实施例中的所述数据服务器可与上述图1至图11对应实施例中的中心节点相对应,其具体可以是与分布式文件系统中的数据节点如MDS或DS,具体请参照图1至图11对应实施例中的相关描述。其中,所述存储器200用于存储驱动软件;所述处理器100从所述存储器读取所述驱动软件并在所述驱动软件的作用下执行:确定分布式文件系统中的子树路径;获取所述子树路径上的节点归属信息,所述节点归属信息指示了所述子树路径上的子树间的连接信息以及每一个子树的归属数据节点;存储所述子树路径上的节点归属信息。可选的,所述处理器100在所述驱动软件的作用下执行所述存储所述子树路径上的节点归属信息,具体执行以下步骤:生成包括所述子树路径上的节点归属信息的子树路径归属表,并存储所述子树路径归属表;其中,所述子树路径上的子树间的连接信息包括该子树路径上每一个子树节点的索引节点号、每一个子树节点的上一子树节点的索引节点号。可选的,该子树路径归属表中还可包括该子树路径上的子树根节点信息等等。可选的,子树路径归属表还可存储有该子树路径上的子树根节点信息。可选的,所述处理器100在所述驱动软件的作用下,还用于执行以下步骤:当归属于第一数据节点的目标子树需要迁移到第二数据节点时,获取所述目标子树的索引节点号;从所述子树路径归属表中查找出与所述目标子树的索引节点号相同的索引节点号;将所述子树路径归属表中该查找出的索引节点号对应的归属数据节点更新为所述第二数据节点。可选的,所述处理器100在所述驱动软件的作用下,还用于执行以下步骤:通过所述通信接口300接收指示第三数据节点出现故障的子树接管请求;响应所述子树接管请求,将所述子树路径归属表中归属于所述第三数据节点的子树的归属数据节点更新为第四数据节点;通过所述通信接口300向所述第四数据节点返回所述更新之前所述子树路径归属表中归属于所述第三数据节点的子树信息,以使所述第四数据节点在所述第四数据节点的数据缓存中进行子树重建。在本发明实施中,可通过检测分布式文件系统中的子树路径,获取包括该子树路径上的子树间的连接信息以及每一个子树的归属数据节点的节点归属信息,并存储该节点归属信息,使得能够基于该存储的节点归属信息进行子树间的迁移和子树故障时的接管流程,从而解决了数据节点如MDS故障时子树接管时间长的问题,并降低了对MDS的子树信息的一致性要求。在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。所述该作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,简称ROM)、随机存取存储器(RandomAccessMemory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1