副本存储方法、装置、存储介质及计算机设备

文档序号:1921485 发布日期:2021-12-03 浏览:14次 >En<

阅读说明:本技术 副本存储方法、装置、存储介质及计算机设备 (Copy storage method and device, storage medium and computer equipment ) 是由 黄福堂 于 2021-08-18 设计创作,主要内容包括:本申请公开了一种副本存储方法、装置、存储介质及计算机设备,属于计算机技术领域。所述方法应用于分布式文件系统,包括:若目标故障组中存储副本的至少一个存储节点发生故障,则确定所覆盖的故障范围,基于所述故障范围,调整所述副本在所述目标故障组中的存储方式,以使所述目标数据分片的状态为完全可用状态,采用本申请,可以在存储节点发生故障时及时调整存储节点上存储的副本的存储方式,避免了存储节点故障对分布式文件系统的读写服务产生影响,保证了分布式文件系统的可用性和可靠性。(The application discloses a copy storage method, a copy storage device, a storage medium and computer equipment, and belongs to the technical field of computers. The method is applied to a distributed file system and comprises the following steps: if at least one storage node storing the copies in the target failure group fails, determining a covered failure range, and adjusting the storage mode of the copies in the target failure group based on the failure range to enable the state of the target data fragments to be a fully available state.)

副本存储方法、装置、存储介质及计算机设备

技术领域

本申请涉及计算机技术领域,尤其涉及一种副本存储方法、装置、存储介质及计算机设备。

背景技术

在分布式文件系统中,文件以数据分片为单位存储在分布式文件系统的各存储节点中,为了保证分布式文件系统的可靠性,各数据分片以多副本的形式存储在不同的存储节点上,且这几个不同的存储节点属于不同的故障域。故障域是划分的存储区域,划分故障域是为了避免某个存储区域出现故障时,存放在该存储区域的相同副本都会受到影响,通常将相同副本存放在不同的故障域中。

当某个数据分片的副本所属的存储节点发生故障时,为保证该数据分片正常的读写服务,需要将该存储节点上存储的副本存储到另一个正常的存储节点上。现有的存储节点发生故障进行副本存储的方案通常只能在本故障域内进行迁移,迁移策略不够灵活,影响了分布式文件系统的可靠性和可用性。

发明内容

本申请实施例提供了一种副本存储方法、装置、存储介质及计算机设备,应用于分布式文件系统,所述分布式文件系统包括多个故障域,每个所述故障域包括至少一个虚拟故障子域,每个所述虚拟故障子域包括多个存储节点,在所述至少一个虚拟故障子域中选取与目标数据分片的副本数量相同的虚拟故障子域以得到至少一个故障组,所述目标数据分片的副本存储在所述至少一个故障组中的目标故障组中。所述技术方案如下:

第一方面,本申请实施例提供了一种副本存储方法,所述方法应用于计算机设备,所述方法包括:

若所述目标故障组中存储所述副本的至少一个存储节点发生故障,则确定所覆盖的故障范围;

基于所述故障范围,调整所述副本在所述目标故障组中的存储方式,以使所述目标数据分片的状态为完全可用状态。

第二方面,本申请实施例提供了一种副本存储装置,所述副本存储装置包括:

故障范围确定模块,用于若所述目标故障组中存储所述副本的至少一个存储节点发生故障,则确定所覆盖的故障范围;

副本调整模块,用于基于所述故障范围,调整所述副本在所述目标故障组中的存储方式,以使所述目标数据分片的状态为完全可用状态。

第三方面,本申请实施例提供一种存储介质,所述存储介质存储有至少一条指令,所述至少一条指令适于由处理器加载并执行上述的方法步骤。

第四方面,本申请实施例提供一种计算机设备,可包括:处理器和存储器;其中,所述存储器存储有至少一条指令,所述至少一条指令适于由所述处理器加载并执行上述的方法步骤。

本申请一些实施例提供的技术方案带来的有益效果至少包括:

采用本申请实施例提供的副本存储方法,在分布式文件系统的一个目标故障组中存储副本的至少一个存储节点发生故障时,首先确定所覆盖的故障范围,基于所述故障范围,调整所述副本在所述目标故障组中的存储方式,以使所述目标数据分片的状态为完全可用状态,避免了存储节点故障对分布式文件系统的读写服务产生影响,保证了分布式文件系统的可用性和可靠性。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为现有技术中一种分布式文件系统的架构示意图;

图2为本申请实施例提供的一种分布式文件系统的系统架构;

图3为本申请实施例提供的一种副本存储方法的流程示意图;

图4为本申请实施例提供的一种副本存储方法的流程示意图;

图5为本申请实施例提供的一种副本迁移的举例示意图;

图6为本申请实施例提供的一种副本存储方法的流程示意图;

图7为本申请实施例提供的一种分配临时数据分片的举例示意图;

图8为本申请另一示例性实施例提供的副本存储方法的流程图;

图9为本申请另一示例性实施例提供的副本存储方法的流程图;

图10为本申请实施例提供的一种副本存储装置的结构示意图

图11为本申请实施例提供的一种计算机设备的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本申请的描述中,需要说明的是,除非另有明确的规定和限定,“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。

为了更清楚的描述本发明实施例的技术方案,在描述之前,对本发明中的一些概念进行详细描述以便更好的理解本方案。

分布式文件系统(distributed file system,DFS):分布式文件系统是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点(可简单的理解为一台计算机)相连。分布式文件系统的设计基于客户机/服务器模式。一个典型的网络可能包括多个供多用户访问的服务器。

故障域(ZONE):数据分片的副本存储的隔离区域,对于一个数据分片,每个故障域中只能存放一个该数据分片的副本。

存储节点(data node):数据存储节点,存储业务文件数据节点,一台对象存储设备可看作一个存储节点。

虚拟故障子域(node set):存储节点的集合,由多台对象存储设备组成一个虚拟故障子域,一个故障域可包括多个虚拟故障子域。

故障组(Group):几个位于不同故障域的虚拟故障子域组成一个故障组。

最初的文件系统仅仅是为了局域网内的本地数据服务的,而随着信息时代的到来,用户获取的数据成指数倍的增长,单单依靠增加硬盘数量来扩展文件系统的存储容量的方式,在容量大小、容量增长速度、数据备份和数据安全等方面的表现都差强人意。因此分布式文件系统应运而生,分布式文件系统将服务范围扩展到了整个网络。不仅改变了数据的存储和管理方式,也拥有了本地文件系统所无法具备的数据备份、数据安全等优点。

分布式文件系统是指文件系统管理的物理存储资源不一定直接链接在本地节点上,而是通过计算机网络与节点相连,分布式文件系统的设计基于客户机/服务器模式,一个典型的网络可能包括多个供多用户访问的服务器。分布式文件系统可以有效解决数据的存储和管理难题:将固定于某个地点的某个文件系统,扩展到任意多个地点/多个文件系统,众多的存储节点组成一个文件系统网络。每个存储节点可以分布在不同的地点,通过网络进行存储节点间的通信和数据传输。用户在使用分布式文件系统时,无需关心数据是存储在哪个存储节点上、或者是从哪个存储节点中获取的,只需要像使用本地文件系统一样管理和存储文件系统中的数据。

在单个文件中的数据量过大时,存在单个存储节点无法存放的问题,因此在分布式文件系统中,采用将整个文件切成多个小数据分片,并将多个小的数据分片分别存放到不同的存储节点上。而为保证分布式文件系统的高可靠性,又采用冗余的方式进行数据分片的存储,即将每个数据分片存储多个副本到不同的存储节点上,且每个数据分片的多个副本所存储的存储节点按照设置的故障域进行隔离,保证分布式文件系统具有更好的可用性和可靠性。故障域是人为划分的存储区域,划分故障域是为了避免某个存储区域出现故障时,存放在该区域的相同副本数据都会受到影响,因此将相同副本数据存放在不同的故障域中,可以有效提高分布式文件系统的可用性和可靠性。

因此,分布式文件系统的架构为:一个分布式文件系统包括多个故障域,每个故障域包括多个存储节点,每个存储节点上存储有多个数据分片的副本。所述故障域可根据分布式文件系统的系统规模以及安全级别具体划分,例如可以是以一个数据中心为故障域、以一个机房为故障域、以一个机架为故障域等,所述存储节点可看作是一个对象存储设备。请参见图1,图1为现有技术中一种分布式文件系统的架构示意图。如图1所示,在图1所示的分布式文件系统中每个数据分片的副本数量为三个,图1所示的分布式文件系统包括三个机房,一个机房为一个故障域,每个机房中包括多个对象存储设备,每个对象存储设备为一个存储节点,即存放一个数据分片的三个副本的三台对象存储设备位于不同的机房中。

在分布式文件系统中,通常将丢失数据分片所有副本的概率作为评判该分布式文件系统可靠性的依据,已知丢失数据分片的R个副本的概率公式为:其中R表示副本的数量,Pr表示存储这个R个副本的R个存储节点同时出现故障的概率,N表示分布式文件系统中存储节点的数量,M表示一个数据分片的R个副本在分布式文件系统中分配情况的数量。

基于此,更进一步的提出了一种新的分布式文件系统架构,所述分布式文件系统包括多个故障域,每个所述故障域包括至少一个虚拟故障子域,每个所述虚拟故障子域包括多个存储节点,在所述至少一个虚拟故障子域中选取与目标数据分片的副本数量相同的虚拟故障子域以得到至少一个故障组,所述目标数据分片的副本存储在所述至少一个故障组中的目标故障组中。请参见图2,图2为本申请实施例提供的一种分布式文件系统的系统架构。

如图2所示,所示分布式文件系统包括四个机房,每个机房包括三个对象存储设备集合,每个所述对象存储设备集合中包括八台对象存储设备,即将每个机房作为一个故障域,将每个机房中的对象存储设备集合作为虚拟故障子域,每个存储设备集合中的对象存储设备为一个存储节点,并从每个故障域中选择一个虚拟故障子域组成一个故障组,一个数据分片的三个副本分别存储在一个故障组中的三个虚拟故障子域中的任一存储节点上。图2所示的分布式文件系统在第一级故障域的基础上,又划分小的虚拟故障子域,降低了丢失数据分片的R个副本的概率公式中的M的值,即降低了分布式文件系统中丢失数据分片的R个副本的概率,提高了分布式文件系统的可靠性。

本申请在如图2所示的分布式文件系统的架构基础上,提出了一种副本存储方法,在存储节点发生故障时,首先确定故障范围,然后根据故障范围调整副本在故障组中的存储方式,以避免故障对分布式文件系统的正常读写服务产生影响,充分保证分布式文件系统的可用性和可靠性。

下面结合具体的实施例进行详细说明,为了便于说明,下述实施例均以计算机设备为智能手机为例进行说明。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。附图中所示的流程图仅是示例性说明,不是必须按照所示步骤执行。例如,有的步骤是并列的,在逻辑上并没有严格的先后关系,因此实际执行顺序是可变的。

请参见图3,为本申请实施例提供的一种副本存储方法的流程示意图。所述副本存储方法应用于分布式文件系统,所述分布式文件系统包括多个故障域,每个所述故障域包括至少一个虚拟故障子域,每个所述虚拟故障子域包括多个存储节点,在所述至少一个虚拟故障子域中选取与目标数据分片的副本数量相同的虚拟故障子域以得到至少一个故障组,所述目标数据分片的副本存储在所述至少一个故障组中的目标故障组中。如图3所示,所述副本存储方法可以包括以下步骤S101~S102。

S101,若目标故障组中存储副本的至少一个存储节点发生故障,则确定所覆盖的故障范围;

具体的,采用心跳检测机制实时检测分布式文件系统中是否发生故障,当检测到某一存储节点发生故障时,确定当前故障的故障范围,所述故障范围可以是目标故障组内单个存储节点发生故障、多个存储节点发生故障、一个虚拟故障子域发生故障或多个虚拟故障子域发生故障。

所述单个存储节点发生故障可能是目标故障组中任一虚拟故障子域中的任一存储节点发生故障;所述多个存储节点发生故障可以是目标故障组中一个或几个虚拟故障子域中的多个存储节点发生故障;所述一个虚拟故障子域发生故障可以是该虚拟故障子域中的所有存储节点发生故障或该虚拟故障子域所在的故障域发生故障,例如在一个故障域为机房的分布式文件系统,虚拟故障子域可以是机房中的机架,则虚拟故障子域发生故障即机房中的一个机架发生故障或整个机房发生故障;所述多个虚拟故障子域发生故障可以是多个虚拟故障子域对应的故障域发生故障,在一个故障域为机房,虚拟故障子域是机房中的机架的分布式文件系统中,即多个机房发生故障。

S102,基于故障范围,调整副本在目标故障组中的存储方式,以使目标数据分片的状态为完全可用状态;

具体的,根据故障范围采用不同的方式调整所述副本在所述目标故障组中的存储方式,以使所述目标数据分片的状态为完全可用状态,所述目标数据分片为泛指的概念,它不单单表示分布式文件系统中的某一个数据分片,而是可以泛指所述分布式文件系统中任一数据分片,在本申请实施例中,目标数据分片指发生故障的存储节点上存储的副本对应的数据分片。若所述故障范围为目标故障组内单个存储节点发生故障、多个存储节点发生故障,则将发生故障的存储节点上存储的副本存储至所述虚拟故障子域内未发生故障的存储节点中;若所述故障范围为所述目标故障组中部分虚拟故障子域发生故障,则所述目标数据分片有副本丢失,所述目标数据分片的部分服务受到影响,不属于完全可用状态,则重新分配临时数据分片,将所述临时数据分片的副本存储至所述目标故障组内未发生故障的虚拟故障子域中,所述临时数据分片用来接替所述目标数据分片受到影响的服务。

在一种可能的实施方式中,若所述故障范围为目标故障组内的某个虚拟故障子域中的一个存储节点发生故障时,则将该发生故障的存储节点中存储的目标数据分片的副本存储至该虚拟故障子域内未发生故障的正常存储节点中。

在一种可能的实施方式中,若所述故障范围为目标故障组内的某个虚拟故障子域发生故障时,则重新分配临时数据分片,将临时数据分片的副本存储在所述目标故障组中未发生故障的虚拟故障子域中,所述临时数据分片用来接替所述目标数据分片被影响的服务功能。

在本申请实施例中,在分布式文件系统的一个目标故障组中存储副本的至少一个存储节点发生故障时,首先确定所覆盖的故障范围,基于所述故障范围,调整所述副本在所述目标故障组中的存储方式,以使所述目标数据分片的状态为完全可用状态,避免了存储节点故障对分布式文件系统的读写服务产生影响,保证了分布式文件系统的可用性和可靠性。

在一个实施例中,分布式文件系统的副本配置量可以为3。下述实施例重点讲述副本配置量为3的情况下,存储节点发生故障时的副本存储方法。

请参见图4,为本申请实施例提供的一种副本存储方法的流程示意图。所述副本存储方法应用于分布式文件系统,所述分布式文件系统包括多个故障域,每个所述故障域包括至少一个虚拟故障子域,每个所述虚拟故障子域包括多个存储节点,在所述至少一个虚拟故障子域中选取与目标数据分片的副本数量相同的虚拟故障子域以得到至少一个故障组,所述目标数据分片的副本存储在所述至少一个故障组中的目标故障组中。如图4所示,所述副本存储方法可以包括以下步骤。

S201,若目标故障组中存储副本的至少一个存储节点发生故障,则确定所覆盖的故障范围;

具体的,采用心跳检测机制实时检测分布式文件系统中是否发生故障,当检测到某一存储节点发生故障时,确定当前故障的故障范围,所述故障范围可以是目标故障组内单个存储节点发生故障、多个存储节点发生故障、一个虚拟故障子域发生故障或多个虚拟故障子域发生故障。

所述心跳检测机制即实时向分布式文件系统的各故障域中虚拟故障子域的各存储节点发送心跳消息,若可以收到消息回复则证明回复消息的存储节点没有发生故障,若收不到消息回复则证明没有回复消息的存储节点发生故障。

S202,若故障范围为目标故障组中虚拟故障子域内部分存储节点发生故障,则将发生故障的存储节点上存储的副本存储至虚拟故障子域内未发生故障的存储节点中,部分存储节点包括存储副本的存储节点;

具体的,当故障范围为目标故障组中虚拟故障子域内部分存储节点发生故障时,则将发生故障的存储节点上存储的副本存储至相同虚拟故障子域中未发生故障的存储节点中。

在副本配置量为3的分布式文件系统中,所述目标故障组中包括三个虚拟故障子域,所述目标故障组中虚拟故障子域内部分存储节点发生故障可以是目标故障组的其中一个虚拟故障子域内一个或多个存储节点发生故障,或者是所述目标故障组内两个虚拟故障子域内分别各有一个或多个存储节点发生故障,或者是所述目标故障组内三个虚拟故障子域内分别各有一个或多个存储节点发生故障。由前述可知,一个目标数据分片的三个副本存储在所述目标故障组的三个虚拟故障子域中,每个虚拟故障子域中的其中一个存储节点存储有一个目标数据分片的副本。则所述目标故障组中虚拟故障子域内部分存储节点发生故障可以对应于目标数据分片副本丢失的三种情况,可对应于步骤S2021~步骤S2023。

S2021,若故障范围为目标故障组中虚拟故障子域内部分存储节点发生故障,且部分存储节点包括一个存储副本的存储节点,则将目标数据分片的状态调整为第一部分可用状态,第一部分可用状态包括只允许读和覆盖写;

具体的,若所述部分存储节点包括一个存储所述副本的存储节点,则所述目标数据分片的副本丢失数为1,由于所述目标数据分片的副本数量不满足预设的副本配置量,原副本配置量为3,现有可用副本数量为2,则将目标数据分片的状态调整为第一部分可用状态,所述第一部分可用状态包括只允许读和覆盖写。

S2022,若故障范围为目标故障组中虚拟故障子域内部分存储节点发生故障,且部分存储节点包括两个存储副本的存储节点,则将目标数据分片的状态调整为第二部分可用状态,第二部分可用状态包括只允许读;

具体的,若所述部分存储节点包括两个存储所述副本的存储节点,则所述目标数据分片的副本丢失数为2,由于所述目标数据分片的副本数量不满足预设的副本配置量,原副本配置量为3,现有可用副本数量为1,则将目标数据分片的状态调整为第二部分可用状态,所述第二部分可用状态包括只允许读。

S2023,若故障范围为目标故障组中虚拟故障子域内部分存储节点发生故障,且部分存储节点包括三个存储副本的存储节点,则将目标数据分片的状态调整为不可用状态,不可用状态包括不允许读、不允许覆盖写和不允许新写;

具体的,若所述部分存储节点包括三个存储所述副本的存储节点,则所述目标数据分片的副本丢失数为3,由于所述目标数据分片的副本数量不满足预设的副本配置量,原副本配置量为3,现有可用副本数量为0,则目标数据分片的所有副本丢失,将目标数据分片的状态调整为不可用状态,所述不可用状态包括不允许读、不允许覆盖写和不允许新写。

可以理解的是,在分布式文件系统中,为保证分布式文件系统的高可靠性而将目标数据分片采用多副本策略进行存储,其中副本数量可代表目标数据分片的安全等级,例如,在本申请实施例中,采用3副本存储策略,则对应目标数据分片的安全等级为3。当3个副本中部分副本发生故障时,为继续保证目标数据分片的安全等级达到3,会对发生故障的副本进行修复,而在副本修复期间可能同时在目标数据分片上进行着数据的新写或覆盖写,此时的新写或覆盖写发生在未发生故障的副本上,对于已经发生故障并在修复中的副本,需要在副本修复完成之后再进行副本之间的数据同步,而对新写任务进行数据同步的任务复杂度要高于对覆盖写任务进行数据同步的任务复杂度。因此,为降低所述目标数据分片在部分副本发生故障到副本修复完成期间的数据同步的任务复杂度,在副本发生故障时,通常对目标数据分片的状态进行调整,在本申请实施例中,在副本配置量为3的分布式文件系统中,当有1个副本发生故障时,限制对目标数据分片的新写,即将目标数据分片的状态调整为只允许读和覆盖写;当有2个副本发生故障时,限制对目标数据分片的新写和覆盖写,即将目标数据分片的状态调整为只允许读;当有3个副本发生故障时,无可用副本,无法对目标数据分片执行任何操作,则将目标数据分片的状态调整为不允许读、不允许覆盖写和不允许新写。

S203,将目标数据分片的状态调整为完全可用状态,完全可用状态包括允许读、覆盖写和新写。

具体的,步骤S203是在步骤S202之后,即将发生故障的存储节点上存储的副本存储至所述虚拟故障子域内未发生故障的存储节点中之后,目标数据分片的三个副本恢复至正常可用,则将目标数据分片的状态调整为完全可用状态,所述完全可用状态包括允许读、覆盖写和新写。

请一并参见图5,为本申请实施例提供的一种副本迁移的举例示意图。如图5所示,在目标故障组中,图5所示的目标故障组中包括虚拟故障子域1、虚拟故障子域2以及虚拟故障子域3,目标数据分片的副本一个存储在虚拟故障子域1中的对象存储设备2上,一个存储在虚拟故障子域2中的对象存储设备6上,另一个虚拟故障子域3中的对象存储设备4上,此时虚拟故障子域1中对象存储设备1、对象存储设备2和对象存储设备3发生故障,则可以将原本应该存储在对象存储设备2上的目标数据分片的副本存储至虚拟故障子域1中对象存储设备6上,图5中对象存储设备即存储节点。

在本申请实施例中,在分布式文件系统的一个目标故障组中存储副本的至少一个存储节点发生故障时,首先确定所覆盖的故障范围,在所述故障范围为目标故障组中虚拟故障子域内部分存储节点发生故障,目标数据分片的可用状态受到影响时,通过将发生故障的存储节点上存储的副本存储至相同虚拟故障子域中未发生故障的存储节点中,使目标数据分片的恢复至完全可用状态,保证了分布式文件系统的可用性。

请参见图6,为本申请实施例提供的一种副本存储方法的流程示意图。所述副本存储方法应用于分布式文件系统,所述分布式文件系统包括多个故障域,每个所述故障域包括至少一个虚拟故障子域,每个所述虚拟故障子域包括多个存储节点,在所述至少一个虚拟故障子域中选取与目标数据分片的副本数量相同的虚拟故障子域以得到至少一个故障组,所述目标数据分片的副本存储在所述至少一个故障组中的目标故障组中。如图6所示,所述副本存储方法可以包括以下步骤。

S301,若目标故障组中存储副本的至少一个存储节点发生故障,则确定所覆盖的故障范围;

具体的,采用心跳检测机制实时检测分布式文件系统中是否发生故障,当检测到某一存储节点发生故障时,确定当前故障的故障范围,所述故障范围可以是目标故障组内单个存储节点发生故障、多个存储节点发生故障、一个虚拟故障子域发生故障或多个虚拟故障子域发生故障。

所述心跳检测机制即实时向分布式文件系统的各故障域中虚拟故障子域的各存储节点发送心跳消息,若可以收到消息回复则证明回复消息的存储节点没有发生故障,若收不到消息回复则证明没有回复消息的存储节点发生故障。

S302,若故障范围为目标故障组中部分虚拟故障子域发生故障,则重新分配临时数据分片,在目标故障组内未发生故障的虚拟故障子域中确定与副本数量相同的存储节点,将临时数据分片的副本存储至存储节点中;

不难理解,若故障范围为目标故障组中部分虚拟故障子域发生故障,则目标数据分片存储于发生故障的虚拟故障子域中的副本丢失,且不能将丢失的副本恢复在发生故障的虚拟故障子域中,则采用重新分配临时数据分片的方式,将临时数据分片的三个副本存储在所述目标故障组中未发生故障的其余虚拟故障子域中。所述虚拟故障子域发生故障可以是虚拟故障子域单独故障或者是虚拟故障子域所属的故障域整个发生故障。

具体的,若所述故障范围为所述目标故障组中部分虚拟故障子域发生故障,则重新分配临时数据分片,按照随机顺序依次在所述目标故障组内每个未发生故障的虚拟故障子域中循环选取存储节点,每次选取一个存储节点直到已选取的存储节点的数量等于所述副本数量,将所述临时数据分片的副本存储至所选取的存储节点中。

所述临时数据分片可以接替由于目标数据分片副本丢失所不能实现的服务内容。例如,所述目标数据分片的副本丢失,针对所述目标数据分片的新写服务不能继续在目标数据分片上进行新写,则由临时数据分片接替目标数据分片的新写服务。

S303,若目标故障组中发生故障的虚拟故障子域恢复正常,则按照分散原则将临时数据分片的副本存储至目标故障组内,目标故障组内每个虚拟故障子域中存储一个副本。

具体的,若发生故障的虚拟故障子域被修复后恢复正常,则按照分散原则将临时数据分片的副本存储至目标故障组内的所有虚拟故障子域中,每个所述虚拟故障子域中存储一个临时数据分片的副本。

请一并参见图7,为本申请实施例提供的一种分配临时数据分片的举例示意图。如图7所示,在图7所示的目标故障组中,包括虚拟故障子域1、虚拟故障子域2以及虚拟故障子域3,目标数据分片的副本一个存储在虚拟故障子域1中的对象存储设备2上,一个存储在虚拟故障子域2中的对象存储设备6上,另一个虚拟故障子域3中的对象存储设备4上,此时虚拟故障子域1发生故障,则可以重新分配临时数据分片,将临时数据分片的三个副本存储在未发生故障的虚拟故障子域2中的对象存储设备2、对象存储设备3以及虚拟故障子域3中的对象存储设备5上。

进一步的,将所述临时数据分片的副本在所述目标故障组中重新分配之后,将目标数据分片的状态调整为完全可用状态,以及将临时数据分片的状态调整为第一部分可用状态,所述完全可用状态包括允许读、覆盖写和新写,所述第一部分可用状态包括只允许读和覆盖写。

不难理解,所述临时数据分片是在目标数据分片出现故障时,被临时分配的数据分片,用于在目标数据分片出现故障时,接替目标数据分片的新写服务,即在目标数据分片发生故障期间,针对目标数据分片新写入的数据会被存储在临时数据分片中,而在目标数据分片的副本修复完成后,目标数据分片可以继续进行新写服务,则关闭临时数据分片的新写服务,使数据存储继续保持原有的规则。因此,将临时数据分片的状态调整为只允许读和覆盖写。

在本申请实施例中,在分布式文件系统的一个目标故障组中存储副本的至少一个存储节点发生故障时,首先确定所覆盖的故障范围,若所述故障范围是目标故障组中部分虚拟故障子域发生故障时,通过分配临时数据分片,将临时数据分片的副本存储至目标故障组中未发生故障的虚拟故障子域中,以使临时数据分片接替目标数据分片由于副本丢失被影响的服务,保证了分布式文件系统的可用性;在发生故障的虚拟故障子域恢复整正常时,将临时数据分片的副本在目标故障组中按照分散原则调整存储方式,进一步保证了分布式文件系统的可靠性。

基于图6实施例所公开的方案,在虚拟故障子域发生故障直到故障恢复的过程中,还应对目标数据分片和临时数据分片的可用状态进行调整,请参考下述实施例。

请参见图8,图8为本申请另一示例性实施例提供的副本存储方法的流程图。该副本存储方法可以应用在图2所示的系统中。所述副本存储方法应用于分布式文件系统,所述分布式文件系统包括多个故障域,每个所述故障域包括至少一个虚拟故障子域,每个所述虚拟故障子域包括多个存储节点,在所述至少一个虚拟故障子域中选取与目标数据分片的副本数量相同的虚拟故障子域以得到至少一个故障组,所述目标数据分片的副本存储在所述至少一个故障组中的目标故障组中。如图8所示,该副本存储方法包括:

S401,若目标故障组中存储副本的至少一个存储节点发生故障,则确定所覆盖的故障范围;

S402,若故障范围为目标故障组中一个虚拟故障子域发生故障,则将目标数据分片的状态调整为第一部分可用状态,第一部分可用状态包括只允许读和覆盖写;

不难理解,在目标故障组中的每一个虚拟故障子域中都存储有一个目标数据分片的副本,若所述故障范围为所述目标故障组中一个虚拟故障子域发生故障,表明目标数据分片的副本丢失数为1,在副本配置量为3的分布式文件系统中,需要将目标数据分片的状态调整为只允许读和覆盖写。

S403,重新分配临时数据分片,在目标故障组内未发生故障的虚拟故障子域中确定与副本数量相同的存储节点,将临时数据分片的副本存储至存储节点中;

S404,将临时数据分片的状态设置为完全可用状态,完全可用状态包括允许读、覆盖写和新写;

S405,若目标故障组中发生故障的虚拟故障子域恢复正常,则按照分散原则将临时数据分片的副本存储至目标故障组内,目标故障组内每个虚拟故障子域中存储一个副本。

在本申请实施例中,在目标故障组中一个虚拟故障子域发生故障时,将目标数据分片调整为只允许读和覆盖写的第一可用状态,然后分配临时数据分片,将临时数据分片的副本保存至目标故障组中没有发生故障的虚拟故障子域中,并将临时数据分片设置为允许读、允许覆盖写以及允许新写的完全可用状态,使得临时数据分片接替目标数据分片的新写服务,采用本申请实施例,在虚拟故障子域发生故障的情况下,也能保证目标数据分片的可用状态,保证了分布式文件系统的可靠性和可用性。

请参见图9,图9为本申请另一示例性实施例提供的副本存储方法的流程图。该副本存储方法可以应用在图2所示的系统中。所述副本存储方法应用于分布式文件系统,所述分布式文件系统包括多个故障域,每个所述故障域包括至少一个虚拟故障子域,每个所述虚拟故障子域包括多个存储节点,在所述至少一个虚拟故障子域中选取与目标数据分片的副本数量相同的虚拟故障子域以得到至少一个故障组,所述目标数据分片的副本存储在所述至少一个故障组中的目标故障组中。如图9所示,该副本存储方法包括:

S501,若目标故障组中存储副本的至少一个存储节点发生故障,则确定所覆盖的故障范围;

S502,若故障范围为目标故障组中两个虚拟故障子域发生故障,则将目标数据分片的状态调整为第二部分可用状态,第二部分可用状态包括只允许读;

不难理解,在目标故障组中的每一个虚拟故障子域中都存储有一个目标数据分片的副本,若所述故障范围为所述目标故障组中两个虚拟故障子域发生故障,表明目标数据分片的副本丢失数为2,在副本配置量为3的分布式文件系统中,需要将目标数据分片的状态调整为只允许读。

S503,重新分配临时数据分片,在目标故障组内未发生故障的虚拟故障子域中确定与副本数量相同的存储节点,将临时数据分片的副本存储至存储节点中;

S504,将临时数据分片的状态设置为完全可用状态,完全可用状态包括允许读、覆盖写和新写;

S505,若目标故障组中发生故障的虚拟故障子域恢复正常,则按照分散原则将临时数据分片的副本存储至目标故障组内,目标故障组内每个虚拟故障子域中存储一个副本。

在本申请实施例中,在目标故障组中两个虚拟故障子域发生故障时,将目标数据分片调整为只允许读的第二可用状态,然后分配临时数据分片,将临时数据分片的副本保存至目标故障组中没有发生故障的虚拟故障子域中,并将临时数据分片设置为允许读、允许覆盖写以及允许新写的完全可用状态,使得临时数据分片接替目标数据分片的新写服务,采用本申请实施例,在虚拟故障子域发生故障的情况下,也能保证目标数据分片的可用状态,保证了分布式文件系统的可靠性和可用性。

请参见图10,为本申请实施例提供的一种副本存储装置的结构示意图。如图10所示,该副本存储装置1可以通过软件、硬件或者两者的结合实现成为计算机设备的全部或一部分。根据一些实施例,该副本存储装置1包括,故障范围确定模块11、副本调整模块12,具体包括:

故障范围确定模块11,用于若所述目标故障组中存储所述副本的至少一个存储节点发生故障,则确定所覆盖的故障范围;

副本调整模块12,用于基于所述故障范围,调整所述副本在所述目标故障组中的存储方式,以使所述目标数据分片的状态为完全可用状态。

可选的,所述副本调整模块12,包括:

第一副本调整单元121,用于若所述故障范围为所述目标故障组中虚拟故障子域内部分存储节点发生故障,则将发生故障的存储节点上存储的副本存储至所述虚拟故障子域内未发生故障的存储节点中,所述部分存储节点包括存储所述副本的存储节点;

第二副本调整单元122,用于若所述故障范围为所述目标故障组中部分虚拟故障子域发生故障,则重新分配临时数据分片,将所述临时数据分片的副本存储至所述目标故障组内未发生故障的虚拟故障子域中。

可选的,所述副本调整模块12,还包括第一状态调整单元123,所述第一状态调整单元123,具体用于:

若所述故障范围为所述目标故障组中虚拟故障子域内部分存储节点发生故障,且所述部分存储节点包括一个存储所述副本的存储节点,则将所述目标数据分片的状态调整为第一部分可用状态,所述第一部分可用状态包括只允许读和覆盖写;

若所述故障范围为所述目标故障组中虚拟故障子域内部分存储节点发生故障,且所述部分存储节点包括两个存储所述副本的存储节点,则将所述目标数据分片的状态调整为第二部分可用状态,所述第二部分可用状态包括只允许读;

若所述故障范围为所述目标故障组中虚拟故障子域内部分存储节点发生故障,且所述部分存储节点包括三个存储所述副本的存储节点,则将所述目标数据分片的状态调整为不可用状态,所述不可用状态包括不允许读、覆盖写和新写。

可选的,所述副本调整模块12,还包括第二状态调整单元124,所述第二状态调整单元124,具体用于:

将所述目标数据分片的状态调整为完全可用状态,所述完全可用状态包括允许读、覆盖写和新写。

可选的,所述副本调整模块12,还包括第三状态调整单元125,所述第三状态调整单元125,具体用于:

若所述故障范围为所述目标故障组中一个虚拟故障子域发生故障,则将所述目标数据分片的状态调整为第一部分可用状态,所述第一部分可用状态包括只允许读和覆盖写;

若所述故障范围为所述目标故障组中两个虚拟故障子域发生故障,则将所述目标数据分片的状态调整为第二部分可用状态,所述第二部分可用状态包括只允许读。

可选的,所述副本调整模块12,还包括第四状态调整单元126,所述第四状态调整单元126,具体用于:

若所述故障范围为所述目标故障组中一个虚拟故障子域发生故障,则将所述临时数据分片的状态设置为完全可用状态;

若所述故障范围为所述目标故障组中两个虚拟故障子域发生故障,则将所述临时数据分片的状态设置为完全可用状态。

可选的,所述第二副本调整单元122,具体用于:

若所述故障范围为所述目标故障组中部分虚拟故障子域发生故障,则重新分配临时数据分片,在所述目标故障组内未发生故障的虚拟故障子域中确定与所述副本数量相同的存储节点,将所述临时数据分片的副本存储至所述存储节点中。

可选的,所述第二副本调整单元122,具体用于:

按照随机顺序依次在所述目标故障组内每个未发生故障的虚拟故障子域中循环选取存储节点,每次选取一个存储节点直到已选取的存储节点的数量等于所述副本数量。

可选的,所述副本调整模块12,还包括故障恢复单元127,所述故障恢复单元127,具体用于:

若所述目标故障组中发生故障的虚拟故障子域恢复正常,则按照分散原则将所述临时数据分片的副本存储至所述目标故障组内,所述目标故障组内每个虚拟故障子域中存储一个所述副本。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

在本申请实施例中,在分布式文件系统的一个目标故障组中存储副本的至少一个存储节点发生故障时,首先确定所覆盖的故障范围,基于所述故障范围,调整所述副本在所述目标故障组中的存储方式,以使所述目标数据分片的状态为完全可用状态,避免了存储节点故障对分布式文件系统的读写服务产生影响,保证了分布式文件系统的可用性和可靠性。

本申请实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条指令,所述指令适于由处理器加载并执行如上述图1~图9所示实施例的所述副本存储方法,具体执行过程可以参见图1~图9所示实施例的具体说明,在此不进行赘述。

本申请还提供了一种计算机程序产品,该计算机程序产品存储有至少一条指令,所述至少一条指令由所述处理器加载并执行如上述图1~图9所示实施例的所述副本存储方法,具体执行过程可以参见图1~图9所示实施例的具体说明,在此不进行赘述。

请参考图11,其示出了本申请一个示例性实施例提供的计算机设备的结构方框图。本申请中的计算机设备可以包括一个或多个如下部件:处理器110、存储器120、输入装置130、输出装置140和总线150。处理器110、存储器120、输入装置130和输出装置140之间可以通过总线150连接。

处理器110可以包括一个或者多个处理核心。处理器110利用各种接口和线路连接整个计算机设备内的各个部分,通过运行或执行存储在存储器120内的指令、程序、代码集或指令集,以及调用存储在存储器120内的数据,执行计算机设备100的各种功能和处理数据。可选地,处理器110可以采用数字信号处理(digital signal processing,DSP)、现场可编程门阵列(field-programmable gate array,FPGA)、可编程逻辑阵列(programmablelogic Array,PLA)中的至少一种硬件形式来实现。处理器110可集成中央处理器(centralprocessing unit,CPU)、图像处理器(graphics processing unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器110中,单独通过一块通信芯片进行实现。

存储器120可以包括随机存储器(random Access Memory,RAM),也可以包括只读存储器(read-only memory,ROM)。可选地,该存储器120包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器120可用于存储指令、程序、代码、代码集或指令集。

其中,输入装置130用于接收输入的指令或数据,输入装置130包括但不限于键盘、鼠标、摄像头、麦克风或触控设备。输出装置140用于输出指令或数据,输出装置140包括但不限于显示设备和扬声器等。在本申请实施例中,输入装置130可以为温度传感器,用于获取计算机设备的运行温度。输出装置140可以为扬声器,用于输出音频信号。

除此之外,本领域技术人员可以理解,上述附图所示出的计算机设备的结构并不构成对计算机设备的限定,计算机设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。比如,计算机设备中还包括射频电路、输入单元、传感器、音频电路、无线保真(wireless fidelity,WiFi)模块、电源、蓝牙模块等部件,在此不再赘述。

在本申请实施例中,各步骤的执行主体可以是上文介绍的计算机设备。可选地,各步骤的执行主体为计算机设备的操作系统。操作系统可以是安卓系统,也可以是IOS系统,或者其它操作系统,本申请实施例对此不作限定。

在图11所示的计算机设备中,处理器110可以用于调用存储器120中存储的副本存储程序,并执行以实现如本申请各个方法实施例所述的副本存储方法。

在本申请实施例中,在分布式文件系统的一个目标故障组中存储副本的至少一个存储节点发生故障时,首先确定所覆盖的故障范围,基于所述故障范围,调整所述副本在所述目标故障组中的存储方式,以使所述目标数据分片的状态为完全可用状态,避免了存储节点故障对分布式文件系统的读写服务产生影响,保证了分布式文件系统的可用性和可靠性。

本领域的技术人员可以清楚地了解到本申请的技术方案可借助软件和/或硬件来实现。本说明书中的“单元”和“模块”是指能够独立完成或与其他部件配合完成特定功能的软件和/或硬件,其中硬件例如可以是现场可编程门阵列(Field-ProgrammaBLE GateArray,FPGA)、集成电路(Integrated Circuit,IC)等。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些服务接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通进程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random AccessMemory,RAM)、磁盘或光盘等。

以上所述者,仅为本公开的示例性实施例,不能以此限定本公开的范围。即但凡依本公开教导所作的等效变化与修饰,皆仍属本公开涵盖的范围内。本领域技术人员在考虑说明书及实践这里的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未记载的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的范围和精神由权利要求限定。

24页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于操作存储系统的方法和机器可读存储器

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!