掌桥专利:专业的专利平台
掌桥专利
首页

一种数据校验方法、装置、设备及介质

文献发布时间:2023-06-19 18:29:06


一种数据校验方法、装置、设备及介质

技术领域

本申请涉及分布式存储技术领域,特别是涉及一种数据校验方法、装置、设备及介质。

背景技术

近年来,随着互联网的快速发展,对数据存储容量和质量的需求与日俱增。在分布式存储系统中,保证数据写入的可靠性是重中之重,因此为保证数据的存储质量,数据校验必不可少。现有的数据校验方法均为通过普通副本进行校验,且校验出数据错误后,根据另外一个普通副本与该普通副本进行数据比对,确定出错误的数据并进行纠正。为了保证数据的准确性,一般会生成多个副本,但多个副本均出现异常时,不能对错误的数据进行纠正,且多个副本占用系统空间,对进行的前端业务也造成较大影响。

鉴于上述存在的问题,寻求如何在使用较少普通副本且普通副本出现错误的情况下,恢复错误数据是本领域技术人员竭力解决的问题。

发明内容

本申请的目的是提供一种数据校验方法、装置、设备及介质,用于在使用较少副本且副本出现错误的情况下,纠正错误数据。

为解决上述技术问题,本申请提供一种数据校验方法,应用于分布式存储系统,包括:

获取通过写操作写入磁盘的原始数据,并基于LDPC对原始数据编码,得到编码数据;

根据编码数据生成至少一个校验副本和多个普通副本;

当通过读操作确定多个普通副本中的编码数据损坏时,调用读操作对校验副本进行LDPC译码,以得到原始数据,并根据原始数据修复多个普通副本中的编码数据优选地,通过读操作确定多个普通副本中的编码数据损坏包括:

当通过写操作得到的写入校验码和通过读操作得到的读取校验码不一致时,确定多个普通副本中的编码数据损坏。

优选地,通过写操作得到的写入校验码和通过读操作得到的读取校验码包括:

当通过写操作将编码数据写入并存储至磁盘时,划分编码数据,并获取多个写入校验码;

当调用读操作对校验副本进行LDPC译码时,划分存储于校验副本中的编码数据,并获取多个读取校验码;

其中,写入校验码和读取校验码一一对应。

优选地,划分编码数据包括:

根据第一预设标准划分编码数据,其中,第一预设标准为,以4k为单位划分编码数据。

优选地,划分存储于校验副本中的编码数据包括:

根据第二预设标准划分校验副本中的编码数据,其中,第二预设标准为,与4k单位划分的编码数据的数据量对应的校验副本中的编码数据的数据量。

优选地,在确定多个普通副本中的编码数据损坏之后,还包括:

输出表征多个普通副本中的编码数据损坏的第一提示信息。

优选地,在根据原始数据修复多个普通副本中的编码数据之后,还包括:

输出表征修复损坏的多个普通副本中的编码数据的第二提示信息。

为解决上述技术问题,本申请还提供了一种数据校验装置,包括:

获取并编码模块,用于获取通过写操作写入磁盘的原始数据,并基于LDPC对原始数据编码,得到编码数据;

生成模块,用于根据编码数据生成至少一个校验副本和多个普通副本;

调用并修复模块,用于当通过读操作确定多个普通副本中的编码数据损坏时,调用读操作对校验副本进行LDPC译码,以得到原始数据,并根据原始数据修复多个普通副本中的编码数据。

此外,该装置还包括以下模块:

优选地,通过读操作确定多个普通副本中的编码数据损坏包括:

确定模块,用于当通过写操作得到的写入校验码和通过读操作得到的读取校验码不一致时,确定多个普通副本中的编码数据损坏。

优选地,通过写操作得到的写入校验码和通过读操作得到的读取校验码包括:

第一划分模块,用于当通过写操作将编码数据写入并存储至磁盘时,划分编码数据,并获取多个写入校验码;

第二划分模块,用于当调用读操作对校验副本进行LDPC译码时,划分存储于校验副本中的编码数据,并获取多个读取校验码;其中,写入校验码和读取校验码一一对应。

优选地,划分编码数据包括:

第三划分模块,用于根据第一预设标准划分编码数据,其中,第一预设标准为,以4k为单位划分编码数据。

优选地,划分存储于校验副本中的编码数据包括:

第四划分模块,用于根据第二预设标准划分校验副本中的编码数据,其中,第二预设标准为,与4k单位划分的编码数据的数据量对应的校验副本中的编码数据的数据量。

优选地,在确定多个普通副本中的编码数据损坏之后,还包括:

第一输出模块,用于输出表征多个普通副本中的编码数据损坏的第一提示信息。

优选地,在根据原始数据修复多个普通副本中的编码数据之后,还包括:

第二输出模块,用于输出表征修复损坏的多个普通副本中的编码数据的第二提示信息。

为解决上述技术问题,本申请还提供了一种数据校验设备,包括:

存储器,用于存储计算机程序;

处理器,用于指向计算机程序,实现数据校验方法的步骤。

为解决上述技术问题,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时,实现上述全部数据校验方法的步骤。

本申请所提供的一种数据校验方法,应用于分布式存储系统,包括:获取通过写操作写入磁盘的原始数据,并基于LDPC对原始数据编码,得到编码数据;根据编码数据生成至少一个校验副本和多个普通副本;当通过读操作确定多个普通副本中的编码数据损坏时,调用读操作对校验副本进行LDPC译码,以得到原始数据,并根据原始数据修复多个普通副本中的编码数据。由于引入了LDPC译码,因此,当只有一个校验副本时,也能通过校验副本将损坏的原始数据恢复,此时实现了在使用较少普通副本且普通副本出现错误的情况下,恢复错误数据。

本申请还提供了一种数据校验装置、设备和介质,效果同上。

附图说明

为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例所提供的一种数据校验方法流程图;

图2为本申请实施例所提供的一种数据校验装置结构图;

图3为本申请实施例所提供的一种数据校验设备结构图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本申请保护范围。

本申请的核心是提供一种数据校验方法、装置、设备及介质,其能够在使用较少副本且副本出现错误的情况下,纠正错误数据。

为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。

分布式存储系统中的数据校验方法主要分为两种,其一为通过普通副本(可以理解为,为了防止数据在校验过程中由于误操作等等原因出现错误的修改,将原本的数据写入到新的文件后得到的文件称为普通副本)进行校验。在向普通副本中写入数据时,对每4k数据进行计算并得出一个校验块,在对普通副本进行读操作时,再次对读数据进行计算并得到校验块,其中,读数据的校验块和写数据的校验块分别对应着校验值,通过比较读数据的校验块对应的校验值和写数据的校验块对应的校验值确定数据是否有损坏,若读数据的校验值和写数据的校验值不一致,则确认为数据损坏,就从其他普通副本上读取正确的数据进行校验更正。

其二为一致性校验算法,具体为定期对分布式存储系统中的普通副本进行数据扫描,并检测多个普通副本之间存储的数据的一致性,该一致性包括一致性校验和深度一致性校验。其中,一致性校验只对元数据进行扫描,扫描操作执行的较快;而深度一致性校验不仅对元数据进行扫描,还会对存储的额外的数据进行扫描,扫描操作执行的较慢。此时,在分布式存储系统中为了保证写入数据的可靠性,会尽量多的生成普通副本,并在写操作完成之后通过读操作来验证数据的正确性。当生成多个普通副本时,会导致占用大量的系统空间,而且在读操作过程中会占用很大的系统内存,不仅操作时间长还对前端业务造成很大的影响。由此可知,现有的对数据校验的方法都是通过普通副本校验,当普通副本出现损坏时,就不能对校验后确定为错误的数据进行恢复。

基于以上问题,本发明提出了一种基于LDPC校验码的数据校验方法,在多副本存储模式下可以对其中一个副本数据进行LDPC编码操作生成校验副本,在数据校验发现数据损坏时,通过对校验副本进行LDPC译码操作进行数据恢复。并且在校验副本发生数据损坏时,仍可以通过译码得到原始的数据,有效提高了数据的安全性。在有校验副本的保护时,可以适当减少数据的副本数量,同样可以保证数据安全可靠,有效的节省了存储空间。

图1为本申请实施例所提供的一种数据校验方法流程图。如图1所示,该数据校验方法,应用于分布式存储系统,包括:

S10:获取通过写操作写入磁盘的原始数据,并基于LDPC对原始数据编码,得到编码数据。

S11:根据编码数据生成至少一个校验副本和多个普通副本。

S12:当通过读操作确定多个普通副本中的编码数据损坏时,调用读操作对校验副本进行LDPC译码。

以得到原始数据,并根据原始数据修复多个普通副本中的编码数据。

其中,通过读操作确定多个普通副本中的编码数据损坏包括:当通过写操作得到的写入校验码和通过读操作得到的读取校验码不一致时,确定多个普通副本中的编码数据损坏。

相应地,通过写操作得到的写入校验码和通过读操作得到的读取校验码包括:当通过写操作将编码数据写入并存储至磁盘时,划分编码数据,并获取多个写入校验码;当调用读操作对校验副本进行LDPC译码时,划分存储于校验副本中的编码数据,并获取多个读取校验码;其中,写入校验码和读取校验码一一对应。

需要说明的是,根据第一预设标准划分编码数据,其中,第一预设标准为,以4k为单位划分编码数据。同样的,根据第二预设标准划分校验副本中的编码数据,其中,第二预设标准为,与4k单位划分的编码数据的数据量对应的校验副本中的编码数据的数据量。例如:在通过写操作得到的普通副本中,以4k数据为数据划分单位,每一个4k单位的编码数据得到一个写入校验码,此时,编码数据量为4k;在通过读操作得到的校验副本中,将校验副本中的编码数据进行划分,划分的标准为:校验副本中译码后的数据量为2k,且该2k的数据量对应写操作时的4k的数据,此时第二预设标准即为以2k为单位划分编码数据。以上说明仅为众多实施例中的一种,具体实施方式可按照实施场景灵活变换。

此外,还需要说明的是,由于LDPC编译码的性质,需要编译码数据块的长度是一样的,在多副本的分布式存储系统中,通过对其中一个普通副本进行编码从而提高数据的安全性,这个副本叫做校验副本。而写操作会有不同的块大小,如对4k、8k、64k、1M的数据块进行写操作,在对不同大小的数据块进行写操作时要用相对应的校验矩阵进行编码。分布式存储系统中可以保存不同大小的校验矩阵,在写操作之前通过数据块大小来判断其对应的校验矩阵,把校验矩阵进行读操作放入内存(可以理解为磁盘),方便后面写入操作。本申请主要以LDPC中的LU编码算法为例进行说明。其编码过程如下:

首先通过LU编码算法得到编码和/或译码过程中需要的校验矩阵H,对校验矩阵H进行保存后,通过H进行数据的编译码。其中,校验矩阵H的生成方式如下:

将校验矩阵写成如下形式:

H=[H

其中,H

展开矩阵方程得:

H

当校验矩阵H为非奇异,此时H

此时,由H

其中,j为m×k的H

在编码完成生成校验副本后,校验副本中为编码后的二进制数据,在数据校验中发现有数据损坏时,通过校验矩阵H再对校验副本数据进行译码,恢复原始的数据。此时译码算法为概率BP译码算法,也可以称为和积算法。该算法是基于信息的概率在Tanner图上进行迭代,最终实现译码。BP译码算法每进行一次迭代就尝试一次译码,如果译码成功,迭代立即结束而不是进行固定次数的迭代。如果达到预先设定的迭代次数仍没有译码成功,则译码失败,这样有效的降低了运算复杂度。

假设磁盘损坏后读到的码字为w

需要说明的是,在此时需要根引入引理1,其中,引理1为:首先设二进制序列a=(a

其中,BP译码算法的步骤可大致分为以下四步:

其一,初始化:

根据接收序列和信道特性得到变量节点的初始概率P

其中,D(f)为与变量节点相连接的校验节点的集合,v

其二,校验节点的消息处理:

全部校验节点接收到与其连接的变量节点f∈R(g)传输过来的消息

其中,R(g)表示与校验节点相连的全部变量节点的集合,

其三,变量节点消息处理:

全部变量节点接收到来自校验节点g∈D(f)的消息

其中,

其四,译码判决:

每迭代一次都对所有的变量节点进行硬判决,若

其中,

在上述实施例的基础上,作为一种更优的实施例,在确定多个普通副本中的编码数据损坏之后,还包括:输出表征多个普通副本中的编码数据损坏的第一提示信息。同样的,在根据原始数据修复多个普通副本中的编码数据之后,还包括:输出表征修复损坏的多个普通副本中的编码数据的第二提示信息。需要说明的是,无论是第一提示信息还是第二提示信息,都可以使用文字形式或数据串形式进行表述。当用文字形式表示第一提示信息时,该第一提示信息可以表示为“编码数据已损坏”等;当用数据串形式表示第一提示信息时,该数据串可以为1位、2位、4位、8位等等,按照上述提及的次序可以依次表示为“1”、“10”、“1100”“00100111”,需要说明的是,上述提及的对于第一提示信息的表示方法仅为众多实施例中的几种,并不对第一提示信息的表示方法做出限定,此外,还可以通过数据串转换为十进制的数值,判断该数值是否超出预设值,当超出预设值时,输出该第一提示信息;还可以通过统计数据串中0和1的个数,当1的个数多于0的个数时,则输出该第一提示信息;还可以判断数据串中0或1的个数是否超出预设个数,若超出预设个数,则输出该第一提示信息。上述所提及的实施方式并不对本申请中的提示信息做出任何限定,可根据实施场景确定其实施方式。同样的,当用文字形式表示第二提示信息时,该第二提示信息可以表示为“已修复”或“是”等;当用数据串形式表示第二提示信息时,该数据串可以为1位、2位、4位、8位等等,按照上述提及的次序可以依次表示为“0”、“01”、“1010”“01100011”,需要说明的是,上述提及的对于第二提示信息的表示方法仅为众多实施例中的几种,并不对第二提示信息的表示方法做出限定,此外,还可以通过数据串转换为十进制的数值,判断该数值是否超出预设值,当超出预设值时,输出该第二提示信息;还可以通过统计数据串中0和1的个数,当1的个数多于0的个数时,则输出该第二提示信息;还可以判断数据串中0或1的个数是否超出预设个数,若超出预设个数,则输出该第二提示信息。上述所提及的实施方式并不对本申请中的第二提示信息做出任何限定,可根据实施场景确定其实施方式。

在上述实施例中,对于数据校验方法进行了详细描述,本申请还提供数据校验装置对应的实施例。需要说明的是,本申请从两个角度对装置部分的实施例进行描述,一种是基于功能模块的角度,另一种是基于硬件的角度。

图2为本申请实施例所提供的一种数据校验装置结构图。如图2所示,本申请还提供了一种数据校验装置,包括:

获取并编码模块20,用于获取通过写操作写入磁盘的原始数据,并基于LDPC对原始数据编码,得到编码数据;

生成模块21,用于根据编码数据生成至少一个校验副本和多个普通副本;

调用并修复模块22,用于当通过读操作确定多个普通副本中的编码数据损坏时,调用读操作对校验副本进行LDPC译码,以得到原始数据,并根据原始数据修复多个普通副本中的编码数据。

此外,该装置还包括以下模块:

优选地,通过读操作确定多个普通副本中的编码数据损坏包括:

确定模块,用于当通过写操作得到的写入校验码和通过读操作得到的读取校验码不一致时,确定多个普通副本中的编码数据损坏。

优选地,通过写操作得到的写入校验码和通过读操作得到的读取校验码包括:

第一划分模块,用于当通过写操作将编码数据写入并存储至磁盘时,划分编码数据,并获取多个写入校验码;

第二划分模块,用于当调用读操作对校验副本进行LDPC译码时,划分存储于校验副本中的编码数据,并获取多个读取校验码;其中,写入校验码和读取校验码一一对应。

优选地,划分编码数据包括:

第三划分模块,用于根据第一预设标准划分编码数据,其中,第一预设标准为,以4k为单位划分编码数据。

优选地,划分存储于校验副本中的编码数据包括:

第四划分模块,用于根据第二预设标准划分校验副本中的编码数据,其中,第二预设标准为,与4k单位划分的编码数据的数据量对应的校验副本中的编码数据的数据量。

优选地,在确定多个普通副本中的编码数据损坏之后,还包括:

第一输出模块,用于输出表征多个普通副本中的编码数据损坏的第一提示信息。

优选地,在根据原始数据修复多个普通副本中的编码数据之后,还包括:

第二输出模块,用于输出表征修复损坏的多个普通副本中的编码数据的第二提示信息。

由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。

图3为本申请实施例所提供的一种数据校验设备结构图,如图3所示,一种数据校验设备包括:

存储器30,用于存储计算机程序;

处理器31,用于执行计算机程序时实现如上述实施例中所提到的数据校验方法的步骤。

本实施例提供的数据校验设备可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。

其中,处理器31可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器31可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器31也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(CentralProcessing Unit,CPU);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器31可以集成有图像处理器(Graphics Processing Unit,GPU),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器31还可以包括人工智能(Artificial Intelligence,AI)处理器,该AI处理器用于处理有关机器学习的计算操作。

存储器30可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器30还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器30至少用于存储以下计算机程序,其中,该计算机程序被处理器31加载并执行之后,能够实现前述任意一个实施例公开的数据校验方法的相关步骤。另外,存储器30所存储的资源还可以包括操作系统和数据等,存储方式可以是短暂存储或者永久存储。其中,操作系统可以包括Windows、Unix、Linux等。数据可以包括但不限于数据校验方法等。

在一些实施例中,数据校验设备还可包括有显示屏、输入输出接口、通信接口、电源以及通信总线。

本领域技术人员可以理解,图3中示出的结构并不构成对数据校验设备的限定,可以包括比图示更多或更少的组件。

本申请实施例提供的数据校验设备,包括存储器30和处理器31,处理器31在执行存储器30存储的程序时,能够实现数据校验方法。

最后,本申请还提供一种计算机可读存储介质对应的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例中记载的步骤。

可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory),ROM、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上对本申请所提供的一种数据校验方法、装置、设备及介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

相关技术
  • 数据库中对象类型的数据校验方法、装置、设备及介质
  • 基于穿戴式设备的计步数据校验方法、装置、存储介质及终端
  • 一种数据校验方法、装置和计算机可读介质
  • 一种数据校验方法、装置及电子设备
  • 一种浴室加热装置和用于控制浴室加热装置的方法、设备、电子设备及计算机可读存储介质
  • 数据校验方法、数据校验系统、电子设备及存储介质
  • 一种数据校验方法、装置、电子设备及存储介质
技术分类

06120115585602