背景技术:
如本领域中已知的,分布式存储系统包括许多节点,其中可以存储数据或文件。在操作中,可以将要被存储的数据或文件划分(或“分割”)成多个片段,这些片段可以被称为分组(在本文中有时也称为“块”或“组块”)。分布式存储系统中的每个节点可以存储这样的分组中的一个或多个。这样,可以在多个不同的存储节点之间分发数据或文件。
存储节点之间没有协调来决定文件或数据的哪些片段存储在哪些节点中。因此,一个以上的存储节点可以接收具有相同内容的分组。
众所周知,重复数据删除(de-duplication)是一种压缩技术,用于消除存储系统中存储的数据分组在各种文件上的冗余副本。常规地,重复数据删除过程发生在“原始”数据域中(即,简单地比较两个文件)。重复数据删除在所有现代数据中心中被执行。重复数据删除软件经常由针对数据中心开发软件的供应商提供。人们经常区分源重复数据删除和目标重复数据删除。目标重复数据删除在进行备份的数据中心中被执行。考虑到备份的数据量,重复数据删除的效率将在确定操作成本方面发挥重要作用。
在利用网络编码(例如,随机线性网络编码)的分布式存储系统中,编码数据的片段分布在多个存储节点(即,数据中心、服务器、数据存储系统)上。例如,在raid(独立磁盘冗余阵列)系统中,随机线性网络码允许由各种客户端对相同的“数据条带”进行不同的编码。由编码系数的不同选择可以造成客户端之间的差异。在这种情况下,当存储系统从不同的客户端接收编码数据时,直接地将任何接收到的数据条带与先前接收到的数据条带进行比较的传统重复数据删除技术将失败,因为各种客户端使用不同的编码系数对同一条带进行不同的编码。
解决此问题的一个解决方案是,针对每个客户端解码条带,计算共同约定的散列函数,并且在传输数据分组时包括散列。然而,这样的解决方案在客户端侧由于额外的计算需求而产生负担。如果散列函数带有安全属性,则该解决方案也具有安全风险。
另一个选项是存储节点对其接收到的每个条带进行解码,并计算散列函数,并且在本地数据库中搜索匹配。该解决方案的计算需求也会给存储节点带来负担,并且使得此解决方案针对内联重复数据删除策略和后处理重复数据删除策略都是不切实际的。
因此,可以看出至少在涉及多个客户端的存储系统中,出现了针对在编码域中进行重复数据删除的需求,其中每个客户端直接将其编码数据(例如,作为例行备份的一部分)卸载到远程数据中心。如上文所描述的,由于随机线性网络编码(rlnc)允许由各种客户端对相同的数据条带进行不同的编码,因此直接将任何接收到的数据条带与先前接收到的数据条带进行比较的传统重复数据删除技术失败。
因此,希望提供一种用于在分布式存储系统中执行重复数据删除而不要求对编码分组进行解码以执行重复数据删除过程的系统和技术。
技术实现要素:
在本文描述的概念的一个方面中,提供了一种散列化系统和技术,其避免了为了执行重复数据删除而对每个接收到的编码条带进行解码的需要。
本文描述的散列化技术避免了为了执行重复数据删除而对每个接收到的编码条带进行解码的需要,并且因此在实际实施方式中可以潜在地节省大量的计算资源。
根据一个说明性实施例,一种用于对文件进行编码的方法可以包括:识别要被存储的文件;对该文件进行编码以生成多个编码分组;生成与该文件相关联的散列码;将多个编码分组分发到多个存储节点;以及将与该文件相关联的散列码存储在散列服务器中。
在实施例中,该方法可以进一步包括生成与源节点相关联的公钥并将该公钥存储在散列服务器中。
在实施例中,生成与文件相关联的散列码的步骤可以包括针对多个文件生成散列码。
在实施例中,对文件进行编码的步骤可以包括使用随机线性网络编码(rlnc)对文件进行编码以生成多个rlnc编码分组。
在实施例中,将多个编码分组分发到多个存储节点的步骤可以进一步包括以下中的至少一个:以顺序次序将多个编码分组分发到多个存储节点;以及以随机次序将多个编码分组分发到多个存储节点。
在实施例中,将多个编码分组分发到多个存储节点的步骤可以进一步包括:基于在至少一个源节点与多个存储节点中的至少一些存储节点之间的数据传输速率将多个编码分组分发到多个存储节点。
根据另一说明性实施例,一种用于对文件进行编码的装置可以包括:编码分组生成器和散列生成器。在本文中,编码分组可以被配置为:对源文件进行编码以生成多个编码分组;并且将多个编码分组分发到多个存储节点。散列生成器可以被配置为:生成与源文件相关联的散列码;并且将与源文件相关联的散列码存储在散列服务器中。
在实施例中,该装置可以进一步包括公钥生成器,其被配置为生成与源节点相关联的公钥并将该公钥存储在散列服务器中。
在实施例中,该装置可以进一步包括用于识别要被存储的源文件的单元。
根据又一说明性实施例,一种用于在分布式存储系统中对编码分组进行重复数据删除的方法可以包括:在存储节点处接收编码分组;从散列服务器取回与该编码分组相对应的散列码;基于散列码确定编码分组是否已被存储在存储节点中;响应于编码分组已被存储的确定,丢弃编码分组;以及响应于编码分组尚未被存储的确定,将编码分组存储在存储节点中。
在实施例中,确定编码分组是否已被存储在存储节点中的步骤进一步包括:将散列码与编码分组进行比较,以确定编码分组是否已被存储在存储节点中。
在实施例中,该方法可以进一步包括:从散列服务器取回与发送编码分组的源节点相对应的公钥;以及在确定编码分组是否已被存储在存储节点中时使用该公钥。
在实施例中,该方法可以进一步包括:响应于编码分组尚未被存储的确定,取回针对附加源节点的附加散列码以确定编码分组是否已被存储在存储节点中。在本文中,该方法可以进一步包括取回与附加源节点相对应的附加公钥,以确定编码分组是否已被存储在存储节点中。
在实施例中,在存储节点处接收编码分组的步骤可以包括接收网络编码分组。此外,在存储节点处接收编码分组的步骤可以包括接收随机线性网络编码(rlnc)分组。
根据又一说明性实施例,一种用于在分布式存储系统中对编码分组进行重复数据删除的存储节点可以包括:重复数据删除处理器、存储空间以及存储处理器。在本文中,重复数据删除处理器可以被配置为:接收编码分组;从散列服务器取回与该编码分组相对应的散列码;基于该散列码确定该编码分组是否已被存储在存储节点中;响应于该编码分组已被存储的确定,丢弃编码分组;以及响应于编码分组尚未被存储的确定,将编码分组存储在存储节点中。存储处理器可以被配置为向存储空间存储数据和从存储空间取回数据。
在实施例中,重复数据删除处理器可以进一步被配置为:将散列码与编码分组进行比较,以确定编码分组是否已被存储在存储节点中。
在下面的附图以及说明书中概述了本公开的一个或多个实施例的细节。本公开的其他特征、目的和优点将从说明书和附图以及从权利要求中显而易见。
附图说明
从以下附图的描述中,可以更充分地理解上述特征,其中:
图1是根据本文描述的概念的单个源的框图,该单个源在具有n个存储节点的分布式存储系统中将文件存储为多个编码分组;
图1a是可以与上面结合图1描述的源相同或相似的源的框图;
图1b是可以与上面结合图1描述的存储节点之一相同或相似的存储节点的框图;
图2是根据本文描述的概念的编码过程的流程图;
图3是根据本文描述的概念的用于单个源的说明性重复数据删除过程的流程图;
图4是根据本文描述的概念的具有多个源的系统的框图,该多个源在具有n个存储节点的分布式存储系统中将文件存储为多个编码分组;
图5是根据本文描述的概念的用于具有多个源的系统的重复数据删除过程的流程图,该多个源在具有n个存储节点的分布式存储系统中将文件存储为多个编码分组;
图6是根据本文描述的概念的说明性系统的框图,该系统实现了图2、图3和图5中描述的过程;以及
图7是根据本文描述的重复数据删除概念操作的数据中心的框图。
具体实施方式
本文中的所有相关描述(例如,左、右、上和下)都是参考附图的,仅是相对的,并不意味着限制。除非另有规定,否则所说明的实施例可以理解为提供某些实施例的各种细节的说明性特征,并且因此,除非另有规定,否则图示的特征、组件、模块、元件和/或方面在不实质上偏离所公开的概念、系统或方法的情况下,可以以其他方式被组合、互连、排序、分离、交换、定位和/或重新布置。此外,组件的形状和尺寸旨在仅是说明性的,并且除非另有规定,否则可以在不实质性影响或限制本文中寻求被保护的概念的范围的情况下被改变。
现在参考图1,系统包括源节点110(本文中有时也称为“客户端”或简单地称为“源”),其处理要被存储在包括一个或多个存储节点120a…120n的分布式存储系统中的文件。为了提高附图的描述的清楚性以及本文公开的广义概念的描述的清楚性,示出了单个源节点。当然,本领域普通技术人员将理解,如结合图4所描述的,本文所描述的概念也适用于具有多个源节点的系统。
在本文中,源110是耦合到能够将数据传输到其他设备的网络(例如,互联网或内联网)的设备。源110可以是计算机、膝上型计算机、移动设备或能够这样做的任何其他设备。存储节点(例如,120a)是耦合到网络(例如,互联网或内联网)的设备,该网络能够从其他设备接收数据并将接收到的数据存储在其中(例如,存储在存储装置中,该存储装置包括但不限于随机存取存储器、硬盘驱动器、固态驱动器(ssd)、网络连接存储(nas)、光学存储设备、或现在已知的或后来发现的任何其他类型的存储装置)。存储节点可以是计算机、服务器、数据中心、膝上型计算机、移动设备、存储设备或能够在其上存储数据的任何其他设备。
源110可以对文件应用网络编码以生成多个(p个)编码分组或块130a-130p(或更一般地,编码数据130a-130p)。在实施例中,由源实现的网络编码技术可以是线性网络编码(lnc),并且特别地,网络编码可以是随机线性网络编码(rlnc)。源110可以在多个存储节点120a-120n中分发多个(p个)编码分组或块130a-130p。
存储节点120a-120n中的一些或全部能够消除其中存储的一些(或理想情况下是全部)冗余编码块(例如,冗余编码分组)。这样做可以节省存储空间,并减少由于冗余块造成的计算需求。如果使用rlnc或其他网络编码技术,则如上文所描述的,直接比较会失败。因此,需要另一种不要求直接比较的方法。
除了网络编码之外,源110可以生成与源文件相关联的散列码(本文中有时也称为“散列值”、“数字散列”,或者更简单地称为“散列”)。源110可以将散列码存储在散列服务器140(本文中有时也称为“共享元数据服务器”、“共享服务器”或“元数据服务器”)中。在实施例中,源110可以针对多个源文件生成一个散列码。源110还可以将与源110相关联的公钥存储在散列服务器中。散列服务器140是耦合到网络的设备,该网络能够从另一设备接收数据并将接收到的数据存储到其存储装置中。散列服务器还向另一设备提供接口,使得另一设备可以访问所存储的散列码和公钥。散列服务器140可以是计算机、服务器、膝上型计算机、移动设备、存储设备或能够执行必要功能的任何其他设备。
此外,针对每个源节点生成并存储公钥。针对源节点仅生成并存储一个公钥,因为公钥独立于输入文件,而散列是文件的函数。公钥结合散列一起使用。通常来说,源110可以对若干文件进行编码并生成一个散列码。所有公钥和散列码都被存储在散列服务器140中。
下面将详细描述一种用于计算散列值的技术。下面将结合图2描述与在多个存储节点中以允许对编码分组进行重复数据删除的方式存储编码分组相关联的编码过程。此外,下面将结合图3描述允许对编码分组进行重复数据删除的重复数据删除过程。
现在参考图1a,源节点110可以包括编码分组生成器112、散列生成器124和公钥生成器126。下面描述了散列生成器124和公钥生成器126的操作的一个说明性示例。源节点110可以包括存储空间(未示出,例如,存储数据所要求的存储器和相关联的电路),以存储根据下面结合图2描述的方法生成的编码分组、散列码和公钥。
现在参考图1b,存储节点120可以包括重复数据删除处理器122、存储处理器124以及存储空间124(例如,存储诸如编码分组之类的数据所要求的存储器和相关联的电路)。下面描述了重复数据删除处理器的操作的一个说明性示例。存储处理器124可以执行命令以从存储空间124存储和取回数据。
描述了一种适于在(例如结合图1和图4所描述的系统)中使用的说明性散列化技术。为了降低搜索复杂度,可以看出针对该问题的理想散列函数是直接地对向量空间的线性子空间进行散列化的函数,其中散列独立于针对子空间的对任何基向量集的选择。被检查的实体也是子空间,可能是较低维度的子空间(这提供了一旦一个完整的编码条带已经被散列化就对编码组块进行重复数据删除的能力)。为了解决本文描述的问题,使用了有限域上的向量空间,该向量空间可以适用于被编码的重复数据删除。
客户端或源节点(例如,上面结合图1描述的源110)可以对包括m个线性无关的分组的文件进行编码。在本文中,m个线性无关的分组可以使用v={v1...vm}来表示,其中v是有限域(l-维度)向量空间中具有p个元素
使用编码系数
由存储节点接收的分组w是这些向量的线性组合,并且可以用以下公式表示:
可以如下确定公钥和散列。数字q是大质数,使得p是q-1的除数。即,q-1可以除以p。组g具有生成器g。组g在
在实施例中,源选择(a1,a2,…am l)(
为了计算散列,源生成向量u=(u1,u2,…um l),其中
然后,源计算向量x=(u1/α1…um l/αm l)。源使用标准的签名方案(例如,dsa)对向量x进行签名以获得散列码。向量x可以被称为正在被分发的文件的散列码。存储设备(例如,存储节点或存储服务器)通过计算
图2、图3和图5是示出了可以在客户端和/或存储系统内(例如,在诸如上面结合图1、图1a、图1b所示出和描述的以及要在下面结合图4和图5描述的系统内)被实现的说明性处理的流程图。在本文中表示为“处理框”的矩形元素(由图2中的元素220代表)代表计算机软件指令或指令组,并且在本文中表示判定框的菱形元素(由图3中的元素340代表)代表影响处理框的流程的计算机软件指令或指令组。处理框可以代表由功能等效电路(例如,数字信号处理器(dsp)电路或专用集成电路(asic))执行的步骤。流程图不描述任何特定编程语言的语法,而是示出了本领域普通技术人员制造电路或生成计算机软件以执行特定装置要求的处理所要求的功能信息。应该注意的是,为了清楚起见,可以省略许多例行程序元素,例如,循环和变量的初始化以及临时变量的使用。所描述的框的特定序列仅是说明性的,并且能够在不偏离在本文中寻求被保护的概念、结构和技术的精神的情况下进行改变。因此,除非另有说明,否则下面描述的框是无序的,这意味着,在可能的情况下,可以以任何方便的或期望的顺序来执行由框代表的功能。
现在参考图2,例如可以由源节点(例如,上面结合图1所讨论的源节点110)执行的编码过程。在处理框220中,在内部或外部识别要被存储在分布式存储系统中的源文件。在一些实施例中,外部服务器或代理识别文件并请求源节点计算和存储文件的编码元素。一旦已经识别了源文件,则在处理框230中,源节点110可以基于由源节点选择的编码方法来生成编码分组(例如,图1中的编码分组130a-130p)。在实施例中,由源使用的网络编码方法可以是线性网络编码(lnc),并且特别地可以是随机线性网络编码(rlnc)。可替代地,如相关领域的普通技术人员可以理解的,可以使用任何其他合适的编码方法。
在处理框240中,源节点110可以将p个编码分组130a-130p分发到多个存储节点(例如,图1中的存储节点120a-120n)。在实施例中,源节点110可以顺序地将编码分组分发到存储节点中的一些或全部。例如,分组可以被顺序地逐个分发到存储节点中的每一个。在实施例中,源节点110可以将编码分组随机地分发到存储节点中的一些或全部。在实施例中,源节点110可以将更多的编码分组分发到具有与系统中其他节点的数据传输速率相比具有更高的数据传输速率的连接的存储节点(例如,源节点110可以将更多的编码分组分发到具有与其他节点的连接(或带宽)相比更快的连接(或具有更高的带宽)的存储节点)。可替代地,如相关领域的普通技术人员可以理解的,可以应用任何其他合适的分发方法。
在可选的处理框250中,源节点110可以生成与源节点相关联的公钥。如上文所描述的,在将公钥与散列结合使用的情况下,针对每个源节点仅生成并存储一次公钥。公钥独立于输入文件,而散列是文件的函数。因此,如果已经生成并存储了公钥,则可以跳过处理框250。
在处理框260中,源节点110可以生成与源文件相关联的散列码。可以使用上面描述的一种说明性散列化技术来生成散列码。可替代地,如相关领域的普通技术人员可以理解的,可以使用任何其他合适的散列化方法。在处理框270中,源节点110可以将所生成的散列码并且可选地将公钥存储在散列服务器(例如,图1中的散列服务器140)中。
现在参考图3,呈现了针对单个源的说明性重复数据删除过程(例如,如图1所示)。在处理框310中,存储节点(例如,图1中的存储节点120a)从源(例如,图1中的源节点110)接收编码分组。在处理框320中,存储节点可以基于从源节点接收的编码分组的散列值从同一源节点针对先前存储的分组取回散列值并且可选地取回公钥。
在处理框330中,存储节点可以确定是否可以对接收到的编码分组进行重复数据删除。即,存储节点可以确定编码分组是否被存储在存储节点中,以便安全地丢弃接收到的分组。存储节点可以使用散列码、公钥以及接收到的编码分组来确定是否可以对编码分组进行重复数据删除。如果接收到的编码分组由相同的源码编码,并且接收到的分组的散列值被存储在散列服务器中,则可以对接收到的分组安全地进行重复数据删除。
上面描述了一种说明性技术,该技术用于基于散列码、公钥和接收到的编码分组来确定是否可以对接收到的分组进行重复数据删除。
在实施例中,源节点可以在接收到的编码分组的散列值与从散列服务器取回的散列码之间找到匹配,以确定是否可以对接收到的分组进行重复数据删除(即,从一个或多个存储节点丢弃或以其他方式删除)。
如判定框340中所示,如果确定可以对接收到的分组进行重复数据删除,则存储节点可以丢弃接收到的编码分组,如处理框360中所示。否则(即,确定不能对接收到的分组进行重复数据删除),存储节点将编码分组存储到其存储空间(例如,图1b中的126)中。
现在参考图4,能够根据本文描述的重复数据删除概念和技术操作的通用分布式存储系统包括多个源(此处示出m个源为410a-410m)以及多个存储节点(此处示出n个存储节点为420a-420n)。因此,系统可以包括第一多个(m个)源节点410a-410m,其在具有第二多个(n个)存储节点420a-420n的分布式存储系统中将文件存储为多个编码分组414a-414j、416a-416m,其中m和n是整数,并且可以具有或可以不具有相同的值(即,m可以等于或可以不等于n)。
在使用加密的情况下,源节点410a-410m中的每一个可以将相应的公钥分发到散列服务器430。此外,针对要被存储在存储节点420a-420n中的每个文件,每个源节点410a-410m生成散列值,该散列值也被存储在散列服务器430中。因此,所有公钥和散列码被存储在散列服务器430中,该散列服务器430可以例如作为共享元数据服务器提供。
当确定是否可以对接收到的编码分组进行重复数据删除时,每个存储节点420a-420n可以与共享服务器430(例如,经由路径432a-432n)通信来取回散列值并且可选地取回公钥,以确定是否可以执行重复数据删除。
一般而言,每个源节点可以对多个文件进行编码。所有公钥(当被使用时)和散列码被存储在共享散列服务器430中。期望存储节点中的每一个能够减少(并且理想地完全消除)存储在存储节点中的冗余编码分组或块。至少出于上文描述的原因,如果使用诸如rlnc之类的一些编码方法,则通过直接比较来确定是否可以对分组进行重复数据删除是不实际的。因此,源410a-410m和/或存储节点420a-420n能够使用来自元数据服务器430的散列码以使用例如本文结合图3或图5描述的技术之一来执行重复数据删除功能。
现在参考图5,呈现了用于具有多个源的系统的重复数据删除过程。本文中描述的过程通常与结合图3描述的过程相似。在处理框510中,存储节点(例如,图1中的存储节点120a)从源(例如,图1中的源节点110)接收编码分组。在处理框520中,存储节点可以从同一源节点针对先前存储的分组取回散列值并且可选地取回公钥。
在处理框530中,存储节点可以确定是否可以对接收到的编码分组进行重复数据删除。即,存储节点可以确定编码分组是否被存储在存储节点中,以便安全地丢弃接收到的分组。如上面至少结合图3的处理框330所描述的,存储节点可以使用散列码、公钥和接收到的编码分组来确定是否可以对编码分组进行重复数据删除。
如在判定框540中所示,如果确定可以对接收到的分组进行重复数据删除,则存储节点(或某个其他节点)可以丢弃、放弃或以其他方式从系统中移除接收到的分组,如在处理框550中所示。
如果确定不能对接收到的编码分组进行重复数据删除,则存储节点确定是否有更多的源节点在存储节点中存储了编码分组,如判定框560中所示。如果有更多的源在存储节点中存储编码分组,则存储节点可以在从散列服务器针对附加源节点取回散列码以及(可选地)公钥之后重复处理步骤530、540和560,如处理框570中所示。
如果确定不能对接收到的编码分组进行重复数据删除(在判定框540中)并且没有其他要检查的源(在判定框560中),则存储节点可以将编码分组存储到其存储空间(例如,图1b中的126)中。
现在参考图6,可能适合于实现本文描述的处理技术的处理设备600的说明性实施方式包括处理器602、易失性存储器604、非易失性存储器606(例如,硬盘)以及接口模块608(例如,用户接口、usb接口等)。非易失性存储器606存储计算机指令612、操作系统616和数据618。在一个示例中,由处理器602从易失性存储器604中执行计算机指令612,以执行本文所描述的过程中的全部或部分过程(例如,过程400)。
本文描述的过程(例如,过程200、300和500)不限制于与图6的硬件和软件一起使用;它们可以在任何计算或处理环境中找到适用性,并且可以与能够运行计算机程序的任何类型的机器或机器组一起使用。本文描述的过程可以以硬件、软件或两者的组合实现。本文描述的过程可以以在可编程计算机/机器上执行的计算机程序实现,每个可编程计算机/机器包括处理器、非暂时性机器可读介质或处理器可读的另一制品(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备和一个或多个输出设备。程序代码可以被应用于使用输入设备输入的数据,以执行本文描述的过程中的任何一个并生成输出信息。
该系统可至少部分地经由计算机程序产品实现(例如,在诸如非暂时性计算机可读介质之类的非暂时性机器可读存储介质中),以由数据处理装置(例如,可编程处理器、计算机、或多台计算机)执行或用于控制数据处理装置(例如,可编程处理器、计算机、或多台计算机)的操作。每一个这样的程序都可以以高级过程编程语言或面向对象的编程语言来实现,以与基于计算机的系统的其余部分一起工作。然而,可以用汇编语言、机器语言或硬件描述语言来实现程序。该语言可以是编译语言或解释语言,并且可以以任何形式进行部署,包括作为独立程序或作为适合在计算环境中使用的模块、组件、子例程或其他单元。计算机程序可以被部署以在一台计算机上或在位于一个站点或分布在多个站点并且由通信网络互连的多台计算机上执行。计算机程序可以被存储在非暂时性机器可读介质上,该非暂时性机器可读介质可以在计算机读取非暂时性机器可读介质以执行本文所描述的过程时由通用可编程计算机或专用可编程计算机读取用于配置和操作计算机。例如,本文描述的过程也可以被实现为非暂时性机器可读存储介质,其配置有计算机程序,其中在执行时,计算机程序中的指令使得计算机根据这些过程进行操作。非暂时性机器可读介质可以包括但不限制于硬盘驱动器、光盘、闪速存储器、非易失性存储器、易失性存储器、磁盘等,但是不包括暂时性信号本身。
现在参考图7,如公知的,数据中心730可以包括一个或多个存储集群750a-750m,其利用数据中心结构耦合到一个或多个服务器集群740。多个客户端710a-710n可以通过网络720耦合到数据中心。数据中心730根据上面结合图1-5描述的重复数据删除技术来操作,以允许在不解码分组的情况下对编码分组进行重复数据删除。
本文描述的技术可以是在将网络编码(例如,rlnc)用于数据存储的后端数据中心中执行目标重复数据删除的第一项技术。在实施例中,本文描述的技术可以建立在现有编码库(例如,由steinwurfaps提供的kodo擦除编码库)之上,该编码库提供了针对rlnc的标准的实施方式。这些技术可以完全地在数据中心中实现。在这种方法中,客户端可能完全不注意这种技术在数据中心中的存在。
使用本文所描述的这种散列化系统和技术可以使得能够直接地在擦除编码域中进行重复数据删除(而不是像通常所做的那样在原始数据域中)。由于重复数据删除过程直接地在擦除编码域中进行,因此,可能存在很大的潜力以利用包括但不限制于随机线性网络编码(rlnc)的网络编码来降低在分布式存储系统中执行重复数据删除的计算要求。
采用本文所描述的方法,实现了几个目标。第一,提供了一种用于各个存储服务器对从同一文件生成但从不同源编码并发送到服务器的编码数据块执行重复数据删除的方法。存储节点(或存储服务器)可以通过与散列服务器(或元数据服务器)通信并进行适当的计算来完成任务。存储在散列服务器中的散列可以是安全的,使得即使有人获得对存储在散列服务器中的信息(公钥、散列码)的访问,在计算上也很难生成具有与泄漏的散列匹配的散列码的输入文件。
在描述了用于说明作为本专利主题的各种概念、结构和技术的优选实施例之后,对于本领域普通技术人员而言,现在将变得显而易见的是,可以使用包含这些概念、结构和技术的其他实施例。此外,本文所描述的不同实施例的元素可以被组合以形成上文未具体阐述的其他实施例。
因此,提出了专利的范围不应限制于所描述的实施例,而应仅受所附权利要求的精神和范围限制。
1.一种用于对文件进行编码的方法,所述方法包括:
识别要被存储的文件;
对所述文件进行编码以生成多个编码分组;
生成与所述文件相关联的散列码;
将所述多个编码分组分发到多个存储节点;以及
将与所述文件相关联的所述散列码存储在散列服务器中。
2.根据权利要求1所述的方法,进一步包括:
生成与源节点相关联的公钥并将所述公钥存储在所述散列服务器中。
3.根据权利要求1所述的方法,其中生成与所述文件相关联的散列码包括针对多个文件生成散列码。
4.根据权利要求1所述的方法,其中对所述文件进行编码进一步包括:
使用随机线性网络编码(rlnc)对所述文件进行编码以生成多个rlnc编码分组。
5.根据权利要求1所述的方法,其中将所述多个编码分组分发到多个存储节点进一步包括以下中的至少一个:
以顺序次序将所述多个编码分组分发到多个存储节点;以及
以随机次序将所述多个编码分组分发到多个存储节点。
6.根据权利要求1所述的方法,其中将所述多个编码分组分发到多个存储节点进一步包括:
基于在至少一个源节点与多个存储节点中的至少一些存储节点之间的数据传输速率将所述多个编码分组分发到所述多个存储节点。
7.一种用于对文件进行编码的装置,所述装置包括:
编码分组生成器,其被配置为:
对所述源文件进行编码以生成多个编码分组;并且
将所述多个编码分组分发到多个存储节点;以及
散列生成器,其被配置为:
生成与所述源文件相关联的散列码;并且
将与所述源文件相关联的所述散列码存储在散列服务器中。
8.根据权利要求7所述的装置,进一步包括:
公钥生成器,其被配置为:
生成与所述源节点相关联的公钥并将所述公钥存储在所述散列服务器中。
9.根据权利要求7所述的装置,进一步包括用于识别要被存储的源文件的单元。
10.一种用于在分布式存储系统中对编码分组进行重复数据删除的方法,所述方法包括:
在存储节点处接收编码分组;
从散列服务器取回与所述编码分组相对应的散列码;
基于所述散列码确定所述编码分组是否已被存储在所述存储节点中;
响应于所述编码分组已被存储的确定,丢弃所述编码分组;以及
响应于所述编码分组尚未被存储的确定,将所述编码分组存储在所述存储节点中。
11.根据权利要求10所述的方法,其中确定所述编码分组是否已被存储在所述存储节点中进一步包括:
将所述散列码与所述编码分组进行比较,以确定所述编码分组是否已被存储在所述存储节点中。
12.根据权利要求10所述的方法,进一步包括:
从所述散列服务器取回与发送所述编码分组的源节点相对应的公钥;以及
在确定所述编码分组是否已被存储在所述存储节点中时使用所述公钥。
13.根据权利要求10所述的方法,进一步包括:
响应于所述编码分组尚未被存储的确定,取回针对附加源节点的附加散列码以确定所述编码分组是否已被存储在所述存储节点中。
14.根据权利要求13所述的方法,进一步包括:
取回与附加源节点相对应的附加公钥,以确定所述编码分组是否已被存储在所述存储节点中。
15.根据权利要求10所述的方法,其中在存储节点处接收编码分组包括接收网络编码分组。
16.根据权利要求10所述的方法,其中在存储节点处接收编码分组包括接收随机线性网络编码(rlnc)分组。
17.一种用于在分布式存储系统中对编码分组进行重复数据删除的存储节点,所述存储节点包括:
重复数据删除处理器,其被配置为:
接收编码分组;
从散列服务器取回与所述编码分组相对应的散列码;
基于所述散列码确定所述编码分组是否已被存储在所述存储节点中;
响应于所述编码分组已被存储的确定,丢弃所述编码分组;并且
响应于所述编码分组尚未被存储的确定,将所述编码分组存储在所述存储节点中;以及
存储空间;以及
存储处理器,其被配置为:
向所述存储空间存储数据和从所述存储空间取回数据。
18.根据权利要求17所述的存储节点,其中所述重复数据删除处理器进一步被配置为:
将所述散列码与所述编码分组进行比较,以确定所述编码分组是否已被存储在所述存储节点中。
技术总结