CN115098295A - 数据局部恢复方法、设备及存储介质 - Google Patents
数据局部恢复方法、设备及存储介质 Download PDFInfo
- Publication number
- CN115098295A CN115098295A CN202210764325.1A CN202210764325A CN115098295A CN 115098295 A CN115098295 A CN 115098295A CN 202210764325 A CN202210764325 A CN 202210764325A CN 115098295 A CN115098295 A CN 115098295A
- Authority
- CN
- China
- Prior art keywords
- data
- matrix
- block
- blocks
- local
- 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
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/1008—Adding 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/1048—Adding 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
- G06F11/1056—Updating check bits on partial write, i.e. read/modify/write
-
- 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/1479—Generic software techniques for error detection or fault masking
- G06F11/1489—Generic software techniques for error detection or fault masking through recovery blocks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Error Detection And Correction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请实施例提供一种数据局部恢复方法、设备及存储介质。数据集的任一数据组中的全局校验块以及局部校验块,通过对数据块进行编码得到,可在数据组内任一数据块丢失时,根据余下的数据块、全局以及局部校验块,对该数据块进行恢复。当局部校验块丢失时,可根据数据组内的数据块,对其进行恢复。其中,局部校验块包含全局校验块的编码信息,可在全局校验块丢失时,根据数据块以及局部校验块对全局校验块进行恢复,实现了针对数据组内任一对象块的局部恢复。数据集的局部校验块之和,与数据集的全局校验块线性无关,数据集中丢失的对象块的数量大于全局校验块的数量时,可对丢失的对象块进行恢复,进一步提升了数据局部恢复方法的容错能力。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据局部恢复方法、设备及存储介质。
背景技术
纠删码(Erasure Code)是一种编码容错技术,用于在部分数据丢失时,恢复原始数据。纠删码可在保证可靠性的同时占用更少的存储空间,因而被广泛地应用于分布式存储系统中。相较于传统的副本式的数据恢复方法,纠删码存在重建数据时读放大的问题。
目前,存在一种基于局部自恢复纠删码(Local Repair Code,LRC)进行局部数据恢复的方法。但是,现有的局部修复的方案仍旧无法在具有较高容错能力的情况下对全局校验块进行局部恢复。因此,有待提出一种新的解决方案。
发明内容
本申请的多个方面提供一种数据局部恢复方法、设备及存储介质,用以对全局校验块进行局部恢复,并提升数据局部恢复方法的容错能力。
本申请实施例还提供一种数据局部恢复方法,包括:确定数据集包含的多个数据组,任一数据组中的对象块包括:数据块、全局校验块以及局部校验块;响应对所述数据组中的任一目标对象块的恢复请求,根据所述数据组中的剩余可读的对象块,对所述目标对象块进行恢复;其中,所述数据组中,所述全局校验块以及所述局部校验块,通过对所述数据块进行编码得到,所述局部校验块包含所述全局校验块的编码信息;所述数据集中的局部校验块之和,与所述数据集中的全局校验块线性无关。
可选地,所述方法还包括:响应对所述数据集中的第一数量的对象块的恢复请求,根据所述数据集中剩余可读的对象块,对所述第一数量的对象块进行恢复;其中,所述第一数量大于所述数据集中的全局校验块的数量。
可选地,响应对所述数据组中的任一目标对象块的恢复请求,根据所述数据组中的剩余可读的对象块之前,还包括:确定r+1维的第一矩阵,r为正整数;根据所述第一矩阵中的任意r个数据行,对应生成r个衍生行;所述r个衍生行用于编码得到r个局部校验块,任一衍生行包含用于生成所述衍生行的数据行中的元素;采用所述r个衍生行替换所述第一矩阵中除所述任意r个数据行之外的数据行,得到第二矩阵;在所述第二矩阵后侧接单位矩阵,得到编码矩阵;采用所述编码矩阵对所述数据集中的数据块进行编码,得到全局校验块以及所述多个数据组各自对应的局部校验块。
可选地,所述编码矩阵中,任意r+1列为列满秩矩阵。
可选地,所述第一矩阵为柯西矩阵。
可选地,根据所述第一矩阵中的任意r个数据行,对应生成r个衍生行,包括:根据所述r个数据行中不同列的元素在矩阵计算时与数据组的对应关系,在所述r个数据行中不同列的元素上添加附加项,得到所述r个衍生行;其中,同一衍生行中,附加项添加与任一数据组对应的列的元素上;不同衍生行中,添加附加项的元素对应的数据组不同。
可选地,根据所述r个数据行中不同列的元素在矩阵计算时与数据组的对应关系,在所述r个数据行中不同列的元素上添加附加项,包括:针对所述r个数据行中的第i个数据行中的第j列的元素,根据所述第一矩阵的r+1行中第j列的元素,确定所述第i个数据行中的第j列的元素的附加项;在所述第i个数据行中的第j列的元素上,添加所述附加项,得到所述第i个数据行对应的衍生行,i,j为正整数。
可选地,所述r个衍生行中的元素的求和结果,等于对第一矩阵中的第r+1行中的元素求和的结果;其中,所述求和包括元素的异或运算。
本申请实施例提供的局部数据恢复方法中,当存在对数据集中的任一数据组中的任一目标对象块的恢复请求时,可根据数据组中的剩余可读的对象块,对目标对象块进行恢复。该任一目标对象块可以是数据组中的数据块、全局校验块或者局部校验块。其中,全局校验块以及局部校验块,通过对数据块进行编码得到,可在数据组内任一数据块丢失时,根据余下的数据块、全局校验块以及局部校验块,对该数据块进行恢复。其中,局部校验块包含全局校验块的编码信息,可在全局校验块丢失时,根据数据块以及局部校验块对全局校验块进行恢复。当局部校验块丢失时,可根据数据组内数据块,对局部校验块进行恢复。从而,实现了针对数据组内任一对象块的局部恢复。其中,数据集中的局部校验块之和,与数据集中的全局校验块线性无关,因此,可在数据集中丢失的对象块的数量大于全局校验块的数量时,对丢失的对象块进行恢复。进而,可在实现对组内任一对象块进行局部恢复的同时,提升了数据局部恢复方法的容错能力。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请一示例性实施例提供的数据局部恢复方法的流程示意图;
图2为r个数据分组对应的全局校验块以及局部校验块的示意图;
图3为2个数据分组对应的全局校验块以及局部校验块的示意图;
图4为3个数据分组对应的全局校验块以及局部校验块的示意图;
图5为本申请一示例性实施例提供的服务器的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种,但是不排除包含至少一种的情况。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。
目前,存在一些基于局部自恢复纠删码(Local Repair Code,LRC)进行局部数据恢复的方法。在这种方法中,将数据分为多个组(group),组内数据可生成局部校验块当组内丢失数据块的个数不超过组内局部校验块个数时,可通过组内的其他数据块对丢失的数据块进行恢复,从而减少数据块恢复时的流量。
在一种典型的方法中,全局校验块P由所有数据块D运算得到;局部校验块L,由组内的数据块运算得到。其中,局部校验块L,可通过局部方式恢复。但是,其全局校验块并不具有局部恢复性质,即需要读取所有数据块D,恢复全局校验块P。
在另一种典型的方法中,全局校验块P由所有数据块D,运算得到;局部校验块L,由组内的数据块运算得到。不同的是,构造编码矩阵时,需要使得所有局部校验块的和与所有全局校验块的和结果一致。进而,当全局校验块丢失时,可以通过局部校验块实现全局校验块的恢复,而不需要读取所有数据块D。但是,这种方式牺牲了LRC的容错能力,即只能容忍任意r个块丢失,即:当丢失的块的数量小于或者等于r时,丢失的块可被恢复。其中,r为全局校验块个数,r为正整数。
针对现有技术中的局部修复方法无法兼顾容错能力与对任一丢失的块进行局部恢复技术问题,在本申请一些实施例中,提供了一种解决方案,以下结合附图,详细说明本申请各实施例提供的技术方案。
图1是本申请一示例性实施例提供的数据局部恢复方法的流程示意图,该方法可包括如图1所示的步骤:
步骤101、确定数据集包含的多个数据组,任一数据组中的对象块包括:数据块、全局校验块以及局部校验块;其中,所述数据组中,所述全局校验块以及所述局部校验块,通过对所述数据块进行编码得到,所述局部校验块包含所述全局校验块的编码信息。
步骤102、响应对所述数据组中的任一目标对象块的恢复请求,根据所述数据组中的剩余可读的对象块,对所述目标对象块进行恢复;所述数据集中的局部校验块之和,与所述数据集中的全局校验块线性无关。
本实施例的执行主体可以是存储有数据的服务器,该服务器可以是常规服务器、云服务器、云上的弹性计算实例或者虚拟化数据中心等等,本实施例不做限制。其中,服务器上运行有数据存储应用,用于对接收到的数据进行存储并管理。
在本实施例中,服务器上的数存储应用,可基于纠删码,对丢失的数据进行局部修复,以降低数据修复所需的成本。
其中,数据集包含多个数据组,用于在数据故障恢复时进行局部计算。每个数据组包含的数据块的数量,可根据需求进行划分,本实施例不做限制。其中,每个数据组可包含多个对象块,该多个对象块可包括:数据块、全局校验块以及局部校验块(local repairparity)。
其中,待恢复的任一目标对象块,可以是数据块、全局校验块或者局部校验块中的任意一个。当数据组中任一对象块丢失时,可通过余下数据块对该丢失的对象块进行恢复。
其中,全局校验块,通过对数据集中的所有数据块(即全局数据块)进行编码得到,可用于在全局的任一数据块丢失时,恢复全局的数据块。即,对任一数据组而言,当该数据组中的任一数据块丢失时,可通过该数据组中的全局数据块,实现对该丢失的数据块进行局部恢复。任一数据组中的局部校验块,根据该数据组内的数据块编码得到,并可通过局部校验块的编码过程进行设计,使得局部校验块包含全局校验块的编码信息。进而,该数据组对应的全局校验块丢失时,可通过全局校验块中所在数据组中的数据块以及局部校验块对该全局校验块进行恢复。
其中,数据集包含多个数据组时,多个数据组可对应多个全局校验块,多个局部校验块之和,与数据集中的全局校验块线性无关。即,多个局部校验块之和,可视作一个新的全局校验块,该新的全局校验块与数据集中原本具有的全局校验块线性无关。因此,当数据集中原本具有r个全局校验块时,可将多个局部校验块之和作为第r+1个全局校验块,从而能够在数据集中出现任意r+1个对象块丢失时,采用余下的对象块,对该r+1个对象块进行数据恢复。
在此基础上,可选地,服务器可响应对数据集中的第一数量的对象块的恢复请求,根据数据集中剩余可读的对象块,对第一数量的对象块进行恢复。其中,第一数量大于数据集中的全局校验块的数量。通常,该第一数量,为全局校验块的数量加一。即,数据集中具有r个全局校验块时,可容忍数据集中出现任意r+1个对象块丢失时,采用余下的对象块,对该r+1个对象块进行数据恢复。
本实施例中,当存在对数据集中的任一数据组中的任一目标对象块的恢复请求时,可根据数据组中的剩余可读的对象块,对目标对象块进行恢复。该任一目标对象块可以是数据组中的数据块、全局校验块或者局部校验块。其中,全局校验块以及局部校验块,通过对数据块进行编码得到,可在数据组内任一数据块丢失时,根据余下的数据块、全局校验块以及局部校验块,对该数据块进行恢复。其中,局部校验块包含全局校验块的编码信息,可在全局校验块丢失时,根据数据块以及局部校验块对全局校验块进行恢复。当局部校验块丢失时,可根据数据组内数据块,对局部校验块进行恢复。从而,实现了针对数据组内任一对象块的局部恢复。其中,数据集中的局部校验块之和,与数据集中的全局校验块线性无关,因此,可在数据集中丢失的对象块的数量大于全局校验块的数量时,对丢失的对象块进行恢复。进而,可在实现对组内任一对象块进行局部恢复的同时,提升了数据局部恢复方法的容错能力。
其中,执行数据恢复之前,服务器可基于纠删码的原理,生成全局校验块以及局部校验块。其中,全局校验块以及局部校验块通过编码矩阵对数据集中的数据块进行编码得到。以下将介绍编码矩阵的可选生成方式。
假设,数据集包含k个数据块,将数据集划分为g个数据组,假设全局校验块与局部校验块的数量均为r个,k=g*r。其中,每个数据组包含一个全局校验块时,g=r。
在一些可选的实施例中,服务器可确定r+1维的第一矩阵;其中第一矩阵的行数为r+1行,列数为k列。根据第一矩阵,可构造编码矩阵。其中,编码矩阵用于,采用矩阵的形式描述编码得到校验块的过程。
在构造编码矩阵的过程中,可根据第一矩阵中的任意r个数据行,对应生成r个衍生行,其中,该r个衍生行用于编码得到r个局部校验块,任一衍生行包含用于生成该衍生行的数据行中的元素,以使得编码得到的局部校验块包含全局校验块的编码信息。
确定r个衍生行之后,可采用该r个衍生行替换第一矩阵中除该任意r个数据行之外的数据行,得到第二矩阵。其中,采用“第一”、“第二”对被描述的矩阵进行限定,仅用于方便描述和区分,并不对矩阵构成其他限制。确定第二矩阵后,可在第二矩阵后侧接单位矩阵,得到编码矩阵。其中,单位矩阵从左上角到右下角的对角线(称为主对角线)上的元素均为1,其余元素均为0,且单位矩阵为满秩矩阵。在本实施例中,单位矩阵中为1的元素,用于表示待编码的校验块。在编码矩阵中,与第一矩阵中的原始数据行位于同一行的元素1,用于计算全局校验块,与衍生数据行位于同一行的元素1,用于计算局部校验块。
构造编码矩阵后,可采用编码矩阵对数据集中的数据块进行编码,得到全局校验块以及多个数据组各自对应的局部校验块。以下将具体进行说明。
可选地,在本实施例中,可设置编码的目标为生成r+1个线性无关的全局校验块。r+1个全局校验块中,存在一个全局校验块由r个局部校验块求和得到。在生成衍生行之前,可对第一矩阵进行设计,以使得在第一矩阵后侧添加r+1个全局校验块对应的单位矩阵得到新的矩阵后,从该新的矩阵中取出的任意r+1列形成的矩阵为列满秩矩阵,从而使得该新的矩阵中的任意r+1列是线性独立的。从而,当k个数据块与r+1个全局校验块中,存在任意r+1个块丢失时,可通过剩余块进行修复。
在一些实施例中,第一矩阵可以实现为柯西矩阵(Cauchy matrix),r*g维的柯西矩阵后接r*r维的单位矩阵时,可使得任意r+1列形成的矩阵为列满秩矩阵。
上述r+1行的第一矩阵中,任意r个数据行可用于计算r个全局校验块,余下1个数据行可用于计算g个数据组各自的局部校验块。可选地,可根据余下1个数据行,生成r个衍生行,r个衍生行与g个数据组对应。基于r个数据行以及r个衍生行,可得到调整后的第二矩阵。
其中,为保证第二编码矩阵后接单位矩阵后与第一矩阵后接单位矩阵后具有相同的线性独立特性,可使得第二矩阵中的r个衍生行之和,与第一矩阵中余下1个数据行之和相同。
可选地,可根据第一矩阵中的r个数据行中不同列的元素在矩阵计算时与数据组的对应关系,在该r个数据行中不同列的元素上添加附加项,得到该r个衍生行。其中,同一衍生行中,附加项添加与任一数据组对应的列的元素上;不同衍生行中,添加附加项的元素对应的数据组不同。其中,该附加项,需使得r个衍生行中的元素之和,与该余下1个数据行之和相同。
例如,可对某一数据行中,与数据组g1对应的元素进行局部调整,得到数据组g1对应的衍生数据行。又例如,可对另一数据行中,与数据组g2对应的元素进行局部调整,得到数据组g2对应的衍生数据行。该r个衍生数据行,分别用于计算g个数据组各自对应的局部校验块,得到r个局部校验块。
在以下的实施例中,为便于描述和计算,采用第一矩阵中的第1~r行计算r个全局校验块,采用第r+1行计算r个局部校验块。在生成r个衍生行时,可在第一矩阵中的每一行的基础上添加附加项,得到r个衍生行。
其中,附加项满足如下条件:
1、同一衍生行中,附加项添加与任一数据组对应的元素上;不同衍生行中,添加附加项的元素对应的数据组不同。
2、对r个衍生行中的元素求和的结果,等于对第一矩阵中的第r+1行中的元素求和的结果;其中,该求和是指异或运算。
例如,针对由第1~g个数据构成的第一个数据组,可在第一矩阵中的第一行中与第一个数据组对应的元素上添加附加项,其他元素不变,得到第二矩阵中的第二行。该第二行,可用于编码第一个数据组对应的局部校验块。又例如,针对由第g+1~2g个数据构成的第二个数据组,可在第一矩阵中的第二行中与第二个数据组对应的元素上添加附加项,其他元素不变,得到第二矩阵中的第四行。该第四行,可用于编码第二个数据组对应的局部校验块。以此类推,针对由第(r-1)g+1~rg个数据构成的第g个数据组,可在第一矩阵中的第2r-1行中与第g个数据组对应的元素上添加附加项,其他元素不变,得到第二矩阵中的第2r行。该第2r行,可用于编码第g个数据组对应的局部校验块。
以下将结合具体计算过程进行进一步说明。
确定维度为(r+1)*k的第一矩阵:
[aij:1≤i≤r+1,1≤j≤k](r+1)*k
展开为:
第一矩阵中的第1~r行可用于编码生成r个全局校验块,第r+1行用于编码生成r个局部校验块。基于第一矩阵,可生成2r*k维的第二矩阵。第二矩阵包含第一矩阵中的第1~r行以及r个衍生行,其中,衍生行分布在第二矩阵中的第2行、第4行、…、第2r行。在进行编码时,可在第二矩阵后侧添加2r*k的单位矩阵,得到编码矩阵H,编码矩阵H中的任意r+1列为行满秩矩阵。
其中,dj为附加项,用于对第一矩阵中的第1~r行进行局部调整,以得到r个衍生行。
其中,d1~dg添加在第一矩阵中的第1行中与第一个数据组对应的元素上。其中,dg+1~d2g添加在第一矩阵中的第2行中与第2个数据组对应的元素上。d(r-1)g+1~drg添加在第一矩阵中的第r行中与第g个数据组对应的元素上。即,满足了同一衍生行中,附加项添加与任一数据组对应的元素上;不同衍生行中,添加附加项的元素对应的数据组不同。
可选地,为使得对r个衍生行中的元素求和的结果,等于对第一矩阵中的第r+1行中的元素求和的结果,可设计该求和运算为异或运算,并根据r个数据行中的相同列的元素,计算该列对应的附加项。
可选地,以该r个数据行中的第i个数据行中的第j列的元素为例,可根据该第一矩阵的r+1行中第j列的元素,确定该第i个数据行中的第j列的元素的附加项。在第i个数据行中的第j列的元素上,添加该附加项,即可得到第i个数据行对应的衍生行。第i行第j列的附加项dj的计算过程如下:
在第一矩阵中不同数据组对应的元素上,添加对应的附加项,以生成局部校验块对应的r个衍生行。上述第二矩阵中,对第二行、第四行、…、第2r行求和(异或)操作得到:
h2+h4+...+h2r=ar+1,1+ar+1,2,...,ar+1,rg
即,该求和结果等于第一矩阵中的第r+1行中的元素的求和结果。从而,r个衍生行计算出的局部校验块之和,与r个全局校验块之间具有线性独立的关系。r个衍生行编码出的局部校验块之和,可视为一个新的全局校验块,该全局校验块与r个全局校验块之间线性无关,因而可容任意r+1个数据块的丢失。
基于上述方法构造得到的编码矩阵H与k个数据块形成的k维度的矩阵D进行矩阵计算,并使得H*D=0,即可得到全局校验块以及局部校验块。即:
基于上述公式,可确定P1、P2、P3…Pr,作为全局校验块。其中,L1、L2、L3…Lr与衍生行对应,可作为局部校验块。
对上述公式进行转化,全局校验块Pi可表示为:
其中,局部校验块Li表示为:
其中,k个数据块、r个全局校验块以及r个局部校验块,可被划分为r个数据组,即:
G1={D1,D2,...,Dg,L1,P1},
G2={Dg+1,Dg+2,...,D2g,L2,P2}
…
Gr={D(r-1)g+1,D(r-1)g+2,...,Drg,Lr,Pr}
其中,当任一数据组中,存在单个校验块丢失时,可通过组内的其他g+1个数据块进行数据恢复。其中,局部校验块L1、L2、…、Lr相加,可视为一个新的全局校验块Pr+1,由于L1、L2、…、Lr与P1、P2、…Pr、之间具线性独立的关系,因此P1、P2、P3、…、Pr、Pr+1之间线性独立。因此,当D1、D2、D3、…、Dk、P1、P2、…、Pr、L1、L2、…、Lr中,存在任意r+1个数据块丢失时,可根据剩余数据块恢复被丢失的数据块。
基于上述实施例,实现了一种高可靠性、高性能以及参数灵活的编码方式。其中,高可靠性是指,编码结果可满足任意r+1个块丢失时,数据可被恢复。高性能是指,分组中的任意单个块丢失时,均可以通过局部数据块进行恢复,降低了数据恢复过程中的读放大。其中,参数灵活是指,可满足数据块个数整除全局校验块个数,当数据块个数变化时,均可给出准确的编码矩阵的结构,满足多情况下的编码需求。
为进一步详细描述本申请的实施例,以下将以r实现为2,k实现为4为例进行说明。
假设数据集包含数据块D1、D2、D3以及D4。对数据集进行分组,得到包含D1、D2的数据组G1以及包含D3、D4的数据组G2。
确定第一矩阵:
对第一矩阵中的各行进行求和,得到dj:
采用第一矩阵和公式1计算得到的结果,构造第二矩阵,并在第二矩阵后接单位矩阵,得到编码矩阵:
基于上述公式2-1,计算第二矩阵中的第2行、第4行之和,得到:
h2+h4=a1,1+d1+a1,2+d2+a1,3+a1,4+a2,1+a2,2+a2,3+d3+a2,4+d4
=a1,1+(a1,1+a2,1+a3,1)+a1,2+(a1,2+a2,2+a3,2)+a1,3+a1,4+a2,1+a2,2+
+a2,3+(a1,3+a2,3+a3,3)+a2,4+(a1,4+a2,4+a3,4)
=a3,1+a3,2+a3,3+a3,4
即,第二矩阵中的第2行与第3行之和,等于第一矩阵中的第3行之和,使得编码矩阵中的任意3列满足线性无关特性。
接下来,采用数据块D1、D2、D3以及D4与上述编码矩阵进行矩阵运算,可得到全局校验块以及局部校验块:
其中,全局校验块Pi表示为:
其中,局部校验块Li表示为:
基于上述公式2-2以及公式2-3,可得到全局校验块P1、P2以及局部校验块L1、L2。
上述数据块D1、D2、D3以及D4、全局校验块P1、P2以及局部校验块L1、L2,可被划分为两个数据组:G1={D1,D2,L1,P1},G2={D3,D4,L2,P2}。
其中,当任一数据组中,存在单个校验块丢失时,可通过组内的其他3个数据块进行数据恢复。例如,当D1丢失时,可通过D2、L1、P1恢复D1。
其中,局部校验块L1、L2相加,可视为一个新的全局校验块P3,由于L1、L2之和与P1、P2之间具线性独立的关系,因此P1、P2、P3之间线性独立。因此,当D1、D2、D3、D4、P1、P2、L1、L2中,存在任意3个数据块丢失时,可根据剩余数据块恢复被丢失的数据块。
以下将以r实现为3,k实现为9为例进行说明。
假设数据集包含数据块D1、D2、D3、D4、D5、D6、D7、D8、D9。对数据集进行分组,得到包含D1、D2、D3的数据组G1、包含D4、D5、D6的数据组G2以及包含D7、D8、D9的数据组G3。
确定第一矩阵:
对第一矩阵中的各行进行求和,得到dj:
采用第一矩阵和公式1计算得到的结果,构造第二矩阵,并在第二矩阵后接单位矩阵,得到编码矩阵:
基于上述公式3-1,计算第二矩阵中的第二行、第四行、第六之和,得到:
h2+h4+h6=a4,1+a4,2+a4,3+a4,4+a4,4
即,第二矩阵中的第2行、第4行与第6行之和,等于第一矩阵中的第3行之和,使得编码矩阵中的任意3列满足线性无关特性。
接下来,采用数据块D1、D2、D3、D4、D5、D6、D7、D8、D9与上述编码矩阵进行矩阵运算,可得到全局校验块以及局部校验块:
其中,全局校验块Pi表示为:
其中,局部校验块Li表示为:
基于上述公式3-2以及公式3-3,可得到全局校验块P1、P2、P3以及局部校验块L1、L2、L3。
上述数据块D1、D2、D3、D4、D5、D6、D7、D8、D9,全局校验块P1、P2、P3以及局部校验块L1、L2、L3,可被划分为三个数据组:G1={D1,D2,D3,L1,P1},G2={D4,D5,D6,L2,P2},G3={D7,D8,D9,L3,P3}。
其中,当任一数据组中,存在单个校验块丢失时,可通过组内的其他4个数据块进行数据恢复。例如,当D1丢失时,可通过D2、D3、L1、P1恢复D1。
其中,局部校验块L1、L2、L3相加,可视为一个新的全局校验块P4,由于L1、L2、L3之和与P1、P2、P3之间具线性独立的关系,因此P1、P2、P3、P4之间线性独立。因此,当D1、D2、D3、D4、D5、D6、D7、D8、D9、P1、P2、P3、L1、L2、L3中,存在任意4个数据块丢失时,可根据剩余数据块恢复被丢失的数据块。
需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤101至步骤104的执行主体可以为设备A;又比如,步骤101和102的执行主体可以为设备A,步骤103的执行主体可以为设备B;等等。
另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
图5示意了本申请一示例性实施例提供的服务器的结构示意图,该服务器适用于前述实施例提供的信息处理系统。如图5所示,该服务器包括:存储器501、处理器502以及通信组件503。
存储器501,用于存储计算机程序,并可被配置为存储其它各种数据以支持在服务器上的操作。这些数据的示例包括用于在服务器上操作的任何应用程序或方法的指令。
处理器502,与存储器501耦合,用于执行存储器501中的计算机程序,以用于:确定数据集包含的多个数据组,任一数据组中的对象块包括:数据块、全局校验块以及局部校验块;响应对所述数据组中的任一目标对象块的恢复请求,根据所述数据组中的剩余可读的对象块,对所述目标对象块进行恢复;其中,所述数据组中,所述全局校验块以及所述局部校验块,通过对所述数据块进行编码得到,所述局部校验块包含所述全局校验块的编码信息;所述数据集中的局部校验块之和,与所述数据集中的全局校验块线性无关。
可选地,处理器502还用于:响应对所述数据集中的第一数量的对象块的恢复请求,根据所述数据集中剩余可读的对象块,对所述第一数量的对象块进行恢复;其中,所述第一数量大于所述数据集中的全局校验块的数量。
可选地,处理器502在响应对所述数据组中的任一目标对象块的恢复请求,根据所述数据组中的剩余可读的对象块之前,还用于:确定r+1维的第一矩阵,r为正整数;根据所述第一矩阵中的任意r个数据行,对应生成r个衍生行;所述r个衍生行用于编码得到r个局部校验块,任一衍生行包含用于生成所述衍生行的数据行中的元素;采用所述r个衍生行替换所述第一矩阵中除所述任意r个数据行之外的数据行,得到第二矩阵;在所述第二矩阵后侧接单位矩阵,得到编码矩阵;采用所述编码矩阵对所述数据集中的数据块进行编码,得到全局校验块以及所述多个数据组各自对应的局部校验块。
可选地,所述编码矩阵中,任意r+1列为列满秩矩阵。
可选地,所述第一矩阵为柯西矩阵。
可选地,处理器502在根据所述第一矩阵中的任意r个数据行,对应生成r个衍生行时,具体用于:根据所述r个数据行中不同列的元素在矩阵计算时与数据组的对应关系,在所述r个数据行中不同列的元素上添加附加项,得到所述r个衍生行;其中,同一衍生行中,附加项添加与任一数据组对应的列的元素上;不同衍生行中,添加附加项的元素对应的数据组不同。
可选地,处理器502在根据所述r个数据行中不同列的元素在矩阵计算时与数据组的对应关系,在所述r个数据行中不同列的元素上添加附加项时,具体用于:针对所述r个数据行中的第i个数据行中的第j列的元素,根据所述第一矩阵的r+1行中第j列的元素,确定所述第i个数据行中的第j列的元素的附加项;在所述第i个数据行中的第j列的元素上,添加所述附加项,得到所述第i个数据行对应的衍生行,i,j为正整数。
可选地,所述r个衍生行中的元素的求和结果,等于对第一矩阵中的第r+1行中的元素求和的结果;其中,所述求和包括元素的异或运算。
进一步,如图5所示,该服务器还包括:电源组件504等其它组件。图5中仅示意性给出部分组件,并不意味着服务器只包括图5所示组件。
其中,存储器501可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
其中,通信组件503被配置为便于通信组件所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如WiFi,2G、3G、4G或5G,或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件可基于近场通信(NFC)技术、射频识别(RFID)技术、红外数据协会(IrDA)技术、超宽带(UWB)技术、蓝牙(BT)技术和其他技术来实现。
其中,电源组件504,用于为电源组件所在设备的各种组件提供电力。电源组件可以包括电源管理系统,一个或多个电源,及其他与为电源组件所在设备生成、管理和分配电力相关联的组件。
本实施例中,当存在对数据集中的任一数据组中的任一目标对象块的恢复请求时,可根据数据组中的剩余可读的对象块,对目标对象块进行恢复。该任一目标对象块可以是数据组中的数据块、全局校验块或者局部校验块。其中,全局校验块以及局部校验块,通过对数据块进行编码得到,可在数据组内任一数据块丢失时,根据余下的数据块、全局校验块以及局部校验块,对该数据块进行恢复。其中,局部校验块包含全局校验块的编码信息,可在全局校验块丢失时,根据数据块以及局部校验块对全局校验块进行恢复。当局部校验块丢失时,可根据数据组内数据块,对局部校验块进行恢复。从而,实现了针对数据组内任一对象块的局部恢复。其中,数据集中的局部校验块之和,与数据集中的全局校验块线性无关,因此,可在数据集中丢失的对象块的数量大于全局校验块的数量时,对丢失的对象块进行恢复。进而,可在实现对组内任一对象块进行局部恢复的同时,提升了数据局部恢复方法的容错能力。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被执行时能够实现上述方法实施例中可由服务器执行的各步骤。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种数据局部恢复方法,其特征在于,包括:
确定数据集包含的多个数据组,任一数据组中的对象块包括:数据块、全局校验块以及局部校验块;
响应对所述数据组中的任一目标对象块的恢复请求,根据所述数据组中的剩余可读的对象块,对所述目标对象块进行恢复;
其中,所述数据组中,所述全局校验块以及所述局部校验块,通过对所述数据块进行编码得到,所述局部校验块包含所述全局校验块的编码信息;所述数据集中的局部校验块之和,与所述数据集中的全局校验块线性无关。
2.根据权利要求1所述的方法,其特征在于,还包括:
响应对所述数据集中的第一数量的对象块的恢复请求,根据所述数据集中剩余可读的对象块,对所述第一数量的对象块进行恢复;
其中,所述第一数量大于所述数据集中的全局校验块的数量。
3.根据权利要求2所述的方法,其特征在于,响应对所述数据组中的任一目标对象块的恢复请求,根据所述数据组中的剩余可读的对象块之前,还包括:
确定r+1维的第一矩阵,r为正整数;
根据所述第一矩阵中的任意r个数据行,对应生成r个衍生行;所述r个衍生行用于编码得到r个局部校验块,任一衍生行包含用于生成所述衍生行的数据行中的元素;
采用所述r个衍生行替换所述第一矩阵中除所述任意r个数据行之外的数据行,得到第二矩阵;
在所述第二矩阵后侧接单位矩阵,得到编码矩阵;
采用所述编码矩阵对所述数据集中的数据块进行编码,得到全局校验块以及所述多个数据组各自对应的局部校验块。
4.根据权利要求3所述的方法,其特征在于,所述编码矩阵中,任意r+1列为列满秩矩阵。
5.根据权利要求3或4所述的方法,其特征在于,所述第一矩阵为柯西矩阵。
6.根据权利要求3所述的方法,其特征在于,根据所述第一矩阵中的任意r个数据行,对应生成r个衍生行,包括:
根据所述r个数据行中不同列的元素在矩阵计算时与数据组的对应关系,在所述r个数据行中不同列的元素上添加附加项,得到所述r个衍生行;
其中,同一衍生行中,附加项添加与任一数据组对应的列的元素上;不同衍生行中,添加附加项的元素对应的数据组不同。
7.根据权利要求5所述的方法,其特征在于,根据所述r个数据行中不同列的元素在矩阵计算时与数据组的对应关系,在所述r个数据行中不同列的元素上添加附加项,包括:
针对所述r个数据行中的第i个数据行中的第j列的元素,根据所述第一矩阵的r+1行中第j列的元素,确定所述第i个数据行中的第j列的元素的附加项;
在所述第i个数据行中的第j列的元素上,添加所述附加项,得到所述第i个数据行对应的衍生行,i,j为正整数。
8.根据权利要求7所述的方法,其特征在于,所述r个衍生行中的元素的求和结果,等于对第一矩阵中的第r+1行中的元素求和的结果;其中,所述求和包括元素的异或运算。
9.一种服务器,其特征在于,包括:存储器和处理器;
所述存储器用于存储一条或多条计算机指令;
所述处理器用于执行所述一条或多条计算机指令以用于:执行权利要求1-8任一项所述的方法中的步骤。
10.一种存储有计算机程序的计算机可读存储介质,其特征在于,计算机程序被处理器执行时能够实现权利要求1-8任一项所述的数据局部恢复方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210764325.1A CN115098295A (zh) | 2022-06-29 | 2022-06-29 | 数据局部恢复方法、设备及存储介质 |
PCT/CN2023/102218 WO2024001974A1 (zh) | 2022-06-29 | 2023-06-25 | 数据局部恢复方法、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210764325.1A CN115098295A (zh) | 2022-06-29 | 2022-06-29 | 数据局部恢复方法、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115098295A true CN115098295A (zh) | 2022-09-23 |
Family
ID=83295604
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210764325.1A Pending CN115098295A (zh) | 2022-06-29 | 2022-06-29 | 数据局部恢复方法、设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115098295A (zh) |
WO (1) | WO2024001974A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115454712A (zh) * | 2022-11-11 | 2022-12-09 | 苏州浪潮智能科技有限公司 | 一种校验码恢复方法、系统、电子设备及存储介质 |
WO2024001974A1 (zh) * | 2022-06-29 | 2024-01-04 | 阿里巴巴(中国)有限公司 | 数据局部恢复方法、设备及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102109015B1 (ko) * | 2018-10-23 | 2020-05-11 | 네이버 주식회사 | 부분 접속 복구가 가능하고 중복 인코딩이 용이한 데이터 저장 방법 및 시스템 |
CN113296695A (zh) * | 2021-02-08 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 多az环境下纠删码数据的写入方法以及装置 |
CN113687975B (zh) * | 2021-07-14 | 2023-08-29 | 重庆大学 | 数据处理方法、装置、设备及存储介质 |
CN114385409A (zh) * | 2021-12-21 | 2022-04-22 | 阿里巴巴(中国)有限公司 | 基于纠删码的编码方法、分布式系统、设备及存储介质 |
CN115098295A (zh) * | 2022-06-29 | 2022-09-23 | 阿里巴巴(中国)有限公司 | 数据局部恢复方法、设备及存储介质 |
-
2022
- 2022-06-29 CN CN202210764325.1A patent/CN115098295A/zh active Pending
-
2023
- 2023-06-25 WO PCT/CN2023/102218 patent/WO2024001974A1/zh unknown
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024001974A1 (zh) * | 2022-06-29 | 2024-01-04 | 阿里巴巴(中国)有限公司 | 数据局部恢复方法、设备及存储介质 |
CN115454712A (zh) * | 2022-11-11 | 2022-12-09 | 苏州浪潮智能科技有限公司 | 一种校验码恢复方法、系统、电子设备及存储介质 |
CN115454712B (zh) * | 2022-11-11 | 2023-02-28 | 苏州浪潮智能科技有限公司 | 一种校验码恢复方法、系统、电子设备及存储介质 |
WO2024098647A1 (zh) * | 2022-11-11 | 2024-05-16 | 苏州元脑智能科技有限公司 | 一种校验码恢复方法、系统、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2024001974A1 (zh) | 2024-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104657405B (zh) | 用于归档数据的基于优先级的可靠性机制的方法和系统 | |
CN115098295A (zh) | 数据局部恢复方法、设备及存储介质 | |
US11531593B2 (en) | Data encoding, decoding and recovering method for a distributed storage system | |
CN107086870B (zh) | 修复多节点失效的mds阵列码编码以及解码方法 | |
CN101719086B (zh) | 磁盘阵列容错处理方法和装置及容错系统 | |
US20160378624A1 (en) | Erasure coding of data within a group of storage units based on connection characteristics | |
US20200319973A1 (en) | Layered error correction encoding for large scale distributed object storage system | |
CN116501553B (zh) | 数据恢复方法、装置、系统、电子设备及存储介质 | |
CN115080303B (zh) | Raid6磁盘阵列的编码方法、解码方法、装置及介质 | |
CN102843212B (zh) | 编解码处理方法及装置 | |
CN111176880B (zh) | 磁盘分配方法、装置和可读存储介质 | |
WO2024001494A1 (zh) | 一种数据存储的方法、单节点服务器及设备 | |
WO2023082629A1 (zh) | 数据存储方法及装置、电子设备和存储介质 | |
CN114442950A (zh) | 一种数据恢复方法、系统、装置及计算机可读存储介质 | |
CN108614749B (zh) | 一种数据处理方法及装置 | |
CN114048061A (zh) | 校验块的生成方法及装置 | |
US20200336157A1 (en) | Systematic and xor-based coding technique for distributed storage systems | |
CN109426590A (zh) | 用于数据节点存储数据的方法和用于恢复数据的方法 | |
CN111224747A (zh) | 可降低修复带宽和磁盘读取开销的编码方法及其修复方法 | |
CN114691414A (zh) | 一种校验块生成方法及一种数据恢复方法 | |
Yongmei et al. | Large LDPC codes for big data storage | |
CN107463462B (zh) | 数据修复方法及数据修复装置 | |
CN115357425A (zh) | 编码配置转换方法、纠删码的编码方法及装置、系统 | |
CN112015325B (zh) | 一种生成解码矩阵的方法、解码方法和对应装置 | |
CN111984443A (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 |