主权项 |
一种基于云计算平台的容灾存储方法,其特征在于该方法在某几个数据节点同时出现故障的情况下,仍能很快很好地实现数据的恢复,保障数据的可靠性,其步骤主要如下:步骤1.根据设计要求和系统性能,确定副本节点数n,同时确定用户数据文件大小M的阀值Q,其中阀值Q将来用于确定副本复制方案;步骤2.计算用户数据文件大小M,当M≤Q时执行步骤3,否则执行步骤4;步骤3.将数据复制n份,在每个节点上各存储一份完整的数据副本和其校验和;步骤4.根据数据节点个数n,将整个数据文件分割为相同大小的n(n‑1)份;步骤5.将每一份数据再分割为相同大小的ε份,其中ε为一用户设定参数,分割后每一份数据大小为m,其大小可通过式(1)来计算:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mi>m</mi><mo>=</mo><mfrac><mi>M</mi><mrow><mi>n</mi><mrow><mo>(</mo><mi>n</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mi>ϵ</mi></mrow></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000602210350000011.GIF" wi="1427" he="145" /></maths>步骤6.将分割的n(n‑1)ε份数据平均分配到n个节点上,则每个节点存储(n‑1)ε份数据,称这些数据为节点N<sub>i</sub>的本地数据L<sub>i</sub>;注:L表示本地数据,L<sub>i</sub>表示节点i的本地数据;步骤7.将节点N<sub>i</sub>存储的本地数据块进行逻辑组划分,即将ε个数据划为一组,并将划分后的组进行编号;步骤8.由步骤6可知,一个节点本地数据可以划分的逻辑组数为(n‑1)个,令逻辑组为<img file="FDA0000602210350000012.GIF" wi="633" he="85" />令G<sub>i</sub>表示节点N<sub>i</sub>的所有逻辑组,<img file="FDA0000602210350000013.GIF" wi="71" he="76" />表示当前逻辑组;步骤9.令刨除节点N<sub>i</sub>后的所有参与存储的节点集合为剩余节点集合,找出每个节点的剩余节点集合,即式(2)<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><munderover><mo>∪</mo><mrow><mi>y</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>n</mi><mo>-</mo><mn>2</mn></mrow></munderover><msubsup><mover><mi>N</mi><mo>‾</mo></mover><mi>i</mi><mi>y</mi></msubsup><mo>=</mo><munderover><mo>∪</mo><mrow><mi>j</mi><mo>=</mo><mn>0</mn><mo>,</mo><mi>j</mi><mo>≠</mo><mi>i</mi></mrow><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></munderover><msub><mi>N</mi><mi>j</mi></msub><mo>,</mo><msubsup><mover><mi>N</mi><mo>‾</mo></mover><mi>i</mi><mi>y</mi></msubsup><mo>=</mo><msub><mi>N</mi><mi>j</mi></msub><mo>,</mo><mfenced open='{' close=''><mtable><mtr><mtd><mi>y</mi><mo>=</mo><mi>j</mi></mtd><mtd><mi>j</mi><mo><</mo><mi>i</mi></mtd></mtr><mtr><mtd><mi>y</mi><mo>=</mo><mi>j</mi><mo>-</mo><mn>1</mn></mtd><mtd><mi>j</mi><mo>></mo><mi>i</mi></mtd></mtr></mtable></mfenced><mo>;</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000602210350000014.GIF" wi="1430" he="163" /></maths>步骤10.将节点N<sub>i</sub>上G<sub>i</sub>的数据存储到刨除N<sub>i</sub>的其他(n‑1)个节点<img file="FDA0000602210350000015.GIF" wi="70" he="78" />上,表示为<img file="FDA0000602210350000016.GIF" wi="219" he="78" />并满足式(3),<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><mrow><mo>(</mo><munderover><mo>∪</mo><mrow><mi>r</mi><mo>=</mo><mi>e</mi></mrow><mi>w</mi></munderover><mrow><mo>(</mo><msubsup><mi>G</mi><mi>i</mi><mi>r</mi></msubsup><mo>→</mo><msubsup><mover><mi>N</mi><mo>‾</mo></mover><mi>i</mi><mi>e</mi></msubsup><mo>)</mo></mrow><mo>)</mo></mrow><mfenced open='|' close=''><mtable><mtr><mtd><mi>n</mi><mo>-</mo><mn>2</mn></mtd></mtr><mtr><mtd><mi>e</mi><mo>=</mo><mn>0</mn></mtd></mtr></mtable></mfenced><mo>{</mo><mi>w</mi><mo>=</mo><mrow><mo>(</mo><mi>e</mi><mo>+</mo><mrow><mo>(</mo><mi>p</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>)</mo></mrow><mi>mod</mi><mrow><mo>(</mo><mi>n</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>,</mo><mi>p</mi><mo>≤</mo><mi>n</mi><mo>-</mo><mn>1</mn><mo>}</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000602210350000017.GIF" wi="1446" he="162" /></maths>其中:p为指定的常数,→表示存储到。 |