基于再生码的分布式存储系统与处理方法与流程

文档序号:11233780阅读:1243来源:国知局
基于再生码的分布式存储系统与处理方法与流程

本申请涉及数据存储系统与处理方法,具体涉及一种基于再生码的分布式存储系统与处理方法。



背景技术:

分布式存储系统是将数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。

在传统分布式存储系统中为提高系统可靠性,因此采用再生码(regeneratingcodes)的数据恢复。再生码是一种基于纠错码理论的分支。透过网络在数据传输过程中发生错误后,数据接收端能透过纠错码自行发现错误或纠正。再生码的修复过程中,新节点需要在剩下的存储节点中连接d个存储节点并分别从这d个存储节点中下载p大小的数据,所以再生码的修复带宽为d*p。同时给出了再生码功能修复的模型并提出了再生码的两类最佳码:最小带宽再生码(msr,minimum-storageregenerating)和最小修复带宽再生码(mbr,minimum-bandwidthregenerating)。

但传统的分布式存储系统无法针对存储数据的特性而对数据的可靠性进行调整。由于传统的分布式存储系统中的存储节点数量是固定的。所以遇到频繁被存取的数据的情况时,该数据可能发生延迟传输的问题。



技术实现要素:

本申请所要解决的技术问题在于提供一种基于再生码的分布式存储系统,其特征在于编码数据传输至各节点后,可扩展至指定的节点。

为了解决上述问题,本申请揭示了一种基于再生码的分布式存储系统包括数据源端与多个存储节点。数据源端具有控制模块与编码器,该控制模块对接收的输入数据组切分成多个数据分块,该数据分块通过该编码器时,该编码器根据编码向量输出子数据条带,且该些编码向量彼此为非线性相关。存储节点网络连接于该数据源端,该数据源端根据该些编码向量派送不同的该子数据条带至对应的该存储节点。数据源端接收节点扩展命令用于扩展所指定的该存储节点,该数据源端任意选取至少两个该存储节点,该数据源端根据所选取的该些子数据条带与所属的该些编码向量进行线性组合,并输出扩展节点。

为了解决上述问题,本申请更揭示一种基于再生码的分布式存储系统包括以下步骤:数据源端将输入数据组切分为多个数据分块;数据源端根据编码向量将数据分块编码转换为子数据条带;数据源端根据子数据条带与相应的编码向量发送至存储节点,并将子数据条带记录于存储节点;数据源端接收节点扩展命令,并指定任一存储节点;数据源端另选取至少两个以上的存储节点,数据源端根据所选取的存取节点、编码向量与子数据条带生成扩展节点。

与现有技术相比,本申请可以获得包括以下技术效果:

1)本申请相比传统的由编码控制器统一选择固定的节点进行拓展的办法,具有消耗带宽少、编码效率高、计算成本低及适应高动态变化的网络状况等优点。

2)本申请可以应用于块存储、基于对象存储的分布式存储系统的编解码和分发模块。对应的存储系统更适合一次性写入、读频率不高,但可靠性要求较高场景,例如归档系统。

当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有技术效果。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。

图1a为本申请的硬体架构示意图。

图1b为本申请的数据传输架构示意图。

图2为本申请的运作步骤示意图。

图3a为本申请的数据分块与编码的过程示意图。

图3b为本申请的存储节点的数据恢复示意图。

图4为本申请的扩展存储节点的示意图。

具体实施方式

以下请配合附图及实施例来详细说明本申请的实施方式,藉此对本申请如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。

请参考图1a与图1b所示,其系为本申请的硬体架构与数据传输架构示意图。本申请的基于再生码的分布式存储系统100包括数据源端110与多个存储节点120。本申请中数据源端110所指的是存储系统对于数据输入的前台接口,数据源端110可以是但不限定为磁盘、因特网(internet)或人机输入界面(interface)等。数据源端110透过网络连接于存储节点120。

数据源端110包括控制模块111与编码器112。控制模块111将接收的输入数据组切分成多个数据分块。编码器112记录编码向量矩阵,编码向量矩阵记录多笔编码向量。数据分块通过编码器112时,由编码器112从编码向量矩阵中选择任一编码向量。编码器112根据编码向量输出相应数据分块的子数据条带,且这些编码向量彼此为非线性相关。数据源端110根据不同的编码向量并派送子数据条带至对应的存储节点120。存储节点120的种类为硬盘、固态硬盘或闪存等。存储节点120用于存储子数据条带。

在图1b中的左侧系为数据源端110(datasource),最右侧系为数据收集端130(datacollector)。在数据源端110与数据收集端130之间存在多个存储节点120。数据收集端130包括译码器131。译码器131根据所接获部分的子数据条带反译回指定的数据分块。在图1b中的存储节点120以xi表示,其中i为编号。在图1b中以存在的存储节点120以短虚线表示,而欲扩展的存储节点120以长虚线表示。

假设输入数据组的数据大小为b,d为扩展节点时所需的存储节点120的个数,α为每个存储节点120所存储的子条带数据的数量。以b=4,α=2,d=3为例,意即输入数据组b包括4个数据分块。每一个存储节点120可以存储1个子数据条带,而一个子数据条带记录2个数据分块(意即为α)。产生一个新的扩展节点需要连接3个存储节点120(意即为d)。

为清楚说明输入数据组的数据分块与子数据条带的产生过程,本申请以一个存储节点120并可记录两个子条带数据作为说明,但并非仅局限于说明中的数量或顺序。请参考图2所示,其系为本申请的运作步骤示意图。

步骤s210:数据源端将输入数据组切分为多个数据分块;

步骤s220:数据源端根据编码向量将数据分块编码转换为子数据条带;

步骤s230:数据源端根据子数据条带与相应的编码向量发送至存储节点,并将子数据条带记录于存储节点;

步骤s240:数据源端接收节点扩展命令,并指定任一存储节点;以及

步骤s250:数据源端另选取至少两个以上的存储节点,数据源端根据所选取的存取节点、编码向量与子数据条带生成扩展节点。

首先,数据源端110接收输入数据组并将输入数据组切分成多个数据分块。在此假设共有k个存储节点120,且存储节点120记作nodei,其中i表示第i个存储节点且i≦k(未避免所有的存储节点均使用同一标号,因此后文以存储节点的标号作为区分)。再以b=4,α=2,d=3为例,输入数据组包括4个数据分块,分别为u11,u12,u13与u14。此一说明中,存储节点中可记录1个子数据条带,每一个子数据条带包括2个数据分块,请配合参考图3a所示。前述的数据分块u11,u12,u13与u14可两两组成一组向量,且作为第i个节点中u1向量的编码向量,作为第i个节点中u2向量的编码向量,作为第i个存储节点中补偿数据分块的编码向量。此外,中任意两个向量,且各向量间保证线性无关。

数据源端110再把经过编码后的子数据条带与所属的编码向量发送至存储节点,并令存储节点记录子数据条带与编码向量。当数据收集端130发现份任一存储节点毁损时,数据收集端130可根据现有的存储节点与所存子数据条带对已毁损的存储节点进行数据恢复,请配合参考图3b所示。当存储节点nodem发生毁损,数据收集端130从其它存活的存储节点选择至少两个以上的存储节点,在此分别定义存储节点为nodei与nodej。存储节点nodei与nodej各自存储两子数据条带,而两子数据条带分别为。根据存储节点nodei与nodej两个中的所有编码向量,我们可以将子条带数据填到4x4矩阵中,如下述矩阵所示。

前述的矩阵在符合满秩的条件时,可以透过线性消去的方式进一步得到u11,u12,u13与u14四个数据分块。而由于中任意两向量线性无关,从此可发现该矩阵的两对角块(2×2)均是满秩的,所以该矩阵也满秩。由此编码的数据恢复功能同的取值没有线性关系,因此可以任意取值。如此一来,就数据收集端130可根据前述计算得到已毁损的存储节点的相关资讯。

本申请除了存储节点的数据恢复外,更可以针对指定的存储节点进行扩展。本申请的节点扩展的作用在于可透过其它存储节点的资讯来克隆所指定的存储节点与所属资料,并请配合图4。

在此以存储节点a、存储节点b与存储节点c作为新存储节点的扩展依据,而欲扩展的存储节点则定义为存储节点d。存储节点a、存储节点b与存储节点c分别记录数据分块。换言之,每个存储节点所记录的数据分块是输入数据组的线性组合。因此要扩展新的存储节点d,数据收集端130需要三个(或更多)的数据分块来得到。为清楚说明扩展的过程,系以下述算式的计算作为说明。假设方程组如下式:

(1)

(2)

解(1),可以得到下述两等式(3)与(4)

(3)

(4)

由于中任意两向量线性无关,有:

(5)

代入(4)中,有:

(6)

方便起见,记作:

(7)

为2×2的对角阵,p是,r、q同理,下文也类似方法表示继续化简得:

(8)

(9)

任意给定一对k3≠0,��3的值,即可通过该方程解出组合系数k1,k2,k3以及��1,��2,��3(其中向量中不会出现0元素,否则说明在中有两个向量线性相关)。

接下来,解第二个方程:

(10)

(11)

解(10)得到:

任给一个l3≠0即可解出l1,l2。至此k1,k2,k3,��1,��2,��3,l1,l2,l3均得到,代入(11)即可求得,存储节点d的扩展就完成了。新扩展的存储节点d会记录原本存储节点的数据分块与编码向量。

所述装置与前述的方法流程描述对应,不足之处参考上述方法流程的叙述,不再一一赘述。上述说明示出并描述了本申请的若干优选实施例,但如前所述,应当理解本申请并非局限于本文所披露的形式,不应看作是对其它实施例的排除,而可用于各种其它组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本申请的精神和范围,则都应在本申请所附权利要求的保护范围内。

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