CN115963994A - 数据存储方法、装置、非易失性存储介质及处理器 - Google Patents
数据存储方法、装置、非易失性存储介质及处理器 Download PDFInfo
- Publication number
- CN115963994A CN115963994A CN202211734625.1A CN202211734625A CN115963994A CN 115963994 A CN115963994 A CN 115963994A CN 202211734625 A CN202211734625 A CN 202211734625A CN 115963994 A CN115963994 A CN 115963994A
- Authority
- CN
- China
- Prior art keywords
- storage device
- object storage
- data stream
- candidate
- target data
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据存储方法、装置、非易失性存储介质及处理器。其中,该方法包括:监测用于存储目标数据流的多个对象存储设备,其中,目标数据流的多个副本存储在一个目标放置组中的不同对象存储设备上;在监测到目标放置组中的第一对象存储设备出现故障的情况下,使用第一临时存储设备替换第一对象存储设备;以及将第一对象存储设备出现故障以后接收到的目标数据流存入第一临时存储设备。本申请解决了传统多副本存储方案在等待恢复期的可用性较差的技术问题。
Description
技术领域
本申请涉及计算机领域,具体而言,涉及一种数据存储方法、装置、非易失性存储介质及处理器。
背景技术
在分布式存储系统业界存储客户端数据时,一般会将数据分别存储到一个个固定大小的存储块中称之为Chunk。为了防止一个Chunk的损坏故障等原因导致数据无法正常读写,一般会将同样的内容存储多个Chunk中,即多副本。这些不同的Chunk会分布在不同的OSD(Object-Based Storage Device对象存储设备)上降低耦合性。OSD是一个逻辑概念,它可以是一个HDD或SSD,也可以是一个文件,在实际部署时可以在一个硬盘上部署多个OSD。
图1根据现有技术的一种Chunk与PG和OSD之间的对应关系的示意图,如图1所示,为了更好的管理多个副本,引入了Placement Group(PG,放置组)的概念,每个PG包括多个OSD,拥有同样内容的多个副本都存储在一个PG中的不同OSD上。为了知道PG中包含哪些OSD,使用PG Map表维护一个PG和OSD映射关系。一旦某个节点或者OSD故障,可以通过存储在其他节点上的副本进行内容(或数据)恢复。为了权衡数据恢复能力和资源消耗,采用冗余策略来确定PG中的OSD数量。例如著名的开源分布式存储系统Ceph中默认的冗余策略是三副本,那这个PG中就拥有三个OSD。
分布式存储系统使用一致性协议来保证OSD之间数据的一致性,Raft作为被普遍应用的一种分布式一致性协议,可以在节点故障、网络分区、网络延时的情况下,使多个节点存储的数据达成一致。分布式系统使用Raft协议在一个PG的多个OSD之间复制Chunk更新请求,实际上,PG是Raft Group的一种实现。
图2根据现有技术的一种原始Raft的三副本的示意图,如图2所示,在原始三副本技术的情况下,当一个PG OSD发生故障,处理机制是在故障检测期时间过后,Monitor检查到某个PG OSD发生故障,不会立即触发配置变更,而是要经过一段恢复等待期(默认十分钟)。在恢复等待期过后,如果该PG OSD仍然没有重连成功,此时Monitor才会发起配置变更操作,加入新的OSD并对该OSD进行数据恢复。配置变更是指Monitor给Chunk Server发送新的PG Map。
在Raft原始的3副本方案中,即使有一个副本故障,依靠其余两个副本可以自动的进行恢复数据。当其中一个副本发生故障时,需要经过等待3段时间才能重新恢复到3副本正常工作状态,如图2所示,这3段时间分别为:
1)故障检测期。从其中1个副本故障发生开始,监控器Monitor知晓故障发生为止,这段时间为故障检测期。此处故障包括:SSD盘故障、节点故障、数据存储服务器ChunkServer进程故障等。这段时间一般30秒到60秒。
2)恢复等待期。从Monitor知晓故障发生开始,到Monitor给相关进程发送完成变更之后的PG Map为止,其中PG Map包含了新的PG OSD成员。这段时间默认设置为10分钟,Monitor并不是在知晓故障发生后立刻发送新的PG Map,是为了容忍SSD盘短暂离线、ChunkServer奔溃重启等短时间故障,在发生短时间故障时,不需要启动PG Map的配置变更,避免随之而来的大量数据迁移。
3)数据重构期。从配置变更开始,Raft leader启动批量复制流程,把数据复制给新的PG OSD成员。在这段时间内,Raft组只有两个PG OSD成员的状态正常,新成员的状态为Catch up,即追赶最新数据的状态。这段时间可以粗略按照1小时估算。
Monitor主要功能是维护集群状态和视图,比如PG Map表;监控每个节点和OSD的状态,比如故障检测。
Chunk Server是负责存储Chunk的服务器进程,Chunk Server具有众多模块,其中,0模块包括:Raft协议和故障后的数据重构机制,该模块是保证分布式存储一致性的关键模块。管理模块负责与Monitor通信,获取集群状态视图。
但是,原始Raft的三副本方案具有两个有优化的不足,其一,在一个PG OSD发生故障的等待恢复期内,集群的写时延会增加。因为在正常原始三副本的情况下,只需要写两个副本就可以给客户端返回写成功,而不必要等待写得最慢的那一个盘。如果Raft三副本组有一个PG OSD故障,三副本在本质上退化成了两副本,也即是两个正常副本都需要写成功才能返回客户端写成功,这相比三个正常副本的写时延会有所增加。
其二,在一个PG OSD发生故障,到另一个新加入的PG OSD数据恢复完成,这段时间内,也即是等待恢复期和数据重构期内如果出现第2个PG OSD成员故障,那么Raft组此时只剩下一个正常成员,将导致Raft三副本组崩溃,此时就需要人工干预才能恢复正常。
针对上述多副本存储方案在等待恢复期的可用性较差的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种数据存储方法、装置、非易失性存储介质及处理器,以至少解决传统多副本存储方案在等待恢复期的可用性较差的技术问题。
根据本申请实施例的一个方面,提供了一种数据存储方法,其特征在于,包括:监测用于存储目标数据流的多个对象存储设备,其中,所述目标数据流的多个副本存储在一个目标放置组中的不同对象存储设备上;在监测到所述目标放置组中的第一对象存储设备出现故障的情况下,使用第一临时存储设备替换所述第一对象存储设备;以及将所述第一对象存储设备出现故障以后接收到的目标数据流存入所述第一临时存储设备。
可选地,所述方法还包括:在监测到所述目标放置组中的第一对象存储设备出现故障的情况下,确定进入预设恢复等待期;监测所述第一对象存储设备在所述预设恢复等待期内是否恢复;若所述第一对象存储设备在所述预设恢复等待期内恢复,则使用恢复的所述第一对象存储设备替换所述第一临时存储设备;若所述第一对象存储设备在所述预设恢复等待期内未恢复,则将所述第一对象存储设备出现故障以前接收到的目标数据流存入所述第一临时存储设备。
可选地,所述方法还包括:在监测到所述目标放置组中的第一对象存储设备出现故障的情况下,确定进入预设恢复等待期;在所述预设恢复等待期内监测用于存储目标数据流的多个对象存储设备;在监测到所述目标放置组中的第二对象存储设备在预设恢复等待期内出现故障的情况下,使用第二临时存储设备替换第二对象存储设备;将所述第二对象存储设备出现故障以后接收到的目标数据流存入所述第二临时存储设备。
可选地,所述方法还包括:在监测到所述目标放置组中的第一对象存储设备出现故障的情况下,获取所述目标放置组中未出现故障的至少一个所述对象存储设备的设备状态,其中,所述设备状态至少包括:领导者、候选者和跟随者,所述领导者存储所述目标数据流的进度高于所述候选者,所述候选者存储所述目标数据流的进度高于所述跟随者,所述领导者指示向所述跟随者和所述候选者提供所述目标数据流;根据未出现故障的至少一个所述对象存储设备的设备状态,为所述第一临时存储设备配置缺失的设备状态。
可选地,根据未出现故障的至少一个所述对象存储设备的设备状态,为所述第一临时存储设备分配缺失的设备状态包括:在未出现故障的至少一个所述对象存储设备中,若存在所述设备状态为候选者的对象存储设备,且不存在所述设备状态为领导者的对象存储设备,则将所述对象存储设备的设备状态从所述候选者调整为领导者,将所述第一临时存储设备的设备状态配置为候选者或跟随者。
可选地,根据未出现故障的至少一个所述对象存储设备的设备状态,为所述第一临时存储设备分配缺失的设备状态包括:在未出现故障的至少一个所述对象存储设备中,若不存在所述设备状态为领导者的对象存储设备,且不存在所述设备状态为候选者的对象存储设备,则将所述第一临时存储设备的设备状态配置为领导者,在未出现故障的至少一个所述对象存储设备中将其中一个对象存储设备的设备状态配置为候选者。
可选地,在将所述第一临时存储设备的设备状态配置为领导者,在未出现故障的至少一个所述对象存储设备中将其中一个对象存储设备的设备状态配置为候选者之后,所述方法还包括:将所述第一临时存储设备中存储的目标数据流同步至所述设备状态为候选者的对象存储设备;监测所述设备状态为领导者的所述第一临时存储设备存储所述目标数据流的领导存储进度;监测所述设备状态为候选者的所述对象存储设备存储所述目标数据流的候选存储进度;在所述候选存储进度达到所述领导存储进度的情况下,将所述对象存储设备的设备状态从所述候选者调整为领导者。
根据本申请实施例的另一方面,还提供了一种数据存储装置,其特征在于,包括:监测模块,用于监测用于存储目标数据流的多个对象存储设备,其中,所述目标数据流的多个副本存储在一个目标放置组中的不同对象存储设备上;替换模块,用于在监测到所述目标放置组中的第一对象存储设备出现故障的情况下,使用第一临时存储设备替换所述第一对象存储设备;以及存储模块,用于将所述第一对象存储设备出现故障以后接收到的目标数据流存入所述第一临时存储设备。
根据本申请实施例的另一方面,还提供了一种非易失性存储介质,其特征在于,所述非易失性存储介质中存储有程序,其中,在所述程序运行时控制所述非易失性存储介质所在设备执行上述所述数据存储方法。
根据本申请实施例的另一方面,还提供了一种电子设备,其特征在于,包括:存储器和处理器,所述处理器用于运行存储在所述存储器中的程序,其中,所述程序运行时执行上述所述的数据存储方法。
在本申请实施例中,监测用于存储目标数据流的多个对象存储设备,其中,目标数据流的多个副本存储在一个目标放置组中的不同对象存储设备上;在监测到目标放置组中的第一对象存储设备出现故障的情况下,使用第一临时存储设备替换第一对象存储设备;以及将第一对象存储设备出现故障以后接收到的目标数据流存入第一临时存储设备,进而在对目标数据流进行多副本存储的情况下,若存储其中一个副本的第一对象存储设备出现故障,则使用第一临时存储设备替换故障的第一对象存储设备构成临时多副本存储方案,由临时多副本存储方案对故障出现之后的目标数据流进行多副本存储,不影响多副本存储方案的可用性,从而实现了确保多副本存储方案的可用性的技术效果,解决了传统多副本存储方案在等待恢复期的可用性较差技术问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1根据现有技术的一种Chunk与PG和OSD之间的对应关系的示意图;
图2根据现有技术的一种原始Raft的三副本的示意图;
图3是根据本申请实施例的一种数据存储方法的流程图;
图4是根据本申请实施例的一种增强Raft的三副本模式的流程图;
图5是根据本申请实施例的一种加入第一临时存储设备的示意图;
图6是根据本申请实施例的一种加入第二临时存储设备的示意图;
图7是根据本申请实施例的一种加入第一临时存储设备作为领导者的示意图;
图8是根据本申请实施例的一种第一临时存储设备让权的示意图;
图9是根据本申请实施例的一种数据存储装置的示意图;
图10是根据本申请实施例的一种计算机终端的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本申请实施例,提供了一种数据存储方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图3是根据本申请实施例的一种数据存储方法的流程图,如图3所示,该方法包括如下步骤:
步骤S302,监测用于存储目标数据流的多个对象存储设备,其中,目标数据流的多个副本存储在一个目标放置组中的不同对象存储设备上;
步骤S304,在监测到目标放置组中的第一对象存储设备出现故障的情况下,使用第一临时存储设备替换第一对象存储设备;以及
步骤S306,将第一对象存储设备出现故障以后接收到的目标数据流存入第一临时存储设备。
在本申请实施例中,监测用于存储目标数据流的多个对象存储设备,其中,目标数据流的多个副本存储在一个目标放置组中的不同对象存储设备上;在监测到目标放置组中的第一对象存储设备出现故障的情况下,使用第一临时存储设备替换第一对象存储设备;以及将第一对象存储设备出现故障以后接收到的目标数据流存入第一临时存储设备,进而在对目标数据流进行多副本存储的情况下,若存储其中一个副本的第一对象存储设备出现故障,则使用第一临时存储设备替换故障的第一对象存储设备构成临时多副本存储方案,由临时多副本存储方案对故障出现之后的目标数据流进行多副本存储,不影响多副本存储方案的可用性,从而实现了确保多副本存储方案的可用性的技术效果,解决了传统多副本存储方案在等待恢复期的可用性较差技术问题。
针对三副本存储方案由于第一临时存储设备已经代替了第一对象存储设备,因此即便在故障发生后的等待恢复期内还有其他对象存储设备出现故障,也可确保三副本存储方案中还有一个可用的对象存储设备和可用的第一临时存储设备,确保三副本存储方案的可用性,进而解决了传统多副本存储方案在等待恢复期的可用性较差技术问题。
在上述步骤S302中,目标放置组为PG,全称为Placement Group,是Raft Group的一种实现,在分布式系统中可以使用Raft协议在一个目标放置组PG的多个对象存储设备OSD之间复制目标数据流Chunk的更新请求,由多个对象存储设备OSD存储对拥有同样内容的多个副本进行存储。
在上述步骤S302中,对象存储设备为OSD,全称为Object-Based Storage Device,是一个逻辑概念,它可以是一个HDD或SSD,也可以是一个文件,在实际部署时可以在一个硬盘上部署多个对象存储设备OSD。
在上述步骤S302中,采用三个对象存储设备分别存储同一目标数据流的三个副本。
在上述步骤S302中,由数据存储服务器Chunk Server管理多个对象存储设备OSD对目标数据流的副本进行存储的进程。
在上述步骤S302中,通过监控器Monitor与数据存储服务器Chunk Server进行通信,可以实现对多个对象存储设备的监测。
可选地,监控器Monitor可以维护集群状态和视图,比如PG Map表;监控每个节点和对象存储设备OSD的状态,比如故障监测,其中,PG Map表用于维护目标放置组PG与对象存储设备OSD的映射;每个节点包括多个目标放置组PG的对象存储设备OSD。
可选地,监控器Monitor具有故障检测、发起配置变更和启动批量复制等功能。
可选地,同一节点不会包括目标放置组PG的多个对象存储设备OSD。
在上述步骤S304中,第一临时存储设备作为记录器logger角色加入,用于记录日志、参与投票,但不具有完整的状态机信息,只接收第一对象存储设备出现故障以后接收到的目标数据流(也即,只接收作为记录器logger角色的第一临时存储设备加入后的目标数据流)。
需要说明的是,目标放置组中的多个对象存储设备的角色为投票人voter。
作为一种可选的实施例,方法还包括:在监测到目标放置组中的第一对象存储设备出现故障的情况下,确定进入预设恢复等待期;监测第一对象存储设备在预设恢复等待期内是否恢复;若第一对象存储设备在预设恢复等待期内恢复,则使用恢复的第一对象存储设备替换第一临时存储设备;若第一对象存储设备在预设恢复等待期内未恢复,则将第一对象存储设备出现故障以前接收到的目标数据流存入第一临时存储设备。
本发明上述实施例,在监测到目标放置组中的第一对象存储设备出现故障的情况下,会立即发起配置变更以加入第一临时存储设备,并进入预设恢复等待期,若第一对象存储设备在预设恢复等待期内恢复,则使用恢复的第一对象存储设备替换第一临时存储设备,若第一对象存储设备在预设恢复等待期内未恢复,则将第一对象存储设备出现故障以前接收到的目标数据流存入第一临时存储设备,从而第一临时存储对象代替第一对象存储设备以后不会立即启动批量复制,而是会等待一段时间再启动批量复制,可以容忍SSD盘短暂离线、Chunk Server奔溃重启等短时间故障。
作为一种可选的实施例,方法还包括:在监测到目标放置组中的第一对象存储设备出现故障的情况下,确定进入预设恢复等待期;在预设恢复等待期内监测用于存储目标数据流的多个对象存储设备;在监测到目标放置组中的第二对象存储设备在预设恢复等待期内出现故障的情况下,使用第二临时存储设备替换第二对象存储设备;将第二对象存储设备出现故障以后接收到的目标数据流存入第二临时存储设备。
本发明上述实施例,在第一对象存储设备出现故障的情况下,若第二对象存储设备也出现了故障,则三副本存储方案中,仅存在一个未出现故障的对象存储设备,则使用第一临时存储设备替换出现故障的第一对象存储设备,使用第二临时存储设备替换出现故障的第二对象存储设备,则三副本存储方案包括一个未出现故障的对象存储设备,和两个临时存储设备,即第一临时存储设备和第二临时存储设备,仍具有可用性。
作为一种可选的实施例,方法还包括:在监测到目标放置组中的第一对象存储设备出现故障的情况下,获取目标放置组中未出现故障的至少一个对象存储设备的设备状态,其中,设备状态至少包括:领导者、候选者和跟随者,领导者存储目标数据流的进度高于候选者,候选者存储目标数据流的进度高于跟随者,领导者指示向跟随者和候选者提供目标数据流;根据未出现故障的至少一个对象存储设备的设备状态,为第一临时存储设备配置缺失的设备状态。
可选地,在三副本存储方案中,同一目标放置组中包括三个对象存储设备,其设备状态分别为:领导者、候选者和跟随者,其中,目标数据流的进度最高的为领导者,该领导者可以向同一目标放置组中其他两个对象存储设备(如候选者和跟随者提供目标数据流),若同一目标放置组有两个对象存储设备完成对同一进度的目标数据流(即同一长度的目标数据流)的存储,则确定存储成功,进而存储进度最低的对象存储设备作为跟随者,存储进度高于跟随者但是低于领导者的对象存储设备作为候选者,因此,领导者存储目标数据流的进度高于候选者,候选者存储目标数据流的进度高于跟随者。
本发明上述实施例,根据未出现故障的至少一个对象存储设备的设备状态,可以确定故障的对象存储设备(即第一对象存储设备故障,或第二对象存储设备故障)的设备状态,进而根据故障的对象存储设备的设备状态(即缺失的设备状态),为第一临时存储设备进行设备状态的配置。
作为一种可选的实施例,根据未出现故障的至少一个对象存储设备的设备状态,为第一临时存储设备配置缺失的设备状态包括:在未出现故障的至少一个对象存储设备中,若存在设备状态为领导者的对象存储设备,则将第一临时存储设备的设备状态配置为候选者或跟随者。
本发明上述实施例,在未出现故障的至少一个对象存储设备中,若存在设备状态为领导者的对象存储设备,则说明故障的第一对象存储设备不属于领导者,进而可以将第一临时存储设备的设备状态配置为候选者或跟随者。
作为一种可选的实施例,根据未出现故障的至少一个对象存储设备的设备状态,为第一临时存储设备分配缺失的设备状态包括:在未出现故障的至少一个对象存储设备中,若存在设备状态为候选者的对象存储设备,且不存在设备状态为领导者的对象存储设备,则将对象存储设备的设备状态从候选者调整为领导者,将第一临时存储设备的设备状态配置为候选者或跟随者。
本发明上述实施例,在未出现故障的至少一个对象存储设备中,若存在设备状态为候选者的对象存储设备,且不存在设备状态为领导者的对象存储设备,则说明故障的第一对象存储设备属于领导者,则将对象存储设备的设备状态从候选者调整为领导者,将第一临时存储设备的设备状态配置为候选者或跟随者。
可选地,将第一临时存储设备的设备状态配置为候选者或跟随者,可以根据第一临时存储设备和未出现故障的对象存储设备对目标数据流的存储效率或存储进度确定。
可选地,确定第一临时存储设备在目标时刻对目标数据流的存储进度为第一存储进度,确定目标放置组中设备状态不为领导者的未出现故障的对象存储设备在目标时刻对目标数据流的存储进度为第二存储进度,若第一存储进度高于第二存储进度,则将第一临时存储设备的设备状态配置为候选者;若第二存储进度高于第一存储进度,则将第一临时存储设备的设备状态配置为跟随者。
可选地,确定第一临时存储设备对目标数据流的存储效率为第一存储效率,确定目标放置组中设备状态不为领导者的未出现故障的对象存储设备对目标数据流的存储效率为第二存储效率,若第一存储效率高于第二存储效率,则将第一临时存储设备的设备状态配置为候选者;若第二存储效率高于第一存储效率,则将第一临时存储设备的设备状态配置为跟随者。
作为一种可选的实施例,根据未出现故障的至少一个对象存储设备的设备状态,为第一临时存储设备分配缺失的设备状态包括:在未出现故障的至少一个对象存储设备中,若不存在设备状态为领导者的对象存储设备,且不存在设备状态为候选者的对象存储设备,则将第一临时存储设备的设备状态配置为领导者,在未出现故障的至少一个对象存储设备中将其中一个对象存储设备的设备状态配置为候选者。
本发明上述实施例,在未出现故障的至少一个对象存储设备中,若不存在设备状态为领导者的对象存储设备,且不存在设备状态为候选者的对象存储设备,则说明第一临时存储设备存储了最新的目标数据流,因此需要将第一临时存储设备作为领导者,在目标放置组中未出现故障的至少一个对象存储设备中选出其中一个对象存储设备作为候选者,进而在候选者得到第一临时存储设备提供的最新的目标数据流以后,再将该对象存储设备的设备状态由候选者调整为领导者。
可选地,在未出现故障的至少一个对象存储设备中,若不存在设备状态为领导者的对象存储设备,且不存在设备状态为候选者的对象存储设备,则说明该目标放置组中即出现了第一对象存储设备故障,又出现了第二对象存储设备故障,需要使用第一临时存储设备替换第一对象存储设备,使用第二临时存储设备替换第二对象存储设备,在三副本存储方案中,则表示目标放置组中只剩下一个对象存储设备可用,且该对象存储设备的设备状态为跟随者,说明作为跟随者的对象存储设备未存储最新的目标数据流,因此,临时存储设备(如第一临时存储设备或第二临时存储设备)具有最新的目标数据流,则将临时存储设备(如第一临时存储设备或第二临时存储设备)作为领导者,将作为跟随者的对象存储设备调整为候选者,使作为候选者的对象存储设备可以同步最新的目标数据流,并在同步完成后,由候选者调整为领导者。
作为一种可选的实施例,在将第一临时存储设备的设备状态配置为领导者,在未出现故障的至少一个对象存储设备中将其中一个对象存储设备的设备状态配置为候选者之后,方法还包括:将第一临时存储设备中存储的目标数据流同步至设备状态为候选者的对象存储设备;监测设备状态为领导者的第一临时存储设备存储目标数据流的领导存储进度;监测设备状态为候选者的对象存储设备存储目标数据流的候选存储进度;在候选存储进度达到领导存储进度的情况下,将对象存储设备的设备状态从候选者调整为领导者。
本发明上述实施例,在将第一临时存储设备的设备状态配置为领导者,在未出现故障的至少一个对象存储设备中将其中一个对象存储设备的设备状态配置为候选者之后,需要监测第一临时存储设备和作为候选者的对象存储设备的存储进度,确保作为候选者的对象存储设备可以同步最新的目标数据流,进而在作为候选者的对象存储设备同步了最新的目标数据流以后,将对象存储设备的设备状态从候选者调整为领导者,实现了对三副本存储方案的恢复。
可选地,在候选存储进度达到领导存储进度的情况下,说明作为候选者的对象存储设备已经同步到了最新的目标数据流。
本申请还提供了一种优选实施例,该优选实施例提供了一种增强Raft的三副本模式。
本申请在Raft协议的基础上增加了一种角色,可以降低恢复等待期写请求返回写成功的时延,提升原始Raft组在恢复等待期内的可用性。
图4是根据本申请实施例的一种增强Raft的三副本模式的流程图,如图4所示,监控器Monitor具有故障检测、发起配置变更和启动批量复制等功能。在增强Raft的三副本模式下,监控器Monitor与数据存储服务器Chunk Server之间的交互方式发生了改变。增强方案中的优化有两点。其一,当监控器Monitor检测到某个PG OSD(即第一对象存储设备出现故障)故障时,不同于原始方案需要在恢复等待期过后发起配置变更(即PG Map变更),增强方案会立即发起配置变更以加入记录器logger角色(即第一临时存储设备),并进入恢复等待期。这样的好处是在恢复等待期内降低写时延,并且提升了恢复等待期内第二个PG OSD故障后Raft组的可用性。其二是配置变更之后不会立即启动批量复制,而是会等待一段时间再启动批量复制。
可选地,如图4所示的增强Raft的三副本模式,当其中一个副本发生故障时,需要经过等待3段时间才能重新恢复到3副本正常工作状态,这3段时间分别为:
1)故障检测期。从其中1个副本故障发生开始,监控器Monitor知晓故障发生为止,这段时间为故障检测期。此处故障包括:SSD盘故障、节点故障、数据存储服务器ChunkServer进程故障等。这段时间一般30秒到60秒。
2)恢复等待期。从Monitor知晓故障发生开始,增强方案会立即发起配置变更以加入记录器logger角色(即第一临时存储设备),并进入恢复等待期。
3)数据重构期。在恢复等待期结束后,Raft leader启动批量复制流程,把数据复制给记录器logger角色(即第一临时存储设备)。
本申请利用记录器Logger解决了传统三副本在等待恢复期内两副本写时延较高的问题;针对传统三副本方案中,当第一个PG OSD故障后的等待恢复期内,如果出现第二个PG OSD故障,系统需要人工干预才能恢复的问题,本申请提供的增强Raft的三副本模式,提高了三副本在等待恢复期内的可用性。
作为一种可选的实施例,本方案基于原始Raft新增了一个记录器logger角色(即第一临时存储设备),可以记录日志、参与投票,但没有完整的状态机信息,只接收该记录器logger角色(即第一临时存储设备)加入后已提交索引(commit_index)之后的日志;也即,只接收第一对象存储设备出现故障以后接收到的目标数据流。
需要说明的是,Raft中的领导者leader、候选者candidate、跟随者follower是设备状态,而不是角色,角色是工程实现中引入的。正常工作的副本,即正常工作的对象存储设备,角色都是投票者voter。
作为一种可选的实施例,当三副本中有一个正常OSD(即第一对象存储设备)故障后,在恢复等待期内记录器logger角色(即第一临时存储设备)作为临时的OSD,提升集群这段时间内的可用性和降低写时延。
图5是根据本申请实施例的一种加入第一临时存储设备的示意图,如图5所示,在故障检测期监控器Monitor探测到OSD C(即第一对象存储设备)故障之后,因为此时Raft组中OSD A和OSD B(即未出现故障的对象存储设备)的索引值为3及之前的日志都写成功,故此时领导者leader的提交索引commit_index是3,监控器Monitor立即发起配置变更,加入记录器logger角色(即第一临时存储设备)并进入恢复等待期,记录器logger角色(即第一临时存储设备)便可以开始接收提交索引commit_index的索引值为3之后的数据。
图6是根据本申请实施例的一种加入第二临时存储设备的示意图,如图6所示,如果在第一个等待恢复期内,再有一个节点挂掉(即第二对象存储设备在预设恢复等待期内出现故障),因为记录器logger角色(即第一临时存储设备)还具有最新的日志信息,在第二个节点故障(即第二对象存储设备)的故障检测期内,因为Raft组仍有一个副本节点(即未出现故障的对象存储设备)和一个记录器logger角色,此时仍具有可用性。故障检测期过后,再次加入一个记录器logger角色(即第二临时存储设备),整个Raft组就成了一个副本节点(即未出现故障的对象存储设备)和两个logger(即第一临时存储设备和第二临时存储设备),仍具有可用性。
作为一种可选的实施例,一个记录器logger角色(即第一临时存储设备)在其恢复等待期内,如果期间原故障OSD(即第一对象存储设备)重新加入该Raft组,记录器logger角色(即第一临时存储设备)立即退出Raft组。
可选地,在恢复等待期内,原故障OSD(即第一对象存储设备)在此期间结束前并未重新连接,记录器logger角色(即第一临时存储设备)就开始进行批量复制加入时刻之前的快照信息和日志信息,即将第一对象存储设备出现故障以前接收到的目标数据流存入第一临时存储设备,完成之后就可以成为正常完整的副本节点(即对象存储设备),角色也随之变更为正常投票者voter。
作为一种可选的实施例,Raft协议的增强,即在三副本的情况下,有一个PG OSD(即第一对象存储设备)宕机,logger(即第一临时存储设备)顶替。在等待恢复期和数据重构期之间,如果此时领导者leader宕机,且另一个正常的PG OSD(即未出现故障的对象存储设备)并不具有最新的已提交的日志项,无法成为领导者leader。那么logger(即第一临时存储设备)就必须当选,然后给正常的PG OSD(即未出现故障的对象存储设备)发送日志,使之能够赶上最新的日志,最后让权给正常的PG OSD(即未出现故障的对象存储设备)。让权的原因是logger(即第一临时存储设备)没有完整的状态机信息和日志,所以无法处理Client的请求,当正常的PG OSD(即未出现故障的对象存储设备)赶上最新的日志之后,logger(即第一临时存储设备)必须让权,让正常的PG OSD(即未出现故障的对象存储设备)当选领导者leader,恢复处理Client请求的能力。
图7是根据本申请实施例的一种加入第一临时存储设备作为领导者的示意图,如图7所示,A为领导者leader,C为顶替故障OSD(即第一对象存储设备)的logger(即第一临时存储设备),此时领导者leader的提交索引commit_index为3,且已经返回给客户端写成功。此时如果领导者leader故障,由于C的日志最新(即index最大),则logger(即第一临时存储设备)在具有当选领导者leader的能力,所以此时logger(即第一临时存储设备)当选为领导者leader。
图8是根据本申请实施例的一种第一临时存储设备让权的示意图,如图8所示,logger(即第一临时存储设备)当选的目的是发送给B最新的日志,也就是让B的日志能够赶上logger(即第一临时存储设备),当B的日志赶上logger(即第一临时存储设备)之后,logger(即第一临时存储设备)立即将让权给B,即logger(即第一临时存储设备)主动退出,并让B当选为领导者leader。
本申请要求保护的技术方案,在使用logger(即第一临时存储设备)在恢复等待期作为临时副本降低该期间及数据重构期内的写时延;提升了先后两个PG OSD故障(即第一对象存储设备和第二对象存储设备出现故障)的可用性,即可自动进行数据恢复而不需要人工干预。
根据本申请实施例,还提供了一种数据存储装置实施例,需要说明的是,该数据存储装置可以用于执行本申请实施例中的数据存储方法,本申请实施例中的数据存储方法可以在该数据存储装置中执行。
图9是根据本申请实施例的一种数据存储装置的示意图,如图9所示,该装置可以包括:监测模块92,用于监测用于存储目标数据流的多个对象存储设备,其中,目标数据流的多个副本存储在一个目标放置组中的不同对象存储设备上;替换模块94,用于在监测到目标放置组中的第一对象存储设备出现故障的情况下,使用第一临时存储设备替换第一对象存储设备;以及存储模块96,用于将第一对象存储设备出现故障以后接收到的目标数据流存入第一临时存储设备。
需要说明的是,该实施例中的监测模块92可以用于执行本申请实施例中的步骤S102,该实施例中的替换模块94可以用于执行本申请实施例中的步骤S104,该实施例中的存储模块96可以用于执行本申请实施例中的步骤S106。上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。
在本申请实施例中,监测用于存储目标数据流的多个对象存储设备,其中,目标数据流的多个副本存储在一个目标放置组中的不同对象存储设备上;在监测到目标放置组中的第一对象存储设备出现故障的情况下,使用第一临时存储设备替换第一对象存储设备;以及将第一对象存储设备出现故障以后接收到的目标数据流存入第一临时存储设备,进而在对目标数据流进行多副本存储的情况下,若存储其中一个副本的第一对象存储设备出现故障,则使用第一临时存储设备替换故障的第一对象存储设备构成临时多副本存储方案,由临时多副本存储方案对故障出现之后的目标数据流进行多副本存储,不影响多副本存储方案的可用性,从而实现了确保多副本存储方案的可用性的技术效果,解决了传统多副本存储方案在等待恢复期的可用性较差技术问题。
针对三副本存储方案由于第一临时存储设备已经代替了第一对象存储设备,因此即便在故障发生后的等待恢复期内还有其他对象存储设备出现故障,也可确保三副本存储方案中还有一个可用的对象存储设备和可用的第一临时存储设备,确保三副本存储方案的可用性,进而解决了传统多副本存储方案在等待恢复期的可用性较差技术问题。
作为一种可选的实施例,装置还包括:第一确定单元,用于在监测到目标放置组中的第一对象存储设备出现故障的情况下,确定进入预设恢复等待期;第一监测单元,用于监测第一对象存储设备在预设恢复等待期内是否恢复;第一替换单元,用于若第一对象存储设备在预设恢复等待期内恢复,则使用恢复的第一对象存储设备替换第一临时存储设备;第一存储单元,用于若第一对象存储设备在预设恢复等待期内未恢复,则将第一对象存储设备出现故障以前接收到的目标数据流存入第一临时存储设备。
作为一种可选的实施例,装置还包括:第二确定单元,用于在监测到目标放置组中的第一对象存储设备出现故障的情况下,确定进入预设恢复等待期;第二监测单元,用于在预设恢复等待期内监测用于存储目标数据流的多个对象存储设备;第二替换单元,用于在监测到目标放置组中的第二对象存储设备在预设恢复等待期内出现故障的情况下,使用第二临时存储设备替换第二对象存储设备;第二存储单元,用于将第二对象存储设备出现故障以后接收到的目标数据流存入第二临时存储设备。
作为一种可选的实施例,装置还包括:获取单元,用于在监测到目标放置组中的第一对象存储设备出现故障的情况下,获取目标放置组中未出现故障的至少一个对象存储设备的设备状态,其中,设备状态至少包括:领导者、候选者和跟随者,领导者存储目标数据流的进度高于候选者,候选者存储目标数据流的进度高于跟随者,领导者指示向跟随者和候选者提供目标数据流;配置单元,用于根据未出现故障的至少一个对象存储设备的设备状态,为第一临时存储设备配置缺失的设备状态。
作为一种可选的实施例,配置单元包括:第一配置子单元,用于在未出现故障的至少一个对象存储设备中,若存在设备状态为领导者的对象存储设备,则将第一临时存储设备的设备状态配置为候选者或跟随者。
作为一种可选的实施例,配置单元包括:第二配置子单元,用于在未出现故障的至少一个对象存储设备中,若存在设备状态为候选者的对象存储设备,且不存在设备状态为领导者的对象存储设备,则将对象存储设备的设备状态从候选者调整为领导者,将第一临时存储设备的设备状态配置为候选者或跟随者。
作为一种可选的实施例,配置单元包括:第三配置子单元,用于在未出现故障的至少一个对象存储设备中,若不存在设备状态为领导者的对象存储设备,且不存在设备状态为候选者的对象存储设备,则将第一临时存储设备的设备状态配置为领导者,在未出现故障的至少一个对象存储设备中将其中一个对象存储设备的设备状态配置为候选者。
作为一种可选的实施例,装置还包括:同步子单元,用于在将第一临时存储设备的设备状态配置为领导者,在未出现故障的至少一个对象存储设备中将其中一个对象存储设备的设备状态配置为候选者之后,将第一临时存储设备中存储的目标数据流同步至设备状态为候选者的对象存储设备;第一监测子单元,用于监测设备状态为领导者的第一临时存储设备存储目标数据流的领导存储进度;第二监测子单元,用于监测设备状态为候选者的对象存储设备存储目标数据流的候选存储进度;调整子单元,用于在候选存储进度达到领导存储进度的情况下,将对象存储设备的设备状态从候选者调整为领导者。
本申请的实施例可以提供一种计算机终端,该计算机终端可以是计算机终端群中的任意一个计算机终端设备。可选地,在本实施例中,上述计算机终端也可以替换为移动终端等终端设备。
可选地,在本实施例中,上述计算机终端可以位于计算机网络的多个网络设备中的至少一个网络设备。
在本实施例中,上述计算机终端可以执行数据存储方法中以下步骤的程序代码:监测用于存储目标数据流的多个对象存储设备,其中,目标数据流的多个副本存储在一个目标放置组中的不同对象存储设备上;在监测到目标放置组中的第一对象存储设备出现故障的情况下,使用第一临时存储设备替换第一对象存储设备;以及将第一对象存储设备出现故障以后接收到的目标数据流存入第一临时存储设备。
可选地,图10是根据本申请实施例的一种计算机终端的结构框图。如图10所示,该计算机终端100可以包括:一个或多个(图中仅示出一个)处理器102、和存储器104。
其中,存储器可用于存储软件程序以及模块,如本申请实施例中的数据存储方法和装置对应的程序指令/模块,处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据存储方法。存储器可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至终端100。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:监测用于存储目标数据流的多个对象存储设备,其中,目标数据流的多个副本存储在一个目标放置组中的不同对象存储设备上;在监测到目标放置组中的第一对象存储设备出现故障的情况下,使用第一临时存储设备替换第一对象存储设备;以及将第一对象存储设备出现故障以后接收到的目标数据流存入第一临时存储设备。
可选的,上述处理器还可以执行如下步骤的程序代码:在监测到目标放置组中的第一对象存储设备出现故障的情况下,确定进入预设恢复等待期;监测第一对象存储设备在预设恢复等待期内是否恢复;若第一对象存储设备在预设恢复等待期内恢复,则使用恢复的第一对象存储设备替换第一临时存储设备;若第一对象存储设备在预设恢复等待期内未恢复,则将第一对象存储设备出现故障以前接收到的目标数据流存入第一临时存储设备。
可选的,上述处理器还可以执行如下步骤的程序代码:在监测到目标放置组中的第一对象存储设备出现故障的情况下,确定进入预设恢复等待期;在预设恢复等待期内监测用于存储目标数据流的多个对象存储设备;在监测到目标放置组中的第二对象存储设备在预设恢复等待期内出现故障的情况下,使用第二临时存储设备替换第二对象存储设备;将第二对象存储设备出现故障以后接收到的目标数据流存入第二临时存储设备。
可选的,上述处理器还可以执行如下步骤的程序代码:在监测到目标放置组中的第一对象存储设备出现故障的情况下,获取目标放置组中未出现故障的至少一个对象存储设备的设备状态,其中,设备状态至少包括:领导者、候选者和跟随者,领导者存储目标数据流的进度高于候选者,候选者存储目标数据流的进度高于跟随者,领导者指示向跟随者和候选者提供目标数据流;根据未出现故障的至少一个对象存储设备的设备状态,为第一临时存储设备配置缺失的设备状态。
可选的,上述处理器还可以执行如下步骤的程序代码:在未出现故障的至少一个对象存储设备中,若存在设备状态为领导者的对象存储设备,则将第一临时存储设备的设备状态配置为候选者或跟随者。
可选的,上述处理器还可以执行如下步骤的程序代码:在未出现故障的至少一个对象存储设备中,若存在设备状态为候选者的对象存储设备,且不存在设备状态为领导者的对象存储设备,则将对象存储设备的设备状态从候选者调整为领导者,将第一临时存储设备的设备状态配置为候选者或跟随者。
可选的,上述处理器还可以执行如下步骤的程序代码:在未出现故障的至少一个对象存储设备中,若不存在设备状态为领导者的对象存储设备,且不存在设备状态为候选者的对象存储设备,则将第一临时存储设备的设备状态配置为领导者,在未出现故障的至少一个对象存储设备中将其中一个对象存储设备的设备状态配置为候选者。
可选的,上述处理器还可以执行如下步骤的程序代码:在将第一临时存储设备的设备状态配置为领导者,在未出现故障的至少一个对象存储设备中将其中一个对象存储设备的设备状态配置为候选者之后,将第一临时存储设备中存储的目标数据流同步至设备状态为候选者的对象存储设备;监测设备状态为领导者的第一临时存储设备存储目标数据流的领导存储进度;监测设备状态为候选者的对象存储设备存储目标数据流的候选存储进度;在候选存储进度达到领导存储进度的情况下,将对象存储设备的设备状态从候选者调整为领导者。
采用本申请实施例,提供了一种数据存储方案。在本申请实施例中,监测用于存储目标数据流的多个对象存储设备,其中,目标数据流的多个副本存储在一个目标放置组中的不同对象存储设备上;在监测到目标放置组中的第一对象存储设备出现故障的情况下,使用第一临时存储设备替换第一对象存储设备;以及将第一对象存储设备出现故障以后接收到的目标数据流存入第一临时存储设备,进而在对目标数据流进行多副本存储的情况下,若存储其中一个副本的第一对象存储设备出现故障,则使用第一临时存储设备替换故障的第一对象存储设备构成临时多副本存储方案,由临时多副本存储方案对故障出现之后的目标数据流进行多副本存储,不影响多副本存储方案的可用性,从而实现了确保多副本存储方案的可用性的技术效果,解决了传统多副本存储方案在等待恢复期的可用性较差技术问题。
针对三副本存储方案由于第一临时存储设备已经代替了第一对象存储设备,因此即便在故障发生后的等待恢复期内还有其他对象存储设备出现故障,也可确保三副本存储方案中还有一个可用的对象存储设备和可用的第一临时存储设备,确保三副本存储方案的可用性,进而解决了传统多副本存储方案在等待恢复期的可用性较差技术问题。
本领域普通技术人员可以理解,图10所示的结构仅为示意,计算机终端也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌声电脑以及移动互联网设备(MobileInternet Devices,MID)、PAD等终端设备。图10其并不对上述电子装置的结构造成限定。例如,计算机终端100还可包括比图10中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图10所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
本申请的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于保存上述实施例所提供的数据存储方法所执行的程序代码。
可选地,在本实施例中,上述存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:监测用于存储目标数据流的多个对象存储设备,其中,目标数据流的多个副本存储在一个目标放置组中的不同对象存储设备上;在监测到目标放置组中的第一对象存储设备出现故障的情况下,使用第一临时存储设备替换第一对象存储设备;以及将第一对象存储设备出现故障以后接收到的目标数据流存入第一临时存储设备。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:在监测到目标放置组中的第一对象存储设备出现故障的情况下,确定进入预设恢复等待期;监测第一对象存储设备在预设恢复等待期内是否恢复;若第一对象存储设备在预设恢复等待期内恢复,则使用恢复的第一对象存储设备替换第一临时存储设备;若第一对象存储设备在预设恢复等待期内未恢复,则将第一对象存储设备出现故障以前接收到的目标数据流存入第一临时存储设备。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:在监测到目标放置组中的第一对象存储设备出现故障的情况下,确定进入预设恢复等待期;在预设恢复等待期内监测用于存储目标数据流的多个对象存储设备;在监测到目标放置组中的第二对象存储设备在预设恢复等待期内出现故障的情况下,使用第二临时存储设备替换第二对象存储设备;将第二对象存储设备出现故障以后接收到的目标数据流存入第二临时存储设备。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:在监测到目标放置组中的第一对象存储设备出现故障的情况下,获取目标放置组中未出现故障的至少一个对象存储设备的设备状态,其中,设备状态至少包括:领导者、候选者和跟随者,领导者存储目标数据流的进度高于候选者,候选者存储目标数据流的进度高于跟随者,领导者指示向跟随者和候选者提供目标数据流;根据未出现故障的至少一个对象存储设备的设备状态,为第一临时存储设备配置缺失的设备状态。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:在未出现故障的至少一个对象存储设备中,若存在设备状态为领导者的对象存储设备,则将第一临时存储设备的设备状态配置为候选者或跟随者。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:在未出现故障的至少一个对象存储设备中,若存在设备状态为候选者的对象存储设备,且不存在设备状态为领导者的对象存储设备,则将对象存储设备的设备状态从候选者调整为领导者,将第一临时存储设备的设备状态配置为候选者或跟随者。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:在未出现故障的至少一个对象存储设备中,若不存在设备状态为领导者的对象存储设备,且不存在设备状态为候选者的对象存储设备,则将第一临时存储设备的设备状态配置为领导者,在未出现故障的至少一个对象存储设备中将其中一个对象存储设备的设备状态配置为候选者。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:在将第一临时存储设备的设备状态配置为领导者,在未出现故障的至少一个对象存储设备中将其中一个对象存储设备的设备状态配置为候选者之后,将第一临时存储设备中存储的目标数据流同步至设备状态为候选者的对象存储设备;监测设备状态为领导者的第一临时存储设备存储目标数据流的领导存储进度;监测设备状态为候选者的对象存储设备存储目标数据流的候选存储进度;在候选存储进度达到领导存储进度的情况下,将对象存储设备的设备状态从候选者调整为领导者。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种数据存储方法,其特征在于,包括:
监测用于存储目标数据流的多个对象存储设备,其中,所述目标数据流的多个副本存储在一个目标放置组中的不同对象存储设备上;
在监测到所述目标放置组中的第一对象存储设备出现故障的情况下,使用第一临时存储设备替换所述第一对象存储设备;以及
将所述第一对象存储设备出现故障以后接收到的目标数据流存入所述第一临时存储设备。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在监测到所述目标放置组中的第一对象存储设备出现故障的情况下,确定进入预设恢复等待期;
监测所述第一对象存储设备在所述预设恢复等待期内是否恢复;
若所述第一对象存储设备在所述预设恢复等待期内恢复,则使用恢复的所述第一对象存储设备替换所述第一临时存储设备;
若所述第一对象存储设备在所述预设恢复等待期内未恢复,则将所述第一对象存储设备出现故障以前接收到的目标数据流存入所述第一临时存储设备。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在监测到所述目标放置组中的第一对象存储设备出现故障的情况下,确定进入预设恢复等待期;
在所述预设恢复等待期内监测用于存储目标数据流的多个对象存储设备;
在监测到所述目标放置组中的第二对象存储设备在预设恢复等待期内出现故障的情况下,使用第二临时存储设备替换第二对象存储设备;
将所述第二对象存储设备出现故障以后接收到的目标数据流存入所述第二临时存储设备。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在监测到所述目标放置组中的第一对象存储设备出现故障的情况下,获取所述目标放置组中未出现故障的至少一个所述对象存储设备的设备状态,其中,所述设备状态至少包括:领导者、候选者和跟随者,所述领导者存储所述目标数据流的进度高于所述候选者,所述候选者存储所述目标数据流的进度高于所述跟随者,所述领导者指示向所述跟随者和所述候选者提供所述目标数据流;
根据未出现故障的至少一个所述对象存储设备的设备状态,为所述第一临时存储设备配置缺失的设备状态。
5.根据权利要求4所述的方法,其特征在于,根据未出现故障的至少一个所述对象存储设备的设备状态,为所述第一临时存储设备分配缺失的设备状态包括:
在未出现故障的至少一个所述对象存储设备中,若存在所述设备状态为候选者的对象存储设备,且不存在所述设备状态为领导者的对象存储设备,则将所述对象存储设备的设备状态从所述候选者调整为领导者,将所述第一临时存储设备的设备状态配置为候选者或跟随者。
6.根据权利要求4所述的方法,其特征在于,根据未出现故障的至少一个所述对象存储设备的设备状态,为所述第一临时存储设备分配缺失的设备状态包括:
在未出现故障的至少一个所述对象存储设备中,若不存在所述设备状态为领导者的对象存储设备,且不存在所述设备状态为候选者的对象存储设备,则将所述第一临时存储设备的设备状态配置为领导者,在未出现故障的至少一个所述对象存储设备中将其中一个对象存储设备的设备状态配置为候选者。
7.根据权利要求6所述的方法,其特征在于,在将所述第一临时存储设备的设备状态配置为领导者,在未出现故障的至少一个所述对象存储设备中将其中一个对象存储设备的设备状态配置为候选者之后,所述方法还包括:
将所述第一临时存储设备中存储的目标数据流同步至所述设备状态为候选者的对象存储设备;
监测所述设备状态为领导者的所述第一临时存储设备存储所述目标数据流的领导存储进度;
监测所述设备状态为候选者的所述对象存储设备存储所述目标数据流的候选存储进度;
在所述候选存储进度达到所述领导存储进度的情况下,将所述对象存储设备的设备状态从所述候选者调整为领导者。
8.一种数据存储装置,其特征在于,包括:
监测模块,用于监测用于存储目标数据流的多个对象存储设备,其中,所述目标数据流的多个副本存储在一个目标放置组中的不同对象存储设备上;
替换模块,用于在监测到所述目标放置组中的第一对象存储设备出现故障的情况下,使用第一临时存储设备替换所述第一对象存储设备;以及
存储模块,用于将所述第一对象存储设备出现故障以后接收到的目标数据流存入所述第一临时存储设备。
9.一种非易失性存储介质,其特征在于,所述非易失性存储介质中存储有程序,其中,在所述程序运行时控制所述非易失性存储介质所在设备执行权利要求1至7中任意一项所述数据存储方法。
10.一种电子设备,其特征在于,包括:存储器和处理器,所述处理器用于运行存储在所述存储器中的程序,其中,所述程序运行时执行权利要求1至7中任意一项所述的数据存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211734625.1A CN115963994A (zh) | 2022-12-30 | 2022-12-30 | 数据存储方法、装置、非易失性存储介质及处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211734625.1A CN115963994A (zh) | 2022-12-30 | 2022-12-30 | 数据存储方法、装置、非易失性存储介质及处理器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115963994A true CN115963994A (zh) | 2023-04-14 |
Family
ID=87363108
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211734625.1A Pending CN115963994A (zh) | 2022-12-30 | 2022-12-30 | 数据存储方法、装置、非易失性存储介质及处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115963994A (zh) |
-
2022
- 2022-12-30 CN CN202211734625.1A patent/CN115963994A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2019085875A1 (zh) | 存储集群的配置修改方法、存储集群及计算机系统 | |
US7428657B2 (en) | Method for rolling back from snapshot with log | |
WO2021136422A1 (zh) | 状态管理方法、主备应用服务器的切换方法及电子设备 | |
CN104486319B (zh) | 适用于高可用系统的配置文件实时同步方法及其系统 | |
CN101316184B (zh) | 容灾切换方法、系统、装置 | |
CN105069160A (zh) | 一种基于自主可控数据库的高可用性方法及构架 | |
CN101741536A (zh) | 数据级容灾方法、系统和生产中心节点 | |
EP3848809A1 (en) | Data disaster recovery method and site | |
CN106484565A (zh) | 多数据中心间的数据同步方法及相关设备 | |
CN108173971A (zh) | 一种基于主备切换的MooseFS高可用方法及系统 | |
CN114138732A (zh) | 一种数据处理方法及装置 | |
CN113326251B (zh) | 数据管理方法、系统、设备和存储介质 | |
CN111752488A (zh) | 存储集群的管理方法、装置、管理节点及存储介质 | |
US10078558B2 (en) | Database system control method and database system | |
CN111984474B (zh) | 一种双控集群故障恢复的方法、系统及设备 | |
CN110716828B (zh) | 一种数据库实时备份方法 | |
WO2024103594A1 (zh) | 容器容灾方法、系统、装置、设备及计算机可读存储介质 | |
CN107181608B (zh) | 一种恢复服务及性能提升的方法及运维管理系统 | |
CN112948484A (zh) | 分布式数据库系统和数据灾备演练方法 | |
CN115963994A (zh) | 数据存储方法、装置、非易失性存储介质及处理器 | |
CN115878361A (zh) | 数据库集群的节点管理方法、装置及电子设备 | |
CN113297134B (zh) | 数据处理系统及数据处理方法、装置、电子设备 | |
JP2009265973A (ja) | データ同期システム、障害復旧方法、及び、プログラム | |
CN114518973A (zh) | 分布式集群节点宕机重启恢复方法 | |
CN110764954A (zh) | 一种云站点容灾方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |