纠删码数据的快速编解码方法和系统技术方案

技术编号:12889844 阅读:66 留言:0更新日期:2016-02-17 23:41
本发明专利技术涉及数据编解码技术领域,公开了一种纠删码数据的快速编解码方法和系统。其编码方法包括步骤:根据分片数n和冗余数m,通过对范德蒙德矩阵或柯西矩阵的变换,得到第一行和第一列元素均为1的生成矩阵;初始化编码乘法缓存表;将待编码数据分为n个原数据,根据所述n个原数据和所述生成矩阵,利用编码乘法缓存表计算出m个校验码;将所述n个原数据和得到的m个校验码分别存储和/或传输。本发明专利技术使用的生成矩阵使得无论在编码还是解码时,都能够减少伽罗瓦域乘法运算数量,且兼容副本算法,大幅提高了纠删码数据的处理速度,从而在不牺牲数据处理效率及不增大硬件成本的情况下保证了分布式系统尤其是云存储系统中数据的可靠性和有效性。

【技术实现步骤摘要】

本专利技术涉及数据编解码
,具体涉及一种纠删码数据的快速编解码方法和 系统。
技术介绍
计算机数据在传输或者存储时,往往因为噪音或者设备损坏等问题,会造成部分 信息丢失。为保持数据的可靠性和有效性,通过在信息编码时加入冗余校验码,可以达到容 错和纠错的目的,此类技术通常被称为纠删码(ErasureCodes,简称EC,亦被称为擦除码、 纠错码等)技术。在云存储中使用的EC-般有两种,即Reed-Solomon纠删码(简称RS纠 删码)和低密度奇偶校验码(LowDensityParityCheckCode,简称LDPC纠删码)。其中 RS纠删码具有MDS(MaximumDistanceSeparable,最大距离分割)性质,因此比LDPC码具 有更高的编码率。 RS纠删码方法是将原始文件编码后,分为大小相同的η个原始数据分片和m个校 验分片,分别进行存储或通讯。对于文件存储或者通讯接收方,只要获得其中任意η个分 片,即可通过解码方式恢复原文件或者数据,因此可以抗m个分片损坏或者丢失,大大提高 了系统的可靠性。对于计算机文件存储,因m远小于n,其存储空间利用率为rVOn+n),远远 高于副本存储方式。因此,RS纠删码通过消耗计算资源换取存储能力,显著降低了存储成 本和运维成本。 通常,将η个源数据编码为m+n个数据的RS纠删码一般记作(m+n,η)纠删码。 其实现技术关键是寻找一个生成矩阵G,该矩阵中任意η列均线性无关。目前的RS编码 技术中,生成矩阵有两种:范德蒙德矩阵和柯西矩阵,使用它们的编码分别被称为范德蒙码 (VandermondCode)和柯西码(CauchyCode)。 以下是范德蒙德矩阵和柯西矩阵的定义(不包括单位阵部分),其中,G1为范德 蒙德矩阵,各个a;互不相同且不为0 ;G2为柯西矩阵,古0,且当i古j时,X;古χ。和 yi古y.j: 利用上述生成矩阵,編妈原理是:n个原始数据DLDpD2,…,DJ來以生成矩阵G1 或G2,产生η个原始数据DQ^Dz,…,DJ和m个校验数据Ρ;随后在编码时使用的生成矩阵(含η阶单位阵I)中去掉未出现的m个数据对 应的单位阵中那一列,组成一个新的生成矩阵G,然后计算G的逆矩阵G',最后由D' *G' = D得到原始数据。为了使矩阵运算的结果保持在整数域,运算改为限定在伽罗瓦域(Galois Field),在编解码过程中,一般以字节或者双字节为单位进行,则对应的伽罗瓦域为GF(2S) 或者GF(216)进行。伽罗瓦域中的乘法一般采用双表法(即对数-反对数表法),一个乘法 操作需要5个基本操作;伽罗瓦域中的加法则是异或(X0R,运算符为Φ)操作。对于编码 而言,计算一个校验码Pi,需要循环做η次伽罗瓦域乘法和η次伽罗瓦域加法,共计6n个操 作;计算m个校验码,需要至少6mn个操作。对解码而言,还需要计算逆矩阵G',需要0 (η3) 的计算量。基于上述分析,在现有技术中,范德蒙德码编码复杂度为〇 (mn),解码复杂度为 〇 (η3);柯西码编码复杂度为0(mn),解码复杂度为0 (η2) 〇如采用软件方式实现RS编解码, 运算速度很慢,现有技术下一般只有50~100ΜΒ/秒,极大地限制了RS纠删码的使用。为 此,很多应用和云存储系统,不得不使有专用FPGA(现场可编程门阵列)硬件来加速RS运 算,但这又提高了系统成本,同样不利于其推广。
技术实现思路
针对现有技术中存在的上述缺陷,本专利技术所要解决的技术问题是如何提高纠删码 数据的编解码效率。 为解决上述技术问题,一方面,本专利技术提供一种纠删码数据的快速编码方法,包括 步骤: S11,根据分片数η和冗余数m初始化编码器,通过对范德蒙德矩阵或柯西矩阵的 变换,得到第一行和第一列元素均为1的生成矩阵; S12,初始化编码乘法缓存表; S13,将待编码数据分为η个原数据,根据所述η个原数据和所述生成矩阵,利用编 码乘法缓存表计算出m个校验码; S14,将所述η个原数据和得到的m个校验码分别存储和/或传输。 优选地,所述编码乘法缓存表中数据为所述生成矩阵中每个元素对0x00、0x01至 OxOf以及对0χ00、0χ10至OxfO的伽罗瓦域乘法结果。 优选地,步骤S13中,根据所述η个原数据和所述生成矩阵计算第j个校验码为: 其中,Di为第i个原数据,Gy为所述生成矩阵第i行第j列元素。 优选地,对于第一个校验码Pi,直接计算.0ιΦΙ>2:? ,,,:?Dai的异或和; 对于其余m-1个校验码,第一个原数据01直接用于计算异或和,将参与计算的其 他每个原数据Di拆分为高字节部分和低字节部分,分别乘以对应矩阵元素&以计算伽罗 瓦域乘法,随后再计算对应的异或和以得到校验码;其中,伽罗瓦域乘法结果通过查找所述 编码乘法缓存表得到。 优选地,使用SMD指令计算所述伽罗瓦域乘法和异或和。 优选地,对于云存储系统中较大的文件,先将文件划分为分块,随后对各分块分别 进行步骤S11-S14。 另一方面,本专利技术还同时提供一种纠删码数据的快速解码方法,包括步骤:S21,根据分片数η和冗余数m初始化编码器,通过对范德蒙德矩阵或柯西矩阵的 变换,得到第一行和第一列元素均为1的生成矩阵;S22,初始化编码乘法缓存表;S23,获取m+n个纠删码数据中的至少η个作为待解码数据,其中所述待解码数据 中有n-k个原数据及k个校验码,根据数据获取情况生成k阶解码矩阵;S24,根据所述解码矩阵的逆矩阵初始化解码乘法缓存表;S25,根据所述待解码数据中的k个校验码、n-k个原数据以及所述生成矩阵,利用 编码乘法缓存表计算出k个恢复码;S26,根据所述k个恢复码和所述解码矩阵的逆矩阵,利用解码乘法缓存表计算恢 复丢失的k个原数据,将恢复的原数据和所述待解码数据中的n-k个原数据组成解码数据。 优选地,所述编码乘法缓存表中数据为所述生成矩阵中每个元素对0x00、0x01至 OxOf以及对0χ00、0χ10至OxfO的伽罗瓦域乘法结果;所述解码乘法缓存表中数据为所述 逆矩阵中每个元素对〇χ〇〇、〇χ〇1至OxOf以及对〇x〇〇、〇xl〇至OxfO的伽罗瓦域乘法结果。 优选地,步骤S23中,所述根据数据获取情况生成k阶解码矩阵包括: 在所述生成矩阵中,确定丢失的k个原数据所对应的行和所获取的k个校验码所 对应的列,取其交叉点的元素构成所述解码矩阵。 优选地,步骤S25中,根据所述待解码数据中的k个校验码、n-k个原数据以及所 述生成矩阵计算第j个恢复码为: 其中,P,为所述纠删码数据中的第j个校验码,且P,在已获取的k个校验码中;Di 为第i个原数据,且若Di不在已获取的n-k个原数据中,则Di= 0 为所述生成矩阵第i 行第j列元素。 优选地,对于第一个恢复码P'i,直接计算PiφD! 0D2 ? 啲异或和; 对于其余的恢复码,第一个原数据Di直接用于计算异或和,将参与计算的其他每 个原数据Di拆分为高字节部分和低字节部分,分别乘以对应矩阵元素G、,以计算伽罗瓦域 乘法,随后再计算对应的异或和以得到校验码;其中,伽罗瓦域乘法结果通过查找所述编码 乘法缓存表得到。 优选地,步骤S26中,根据所述k个恢复码和所述解码矩阵的逆本文档来自技高网
...

【技术保护点】
一种纠删码数据的快速编码方法,其特征在于,所述编码方法包括步骤:S11,根据分片数n和冗余数m初始化编码器,通过对范德蒙德矩阵或柯西矩阵的变换,得到第一行和第一列元素均为1的生成矩阵;S12,初始化编码乘法缓存表;S13,将待编码数据分为n个原数据,根据所述n个原数据和所述生成矩阵,利用编码乘法缓存表计算出m个校验码;S14,将所述n个原数据和得到的m个校验码分别存储和/或传输。

【技术特征摘要】

【专利技术属性】
技术研发人员:孙崎
申请(专利权)人:苏宁云商集团股份有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1