CN115599298A - 一种编码/解码方法和系统 - Google Patents
一种编码/解码方法和系统 Download PDFInfo
- Publication number
- CN115599298A CN115599298A CN202211242846.7A CN202211242846A CN115599298A CN 115599298 A CN115599298 A CN 115599298A CN 202211242846 A CN202211242846 A CN 202211242846A CN 115599298 A CN115599298 A CN 115599298A
- Authority
- CN
- China
- Prior art keywords
- data
- check
- user data
- matrix
- sub
- 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
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0626—Reducing size or complexity of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
Abstract
本说明书实施例提供一种编码方法,包括:确定包含m个分片数据的分片数据组,m个分片数据分别由一一对应的m个用户数据存储盘进行存储;m个分片数据与用户数据子矩阵拆分出的m个信息位子矩阵一一对应,用户数据子矩阵属于用于纠错编码的校验矩阵并对应于该校验矩阵的信息位,且该校验矩阵还包含对应于校验位的校验位子矩阵;获取m个分片数据分别对应的m个子特征向量,并求和得到分片数据组对应的特征向量;任一分片数据对应的子特征向量基于任一分片数据及其对应的信息位子矩阵生成;基于分片数据组对应的特征向量与校验位子矩阵的逆矩阵生成分片数据组对应的校验数据,该校验数据与m个分片数据共同构成分片数据组对应的纠错码码字。
Description
技术领域
本说明书一个或多个实施例涉及计算机技术领域,尤其涉及一种编码/解码方法和系统。
背景技术
相关技术中,为了确保高可用和数据稳定性的同时降低成本,通常采用纠删码存储方案对数据进行保护以替代传统技术中的多备份存储方案,它是将原始数据拆分为m个原始数据块,同时通过纠删编码增补k个校验数据块,并将这m+k个数据块分别存储在不同的位置。由于原始数据块和校验数据块之间具有某种数学关联,这使得这m+k个数据块能够容忍在最多丢失k个数据块的情况下,仍然能够恢复得到最初的原始数据。
图1示出了一种存储集群采用纠删码存储方案的系统架构图。存储集群的每个服务器均独立装备了纠删码编/解码器(可利用软件或硬件实现),以独立实现纠删码的编码和解码;另外,当前各存储盘内部带有纠错码编/解码器,用以生成纠错码码字从而提高其读取数据的容错性。此时,纠删码存储方案与纠错码存储方案独立运行并分别提供多盘的数据保护能力与单盘的数据保护能力,以共同实现一种联合数据保护场景。具体而言,对于需要保护的原始数据,首先通过服务器装备的纠删码编/解码器进行纠删编码生成对应的纠删码码字,然后将该纠删码字拆分为多个切片数据(构成一个纠删码保护组)并分别存储在不同服务器中的不同存储盘中,对于准备存储任一切片数据的存储盘而言,其还会通过内置的纠错码编/解码器生成该任一切片数据对应的纠错码码字,从而使得原始数据同时受到存储盘间的纠删码保护以及存储盘内的纠错码保护。
然而,当前的纠删码存储方案至少存在以下技术问题:1.需由服务器单独配置纠删码编/解码器,设置专用于编码或解码纠删码的内存空间等整套配置,独立构造和优化纠删码的码构造,增加了软硬件成本、服务器计算成本与码构造设计成本;2.当前纠删码因码长限制从而导致其码率低于纠错码码率,所需额外加入的冗余多,占用存储空间的开销大。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种编码/解码方法和系统。本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种编码方法,包括:
确定包含m个分片数据的分片数据组,所述m个分片数据分别由一一对应的m个用户数据存储盘进行存储;其中,所述m个分片数据与用户数据子矩阵拆分出的m个信息位子矩阵一一对应,所述用户数据子矩阵属于用于纠错编码的校验矩阵并对应于该校验矩阵的信息位,且该校验矩阵还包含对应于校验位的校验位子矩阵;
获取所述m个分片数据分别对应的m个子特征向量,并求和得到所述分片数据组对应的特征向量;其中,任一分片数据对应的子特征向量基于所述任一分片数据及其对应的信息位子矩阵生成;
基于所述分片数据组对应的特征向量与所述校验位子矩阵的逆矩阵生成所述分片数据组对应的校验数据,且该校验数据与所述m个分片数据共同构成所述分片数据组对应的纠错码码字,m>1且m为整数。
根据本说明书一个或多个实施例的第二方面,提出了一种解码方法,包括:
从m个用户数据存储盘分别一一对应地读取分片数据组包含的m个分片数据;其中,所述m个分片数据与用户数据子矩阵拆分出的m个信息位子矩阵一一对应,所述用户数据子矩阵属于用于纠错编码的校验矩阵并对应于该校验矩阵的信息位,且该校验矩阵还包含对应于校验位的校验位子矩阵;
获取所述分片数据组对应的校验数据,该校验数据基于所述分片数据组对应的特征向量与所述校验位子矩阵的逆矩阵生成,所述分片数据组对应的特征向量由所述m个分片数据分别对应的m个子特征向量进行求和得到,任一分片数据对应的子特征向量基于所述任一分片数据及其对应的信息位子矩阵生成;
以所述m个分片数据与所述分片数据组对应的校验数据作为所述分片数据组对应的纠错码码字,基于所述校验矩阵与所述分片数据组对应的纠错码码字生成纠错结果向量,并基于所述纠错结果向量确定所述分片数据组对应的纠错码码字的解码结果,m>1且m为整数。
根据本说明书一个或多个实施例的第三方面,提出了一种编码系统,包括:部署于至少一个服务器上的用户数据存储盘与校验数据存储盘,所述用户数据存储盘用于存储用户数据,所述校验数据存储盘用于存储校验数据;
其中,任一服务器、任一用户数据存储盘或任一校验数据存储盘中部署有纠错码编码器,所述纠错码编码器用于执行如上述第一方面中任一项所述的方法。
根据本说明书一个或多个实施例的第四方面,提出了一种解码系统,包括:部署于至少一个服务器上的用户数据存储盘与校验数据存储盘;所述用户数据存储盘用于存储用户数据,所述校验数据存储盘用于存储校验数据;
其中,任一服务器、任一用户数据存储盘或任一校验数据存储盘中部署有纠错码解码器,所述纠错码解码器用于执行如上述第二方面中任一项所述的方法。
根据本说明书一个或多个实施例的第五方面,提出了一种电子设备,包括:
处理器;用于存储处理器可执行指令的存储器;其中,所述处理器通过运行所述可执行指令以实现上述第一方面或第二方面中任一方法的步骤。
根据本说明书一个或多个实施例的第六方面,提出了一种计算机可读存储介质,其上储存有可执行指令;其中,该指令被处理器执行时,实现上述第一方面或第二方面中任一方法的步骤。
由上述实施例可知,本说明书实现了基于纠错码的多盘数据保护和数据存储的方案,以用于替代原有纠删码存储方案所具有的多盘容灾的数据恢复功能。由于多盘的数据保护的功能不再由纠删码实现,因此本说明书实施例实际上取消了服务器主机端独立完成纠删码编/解码的要求,从而无需设置相关技术中的纠删码编/解码器以及纠删码的码构造等一系列与纠删码相关的功能与实现,降低了独立设置纠删码时所需的功能器、计算资源、码构造设计等系列成本;同时,通过纠错码的数据保护机制来替代纠删码的数据保护机制,由于纠错码的码率接近香农极限,高于纠删码的码率,因此在取得同等数据恢复能力时所需加入的冗余更少,节省了更多的存储空间;另外,本说明书实施例将传统的纠错编码的过程拆解为了多个分片数据与相应信息位子矩阵和校验位子矩阵进行计算的多个分段步骤,而这个过程中生成了大量例如子向量特征的计算中间结果,由于每个存储盘本身也需要将其存储的数据进行单盘纠错编码以形成单盘的数据保护能力,这使得本说明书实施例所涉及的多盘纠错编码与每个存储盘原生的单盘纠错编码复用相同的编/解码器以及计算中间结果成为可能,从而大大降低了实现联合数据保护场景的软硬件成本与计算成本。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。
图1是本说明书根据一示例性实施例提供的一种存储集群采用纠删码存储方案的系统架构图。
图2是本说明书根据一示例性实施例提供的一种编码方法的系统架构示意图。
图3是本说明书根据一示例性实施例提供的一种编码方法的流程图。
图4是本说明书根据一示例性实施例提供的一种编码方法的核心流程示意图。
图5是本说明书根据一示例性实施例提供的一种存储集群采用纠错码存储方案的系统架构图。
图6是本说明书根据一示例性实施例提供的一种应用场景的示意图。
图7是本说明书根据一示例性实施例提供的一种应用场景下各存储盘执行计算任务的时序图。
图8是本说明书根据一示例性实施例提供的另一种应用场景的示意图。
图9是本说明书根据一示例性实施例提供的另一种应用场景下各存储盘执行计算任务的时序图。
图10是本说明书根据一示例性实施例提供的一种解码方法的流程图。
图11是本说明书根据一示例性实施例提供的一种编码系统的示意图。
图12是本说明书根据一示例性实施例提供的一种解码系统的示意图。
图13是本说明书根据一示例性实施例提供的一种设备的结构示意图。
图14是本说明书根据一示例性实施例提供的一种编码装置的框图。
图15是本说明书根据一示例性实施例提供的一种解码装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
图2是本说明书根据一示例性实施例提供的一种编码方法的系统架构示意图。如图2所示,该系统架构中的存储集群包括若干个用户数据存储盘以及校验数据存储盘,且本说明书实施例所涉及的编码方法实际应用于图1中的纠错码编码器,该纠错码编码器可以是内置于任一存储盘中的纠错码编码器,也可以是由任一服务器或第三方装备的纠错码编码器;纠错码编码器需要获取同一分片数据组中包含的m个(m为不小于2的正整数)分片数据分别对应的m个子特征向量,其中,该m个分片数据被一一对应地存储于存储集群中m个用户数据存储盘中。纠错码编码器可以通过从存储集群中的m个分片数据存储盘中或其他包含m个分片数据的数据源中读取得到m个分片数据,然后分别对应计算出m个子特征向量;或者,纠错码编码器可以直接从m个用户数据存储盘中读取得到m个子特征向量,其中,任一子特征向量由存储有对应分片数据的用户数据存储盘基于其内置的纠错码编码器生成,从而将子特征向量的计算任务分摊至m个用户数据存储盘。纠错码编码器通过纠错编码可以生成上述分片数据组对应的校验数据,该校验数据与m个分片数据共同构成一个完整的纠错码码字,从而使得分片数据组得到纠错码的数据保护能力,该校验数据可以被存储于存储集群中的校验数据存储盘,以用于后续进行纠错解码/数据恢复。
图3是本说明书根据一示例性实施例提供的一种编码方法的流程图。该方法应用于如图1中所示的纠错码编码器;如图2所示,该方法包括以下步骤:
S302:确定包含m个分片数据的分片数据组,所述m个分片数据分别由一一对应的m个用户数据存储盘进行存储;其中,所述m个分片数据与用户数据子矩阵拆分出的m个信息位子矩阵一一对应,所述用户数据子矩阵属于用于纠错编码的校验矩阵并对应于该校验矩阵的信息位,且该校验矩阵还包含对应于校验位的校验位子矩阵。
如图1所示,m个用户数据存储盘(即用于存储用户数据的存储盘)一一对应地存储有m个分片数据,而这m个分片数据同属于一个分片数据组。本说明书实施例的基本目标便是通过生成某一分布式存储在多个存储盘中的分片数据组对应的校验数据,并与该分片数据组包含的各分片数据共同构成该分片数据组对应的纠错码码字,从而使得在分片数据组中存在可控范围内的错码或者缺码(例如丢失了一个分片数据)的情况下,仍然可以通过纠错码码字的性质恢复得到该分片数据组中原始的m个分片数据以及对应的校验数据,以起到对该分片数据组中m个分片数据以及对应的校验数据进行数据保护的作用。由此可见,本说明书实施例可以通过纠错码的存储方案来替代相关技术中的纠删码存储方案,从而提供多盘容灾的数据保护(如果一个存储盘丢失了数据或大量错码,该数据还可以恢复)。
在本说明书实施例中,校验矩阵即是用于规定某一纠错码码字所包含的信息位与校验位的线性约束,而这种约束也是实现纠错能力的关键因素。在不考虑错码或缺码的情况下,对于基于某一校验矩阵对应的生成矩阵所生成的纠错码码字,其与该校验矩阵的乘积为零向量;而如果乘积不为零向量,则说明该纠错码码字存在误码,依据实际的乘积结果以及容错能力还可以对该纠错码码字进行调整从而恢复得到正确的纠错码码字。校验矩阵可以拆分为用户数据子矩阵与校验位子矩阵,其中,用户数据子矩阵对应于校验矩阵中的信息位,具体是指校验矩阵在执行与纠删码码字的矩阵乘法时,用于与纠删码码字的信息位部分相乘的矩阵元素所组成的子矩阵;而校验位子矩阵则对应于校验矩阵的校验位,具体是指校验矩阵在执行与纠删码码字的矩阵乘法时,用于与纠删码码字的校验位部分相乘的矩阵元素所组成的子矩阵。
图4是本说明书根据一示例性实施例提供的一种编码方法的核心流程示意图。如图4所示,设m=4,即分片数据组U共包含4个分片数据u1、u2、u3和u4,同时,用于参与纠错编码的校验矩阵Hu中的用户数据子矩阵(对应于图中Hu1-Hu4的部分)也被拆分为了对应的4个信息位子矩阵Hu1、Hu2、Hu3和Hu4,以及剩下的校验位子矩阵Hp。其中,u1对应于Hu1,u2对应于Hu2,u3对应于Hu3,u4对应于Hu4,而后续生成的校验数据p对应于Hp。需要指出的是,图中所示的对分片数据组或用户数据子矩阵的拆分方式为均匀拆分,即4个分片数据u1、u2、u3和u4的长度(即列数)相等,4个信息位子矩阵Hu1、Hu2、Hu3和Hu4的长度也相等;当然,也可以按照不同的方式进行拆分,例如不均匀拆分,但为了确保后续的矩阵乘法的正确进行,还需要确保拆分得到的每个分片数据与其对应的信息位子矩阵的长度相同。
S304:获取所述m个分片数据分别对应的m个子特征向量,并求和得到所述分片数据组对应的特征向量;其中,任一分片数据对应的子特征向量基于所述任一分片数据及其对应的信息位子矩阵生成。
在本说明书实施例中,纠错码编码器需要获取所述分片数据组中m个分片数据分别对应的m个子特征向量,并将该m个子特征向量进行累加得到的矩阵作为所述分片数据组对应的特征向量。由于m个子特征向量(形式上为矩阵)具有相同的矩阵尺寸,因此可以它们之间可以求和,将同一行同一列中的元素相加即可。
如图4所示,4个分片数据u1、u2、u3和u4分别对应的子特征向量为Su1、Su2、Su3和Su4,其中,任一分片数据对应的子特征向量基于所述任一分片数据及其对应的信息位子矩阵生成,具体而言,是由所述任一分片数据及其对应的信息位子矩阵进行矩阵乘法得到,即Su1=u1*Hu1,Su2=u2*Hu2,Su3=u3*Hu3,Su4=u4*Hu4。在具体进行矩阵乘法时,实际参与运算的信息位子矩阵需要首先进行转置变换,然后前乘对应的分片数据,例如u1是一个1*3的矩阵,而Hu1是一个2*3的矩阵,因此Hu1的转置是一个3*2的矩阵,u1与Hu1的转置的乘积得到的Su1是一个1*2的矩阵。接着,分片数据组对应的特征向量Su=Su1+Su2+Su3+Su4。需要注意的是,由于我们规定所有的分片数据均使用二进制,也就是每个信息位仅为0或1,因此u1、u2、u3和u4可以看作二进制串,或任一元素仅为0或1的矩阵,同理,Hu1、Hu2、Hu3、Hu4、Hp也是任一元素仅为0或1的矩阵,这样一来,在进行矩阵求和时我们使用异或加法的规则,从而确保得到的Su也是任一元素仅为0或1的矩阵,另外,本说明书实施例所涉及的所有矩阵乘法中的加法也均修正为异或加法,从而保证所有的矩阵都是任一元素仅为0或1的矩阵。
在一实施例中,纠错码编码器通过对获取到的所述m个分片数据与对应的m个信息位子矩阵相乘从而自行生成并获取所述m个子特征向量。在另一实施例中,纠错码编码器也可以从其他用户数据存储盘中直接获取所述m个子特征向量,而具体的分片数据与信息位子矩阵之间的矩阵乘法任务则被分摊至其他用户数据存储盘。具体而言,所述任一分片数据对应的子特征向量由存储有所述任一分片数据的用户数据存储盘生成并提供。以图1为例,m个分片数据(图中分片数据1-m)分别由一一对应的m个用户数据存储盘(图中用户数据存储盘1-m)存储,而m个分片数据分别一一对应的m个子向量特征(图中子向量特征1-m)则由存储有m个分片数据的m个用户数据存储盘对应提供,例如用户数据存储盘1使用其内置的盘内纠错编码器进行矩阵乘法生成得到自身存储的分片数据1对应的子向量特征1,并向执行特征子向量求和的纠错码编码器提供子向量特征1,例如用户数据存储盘2使用其内置的盘内纠错编码器进行矩阵乘法生成得到自身存储的分片数据2对应的子向量特征2,并向执行特征子向量求和的纠错码编码器提供子向量特征2,以此类推。这样一来,矩阵乘法任务就被平均分配至多个用户存储盘之中,并且每个用户存储盘可以并行执行矩阵乘法,而进行纠错编码的纠错码编码器则无需进行子向量特征与对应信息位子矩阵的矩阵乘法,而只需要执行特征子向量的求和操作,极大地增强了各用户数据存储盘的资源利用率以及整体方案的执行效率。
在本说明书实施例中,任一用户数据存储盘维护有用于缓存自身生成的子特征向量的共享内存空间,所述m个用户数据存储盘之间通过各自维护的所述共享内存空间获取彼此生成的子特征向量。用户数据存储盘在计算得到自身存储的分片数据对应的子向量特征后,可以将其存放至自身维护的共享内存空间,由于不同的存储盘(包括用户数据存储盘与校验数据存储盘)之间可以通过访问彼此维护的共享内存空间从而快速获取彼此共享的信息,当然,任意第三方(例如服务器中维护的纠删码编码器)也可以通过访问这些共享内存空间从而便捷地获取子向量特征。因此,本说明书实施例可以将不同存储盘和第三方之间的信息交互任务委托至存储盘内置的内存共享空间专门进行,从而降低CPU直接参与的内存拷贝所引发的延迟、带宽、CPU资源等开销,同时提升了数据传输效率,实现了针对用户数据存储盘生成的子向量特征的直接访问获取。图5是本说明书根据一示例性实施例提供的一种存储集群采用纠错码存储方案的系统架构图,如图5所示,存储盘1-5为用户数据存储盘和/或校验数据存储盘,分别被存储于多个服务器或对应的扩展JBOD(Just a BunchOf Disks,磁盘连续捆束阵列)之中,而对于每一个存储盘,其内部维护有内置的纠错码编码器、共享内存空间以及存储介质,在通过纠错码编码器生成对应的子特征向量后可以将其缓存至共享内存空间,以供其他存储盘或第三方获取。
当然,共享内存空间除了可以实现子向量特征的共享获取以外,还可以将任何其他数据放入其中进行共享,例如,在m个用户数据存储盘还未对应存储m个分片数据之前,可以先使得某一用户数据存储盘获取分片数据组中包含的m个分片数据,然后由该用户数据存储盘将该m个分片数据缓存至其维护的共享内存空间中,其他的用户数据存储盘便可以通过访问该共享内存空间而获取自身所应该对应存储的分片数据,从而通过共享内存空间实现分片数据组中各分片数据的分配存储。
S306:基于所述分片数据组对应的特征向量与所述校验位子矩阵的逆矩阵生成所述分片数据组对应的校验数据,且该校验数据与所述m个分片数据共同构成所述分片数据组对应的纠错码码字,m>1且m为整数。
在本说明书实施例中,负责纠错编码的纠错码编码器在求和得到分片数据组对应的特征向量后,将进一步基于该特征向量与校验位子矩阵的逆矩阵生成该分片数据组对应的校验数据。如图4所示,首先需要获取校验位子矩阵Hp对应的逆矩阵INV(Hp),这里可以通过及时的求逆矩阵运算获取,也可以直接加载预先计算得到的INV(Hp),其中,INV()表示求逆矩阵的运算,其输入矩阵的尺寸为i*j的话,对应的输出矩阵的尺寸则为j*i,并且输入矩阵与输出矩阵之间的乘积为i*i的单位矩阵。那么最终得到的校验数据p=Su*INV(Hp)。如前所述,Su与Su1-Su4具有相同的尺寸,假设Su的尺寸为1*2,而Hp的尺寸为3*2,则INV(Hp)的尺寸为2*3,于是Su与INV(Hp)之间相乘得到的校验数据p的尺寸应为1*3。最后,校验数据p可以与u1-u4进行拼接从而构成一个完整的纠错码码字,也正如图2中的纠错码码字所示的那样,本说明书实施例所构建的纠错码码字其包含分片数据组中的m个分片数据以及对应的校验数据。
另外,从数学上可以验证,假使将图4中最后拼接构成的纠错码码字X与校验矩阵(校验矩阵对应的转置矩阵,这里省去转置过程)相乘,将可以将矩阵乘法等价性地拆分为X*H=[u1,u2,u3,u4,p]*[Hu1,Hu2,Hu3,Hu4,Hp]=u1*Hu1+u2*Hu2+u3*Hu3+u4*Hu4+p*Hp=Su1+Su2+Su3+Su4+(Su*INV(Hp))*Hp=Su+Su*E=Su+Su=0,式中“E”代表单位矩阵,式中“Su+Su=0”中的“0”代表零向量,其尺寸与Su相同,而之所以有“Su+Su=0”,是因为本说明书实施例采用异或加法替代了矩阵乘法中的传统数值加法,因此相同值之间的异或值就是0。因此,可以发现纠错码码字在没有出错的情况下与校验矩阵的乘积为零向量,而如果其乘积得到的纠错结果向量不为零向量,则需要进一步进行纠错以恢复得到正确的纠错码码字。
本说明书实施例提出了一种编码方法,实现了一种基于纠错码的多盘数据保护和数据存储的方案,以用于替代原有纠删码存储方案所具有的多盘容灾的数据恢复功能。由于多盘的数据保护的功能不再由纠删码实现,因此本说明书实施例实际上取消了服务器主机端独立完成纠删码编/解码的要求,从而无需设置如图1中的纠删码编/解码器以及纠删码的码构造等一系列与纠删码相关的功能与实现,降低了独立设置纠删码时所需的功能器、计算资源、码构造设计等系列成本;同时,通过纠错码的数据保护机制来替代纠删码的数据保护机制,由于纠错码的码率接近香农极限,高于纠删码的码率,因此在取得同等数据恢复能力时所需加入的冗余更少,节省了更多的存储空间;另外,本说明书实施例将传统的纠错编码的过程拆解为了多个分片数据与相应信息位子矩阵和校验位子矩阵进行计算的多个分段步骤,而这个过程中生成了大量例如子向量特征的计算中间结果,由于每个存储盘本身也需要将其存储的数据进行单盘纠错编码以形成单盘的数据保护能力,这使得本说明书实施例所涉及的多盘纠错编码与每个存储盘原生的单盘纠错编码复用相同的编/解码器以及计算中间结果成为可能,从而大大降低了实现联合数据保护场景的软硬件成本与计算成本。
可选的,所述m个分片数据由同一条用户数据按照m份进行拆分得到。本说明书实施例所涉及的用户数据是指在信息指向的内容上连续的数据,类似的,用户数据也可以用二进制来表示,且不同的用户数据具有相同的规格,这意味着不同用户数据所对应的二进制位数相同。如前所述,一个分片数据组中包含有m个分片数据,而在本说明书实施例中,这m个分片数据即来源于同一条用户数据且由该条用户数据按照m份所拆分得到。
相关技术在针对少量数据的数据存储时,难以在不额外损失容量和效率的情况下兼顾多盘容灾与的数据纠错。例如,在纠删码存储方案与纠错码存储方案独立运行的联合保护场景下,其要求待保护的数据需要达到用于生成一个完整的纠删码码字的规格,而当待保护数据无法达到生成一个纠删码码字的规格时,通常会先对该待保护数据进行数据填充以将其规格增补至能够生成一个完整的纠删码码字,然后再对纠删码码字进行拆分存储至多个存储盘,并最终由多个存储盘针对各自存储的切分数据生成对应的纠错码码字从而建立起数据纠错能力,该过程由于引入了用于进行数据填充的无效数据,因此间接增加了存储成本且降低了计算效率。反之,如果不进行数据填充而转而下调纠删码码字的规格,将导致最终得到的切片数据无法满足单盘生成纠删码码字的规格,从而无法实现数据纠错;或者,如果不进行数据填充而放弃生成纠删码码字,而仅仅只是将待保护数据按照纠错码码字的规格进行拆分后分别存入多个存储盘,虽然在单盘内可以构成纠错码保护,但由于缺乏多盘容灾的能力,一旦一个存储盘存储的切片数据存在大量的丢失或错码时,将无法恢复该切片数据。
而本说明书实施例通过将同一条用户数据拆分为m个分别存储到m个用户数据存储盘中,达到了基于同一用户数据的多盘容灾的条件,同时,由于这m个分片数据在构成分片数据组后还会在生成校验数据以形成纠错码同时兼顾数据纠错与数据恢复,从而某种意义上省去了单盘内部进行再次生成纠错码的必要,实现了针对同一用户数据多盘容灾与的数据纠错,并同时将所要求的用户数据的规格要由相关技术中的一个纠删码码字下调至了一个纠错码码字(由于纠删码存储方案要求多盘存储,因此纠删码码字的规格至少为纠错码码字的两倍以上),从而能够更加适应于单独针对少量数据进行存储的应用场景。
下面以一个具体实施例对本说明书实施例进行说明。图6是本说明书根据一示例性实施例提供的一种应用场景的示意图。图6中示出的存储盘1-4均属于用户数据存储盘,存储盘5属于校验数据存储盘,并且设m=4。在该应用场景中,用户数据A和用户数据B需要进行存储,假设用户数据的规格与单盘形成纠错码码字的规格相同,那么在纠删码存储方案与纠错码存储方案独立运行的联合保护场景下,至少需要4个用户数据才能同时针对这4个用户数据的多盘容灾与的数据纠错,因此相关技术需要首先需要在用户数据A和用户数据B的基础上增补两个具有用户数据规格的无效数据从而构成一个纠删码保护组。而在本说明书实施例下,则无需进行数据增补,而是直接对用户数据A以及用户数据B进行拆分,分别得到用户数据A的分片数据A1、A2、A3和A4,用户数据B的分片数据B1、B2、B3和B4。同时,将A1、A2、A3和A4构成一个分片数据组g,标记为A1_g、A2_g、A3_g和A4_g;以及将B1、B2、B3和B4构成另一个分片数据组y,标记为B1_y、B2_y、B3_y和B4_y,其中,A1_g与B1_y存储于存储盘1,A2_g与B2_y存储于存储盘2,A3_g与B3_y存储于存储盘3,A4_g与B4_y存储于存储盘4。最后将分片数据组g与分片数据组y分别通过本说明书所涉及的编码方法以生成对应的校验数据Pg与Py,存储于存储盘5。由此一来,A1_g、A2_g、A3_g、A4_g与Pg便构成一个纠错码码字,B1_y、B2_y、B3_y、B4_y和Py构成另一个纠错码码字,从而同时实现了多盘容灾以及数据纠错,且这个过程并没有增补无效数据。
图6中有一列代表计算参数的纵列,分别为Hu1、Hu2、Hu3、Hu4和Hp,横向上对齐任一计算参数的数据与该任一计算参数在编码过程中互为计算相关因子,例如Hu1与A1_g、B1_y横向对齐,这意味着在编码过程中Hu1要分别与A1_g、B1_y共同参与到对子向量特征的计算,或者Hp与Pg、Py横向对齐,这意味着在编码过程中生成Pg、Py需要Hp参与计算。
如前所述,本说明书实施例所涉及生成子特征向量或校验数据的计算任务可以分摊至m个用户数据存储盘,下面以图7为例来介绍将生成子向量特征和校验数据的计算任务分摊后,各存储盘的任务执行情况。图7是本说明书根据一示例性实施例提供的一种应用场景下各存储盘执行计算任务的时序图,具体是图6应用场景下各存储盘执行计算任务的时序图。如图7所示,设每个存储盘中内置的纠错编码器的效率相同,即每次矩阵乘法的运算需要消耗的时间单位均为T,那么存储盘1需要分别计算出A1_g与B1_y分别对应的两个子向量特征,同理存储盘2、3、4也分别都会计算出两个子向量特征,于是计算出所有的共8个子向量特征仅需要消耗2T的时间,最后,由于子向量特征可以通过共享内存空间在不同存储盘之间传递,因此最后将A1_g、A2_g、A3_g和A4_g分别对应的子特征向量求和得到分片数据组g对应的特征向量Sg,并利用矩阵乘法得到最终的校验数据Pg的过程可以由存储盘1-5中任一存储盘执行;同理,将B1_y、B2_y、B3_y和B4_y求和得到分片数据组y对应的特征向量Sy,并利用矩阵乘法得到最终的校验数据Pg的过程则可以由存储盘1-5中另一存储盘执行,由于最终生成的校验数据仅有2个,即生成校验数据的过程所需执行的矩阵乘法的任务仅包含2次,而存储盘一共包含5个(即进行矩阵乘法的纠错编码器包含5个),因此全局只需要花费一个T就能够完成上述应用场景下对所有分片数据组对应的校验数据的生成过程,另外生成的校验数据同样可以通过数据共享(存入共享内存空间)来向存储盘5传递,并在第三个T中实现写入存储盘5。综上,为实现图6所示应用场景下的编码过程,一共需要3T的时间,其充分利用了各存储盘内置的纠错编码器,具有较高的资源利用率与执行效率。
可选的,所述m个分片数据分别来源于m条用户数据,每一分片数据为其对应的用户数据拆分得到的分片数据之一。在本说明书实施例中,上述分片数据组中包含的m个分片数据分别来源于对应的m条用户数据,同时,分片数据组中的每个分片数据其实也是通过对其所属的用户数据进行拆分得到的分片数据之一。
在所述m个分片数据分别来源于m条用户数据的基础上,所述m条用户数据中的每条用户数据分别被按照m份进行拆分;所述方法还包括:生成m个分片数据组分别对应的m个校验数据,其中,任一分片数据组均包含有分别来源于所述m条用户数据的m个分片数据,且不同分片数据组彼此之间包含的分片数据互不相同。
在本说明书实施例中,分片数据组中的每个分片数据来源于其所属用户数据按照m份进行拆分得到的分片数据之一,同时,本说明书实施例涉及m个不同的分片数据组,且会按照前述的编码方法一共生成m个不同的分片数据组对应的校验数据。由于任一分片数据组均包含有分别来源于所述m条用户数据的m个分片数据,且不同分片数据组彼此之间包含的分片数据互不相同,叠加上用户数据是按照m份进行拆分的,这意味着该m个分片数据组中包含的所有分片数据一共有m*m个、全部来源于m个用户数据且彼此之间互不重复,显然这m个用户数据在m份的拆分原则下也一共有m*m个分片数据,因此该m个分片数据组完全覆盖了m个分片数据,共同对m个分片数据形成了多重、正交、联合的数据保护。
当前的纠删码存储方案还存在以下技术问题:如需进行数据恢复/解码,需从多个存储盘中读取得到纠删码对应的分片数据组中的多个切片数据,但由于从每个存储盘所读取的数据至少是一个完整的纠错码码字,这导致在少量局部数据的丢失或出错的场景下,数据恢复/解码的成本过高。而通过本说明书实施例,在进行数据恢复/解码时,虽然本说明书实施例也是从多个存储盘中读取得到纠错码对应的分片数据组中的多个分片数据,但由于每个分片数据在各自的存储盘中并没有独立地构造为对应的纠错码,而是与其他分片数据共同构成纠错码码字的信息位,即本说明书实施例从每个存储盘所读取的数据不是一个完整的纠错码码字,而只是纠错码码字信息位中的一部分,从而在少量局部数据的丢失或出错的场景下大大降低数据恢复/解码的成本。
下面以一个具体实施例对本说明书实施例进行说明。图8是本说明书根据一示例性实施例提供的另一种应用场景的示意图。以图8为例,图8中示出的存储盘1-4均属于用户数据存储盘,存储盘5属于校验数据存储盘,并且设m=4。在该应用场景中,一共有4个用户数据A、B、C和D需要进行存储,假设用户数据的规格与单盘形成纠错码码字的规格相同,如图所示,用户数据A被拆分为分片数据A1_g、A2_y、A3_o和A4_b并被同时存储于存储盘1,用户数据B被拆分为分片数据B1_b、B2_g、B3_y和B4_o并被同时存储于存储盘2,用户数据C被拆分为分片数据C1_o、C2_b、C3_g和C4_y并被同时存储于存储盘3,用户数据D被拆分为分片数据D1_y、D2_o、D3_b和D4_g并被同时存储于存储盘4。同时,本说明书实施例一共设置有4个分片数据组,其中,分片数据组g包含A1_g、B2_g、C3_g和D4_g,分片数据组y包含A2_y、B3_y、C4_y和D1_y,分片数据组o包含A3_o、B4_o、C1_o和D2_o,分片数据组b包含A4_b、B1_b、C2_b和D3_b。最后将分片数据组g、分片数据组y、分片数据组o、分片数据组b分别通过本说明书所涉及的编码方法以生成对应的校验数据Pg、Py、Po与Pb,存储于存储盘5,需要注意的是,本说明书实施例中任一校验数据的长度与任一切分数据的长度均相等。由此一来,A1_g、B2_g、C3_g、D4_g与Pg便构成一个纠错码码字,同理A2_y、B3_y、C4_y、D1_y和Py构成另一个纠错码码字,以此类推。
在上述应用场景下,假设现在A1_g部分的数据丢失/出错,如果应用相关技术,由于其是整体地将用户数据A、B、C和D共同构成纠删码保护组,因此需要从存储盘1-5中分别读取出整体的用户数据A、B、C和D以及对应的纠删码校验数据,从而通过纠删解码恢复得到对应的纠删码码字,再实现对A1_g部分的数据恢复,显然,这个过程需要从每个存储盘读取完整的纠错码码字的信息位部分,所花费的代价较大。而通过本说明书实施例,则只需首先确定A1_g所属的分片数据组g,然后分别从存储盘1-5中读取出A1_g、B2_g、C3_g和D4_g与Pg,从而通过纠错解码恢复得到分片数据组g对应的正确的纠错码码字,从而实现对A1_g部分的数据恢复,因此,本说明书实施例无需从每个存储盘读取完整的纠错码码字的信息位部分,而只需要读取纠错码码字信息位中的一部分,从而降低了在少量局部数据的丢失或出错的场景下数据恢复/解码的成本。
在上述实施例的基础上,所述m个校验数据存储在区别于用户数据存储盘的校验数据存储盘,该校验数据存储盘还存储有基于所述校验矩阵对所述m个校验数据进行纠错编码得到的特殊校验数据,且所述m个校验数据与所述特殊校验数据共同构成所述m个校验数据对应的纠错码码字。在本说明书实施例中,由于m个分片数据组分别对应的m个校验数据最终被存储于校验数据存储盘,因此校验数据存储盘也可以基于其单盘或第三方的纠错编码能力,对这m个校验数据也进行纠错编码以生成对应的特殊校验数据,从而构成纠错码码字以提供针对m个校验数据的单盘纠错保护,这里针对m个校验数据的纠错编码与前述基于分片数据组的编码方式为同一编码方式,共用相同的流程、规范和计算参数等,如共用相同的校验矩阵,其具体过程可以参考图4。如图8所示,存储盘5存储有4个分片数据组分别对应的校验数据Pg、Py、Po与Pb,同时其也可以存储有对Pg、Py、Po与Pb进行纠错编码所生成的特殊校验数据PP,其中,Pg、Py、Po、Pb与PP共同构成一个纠错码码字,从而提供单盘的纠错保护。
在所述m个分片数据分别来源于m条用户数据的基础上,所述m条用户数据中的每条用户数据分别被按照m份进行拆分;所述m条用户数据分别由一一对应的所述m个用户数据存储盘进行存储,每一用户数据存储盘还存储有自身所存储的用户数据对应的特征向量与所述校验子矩阵的逆矩阵生成的校验数据,该校验数据与自身所存储的用户数据共同构成针对该用户数据的纠错码码字,且自身所存储的用户数据对应的特征向量由该用户数据拆分出的m个分片数据分别对应的m个子特征向量进行求和得到;获取所述分片数据组中的任一分片数据对应的子特征向量,包括:确定所述任一分片数据所属的用户数据,并获取为生成该用户数据对应的特征向量而针对该任一分片数据生成的子特征向量。
在本说明书实施例中,m个用户数据存储盘对应存储有m个用户数据,即任一用户数据存储盘不仅存储有属于分片数据组中的某一分片数据,还存储有该分片数据所来源的整个用户数据,这意味着,每个用户数据存储盘还可以基于其单盘或第三方的纠错编码能力,对其所对应存储的用户数据进行纠错编码以生成对应于该用户数据的校验数据,从而构成纠错码码字以提供每个用户数据整体的单盘纠错保护,这里针对用户数据的纠错编码与前述基于分片数据组的编码方式为同一编码方式,共用相同的流程、规范和计算参数等,如共用相同的校验矩阵以及复用子向量特征,其具体过程可以参考图4。具体而言,由于m个分片数据组对应的特征向量与m个用户数据对应的特征向量均是从包含相同的m*m个子向量特征的子向量特征池中筛选并求和得到,因此在对分片数据组或用户数据进行纠错编码时,可以复用子向量特征而无需重复进行用于生成子向量特征的计算,从而大大降低计算成本,提高执行效率。例如,在基于分片数据组进行纠错编码时,需要确定该分片数据组包含的分片数据,并对各分片数据对应的子特征向量进行求和得到分片数据组对应的特征向量,而这里获取各分片数据对应的子向量特征时,可以首先确定某一分片数据所来源的用户数据,然后直接获取为生成该用户数据对应的特征向量而针对该分片数据生成的子特征向量,从而避免重复计算子特征向量。如图8所示,存储盘1存储有用户数据A拆分得到的A1_g、A2_y、A3_o和A4_b,同时其也可以存储有对A1_g、A2_y、A3_o和A4_b进行纠错编码所生成的校验数据PA,其中,A1_g、A2_y、A3_o和A4_b与PA共同构成一个纠错码码字,从而提供单盘的纠错保护,其他用户数据存储盘同理,例如存储盘2还存储有对B1_b、B2_g、B3_y和B4_o进行纠错编码所生成的校验数据PB,存储盘3还存储有对C1_o、C2_b、C3_g和C4_y进行纠错编码所生成的校验数据PC,存储盘4还存储有对D1_y、D2_o、D3_b和D4_g进行纠错编码所生成的校验数据PD,从而分别提供针对各用户数据的单盘纠错保护。同时,以分片数据组g为例,其所包含的分片数据A1_g对应的子向量特征不仅用于生成分片数据组g对应的特征向量,还被用于生成用户数据A对应的特征向量。
图8中有一行代表计算参数,分别为Hu1、Hu2、Hu3、Hu4和Hp,纵向上对齐任一计算参数的数据与该任一计算参数在编码过程中互为计算相关因子,例如Hu1与A1_g、B1_b、C1_o、D1_y和Pg纵向对齐,这意味着在编码过程中Hu1要分别与A1_g、B1_b、C1_o、D1_y和Pg共同参与到对子向量特征的计算,或者Hp与PA、PB、PC、PD和PP纵向对齐,这意味着在编码过程中生成PA、PB、PC、PD和PP需要Hp参与计算。
如前所述,本说明书实施例所涉及生成子特征向量或校验数据的计算任务可以分摊至m个用户数据存储盘,下面以图9为例来介绍将生成子向量特征和校验数据的计算任务分摊后,各存储盘的任务执行情况。图9是本说明书根据一示例性实施例提供的另一种应用场景下各存储盘执行计算任务的时序图,具体是图8应用场景下各存储盘执行计算任务的时序图。如图7所示,设每个存储盘中内置的纠错编码器的效率相同,即每次矩阵乘法的运算需要消耗的时间单位均为T。那么存储盘1需要分别计算出A1_g、A2_y、A3_o和A4_b分别对应的4个子向量特征,同理存储盘2、3、4也分别都会计算出4个子向量特征,于是计算出所有的共16个子向量特征仅需要消耗4T的时间。而在这之后,每个存储盘可以通过对自身生成的子特征向量进行求和以得到各自存储的用户数据对应的特征向量,并利用矩阵乘法得到各自存储的用户数据对应的校验数据,这一步需要消耗一个T。具体而言,存储盘1基于求和得到用户数据A对应的特征向量SA与Hp的逆矩阵生成用户数据A对应的校验数据PA,存储盘2基于求和得到用户数据B对应的特征向量SB与Hp的逆矩阵生成用户数据B对应的校验数据PB,存储盘3基于求和得到用户数据C对应的特征向量SC与Hp的逆矩阵生成用户数据C对应的校验数据PC,存储盘4基于求和得到用户数据D对应的特征向量SD与Hp的逆矩阵生成用户数据D对应的校验数据PD。
接着,由于子向量特征可以通过共享内存空间在不同存储盘之间传递,因此任一存储盘均可以将A1_g、B2_g、C3_g和D4_g分别对应的子特征向量求和得到分片数据组g对应的特征向量Sg,并利用矩阵乘法得到最终的校验数据Pg;同理,任一存储盘也可以得到分片数据组y、分片数据组o和分片数据组b分别对应的特征向量Sy、So和Sb,并利用矩阵乘法分别得到最终的校验数据Py、Po和Pb。由于最终生成的校验数据仅有4个,即生成校验数据的过程所需执行的矩阵乘法的任务仅包含4次,而存储盘一共包含5个(即进行矩阵乘法的纠错编码器包含5个),因此全局只需要花费一个T就能够完成上述应用场景下对所有分片数据组对应的校验数据的生成过程,另外生成的校验数据同样可以通过数据共享(存入共享内存空间)来向存储盘5传递,并在第6个T中实现写入存储盘5。在时间轴走完6T以后,存储盘1-4内置的纠错编码器处于空闲状态,可以从第7个T开始对另外的4组分片数据组及其来源的另外4个用户数据进行纠错编码,从而进入下一个工作流程,下一次工作流程的任务执行时序完全一致,涉及到存储盘1-4首先花费6T,然后是存储盘5单独花费5T,并以此方式进行循环。
最后,存储盘5中的纠错码编码器还会基于获取得到的校验数据Pg、Py、Po与Pb作为一个用户数据或分片数据组来执行本申请所涉及的编码方法,具体而言,其需要将Pg、Py、Po与Pb分别与对应的信息位子矩阵相乘得到各自对应的子向量特征,求和得到Pg、Py、Po与Pb对应的特征向量SP,同时再次进行一次矩阵乘法得到Pg、Py、Po与Pb对应的特殊校验数据PP,从而构建盘内的纠错能力,这部分一共花费5T,而这个时间完全可以被此时存储盘1-4并行执行下一个工作流程的任务所需花费的6T所掩盖掉,因此从长期连续执行数据存储的工作流上来看,该系统完成一个工作流程的时间为6T。
综上,为实现图8所示应用场景下的完整编码过程,一共需要11T的时间,并且从第7个T开始,存储盘1-4可以执行下一个工作流程,因此从连续的工作过程上来看,为实现图8所示应用场景下的编码过程,平均需要6T的时间,其充分利用了各存储盘内置的纠错编码器,具有较高的资源利用率与执行效率。
在所述m个分片数据分别来源于m条用户数据的基础上,所述m条用户数据属于同一用户数据组,不同的用户数据组均包含有m条用户数据,且不同用户数据组彼此之间包含的用户数据互不相同或者部分相同。在本说明书实施例中,将进行联合数据保护的m条用户数据构成的一个集合称为用户数据组,前述方案中针对m个用户数据进行存储的一个工作流程也即针对一个用户数据组的工作流程。显然,在一个连续的工作流之中,可以对针对一个用户数据组的工作流程进行反复执行,这就涉及到多个不同的用户数据组,并且不同的用户数据组均包含有m条用户数据。
在本说明书实施例中,可以设置不同用户数据组彼此之间包含的用户数据完全互不相同,或者部分相同。例如,当下一个工作流程需要存储的数据无法凑满一个用户数据组时,例如仅包含两个用户数据,传统的方案在前文已经阐述,是通过增补无效数据来与两个用户数据凑成一个完整的用户数据组,并执行针对该用户数据组的工作流程,然而该方案由于需要额外向用户数据存储盘存入无效数据,显然会增加存储成本且降低计算效率。而在本说明书实施例中,通过设置不同用户数据组彼此之间包含的用户数据部分相同,即将用户数据存储盘在之前的工作流程中已经存储的用户数据作为当前工作流程下的用户数据组所虚拟增补的用户数据,从而同样可以凑成一个完整的用户数据组并执行对应的工作流程。本说明书实施例相较于传统的方案,由于并没有真正的向用户数据存储盘无效数据,而是复用以前存储的用户数据从而虚拟地增补数据,这个过程只需要标记当前用户数据组所虚拟增补的用户数据的位置信息即可,而没有额外存储新的数据,因此不会增加存储成本;另一方面,计算当前用户数据组包含的m个用户数据所锚定的m个分片数据组对应的校验数据时,需要利用到各用户数据拆分得到的分片数据分别对应的子向量特征,而由于本说明书实施例复用了过去已经存储在用户数据存储盘中的用户数据,显然已经计算过其所拆分得到的分片数据对应的子向量特征,因此本说明书实施例可以直接复用这些子向量特征而不需要重新计算,因此也没有引入额外的计算成本,对计算效率产生的影响较小。因此,通过设置不同用户数据组彼此之间包含的用户数据部分相同,能够在不引入额外的存储成本且不降低计算效率的情况下适用单独针对少量数据进行存储的应用场景。
在所述m个分片数据分别来源于m条用户数据的基础上,所述m个用户数据存储盘和/或区别于用户数据存储盘的k个校验数据存储盘部署于相同或不同的服务器中,k≥1且k为整数。如图5所示,存储盘1-5为用户数据存储盘和/或校验数据存储盘,其中这些存储盘可以部署于同一个服务器中,也可以部署于不同的服务器中。例如存储盘1与存储盘2就存储于同一个服务器A中,而存储盘3和存储盘4则分别部署于服务器X与服务器Z。在纠删码存储方案下,用于进行纠删编/解码的纠删码编码器和纠删码解码器均部署于服务器上,而每个服务器所装备的纠删码编/解码器的配置相对固定,难以实现能力扩展,这意味着任一服务器在进行存储盘的扩展后,势必导致该服务器所负责的纠删编/解码的任务加重,从而导致较大的卡顿。因此,在纠删码功能与服务器绑定的系统架构下,不同的服务器具有较强的同质化需求,其所分别部署存储盘数量也相对固定且平均,难以在服务器层面实现计算资源(纠删码编/解码器的配置)与存储资源(存储盘数量)的灵活扩容。而通过本说明书实施例,由于取消了纠删码的保护而转以纠错码保护进行代替,因此取消了计算资源与服务器之间的强绑定关系,因此可以在服务器层面实现对存储资源的灵活扩容,即不同的服务器可以部署不同数量的存储盘,同时,由于执行纠错编码的主体同时也内置于存储盘中,因此扩容存储盘的同时也会赋予服务器整体更强大的计算资源,从而同时可以在服务器层面实现计算资源的灵活扩容。
可选的,还包括:将所述分片数据组对应的校验数据提供至区别于用户数据存储盘的任一校验数据存储盘进行存储;或者,将所述分片数据组对应的校验数据拆分出的k个分片校验数据分别提供至一一对应的k个校验数据存储盘进行存储,k≥1且k为整数。
在本说明书实施例中,可以将分片数据组对应的校验数据提供至同一个校验数据存储盘中进行存储,也可以将该校验数据拆分为k个分片校验数据,并分别提供至一一对应的k个校验数据存储盘中进行存储。校验数据被存储到校验数据存储盘中后,将与其他的用户数据存储盘一同构成针对该分片数据组的多盘容灾能力,当一个或多个用户数据存储盘中存储的属于该分片数据组的分片数据丢失或出错时,或者一个或多个校验数据存储盘中存储的对应于该分片数据组的校验分片数据/校验数据丢失或出错时,可以通过读取这些与存储有分片数据组包含的分片数据或对应的校验分片数据/校验数据的存储盘,以获取该分片数据组中包含的分片数据以及对应的校验分片数据/校验数据,从而通过纠错解码而恢复,当然最终的恢复情况需要考虑丢失或出错的数据不超过相应纠错能力的极限。需要说明的是,在校验数据进行拆分时,为了方便得到的拆分校验数据依然可以复用校验矩阵进行单盘的纠错编码,因此可以设定任一拆分校验数据的规格与任一分片数据的规格相同,这也意味着校验位子矩阵的长度总是用户数据子矩阵长度的k倍,同时校验数据的长度也总是分片数据的k倍。
图10是本说明书根据一示例性实施例提供的一种解码方法的流程图。该方法应用于纠错码解码器;如图10所示,该方法包括以下步骤:
S1002:从m个用户数据存储盘分别一一对应地读取分片数据组包含的m个分片数据;其中,所述m个分片数据与用户数据子矩阵拆分出的m个信息位子矩阵一一对应,所述用户数据子矩阵属于用于纠错编码的校验矩阵并对应于该校验矩阵的信息位,且该校验矩阵还包含对应于校验位的校验位子矩阵。
本说明书实施例所涉及的纠错码解码器可以是内置于任一用户数据存储盘或任意校验数据存储盘中的纠错码解码器,也可以是由任一服务器或第三方装备的纠错码解码器。
S1004:获取所述分片数据组对应的校验数据,该校验数据基于所述分片数据组对应的特征向量与所述校验位子矩阵的逆矩阵生成,所述分片数据组对应的特征向量由所述m个分片数据分别对应的m个子特征向量进行求和得到,任一分片数据对应的子特征向量基于所述任一分片数据及其对应的信息位子矩阵生成。
如前所述,校验数据可能存储于某一个校验数据存储盘中,或者被拆分为k份后分别存储于k个校验数据存储盘中,k≥1且k为整数。因此,纠错码解码器可以通过从某一校验数据存储盘中直接读取已获取该校验数据,或者从k个用户数据存储盘分别一一对应地读取对应于该分片数据组的k个校验分片数据,并将k个校验分片数据拼接得到该校验数据。
需要注意的是,如果在获取m个分片数据或校验数据时,发现数据存在部分或全部的丢失,可以将丢失的部分重置为预设信息位,例如将丢失部分全部置位为0或1,或者置位为随机数据,从而使得即使存在数据丢失最终可以构建得到完整纠错码码字,并利用纠错解码恢复得到正确的纠错码码字,并进一步恢复得到丢失或出错的数据。
S1006:以所述m个分片数据与所述分片数据组对应的校验数据作为所述分片数据组对应的纠错码码字,基于所述校验矩阵与所述分片数据组对应的纠错码码字生成纠错结果向量,并基于所述纠错结果向量确定所述分片数据组对应的纠错码码字的解码结果,m>1且m为整数。
具体而言,所述基于所述纠错结果向量确定所述分片数据组对应的纠错码码字的解码结果,包括:在所述纠错结果向量为零向量的情况下,将所述解码结果确定为所述m个分片数据拼接得到的数据;在所述纠错结果向量不为零向量的情况下,循环调整所述分片数据组对应的纠错码码字,直至调整后的纠错码码字与所述校验矩阵生成的纠错结果向量为零向量,将所述解码结果确定为将所述调整后的纠错码码字中对应于信息位的数据。在本说明书实施例中,基于所述校验矩阵与所述分片数据组对应的纠错码码字生成纠错结果向量,具体是指的,将所述分片数据组对应的纠错码码字与所述校验矩阵进行矩阵乘法以生成纠错结果向量。在纠错结果向量为零向量的情况下,说明当前构成的纠错码码字没有出错,因此可以直接将所述m个分片数据作为所述分片数据组对应的纠错码码字的解码结果。在纠错结果向量不为零向量的情况下,说明当前构成的纠错码码字存在误码,需要进一步通过纠错译码的算法来进行解码,本说明书实施例所涉及的对分片数据组对应的纠错码码字进行循环调整以及重复校验的方法可以包括比特反转算法或置信传播算法,相关技术中已有详细论述。
图10所示的实施例作为前述图2所述编码方法实施例对应的解码方法实施例,其有关编码部分的技术细节在图2实施例中均有详细的描述记载,此处不再赘述。
本说明书实施例提出了一种解码方法,实现了一种基于纠错码的多盘数据保护和数据存储的方案,以用于替代原有纠删码存储方案所具有的多盘容灾的数据恢复功能。由于多盘的数据保护的功能不再由纠删码实现,因此本说明书实施例实际上取消了服务器主机端独立完成纠删码编/解码的要求,从而无需设置如图1中的纠删码编/解码器以及纠删码的码构造等一系列与纠删码相关的功能与实现,降低了独立设置纠删码时所需的功能器、计算资源、码构造设计等系列成本;同时,通过纠错码的数据保护机制来替代纠删码的数据保护机制,由于纠错码的码率接近香农极限,高于纠删码的码率,因此在取得同等数据恢复能力时所需加入的冗余更少,节省了更多的存储空间;另外,本说明书实施例将传统的纠错编码的过程拆解为了多个分片数据与相应信息位子矩阵和校验位子矩阵进行计算的多个分段步骤,而这个过程中生成了大量例如子向量特征的计算中间结果,由于每个存储盘本身也需要将其存储的数据进行单盘纠错编码以形成单盘的数据保护能力,这使得本说明书实施例所涉及的多盘纠错编码与每个存储盘原生的单盘纠错编码复用相同的编/解码器以及计算中间结果成为可能,从而大大降低了实现联合数据保护场景的软硬件成本与计算成本。
可选的,所述m个分片数据分别来源于一一对应的m条用户数据,每一分片数据为其对应的用户数据拆分得到的分片数据之一,所述m条用户数据中的每条用户数据分别被按照m份进行拆分;所述m条用户数据分别由一一对应的所述m条用户数据存储盘进行存储,每一用户数据存储盘还存储有自身所存储的用户数据对应的特征向量与所述校验子矩阵的逆矩阵生成的校验数据,该校验数据与自身所存储的用户数据共同构成针对该用户数据的纠错码码字,且自身所存储的用户数据对应的特征向量由该用户数据拆分出的m个分片数据分别对应的m个子特征向量进行求和得到,所述从m个用户数据存储盘分别一一对应地读取分片数据组包含的m个分片数据,包括:从m条用户数据存储盘分别读取得到所述m条用户数据及其对应的m个校验数据;基于所述校验矩阵、所述m条用户数据及其对应的所述m个校验数据进行纠错解码,得到所述m条用户数据分别对应的m个纠正数据;从所述m个纠正数据中获取属于所述分片数据组的m个分片数据。
以图8为例来介绍本说明书实施例。假设现在需要对分片数据组g对应的纠错码码字进行解码,那么就需要首先从存储盘1-4中分别获取完整的用户数据A、B、C、D,以及对应的校验数据PA、PB、PC、PD,然后分别基于A与PA、B与PB、C与PC、D与PD构成对应的用户数据A、B、C、D分别对应的4个纠错码码字,并同时对这4个纠错码码字进行纠错解码,从而生成得到用户数据A、B、C、D分别对应的4个纠正数据,例如当4个纠错码码字不存在错码时,得到的4个纠正数据即为用户数据A、B、C、D本身。在纠正数据的基础上,按照拆分原则再拆分得到属于分片数据组g的4个分片数据,例如当4个纠正数据即为用户数据A、B、C、D本身时,再从用户数据A拆分得到A1_g,从用户数据B拆分得到B2_g,从用户数据C拆分得到C3_g,从用户数据D拆分得到D4_g,以最终获取属于所述分片数据组g的4个分片数据。
本说明书实施例结合了多盘针对分片数据组的纠错能力与单盘针对用户数据的纠错能力,首先通过各用户数据存储盘单盘的纠错能力对属于分片数据组的分片数据进行单盘的纠错解码,然后再进行基于分片数据组的纠错解码,从而构成一种联合纠错解码方案,大大提高了系统层面的数据纠错与数据恢复的能力。当然,除了可以事先利用用户数据存储盘的纠错能力以外,也可以按照同样的方式,利用校验数据存储盘的纠错能力对从校验数据存储盘获取的校验数据进行单盘的纠错解码,从而进一步提高系统层面的数据纠错能力。如图8所示,在获取到Pg之前,还会利用存储盘5存储的Pg、Py、Po、Pb和PP构成纠错码码字并进行纠错解码,并从纠正后的纠错码码字中拆分得到纠正后的Pg。
图11是本说明书根据一示例性实施例提供的一种编码系统的示意图。如图11所示,该系统包括:部署于至少一个服务器上的用户数据存储盘与校验数据存储盘,所述用户数据存储盘用于存储用户数据,所述校验数据存储盘用于存储校验数据;其中,任一服务器、任一用户数据存储盘或任一校验数据存储盘中部署有纠错码编码器,所述纠错码编码器用于执行如本说明书所涉及的任一编码方法实施例中所述的方法。如图11所示,用户数据存储盘共有m个,校验数据存储盘共有k个,并且这些存储盘可以部署于同一个服务器中,也可以部署于多个不同的服务器中,其中,m>1且m为整数,k≥1且k为整数。
图12是本说明书根据一示例性实施例提供的一种解码系统的示意图。如图12所示,该系统包括:部署于至少一个服务器上的用户数据存储盘与校验数据存储盘;所述用户数据存储盘用于存储用户数据,所述校验数据存储盘用于存储校验数据;其中,任一服务器、任一用户数据存储盘或任一校验数据存储盘中部署有纠错码解码器,所述纠错码解码器用于执行如本说明书所涉及的任一解码方法实施例中所述的方法。如图12所示,用户数据存储盘共有m个,校验数据存储盘共有k个,并且这些存储盘可以部署于同一个服务器中,也可以部署于多个不同的服务器中,其中,m>1且m为整数,k≥1且k为整数。
图13是本说明书根据一示例性实施例提供的一种设备的结构示意图。请参考图13,在硬件层面,该设备包括处理器1302、内部总线1304、网络接口1306、内存1308以及非易失性存储器1310,当然还可能包括其他功能所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器1302从非易失性存储器1310中读取对应的计算机程序到内存1308中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
如图14所示,图14是本说明书根据一示例性实施例提供的一种编码装置的框图,该装置应用于如图1中所示的纠错码编码器;该装置包括:
分片数据确定单元1401,用于确定包含m个分片数据的分片数据组,所述m个分片数据分别由一一对应的m个用户数据存储盘进行存储;其中,所述m个分片数据与用户数据子矩阵拆分出的m个信息位子矩阵一一对应,所述用户数据子矩阵属于用于纠错编码的校验矩阵并对应于该校验矩阵的信息位,且该校验矩阵还包含对应于校验位的校验位子矩阵。
子向量特征获取单元1402,用于获取所述m个分片数据分别对应的m个子特征向量,并求和得到所述分片数据组对应的特征向量;其中,任一分片数据对应的子特征向量基于所述任一分片数据及其对应的信息位子矩阵生成。
校验数据生成单元1403,用于基于所述分片数据组对应的特征向量与所述校验位子矩阵的逆矩阵生成所述分片数据组对应的校验数据,且该校验数据与所述m个分片数据共同构成所述分片数据组对应的纠错码码字,m>1且m为整数。
可选的,所述任一分片数据对应的子特征向量由存储有所述任一分片数据的用户数据存储盘生成并提供。
可选的,任一用户数据存储盘维护有用于缓存自身生成的子特征向量的共享内存空间,所述m个用户数据存储盘之间通过各自维护的所述共享内存空间获取彼此生成的子特征向量。
可选的,所述m个分片数据由同一条用户数据按照m份进行拆分得到。
可选的,所述m个分片数据分别来源于m条用户数据,每一分片数据为其对应的用户数据拆分得到的分片数据之一。
可选的,所述m条用户数据中的每条用户数据分别被按照m份进行拆分;所述装置还包括:
m个校验数据生成单元1404,用于生成m个分片数据组分别对应的m个校验数据,其中,任一分片数据组均包含有分别来源于所述m条用户数据的m个分片数据,且不同分片数据组彼此之间包含的分片数据互不相同。
可选的,所述m个校验数据存储在区别于用户数据存储盘的校验数据存储盘,该校验数据存储盘还存储有基于所述校验矩阵对所述m个校验数据进行纠错编码得到的特殊校验数据,且所述m个校验数据与所述特殊校验数据共同构成所述m个校验数据对应的纠错码码字。
可选的,所述m条用户数据中的每条用户数据分别被按照m份进行拆分;所述m条用户数据分别由一一对应的所述m个用户数据存储盘进行存储,每一用户数据存储盘还存储有自身所存储的用户数据对应的特征向量与所述校验子矩阵的逆矩阵生成的校验数据,该校验数据与自身所存储的用户数据共同构成针对该用户数据的纠错码码字,且自身所存储的用户数据对应的特征向量由该用户数据拆分出的m个分片数据分别对应的m个子特征向量进行求和得到;
所述子向量特征获取单元1402具体用于:确定所述任一分片数据所属的用户数据,并获取为生成该用户数据对应的特征向量而针对该任一分片数据生成的子特征向量。
可选的,所述m条用户数据属于同一用户数据组,不同的用户数据组均包含有m条用户数据,且不同用户数据组彼此之间包含的用户数据互不相同或者部分相同。
可选的,所述m个用户数据存储盘和/或区别于用户数据存储盘的k个校验数据存储盘部署于相同或不同的服务器中,k≥1且k为整数。
可选的,还包括:
校验数据存储单元1405,用于将所述分片数据组对应的校验数据提供至区别于用户数据存储盘的任一校验数据存储盘进行存储;或者,将所述分片数据组对应的校验数据拆分出的k个分片校验数据分别提供至一一对应的k个校验数据存储盘进行存储,k≥1且k为整数。
如图15所示,图15是本说明书根据一示例性实施例提供的一种解码装置的框图,该装置应用于纠错码解码器;该装置包括:
分片数据获取单元1501,用于从m个用户数据存储盘分别一一对应地读取分片数据组包含的m个分片数据;其中,所述m个分片数据与用户数据子矩阵拆分出的m个信息位子矩阵一一对应,所述用户数据子矩阵属于用于纠错编码的校验矩阵并对应于该校验矩阵的信息位,且该校验矩阵还包含对应于校验位的校验位子矩阵。
校验数据获取单元1502,用于获取所述分片数据组对应的校验数据,该校验数据基于所述分片数据组对应的特征向量与所述校验位子矩阵的逆矩阵生成,所述分片数据组对应的特征向量由所述m个分片数据分别对应的m个子特征向量进行求和得到,任一分片数据对应的子特征向量基于所述任一分片数据及其对应的信息位子矩阵生成。
解码单元1503,用于以所述m个分片数据与所述分片数据组对应的校验数据作为所述分片数据组对应的纠错码码字,基于所述校验矩阵与所述分片数据组对应的错码码字生成纠错结果向量,并基于所述纠错结果向量确定所述分片数据组对应的纠错码码字的解码结果,m>1且m为整数。
可选的,所述解码单元1503具体用于:
在所述纠错结果向量为零向量的情况下,将所述解码结果确定为所述m个分片数据拼接得到的数据;
在所述纠错结果向量不为零向量的情况下,循环调整所述分片数据组对应的纠错码码字,直至调整后的纠错码码字与所述校验矩阵生成的纠错结果向量为零向量,将所述解码结果确定为将所述调整后的纠错码码字中对应于信息位的数据。
可选的,所述m个分片数据分别来源于一一对应的m条用户数据,每一分片数据为其对应的用户数据拆分得到的分片数据之一,所述m条用户数据中的每条用户数据分别被按照m份进行拆分;所述m条用户数据分别由一一对应的所述m条用户数据存储盘进行存储,每一用户数据存储盘还存储有自身所存储的用户数据对应的特征向量与所述校验子矩阵的逆矩阵生成的校验数据,该校验数据与自身所存储的用户数据共同构成针对该用户数据的纠错码码字,且自身所存储的用户数据对应的特征向量由该用户数据拆分出的m个分片数据分别对应的m个子特征向量进行求和得到,所述分片数据获取单元1501具体用于:
从m条用户数据存储盘分别读取得到所述m条用户数据及其对应的m个校验数据;基于所述校验矩阵、所述m条用户数据及其对应的所述m个校验数据进行纠错解码,得到所述m条用户数据分别对应的m个纠正数据;从所述m个纠正数据中获取属于所述分片数据组的m个分片数据。
相应的,本说明书还提供一种装置,所述装置包括有处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为实现上述全部方法实施例提供的编码或解码方法的步骤。
相应的,本说明书还提供一种计算机可读存储介质,其上存储有可执行的指令;其中,该指令被处理器执行时,实现上述全部方法实施例提供的编码或解码方法的步骤。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
Claims (14)
1.一种编码方法,包括:
确定包含m个分片数据的分片数据组,所述m个分片数据分别由一一对应的m个用户数据存储盘进行存储;其中,所述m个分片数据与用户数据子矩阵拆分出的m个信息位子矩阵一一对应,所述用户数据子矩阵属于用于纠错编码的校验矩阵并对应于该校验矩阵的信息位,且该校验矩阵还包含对应于校验位的校验位子矩阵;
获取所述m个分片数据分别对应的m个子特征向量,并求和得到所述分片数据组对应的特征向量;其中,任一分片数据对应的子特征向量基于所述任一分片数据及其对应的信息位子矩阵生成;
基于所述分片数据组对应的特征向量与所述校验位子矩阵的逆矩阵生成所述分片数据组对应的校验数据,且该校验数据与所述m个分片数据共同构成所述分片数据组对应的纠错码码字,m>1且m为整数。
2.根据权利要求1所述的方法,所述任一分片数据对应的子特征向量由存储有所述任一分片数据的用户数据存储盘生成并提供。
3.根据权利要求2所述的方法,任一用户数据存储盘维护有用于缓存自身生成的子特征向量的共享内存空间,所述m个用户数据存储盘之间通过各自维护的所述共享内存空间获取彼此生成的子特征向量。
4.根据权利要求1所述的方法,所述m个分片数据由同一条用户数据按照m份进行拆分得到;或者,
所述m个分片数据分别来源于m条用户数据,每一分片数据为其对应的用户数据拆分得到的分片数据之一。
5.根据权利要求4所述的方法,所述m条用户数据中的每条用户数据分别被按照m份进行拆分;所述方法还包括:
生成m个分片数据组分别对应的m个校验数据,其中,任一分片数据组均包含有分别来源于所述m条用户数据的m个分片数据,且不同分片数据组彼此之间包含的分片数据互不相同。
6.根据权利要求5所述的方法,所述m个校验数据存储在区别于用户数据存储盘的校验数据存储盘,该校验数据存储盘还存储有基于所述校验矩阵对所述m个校验数据进行纠错编码得到的特殊校验数据,且所述m个校验数据与所述特殊校验数据共同构成所述m个校验数据对应的纠错码码字。
7.根据权利要求4所述的方法,所述m条用户数据中的每条用户数据分别被按照m份进行拆分;所述m条用户数据分别由一一对应的所述m个用户数据存储盘进行存储,每一用户数据存储盘还存储有自身所存储的用户数据对应的特征向量与所述校验子矩阵的逆矩阵生成的校验数据,该校验数据与自身所存储的用户数据共同构成针对该用户数据的纠错码码字,且自身所存储的用户数据对应的特征向量由该用户数据拆分出的m个分片数据分别对应的m个子特征向量进行求和得到;
获取所述分片数据组中的任一分片数据对应的子特征向量,包括:确定所述任一分片数据所属的用户数据,并获取为生成该用户数据对应的特征向量而针对该任一分片数据生成的子特征向量。
8.根据权利要求4所述的方法,所述m条用户数据属于同一用户数据组,不同的用户数据组均包含有m条用户数据,且不同用户数据组彼此之间包含的用户数据互不相同或者部分相同。
9.根据权利要求1所述的方法,还包括:
将所述分片数据组对应的校验数据提供至区别于用户数据存储盘的任一校验数据存储盘进行存储;或者,
将所述分片数据组对应的校验数据拆分出的k个分片校验数据分别提供至一一对应的k个校验数据存储盘进行存储,k≥1且k为整数。
10.一种解码方法,包括:
从m个用户数据存储盘分别一一对应地读取分片数据组包含的m个分片数据;其中,所述m个分片数据与用户数据子矩阵拆分出的m个信息位子矩阵一一对应,所述用户数据子矩阵属于用于纠错编码的校验矩阵并对应于该校验矩阵的信息位,且该校验矩阵还包含对应于校验位的校验位子矩阵;
获取所述分片数据组对应的校验数据,该校验数据基于所述分片数据组对应的特征向量与所述校验位子矩阵的逆矩阵生成,所述分片数据组对应的特征向量由所述m个分片数据分别对应的m个子特征向量进行求和得到,任一分片数据对应的子特征向量基于所述任一分片数据及其对应的信息位子矩阵生成;
以所述m个分片数据与所述分片数据组对应的校验数据作为所述分片数据组对应的纠错码码字,基于所述校验矩阵与所述分片数据组对应的纠错码码字生成纠错结果向量,并基于所述纠错结果向量确定所述分片数据组对应的纠错码码字的解码结果,m>1且m为整数。
11.一种编码系统,包括:部署于至少一个服务器上的用户数据存储盘与校验数据存储盘,所述用户数据存储盘用于存储用户数据,所述校验数据存储盘用于存储校验数据;
其中,任一服务器、任一用户数据存储盘或任一校验数据存储盘中部署有纠错码编码器,所述纠错码编码器用于执行如权利要求1-9中任一项所述的方法。
12.一种解码系统,包括:部署于至少一个服务器上的用户数据存储盘与校验数据存储盘;所述用户数据存储盘用于存储用户数据,所述校验数据存储盘用于存储校验数据;
其中,任一服务器、任一用户数据存储盘或任一校验数据存储盘中部署有纠错码解码器,所述纠错码解码器用于执行如权利要求10所述的方法。
13.一种电子设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1-10中任一项所述的方法。
14.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,该指令被处理器执行时实现如权利要求1-10中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211242846.7A CN115599298A (zh) | 2022-10-11 | 2022-10-11 | 一种编码/解码方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211242846.7A CN115599298A (zh) | 2022-10-11 | 2022-10-11 | 一种编码/解码方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115599298A true CN115599298A (zh) | 2023-01-13 |
Family
ID=84846669
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211242846.7A Pending CN115599298A (zh) | 2022-10-11 | 2022-10-11 | 一种编码/解码方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115599298A (zh) |
-
2022
- 2022-10-11 CN CN202211242846.7A patent/CN115599298A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9600365B2 (en) | Local erasure codes for data storage | |
US8928503B2 (en) | Data encoding methods, data decoding methods, data reconstruction methods, data encoding devices, data decoding devices, and data reconstruction devices | |
US8775860B2 (en) | System and method for exact regeneration of a failed node in a distributed storage system | |
JP5805727B2 (ja) | 縮退故障を有するメモリセルに対応するためのデータ符号化及び復号化 | |
CN111858169B (zh) | 一种数据恢复方法、系统及相关组件 | |
CN112000512B (zh) | 一种数据修复方法及相关装置 | |
CN114153651B (zh) | 一种数据编码方法、装置、设备及介质 | |
CN111090540B (zh) | 基于纠删码的数据处理方法与装置 | |
TW202011189A (zh) | 分散式存儲系統、方法和裝置 | |
CN111078460A (zh) | 一种快速纠删码计算方法 | |
WO2019246527A1 (en) | Method and apparatus for improved data recovery in data storage systems | |
CN114510368A (zh) | 一种基于rs纠删码的编解码加速方法及系统 | |
US20200336157A1 (en) | Systematic and xor-based coding technique for distributed storage systems | |
CN108432170B (zh) | 用于多码分布式存储的装置和方法 | |
CN115599298A (zh) | 一种编码/解码方法和系统 | |
CN107665152B (zh) | 一类纠删码的译码方法 | |
EP3054602A1 (en) | Product-matrix regenerating codes | |
CN114691414A (zh) | 一种校验块生成方法及一种数据恢复方法 | |
US9450617B2 (en) | Distribution and replication of erasure codes | |
US20210055993A1 (en) | Methods and Apparatuses for Robust Data Partition And Recovery | |
WO2016042090A1 (en) | Method and apparatus for processing data in storage systems | |
CN107615248B (zh) | 分布式数据存储方法、控制设备和系统 | |
US20140317162A1 (en) | Using Carry-less Multiplication (CLMUL) to Implement Erasure Code | |
US20190020359A1 (en) | Systematic coding technique for erasure correction | |
US10949302B2 (en) | Erasure-coding-based efficient data storage and retrieval |
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 |