数据恢复的方法、数据节点及分布式文件系统的制作方法

文档序号:6577839阅读:135来源:国知局

专利名称::数据恢复的方法、数据节点及分布式文件系统的制作方法
技术领域
:本发明涉及分布式文件系统,尤其涉及分布式文件系统中的数据恢复技术。
背景技术
:无论是单个磁盘,还是一个复杂的存储设备,都存在出现故障的危险。所以,在分布式文件系统中,一般会将同一份数据同时存储在多个数据节点中,使得当其中的某一个数据节点出现故障时,整个分布式文件系统依然能够对外提供出现故障的数据节点存储的数据。其中,数据节点是分布式文件系统中存储数据的设备。分布式文件系统中,一般都会针对数据设置备份的数量,用来表示同一个数据在整个分布式文件系统中需要备份的数量。当一个数据节点出现故障时,这个数据节点存储的数据的备份个数就会减少,这时,就需要在其他的数据节点上重新增加数据的备份,以保证在绝大多数时间内,分布式文件系统中的每个数据都有指定数量的备份。在现有的分布式文件系统中,数据节点在加入分布式文件系统时,会向元数据节点传送这个数据节点中存储数据情况的一个列表,并在分布式文件系统运行过程中不断的对这个列表进行更新。其中,元数据节点是分布式文件系统中管理整个系统的设备。当某个数据节点出现故障时,元数据节点根据这个数据节点向元数据节点提供的列表,对这个数据节点存储的每个数据都进行恢复,即,将每个数据都在其他数据节点中进行备份。'本发明的发明人在实现本发明的过程中发现如果出现故障的数据节点存储了大量数据,那么元数据节点就需要对大量的数据进行恢复,这种情况下,元数据节点需要做出大量的工作才可以完成数据的恢复,进而导致元数据节点负担过重。
发明内容本发明实施例提供数据恢复的方法、数据节点及分布式文件系统,用以在数据的恢复过程中,减轻元数据节点的负担。一种数据恢复的方法,包括第一数据节点获得第二数据节点发生故障6的通知;第一数据节点将指定的数据存储到第三数据节点,并在第一数据节点存储的备份信息中,记录所述指定的数据存储在第三数据节点的信息,并将所述指定的数据存储在第三数据节点的信息提供给元数据节点及存储有所述指定的数据的其他数据节点,其中,所述指定的数据为第一数据节点和第二数据节点都存储的数据。一种数据节点,包括第一存储单元,用于存储数据;第二存储单元,用于存储所述第一存储单元所存储数据的备份信息;第一交互单元,用于获得第二数据节点发生故障的通知;第二交互单元,用于与其他数据节点进行通信;其中,在所述第一交互单元获得第二数据节点发生故障的通知后,所述第二交互单元将所述指定的数据存储到第三数据节点,所述第二存储单元在存储的备份信息中,记录所述指定的数据存储在第三数据节点的信息,并且所述第一交互单元将所述指定的数据存储在第三数据节点的信息提供给元数据节点,所述第二交互单元将所述指定的数据存储到第三数据节点的信息提供给存储有所述指定的数据的其他数据节点,其中,所述数据节点和第二数据节点都存储有所述指定的数据。一种数据恢复的方法,包括第三数据节点获得第二数据节点发生故障的通知;当第三数据节点获得第一数据节点提供的数据及所述数据的备份信息后,存储所述数据及所述数据的备份信息,其中,所述数据是第二数据节点存储的数据。一种数据节点,包括第一存储单元,用于存储数据;第二存储单元,用于存储所述第一存储单元所存储数据的备份信息;第一交互单元,用于获得第二数据节点发生故障的通知;第二交互单元,用于与其他数据节点进行通信;当所述第一交互单元获得第二凄t据节点发生故障的通知、并且第二交互单元获得第一数据节点提供的数据及所述数据的备份信息后,所述第一存储单元存储所述数据,所述第二存储单元存储所述数据的备份信息,其中,所述数据是第二数据节点存储的数据。一种分布式文件系统,包括元数据节点和数据节点,每个数据节点都具有其存储的数据的备份信息;其中,如果第二数据节点发生故障,则所述元数据节点向除第二数据节点之外的所有的数据节点发出第二数据节点发生故障的通知;第一数据节点将所述指定的数据存储到第三数据节点,并在第一数据节点存储的备份信息中,记录所述指定的数据存储在第三数据节点的信息,并将所述指定的数据存储到第三数据节点的信息提供给元数据节点及存储有所述指定的数据的其他数据节点,其中,第一数据节点和第二数据节点都存储有所述指定的数据;当存储有所述指定的数据的其他数据节点获得第一数据节点提供的将所述指定的数据存储到第三数据节点的信息后,存储有所述指定的数据的其他数据节点在其存储的备份信息中,记录所述指定的数据存储在第三数据节点的信息;当第三数据节点获得第一数据节点提供的所述指定的数据及所述指定的数据的备份信息后,第三数据节点存储所述指定的数据及所述指定的数据的备份信息。在本发明的实施例中,分布式文件系统中的每个数据节点都具有其存储的数据的备份信息,当某个数据节点发生故障后,元数据节点将这个数据节点发生故障的信息提供给所有的数据节点,之后,开始对发生故障的数据节点存储的数据进行恢复。在整个过程中,对数据的恢复主要是在数据节点之间进行的,元数据节点不需要做出大量的工作,从而减轻了元数据节点的负担。为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作筒单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例的一种数据恢复的方法的流程图;图2为本发明实施例的一种lt据节点的结构示意图;图3为本发明实施例的又一种凄t据恢复的方法的流程图;图4为本发明实施例的又一种数据节点的结构示意图;图5为本发明实施例的又一种数据恢复的方法的流程图;图6为本发明实施例的又一种数据节点的结构示意图;图7为本发明实施例的一个应用实施例中的各个数据节点的目录结构示意图8为本发明实施例的一个应用实施例中的在启动数据恢复之前分布式文件系统的文件逻辑结构示意图;图9为本发明实施例的一个应用实施例中的在启动数据恢复之后分布式文件系统的文件逻辑结构示意图。具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。首先需要说明的是,下面将要介绍的所有实施例都应用于分布式文件系统中。分布式文件系统包括元数据节点和数据节点。每个数据节点都具有其存储的数据的备份信息。例如,假设一个数据节点存储有5个数据,第1个数据除存储在这个数据节点外,还分别存储在另外两个数据节点中,那么在这个数据节点中,就需要记录第1个数据还分别存储在另外两个数据节点中的信息。在具体实现时,在每个数据节点中都可以设置有对应其他数据节点的目录,对于任意一个数据节点,如果这个数据节点与另一个数据节点存储有相同的数据,则在这个数据节点中的对应于另一个数据节点的目录中具有所述相同的数据的信息。例如,假设分布式文件系统包括数据节点1、数据节点2和数据节点3,数据节点1存储有数据A、数据B和数据C,数据节点2存储有数据C、数据D和数据E,数据节点3存储有数据A、数据C和数据E,那么可以在数据节点1中设置对应于数据节点2的目录2,由于数据节点1和数据节点2都存储有数据C,所以目录2下具有数据C的信息,另外,在数据节点1中还设置对应于数据节点3的目录3,由于数据节点1和数据节点3都存储有数据A和数据C,所以目录3下具有数据A的信息和数据C的信息;同理,在数据节点2中设置对应于数据节点1的目录1,由于数据节点2和数据节点1都存储有数据C,所以目录1下具有数据C的信息,另外,在数据节点2中设置对应于数据节点3的目录3,由于数据节点2和数据节点3都存储有数据C和数据E,所以目录3下具有数据C的信息和数据E的信息;同理,在数据节点3中设置对应于数据节点1的目录1,由于数据节点3和数据节点1都存储有数据A和数据C,所以目录1下具有数据A的信息和数据C的信息,另外,在数据节点3中设置对应于数据节点2的目录2,由于数据节点3和数据节点2都存储有数据C和数据E,所以目录2下具有数据C的信息和数据E的信息。可选的,在每个数据节点上,对于其存储的每个数据都可以设置一个数据节点列表,这个列表中保存的数据节点的信息都是存储这个数据的数据节点的信息,也就是说,在一个数据节点上,这个数据节点保存的任意一个数据都对应一个数据节点列表,这个数据节点列表表明了这个数据都存储在哪些数据节点上。例如,假设数据N分别存储在数据节点1、数据节点3和数据节点6上,那么在数据节点l上,数据N对应的数据节点列表如下<table>tableseeoriginaldocumentpage10</column></row><table>表1在实际应用中,如果一个数据节点备份了多个同一个数据,那么当这个数据节点发生故障后,分布式文件系统在短时间内对外提供这个数据的访问能力就会受到严重限制。所以,为避免出现这种情况,在同一节点上,对于同一个数据最好只有一个备份。另外,本发明实施例中的数据的组织形式可以是文件,例如,上述的数据A、数据B、数据C、数据D和数据E可以认为是文件A、文件B、文件C、文件D和文件E。另外,每个文件所包含的内容可以是完整的,例如,一个文件是完整的一首乐曲;每个文件所包含的内容也可以是完整内容的一部分,例如,一个文件是完整的一部电影的一个片段。在实际应用中,完整内容的各个片段可以分别存储在不同的数据节点中。此外,下面所有的实施例中提到的数据节点发生故障是指,数据节点发生不能提供正常的数据访问服务的一切现象,例如,数据节点的硬件发生故障,数据节点运行的软件发生故障,数据节点因负荷过重或访问量过大、而暂时不能提供正常的数据访问服务等。本发明实施例既可以从数据节点的角度来描述,还可以从分布式文件系统的角度来描述。既然要将数据进行恢复,那么自然要有数据节点发起数据恢复,同时,也可以有数据节点只修改备份信息,当然,还可以有数据节点存储需要恢复的数据,所以,从数据节点的角度来看,本发明实施例还可以分别从发起数据恢复的数据节点的角度来描述,也可以从只修改备份信息的数据节点的角度来描述,还可以从存储需要恢复的数据的数据节点的角度来描述。首先从发起数据恢复的数据节点的角度来介绍一种数据恢复的方法。上面提到过,这种方法可以应用于分布式文件系统中,分布式文件系统包括元数据节点和数据节点,每个数据节点都具有其存储的数据的备份信息。如图1所示,这种方法包括S101:第一数据节点获得第二数据节点发生故障的通知;S102:第一数据节点将指定的数据存储到第三数据节点,并在第一数据节点存储的备份信息中,记录所述指定的数据存储在第三数据节点的信息,并将指定的数据存储到第三数据节点的信息提供给元数据节点及存储有指定的数据的其他数据节点,其中,上述指定的数据为第一数据节点和第二数据节点都存储的数据。第一数据节点获得的第二数据节点发生故障的通知可以是由元数据节点发出的。这个通知除可以包含第二数据节点发生故障的信息,还可以包含要求所有的数据节点上报第二数据节点的数据的备份信息的命令。第一数据节点获得第二数据节点发生故障的通知后,第一数据节点可以对指定的数据进行恢复。显然,指定的数据是第二数据节点原本存储的数据,也应该是第一数据节点存储的数据。在实际应用中,可以预先设置第一数据节点具有对指定的数据进行恢复的权限,其他存储有指定的数据的数据节点没有对指定的数据进行恢复的权限。例如,预先设置当第二数据节点发生故障时,只有第一数据节点才可以对第一数据节点和第二数据节点共同存储的某个或某些数据进行恢复,即使其他某些数据节点也存储有这个或这些数据,但不可以对这个或这些数据进行恢复。需要说明的是,指定的数据可以是预先设置的,也就是预先指定的。可选的,第一数据节点获得第二数据节点发生故障的通知之后,第一数据节点将指定的数据备份(也可以称为存储,下文相同)到第三数据节点之前,如果第一数据节点具有第二数据节点的数据的备份信息,那么第一数据ii节点可以将其具有的第二数据节点的数据的备份信息上报给元数据节点。第一数据节点具有第二数据节点的数据的备份信息具体表现为在第一数据节点中设置的对应于第二数据节点的目录中具有第二数据节点的数据的信息,或者,在第一数据节点中设置的对应于第二数据节点的目录中具有第二数据节点的数据的信息及在第一数据节点中设置的对应于其他数据节点的目录中具有上述第二数据节点的数据的信息。此时,第一数据节点具有对指定的数据进行恢复的权限的表现方式可以为第一数据节点获得对指定的数据进行恢复的触发,也就是说,元数据节点指定第一数据节点恢复指定的数据。第一数据节点获得对指定的数据进行恢复的触发具体表现为第一数据节点获得元数据节点发出的对第二数据节点中的指定的数据进行恢复的命令。第一数据节点对指定的数据进行恢复时,可以将指定的数据备份到第三数据节点,具体表现为,将指定的数据提供给第三数据节点,其中,第三数据节点是没有存储上述指定的数据的数据节点。第一数据节点对指定的数据进行恢复时,还可以在第一数据节点存储的备份信息中、记录指定的数据备份到第三数据节点的信息,具体表现为,第一数据节点将指定的数据的信息从对应于第二数据节点的目录中删除,并在对应于第三数据节点的目录中增加指定的数据的信息。对应于图l所示的方法,本发明实施例提供一种数据节点。上面提到过,这种数据节点可以应用于分布式文件系统中,分布式文件系统包括元数据节点和数据节点,每个数据节点都具有其存储的数据的^^分信息。如图2所示,这种数据节点包括第一存储单元200,用于存储数据;存储单元201,用于第一存储单元200所存储数据的备份信息;第一交互单元202,用于获得第二凄t据节点发生故障的通知;第二交互单元203,用于与其他凄t据节点进行通信;其中,在第一交互单元202获得第二数据节点发生故障的通知后,第二交互单元203将指定的数据备^^到第三数据节点,第二存储单元201在存储的备份信息中,记录指定的数据存储在第三数据节点的信息,并且第一交互单元202将指定的数据备份到第三数据节点的信息提供给元数据节点,第二交互单元203将指定的数据备份到第三数据节点的信息提供给存储有指定的数据的其他数据节点,其中,上述指定的数据为第一存储单元200和第二数据节点都存储的数据。第一交互单元202获得的第二数据节点发生故障的通知可以是由元数据节点发出的。这个通知除可以包含第二数据节点发生故障的信息,还可以包含要求所有的数据节点上报第二数据节点的数据的备份信息的命令。第一交互单元202获得第二数据节点发生故障的通知后,图2所示的数据节点就可以对指定的数据进行恢复。显然,指定的数据是第二数据节点原本存储的数据,也应该是第一存储单元200存储的数据。在实际应用中,可以预先设置图2所示的数据节点具有对指定的数据进行恢复的权限,其他存储有指定的数据的数据节点没有对指定的数据进行恢复的权限。例如,预先设置当第二数据节点发生故障时,只有图2所示的数据节点才可以对第一存储单元200和第二数据节点共同存储的某个或某些数据进行恢复,即使其他某些数据节点也存储有这个或这些数据,但不可以对这个或这些数据进行恢复。需要说明的是,指定的数据可以是预先设置的,也就是预先指定的。可选的,第一交互单元202获得第二数据节点发生故障的通知之后,第二交互单元203将指定的数据备份到第三数据节点之前,如果存储单元201具有第二数据节点的数据的备份信息,那么第一交互单元202可以将存储单元201存储的第二数据节点的数据的备份信息上报给元数据节点。存储单元201存储有第二数据节点的数据的备份信息具体表现为在存储单元201中设置的对应于第二数据节点的目录中具有第二数据节点的数据的信息,或者,在存储单元201中设置的对应于第二数据节点的目录中具有第二数据节点的数据的信息及在存储单元201中设置的对应于其他数据节点的目录中具有上述第二数据节点的数据的信息。此时,图2所示的数据节点具有对指定的数据进行恢复的权限的表现方式可以为图2所示的数据节点获得对指定的数据进行恢复的触发,也就是说,元数据节点指定图2所示的数据节点恢复指定的数据。图2所示的数据节点获得对指定的数据进行恢复的触发具体表现为第一交互单元202获得元数据节点发出的对第二数据节点中的指定的数据进行恢复的命令。图2所示的数据节点对指定的凄t据进行恢复时,第二交互单元203可以将指定的数据备份到第三数据节点,具体表现为,第二交互单元203将指定的数据提供给第三数据节点,其中,第三数据节点是没有存储上述指定的数据的数据节点。第一数据节点对指定的数据进行恢复时,第二存储单元201可以在其存储的备份信息中,记录指定的数据备份到第三数据节点的信息,具体表现为,第二存储单元201将指定的数据的信息从对应于第二凄t据节点的目录中删除,并在对应于第三数据节点的目录中增加指定的数据的信息。图1和图2对应的实施例是从发起数据恢复的数据节点的角度描述的,下面再从只修改备份信息的数据节点的角度来描述本发明实施例。首先从只修改备份信息的数据节点的角度来介绍一种数据恢复的方法。上面提到过,这种方法可以应用于分布式文件系统中,分布式文件系统包括元数据节点和数据节点,每个数据节点都具有其存储的数据的备份信息。如图3所示,这种方法包括S301:第四数据节点获得第二数据节点发生故障的通知;S302:当第四数据节点获得第一数据节点将指定的数据备份到第三数据节点的信息后,第四数据节点在第四数据节点存储的备份信息中,记录指定的数据备份到第三数据节点的信息,其中,指定的数据是第四数据节点和第二数据节点都存储的数据。第四数据节点获得的第二数据节点发生故障的通知可以是由元数据节点发出的。这个通知除可以包含第二数据节点发生故障的信息,还可以包含要求所有的数据节点上报第二数据节点的数据的备份信息的命令。可选的,第四数据节点获得第二数据节点发生故障的通知之后,第四数据节点获得第一数据节点将指定的数据备份到第三凄t据节点的信息之前,如果第四数据节点具有第二数据节点的数据的备份信息,则第四数据节点可以将其具有的第二数据节点的数据的备份信息上报给元数据节点。如果由第一数据节点将指定的数据备份到第三数据节点,且第四数据节点也存储有指定的数据,那么第一数据节点可以将指定的数据备份到第三数据节点的信息提供给第四数据节点,即,第四数据节点获得第一数据节点将指定的数据备份到第三数据节点的信息,具体的,第四数据节点获得的是第一数据节点发出的第一数据节点将指定的数据备份到第三数据节点的信息。第四数据节点获得将指定的数据备份到第三数据节点的信息后,可以在第四数据节点存储的备份信息中,记录指定的数据备份到第三数据节点的信息,具体表现为,第四数据节点将指定的数据的信息^v对应于第二数据节点的目录中删除,并在对应于第三数据节点的目录中增加指定的凄t据的信息。对应于图3所示的方法,本发明实施例提供一种数据节点。上面提到过,这种数据节点应用于分布式文件系统中,分布式文件系统包括元数据节点和数据节点,每个数据节点都具有其存储的数据的备份信息。如图4所示,这种数据节点包括第一存储单元400,用于存储数据;第二存储单元401,用于存储第一存储单元400所存储数据的备份信息;第一交互单元402,用于获得第二数据节点发生故障的通知;第二交互单元403,用于与其他数据节点进行通信;当第一交互单元402获得第二数据节点发生故障的通知后,并且当第二交互单元403获得第一数据节点将指定的数据备份到第三数据节点的信息后,存储单元401在存储的备份信息中,记录指定的数据备份到第三数据节点,其中,指定的数据是第一存储单元400和第二数据节点都存储的数据。第一交互单元402获得的第二数据节点发生故障的通知可以是由元数据节点发出的。这个通知除可以包含第二数据节点发生故障的信息,还可以包含要求所有的数据节点上报第二数据节点的数据的备份信息的命令。可选的,第一交互单元402获得第二数据节点发生故障的通知之后,第二交互单元403获得第一数据节点将指定的数据备份到第三数据节点的信息之前,如果第二存储单元401存储有第二数据节点的数据的备份信息,则第一交互单元402将图4所示的数据节点存储的第二数据节点的数据的备份信息上报给元数据节点。如果由第一数据节点将指定的数据备份到第三数据节点,且图4所示的数据节点也存储有指定的数据,那么第一数据节点可以将指定的数据备份到第三数据节点的信息^是供给图4所示的翁:据节点,即,第二交互单元403获得第一数据节点将指定的数据备份到第三数据节点的信息,具体的,第二交互单元403获得的是第一数据节点发出的第一数据节点将指定的数据备份到第三数据节点的信息。第二交互单元403获得将指定的数据备份到第三数据节点的信息后,第二存储单元401可以在存储的备份信息中,记录指定的数据备份到第三数据节点的信息,具体表现为,第二存储单元401将指定的数据的信息从对应于15第二数据节点的目录中删除,并在对应于第三数据节点的目录中增加指定的数据的信息。图1和图2对应的实施例是从发起数据恢复的数据节点的角度描述的,图3和图4对应的实施例是从只修改备份信息的数据节点的角度来描述的,下面再从存储需要恢复的数据的数据节点的角度来描述本发明实施例。首先从存储需要恢复的数据的数据节点的角度来介绍一种数据恢复的方法。上面提到过,这种方法应用于分布式文件系统中,分布式文件系统包括元数据节点和数据节点,每个数据节点都具有其存储的数据的备份信息。如图5所示,这种方法包括S501:第三数据节点获得第二数据节点发生故障的通知;S502:当第三数据节点获得第一数据节点提供的数据及上述数据的备份信息后,存储上述数据及上述数据的备份信息,其中,上述数据是第二数据节点存储的数据。第三数据节点获得的第二数据节点发生故障的通知可以是由元数据节点发出的。这个通知除可以包含第二数据节点发生故障的信息,还可以包含要求所有的数据节点上报第二数据节点的数据的备份信息的命令。可选的,第三数据节点获得第二数据节点发生故障的通知之后,第三数据节点获得第一数据节点提供的上述数据及上述数据的备份信息之前,如果第三数据节点具有第二数据节点的数据的备份信息,则第三数据节点可以将其具有的第二数据节点的数据的备份信息上报给元数据节点。如果由第一数据节点将上述数据备份到第三数据节点,那么第一数据节点需要将上述数据提供给第三数据节点,即,第三数据节点获得第一数据节点提供的上述数据。另外,如果上述数据还存储在除第一数据节点和第二数据节点之外的其他数据节点中,那么第一数据节点还要将上述其他数据节点的信息提供给第三数据节点,即,第三数据节点还获得上述其他数据节点的信息。这样,第三数据节点不但存储有上述数据,还存储有上述数据的备份^f吕息。第三数据节点存储上述数据的备份信息具体表现为,第三数据节点将上述数据的信息增加到存储有上述数据的数据节点对应的目录中。对应于图5所示的方法,本发明还提供一种数据节点。上面提到过,这种数据节点应用于分布式文件系统中,分布式文件系统包括元数据节点和数据节点,每个数据节点都具有其存储的数据的备份信息。如图6所示,这种数据节点包括第一存储单元600,用于存储数据;第二存储单元601,用于存储第一存储单元600所存储数据的备份信息;第一交互单元602,用于获得第二数据节点发生故障的通知;第二交互单元603,用于与其他数据节点进行通信;当第一交互单元602获得第二数据节点发生故障的通知后,并且当第二交互单元603获得第一数据节点提供的数据及上述数据的备份信息后,第一存储单元600存储上述数据,并且第二存储单元601存储上述数据的备份信息,其中,上述数据是第二数据节点存储的数据。第一交互单元602获得的第二数据节点发生故障的通知可以是由元数据节点发出的。这个通知除可以包含第二数据节点发生故障的信息,还可以包含要求所有的数据节点上报第二数据节点的数据的备份信息的命令。可选的,第一交互单元602获得第二数据节点发生故障的通知之后,第二交互单元603获得第一数据节点提供的上述数据及上述数据的备份信息之前,如果第二存储单元601存储有第二数据节点的数据的备份信息,则第一交互单元602将第二存储单元601存储的第二数据节点的数据的备份信息上报给所述元数据节点。如果由第一数据节点将上述数据备份到图6所示的数据节点,那么第一数据节点需要将上述数据提供给图6所示的数据节点,即,第二交互单元603获得第一数据节点提供的上述数据。另外,如果上述数据还存储在除第一数据节点和第二数据节点之外的其他数据节点中,那么第一数据节点还要将上述其他数据节点的信息提供给图6所示的数据节点,即,第二交互单元603还获得上述其他数据节点的信息。这样,图6所示的数据节点不但存储有上述数据,还存储有上述数据的备份信息。第二存储单元601存储上述数据的备份信息具体表现为,第二存储单元601将上述数据的信息增加到存储有上述数据的数据节点对应的目录中。上面提到过,本发明实施例既可以从数据节点的角度来描述,还可以从分布式文件系统的角度来描述。所以,下面再介绍本发明实施例的分布式文件系统。一种分布式文件系统,包括元数据节点和数据节点,每个数据节点都具有其存储的数据的备份信息;其中,如果第二数据节点发生故障,则元数据节点向除第二数据节点之外的所有的数据节点发出第二数据节点发生故障的通知;第一数据节点将指定的数据备份到第三数据节点,并在第一数据节点存储的备份信息中,记录指定的数据备份到第三数据节点的信息,并将指定的数据备份到第三数据节点的信息提供给元数据节点及存储有指定的数据的其他数据节点,其中,指定的数据是第一^t据节点和第二数据节点都存储的数据;当存储有指定的数据的其他数据节点获得第一数据节点提供的将指定的数据备份到第三数据节点的信息后,存储有指定的数据的其他数据节点在其存储的备份信息中,记录指定的数据备份到第三数据节点的信息;当第三数据节点获得第一数据节点提供的指定的数据及指定的数据的备份信息后,第三数据节点存储指定的数据及指定的数据的备份信息。可选的,元数据节点向除第二数据节点之外的所有的数据节点发出第二数据节点发生故障的通知后,除第二数据节点之外的数据节点如果具有第二数据节点的数据的备份信息,则可以将其具有的第二数据节点的数据的备份信息上报给元数据节点。关于元数据节点、第一数据节点、第三数据节点、存储有指定的数据的其他数据节点(即图3对应的实施例中的第四数据节点及图4所示的H据节点)以及这些凝:据节点之间的通信可以参见图1-6对应的实施例中的相关描述,这里不再赘述。另外,在实际应用中,同一个数据一般会存储在多个数据节点中,当其中一个数据节点发生故障后,由哪个数据节点发起对上述数据的恢复可以由本领域技术人员根据实际需要而设计。例如,可以预先设置当其中一个数据节点发生故障后由某个存储有上述数据的数据节点发起恢复。再例如,当其中一个数据节点发生故障后,所有存储有发生故障的数据节点的数据的数据节点都上报其存储的发生故障的数据节点的数据的备份信息,之后,由元数据节点根据预先设置的规则或实际需要,指定某个数据节点对某个或某些数据发起恢复。为使本领域技术人员更加清楚的理解本发明实施例,下面再以一个实际应用的例子对本发明实施例进行i兌明。假设在一个分布式文件系统中共有5个数据节点,分别为dnl、dn2、dn3、dn4和dn5,这五个数据节点的目录结构如图7所示。在这个分布式文件系统中存有5个文件,分别为fl、f2、f3,、f4和f5,这五个文件均有3个备份,其中,fl备份在dnl、dn2、dn3上,f2备份在dnl、dn4、dn5上,f3备份在dn2、dn3、dn5上,f4备份在dn3、dn4、dn5上,f5备份在dnl、dn2、dn4上。分布式文件系统的文件逻辑结构如图8所示。当dn3发生故障后,由dnl的目录d3可以确定fl需要恢复,由dn2的目录d3可以确定fl、f3需要恢复,由dn4的目录d3可以确定f4需要恢复,由dn5的目录d3可以确定f3、f4需要恢复。假设指定由dnl恢复fl,dn2恢复f3,dn4恢复f4,dn5不需做恢复操作,具体的恢复过程如下dnl将fl复制到dn4上,将fl的链接从目录d3转到目录d4,即,在目录d3下删除fl的信息,在目录d4下增加fl的信息,之后,通知dn2更新这个信息。如果在dnl上还设置有存储有fl的数据节点的列表,则在这个列表中,将dn3修改为dn4。dn2将fl在目录d3下的链接转到目录d4下,即,在目录d3下删除fl的信息,在目录d4下增加fl的信息。如果在dn2上还设置有存储有fl的数据节点的列表,则在这个列表中,将dn3修改为dn4。dn2将G复制到dnl上,将f3的链接从目录d3转到目录dl,即,在目录d3下删除f3的信息,在目录dl下增加f3的信息,之后,通知dn5更新这个信息。如果在dn2上还设置有存储有fi的数据节点的列表,则在这个列表中,将dn3修改为dnl。dn5将G在目录d3下的链接转到目录dl下,即,在目录d3下删除f3的信息,在目录dl下增加fi的信息。如果在dn5上还设置有存储有f3的数据节点的列表,则在这个列表中,将dn3修改为dnl。dn4将f4复制到dn2上,将f4的链接从目录d3转到目录d2,即,在目录d3下删除f4的信息,在目录d2下增加f4的信息,之后,通知dn5更新这个信息。如果在dn4上还设置有存储有f4的数据节点的列表,则在这个列表中,将dn3修改为dn2。dn5将f4在目录d3下的链接转到目录d2下,即,在目录d3下删除f4的信息,在目录d2下增加f4的信息。如果在dn5上还设置有存储有f4的数据节点的列表,则在这个列表中,将dn3修改为dn2。最后,各个节点上的文件逻辑结构如图9所示。至此,完成了对dn3上的文件的恢复。需要说明的是,在上述所有的实施例中,存储备份信息的目录还可以替换为文件等结构形式。综上所述,在本发明的实施例中,分布式文件系统中的每个数据节点都具有其存储的数据的备份信息,当某个数据节点发生故障后,元数据节点将这个数据节点发生故障的信息提供给所有的数据节点,之后,开始对发生故障的数据节点存储的数据进行恢复。在整个过程中,对数据的恢复主要是在数据节点之间进行的,元数据节点不需要做出大量的工作,从而减轻了元数据节点的负担。另外,在现有技术中,元数据节点需要查询发生故障的数据节点存储有哪些数据,这些数据分别在哪个或哪些数据节点中有备份,进而导致数据恢复的效率不高。而在本发明的实施例中,数据恢复的工作主要由各个数据节点相互配合完成,元数据节点不需要查询大量的信息,这样可以提高数据恢复的效率。需要说明的是,对于本发明实施例的数据节点来说,其中包括的很多单元都是虚拟单元,即,由计算机语言的语句或语句组合实现。在实际应用中,不同语句的组合实现的功能可以有所不同,这种情况下,对虚拟单元的划分也可能有所不同。也就是说,本发明实施例只是给出了一种虚拟单元的划分方式,在实际应用中,本领域技术人员可以根据实际需要而采用不同的虚拟单元的划分方式,只要保证能够实现本发明实施例提到的数据节点所具有的功能即可。程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。以上所述仅是本发明的优选实施方式,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。20权利要求1.一种数据恢复的方法,其特征在于,所述方法包括第一数据节点获得第二数据节点发生故障的通知;第一数据节点将指定的数据存储到第三数据节点,并在第一数据节点存储的备份信息中,记录所述指定的数据存储在第三数据节点的信息,并将所述指定的数据存储到第三数据节点的信息提供给元数据节点及存储有所述指定的数据的其他数据节点,其中,所述指定的数据为第一数据节点和第二数据节点都存储的数据。2.如权利要求1所述的方法,其特征在于,在每个数据节点中都设置有对应其他数据节点的目录或文件,对于任意一个数据节点,如果该数据节点与另一个数据节点存储有相同的数据,则在所述数据节点中的对应于所述另一个数据节点的目录或文件中具有所述相同的数据的信息。3.如权利要求1所述的方法,其特征在于,第一数据节点获得第二数据节点发生故障的通知包括第一数据节点获得所述元数据节点发出的第二数据节点发生故障的通知。4.如权利要求1所述的方法,其特征在于,第一数据节点获得第二数据节点发生故障的通知之后,第一数据节点将所述指定的数据存储到第三数据节点之前,还包括如果第一数据节点具有第二数据节点的数据的备份信息,则第一数据节点将其具有的第二数据节点的数据的备份信息发送给所述元数据节点。5.如权利要求4所述的方法,其特征在于,第一数据节点具有第二数据节点的数据的备份信息包括在第一数据节点中设置的对应于第二数据节点的目录或文件中具有第二数据节点的数据的信息,或者,在第一数据节点中设置的对应于第二数据节点的目录或文件中具有第二数据节点的数据的信息及在第一数据节点中设置的对应于其他数据节点的目录或文件中具有上述第二数据节点的数据的信息。6.如权利要求4所述的方法,其特征在于,所述方法还包括第一数据节点获得元数据节点发出的对第二数据节点中的指定的数据进行恢复的命令,其中,第二数据节点中的指定的数据是已在第一数据节点中存储的数据。7.如权利要求1所述的方法,其特征在于,在第一数据节点存储的备份信息中、记录所述指定的数据备份在第三数据节点的信息包括第一数据节点将所述指定的数据的信息从对应于第二数据节点的目录或文件中删除,并在对应于第三数据节点的目录或文件中增加所述指定的数据的信息。8.—种数据节点,其特征在于,所述数据节点包括第一存储单元,用于存储数据;第二存储单元,用于存储所述第一存储单元所存储数据的备份信息;第一交互单元,用于获得第二数据节点发生故障的通知;第二交互单元,用于与其他数据节点进^f亍通信;其中,在所述第一交互单元获得第二数据节点发生故障的通知后,所述第二交互单元将所述指定的数据存储到第三数据节点,所述第二存储单元在存储的备份信息中,记录所述指定的数据存储在第三数据节点的信息,并且所述第一交互单元将所述指定的数据存储到第三数据节点的信息提供给元数据节点,所述第二交互单元将所述指定的数据存储到第三数据节点的信息提供给存储有所述指定的数据的其他数据节点,其中,所述指定的数据为所述数据节点和第二数据节点都存储的数据。9.如权利要求8所述的数据节点,其特征在于,所述存储单元在存储的备份信息中、记录所述指定的数据存储在第三数据节点的信息包括所述第二存储单元将所述指定的数据的信息从对应于第二数据节点的目录或文件中删除,并在对应于第三lt据节点的目录或文件中增加所述指定的lt据的信息。10.—种数据恢复的方法,其特征在于,所述方法包括第三数据节点获得第二数据节点发生故障的通知;当第三数据节点获得第一数据节点提供的数据及所述数据的备份信息后,存储所述数据及所述数据的备份信息,其中,所述数据是第一数据节点和第二数据节点都存储的数据。11.如权利要求IO所述的方法,其特征在于,在每个数据节点中都设置有对应其他数据节点的目录或文件,对于任意一个数据节点,如果该数据节点与另一个数据节点存储有相同的数据,则在所述数据节点中的对应于所述另一个数据节点的目录或文件中具有所述相同的凄t据的信息。12.如权利要求IO所述的方法,其特征在于,第三数据节点获得第二数据节点发生故障的通知包括第三数据节点获得所述元数据节点发出的第二数据节点发生故障的通知。13.如权利要求IO所述的方法,其特征在于,第三数据节点获得第二数据节点发生故障的通知之后,第三数据节点获得第一数据节点提供的数据及所述数据的备份信息之前,还包括如果第三数据节点具有第二数据节点的数据的备份信息,则第三数据节点将其具有的第二数据节点的数据的备份信息发送给所述元数据节点。14.如权利要求IO所述的方法,其特征在于,所述数据的备份信息包括存储有所述数据的数据节点的信息,第三数据节点存储所述数据的备份信息包括第三数据节点将所述数据的信息增加到存储有所述数据的数据节点对应的目录或文件中。15.—种数据节点,其特征在于,所述数据节点包括第一存储单元,用于存储数据;第二存储单元,用于存储所述第一存储单元所存储数据的备份信息;第一交互单元,用于获得第二数据节点发生故障的通知;第二交互单元,用于与其他数据节点进行通信;当所述第一交互单元获得第二数据节点发生故障的通知、并且第二交互单元获得第一数据节点提供的数据及所述数据的备份信息后,所述第一存储单元存储所述数据,所述第二存储单元存储所述数据的备份信息,其中,所述数据是第二数据节点存储的数据。16.如权利要求15所述的数据节点,其特征在于,所述第一交互单元获得第二数据节点发生故障的通知之后,所述第二交互单元获得第一数据节点提供的数据及所述数据的备份信息之前,如果所述第二存储单元存储有第二数据节点的数据的备份信息,则所述第一交互单元将其具有的第二数据节点的数据的备份信息发送给所述元数据节点。17.如权利要求15所述的数据节点,其特征在于,所述数据的备份信息包括存储有所述数据的数据节点的信息,所述第二存储单元存储所述数据的备份信息包括所述第二存储单元将所述数据的信息增加到存储有所述数据的数据节点对应的目录或文件中。18.—种分布式文件系统,包括元数据节点和数据节点,其特征在于,每个数据节点都具有其存储的数据的备份信息;其中,如果第二数据节点发生故障,则所述元数据节点向除第二数据节点之外的所有的数据节点发出第二数据节点发生故障的通知;第一数据节点将所述指定的数据存储到第三数据节点,并在第一数据节点存储的备份信息中,记录所述指史的数据存储在第三数据节点的信息,并将所述指定的数据存储到第三数据节点的信息提供给元数据节点及存储有所述指定的数据的其他数据节点,其中,第一数据节点和第二数据节点都存储有所述指定的数据;当存储有所述指定的数据的其他数据节点获得第一数据节点提供的将所述指定的数据存储到第三数据节点的信息后,存储有所述指定的数据的其他数据节点在其存储的备份信息中,记录所述指定的数据存储在第三数据节点的信息;当第三数据节点获得第一数据节点提供的所述指定的数据及所述指定的数据的备份信息后,第三数据节点存储所述指定的数据及所述指定的数据的备份信息。19.如权利要求18所述的系统,其特征在于,所述元数据节点向除第二数据节点之外的所有的数据节点发出第二数据节点发生故障的通知后,除第二数据节点之外的数据节点如果具有第二数据节点的数据的备份信息,则将其具有的第二数据节点的数据的备份信息上报给所述元数据节点。全文摘要本发明提供一种数据恢复的方法,包括第一数据节点获得第二数据节点发生故障的通知;第一数据节点将指定的数据存储到第三数据节点,并在第一数据节点存储的备份信息中,记录所述指定的数据存储在第三数据节点的信息,并将所述指定的数据存储到第三数据节点的信息提供给元数据节点及存储有所述指定的数据的其他数据节点,其中,所述指定的数据为第一数据节点和第二数据节点都存储的数据。本发明还提供一种数据恢复的方法、两种数据节点和一种分布式文件系统。在本发明中,对数据的恢复主要是在数据节点之间进行的,元数据节点不需要做出大量的工作,从而减轻了元数据节点的负担。文档编号G06F11/14GK101539873SQ20091013494公开日2009年9月23日申请日期2009年4月15日优先权日2009年4月15日发明者欢封申请人:成都市华为赛门铁克科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1