数据完整性检测和校正的制作方法

文档序号:14400701阅读:235来源:国知局

所提出的技术大体上涉及数据错误检测和校正,并且具体地涉及用于高效数据传输和/或数据存储的数据错误检测和校正。更具体地说,它涉及数据错误检测和校正方法以及对应的装置和计算机程序。



背景技术:

存储环境中的数据损坏可能有许多不同的原因,诸如硬件、网络、磁盘、环境、辐射、电气、软件等等,所有都导致客户端应用中的数据错误。在当今越来越关注分布式数据和应用的数据环境中,这个问题从更安全的数据中心dc转移到小型物联网iot、装置和互联网。为了减轻数据错误的问题,dc将数据复制到若干dc站点上,以便随时可获得数据副本。然而,复制数据副本在数据副本之间创建时间间隔,并且增加了数据量,并且还为dc创建大量额外工作以维护所有数据。

前向纠错(fec)码的引入极大地改善了dc中的这种情况以便处理便宜磁盘的冗余阵列raid。然而,目前的reed-solomonfec码和类似的fec码不是非常适合分布式存储处理未来对广泛分布式存储的需求。

非常需要具有内置数据错误检测和数据错误校正deadc的高性能fec码,其适于实现端对端数据完整性的广泛分布式存储解决方案。

davidfiala、frankmueller、christinaengelmann、rolfriesen、kurtferreira、ronbrightwell的论文detectionandcorrectionofsilentdatacorruptionforlarge-scalehigh-performancecomputing(对大规模高性能计算的无声数据损坏的检测与校正)(sc'12关于高性能计算、联网、存储和分析的国际会议记录,第78条)讨论了故障已成为高端计算集群的常态。论文进一步公开,即使单个错误也可通过引起级联损坏模式(在大多数情况下传播到其他进程)对应用产生深远影响。

所提出的技术旨在至少减轻与数据损坏有关的一些问题。



技术实现要素:

实施方案教导用于使用基于majorette变换的具有内置错误检测和校正的新颖fec码创建高性能、高可用性分布式存储的技术,所述majorette变换是radon变换的离散且准确版本。本公开还描述了如何为dc实现方式以及为诸如iot和云存储的广泛分布的存储网络引入fec码,以及如何在数据变换中包括错误检测和校正。

所提出的技术的目标是提供改善的数据错误检测和校正。

提供数据错误检测和校正的方法也是一个目标。

提供被配置来执行数据错误检测和校正的装置也是一个目标。

再一个目标是提供对应的计算机程序和计算机程序载体。

根据第一方面,提供用于执行数据错误检测和校正的方法。方法包括以下步骤:提供通过对数据元素或值的输入或原始块应用mojette变换获得的多个mojette变换投影(pi,qi)。方法还包括以下步骤:对多个mojette变换投影进行解码以形成数据元素或值的重建块以及解码的mojette变换投影。方法还包括以下步骤:在生成所述重建块之后调查解码的mojette变换投影中的任一个是否包括至少一个仓≠0,从而提供已在重建块中检测到数据错误的指示。方法还包括以下步骤:如果至少一个仓≠0,则基于解码的mojette变换投影确定s4数据元素或值的校正后的重建块。

根据第二方面,提供被配置来执行数据错误检测和校正的装置。装置被配置来:提供通过对数据元素或值的输入或原始块应用mojette变换获得的多个mojette变换投影(pi,qi)。装置还被配置来:对多个mojette变换投影进行解码以形成数据元素或值的重建块以及解码的mojette变换投影。装置还被配置来:在生成所述重建块之后调查所述解码的mojette变换投影中的任一个是否包括至少一个仓≠0,从而提供已在重建块中检测到数据错误的指示。装置220被配置来:如果至少一个仓≠0,则基于解码的mojette变换投影确定数据元素或值的校正后的重建块。

根据第三方面,提供分布式对象存储系统。对象存储系统包括多个存储服务器,所述存储服务器被配置来:存储通过对数据元素或值的输入或原始块应用mojette变换获得的mojette变换投影(pi,qi)。对象存储系统还包括被配置来支持通过网络接口的通信的存储消费客户端。存储消费客户端包括根据第二方面的装置以及用于将mojette变换投影(pi,qi)中的特定一个分配给特定存储服务器的多个通信节点。

根据第四方面,提供包括指令的计算机程序,所述指令在由至少一个处理器执行时致使至少一个处理器:

·读取通过对数据元素或值的输入或原始块应用mojette变换获得的多个mojette变换投影(pi,qi);

·对多个mojette变换投影进行解码以形成数据元素或值的重建块以及解码的mojette变换投影;

·在生成重建块之后调查解码的mojette变换投影中的任一个是否包括至少一个仓≠0,从而提供已在重建块中检测到数据错误的指示;并且

·如果至少一个仓≠0,则基于解码的mojette变换投影确定数据元素或值的校正后的重建块。

根据第五方面,提供包括第四方面的计算机程序的计算机程序产品。

所提出的技术的实施方案提供机制,所述机制实现数据、具体地旨在用于分布式数据存储的数据的安全的错误检测和错误校正。所提出的机制还确保减少了与数据存储装置通信的客户端的中央处理单元cpu的计算需求。在阅读详细描述后,将意识到各种实施方案的其他优点

附图说明

图1是示出用于在数据解码期间识别引起错误的mojette变换投影以及deadc和纠错从而导致正确的解码的方法的流程图。

图2示出将每行中有六个像素的三行的块mojette变换编码成mojette变换投影p(0,1)、p(-1,1)、p(1,1)、p(-2,1)、p(2,1)的实例。

图3呈现图2中的实例,其中投影p(2,1)中引入了错误,如指向仓(仓)的箭头所指示,以举例说明并显示deadc功能。

图4呈现使用投影p(-2,1)、p(2,1)、p(0,1)以及图3的具有错误的p(2,1)对块进行的完全解码。解码包括根据投影重建或重新计算块。如果没有错误发生,则解码路径随后被保存为用于使用相同投影的下一次解码的模板。在图4的底部显示重建的块。

图5以图形方式示出了图4中具有仓≠0的投影,指出引入错误的像素以及重建块中的相关联的行。

图6示出mojette变换和deadc代码进入分布式对象存储装置的实现方式。该配置示出消费存储装置240与集成式应用的任何操作系统(os)或应用的客户端200,所述集成式应用包括许多openstackswift服务器230以及用于扩展到不同的swift服务器230的mojette变换deadc码220。在此顶部上放置从对象存储装置转换到文件系统或者对象存储装置和文件系统的组合的转换器210以便支持直接存储到客户端200上的应用或者通过诸如nfs或cifs的常规文件系统。取决于高可用性(ha)、性能、简单性的需求,实现方式可以基于任何种类的管理程序平台,例如,docker或vmware。

图7示出具有与swift集成在一起的mojette变换和deadc并且通过互联网与许多云存储节点通信的完全分布式客户端。

图8呈现用于客户端与存储装置之间的互联网小型计算机系统接口(iscsi)或远程直接存储器访问(rdma)的iscsi扩展(iser)通信的具有deadc的mojette变换的dc配置。

图9呈现共享冗余存储装置的客户端集群,其中每个客户端充当存储装置并且存储投影。

图10示出从多个节点到需要具有数据完整性的数据的节点的投影的并行网络通信。

图11是根据所提出的技术的对象存储系统的示意图。

图12是示出根据所提出的技术的方法的示意性流程图。

图13是示出根据所提出的技术的方法的特定实施方案的示意性流程图。

图14是所提出的技术的计算机实现方式的示意图。

图15是根据所提出的技术的装置的示意图。

图16是根据所提出的技术的包含装置的存储消费客户端的示意图。

具体实施方式

本实施方案涉及在涉及使用准确radon变换版本的数据重建期间用于数据错误检测和校正的技术。特定的版本是被称为mojette变换的离散版本。

当今的存储服务器具有大量存储数据的能力,并且社交和监控数据的大量使用以低成本提高了对高可用性和分布式存储的此需求。诸如手机、智能手机、平板电脑和物联网装置、iot装置的小型装置在生成越来越多的数据以传送到云中的稳定存储装置或私人dc时也需要越来越高的性能。

任何应用中的数据丢失都是不可接受的,并且这驱使dc通过将数据复制到其他存储装置或dc从而始终拥有数据的副本来保护数据。这使得在数据或存储装置由于任何类型的情况而丢失的情况下可以重建数据。然而,在处理大量数据时复制是次最优的,这是因为如果节点丢失,则必须全部传送和复制所有数据。复制还意味着在不同的存储装置上拥有不同数据版本,这使得管理员的处理和维护非常困难并且工作量大。复制环境中的数据量通常也是原始数据的3至7倍,这是由于上述安全性需求以及使数据分布在全球各地或办公室之间的需求。

诸如reed-solomon的擦除编码技术的引入大大改善了dc内的情况。在这些情况下,复制由raid代替,从而将存储能力需求减少3至5倍,从而在dc内带来成本、环境、维护和安全益处。然而,在如果raid中一个节点发生故障并且数据重建需要通过互联网与所有其他节点进行通信,则延时会严重影响性能时,reed-solomon类型的擦除码不适用于分布式应用。因此,对于分布式存储应用,需要离散的而不是中央处理器(cpu)密集的擦除码以用于与后端存储装置通信的客户端。

在文献中很好地描述了基本的mojette变换。在下文中,术语“仓”用于表示mojette变换投影中的投影元素。简而言之,mojette变换是线性离散准确radon变换,换句话说,是描述离散图像f的一组i离散投影。在离散方向之间选择投影角度,θi=arctan(qi/pi),其中i∈i,并且诸如pi和qi是一起的整数引物(gcd(pi,qi)=1)。

pierreverbert、vincentricordel、jean-pierreguédon的论文analysisofmojettetransformprojectionsforanefficientcoding多媒体交互式服务的图像分析研讨会(wiamis,2004年4月,葡萄牙里斯本2004.<hal-00451338>)(参考文献1)介绍了如何使用直接和逆算法进行直接和逆(编码和解码)mojette变换。这些算法的一大优点是,它们只使用加法和减法来进行编码和解码操作,从而最大限度地减少了操作的cpu限制并且使应用更快。此论文的教导以引用方式并入本文,且特别是对第2节中的mojette变换、第3节中的投影的选择以及第4节中的仓的选择的描述。

nicolasnormand、andrewkingston、pierre的论文mojette变换的几何驱动重构算法。attilakuba、lászlóg.nyúl、kálmánpalágyi的计算机图像的离散几何,2006年10月,匈牙利塞格德。springerberlin/heidelberg,4245,页122-133,计算机科学讲义<10.1007/1190735011>.<hal-00267628>(参考文献2)教导如何使用几何驱动解码算法进行mojette变换。投影(p,q)的实例p1=(0,1)、p2=(1,1)、p3=(-1,1)表明当基本mojette配置为每个计算的投影提供最小的额外数据并且具有简单的重建路径时,它们非常适合用于存储目的的基本mojette配置。此论文的教导据此以引用方式全部并入,且特别是对第2节中的mojette变换以及第3节中几何驱动重建的描述。

即使文献中很好地描述了mojette变换操作,例如参见上面给出的参考,我们将提供相关定义和一些相同的说明性实例以便于理解所提出的技术。mojette变换是应用于数据的二维表示的数学运算。如本文所用,它应用于数据块以便获得数据的有效数据存储表示。通过使用mojette变换获得的有益特征是它仅需要加法和减法形式的算术运算。这将减少访问已经存储在分布式存储装置中的数据的客户端的cpu的计算需求。

如前所述,mojette变换运算符或mojette投影运算符应用于数据的二维表示。考虑以下事实:具有表示由数据携带的某些信息的元素的二维阵列可以由离散函数f(k,l)表示,其中k和l表示阵列的离散元素,例如,像素或样本。在二维阵列中,这些分别表示列和行或行。

mojette变换/投影算符被定义为:

总和指数p和q对应于数据块的大小,即,给出的数据是大小为p×q的数据块表示,a是将指定元素或像素居中的线的数字。将mojette变换运算符应用于特定数据块导致居中在特定线a=pil-qik的元素或像素的和,其中如果a=0,则可以从kroneckerδ函数δ(a)=1,推断特定线,否则为0。在下面内容中,a将从(pi,qi,a)中的论证删除,并且投影将简单地用(pi,qi)表示。上面的公式(1)可用于生成任何p和q值的任何投影。每个投影的线和的数量b,即,仓的数量由以下给出

b=(q-1)|p|+(p-1)|q|+1。

如何获得这些投影的实例将在本申请的后面进行说明。

所提出的技术利用描述的mojette变换来获得适合于分布式数据存储的数据表示。然而,数据可能在转换期间被损坏,并因此需要能够检测并且也能校正损坏的数据以便获得安全、可靠且牢固的数据存储。所提出的技术因此提供特定的方式,由此可以:a)检测数据是否已损坏,并且b)校正损坏的数据以便获得数据的忠实表示。

因此,所提出的技术提供安全且牢固的数据错误检测和数据校正机制,其在由客户端实现时还降低了试图从数据存储实体(例如数据存储服务器)提取数据的客户端的cpu的计算需求。为此提供了用于执行数据错误检测和校正的方法,参见图12。方法包括以下步骤s1:提供通过对数据元素或值的输入或原始块应用编码mojette变换获得的多个mojette变换投影(pi,qi)。方法还包括以下步骤s2:对多个mojette变换投影进行解码以形成数据元素或值的重建块。方法还包括以下步骤s3:在生成重建块之后调查解码的mojette变换投影中的任一个是否包括至少一个仓≠0,从而提供已在重建块中检测到数据错误的指示。方法还包括以下步骤s4:如果至少一个仓≠0,则基于解码的mojette变换投影确定数据元素或值的校正后的重建块。

换言之,提供检测错误数据的方法,并且如果检测到这种错误或损坏的数据,还提供可通过利用mojette投影来正确地重建原始数据的方式。方法利用mojette变换,其将初始或原始数据块变换成多个投影。然而mojette变换同样可以被视为对数据块进行编码以便提供对原始数据块的特定编码的特定方式。为此,方法采用已经呈现适合通过mojette变换进行编码的表示(例如,数据块表示)的特定数据作为输入。数据块在这里意味着特定的信息序列,即字节或比特,具有通常表示块大小的特定大小。上面提到的数据元素或值形成数据块序列的一部分。当mojette变换已经应用于数据块时,获得许多投影。这些投影提供原始数据的特定表示。方法随后前进并且对多个mojette变换投影进行解码,以便获得数据块的重建版本以及解码的mojette变换投影。重建的数据块包含本文中也被称为像素的数据元素。解码的mojette变换投影携带仓,即,包含在特定mojette投影中的特定数值元素,并且方法通过以下方式前进:调查这些仓以便确定是否已在重建的数据块中检测到任何数据错误,即,mojette投影中的任一个是否包含错误的数据。对数据执行的特定测试是:在块重建之后检查解码的mojette变换投影中的任一个是否包含具有不同于零的数值的至少一个仓。这种非零分仓提供清楚的指示:已检测到重建的块中的损坏或错误数据。如果已检测到这种仓,则方法前进,并且基于较早解码的另外的mojette变换投影来创建数据块的校正版本。在实施方案中,方法还可以包括以下步骤:在解码之后检查是否所有仓=0以便验证正确解码和/或数据完整性。

在实施方案中,方法包括使用mojette变换获得投影,其中对于i∈i,qi=1,例如以便连接行与投影。即,提供方法的实施方案,其中提供多个mojette变换投影(pi,qi)的步骤s1包括使用qi=1的mojette变换提供投影,以便连接行与投影。

根据所提出的技术的另一实施方案,提供方法,其中调查所述解码的mojette变换投影中的任一个是否包括至少一个仓≠0的步骤s3包括:调查在形成重建的数据块时使用的解码的mojette变换投影中的任一个是否包括至少一个仓≠0。

所提出的技术的特定实施方案提供方法,其中调查是否至少一个仓≠0的步骤s3还包括:如果检测到至少一个这种仓,则基于包括至少一个仓≠0的至少一个解码的mojette变换投影识别重建块中包括错误数据元素或值的行的步骤。

为了说明所提出的方法如何起作用以确定数据是否被损坏,参考图1、图2和图4所示的实例。这个实例说明所述方法如何作用于初始数据块,并且执行所提出方法的特定步骤以便确定数据是否已损坏。应注意的是,下面的实例仅仅是为了便于理解所提出的技术而提供的说明。

图2示出对以具有三行六个像素的示例性输入或原始块的形式的输入或原始数据执行完整编码,所述三行六个像素将被mojette变换为五个不同的投影。图2的顶部部分示出输入块。图2的中间部分中示出将像素求和成仓(在本领域中也被称为投影元素)。图2的底部部分示出得到的五个投影。所有的投影被选择为qi=1,以最小化投影的数据大小。投影中的仓的数量由块确定,即由按行数和列数以及投影角度计算的块的大小来确定。参考文献2中可以找到更多关于每个投影的仓的数量的信息。

在图1中示出在数据解码(即从多个投影重建块)期间检测错误。图1的步骤s100表示将用于块的解码的投影的检索。在步骤110中,执行对mojette投影的解码。此解码可以以文献中很好描述的多种方式进行,具体参见参考文献2。在图4中还更详细地示出解码,其中示出了执行涉及如图2所示编码的块的deadc的全解码的实例。

在图1的步骤110中解码之后,步骤120包括执行检查以验证所有仓是否为零。mojette解码之后的一个或多个非零仓表明用于块的解码和重建的一个或多个投影包含错误。另一方面,如果验证显示所有的投影都是零,即空的,则利用所使用的投影的解码是成功的并且没有错误,并且结果,即重建的数据可以用于进一步处理。在这种情况下,数据经过端对端的数据完整性验证。

在实施方案中,方法包括针对mojette变换投影确定用于仓≠0的公共像素。在实施方案中,方法还包括针对具有仓≠0的mojette变换投影识别连接到公共像素的行。所提出的技术因此提供方法的实施方案,其中识别行的步骤包括识别重建块中的像素并且识别包括所识别像素的行,其中包括至少一个仓≠0的至少一个解码的mojette变换投影全部经过所述像素。这在图5中示意性地示出。为了进一步说明该实施方案,参考图1,图1提供了在步骤120中检测错误的情况的图示。基于检测到错误,即通过注意到至少一个仓不同于零的事实,方法继续到步骤130,其中识别涉及创建错误的行发生。对于每个使用的投影,识别非零仓,并且识别并标记构建非零仓的像素。从步骤100开始,用于冗余的额外投影也经历相同的过程,以便在从所得的具有错误的mojette解码结果中减去之后识别并标记仓≠0。具有指向此特定像素的大部分投影的特定行rx中的像素指示引起mojette解码的错误的行。

已经说明了可以如何使用所述方法来确定数据是否已被损坏以及还有如何通过解码的mojette投影来获得错误的位置,下面将示出如何确定校正后的重建数据块。

此特定目的可以通过提供如图13所示的方法的所提出的技术的特定实施方案来实现,其中,确定校正后的重建块的步骤s4包括另外步骤s41:基于用于生成重建块的解码的mojette变换投影的相应pi值对解码的mojette变换投影进行排序。方法还包括以下步骤s42:基于排序,在解码的mojette变换投影中识别与识别的行相关联的解码的mojette变换投影。方法还包括以下步骤s43:用冗余解码的mojette变换投影交换识别的解码的mojette变换投影。方法还包括以下步骤s44:基于解码的mojette变换投影确定数据元素或值的校正后的重建块,其中由冗余解码的mojette变换投影交换识别的mojette变换投影。

换言之,根据该实施方案,方法已经识别出至少一个仓是非零的。此外,还已经确定了特定错误所在的位置,即,行,并且还可能已识别出包含错误的特定像素。已经使用来自至少两个投影的信息通过以下方式找到所述行:解决这两个投影相交于特定像素上(即,通过求解方程a=pil-qik)并且相交于特定行上的问题。基于此信息,方法对解码的mojette变换投影进行排序,根据其p值。方法还基于排序识别与所识别的行相关联的特定解码的mojette变换投影。具体地,如果投影组由p的值排序,即,p0<p1<……,并且从左向右对数据块执行重建,则数据块的行x(其数值由f(k,r)提供,k是指定p的值的任何整数值)可通过mojette投影proj(px,1)重建。这在参考文献2中进一步解释。作为特定实例,考虑具有三个mojette变换投影的情况,例如,p(-2,1)、p(2,1)和p(0,1)。方法前进并且按照数据块的行r0<r1<r2在以下顺序p(-2,1)<p(0,1)<p(2,1)对这些投影进行排序。因此,并且因此,如果数据块中的特定行携带错误,则可以将其映射到特定的解码的mojette投影,即,将特定的投影映射到携带错误的行。方法还包括s43用冗余解码的mojette变换投影交换识别的解码的mojette变换投影。由于所有投影携带可用于正确地重建数据块的冗余信息,可以很快在多个mojette变换投影中任意选择冗余mojette变换投影。方法随后通过用冗余mojette变换投影交换有故障的mojette变换投影来确定校正后的重建数据块。应当指出的是,可以对通过用冗余投影交换携带故障的mojette投影获得的重建数据块进行再次解码以便通过以下方式迭代所述方法正确地重建数据块:将重建块作为现在将解码s2以确定是否有任何非零仓的原始数据块。如果识别出没有非零仓,则表明数据块的解码是正确的。如果识别出非零仓,则所述方法随后可以重复先前描述的方法,并且识别s42负责错误的行和像素,并且通过重复描述的步骤s41、s42、s43和s44来使用解码的mojette投影来重建数据块。这可以重复,直到没有剩余的冗余投影。

为了说明这个过程,参考图3、图4和图5所示的实例。在图3中,在一个投影中引入错误,以便说明方法(deadc)将如何在解码期间检测投影中的数据完整性问题。在这个实例中,如图所示,通过将投影的仓值从8变到9将错误引入在投影p(2,1)仓号4中。这种类型的错误是随机发生的,并且在berndpanzer-steindel,数据完整性cern/itdraft1.3,2007年4月8日的文章(参考文献3)中有更详细的描述,其教导据此作为参考引入。参考文献3讨论了未检测到的数据完整性问题的关键影响

下面将示出所提出的技术的特定实施方案,其中在确定校正后的重建数据块时将使用一组即至少一个所提供的mojette投影,并且其中剩余的至少一个投影将用作冗余投影。由于所有投影携带可用于重建校正后的数据块的信息,可以任意选择将用作冗余投影的特定投影。

在图4所示的解码实例中,投影p(2,1)、p(-2,1)、p(0,1)可以用于重建块,并且数据和投影p(1,1)、p(-1,1)可以用作冗余投影。图4示出使用三个投影p(-2,1)、p(2,1)、p(0,1)解码或重建块的许多可能的解决方案之一,以便解决采用通过放出单个像素仓开始的几何驱动重建的mojette变换。在图4中,步骤s1至s8包括对于仅具有来自单个像素的值的那些仓,从投影p(2,1)和p(-2,1)中放出仓值(参见图2的中间部分)。所有这些步骤用水平线标记在右边。在这个实例中,这些单个像素仓是每个投影四个仓,并且导致将像素值放置到块的角落。在这些步骤s1-s8中,一旦像素值从投影中放出,对应的仓就被清零。

随后在步骤s9-s11中,可以使用另一个投影p(0,1)继续块的解码或重建。这些步骤s9-s11通过简单地从投影p(0,1)中的仓值中逐步减去已经放出的像素值,给出在先前步骤s1-s8中已经放置的像素之间的剩余像素的值。图4中涉及计算的步骤在右侧用菱形标记。

随后可以使用投影p(2,1)通过逐步从相应的仓中减去已经放置的像素值计算剩余的像素并且在步骤s17中重建完整的块(在图4中右边标记为完成)。

以上描述的执行步骤s1-s17来重建块的过程应仅被看作是在重建块时使用来自图2中的编码的五个投影的示例性而非限制性实例。

在步骤s18-s20中,在块的完全重建完成并且块中的所有像素都被赋予指定值之后示出投影p(-2,1)、p(0,1)和p(-1,1)。随后从这些投影中的相应仓中减去这些像素值,得到如图4中的步骤s18-s20所示的值。

因此,在图4中,在步骤s17之后,计算剩余投影以查看仓是否等于0。以下这些步骤是首先执行以检测错误并稍后执行以校正块的重建的deadc步骤。首先,计算用于解码的投影,即p(2,1)、p(-2,1)、p(0,1)。随后,如果任何仓不等于零,则调用并计算一组或有限数量的冗余投影以识别具有错误值的像素。在这个实例中,调用一个冗余投影p(-1,1)并且将其与所使用的投影p(2,1)、p(-2,1)、p(0,1)一起计算。将使用的冗余投影的数量由唯一确定不具有正确值的像素的需要来确定。如果在块的解码中使用具有错误的多于一个的投影,则通常需要更多的冗余投影。

下面将提供说明在已识别出错误的位置(即,行和可能还有特定的像素)时如何重建数据块的实例。

在图5中,来自图4的具有非零仓的投影几何地示出并且全部指向第2行(r2)中的4号像素。这表明与求解第2行(r2)相关联的投影负责引入错误。

方法现在旨在用冗余解码的mojette变换投影交换识别的解码的mojette变换投影。

在图5中,来自图4的重建块以及表示使用的投影p(-2,1)、p(0,1)和冗余投影p(-1,1)的线一起示出。投影p(2,1)在图4的步骤s17中仅给出仓=0。因此这个投影并不表示任何错误,并且在图5中没有示出。然而,在图1的步骤120中执行的检查中,投影p(-2,1)、p(0,1)和p(-1,1)都具有仓≠0(参见图4中的步骤s18-s20)。因此,这些投影表明在重建块中的这些投影存在错误。随后需要在图1的步骤130中识别包括错误的行。图5显示了行调查的结果。从图中可以清楚地看到,具有非零仓的所有投影都通过第2行(r2)中的4号像素,从而将该像素标记为错误的原因。

在实施方案中,方法包括将mojette变换投影(pi,1)的pi值从最低值到最高值进行排序。方法还包括将其连接到mojette变换中的行。为了说明这个实施方案,注意,通过使用mojette变换对于投影的编码和创建设置q=1,重建块中的每一行对应于如参考文献2中进一步示出的投影。因此,随后可以在图1的步骤140中根据投影的p值对用于创建重建块的投影,即p(-2,1)、p(2,1)和p(0,1)进行排序,得到针对行r0<r1<r2的以下顺序p(-2,1)<p(0,1)<p(2,1)。因此,并且因此,在这个实例中,p(-2,1)解决了底行,p(0,1)是中间行并且p(2,1)是顶行。这表明在这个实例中,负责解决行r2的投影p(2,1)是错误的原因。p值的排序s41以及与mojette变换的行的对应关联以及携带错误的行已被识别s42的事实将使得该方法能够用冗余投影交换s43引起错误的投影。冗余投影随后将替换引起错误的投影,以便确定s44数据元素或值的校正后的重建块。为了更详细地说明这一点,参考图1和图3。在步骤150中,采取动作来用冗余投影交换引起错误的投影。在图3所示的当前实例中,投影p(-1,1)可以用作冗余投影,并且给出没有错误的解码,即在解码之后所有的仓数都等于零。通过用冗余投影交换携带故障的mojette投影来正确地重建数据块,所述方法可以返回到方法的初始步骤以便确定重建的块是否包含错误。现在将对重建的块进行解码s2以确定是否有任何非零的仓。如果识别出没有非零仓,则表明数据块的解码是正确的。如果识别出非零仓,则所述方法将重复先前描述的方法,并且识别负责错误的行和像素,并且通过重复描述的步骤s41、s42、s43和s44来使用解码的mojette投影来重建数据块。这可以重复,直到没有剩余的冗余投影。

这在图1的流程图中示意性地示出。在图1中,步骤160示出了进行测试以识别新投影是否可用。如果答案是肯定的,则在步骤110中进行新的解码,并且如果答案是否定的,则不再有冗余投影可用,并且错误不可能如步骤170中所述的被解决。在这种情况下,需要用不同的技术来解决问题,因为没有足够的信息来使用所提出的方法(deadc)或技术来解决错误。这意味着步骤160提供可用于交换识别的引起错误的投影的一个或多个冗余投影。如果没有此类冗余投影可用或者没有足够数量的冗余投影可用,则方法继续到步骤170。

根据任选的实施方案,方法可以补充对初始或原始数据块执行的循环冗余校验,crc。通过确保初始数据块不包含损坏的数据,不需要发起数据经历mojette变换以获得多个mojette变换投影(pi,qi)的方法。因此,所提出的技术的特定实施方案还包括:对初始数据执行crc,并且如果crc和是正确的,则仅对数据块应用mojette变换。这将确保,如果数据与mojette变换一起被损坏,则客户端不需要对数据执行mojette解码以确定数据是否已被损坏。

本公开显示客户端如何通过与deadc一起使用mojette变换以非常成本有效的方式检测数据完整性问题,并随后有效地识别引起错误的投影并交换这个/这些投影。deadc在功能上将大大改善mojette变换,因为客户端可以然后在没有任何另外的数据或信息的情况下检测和修复例如在终端节点之间的数据通信期间或者在数据存储期间引起的错误。

deadc将创建数据的端对端验证,从而在堆叠中进一步消除任何错误。deadc是非常有效的数据完整性解决方案,使得可以使用分布式存储解决方案的mojette变换fec码运行扩展实现方式。这是可能的,没有每个块上的cpu消耗检查和,而是只有检查解码投影后所有仓都为零。另外的行动只有在检测到错误之后才有必要,而不是每个交易“好”或“坏”。

标准校验和验证可以像crc-32(c)一样添加(crc)。这些另外校验和也可以在网络和cpu使用不那么关键的特定环境中实现,并且可以用于进一步改进操作。“ananalysisofdatacorruptioninthestoragestack”,lakshmin.bairavasundaram、garthr.goodson、biancaschroeder,fast’08:6thusenix文件和存储技术会议,223-238页(参考文献4)对这点以及不具有正确的端对端数据完整性的风险进行详细描述。此论文的教导据此通过引用并入本文。本文描述的实施方案可以与crc和校验和验证一起使用。

数据完整性的deadc解决方案可以以若干不同的方式来实现,以用于创建高效的扩展存储解决方案。一个应用是使用deadc来为对象存储装置构建高性能分布式扩展存储解决方案。使用类似openstackswift、amazones3、rackspace或其他对象存储协议(swift)的对象存储协议,这可以是客户端的扩展存储后端,用于进行通信并将数据存储到使用应用层通信或分布为文件系统。例如,这种文件系统可以是通用互联网文件系统(cifs)、网络文件系统(nfs)或其他文件系统,其可以被进一步分布或保留在客户端本地,作为存储装置消耗。还可以与通过不同客户端库处理的应用进行直接通信,以便应用支持其他计算机语言,如php、java、ruby、django。

应当指出的是,所提出的技术还提供用于执行数据错误检测的方法。方法包括以下步骤:提供或检索通过对数据元素或值的输入或原始块应用mojette变换获得的多个mojette变换投影(pi,qi)。方法还包括以下步骤:对多个mojette变换投影进行解码以形成数据元素或值的重建块。方法还包括以下步骤:在生成重建块之后调查解码的mojette变换投影中的任一个是否包括至少一个仓≠0,从而提供已在重建块中检测到数据错误的指示。这种特定的数据错误检测方法用于确定错误数据的位置。为了校正错误的数据,此方法可以补充步骤s4:基于解码的mojette变换投影确定数据元素或值的校正后的重建块。也就是说,它可以补充前面描述的用于确定数据元素或值的校正后重建块的过程。

以上已经详细描述了所提出的方法,这里将跟随适合于实现方法的装置的描述。与方法相关描述的相同优点在这里同样有效,并且将不再重复。所提出的技术从而提供被配置来执行数据错误检测和校正的装置。装置被配置来:提供通过对数据元素或值的输入或原始块应用mojette变换获得的多个mojette变换投影(pi,qi)。装置还被配置来:对多个mojette变换投影进行解码以形成数据元素或值的重建块。装置还被配置来:在生成所述重建块之后调查所述解码的mojette变换投影中的任一个是否包括至少一个仓≠0,从而提供已在重建块中检测到数据错误的指示。装置被配置来:如果至少一个仓≠0,则基于解码的mojette变换投影确定数据元素或值的校正后的重建块。

所提出的技术的特定实施方案提供了装置,其被配置来使用qi=1的mojette变换来提供投影以便连接行与投影。

所提出的技术的另一个实施方案提供装置,其被配置来调查在形成重建的数据块时使用的解码的mojette变换投影中的任一个是否包括至少一个仓≠0。

所提出的技术的又一实施方案提供装置,其被配置来:如果检测到至少一个仓≠0,则基于包括至少一个仓≠0的至少一个解码的mojette变换投影识别重建块中包括错误数据元素或值的行。

再一实施方案提供装置,其进一步被配置来:识别所述重建块中的像素并且识别包括所识别像素的行,其中包括至少一个仓≠0的所述至少一个解码的mojette变换投影全部经过所述像素。

所提出的技术的特定实施方案提供被配置来通过以下方式确定校正后的重建块的装置:

·被配置来基于在生成重建块时使用的解码的mojette变换投影的相应pi值对解码的mojette变换投影进行排序;

·被配置来基于排序,在解码的mojette变换投影中识别与识别的行相关联的解码的mojette变换投影;

·被配置来用冗余解码的mojette变换投影交换识别的解码的mojette变换投影;并且

·被配置来基于解码的mojette变换投影确定数据元素或值的校正后的重建块,其中由所述冗余解码的mojette变换投影交换识别的mojette变换投影。

以举例的方式,所提出的技术提供装置,其被配置来通过以下方式对解码的mojette变换进行排序:被配置来将mojette变换投影(pi,qi)的pi值从最低值到最高值进行排序并且将其连接到mojette变换中的行。

图15提供示出根据所提出的技术的装置220的示意性框图。装置220包括通信电路130、处理器110和存储器120,存储器120包括可由处理器110执行的指令,由此处理器110可操作来通过以下方式执行数据错误检测和校正:

·提供通过对数据元素或值的输入或原始块应用mojette变换获得的多个mojette变换投影(pi,qi);

·对多个mojette变换投影进行解码以形成数据元素或值的重建块;

·在生成重建块之后调查所述解码的mojette变换投影中的任一个是否包括至少一个仓≠0,从而提供已在重建块中检测到数据错误的指示;

·如果至少一个仓≠0,则基于解码的mojette变换投影确定数据元素或值的校正后的重建块。

图6示出使用基于swift或s3http协议的通过tcp/ip、lan或wan网络在任何类型的网络接口(诸如wifi或以太网)上进行通信的向分布式对象存储装置的递送的实现方式。客户端200是数据的消费者,并且例如可以是通过swift进行通信的服务器或单独的工作站或小型iot装置,或者是用于访问存储装置240的文件协议cifs或nfs。转换器210优选地用于从对象存储协议到文件系统nfs/cifs或其他协议的转换。转换也可能导致对象存储访问和文件存储访问的组合根据客户端应用具有两种可能性。包括deadc功能的mojettefec码在本文中由表示为zebfec220的实体表示。zebfec220处理从客户端200通过转换器210并通过swift节点230(通信节点)向多个存储服务器240(诸如swift或其他存储节点)的扩展功能。每个存储服务器240将接收一个投影并且仅托管总数据块的编码部分,使得通信非常有效并且也是安全的。例如,每个存储服务器240表示mojette变换编码的块配置中的一行减去冗余节点的数量。投影的最小数量等于行数,没有冗余。投影的总数表示在标准设置中存储投影所需的swift节点230的数量。在停止读取或写入数据之前,冗余投影的数量会影响存储装置可以处理多少个故障节点。

通常,行数、投影数量和冗余度是配置阶段期间需要考虑的重要参数,因为它们影响数据传送的成本、冗余度、性能等。例如,假定具有三(n)个存储服务器240和一个(r)存储服务器240用于冗余并且块大小为4k(b)的情况。随后,投影数为n=3,行数为n-r=2,并且每行像素数b/(n-r)=4096/2=2048。在这个实例中,在根据图1检测到错误的情况下,仅需要两个投影来解决使得一个投影被用作冗余投影的块。

所提出的技术还提供分布式对象存储系统20,其包括:

·多个存储服务器240,其被配置来存储通过对数据元素或值的输入或原始块应用编码mojette变换获得的mojette变换投影(pi,qi);

·存储消费客户端200,其被配置来支持通过网络接口的通信,客户端200包括:

·多个通信节点230,其用于将mojette变换投影(pi,qi)中的特定一个分配给特定的存储服务器240。根据上面已经描述的内容,客户端200还包括装置220。这在图11中示意性地示出。在图16中示意性地示出根据所提出的技术的包含装置220的客户端200。

客户端200的优选设计可以是与存储服务器240进行直接通信,其优选地为有能力的swift通信。在这种情况下,客户端应用可以用于通过互联网与若干存储服务器240通信。随后,客户端200将包括客户端应用、转换器210、装置(也被称为zebfec)220和swift节点或客户端230,优选地,一个节点对应于每个投影。swift节点230也可以是代理服务器的形式,处理从配置文件到集合数量的存储服务器240的分配。如果以这种方式配置集成客户端,则集成式客户端与存储服务器240之间的连接将以端对端的数据完整性持续可用。因此,如果存储服务器240中的一个丢失,则可以调用冗余的mojette投影。

取决于应用的需要,由zebfec220访问的swift节点230可以位于dc内或者可以分布在云中。如果在dc中,则swift节点230通常将通过例如iscsi连接到存储服务器240以照顾最终的存储需求。

在图7中,客户端是具有mojette变换和deadc(zebfec310)和转换器300的完全分布式客户端,文件存储或对象存储集成在图像或应用中,使用swift320进行通信。与互联网330的通信通过swift320和到swift服务器340的互联网完成。客户端将投影传播到swift服务器340以确保数据总是冗余且安全的。将投影也分布在所有的大陆将使得下一个消费客户所在的地方本地可以获得数据。客户端可以是需要存储和通信的任何计算机。当在多个投影中存在足够的冗余时,通过互联网330的通信也可以是异步的。这将极大地加速通过互联网的通信并提供与存储节点350的高性能通信。

mojette变换与deadc一起也可以集成到iscsi或iser通信中,用于dc中用于dc内主机与存储之间的通信。这将通过在所有dc中广泛使用的标准协议扩展到数据中心,用于分布存储。

在图8中示出包括deadc的mojettefec的iscsi实现方式400。此实现方式表示通过iscsi逻辑单元号(lun)410到mojette变换的客户端或主机计算机通信,包括deadc420,其将通信编码为多个投影,并随后再次传送这至许多iscsi启动器430。通过dc内的冗余网络440进行与iscsi目标450的通信,并随后进一步到达不同的iscsi目标450。使iscsi扩展群集将大大提高性能并创建halun,而无需额外的软件和特征。

在图9中,与deadc一起使用mojette变换创建共享其存储器或存储装置的节点a-f的集群,以创建具有内置数据完整性的高可用性安全存储装置。这使得可以具有本地的节点a-f的集群,其通信并共享稍后可以被转移到dc中的稳定存储装置的投影。这可能在设定的时间或触发操作时发生。这对于在不安全的数据通信情况下保持数据安全也是重要的,使得当建立与dc的通信时投影被传送到dc。节点可以在有时没有互联网通信的船上或汽车中,但是在集群内存在通信。在本地计算机之间的办公室中共享硬盘可以是使用图9所示的设置来为某些应用创建高可用性存储装置和/或数据通信的一种方式。每个客户端a-f将进行投影,并且如果块中的行数小于客户端的数量,则这将使得数据的通信变得冗余。

图10描述了需要应用进行数据传送的节点上的应用。这随后可以成为网站或节点a上的任何其他应用,其随后从最近的节点获取投影来构建数据集。这个数据集随后被传送到应用以进行进一步处理。这将形成高效的分配数据的方式,将针对需要高可用性数据通信或具有内置客户端侧数据完整性的存储的任何类型的应用消费或处理所述数据。节点a是需要数据通信的客户端并且b-d可以是计算节点、存储节点、网络节点或任何类型的应用或通信使能器。

显然,deadc检查可以用许多不同的方式进行。通常优选的是不仅检查所使用的投影,而且检查所有冗余节点,以定期保护数据。一种方式是有一个清理应用来遍历存储以确保数据完整性。另一种方式是在检测到校正或者将校正延迟到特定时间时处理校正。所有数据错误将被识别并记录,以便客户端或作为单独的节点应用进行直接或延迟的数据错误校正。

很显然,mojette变换和deadc是硬件和操作系统(os)或数据语言不可知的,并且可以设计和引入需要数据传送和或存储的任何计算机化平台。

实施方案涉及用于端对端数据完整性检测和校正的方法。方法包括使用mojette变换作为准确radon变换的说明性实例来实现数据错误检测和数据错误校正。方法特别适合于高效数据传送和/或数据存储。

在实施方案中,方法还包括与mojette变换一起使用crc。由此该实施方案构成有效的存储解决方案。

在实施方案中,方法与openstackswift、amazones3、rackspace或其他对象存储协议(swift)一起使用。

在实施方案中,方法与文件系统一起使用或者在文件系统中使用。

在实施方案中,方法与块存储协议一起使用。

实施方案还涉及实现实施方案(诸如上述方法)的客户端、装置、设备、系统、计算机程序以及计算机程序产品。作为非限制性实例,此类客户端、装置、设备、计算机程序以及计算机程序产品可以被包括在单个用户客户端或数据中心中。在后一种情况下,数据中心可以将iscsi或iser递送到客户端。还可以创建共享ha存储的本地集群。

实施方案可以用软件、硬件或其组合实现。例如,实施方案包括处理器和存储器。存储器包括可由处理器执行的指令。处理器因此可操作或配置来执行如本文所述的方法和步骤。

根据实施方案的计算机程序包括指令,所述指令在由处理器执行时致使处理器执行如本文所述的方法和步骤。所提出的技术具体提供(参见图14中示意性示出的计算机程序实现方式)包括指令的计算机程序125,所述指令在由至少一个处理器110执行时致使至少一个处理器110:

·读取通过对数据元素或值的输入或原始块应用mojette变换获得的多个mojette变换投影(pi,qi);

·对多个mojette变换投影进行解码以形成数据元素或值的重建块以及解码的mojette变换投影;

·在生成重建块之后调查解码的mojette变换投影中的任一个是否包括至少一个仓≠0,从而提供已在重建块中检测到数据错误的指示;以及

·如果至少一个仓≠0,则基于解码的mojette变换投影创建数据元素或值的校正后的重建块。

所提出的技术还提供计算机程序产品,其包括存储有上述计算机程序125的计算机可读介质120;130。

相关实施方案限定了包括计算机程序的载体。载体优选地是电子信号、光信号、电磁信号、磁信号、电信号、无线电信号、微波信号或者计算机可读存储介质中的一个。计算机可读介质优选地是非易失性计算机可读存储介质。计算机可读介质可以包括一个或多个可移动或不可移动存储器装置,包括但不限于只读存储器(rom)、随机存取存储器(ram)、光盘(cd)、数字多功能光盘(dvd)、蓝光光盘、通用串行总线(usb)存储器、硬盘驱动器(hdd)存储装置、闪存存储器、磁带或任何其他常规存储器装置。计算机程序因此可以加载到计算机的操作存储器或等同的处理装置中以供其处理器执行。

本领域技术人员将理解,可以对本发明进行各种修改和改变而不背离本发明的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1