发明名称 一种基于Erasure编码和副本技术的数据备份方法
摘要 本发明公开了一种基于Erasure编码和副本技术的数据备份方法。当待存储的数据超过了存储资源的最大容量后,数据需要进行分割后分布式存储,以提高存储效率。同时对这些分割后的数据子块计算校验码,并存储这些校验码,在部分数据子块受损的情况下,利用Erasure编码来恢复出受损的数据子块,保证了原始数据的完整性。采用副本的方法来备份原始数据,同时根据存储服务器的个数等参数来确定数据副本产生的数量。最后所产生的数据副本元数据信息存储到副本数据库中,以便在发生数据灾难时,用户通过查询副本数据库利用数据副本来恢复原始数据。通过数据分割和副本创建技术来更好地解决数据容灾中的数据备份问题,既提高了数据的存储效率,又保证了数据的完整性。
申请公布号 CN101630282B 申请公布日期 2012.07.04
申请号 CN200910182016.8 申请日期 2009.07.29
申请人 国网电力科学研究院;南京南瑞集团公司 发明人 余勇;邓松;林为民;唐汗青
分类号 G06F11/14(2006.01)I;G06F17/30(2006.01)I 主分类号 G06F11/14(2006.01)I
代理机构 南京知识律师事务所 32207 代理人 汪旭东
主权项 一种基于Erasure编码和副本技术的数据备份方法,其特征在于,包括以下步骤:步骤1:建立一个数据分割知识库,把当前企业的存储器容量和URL存入到该知识库中,用户在存储数据时,首先通过查询数据分割知识库,判断待存储的数据是否已经超过了知识库中最大的存储器容量,用户根据数据分割控制器查询数据分割知识库来判断是否需要进行数据分割,若需要分割则进入到下一步,否则转到步骤7;步骤2:确定数据文件分割的块数n和生成校验码的个数o,按照分割块数n和校验码个数o分别构造待o×n阶的范得蒙矩阵Fo×n;步骤3:分割原始数据文件,并构造分割后的数据矩阵Dn×1,并计算Fo×n×Dn×1得到对应的校验码矩阵Co×1,同时生成分割日志信息;步骤4:将生成的n块子数据文件和o个校验码分别存储到指定的存储器上,同时把分割后的数据子块的文件名、数据子块大小、生成的校验码、校验码大小以及存储在远程节点的URL存储到分割数据库中;步骤5:构造矩阵 <mrow> <msub> <mi>A</mi> <mrow> <mrow> <mo>(</mo> <mi>n</mi> <mo>+</mo> <mi>o</mi> <mo>)</mo> </mrow> <mo>&times;</mo> <mi>n</mi> </mrow> </msub> <mo>=</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msub> <mi>I</mi> <mrow> <mi>n</mi> <mo>&times;</mo> <mi>n</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>F</mi> <mrow> <mi>o</mi> <mo>&times;</mo> <mi>n</mi> </mrow> </msub> </mtd> </mtr> </mtable> </mfenced> </mrow>知 <mrow> <msub> <mi>E</mi> <mrow> <mrow> <mo>(</mo> <mi>n</mi> <mo>+</mo> <mi>o</mi> <mo>)</mo> </mrow> <mo>&times;</mo> <mn>1</mn> </mrow> </msub> <mo>=</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msub> <mi>D</mi> <mrow> <mi>n</mi> <mo>&times;</mo> <mn>1</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>C</mi> <mrow> <mi>o</mi> <mo>&times;</mo> <mn>1</mn> </mrow> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> </mrow>且满足A(n+o)×n×Dn×1=E(n+o)×1,其中In×n为n×n阶的单位矩阵;步骤6:当分割后的数据子块有p(p≤o)块受损不能使用时,则将p个数据子块对应的矩阵A(n+o)×n和E(n+o)×1中的行删除掉,得到新的矩阵A(n+o‑p)×n和E(n+o‑p)×1,然后通过计算A‑1n×(n+o‑p)×E(n+o‑p)×1就可以恢复出原始数据Dn×1;步骤7:首先确定存储服务器的个数N;期望得到的数据副本可靠性概率Pexpect;可以接受的网络带宽消耗Bpermit;数据服务器备份其他服务器的数据个数M;两台存储服务器之间发送消息的大小k;海量数据副本维护过程中海量数据传递的网络开销C;步骤8:然后代入式(1)计算出副本个数的取值范围,然后根据此范围来确定副本产生的最佳个数;f表示副本一致性维护的频率,m表示数据副本的个数; <mrow> <mfenced open='{' close=''> <mtable> <mtr> <mtd> <msup> <mrow> <mo>[</mo> <mn>1</mn> <mo>-</mo> <msup> <mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mi>p</mi> <mo>)</mo> </mrow> <mi>m</mi> </msup> <mo>]</mo> </mrow> <mrow> <mi>N</mi> <mo>/</mo> <mi>m</mi> </mrow> </msup> <mo>&GreaterEqual;</mo> <msub> <mi>P</mi> <mi>exect</mi> </msub> </mtd> </mtr> <mtr> <mtd> <mi>M</mi> <mo>&times;</mo> <mi>k</mi> <mo>&times;</mo> <mi>N</mi> <mo>&times;</mo> <mi>f</mi> <mo>&times;</mo> <mi>m</mi> <mo>+</mo> <mo>[</mo> <mi>C</mi> <mo>-</mo> <mi>M</mi> <mo>&times;</mo> <mi>k</mi> <mo>&times;</mo> <mi>N</mi> <mo>]</mo> <mo>&times;</mo> <mi>f</mi> <mo>&le;</mo> <msub> <mi>B</mi> <mi>permit</mi> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow>步骤9:所产生的数据副本元数据信息包括原始数据名、大小、原始数据所在的位置URL、各数据副本名、大小以及副本数据所在的位置URL存储到副本数据库SDB中;步骤10:数据备份结束。
地址 210003 江苏省南京市鼓楼区南瑞路8号