随着大数据时代的到来, 数据资源呈现出快速增长的趋势, 数据的存储容量也随之不断增加. 传统的数据存储系统已经不能适应当前海量数据存储, 分布式存储系统逐渐成为主流存储方式. 通过将海量数据分散的存储在多台互相独立物理设备上, 分布式存储系统不仅很好的分担了存储负载, 而且成本低廉, 可扩展性能好, 但是分布式存储系统中的这些物理存储设备容易发生故障, 可造成大量数据丢失. 因此, 如何提高数据存储的可靠性就成为了分布式存储亟需解决的问题[1-3].
为保证数据存储时的高可靠性和高可用性, 传统的分布式存储系统中生成冗余数据的策略通常有“复制”和“纠删码”策略[4,5]. 谷歌文件系统和Hadoop系统运用了三副本复制策略, 将原始数据块复制成三个副本然后存储在系统中来保证存储的可靠性, 这样会导致存储开销过大; 为了减小存储开销, 在实际系统中引入纠删码的冗余策略, 但该策略在修复故障节点时会带来巨大的带宽开销. 针对上述问题, Dimakis等将网络编码的思想运用到分布式存储中, 提出了再生码的概念[6], 有效减少了存储开销和修复带宽开销. 目前对再生码的研究表明, 主要表现在存储和带宽均衡曲线上的两个极值点, 一个极值点对应最小存储再生码MSRC (Minimum Storage Regenerating Code), 另一个极值点对应最小带宽再生码MBRC (Minimum Bandwidth Regenerating Code). 文献[7-9]给出了一些好的再生码的构造方法.
但是, 再生码的缺陷在于, 在进行故障节点修复时, 需要大量基于有限域上的计算, 计算复杂度高, 修复局部性复杂. 为解决上述问题, EI Rouayheb和Ram chan dram在MBRC的研究基础上提出了一种新型码——部分重复码(Fractional Repetition Codes, FRC)[10], 该码可以进行精确无编码有效的修复. 一般意义上的FRC由两部分组成: 外部的编码是最大距离可分码 (Maximum Distance Sparable, MDS)和内部是重复码, 该码修复故障节点无需任何编码操作, 可以很好地降低故障修复时所需的带宽和磁盘I/O开销. 目前对FRC的研究主要有基于组合设计构造的FRC[11], 基于图构造的FRC[12], 基于偏序集构造的FRC[13], 基于二分图构造的局部修复的FRC[14], 这些构造算法复杂, 并且大多只能构造同构的FRC, 不能得到异构的FRC.
为此, 本文提出了两种构造方法, 一种是基于矩阵变换构造的异构FRC, 该构造用于构造重复度为2, 节点存储容量异构的FRC, 该方法计算复杂度低, 只需进行简单的异或运算就可得到节点存储容量异构的FRC, 相比现有的运用正则图构造的同构FRC, 该构造在节点存储容量上更符合现实的存储系统; 另外, 本文还提出了运用可调节环构造的FRC, 该方法根据一定的存放规则能得到不同重复度的FRC, 主要构造重复度 的情况, 因为大部分对部分重复码的研究中重复度都是2或3, 同时该方法也可灵活的调节节点存储容量, 即可得到节点存储容量同构的FRC也可得到节点存储容量异构的FRC, 可大范围选择参数, 构造结构简单直观. 同时本文上最大的应用价值在于能无编码的修复节点存储容量异构的分布式存储系统中的故障节点, 应用前景好, 具有很好的实用价值.
1 基础知识目前研究表明, 对MDS码的研究已经十分成熟了, 各种参数的MDS码都可得到. 所以对部分重复码的研究主要体现在内部重复码的构造上. FRC实际上是复制倍数为
定义1[15]. 参数为
1)每个子集的大小均为d;
2) M中的每一个元素都属于U中的子集, 每个子集数大小为
3)同构的FRC满足
定义2[16].
本节运用矩阵变换的思想, 结合部分正则图提出了一种新的节点存储容量异构的部分重复码, 相比文献[10]和文献[16]中运用正则图和部分正则图构造的部分重复码, 本构造能得到节点存储容量更加多样的FRC, 和传统RS码相比, 在修复单节点故障时, 修复局部性更好, 修复复杂度更优, 无需任何编码操作, 计算复杂低. 具体构造算法如下:
该构造主要用于构造节点存储容量异构的FRC, 适用于分布式存储系统节点数n为奇数的情况, 且构造的FRC中数据块的重复度
步骤1. 定义一个
在矩阵的第一行确定后, 矩阵后面的每一行依次向右移动一位, 共移动
步骤2. 为得到节点存储容量异构的FRC, 在步骤1的基础上引入矩阵
步骤3. 将步骤1中的矩阵
${m_{ij}}{\rm{ = }}\left\{ {\begin{array}{*{20}{l}} 1,&{{\text{图中第}}i{\text{顶点与第}}j{\text{个顶点相连}}}\\ 0,&{{\text{顶点}}i{\text{和}}j{\text{不相连}}} \end{array}} \right.$ |
由上面关系可知, 部分正则图的每一个顶点的度和矩阵的每一行中1的个数是相等的, 经过算法的验证, 发现矩阵
对构造的FRC的故障节点修复进行分析可知, 因为该FRC的重复度
1) 若存储容量为
2) 若存储容量为
3) 若存储容量为
当系统中出现故障节点, 只需直接从其他存活的节点下载数据块修复, 修复选择性高, 无编码操作, 计算复杂度低. 根据上述构造算法给出如下具体实例.
例1. 给定
${C_7}(4) = \left( {\begin{array}{*{20}{c}} { 0}&{1}&{1}&{0}&{0}&{1}&{1} \\ { 1}&{0}&{1}&{1}&{0}&{0}&{1} \\ { 1}&{1}&{0}&{1}&{1}&{0}&{0} \\ { 0}&{1}&{1}&{0}&{1}&{1}&{0} \\ { 0}&{0}&{1}&{1}&{0}&{1}&{1} \\ { 1}&{0}&{0}&{1}&{1}&{0}&{1} \\ { 1}&{1}&{0}&{0}&{1}&{1}&{0} \end{array}} \right)$ |
进一步运用矩阵
${S_7} = \left( {\begin{array}{*{20}{c}} { 0}&{0}&{0}&{0}&{0}&{1}&{0} \\ { 0}&{0}&{0}&{0}&{1}&{0}&{0} \\ { 0}&{0}&{0}&{1}&{0}&{0}&{0} \\ { 0}&{0}&{1}&{0}&{0}&{0}&{0} \\ { 0}&{1}&{0}&{0}&{0}&{0}&{0} \\ { 1}&{0}&{0}&{0}&{0}&{0}&{0} \\ { 0}&{0}&{0}&{0}&{0}&{0}&{0} \end{array}} \right)$ |
得到
$P = \left( {\begin{array}{*{20}{c}} { 0}&{1}&{1}&{0}&{0}&{0}&{1} \\ { 1}&{0}&{1}&{1}&{1}&{0}&{1} \\ { 1}&{1}&{0}&{0}&{1}&{0}&{0} \\ { 0}&{1}&{0}&{0}&{1}&{1}&{0} \\ { 0}&{1}&{1}&{1}&{0}&{1}&{1} \\ { 0}&{0}&{0}&{1}&{1}&{0}&{1} \\ { 1}&{1}&{0}&{0}&{1}&{1}&{0} \end{array}} \right)$ |
根据矩阵P能得到 (3, 4, 5)-部分正则图, 即部分正则图的度有5, 4, 3这三种情况, 也就对应节点存储容量有5, 4, 3三种情况, 如图1所示.
若节点U1发生故障, 需连接U2, U3, U7这3个节点进行修复, 即从U2, U3, U7这3个节点下载1, 6, 7数据块进行修复, 修复过程如图2所示. 同理, 其他节点发生故障也可用相同的方法进行修复.
3 基于可调节环的FRC构造
本节运用可调节环结构构造FRC, 根据一定的存放规则去调节重复度的大小和节点存储容量, 规则是将数据元素放入相邻的节点所在环的边之间, 规定当每一个数据块依次放在两个相邻的节点之间时, 此时FRC的重复度为
假设系统中节点用
根据上述算法可以得到重复度
例2. 给定
由节点存储结构图可知该FRC满足
例3. 给定
由节点存储结构图可知, 该FRC不满足
若分布式存储系统的节点用
根据上述算法可得到重复度
例4. 给定
由上面的可调节环结构图和节点存储图可知, 构造得到的码是重复度
例5. 给定
由上面的可调节环结构图和节点存储图可知, 构造得到的FRC是重复度
对本文提出的两种新的构造进行性能分析, 主要与现有的FRC对比分析, 发现本文构造的FRC在节点存储容量上具有异构的特点, 修复局部性好, 同时在构造算法运算复杂度低, 可以大范围的选择参数, 构造结构简单直观.
4.1 节点存储容量对比分析对矩阵变换构造的异构FRC和已有的用正则图和部分正则图构造的FRC进行对比分析, 主要分析节点存储容量, 如表1.
表1只列举了部分情况, 可以发现本文提出的基于矩阵构造的异构FRC相比于正则图构造的FRC在节点存储容量上是异构的, 并且本文提出的构造方法在节点修复选择度上更优.
对基于可调节环构造的FRC进行对比分析, 相比于文献[10]提出的运用正则图构造的FRC本构造在重复度上的选择性更灵活, 正则图只能构造
根据已有研究表明, 大多数构造FRC的方法都对参数有明显的限制, 对比分析得本文提出的基于可调节环构造的FRC, 在参数选择上更具有灵活性, 对比分析结果, 如表2. 分析结果. 表2中各参数含义解释如下:
修复局部性是指在修复故障节点时需要连接的存活节点数. 当单节点出现故障时, 运用正则图构造的FRC需要连接的节点数为d, 即修复局部性为d, 运用基于矩阵变换构造的异构FRC需要连接的节点数有
图7给定的实例是基于矩阵变换构造的异构FRC和(n, k)RS码的在修复局部性方面的对比情况, 当修复节点存储容量为
4.4 构造算法运算复杂度
衡量一个算法的优劣, 通常需要考虑算法构造时涉及的运算复杂度, 即将算法写成程序在实际的计算机系统中运行时, 涉及的计算量. 本文基于矩阵变换的异构FRC, 由构造算法可知, 构造一个异构的FRC需要进行
将基于矩阵变换的异构FRC和运用偏序集构造的FRC[10]在构造算法运算复杂度进行对比分析, 在文献[10]中, 构造算法时运用到了加法, 乘法运算和基于集合上的运算, 明显可知本文算法运算复杂度更低.
5 结论考虑实际的分布式存储系统大多需要满足异构的特性. 为此, 本文提出了两种构造方法, 一种是基于矩阵变换构造的异构FRC, 该构造主要用于构造重复度为2, 节点存储容量异构的FRC, 相比用正则图构造的同构FRC, 该构造更符合现实的存储系统; 另外, 本文还提出了运用可调节环构造的FRC, 构造得到了重复度为2或3的FRC, 该方法即可得到节点存储容量同构的FRC也可得到节点存储容量异构的FRC. 与现有的FRC对比分析, 发现本文构造的FRC在节点存储容量上具有异构的特点, 修复局部性好, 同时在构造算法运算复杂度低, 可以大范围的选择参数, 构造结构简单直观. 将来如何去构造更多样的异构FRC是研究的热点.
[1] |
Wang YJ, Xu FL, Pei XQ. Research on erasure code-based fault-tolerant technology for distributed storage. Chinese Journal of Computers, 2017, 40(1): 236-255. |
[2] |
Li CD, Zhou ZH, Zhai XP. On a class of multi-source distributed storage with exact repair. IEEE Access, 2018, 6: 20704-20711. DOI:10.1109/ACCESS.2018.2825324 |
[3] |
Cai L, Zhu YY. The challenges of data quality and data quality assessment in the big data era. Data Science Journal, 2015, 14: 2. DOI:10.5334/dsj-2015-002 |
[4] |
Yuan ZM, Liu HY. Efficiently coding replicas to erasure coded blocks in distributed storage systems. IEEE Communications Letters, 2017, 21(9): 1897-1900. DOI:10.1109/LCOMM.2017.2709312 |
[5] |
Rizzo L. Effective erasure codes for reliable computer communication protocols. ACM SIGCOMM Computer Communication Review, 1997, 27(2): 24-36. DOI:10.1145/263876.263881 |
[6] |
Dimakis AG, Godfrey PB, Wu YN, et al. Network coding for distributed storage systems. IEEE Transactions on Information Theory, 2010, 56(9): 4539-4551. DOI:10.1109/TIT.2010.2054295 |
[7] |
Rashmi KV, Shah NB, Kumar PV. Optimal exact-regenerating codes for distributed storage at the MSR and MBR points via a product-matrix construction. IEEE Transactions on Information Theory, 2011, 57(8): 5227-5239. DOI:10.1109/TIT.2011.2159049 |
[8] |
Huang K, Parampalli U, Xian M. On secrecy capacity of minimum storage regenerating codes. IEEE Transactions on Information Theory, 2017, 63(3): 1510-1524. DOI:10.1109/TIT.2016.2647601 |
[9] |
Mahdaviani K, Khisti A, Mohajer S. Bandwidth adaptive & error resilient MBR exact repair regenerating codes. IEEE Transactions on Information Theory, 2019, 65(5): 2736-2759. DOI:10.1109/TIT.2018.2878223 |
[10] |
El Rouayheb S, Ramchandran K. Fractional repetition codes for repair in distributed storage systems. Proceedings of the 2010 48th Annual Allerton Conference on Communication, Control, and Computing. Monticello, IL, USA. 2010. 1510–1517.
|
[11] |
Olmez O, Ramamoorthy A. Fractional repetition codes with flexible repair from combinatorial designs. IEEE Transactions on Information Theory, 2016, 62(4): 1565-1591. DOI:10.1109/TIT.2016.2531720 |
[12] |
Silberstein N, Etzion T. Optimal fractional repetition codes based on graphs and designs. IEEE Transactions on Information Theory, 2015, 61(8): 4164-4180. DOI:10.1109/TIT.2015.2442231 |
[13] |
Aydinian H, Boche H. Fractional repetition codes based on partially ordered sets. Proceedings of 2017 IEEE Information Theory Workshop. Kaohsiung, China. 2017. 51–55.
|
[14] |
Su YS. Optimal pliable fractional repetition codes that are locally recoverable: A bipartite graph approach. IEEE Transactions on Information Theory, 2019, 65(2): 985-999. DOI:10.1109/TIT.2018.2876284 |
[15] |
朱兵, 李挥, 陈俊, 等. 基于可分组设计的部分重复码研究. 通信学报, 2015, 36(2): 98-105. |
[16] |
Gupta MK, Agrawal A, Yadav D. On weak dress codes for cloud storage. http://arxiv.org/abs/1302.3681, 2013-02-15.
|
[17] |
Tai YY, Lan L, Zeng LQ, et al. Algebraic construction of quasi-cyclic LDPC codes for the AWGN and erasure channels. IEEE Transactions on Communications, 2006, 54(10): 1765-1774. DOI:10.1109/TCOMM.2006.881361 |
[18] |
Su YS. On the construction of local parities for (r, t)-availability in distributed storage
. IEEE Transactions on Communications, 2017, 65(6): 2332-2344. DOI:10.1109/TCOMM.2017.2682861 |
[19] |
Zhu B, Li H. Adaptive fractional repetition codes for dynamic storage systems. IEEE Communications Letters, 2015, 19(12): 2078-2081. DOI:10.1109/LCOMM.2015.2496197 |