CN115454711A - 一种分布式存储系统中纠删数据恢复的方法、装置及介质 - Google Patents
一种分布式存储系统中纠删数据恢复的方法、装置及介质 Download PDFInfo
- Publication number
- CN115454711A CN115454711A CN202211409870.5A CN202211409870A CN115454711A CN 115454711 A CN115454711 A CN 115454711A CN 202211409870 A CN202211409870 A CN 202211409870A CN 115454711 A CN115454711 A CN 115454711A
- Authority
- CN
- China
- Prior art keywords
- data
- recovered
- data block
- erasure
- restored
- 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
- 238000000034 method Methods 0.000 title claims abstract description 97
- 238000012937 correction Methods 0.000 title claims abstract description 56
- 238000011084 recovery Methods 0.000 claims abstract description 42
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 31
- 238000013507 mapping Methods 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 12
- 230000008569 process Effects 0.000 claims description 10
- 230000000875 corresponding effect Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种分布式存储系统中纠删数据恢复的方法、装置及介质,涉及分布式存储系统领域。包括:获取待恢复的数据块的分布位置以及正常数据块的数据;通过纠删插件、纠删插件对应的纠删算法并根据正常数据块的数据确定待恢复的数据块的数据;将待恢复的数据块的数据写入分布位置以便于对待恢复的对象进行恢复。由此可见,该方法中通过纠删插件和纠删算法实现了对待恢复的数据块的数据的恢复,进而实现了对待恢复的对象的恢复;此外,相比于之前的通过读取整对象的所有条带的数据计算纠删码恢复数据的方式,本申请的方法中以数据块为单位进行数据的恢复,提高数据的恢复效率。
Description
技术领域
本申请涉及分布式存储系统领域,特别是涉及一种分布式存储系统中纠删数据恢复的方法、装置及介质。
背景技术
在分布式存储系统中,存储池一般使用纠删池存储数据。纠删池即纠删码存储池,在实际存储数据时,将实际存储数据进行纠删码计算,然后将计算结果写入存储池。纠删算法一般会以纠删对象存储资源为单位把一个对象切割成k+m个块,表示存放在不同的对象存储资源(Object Storage Device,OSD)上,其中,k代表原始数据块、m代表校验块。
一个对象会被切分成多个条带进行存储;对象数据进行修改时,为了方便数据重构,一般会记录一个用户数据版本号。受限于前述两点,用户数据只能以对象为单位进行记录修改版本号信息,当发生磁盘故障引发数据重构时,只能通过读取整对象的所有条带的数据计算纠删码(Erasure coding,EC)才可以恢复数据。但是,若条带中存在被破坏的数据时,则无法获取到该条带上的数据,进而不能根据所有条带上的数据计算纠删码完成对对象的数据恢复。
由此可见,如何对对象数据进行恢复是本领域人员亟需解决的技术问题。
发明内容
本申请的目的是提供一种分布式存储系统中纠删数据恢复的方法、装置及介质,用于对对象数据进行恢复。
为解决上述技术问题,本申请提供一种分布式存储系统中纠删数据恢复的方法,包括:
获取待恢复的数据块的分布位置以及正常数据块的数据;
通过纠删插件、所述纠删插件对应的纠删算法并根据所述正常数据块的数据确定所述待恢复的数据块的数据;
将所述待恢复的数据块的数据写入所述分布位置以便于对待恢复的对象进行恢复。
优选地,所述获取待恢复的数据块的分布位置包括:
获取所述待恢复的数据块的编号、所述待恢复的数据块所在的条带的编号以及所述待恢复的数据块在对象存储资源上的物理分布位置。
优选地,所述通过纠删插件、所述纠删插件对应的纠删算法并根据所述正常数据块的数据确定所述待恢复的数据块的数据包括:
根据所述待恢复的数据块所在的所述条带的编号、所述物理分布位置获取预设数量的所述正常数据块;其中,所述预设数量的所述正常数据块的数量至少等于纠删码中原始数据块的数量;
通过所述纠删插件、所述纠删算法并根据所述预设数量的所述正常数据块的数量确定所述待恢复的数据块的数据。
优选地,所述待恢复的对象为多个;在获取所述物理分布位置之前,所述方法还包括:
分别获取各所述待恢复的对象与所述对象存储资源的映射关系;
根据所述映射关系确定各所述待恢复的对象所在的所述对象存储资源。
优选地,在所述获取待恢复的数据块的分布位置以及正常数据块的数据之前,所述方法还包括:
判断所述待恢复的数据对应的所述对象存储资源中是否存在发生故障的所述对象存储资源;
若是,则对所述发生故障的所述对象存储资源上电以便于对所述发生故障的所述对象存储资源进行数据恢复。
优选地,在所述获取待恢复的数据块的分布位置以及正常数据块的数据之前,所述方法还包括:
在确定出存在修改的所述对象存储资源的情况下,判断所述修改的所述对象存储资源是否为所述待恢复的数据块所在的所述对象存储资源;
若否,则更新所述待恢复的对象映射的所述对象存储资源中除所述待恢复的数据块所在的所述对象存储资源外的所述对象存储资源的版本号。
优选地,在所述将所述待恢复的数据块的数据写入所述分布位置以便于对待恢复的对象进行恢复之前,所述方法还包括:
在所述待恢复的对象对应的所述对象存储资源中存在写业务的情况下,判断是否在所述待恢复的数据块上进行所述写业务;
若是,则停止对所述待恢复的数据块进行所述写业务,进入所述将所述待恢复的数据块的数据写入所述分布位置以便于对待恢复的对象进行恢复的步骤;在对所述待恢复的对象完成恢复的情况下,则对所述待恢复的数据块进行所述写业务;
若否,则继续对所述待恢复的数据块进行所述写业务,并进入所述将所述待恢复的数据块的数据写入所述分布位置以便于对待恢复的对象进行恢复的步骤。
优选地,在所述将所述待恢复的数据块的数据写入所述分布位置之后,所述方法还包括:
判断所述待恢复的对象是否完成恢复;
若否,则返回所述获取待恢复的数据块的分布位置以及正常数据块的数据的步骤;
若是,则结束。
优选地,确定所述待恢复的对象完成恢复包括:
获取所述待恢复的对象所在的集群的状态和/或所述待恢复的对象中归置组的状态;
在所述集群的状态和/或所述归置组的状态为正常状态的情况下,确定所述待恢复的对象完成恢复。
优选地,在所述获取待恢复的数据块的分布位置以及正常数据块的数据之前,所述方法还包括:
对所述待恢复的对象进行标记;
对应地,确定所述待恢复的对象完成恢复包括:
自将所述待恢复的数据块的数据写入所述分布位置开始,判断预设时间内所述标记是否存在;
若否,则确定所述待恢复的对象完成恢复;
若是,则返回所述获取待恢复的数据块的分布位置以及正常数据块的数据的步骤。
优选地,获取所述待恢复的数据块所在的条带的编号包括:
通过Crush算法计算所述待恢复的数据块所在的所述条带的编号;
所述分别获取各所述待恢复的对象与所述对象存储资源的映射关系包括:
通过PGMap分别获取各所述待恢复的对象与所述对象存储资源的所述映射关系;
所述获取所述物理分布位置包括:
通过OSDMap获取所述物理分布位置。
优选地,所述纠删插件为临时积载组件插件或jerasure插件。
为了解决上述技术问题,本申请还提供一种分布式存储系统中纠删数据恢复的装置,包括:
获取模块,用于获取待恢复的数据块的分布位置以及正常数据块的数据;
确定模块,用于通过纠删插件、所述纠删插件对应的纠删算法并根据所述正常数据块的数据确定所述待恢复的数据块的数据;
写入模块,用于将所述待恢复的数据块的数据写入所述分布位置以便于对待恢复的对象进行恢复。
为了解决上述技术问题,本申请还提供一种分布式存储系统中纠删数据恢复的装置,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述的分布式存储系统中纠删数据恢复的方法的步骤。
为了解决上述技术问题,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的分布式存储系统中纠删数据恢复的方法的步骤。
本申请所提供的分布式存储系统中纠删数据恢复的方法,包括:获取待恢复的数据块的分布位置以及正常数据块的数据;通过纠删插件、纠删插件对应的纠删算法并根据正常数据块的数据确定待恢复的数据块的数据;将待恢复的数据块的数据写入分布位置以便于对待恢复的对象进行恢复。由此可见,该方法中通过纠删插件和纠删算法实现了对待恢复的数据块的数据的恢复,进而实现了对待恢复的对象的恢复;此外,相比于之前的通过读取整对象的所有条带的数据计算纠删码恢复数据的方式,本申请的方法中以数据块为单位进行数据的恢复,提高数据的恢复效率。
此外,本申请还提供一种分布式存储系统中纠删数据恢复的装置以及计算机可读存储介质,与上述提到的分布式存储系统中纠删数据恢复的方法具有相同或相对应的技术特征,效果同上。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种纠删码为4+1、条带单位4k的对象分布示意图;
图2为本申请实施例提供的一种分布式存储系统中纠删数据恢复的方法的流程图;
图3为本申请一实施例提供的一种对象故障场景示意图;
图4为本申请另一实施例提供的一种对象故障场景示意图;
图5为本申请的一实施例提供的分布式存储系统中纠删数据恢复的装置的结构图;
图6为本申请另一实施例提供的分布式存储系统中纠删数据恢复的装置的结构图;
图7为本申请实施例提供的另一种分布式存储系统中纠删数据恢复的方法的流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本申请保护范围。
本申请的核心是提供一种分布式存储系统中纠删数据恢复的方法、装置及介质,用于对对象数据进行恢复。
在分布式存储系统中,存储池一般使用纠删池存储数据。纠删池即纠删码存储池,在实际存储数据时,将实际存储数据进行纠删码计算,然后将计算结果写入存储池。纠删码是一种编码容错技术,最早在通信行业解决部分数据在传输过程中的损耗问题。其基本原理就是把传输的信号分段,加入一定的校验再让各段数据相互关联,即使在传输数据过程中丢失部分信号,接收端仍然可以通过算法将完整的信息计算出来。
在数据存储中,纠删码将数据分割成片段,把冗余数据块扩展和编码,并将其存储在不同的位置。从纠删码的基本形态看,它是k个数据块+ m个校验块的接口,其中k和m可以按照一定的规则设定,可以用公式n = k + m来表示。变量k代表原始数据块;变量m代表故障后添加的提供保护的额外或冗余符号的值;变量n代表纠删码过程后创建的符号的总值。当小于m个存储块(数据块或校验块)损坏的情况下,整体数据块可以通过计算剩余存储块上的数据得到,整体数据不会丢失。纠删码能够提供和副本相近的数据可靠性,并降低冗余数据的开销,整体上提高存储设备的可用性。但是,纠删码所带来的额外开销主要是大量计算和网络高负载。特别是在一个硬盘出现故障的情况下,重建数据非常消耗中央处理器(Central Processing Unit,CPU)资源,而且计算一个数据块时,需要读取大量数据并通过网络传输。
在分布式存储系统中,纠删码被广泛应用。分布式存储系统数据一般以对象为单位(大小一般为4M),纠删算法一般会以纠删条带为单位把一个对象切割成k+m个块,存放在不同的OSD上,如图1所示,图1为本申请实施例提供的一种纠删码为4+1、条带单位4k的对象分布示意图。由图1可知,一个4M的对象会被切分成多个条带进行存储;对象数据进行修改时,为了方便数据重构,一般会记录一个用户数据版本号。受限于前述两点,用户数据只能以对象为单位进行记录修改版本号信息,当发生磁盘故障引发数据重构时,只能通过读取整对象的所有条带的数据计算EC值才可以恢复数据。但是,若整条带中存在被损坏的数据时,则对对象的数据进行恢复。因此,本申请中主要通过纠删数据恢复工具,可以在一种超出故障阈的特殊场景下恢复用户数据。
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。图2为本申请实施例提供的一种分布式存储系统中纠删数据恢复的方法的流程图,如图2所示,该方法包括:
S10:获取待恢复的数据块的分布位置以及正常数据块的数据;
S11:通过纠删插件、纠删插件对应的纠删算法并根据正常数据块的数据确定待恢复的数据块的数据;
S12:将待恢复的数据块的数据写入分布位置以便于对待恢复的对象进行恢复。
以对象大小为4M、纠删码为k+m=4+2、条带长度为1M举例这种特殊场景。纠删池采用的重构方式为全量重构方式,修改了某个或某几个条带的数据时,发生重构时会读取整对象的收据。图3为本申请一实施例提供的一种对象故障场景示意图。如图3所示,假设对象被分成多个数据块,分别存储在osd.1、osd.2、osd.3、osd.4上,假设osd.3中有数据被破坏掉,在数据发生重构后,是可以根据osd.1、osd.2、osd.4上可以正常读取数据,但是由于osd.3中存在被损坏的数据,因此,osd.3的循环冗余校验(Cyclic Redundancy Check,CRC)校验数据失败,导致条带三不能够获取数据,此时,osd认为此对象不能恢复。根据纠删条带对齐写的特性,发生数据错误的条带必然没有被修改过,因此,所属条带三的数据理论上是正确的,虽然软件层面数据已无法恢复,但可以通过纠删算法计算出osd.3中被破坏的数据。
以图3为例,说明对被损坏的数据块进行数据恢复的过程。为了对待恢复的对象进行数据恢复,首先需要确定出待恢复的数据块的分布位置。待恢复的数据块即为被破坏的数据块,图3中,被破坏的数据块如阴影部分所示,位于osd.3上的条带三上。除阴影部分所示的被破坏的数据块,其他数据块均为正常数据块。获取正常数据块的数据,运行程序,加载纠删插件,将待恢复的数据块的分布位置、正常数据块的数据输入至纠删插件中,根据正常数据块的数据对待恢复的数据块的数据进行恢复。
运行纠删算法,根据正常数据块的数据计算出待恢复的数据块的数据,将计算出的数据写入待恢复的数据块的分布位置,重启osd进程后,使对象数据可以完全恢复。
本实施例所提供的分布式存储系统中纠删数据恢复的方法,包括:获取待恢复的数据块的分布位置以及正常数据块的数据;通过纠删插件、纠删插件对应的纠删算法并根据正常数据块的数据确定待恢复的数据块的数据;将待恢复的数据块的数据写入分布位置以便于对待恢复的对象进行恢复。由此可见,该方法中通过纠删插件和纠删算法实现了对待恢复的数据块的数据的恢复,进而实现了对待恢复的对象的恢复;此外,相比于之前的通过读取整对象的所有条带的数据计算纠删码恢复数据的方式,本实施例的方法中以数据块为单位进行数据的恢复,提高数据的恢复效率。
为了较准确地确定待恢复的数据块所在的位置,优选的实施方式是,获取待恢复的数据块的分布位置包括:
获取待恢复的数据块的编号、待恢复的数据块所在的条带的编号以及待恢复的数据块在对象存储资源上的物理分布位置。
对于待恢复的数据块的编号、待恢复的数据块所在的条带的编号的编写方式等不作限定,只要保证不同数据块的编号不同以及不同条带的编号不同即可。
本实施例所提供的方法中,通过获取待恢复的数据块的编号、待恢复的数据所在的条带的编号以及待恢复的数据块在对象存储资源上的物理分布位置,使得能够较精确地定位到待恢复的数据块分布的位置。
在根据正常数据块对待恢复数据块的数据进行恢复时,优选的实施方式是,通过纠删插件、纠删插件对应的纠删算法并根据正常数据块的数据确定待恢复的数据块的数据包括:
根据待恢复的数据块所在的条带的编号、物理分布位置获取预设数量的正常数据块;其中,预设数量的正常数据块的数量至少等于纠删码中原始数据块的数量;
通过纠删插件、纠删算法并根据预设数量的正常数据块的数量确定待恢复的数据块的数据。
为了能够对待恢复的数据块进行恢复,待恢复的数据块的数量不能大于校验块的数量m,在根据正常数据块的数据对待恢复的数据块进行数据恢复时,至少要获取k个正常的数据块。以上述的纠删码为4+2为例,K=4,如正常的数据块的数量为3个,3<4,无法根据正常的数据块对osd.3中被损坏的数据块进行数据恢复,如正常的数据块的数量为5个,5>4,则可以根据正常的数据块对osd.3中被损坏的数据块进行数据恢复。
本实施例所提供的根据正常数据块对待恢复的数据块的数据恢复的方法中,正常数据块的数量至少等于纠删码中的原始数据块的数量,尽可能地确保待待恢复的数据块的数据能够被恢复。
在实施中,待恢复的对象可能为多个,为了对各待恢复的对象的数据进行恢复,优选的实施方式是,在获取物理分布位置之前,分布式存储系统中纠删数据恢复的方法还包括:
分别获取各待恢复的对象与对象存储资源的映射关系;
根据映射关系确定各待恢复的对象所在的对象存储资源。
不同待恢复对象所分配的对象存储资源可能不同,即不同的待恢复对象与对象存储资源的映射关系不同。假设待恢复对象1分别对应osd1、osd2和osd3;而待恢复对象2分别对应osd2、osd3和osd4。各待恢复的对象与对象存储资源的映射关系是提前配置好的,根据映射关系即可确定各待恢复对象所在的对象存储资源。
本实施例所提供的存在多个待恢复的对象时,根据以前配置好的各待恢复对象与对象存储资源的映射关系,能够快速地找到各待恢复对象所在的对象存储资源。
在对待恢复的对象的数据进行恢复时,可能会存在故障的对象存储资源。在这种情况下,为了能够对待恢复的对象进行恢复,优选的实施方式是,在获取待恢复的数据块的分布位置以及正常数据块的数据之前,分布式存储系统中纠删数据恢复的方法还包括:
判断待恢复的数据对应的对象存储资源中是否存在发生故障的对象存储资源;
若是,则对发生故障的对象存储资源上电以便于对发生故障的对象存储资源进行数据恢复。
除了上述的存在故障的对象存储资源,实际中,也可能存在被修改的对象存储资源,在这种情况下,为了对待恢复的对象进行恢复,优选的实施方式是,在获取待恢复的数据块的分布位置以及正常数据块的数据之前,分布式存储系统中纠删数据恢复的方法还包括:
在确定出存在修改的对象存储资源的情况下,判断修改的对象存储资源是否为待恢复的数据块所在的对象存储资源;
若否,则更新待恢复的对象映射的对象存储资源中除待恢复的数据块所在的对象存储资源外的对象存储资源的版本号。
图4为本申请另一实施例提供的一种对象故障场景示意图。假设图4中osd.2中阴影部分的数据块代表修改写数据块,osd.3中阴影部分的数据块代表被破坏的数据块,osd.5、osd.6中阴影部分的数据块代表的是故障数据块。osd.2有数据块发生过修改写,osd.1、osd.2、osd.3、osd.4的版本号会+1,当osd.5、osd.6上电后,此对象会触发全量重构,即从osd.1、osd.2、osd.3、osd.4上依次读取4个条带的数据计算纠删值写入到osd.5、osd.6中。此时条带1、条带2、条带4都可以正常读取数据,但是由于osd.3中有数据被破坏掉,CRC校验数据失败,导致条带三不能获取数据,此时osd认为此对象不能恢复,成为unfounded对象。根据纠删条带对齐写的特性,发生数据错误的条带必然没有被修改过,osd.5、osd.6上电后,所属的条带三的数据理论上是正确的,虽然在软件层面数据已无法恢复,但可以通过纠删算法计算出osd.3中被破坏的数据。
本实施例所提供的考虑到存在故障数据块或存在修改数据块的情况下,对待恢复的数据恢复的方法,能够尽可能地确定对待恢复的对象完成数据恢复以及使得能够根据最新版本的数据块的数据对待恢复的数据块进行数据恢复。
在实施中,可能会出现写业务与数据恢复同时进行的情况,优选的实施方式是,在将待恢复的数据块的数据写入分布位置以便于对待恢复的对象进行恢复之前,分布式存储系统中纠删数据恢复的方法还包括:
在待恢复的对象对应的对象存储资源中存在写业务的情况下,判断是否在待恢复的数据块上进行写业务;
若是,则停止对待恢复的数据块进行写业务,进入将待恢复的数据块的数据写入分布位置以便于对待恢复的对象进行恢复的步骤;在对待恢复的对象完成恢复的情况下,则对待恢复的数据块进行写业务;
若否,则继续对待恢复的数据块进行写业务,并进入将待恢复的数据块的数据写入分布位置以便于对待恢复的对象进行恢复的步骤。
本实施例所提供的方法中,若写业务发生在待恢复的数据块上,则先对待恢复的数据块进行恢复,再对待恢复的数据块进行写业务;在写业务不是发生在待恢复的数据块上,数据恢复与写业务同时进行。为同时存在数据恢复以及写业务两种场景下提供了处理方式。
由于待恢复的对象可能为多个,为了保证待恢复的对象完成恢复,优选的实施方式是,在将待恢复的数据块的数据写入分布位置之后,分布式存储系统中纠删数据恢复的方法还包括:
判断待恢复的对象是否完成恢复;
若否,则返回获取待恢复的数据块的分布位置以及正常数据块的数据的步骤;
若是,则结束。
在实施中,确定待恢复的对象完成恢复包括:
获取待恢复的对象所在的集群的状态和/或待恢复的对象中归置组的状态;
在集群的状态和/或归置组的状态为正常状态的情况下,确定待恢复的对象完成恢复。
本实施例所提供的方法中,通过判断待恢复的对象是否完成恢复,若未完成,则继续对待恢复的对象进行数据恢复,尽可能地确保了待恢复的对象完成恢复。
为了直观了解到待恢复的对象是否完成数据恢复,优选的实施方式是,在获取待恢复的数据块的分布位置以及正常数据块的数据之前,分布式存储系统中纠删数据恢复的方法还包括:
对待恢复的对象进行标记;
对应地,确定待恢复的对象完成恢复包括:
自将待恢复的数据块的数据写入分布位置开始,判断预设时间内标记是否存在;
若否,则确定待恢复的对象完成恢复;
若是,则返回获取待恢复的数据块的分布位置以及正常数据块的数据的步骤。
对于标记形式不作限定,根据实际情况确定。如上文中描述的,条带三不能获取数据,此时osd认为此对象不能恢复,成为unfounded对象。当对象完成恢复时,unfounded消失,则认为待恢复的对象完成恢复。
本实施例所提供的通过标记的方式确定待恢复的对象是否完成数据恢复,通过标记使得用户能够直观了解到待恢复的对象的数据恢复完成情况。
在实施中,为了对待恢复的数据块的精确的定位,优选的实施方式是,获取待恢复的数据块所在的条带的编号包括:
通过Crush算法计算待恢复的数据块所在的条带的编号;
分别获取各待恢复的对象与对象存储资源的映射关系包括:
通过PGMap分别获取各待恢复的对象与对象存储资源的映射关系;
获取物理分布位置包括:
通过OSDMap获取物理分布位置。
OSDMap 是 Ceph 集群中所有 OSD 的信息,所有 OSD 状态的改变如进程退出,OSD的加入和退出或者OSD的权重的变化都会反映到这张 Map 上。PGMap 是由 Monitor 维护的所有归置组(Placement Group,PG)的状态,每个 OSD 都会掌握自己所拥有的 PG 状态。通过PGMap可以获取到各待恢复的对象与对象存储资源的映射关系;通过OSDMap可以获取到待恢复的数据块的物理分布位置。
由于临时积载组件(Interim Stowage Assembly,ISA)插件和jerasure插件为常用的纠删插件,因此,本实施例中这两种纠删插件中的任意一种插件作为对象数据的恢复的工具。
在上述实施例中,对于分布式存储系统中纠删数据恢复的方法进行了详细描述,本申请还提供分布式存储系统中纠删数据恢复的装置对应的实施例。需要说明的是,本申请从两个角度对装置部分的实施例进行描述,一种是基于功能模块的角度,另一种是基于硬件的角度。
图5为本申请的一实施例提供的分布式存储系统中纠删数据恢复的装置的结构图。本实施例基于功能模块的角度,包括:
获取模块10,用于获取待恢复的数据块的分布位置以及正常数据块的数据;
确定模块11,用于通过纠删插件、纠删插件对应的纠删算法并根据正常数据块的数据确定待恢复的数据块的数据;
写入模块12,用于将待恢复的数据块的数据写入分布位置以便于对待恢复的对象进行恢复。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
本实施例所提供的分布式存储系统中纠删数据恢复的装置,通过获取模块获取待恢复的数据块的分布位置以及正常数据块的数据;在确定模块中,通过纠删插件、纠删插件对应的纠删算法并根据正常数据块的数据确定待恢复的数据块的数据;通过写入模块将待恢复的数据块的数据写入分布位置以便于对待恢复的对象进行恢复。由此可见,该装置中通过纠删插件和纠删算法实现了对待恢复的数据块的数据的恢复,进而实现了对待恢复的对象的恢复;此外,相比于之前的通过读取整对象的所有条带的数据计算纠删码恢复数据的方式,本实施例的装置中以数据块为单位进行数据的恢复,提高数据的恢复效率。
图6为本申请另一实施例提供的分布式存储系统中纠删数据恢复的装置的结构图。本实施例基于硬件角度,如图6所示,分布式存储系统中纠删数据恢复的装置包括:
存储器20,用于存储计算机程序;
处理器21,用于执行计算机程序时实现如上述实施例中所提到的分布式存储系统中纠删数据恢复的方法的步骤。
本实施例提供的分布式存储系统中纠删数据恢复的装置可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用数字信号处理器(Digital Signal Processor,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU;协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以集成有图形处理器(Graphics Processing Unit,GPU),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括人工智能(Artificial Intelligence,AI)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的分布式存储系统中纠删数据恢复的方法的相关步骤。另外,存储器20所存储的资源还可以包括操作系统202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作系统202可以包括Windows、Unix、Linux等。数据203可以包括但不限于上述所提到的分布式存储系统中纠删数据恢复的方法所涉及到的数据等。
在一些实施例中,分布式存储系统中纠删数据恢复的装置还可包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。
本领域技术人员可以理解,图6中示出的结构并不构成对分布式存储系统中纠删数据恢复的装置的限定,可以包括比图示更多或更少的组件。
本申请实施例提供的分布式存储系统中纠删数据恢复的装置,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如下方法:分布式存储系统中纠删数据恢复的方法,效果同上。
本申请还提供一种计算机可读存储介质对应的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例中记载的步骤。
可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请提供的计算机可读存储介质包括上述提到的分布式存储系统中纠删数据恢复的方法,效果同上。
为了使本技术领域的人员更好地理解本申请方案,下面结合附图7和具体实施方式对本申请作进一步的详细说明。图7为本申请实施例提供的另一种分布式存储系统中纠删数据恢复的方法的流程图。如图7所示,该方法包括:
S13:运行程序,加载纠删插件,输入缺失数据块编号及有效的数据块编号、缺失数据所在的条带;
S14:获取待恢复的对象与对象存储资源的映射关系;
S15:获取待恢复的对象在对象存储资源上物理分布位置;
S16:根据条带号、数据物理分布位置,获取待恢复的对象的有效的数据块,至少获取K个;
S17:运行纠删算法,计算出缺失位置的数据块的数据;
S18:将计算出来的数据写入缺失位置,并重启osd进程。
本实施例所提供的方法中,通过工具加载纠删算法的方式读取可用数据,并计算出缺失的条带中的数据块的数据并写入磁盘,使对象数据可以完全恢复。
以上对本申请所提供的一种分布式存储系统中纠删数据恢复的方法、装置及介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (15)
1.一种分布式存储系统中纠删数据恢复的方法,其特征在于,包括:
获取待恢复的数据块的分布位置以及正常数据块的数据;
通过纠删插件、所述纠删插件对应的纠删算法并根据所述正常数据块的数据确定所述待恢复的数据块的数据;
将所述待恢复的数据块的数据写入所述分布位置以便于对待恢复的对象进行恢复。
2.根据权利要求1所述的分布式存储系统中纠删数据恢复的方法,其特征在于,所述获取待恢复的数据块的分布位置包括:
获取所述待恢复的数据块的编号、所述待恢复的数据块所在的条带的编号以及所述待恢复的数据块在对象存储资源上的物理分布位置。
3.根据权利要求2所述的分布式存储系统中纠删数据恢复的方法,其特征在于,所述通过纠删插件、所述纠删插件对应的纠删算法并根据所述正常数据块的数据确定所述待恢复的数据块的数据包括:
根据所述待恢复的数据块所在的所述条带的编号、所述物理分布位置获取预设数量的所述正常数据块;其中,所述预设数量的所述正常数据块的数量至少等于纠删码中原始数据块的数量;
通过所述纠删插件、所述纠删算法并根据所述预设数量的所述正常数据块的数量确定所述待恢复的数据块的数据。
4.根据权利要求3所述的分布式存储系统中纠删数据恢复的方法,其特征在于,所述待恢复的对象为多个;在获取所述物理分布位置之前,所述方法还包括:
分别获取各所述待恢复的对象与所述对象存储资源的映射关系;
根据所述映射关系确定各所述待恢复的对象所在的所述对象存储资源。
5.根据权利要求4所述的分布式存储系统中纠删数据恢复的方法,其特征在于,在所述获取待恢复的数据块的分布位置以及正常数据块的数据之前,所述方法还包括:
判断所述待恢复的数据对应的所述对象存储资源中是否存在发生故障的所述对象存储资源;
若是,则对所述发生故障的所述对象存储资源上电以便于对所述发生故障的所述对象存储资源进行数据恢复。
6.根据权利要求5所述的分布式存储系统中纠删数据恢复的方法,其特征在于,在所述获取待恢复的数据块的分布位置以及正常数据块的数据之前,所述方法还包括:
在确定出存在修改的所述对象存储资源的情况下,判断所述修改的所述对象存储资源是否为所述待恢复的数据块所在的所述对象存储资源;
若否,则更新所述待恢复的对象映射的所述对象存储资源中除所述待恢复的数据块所在的所述对象存储资源外的所述对象存储资源的版本号。
7.根据权利要求2至6任意一项所述的分布式存储系统中纠删数据恢复的方法,其特征在于,在所述将所述待恢复的数据块的数据写入所述分布位置以便于对待恢复的对象进行恢复之前,所述方法还包括:
在所述待恢复的对象对应的所述对象存储资源中存在写业务的情况下,判断是否在所述待恢复的数据块上进行所述写业务;
若是,则停止对所述待恢复的数据块进行所述写业务,进入所述将所述待恢复的数据块的数据写入所述分布位置以便于对待恢复的对象进行恢复的步骤;在对所述待恢复的对象完成恢复的情况下,则对所述待恢复的数据块进行所述写业务;
若否,则继续对所述待恢复的数据块进行所述写业务,并进入所述将所述待恢复的数据块的数据写入所述分布位置以便于对待恢复的对象进行恢复的步骤。
8.根据权利要求7所述的分布式存储系统中纠删数据恢复的方法,其特征在于,在所述将所述待恢复的数据块的数据写入所述分布位置之后,所述方法还包括:
判断所述待恢复的对象是否完成恢复;
若否,则返回所述获取待恢复的数据块的分布位置以及正常数据块的数据的步骤;
若是,则结束。
9.根据权利要求8所述的分布式存储系统中纠删数据恢复的方法,其特征在于,确定所述待恢复的对象完成恢复包括:
获取所述待恢复的对象所在的集群的状态和/或所述待恢复的对象中归置组的状态;
在所述集群的状态和/或所述归置组的状态为正常状态的情况下,确定所述待恢复的对象完成恢复。
10.根据权利要求8所述的分布式存储系统中纠删数据恢复的方法,其特征在于,在所述获取待恢复的数据块的分布位置以及正常数据块的数据之前,所述方法还包括:
对所述待恢复的对象进行标记;
对应地,确定所述待恢复的对象完成恢复包括:
自将所述待恢复的数据块的数据写入所述分布位置开始,判断预设时间内所述标记是否存在;
若否,则确定所述待恢复的对象完成恢复;
若是,则返回所述获取待恢复的数据块的分布位置以及正常数据块的数据的步骤。
11.根据权利要求4所述的分布式存储系统中纠删数据恢复的方法,其特征在于,获取所述待恢复的数据块所在的条带的编号包括:
通过Crush算法计算所述待恢复的数据块所在的所述条带的编号;
所述分别获取各所述待恢复的对象与所述对象存储资源的映射关系包括:
通过PGMap分别获取各所述待恢复的对象与所述对象存储资源的所述映射关系;
所述获取所述物理分布位置包括:
通过OSDMap获取所述物理分布位置。
12.根据权利要求1所述的分布式存储系统中纠删数据恢复的方法,其特征在于,所述纠删插件为临时积载组件插件或jerasure插件。
13.一种分布式存储系统中纠删数据恢复的装置,其特征在于,包括:
获取模块,用于获取待恢复的数据块的分布位置以及正常数据块的数据;
确定模块,用于通过纠删插件、所述纠删插件对应的纠删算法并根据所述正常数据块的数据确定所述待恢复的数据块的数据;
写入模块,用于将所述待恢复的数据块的数据写入所述分布位置以便于对待恢复的对象进行恢复。
14.一种分布式存储系统中纠删数据恢复的装置,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至12任一项所述的分布式存储系统中纠删数据恢复的方法的步骤。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至12任一项所述的分布式存储系统中纠删数据恢复的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211409870.5A CN115454711A (zh) | 2022-11-11 | 2022-11-11 | 一种分布式存储系统中纠删数据恢复的方法、装置及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211409870.5A CN115454711A (zh) | 2022-11-11 | 2022-11-11 | 一种分布式存储系统中纠删数据恢复的方法、装置及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115454711A true CN115454711A (zh) | 2022-12-09 |
Family
ID=84295675
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211409870.5A Pending CN115454711A (zh) | 2022-11-11 | 2022-11-11 | 一种分布式存储系统中纠删数据恢复的方法、装置及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115454711A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105824721A (zh) * | 2016-03-14 | 2016-08-03 | 浙江宇视科技有限公司 | 一种数据存储系统及其存储纠删方法 |
CN110532126A (zh) * | 2019-07-26 | 2019-12-03 | 西安交通大学 | 纠删码存储系统数据快速恢复方法、装置及存储介质 |
CN111625394A (zh) * | 2020-05-27 | 2020-09-04 | 成都信息工程大学 | 基于纠删码的数据恢复方法、装置、设备及存储介质 |
CN112000512A (zh) * | 2020-08-14 | 2020-11-27 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据修复方法及相关装置 |
CN113051104A (zh) * | 2021-03-11 | 2021-06-29 | 重庆紫光华山智安科技有限公司 | 基于纠删码的磁盘间数据恢复方法及相关装置 |
CN113553215A (zh) * | 2021-06-25 | 2021-10-26 | 济南浪潮数据技术有限公司 | 一种基于环境信息的纠删码数据恢复优化方法及装置 |
-
2022
- 2022-11-11 CN CN202211409870.5A patent/CN115454711A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105824721A (zh) * | 2016-03-14 | 2016-08-03 | 浙江宇视科技有限公司 | 一种数据存储系统及其存储纠删方法 |
CN110532126A (zh) * | 2019-07-26 | 2019-12-03 | 西安交通大学 | 纠删码存储系统数据快速恢复方法、装置及存储介质 |
CN111625394A (zh) * | 2020-05-27 | 2020-09-04 | 成都信息工程大学 | 基于纠删码的数据恢复方法、装置、设备及存储介质 |
CN112000512A (zh) * | 2020-08-14 | 2020-11-27 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据修复方法及相关装置 |
CN113051104A (zh) * | 2021-03-11 | 2021-06-29 | 重庆紫光华山智安科技有限公司 | 基于纠删码的磁盘间数据恢复方法及相关装置 |
CN113553215A (zh) * | 2021-06-25 | 2021-10-26 | 济南浪潮数据技术有限公司 | 一种基于环境信息的纠删码数据恢复优化方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11003556B2 (en) | Method, device and computer program product for managing storage system | |
CN109725822B (zh) | 用于管理存储系统的方法、设备和计算机程序产品 | |
US9983959B2 (en) | Erasure coding of data within a group of storage units based on connection characteristics | |
CN110413439B (zh) | 用于检测数据的不完整写入的方法、设备和计算机可读介质 | |
CN103631721A (zh) | 一种隔离内存中坏块的方法及系统 | |
CN110333971B (zh) | Ssd坏块表备份方法、装置、计算机设备及存储介质 | |
CN114780298B (zh) | 文件数据处理方法、装置、计算机终端及存储介质 | |
CN115657965B (zh) | 一种元数据的配置方法、装置及介质 | |
CN111813753A (zh) | 保存文件的方法、恢复文件的方法、装置及终端设备 | |
CN113051104A (zh) | 基于纠删码的磁盘间数据恢复方法及相关装置 | |
WO2018113322A1 (zh) | 数据读取方法及设备 | |
CN113377569A (zh) | 用于恢复数据的方法、设备和计算机程序产品 | |
CN117111860B (zh) | 磁盘阵列降级时的io处理方法、装置及电子设备 | |
CN112463434B (zh) | 一种基于纠删码的数据重构方法、装置、设备及存储介质 | |
US8595271B1 (en) | Systems and methods for performing file system checks | |
CN111857603B (zh) | 数据处理方法及相关装置 | |
CN109426587B (zh) | 一种数据恢复方法及装置 | |
US20190354433A1 (en) | Parity log with by-pass | |
CN106933707B (zh) | 基于raid技术的数据存储设备数据恢复方法及系统 | |
CN115454711A (zh) | 一种分布式存储系统中纠删数据恢复的方法、装置及介质 | |
CN110729014A (zh) | Ssd存储擦除计数表备份的方法、装置、计算机设备及存储介质 | |
CN115454343A (zh) | 一种基于raid芯片的数据处理方法、装置及介质 | |
CN111506450A (zh) | 用于数据处理的方法、设备和计算机程序产品 | |
CN115562593A (zh) | 一种异常raid成员盘处理方法、装置及介质 | |
CN114003172A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20221209 |
|
RJ01 | Rejection of invention patent application after publication |