CN114595092B - 分布式存储系统、数据重构方法、设备及存储介质 - Google Patents

分布式存储系统、数据重构方法、设备及存储介质 Download PDF

Info

Publication number
CN114595092B
CN114595092B CN202210454984.5A CN202210454984A CN114595092B CN 114595092 B CN114595092 B CN 114595092B CN 202210454984 A CN202210454984 A CN 202210454984A CN 114595092 B CN114595092 B CN 114595092B
Authority
CN
China
Prior art keywords
data
node
nodes
blocks
data blocks
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.)
Active
Application number
CN202210454984.5A
Other languages
English (en)
Other versions
CN114595092A (zh
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.)
Alibaba Cloud Computing Ltd
Original Assignee
Alibaba Cloud Computing 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 Alibaba Cloud Computing Ltd filed Critical Alibaba Cloud Computing Ltd
Priority to CN202210454984.5A priority Critical patent/CN114595092B/zh
Publication of CN114595092A publication Critical patent/CN114595092A/zh
Application granted granted Critical
Publication of CN114595092B publication Critical patent/CN114595092B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例提供一种分布式存储系统、数据重构方法、设备及存储介质。在本申请实施例中,针对分布式存储系统中的数据重构任务,从选择出的用于存储重构数据块的多个数据节点中进一步选择目标数据节点,由该目标数据节点统一针对多个失效数据块执行重构任务,对多个失效数据块进行重构所需的多个有效数据块只需由目标数据节点从其它数据节点读取一次即可,相比于现有技术中每重构一个失效数据块都需要读取一次所需的多个有效数据块的方案,大幅度减少了数据重构所消耗的带宽资源,解决了带宽资源严重浪费的问题。

Description

分布式存储系统、数据重构方法、设备及存储介质
技术领域
本申请涉及存储技术领域,尤其涉及一种分布式存储系统、数据重构方法、设备及存储介质。
背景技术
纠删码(Eruasure-coding,EC)是一种具有高容错和高存储效率特点的编码技术,被广泛应用于各种分布式存储系统中。在采用纠删码的分布式存储系统中,数据会以EC校验组的方式被写到多个数据存储节点中,当有数据存储节点发生故障时,可以通过其它数据存储节点中存在的数据对该故障节点中的数据进行重构,保障数据的可靠性。
在现有技术中,数据重构任务通常由各个目标数据节点执行,目标数据节点是指被选中用来存放重构数据的其它数据存储节点。对每个目标数据节点而言,在接收到重构命令时,需要从其它数据存储节点中读取重构所需的数据块,基于这些数据块进行数据重构,并将重构出的数据块写入到本地磁盘中。但是,现有重构过程存在带宽资源浪费的问题,尤其是在待重构数据块较多的情况下,带宽资源浪费更为严重。
发明内容
本申请的多个方面提供一种分布式存储系统、数据重构方法、设备及存储介质,以解决现有数据重构存在的带宽资源浪费严重的问题,节约数据重构消耗的带宽资源。
本申请实施例提供一种分布式存储系统,包括:管控节点和多个数据节点,多个数据节点上存储有多个数据块,所述多个数据块来自至少一个纠删码组;管控节点,用于在监测到发生故障的至少一个第一数据节点的情况下,确定至少一个第一数据节点上来自同一纠删码组的多个失效数据块;从其它数据节点中选择用于存储多个失效数据块对应的重构数据块的多个第二数据节点,向多个第二数据节点中的目标数据节点发送数据重构任务,以指示目标数据节点对多个失效数据块进行重构;目标数据节点,用于在接收到数据重构任务的情况下,从其它数据节点获取对多个失效数据块进行重构所需的多个有效数据块,基于多个有效数据块对多个失效数据块进行重构,以得到多个重构数据块,并将多个重构数据块提供给对应的第二数据节点进行存储以完成数据重构任务。
本申请实施例还提供一种数据重构方法,包括:在监测到分布式存储系统中发生故障的至少一个第一数据节点的情况下,确定至少一个第一数据节点上来自同一纠删码组的多个失效数据块;从除至少一个第一数据节点之外的其它数据节点中,选择用于存储多个失效数据块对应的重构数据块的多个第二数据节点;向多个第二数据节点中的目标数据节点发送数据重构任务,以指示目标数据节点对多个失效数据块进行重构并将重构出的数据块提供给对应的第二数据节点进行存储。
本申请实施例还提供另一种数据重构方法,包括:接收数据重构任务,数据重构任务指示对至少一个第一数据节点上来自同一纠删码组的多个失效数据块进行重构,至少一个第一数据节点是分布式存储系统中发生故障的数据节点;从除至少一个第一数据节点之外的其它数据节点,获取对多个失效数据块进行重构所需的多个有效数据块;基于多个有效数据块对多个失效数据块进行重构,以得到多个重构数据块;将多个重构数据块对应提供给多个第二数据节点进行存储以完成数据重构任务,第二数据节点是从其它数据节点选择出的用于存储重构数据块的数据节点。
本申请实施例还提供一种设备节点,包括:存储器和处理器;存储器用于存储计算机程序,处理器与存储器耦合,用于执行计算机程序,以用于实现本申请实施例提供的数据重构方法中的步骤。
本申请实施例还提供另一种设备节点,包括:存储器和处理器;存储器用于存储计算机程序,处理器与存储器耦合,用于执行计算机程序,以用于实现本申请实施例提供的数据重构方法中的步骤。
本申请各实施例提供的技术方案,针对分布式存储系统中的数据重构任务,从选择出的用于存储重构数据块的多个数据节点中进一步选择目标数据节点,由该目标数据节点统一针对多个失效数据块执行重构任务,对多个失效数据块进行重构所需的多个有效数据块只需由目标数据节点从其它数据节点读取一次即可,相比于现有技术中每重构一个失效数据块都需要读取一次所需的多个有效数据块的方案,大幅度减少了数据重构所消耗的带宽资源,解决了带宽资源严重浪费的问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请一示例性实施例提供的分布式系统的结构示意图;
图2为本申请一示例性实施例提供的数据重构方法的流程示意图;
图3为本申请另一示例性实施例提供的数据重构方法的流程示意图;
图4为本申请一示例性实施例提供的数据重构装置的结构示意图;
图5为本申请另一示例性实施例提供的数据重构装置的结构示意图;
图6为本申请一示例性实施例提供的节点设备的结构示意图;
图7为本申请另一示例性实施例提供的节点设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请各实施例中,分布式存储系统采用纠删码技术,纠删码是一种数据保护方法,它将原始数据分割成数据片段,对各数据片段进行编码得到不同的数据块,并将这些数据块存储在不同的数据节点(DataNode),达到分布式存储的目的。在本申请各实施例中,并不限定数据块的大小。数据块大小指的是数据块进行编码计算时,编码出的数据块(原始数据块或校验块)的大小,例如,数据块大小可以是4KB-128KB,或者也可以更大,例如32MB、64MB等。在本申请各实施例中,以纠删码组为粒度对数据块进行组织和管理,每个纠删码组包括相互关联的多个数据块,当某个数据块失效时,可以利用同一纠删码组中的其它数据块对该失效数据块进行重构。另外,为了提高数据安全性和冗余度,同一纠删码组中的数据块通常分布在不同数据节点上。当然,在特殊或极端情况下,同一纠删码组中的数据块也可以全部存储在同一数据节点上,或者部分数据块存储在同一数据节点上。
需要说明的是,纠删码可以采用多种编码方式,对于不同编码方式,纠删码组中包含的相互关联的数据块会有所不同。以纠删码采用Reed-Solomon(简称为RS)编码方式为例,该编码方式以K个数据片段作为输入,对K个数据片段进行编码可以得到N个数据块,这N个数据块形成一个纠删码组,而且当任一数据块失效时,可以基于任意K个有效数据块对该失效数据块进行重构,其中,N、K是≥2的整数,且N>K。需要说明的是,纠删码组也可以称为条带,每个条带包括多个数据块,同一条带中的数据块存在关联关系,可以根据部分有效数据块对失效数据块进行重构,对失效数据块进行重构需要依赖的有效数据块的数量具体可视编码方式而定。
在有数据节点发生故障时,可以根据其它数据节点中属于同一纠删码组的有效数据块对故障节点中的失效数据块进行重构,假设发生故障的数据节点上存在N个属于同一纠删码组的数据块需要进行重构,对每个数据块重构需要使用K个数据块,在传统方案中,需要选择N个数据节点,每个数据节点负责对N个数据块中的一个数据块进行重构,因此N个数据节点分别需要从其它数据节点读取与失效数据块属于同一纠删码组的K个有效数据块,根据所读取的K个有效数据块对所负责的失效数据块进行重构,最终完成N个数据块的重构,这样重构后的N个数据块分布在N个数据节点上,有利于提高数据安全性。
在本申请实施例中,考虑到对同一纠删码组中的不同失效数据块进行数据重构所依赖的其它数据块相同或至少存在部分重叠,基于此,在本申请实施例中,对传统由多个数据节点分别对多个失效数据块进行重构的方案进行改进,将每个数据节点与失效数据块的重构任务解耦,避免每个数据节点独立执行数据重构任务,而是由多个数据节点中的同一数据节点统一对多个失效数据块进行重构,这样重构所依赖的有效数据块只需由该数据节点从其它数据节点读取一次,在不同失效数据块的重构过程中实现复用,用同一数据节点的负载换取带宽资源的节约,由此解决传统方案在进行数据重构时存在的带宽资源浪费问题。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图1为本申请一示例性实施例提供的分布式存储系统的结构示意图。本实施例的分布式存储系统可以实现为各种大数据应用的底层文件系统,也可以实现为各种对外提供存储服务的存储系统,例如对象存储(Object Storage Service,OSS)系统、表格存储(Table store)系统、日志服务系统(SLS)或网络存储系统(NAS)等。如图1所示,该系统100包括:管控节点101及多个数据节点102。其中,多个数据节点102用于存储多个数据块,多个数据块属于至少一个纠删码组,关于纠删码组和数据块的概念可参见上文中的介绍。管控节点101用于对分布式存储系统进行各种管理,例如对各个数据节点102的状态、数量、调度进行管理,对分布式存储系统中的数据存储过程、数据重构过程等进行管理,还可以对分布式存储系统的整体状态、生命周期等进行管理。
在本实施例中,管控节点101的部署实施方式有多种,例如可以部署在虚拟机、云服务器、云主机或物理机上。可选地,管控节点101可以集中部署在一台物理机或一台虚拟机上,也可以分布式部署在多台物理机或多台虚拟机上,并不限于此。相应地,数据节点102的实现形态也有多种形式,例如可以是具有一定存储空间并支持数据读写操作的虚拟机、物理机(如服务器、计算机设备)、云服务器、云主机、虚拟中心、服务器阵列或数据库等。
其中,多个数据节点102分布在不同位置,例如可以分布在不同IDC、集群或可用区内,分别与管控节点101保持通信连接。数据节点102与管控节点101之间可以是有线或无线通信连接。可选地,在无线通信连接的情况下,数据节点102可以通过移动网络和与管控节点101通信连接,相应地,移动网络的网络制式可以为2G(GSM)、2.5G(GPRS)、3G(WCDMA、TD-SCDMA、CDMA2000、UTMS)、4G(LTE)、4G+(LTE+)、5G、WiMax或者未来即将出现的新网络制式等中的任意一种。可选地,数据节点102可以与管控节点101位于同一局域网内,则在无线通信连接的情况下,数据节点102也可以通过蓝牙、WiFi、红外、zigbee或NFC等方式与管控节点101通信连接。
在本申请实施例中,多个数据节点102通过心跳机制与管控节点101保持心跳连接,具体地,多个数据节点102定时向管控节点101发送心跳报文,让管控节点101了解自己当前的工作状态是否正常,以确保多个数据节点102和管控节点101之间有效的连接机制。其中,心跳报文至少包括数据节点102的当前状态(例如是否发生故障)、以及在发生故障情况下的故障信息,故障信息包括但不限于:发生故障的时间、部件(或组件)以及故障类型等。其中,通过心跳报文上报的故障信息属于局部故障的信息,本实施例中的局部故障是指数据节点的存储介质发生故障的情况,存储介质可以是但不限于磁盘、SSD等。
在本实施例中,管控节点101一方面可以接收多个数据节点102上报的心跳报文,通过心跳报文监测多个数据节点102是否发生故障,从而发现发生故障的数据节点。在本实施例中,将数据节点的故障类型分为两大类,即第一故障类型和第二故障类型。第一故障类型是指整个数据节点故障的情况,第二故障类型是指数据节点发生局部故障的情况,在本申请实施例中局部故障主要是指数据节点的存储介质,例如磁盘发生故障的情况。可选地,管控节点101可以结合数据节点102的心跳情况来确定第一数据节点的故障类型。具体实施方式如下:
如果管控节点101长时间接收不到数据节点的心跳报文,例如自最后一次接收到心跳报文到当前时间的时间间隔大于设定的时间阈值,说明该数据节点不能与管控节点101进行正常通信,在这种情况下可以判定整个数据节点发生故障,即第一故障类型。如果管控节点101能够在设定的时间阈值内接收到数据节点的心跳报文,但是心跳报文中携带有该数据节点的局部故障信息,据此可以确定该数据节点是局部故障,即第二故障类型。其中,对于局部故障情况,心跳报文中携带的局部故障信息可以是发生故障的磁盘名称和位置信息、以及该故障磁盘所在数据节点的节点名称和位置信息,或者可以是发生故障的扇区名称和位置信息、故障扇区所在的磁盘的名称和位置信息、以及故障扇区所在数据节点的名称和位置信息等。上述识别数据节点的故障类型的方法仅为示例性说明,并不限于此。
为便于描述和区分,在本申请实施例中,将发生故障的数据节点称为第一数据节点。需要说明的是,发生故障的第一数据节点可以是一个,也可以是多个,简称为至少一个第一数据节点。管控节点101在监测到发生故障的至少一个第一数据节点的情况下,可确定至少一个第一数据节点上的失效数据块,其中,来自至少一个第一数据节点上的失效数据块的数量为至少两个,其中,失效数据块为第一数据节点出现问题(即无法被访问),需要重构的数据块,例如可以是存储在故障磁盘或故障扇区中上的数据块。在此说明,若第一数据节点为一个,则这里的“至少两个失效数据块”是指该第一数据节点上的全部失效数据块;若第一数据节点为至少两个,则这里的“至少两个失效数据块”是指至少两个第一数据节点上的全部失效数据块,在后续描述中,简称为“至少一个第一数据节点上的失效数据块”。
其中,至少一个第一数据节点上的失效数据块可能来自至少一个纠删码组,即可能全部来自同一纠删码组,也可能来自不同的纠删码组。基于此,管控节点101还会进一步从至少一个第一数据节点上的失效数据块中确定来自同一纠删码组的多个失效数据块,以便于以纠删码组为单位对失效数据块进行数据重构。在一可选实施例中,管控节点101可以实现为元数据节点,存储有分布式存储系统中的元数据信息,该元数据信息包括分布式存储系统中各数据节点的各存储介质(例如磁盘)上存储的各数据块的标识、数据块所属的纠删码组的信息以及存储位置等信息,这里的存储位置包括数据块所在数据节点的信息以及数据节点上磁盘的信息,进一步还可以包括在磁盘上的扇区信息等。基于此,管控节点101在确定至少一个第一数据节点上来自同一纠删码组的多个失效数据块时,具体用于:根据各第一数据节点的故障类型,结合本地存储的元数据信息,确定至少一个第一数据节点上来自同一纠删码组的多个失效数据块。
其中,对于故障类型为第一故障类型的第一数据节点,可以通过以下方式确定失效数据块:管控节点101可以将第一数据节点上的数据块全部作为失效数据块,进一步结合本地存储的元数据信息,确定第一数据节点上的磁盘信息以及磁盘上存储的数据块的信息以及数据块与纠删码组之间的映射关系,据此,确定该第一数据节点上属于同一纠删码组的失效数据块。
对于故障类型为第二故障类型的第一数据节点,可以通过以下几种方式确定失效数据块。方式一:管控节点101可以从第一数据节点上报的心跳报文中,获取第一数据节点上发生故障的磁盘或扇区;进一步结合本地存储的元数据信息,确定发生故障的磁盘或磁盘中的扇区中存储的数据块的信息以及数据块与纠删码组之间的映射关系,据此,确定该第一数据节点上属于同一纠删码组的失效数据块。方式二:各数据节点会在本地存储局部元数据信息,该局部元数据信息包括数据节点本地磁盘上存储的数据块的信息以及数据块与纠删码组之间的映射关系,基于此,第一数据节点在发现其某个磁盘或磁盘扇区故障时,可以结合本地存储的局部元数据信息,确定该数据节点上发生故障的磁盘或磁盘里发生故障的扇区中存储的数据块为待重构的失效数据块,并将失效数据块的信息以及失效数据块所属纠删码组的信息通过心跳报文的形式告知管控节点101;在该方式中,管控节点101可以从心跳报文中直接解析出失效数据块及其所属纠删码组的信息。
需要说明的是,在第一数据节点为至少两个的情况下,管控节点101可以先确定每个第一数据节点上属于同一纠删码组的失效数据块,再进一步对至少两个第一数据节点上属于同一纠删码组的失效数据块进行汇总或聚合,得到至少两个第一数据节点上来自同一纠删码组的多个失效数据块。另外,也可以先确定每个第一数据节点上的失效数据块,然后,从纠删码组的维度,对至少两个第一数据节点上的失效数据块进行汇总或聚合,得到至少两个第一数据节点上来自同一纠删码组的多个失效数据块。另外说明,来自同一纠删码组的多个失效数据块,通常来自两个或两个以上不同的数据节点,但不限于此。在特殊或极端情况下,来自同一纠删码组的多个失效数据块,也可能来自同一数据节点。
在本实施例中,在确定出来自同一纠删码组的多个失效数据块后,接下来要以纠删码组为单位对来自同一纠删码组的多个失效数据块进行重构。由于多个失效数据块所在的第一数据节点存在故障,为了避免重构过程中从第一数据节点上读取重构所需的有效数据块导致读取失败的情况,管控节点101可以从除至少一个第一数据节点之外的其它数据节点中选择用于存储多个失效数据块对应的重构数据块的多个第二数据节点,并向多个第二数据节点中的目标数据节点发送数据重构任务,以指示目标数据节点对多个失效数据块进行重构。对来自同一纠删码组的多个失效数据块而言,第二数据节点的数量可以小于或等于多个失效数据块的数量,优选地,第二数据节点的数量等于多个失效数据块的数量,这样多个失效数据块被重构后会分布到不同第二数据节点上进行存储,有利于提高数据安全性。
在本实施例中,管控节点101在从其它数据节点中选择用于存储多个失效数据块对应的重构数据块的多个第二数据节点时,具体用于:根据其它数据节点的第一状态信息,从其它数据节点中选择多个第二数据节点,第一状态信息至少包括数据节点上存储空间的使用状态,这里的使用状态是指数据节点剩余存储空间的大小或数据节点上已使用的存储空间的大小或数据节点上存储空间的使用率等。需要说明的是,在本实施例中,在选择第二数据节点时,优先考虑各数据节点的存储空间的使用状态,优先选择使用状态较佳,例如剩余存储空间较多的数据节点,但并不限于这一种选择条件。进一步,其它数据节点的第一状态信息还可以包括数据节点的IO读写负载、网络状态、CPU负载、电量信息等其它状态信息,这样,可以同时结合其它数据节点的存储空间的使用状态,以及IO读写负载、网络状态、CPU负载、电量信息等其它状态信息,从其它数据节点中选择第二数据节点。例如,可以分别给其它数据节点的存储空间的使用状态,以及IO读写负载、网络状态、CPU负载、电量信息等其它状态信息分配不同的权重信息,其中,存储空间的使用状态的权重高于其它状态信息的权重信息,基于权重信息对存储空间的使用状态和其它状态信息进行加权求和得到其它各数据节点的质量分,选择质量分最高的多个数据节点作为第二数据节点。
本实施例对第二数据节点的选择方式不做限定,除了上面列举的方式之外,例如,还可以从其它数据节点中随机选择多个与多个重构数据块大小适配的数据节点作为第二数据节点。或者,还可以由其他数据节点之间进行协商,例如其它数据节点之间相互发送协商报文,协商报文中携带各自的存储空间的使用状态,各其它节点根据自身存储空间的使用状态和其它数据节点发送的写上报文中携带的存储空间使用状态较佳,确定自己是否可以作为第二数据节点,例如若自身的剩余存储空间在所有参与协商的各节点的剩余存储空间中排名在前M个,则确定自身可以作为第二数据节点,在确定自身可以作为第二数据节点时,将自己的节点信息发送至管控节点101,以便于管控节点101据此确定多个第二数据节点,M是正整数。
在本实施例中,对每个失效数据块进行重构时一般都需要多个有效数据块,在对属于同一纠删码组的多个失效数据块进行数据重构时,至少部分有效数据块在数据重构过程中可被共享,也就是说,多个失效数据块进行数据重构时需要的有效数据块重复率较高,为了避免在重构多个失效数据块过程中重复多次读取相同的有效数据块,可以将属于同一纠删码组的多个失效数据块的数据重构任务分配给第二数据节点中同一数据节点执行,这样不仅可以避免重复读取相同的有效数据块,节省带宽资源,还可以提高多个失效数据块的构建效率。在本实施例中,可由多个第二数据节点中的目标数据节点代替其它第二数据节点,统一读取数据重构任务所需的多个有效数据块并基于所读取的多个有效数据块完成对多个失效数据块的数据重构。在重构出多个失效数据块对应的重构数据块之后,由该目标数据节点将重构数据块提供给对应的第二数据节点进行分布存储,最终完成数据重构任务。在此说明,重构多个失效数据块所需的多个有效数据块是指与失效数据块属于同一纠删码组中的有效数据块。
进一步,为了让目标数据节点代替其它第二数据节点统一针对来自同一纠删码组的多个失效数据块进行数据重构任务,需要从多个第二数据节点中确定目标数据节点。在一可选实施例中,管控节点101在向多个第二数据节点中的目标数据节点发送数据重构任务之前,还用于采用以下至少一种方式确定目标数据节点:
方式A1:根据多个第二数据节点的第二状态信息,从多个第二数据节点中确定目标数据节点,第二状态信息至少包括第二数据节点的网络状态,例如,选择网络状态较佳的数据节点作为目标数据节点,可以提高有效数据块的读取效率。
方式A2:管控节点101也可以根据多个第二数据节点之间的通信距离,选择多个第二数据节点中与其它数据节点的平均通信距离符合设定要求的数据节点作为目标数据节点,例如,选择多个数据几点中与其它数据节点的平均通信距离最短的数据节点作为目标数据节点,由此可以减少有效数据块的传输时间,提高有效数据块的读取效率。
方式A3:管控节点101也可以同时根据多个第二数据节点的第二状态信息和多个第二数据节点之间的通信距离,从第二数据节点中确定目标数据节点,例如,可以通过计算多个第二数据节点的第二状态信息和多个第二数据节点之间的通信距离的加权平均数,将加权平均数最大的数据节点作为目标数据节点。
方式A4:第二数据节点之间进行协商,第二数据节点之间相互发送协商报文,在协商报文中携带自己的第二状态信息,各第二数据节点基于自身的第二状态信息和接收到的各协商报文中的第二状态信息,确定自身是否可以作为目标数据节点;关于根据第二状态信息确定自身是否可以作为目标数据节点的详细实施方式可参见前述方式A1和A3中,在此不做赘述。若第二数据节点确定自身可作为目标数据节点,可将自身能够作为目标数据节点的信息发送至管控节点101。对于管控节点101而言,据此可以确定多个第二数据节点中的目标数据节点。
在确定出目标数据节点之后,管控节点101向目标数据节点发送数据重构任务,以指示目标数据节点对上文中确定的来自同一纠删码组中的多个失效数据块进行数据重构。在本实施例中,对每个数据节点的功能进行改进,对每个数据节点来说,只有在被确定为目标数据节点的情况下,才会接收管控节点101发送的数据重构任务,并执行数据重构任务。在一可选实施例中,可以在每个数据节点上创建相应的作业(worker)进程,该worker进程在其所在数据节点被确定为目标数据节点的情况下会被激活,针对来自同一纠删码组的多个失效数据块的数据重构任务由该worker进程执行完成。那么在确定目标数据节点后,管控节点101将多个失效数据块的数据重构任务下发给目标数据节点,目标数据节点在接收到数据重构任务的情况下,其worker进程从其它数据节点获取对来自同一纠删码组的多个失效数据块进行重构所需的多个有效数据块,并基于多个有效数据块对多个失效数据块进行重构,以得到多个重构数据块,并将多个重构数据块提供给对应的第二数据节点进行存储以完成数据重构任务。其中,多个有效数据块与失效数据块来自同一纠删码组,且多个有效数据块中至少部分有效数据块在对多个失效数据块的数据重构过程中可被共享,可被共享的至少部分有效数据块的数量具体可视纠删码的编码方式而定。在此说明,在本实施例中,对目标数据节点而言,其要完成的数据重构任务包括两部分:一部分是基于多个有效数据块对多个失效数据块进行统一重构,以得到多个重构数据块;另一部分是将多个重构数据块提供给对应的第二数据节点(这里的第二数据节点包括目标数据节点内)进行存储以完成数据重构任务。
具体地,数据重构任务中包含多个失效数据块所属纠删码组中各个数据块的位置信息,则目标数据节点在获取多个有效数据块时,具体用于:根据各个数据块的位置信息,结合纠删码组使用的编码方式,从其它数据节点获取对多个失效数据块进行重构所需的多个有效数据块。
在本实施例中,纠删码组可以使用的编码方式有多种类型,根据纠删码组使用的编码方式的不同,失效数据块在数据重构时,需要使用的有效数据块也是不同的。下面分情况进行说明:
方式一:采用第一类编码方式,第一类编码方式约定每个失效数据块都是需要相同数量的有效数据块进行重构,而且不需要对数据块进行区分,即对不同失效数据块可以使用完全相同的有效数据块进行重构。
方式二:采用第二类编码方式,第二类编码方式约定不同失效数据块可以使用不同数量的有效数据块进行重构,而且不需要对数据块进行区分。例如,有些失效数据块需要使用K1个有效数据块进行数据重构,有些失效数据块需要使用K2个有效数据块进行数据重构,上述K1个数据块和K2个数据块之间可以存在相同的数据块,也可以是完全不同的数据块,K1、K2是正整数,且K1不等于K2。
方式三:采用第三类编码方式,第三类编码方式约定不仅约定每个失效数据块进行数据重构所使用的数据块的数量,还会约定每个失效数据块具体使用哪些数据块进行数据重构。
在本实施例中,无论上述纠删码组使用的是哪种编码方式,目标数据节点结合纠删码组使用的编码方式,从其它数据节点获取对多个失效数据块进行重构所需的多个有效数据块,可选实施方式如下:结合纠删码组使用的编码方式,确定重构每个失效数据块所需的K个有效数据块,对重构每个失效数据块所需的K个有效数据块进行去重处理,得到M个不同的有效数据块;根据纠删码组中各个数据块的位置信息,从其它数据节点上读取M个不同的有效数据块;K、M是大于等于2的正整数,且M≥K。例如,假设存在3个失效数据块,第一失效数据块重构需要的有效数据块为A、B、C,第二失效数据块重构需要的有效数据块为A、B、C、D,第三失效数据块重构需要的有效数据块为A、B,对所需的有效数据块进行去重操作,得到目标数据节点在进行数据重构时需要读取的有效数据块为A、B、C、D。进一步,目标数据节点可以根据数据块A、B、C、D所在节点的位置信息,从其它数据节点读取有效数据A、B、C、D。
在本实施例中,目标数据节点在读取进行数据重构所需的M个有效数据块时,具体实施方式如下:选择IO负载较轻的数据节点读取M个有效数据块,IO负载较轻的数据节点响应速度快;或者,选择距离目标数据节点通信距离较近的数据节点读取M个有效数据,数据传输耗时短,效率高。进一步可选地,可以从M个数据节点中读取M个有效数据块,在每个数据节点中读取一个有效数据块,这样可以降低每个数据节点的IO负载。
进一步,目标数据节点在读取进行数据重构所需的M个有效数据块时,可以对读取到的数据块进行标记,以防止重复读取相同的数据块,或者读取数据块错误的情况出现。
需要说明的是,在目标数据节点对多个失效数据块做数据重构时,每个失效数据块块所需的有效数据块可能会部分相同,由于数据重构任务都是由同一目标数据节点来完成,所以在读取多个失效数据块所需的多个有效数据块时只需要对所需的全部有效数据块读取一次即可,由此,可以节省带宽。在读取有效数据块完成后,将其存储在目标数据块本地,以便于完成失效数据块的数据重构任务。
在本实施例中,目标数据节点在读取到多个失效数据块重构所需的多个有效数据块后,进一步,基于读取到的有效数据块,对多个失效数据块进行数据重构。其中,目标数据节点可以逐个对失效数据块进行重构,并且每重构出一个数据块,就将重构数据块提供给对应的第二数据节点进行存储;或者,也可以在重构出所有数据块之后,将所有重构数据块一次性提供给对应的第二数据节点进行存储,对此不做限定。需要说明的是,目标数据节点作为多个第二数据节点中的一个数据节点,除了负责对失效数据块进行重构之外,还需要将自身负责的重构数据块保存在本地,并将其它重构数据块提供给其它第二数据节点。
进一步,目标数据节点将重构数据块提供给对应的第二数据节点之前,需要先获知重构数据块与第二数据节点之间的对应关系,即需要预先确定自己负责的重构数据块和其它第二数据块各自负责的重构数据块,以便于提供给对应的第二数据节点进行保存。在一可选实施例中,重构数据块与第二数据节点之间的对应关系可以由目标数据节点自行确定。具体地,管控节点101还可以在数据重构任务中携带多个第二数据节点的标识信息,目标数据节点据此可以确定包含自身在内的多个第二数据节点的数据以及具体是哪些数据节点,之后,以尽量将重构数据块分布到不同第二数据节点上为目标,确定重构数据块与第二数据节点之间的对应关系,并将重构数据块提供给对应的第二数据节点进行存储。在另一可选实施例中,重构数据块与第二数据节点之间的对应关系可以由管控节点101确定。具体地,管控节点101还用于确定多个第二数据节点与多个失效数据块之间的对应关系,将对应关系发送给目标数据节点和/或其它第二数据节点,以使目标数据节点基于对应关系将多个重构数据块提供给对应的第二数据节点进行存储。其中,多个第二数据节点与多个失效数据块之间的对应关系,也就是多个第二数据节点与多个重构数据块之间的对应关系。可选地,管控节点101也以尽量将重构数据块分布到不同第二数据节点上为目标,来确定重构数据块与第二数据节点之间的对应关系,但并不限于此。
在本实施例中,目标数据节点在将多个重构数据块提供给对应的第二数据节点进行存储时,具体实施方式如下:根据上述对应关系确定自身对应的第一重构数据块和其它第二数据节点对应的第二重构数据块,将第一重构数据块写入本地磁盘中,并第二重构数据块写入共享内存中,以供其它第二数据节点从共享内存中读取对应的第二重构数据块。此外,目标数据节点还可以基于上述对应关系主动发起重构数据块的分配任务,例如主动将重构数据块发送给对应的第二数据节点;或者,其它数据节点也可以基于上述对应关系主动向目标数据节点请求其对应的重构数据块,目标数据节点根据第二数据节点的请求,将对应的重构数据块提供给发起请求的第二数据节点。
进一步可选地,在上述基于共享内存的方式向其它第二数据节点提供重构数据块的方式中,第二数据节点在成功从共享内存中读取对应的重构数据块之后,可以在共享内存中添加读取成功标记,以使目标数据节点确定该重构数据块已被第二数据节点成功读取,进而确定是否所有重构数据块均已成功提供给对应的第二数据节点,并在确定所有重构数据块均已成功提供给对应的第二数据节点的情况下,向管控节点101返回数据重构任务已完成的信息。另外,在确定所有重构数据块均已成功提供给对应的第二数据节点的情况下,目标数据节点也可以将本地用于重构的有效数据块做清空处理,以释放存储空间,并对共享内存中的重构数据块进行清空处理,以释放共享内存空间。需要说明的是,除了采用上述在共享内存中添加读取成功标记的方式之外,目标数据节点也可以采用其它方式获知第二数据节点已经成功读取到其对应的重构数据块,例如第二数据节点在其成功读取到对应的重构数据块之后,可以向目标数据节点发送通知信息,以告知目标数据节点其已经成功读取到对应的重构数据块。
在本实施例中,目标数据节点执行数据重构的过程可能会存在失败的情况,失败情况包括但不限于:无法基于所读取的有效数据块成功对失效数据块进行重构的情况,无法从其它数据节点读取数据重构所需的有效数据块进而导致无法成功对失效数据块进行重构的情况,以及在得到重构数据块的情况下,但是无法将该重构数据块提供给对应的第二数据节点的情况。为便于描述,将前面两种情况统一简称为重构失败的情况。基于此,目标数据节点还用于:记录重构失败或无法将其对应的重构数据块提供给对应第二数据节点的第一失效数据块的信息,并将第一失效数据块的信息上报给管控节点101。其中,无法将其对应的重构数据块提供给对应第二数据节点的原因有多种,例如,写内存错误、主动发起重构数据块的分配任务时无法与对应第二数据节点建立通信连接或在传输过程中重构数据块发生丢失等。相应的,管控节点101还用于:针对第一失效数据块,重新从其它第二数据节点中选择新的目标数据节点,并向新的目标数据节点发送数据重构任务,以指示新的目标数据节点重构出第一失效数据块。其中,新的目标数据节点执行数据重构任务的过程,与上文中目标数据节点执行数据重构任务的过程相同,在此不再赘述。
进一步可选地,针对上述无法从其它数据节点读取数据重构所需的有效数据块的情况,目标数据节点可以多次尝试从其它数据节点读取数据重构所需的有效数据块,直至达到最大尝试次数上限或者达到最大尝试时间上限为止。同理,针对上述无法将重构数据块提供给对应的第二数据节点的情况,目标数据节点也可以多次尝试将重构数据块提供给对应的第二数据节点,例如多次尝试写共享内存以便于将重构数据块提供给对应的第二数据节点,直至达到最大尝试次数上限或者达到最大尝试时间上限为止。
本申请上述实施例中,针对分布式存储系统中的数据重构任务,从选择出的用于存储重构数据块的多个数据节点中进一步选择目标数据节点,由该目标数据节点统一针对多个失效数据块执行重构任务,对多个失效数据块进行重构所需的多个有效数据块只需由目标数据节点从其它数据节点读取一次即可,相比于现有技术中每重构一个失效数据块都需要读取一次所需的多个有效数据块的方案,大幅度减少了数据重构所消耗的带宽资源,解决了带宽资源严重浪费的问题。
图2为本申请一示例性实施例提供的数据重构方法的流程示意图。如图2所示,该方法包括:
201、在监测到分布式存储系统中发生故障的至少一个第一数据节点的情况下,确定至少一个第一数据节点上来自同一纠删码组的多个失效数据块;
202、从除至少一个第一数据节点之外的其它数据节点中,选择用于存储多个失效数据块对应的重构数据块的多个第二数据节点;
203、向多个第二数据节点中的目标数据节点发送数据重构任务,以指示目标数据节点对多个失效数据块进行重构并将重构出的数据块提供给对应的第二数据节点进行存储。
本实施例中,分布式存储系统包括管控节点和多个数据节点,本实施例的数据重构方法可由管控节点执行。关于监测发生故障的第一数据节点的实施方式可参见前述系统实施例中的描述,在此不做赘述。
进一步地,上述确定至少一个第一数据节点上来自同一纠删码组的多个失效数据块,包括:根据至少一个第一数据节点的故障类型,结合本地存储的元数据信息,确定至少一个第一数据节点上来自同一纠删码组的多个失效数据块。
进一步地,上述从除第一数据节点之外的其它数据节点中,选择用于存储多个失效数据块对应的重构数据块的多个第二数据节点,包括:根据其它数据节点的第一状态信息,从其它数据节点中选择多个第二数据节点,第一状态信息至少包括数据节点上存储空间的使用状态。
进一步地,在向多个第二数据节点中的目标数据节点发送数据重构任务之前,还包括:根据多个第二数据节点的第二状态信息,从多个第二数据节点中确定目标数据节点,第二状态信息至少包括第二数据节点的网络状态;或者,根据多个第二数据节点之间的通信距离,选择多个第二数据节点中与其它数据节点的平均通信距离符合设定要求的数据节点作为目标数据节点。
进一步地,所述方法还包括:确定多个第二数据节点与多个失效数据块之间的对应关系,将对应关系发送给目标数据节点和/或其它第二数据节点,以使目标数据节点基于对应关系将重构出的数据块提供给对应的第二数据节点进行存储。
进一步地,所述方法还包括:获取目标数据节点上报的第一失效数据块的信息,第一失效数据块是指目标数据节点重构失败或无法将对应重构数据块提供给对应第二数据节点的无效数据块;针对第一失效数据块,重新从除目标数据节点之外的其它第二数据节点中选择新的目标数据节点,并向新的目标数据节点发送数据重构任务,以指示新的目标数据节点重构出第一失效数据块。
关于上述方法实施例中各步骤的详细实施方式可参见前述系统实施例中的相关描述,在此不做详述。在本实施例中,针对分布式存储系统中的数据重构任务,管控节点负责从选择出的用于存储重构数据块的多个数据节点中进一步选择目标数据节点,由该目标数据节点统一针对多个失效数据块执行重构任务,对多个失效数据块进行重构所需的多个有效数据块只需由目标数据节点从其它数据节点读取一次即可,相比于现有技术中每重构一个失效数据块都需要读取一次所需的多个有效数据块的方案,大幅度减少了数据重构所消耗的带宽资源,解决了带宽资源严重浪费的问题。
图3为本申请另一示例性实施例提供的数据重构方法的流程示意图。如图3所示,该方法包括:
301、接收数据重构任务,数据重构任务指示对至少一个第一数据节点上来自同一纠删码组的多个失效数据块进行重构,第一数据节点是分布式存储系统中发生故障的数据节点;
302、从除至少一个第一数据节点之外的其它数据节点,获取对多个失效数据块进行重构所需的多个有效数据块;
303、基于多个有效数据块对多个失效数据块进行重构,以得到多个重构数据块;
304、将多个重构数据块对应提供给多个第二数据节点进行存储以完成数据重构任务,第二数据节点是从其它数据节点选择出的用于存储重构数据块的数据节点。
本实施例中,分布式存储系统包括管控节点和多个数据节点,其中,管控节点可从除发生故障的第一数据节点之外的其它数据节点中选择多个第二数据节点,并由所述多个第二数据节点中的目标数据节点负责执行数据重构任务,而由多个第二数据节点负责存储重构数据块。需要说明的是,目标数据节点作为多个第二数据节点中的一个数据节点,除了执行数据重构任务之外,也会存储对应的重构数据块。本实施例的数据重构方法可由多个第二数据节点中的目标数据节点执行。
进一步地,上述数据重构任务中包含多个失效数据块所属纠删码组中各个数据块的位置信息,则上述从除至少一个第一数据节点之外的其它数据节点,获取对多个失效数据块进行重构所需的多个有效数据块,包括:根据各个数据块的位置信息,结合纠删码组使用的编码方式,从其它数据节点获取对多个失效数据块进行重构所需的多个有效数据块。
进一步地,上述根据各个数据块的位置信息,结合纠删码组使用的编码方式,从其它数据节点获取对多个失效数据块进行重构所需的多个有效数据块,包括:结合纠删码组使用的编码方式,确定重构每个失效数据块所需的K个有效数据块,对重构每个失效数据块所需的K个有效数据块进行去重处理,得到M个不同的有效数据块;根据各个数据块的位置信息,从其它数据节点上读取M个不同的有效数据块;K、M是大于等于2的正整数,且M≥K。
进一步地,该方法的执行主体为多个第二数据节点中的目标数据节点,该方法还包括:在执行数据重构任务的过程中,记录重构失败或无法将其对应的重构数据块提供给对应第二数据节点的第一失效数据块的信息;将第一失效数据块的信息上报给分布式存储系统中的管控节点,以供管控节点针对第一失效数据块重新从其它第二数据节点中选择新的目标数据节点并指示新的目标数据节点重构出第一失效数据块。
关于上述方法实施例中各步骤的详细实施方式可参见前述系统实施例中的相关描述,在此不做详述。在本实施例中,针对分布式存储系统中的数据重构任务,由用于存储重构数据块的多个数据节点中的目标数据节点,统一针对多个失效数据块执行重构任务,对多个失效数据块进行重构所需的多个有效数据块只需由目标数据节点从其它数据节点读取一次即可,相比于现有技术中每重构一个失效数据块都需要读取一次所需的多个有效数据块的方案,大幅度减少了数据重构所消耗的带宽资源,解决了带宽资源严重浪费的问题。
图4为本申请一示例性实施例提供的数据重构装置的结构示意图。如图4所示,该装置包括:
确定模块41,用于在监测到分布式存储系统中发生故障的至少一个第一数据节点的情况下,确定至少一个第一数据节点上来自同一纠删码组的多个失效数据块;
选择模块42,用于从除至少一个第一数据节点之外的其它数据节点中,选择用于存储多个失效数据块对应的重构数据块的多个第二数据节点;
发送模块43,用于向多个第二数据节点中的目标数据节点发送数据重构任务,以指示目标数据节点对多个失效数据块进行重构并将重构出的数据块提供给对应的第二数据节点进行存储。
确定模块41在确定至少一个第一数据节点上来自同一纠删码组的多个失效数据块时,具体用于:根据至少一个第一数据节点的故障类型,结合本地存储的元数据信息,确定至少一个第一数据节点上来自同一纠删码组的多个失效数据块。
选择模块42在从除至少一个第一数据节点之外的其它数据节点中,选择用于存储多个失效数据块对应的重构数据块的多个第二数据节点时,具体用于:根据其它数据节点的第一状态信息,从其它数据节点中选择多个第二数据节点,第一状态信息至少包括数据节点上存储空间的使用状态。
发送模块43在向多个第二数据节点中的目标数据节点发送数据重构任务之前,还用于:根据多个第二数据节点的第二状态信息,从多个第二数据节点中确定目标数据节点,第二状态信息至少包括第二数据节点的网络状态;或者根据多个第二数据节点之间的通信距离,选择多个第二数据节点中与其它数据节点的平均通信距离符合设定要求的数据节点作为目标数据节点。
进一步地,确定模块41还用于确定多个第二数据节点与多个失效数据块之间的对应关系,将对应关系发送给目标数据节点和/或其它第二数据节点,以使目标数据节点基于对应关系将重构出的数据块提供给对应的第二数据节点进行存储。
进一步地,选择模块42还用于获取目标数据节点上报的第一失效数据块的信息,第一失效数据块是指目标数据节点重构失败或无法将对应重构数据块提供给对应第二数据节点的无效数据块;针对第一失效数据块,重新从除目标数据节点之外的其它第二数据节点中选择新的目标数据节点,并向新的目标数据节点发送数据重构任务,以指示新的目标数据节点重构出第一失效数据块。
这里需要说明的是:本实施例提供的数据重构装置可实现上述图2实施例中描述的技术方案,上述各模块或单元具体实现的原理可参见上述各方法实施例中的相应内容,此处不再赘述。
图5为本申请另一示例性实施例提供的数据重构装置的结构示意图。如图5所示,该装置包括:
接收模块51,用于接收数据重构任务,数据重构任务指示对至少一个第一数据节点上来自同一纠删码组的多个失效数据块进行重构,第一数据节点是分布式存储系统中发生故障的数据节点;
获取模块52,用于从除至少一个第一数据节点之外的其它数据节点,获取对多个失效数据块进行重构所需的多个有效数据块;
重构模块53,用于基于多个有效数据块对多个失效数据块进行重构,以得到多个重构数据块;
供应模块54,用于将多个重构数据块对应提供给多个第二数据节点进行存储以完成数据重构任务,第二数据节点是从其它数据节点选择出的用于存储重构数据块的数据节点。
进一步地,数据重构任务中包含多个失效数据块所属纠删码组中各个数据块的位置信息,则获取模块52在从除至少一个第一数据节点之外的其它数据节点,获取对多个失效数据块进行重构所需的多个有效数据块时,具体用于:根据各个数据块的位置信息,结合纠删码组使用的编码方式,从其它数据节点获取对多个失效数据块进行重构所需的多个有效数据块。
进一步地,获取模块52在根据各个数据块的位置信息,结合纠删码组使用的编码方式,从其它数据节点获取对多个失效数据块进行重构所需的多个有效数据块时,具体用于:结合纠删码组使用的编码方式,确定重构每个失效数据块所需的K个有效数据块,对重构每个失效数据块所需的K个有效数据块进行去重处理,得到M个不同的有效数据块;根据各个数据块的位置信息,从其它数据节点上读取M个不同的有效数据块;K、M是大于等于2的正整数,且M≥K。
进一步地,该装置还用于:在执行数据重构任务的过程中,记录重构失败或无法将其对应的重构数据块提供给对应第二数据节点的第一失效数据块的信息;将第一失效数据块的信息上报给分布式存储系统中的管控节点,以供管控节点针对第一失效数据块重新从其它第二数据节点中选择新的目标数据节点并指示新的目标数据节点重构出第一失效数据块。
这里需要说明的是:本实施例提供的数据重构装置可实现上述图3实施例中描述的技术方案,上述各模块或单元具体实现的原理可参见上述各方法实施例中的相应内容,此处不再赘述。
图6为本申请一示例性实施例提供的节点设备的结构示意图。如图6所示,该设备包括:存储器60a和处理器60b;存储器60a用于存储计算机程序,处理器60b与存储器60a耦合,用于执行计算机程序,以用于执行如下步骤:
在监测到分布式存储系统中发生故障的至少一个第一数据节点的情况下,确定至少一个第一数据节点上来自同一纠删码组的多个失效数据块;从除至少一个第一数据节点之外的其它数据节点中,选择用于存储多个失效数据块对应的重构数据块的多个第二数据节点;向多个第二数据节点中的目标数据节点发送数据重构任务,以指示目标数据节点对多个失效数据块进行重构并将重构出的数据块提供给对应的第二数据节点进行存储。
处理器60b在确定至少一个第一数据节点上来自同一纠删码组的多个失效数据块时,具体用于:根据至少一个第一数据节点的故障类型,结合本地存储的元数据信息,确定至少一个第一数据节点上来自同一纠删码组的多个失效数据块。
处理器60b在从除至少一个第一数据节点之外的其它数据节点中,选择用于存储多个失效数据块对应的重构数据块的多个第二数据节点时,具体用于:根据其它数据节点的第一状态信息,从其它数据节点中选择多个第二数据节点,第一状态信息至少包括数据节点上存储空间的使用状态。
处理器60b还用于:在向目标数据节点发送数据重构任务之前,根据多个第二数据节点的第二状态信息,从多个第二数据节点中确定目标数据节点,第二状态信息至少包括第二数据节点的网络状态;或者根据多个第二数据节点之间的通信距离,选择多个第二数据节点中与其它数据节点的平均通信距离符合设定要求的数据节点作为目标数据节点。
进一步地,处理器60b还用于:确定多个第二数据节点与多个失效数据块之间的对应关系,将对应关系发送给目标数据节点和/或其它第二数据节点,以使目标数据节点基于对应关系将重构出的数据块提供给对应的第二数据节点进行存储。
进一步地,处理器60b还用于:获取目标数据节点上报的第一失效数据块的信息,第一失效数据块是指目标数据节点重构失败或无法将对应重构数据块提供给对应第二数据节点的无效数据块;针对第一失效数据块,重新从除目标数据节点之外的其它第二数据节点中选择新的目标数据节点,并向新的目标数据节点发送数据重构任务,以指示新的目标数据节点重构出第一失效数据块。
进一步地,如图6所示,该电子设备还包括:通信组件60c、电源组件60d等其它组件。图6中仅示意性给出部分组件,并不意味着电子设备只包括图6所示组件。
这里需要说明的是:本实施例提供的节点设备可实现上述图2实施例中描述的技术方案,上述各模块或单元具体实现的原理可参见上述各方法实施例中的相应内容,此处不再赘述。
图7为本申请一示例性实施例提供的节点设备的结构示意图。如图7所示,该设备包括:存储器70a和处理器70b;存储器70a用于存储计算机程序,处理器70b与存储器70a耦合,用于执行计算机程序,以用于执行如下步骤:
接收数据重构任务,数据重构任务指示对至少一个第一数据节点上来自同一纠删码组的多个失效数据块进行重构,第一数据节点是分布式存储系统中发生故障的数据节点;从除至少一个第一数据节点之外的其它数据节点,获取对多个失效数据块进行重构所需的多个有效数据块;基于多个有效数据块对多个失效数据块进行重构,以得到多个重构数据块;将多个重构数据块对应提供给多个第二数据节点进行存储以完成数据重构任务,第二数据节点是从其它数据节点选择出的用于存储重构数据块的数据节点。
进一步地,数据重构任务中包含多个失效数据块所属纠删码组中各个数据块的位置信息,则处理器70b在从除至少一个第一数据节点之外的其它数据节点,获取对多个失效数据块进行重构所需的多个有效数据块时,具体用于:根据各个数据块的位置信息,结合纠删码组使用的编码方式,从其它数据节点获取对多个失效数据块进行重构所需的多个有效数据块。
进一步地,处理器70b在根据各个数据块的位置信息,结合纠删码组使用的编码方式,从其它数据节点获取对多个失效数据块进行重构所需的多个有效数据块时,具体用于:结合纠删码组使用的编码方式,确定重构每个失效数据块所需的K个有效数据块,对重构每个失效数据块所需的K个有效数据块进行去重处理,得到M个不同的有效数据块;根据各个数据块的位置信息,从其它数据节点上读取M个不同的有效数据块;K、M是大于等于2的正整数,且M≥K。
进一步地,该处理器70b还用于:在执行数据重构任务的过程中,记录重构失败或无法将其对应的重构数据块提供给对应第二数据节点的第一失效数据块的信息;将第一失效数据块的信息上报给分布式存储系统中的管控节点,以供管控节点针对第一失效数据块重新从其它第二数据节点中选择新的目标数据节点并指示新的目标数据节点重构出第一失效数据块。
进一步地,如图7所示,该电子设备还包括:通信组件70c、电源组件70d等其它组件。图7中仅示意性给出部分组件,并不意味着电子设备只包括图7所示组件。
这里需要说明的是:本实施例提供的节点设备可实现上述图3实施例中描述的技术方案,上述各模块或单元具体实现的原理可参见上述各方法实施例中的相应内容,此处不再赘述。
本申请一示例性实施例提供存储有计算机程序/指令的计算机可读存储介质,当计算机程序/指令被处理器执行时,致使处理器能够实现以上所述方法中的步骤,此处不再赘述。
本申请一示例性实施例提供一种计算机程序产品,包括计算机程序/指令,当计算机程序/指令被处理器执行时,致使处理器能够实现以上所述方法中的步骤,此处不再赘述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体 (transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (14)

1.一种分布式存储系统,其特征在于,包括:管控节点和多个数据节点,所述多个数据节点上存储有多个数据块,所述多个数据块属于至少一个纠删码组;
所述管控节点,用于在监测到发生故障的至少一个第一数据节点的情况下,确定所述至少一个第一数据节点上来自同一纠删码组的多个失效数据块;从其它数据节点中选择用于存储所述多个失效数据块对应的重构数据块的多个第二数据节点,向所述多个第二数据节点中的目标数据节点发送数据重构任务,以指示所述目标数据节点对所述多个失效数据块进行重构;
所述目标数据节点,用于在接收到所述数据重构任务的情况下,从其它数据节点获取对所述多个失效数据块进行重构所需的多个有效数据块,基于所述多个有效数据块对所述多个失效数据块进行重构,以得到多个重构数据块,并将所述多个重构数据块提供给对应的第二数据节点进行存储以完成数据重构任务。
2.一种数据重构方法,其特征在于,包括:
在监测到分布式存储系统中发生故障的至少一个第一数据节点的情况下,确定所述至少一个第一数据节点上来自同一纠删码组的多个失效数据块;
从除所述至少一个第一数据节点之外的其它数据节点中,选择用于存储所述多个失效数据块对应的重构数据块的多个第二数据节点;
向所述多个第二数据节点中的目标数据节点发送数据重构任务,以指示所述目标数据节点对所述多个失效数据块进行重构并将重构出的数据块提供给对应的第二数据节点进行存储。
3.根据权利要求2所述的方法,其特征在于,确定所述至少一个第一数据节点上来自同一纠删码组的多个失效数据块,包括:
根据所述至少一个第一数据节点的故障类型,结合本地存储的元数据信息,确定所述至少一个第一数据节点上来自同一纠删码组的多个失效数据块。
4.根据权利要求2所述的方法,其特征在于,从除所述至少一个第一数据节点之外的其它数据节点中,选择用于存储所述多个失效数据块对应的重构数据块的多个第二数据节点,包括:
根据其它数据节点的第一状态信息,从其它数据节点中选择多个第二数据节点,所述第一状态信息至少包括数据节点上存储空间的使用状态。
5.根据权利要求2所述的方法,其特征在于,在向所述多个第二数据节点中的目标数据节点发送数据重构任务之前,还包括:
根据所述多个第二数据节点的第二状态信息,从所述多个第二数据节点中确定所述目标数据节点,所述第二状态信息至少包括第二数据节点的网络状态;
或者
根据所述多个第二数据节点之间的通信距离,选择所述多个第二数据节点中与其它数据节点的平均通信距离符合设定要求的数据节点作为目标数据节点。
6.根据权利要求2所述的方法,其特征在于,还包括:
确定所述多个第二数据节点与所述多个失效数据块之间的对应关系,将所述对应关系发送给所述目标数据节点和/或其它第二数据节点,以使所述目标数据节点基于所述对应关系将重构出的数据块提供给对应的第二数据节点进行存储。
7.根据权利要求2-6任一项所述的方法,其特征在于,还包括:
获取所述目标数据节点上报的第一失效数据块的信息,所述第一失效数据块是指所述目标数据节点重构失败或无法将对应重构数据块提供给对应第二数据节点的无效数据块;
针对所述第一失效数据块,重新从除所述目标数据节点之外的其它第二数据节点中选择新的目标数据节点,并向新的目标数据节点发送数据重构任务,以指示新的目标数据节点重构出所述第一失效数据块。
8.一种数据重构方法,其特征在于,包括:
接收数据重构任务,所述数据重构任务指示对至少一个第一数据节点上来自同一纠删码组的多个失效数据块进行重构,所述第一数据节点是分布式存储系统中发生故障的数据节点;
从除所述至少一个第一数据节点之外的其它数据节点,获取对所述多个失效数据块进行重构所需的多个有效数据块;
基于所述多个有效数据块对所述多个失效数据块进行重构,以得到多个重构数据块;
将所述多个重构数据块对应提供给多个第二数据节点进行存储以完成数据重构任务,所述第二数据节点是从其它数据节点选择出的用于存储重构数据块的数据节点。
9.根据权利要求8所述的方法,其特征在于,所述数据重构任务中包含所述多个失效数据块所属纠删码组中各个数据块的位置信息,则从除所述至少一个第一数据节点之外的其它数据节点,获取对所述多个失效数据块进行重构所需的多个有效数据块,包括:
根据所述各个数据块的位置信息,结合所述纠删码组使用的编码方式,从其它数据节点获取对所述多个失效数据块进行重构所需的多个有效数据块。
10.根据权利要求9所述的方法,其特征在于,根据所述各个数据块的位置信息,结合所述纠删码组使用的编码方式,从其它数据节点获取对所述多个失效数据块进行重构所需的多个有效数据块,包括:
结合所述纠删码组使用的编码方式,确定重构每个失效数据块所需的K个有效数据块,对重构每个失效数据块所需的K个有效数据块进行去重处理,得到M个不同的有效数据块;
根据所述各个数据块的位置信息,从其它数据节点上读取所述M个不同的有效数据块;K、M是大于等于2的正整数,且M≥K。
11.根据权利要求8-10任一项所述的方法,其特征在于,所述方法的执行主体为所述多个第二数据节点中的目标数据节点,所述方法还包括:
在执行所述数据重构任务的过程中,记录重构失败或无法将其对应的重构数据块提供给对应第二数据节点的第一失效数据块的信息;
将所述第一失效数据块的信息上报给分布式存储系统中的管控节点,以供所述管控节点针对所述第一失效数据块重新从其它第二数据节点中选择新的目标数据节点并指示新的目标数据节点重构出所述第一失效数据块。
12.一种节点设备,其特征在于,包括:存储器和处理器;所述存储器用于存储计算机程序,所述处理器与所述存储器耦合,用于执行所述计算机程序,以用于实现权利要求2-7任一项所述方法中的步骤。
13.一种节点设备,其特征在于,包括:存储器和处理器;所述存储器用于存储计算机程序,所述处理器与所述存储器耦合,用于执行所述计算机程序,以用于实现权利要求8-11任一项所述方法中的步骤。
14.一种存储有计算机程序的计算机可读存储介质,其特征在于,当所述计算机程序被处理器执行时,致使所述处理器实现权利要求2-11任一项所述方法中的步骤。
CN202210454984.5A 2022-04-28 2022-04-28 分布式存储系统、数据重构方法、设备及存储介质 Active CN114595092B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210454984.5A CN114595092B (zh) 2022-04-28 2022-04-28 分布式存储系统、数据重构方法、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210454984.5A CN114595092B (zh) 2022-04-28 2022-04-28 分布式存储系统、数据重构方法、设备及存储介质

Publications (2)

Publication Number Publication Date
CN114595092A CN114595092A (zh) 2022-06-07
CN114595092B true CN114595092B (zh) 2022-09-20

Family

ID=81813314

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210454984.5A Active CN114595092B (zh) 2022-04-28 2022-04-28 分布式存储系统、数据重构方法、设备及存储介质

Country Status (1)

Country Link
CN (1) CN114595092B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117687564A (zh) * 2022-09-05 2024-03-12 华为云计算技术有限公司 一种数据存储方法、装置及相关设备

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1605219A (zh) * 2001-10-19 2005-04-06 美商内数位科技公司 支持混合自动重复请求的无线通信系统的媒体存取控制架构
CN103034567A (zh) * 2012-12-06 2013-04-10 华为技术有限公司 发现并修复损坏数据的装置和方法
CN103607304A (zh) * 2013-11-21 2014-02-26 中国人民解放军国防科学技术大学 一种基于纠删码的失效数据线形修复方法
CN103645861A (zh) * 2013-12-03 2014-03-19 华中科技大学 一种纠删码集群中失效节点的重构方法
CN103729151A (zh) * 2014-01-16 2014-04-16 中国人民解放军国防科学技术大学 一种基于改进型纠删码的失效数据修复方法
CN105930232A (zh) * 2016-05-12 2016-09-07 南京大学 一种利用网络拓扑信息的简单再生码修复方法
CN109343998A (zh) * 2018-10-09 2019-02-15 中国人民解放军国防科技大学 一种基于纠删码的全分布修复方法
CN110457161A (zh) * 2019-07-26 2019-11-15 成都信息工程大学 一种高效高可靠的大数据存储系统、方法、计算机程序
CN110597655A (zh) * 2019-06-26 2019-12-20 中大编码有限公司 一种迁移与基于纠删码的重构相耦合的快速预知修复方法和实现
CN110750382A (zh) * 2019-09-18 2020-02-04 华中科技大学 用于提高数据修复性能的最小存储再生码编码方法及系统
CN112667159A (zh) * 2020-12-25 2021-04-16 深圳创新科技术有限公司 一种基于纠删码的数据并行重构方法及系统
CN112783688A (zh) * 2021-02-10 2021-05-11 上海交通大学 一种基于可用分区级的纠删码数据恢复方法及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106708651B (zh) * 2016-11-16 2020-09-11 北京三快在线科技有限公司 基于纠删码的部分写入方法及装置、存储介质、设备
CN110168505B (zh) * 2018-07-10 2022-10-21 深圳花儿数据技术有限公司 分布式存储系统的数据修复方法及存储介质
CN110178122B (zh) * 2018-07-10 2022-10-21 深圳花儿数据技术有限公司 分布式存储系统的数据同步修复方法及存储介质
US11609820B2 (en) * 2019-07-31 2023-03-21 Dell Products L.P. Method and system for redundant distribution and reconstruction of storage metadata

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1605219A (zh) * 2001-10-19 2005-04-06 美商内数位科技公司 支持混合自动重复请求的无线通信系统的媒体存取控制架构
CN103034567A (zh) * 2012-12-06 2013-04-10 华为技术有限公司 发现并修复损坏数据的装置和方法
CN103607304A (zh) * 2013-11-21 2014-02-26 中国人民解放军国防科学技术大学 一种基于纠删码的失效数据线形修复方法
CN103645861A (zh) * 2013-12-03 2014-03-19 华中科技大学 一种纠删码集群中失效节点的重构方法
CN103729151A (zh) * 2014-01-16 2014-04-16 中国人民解放军国防科学技术大学 一种基于改进型纠删码的失效数据修复方法
CN105930232A (zh) * 2016-05-12 2016-09-07 南京大学 一种利用网络拓扑信息的简单再生码修复方法
CN109343998A (zh) * 2018-10-09 2019-02-15 中国人民解放军国防科技大学 一种基于纠删码的全分布修复方法
CN110597655A (zh) * 2019-06-26 2019-12-20 中大编码有限公司 一种迁移与基于纠删码的重构相耦合的快速预知修复方法和实现
CN110457161A (zh) * 2019-07-26 2019-11-15 成都信息工程大学 一种高效高可靠的大数据存储系统、方法、计算机程序
CN110750382A (zh) * 2019-09-18 2020-02-04 华中科技大学 用于提高数据修复性能的最小存储再生码编码方法及系统
CN112667159A (zh) * 2020-12-25 2021-04-16 深圳创新科技术有限公司 一种基于纠删码的数据并行重构方法及系统
CN112783688A (zh) * 2021-02-10 2021-05-11 上海交通大学 一种基于可用分区级的纠删码数据恢复方法及装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
分布式存储系统中纠删码数据修复算法优化与实现;朱盼盼等;《计算机应用研究》;20200630;全文 *
去中心化存储下分布式低带宽多节点修复方法;李慧等;《小型微型计算机系统》;20200710(第07期);全文 *
基于纠删码的容错存储系统重构技术研究;关智允;《中国优秀硕士学位论文全文数据库(电子期刊)信息科技辑》;20220415;第2022年卷(第4期);全文 *

Also Published As

Publication number Publication date
CN114595092A (zh) 2022-06-07

Similar Documents

Publication Publication Date Title
CN108780386B (zh) 一种数据存储的方法、装置和系统
CN107844268B (zh) 一种数据分发方法、数据存储方法、相关装置以及系统
JP5381336B2 (ja) 管理プログラム、管理装置および管理方法
CN103631666B (zh) 数据冗余容错的适配管理设备、服务设备、系统及方法
WO2020027910A1 (en) Storage systems with peer data scrub
US10452315B2 (en) Block priority information
CN113535088B (zh) 存储设备、数据处理方法和存储系统
CN114595092B (zh) 分布式存储系统、数据重构方法、设备及存储介质
CN113051104B (zh) 基于纠删码的磁盘间数据恢复方法及相关装置
CN112783445A (zh) 数据存储方法、装置、系统、电子设备及可读存储介质
CN114746843A (zh) 针对已分化数据恢复配置的存储器健康跟踪
WO2020034695A1 (zh) 数据存储方法、数据恢复方法、装置、设备及存储介质
KR102146293B1 (ko) 분산 파일 시스템 복구 장치 및 방법
CN113687790A (zh) 数据重构方法、装置、设备及存储介质
CN104679623A (zh) 一种服务器硬盘的维护方法、系统及服务器监控设备
CN113296931A (zh) 一种资源的控制方法、系统、计算设备及存储介质
CN109840051B (zh) 一种存储系统的数据存储方法及装置
CN103324554A (zh) 备用系统设备、控制方法及其程序
CN114880165A (zh) 数据恢复方法及相关装置
CN114296891A (zh) 任务的调度方法、系统、计算设备、存储介质及程序产品
CN116414661B (zh) 分布式存储的固态硬盘处理方法和装置
CN109344012B (zh) 数据重构控制方法、装置和设备
CN104699564A (zh) 一种采用Raid0磁盘组服务器的自动恢复方法及装置
CN113051428A (zh) 一种摄像机前端存储备份的方法及装置
CN103685359B (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
GR01 Patent grant
GR01 Patent grant