#摘要
本文提出了PDHLatin,它是一种基于列汉密尔顿拉丁方(CHIS-column hamiltonian Latin squares)构造的校验块独立的2容错水平码。通过证明它是MDS码。 本文也提出了一种新的基于CHIS的校验块独立的2容错混合编码-PIMLatin。 这两种编码具有良好的扩展性以及结构多样性。 同时本文也讨论编码缩减技术,以及它所带来的参数扩展性,结构可变性和可靠性的提升。 基于垂直缩减的思想,本文利用非汉密尔顿拉丁方的方式提出了一种2容错阵列码的构建方式。
#简介
磁盘容量的增大,以及存储系统规模的增大导致多故障频发。 因此,多容错纠删码变得流行起来,但是当前的多容错纠删码具有一些内在的局限性。Plank在Fast05上tutorial对存储系统的纠删码给出了一个详细的介绍。纠删码是一种编码容错机制。 它将nnn个数据磁盘编码成mmm个校验磁盘,并且可以容错任意的ttt个磁盘的故障,但是并没有一种针对nnn, mmm,ttt>111情况下的一致公认的最优编码技术。
广为人知的多容错编码技术主要分为三种类别: Reed-Solomon码, 二进制线性码和阵列码。
- RS码是仅有的一种适用于任意nnn, mmm(=ttt)MDS码。 这意味着最优的存储效率以及更新效率。 但是由于它使用Galois Field进行编解码运算(虽然一些优化的方法提出来),计算复杂性是一个很严重的问题。
- 二进制线性码是基于XOR的编码,具有较优的计算复杂性,但是存储效率比较低。 图1展示了一种2维线性码,其中数据单元DijD_{ij}Dij同时参与了两个校验块PiP_iPi和QiQ_iQi的计算。 这个例子说明了线性码的核心观点: 将数据单元分配到多个校验组中,也就是说一个数据单元参与到多个组,保证了多容错特性。
- 阵列码将数据或者校验单元组织到一个array中。 EVENODD是第一种MDS阵列码,其他随后的一些阵列码像X-COde, RDP, STAR-code等都与它有思想上相似的地方。
#图论知识
又找了一篇相关的论文:Combinatorial Constructions of Multi-Erasure-Correcting Codes with
Independent Parity Symbols for Storage Systems 依然卡在了P1F以及拉丁方上,因此着眼于这些知识的理论搭建。
##P1F相关
所谓一个图G的因子Gi,是指至少包含G的一条边的生成子图。
所谓一个图G的因子分解,是指把图G分解为若干个边不重的因子之并。
所谓一个图G的n因子,是指图G的n度正则因子。
生成子图: 与图G的顶点相同,边是子集。
正则图: 图的所有顶点的度都相同,例如孤立的一群点是0-度正则图
n度正则因子: 首先得满足因子GiG_iGi,然后满足正则的概念。
例如这个五边形内部的红色五角形就是图的一个2因子。
匹配: 图的一个匹配是图的一些边的集合,这些边没有公共的顶点。
最大匹配: 首先是图的一个匹配,然后边的数目最多
完美匹配: 是图的一个匹配,且能囊括所有的顶点。
例如,下图就是一个完美匹配
图的一因子分解:图可以分解为若干个边不重复的完美匹配的导出子图。
例如具有2n2n2n个顶点的完全图K2nK_{2n}K2n可进行一因子分解,K4K_4K4可分解为3个1因子。
完美1因子分解: 如果一个图可以进行一因子分解,且对于任意的两个因子FiF_iFi和FjF_jFj,有FiUFjF_i U F_jFiUFj产生了汉密尔顿回路,那么这种1因子分解就是完美1因子分解,简写为P1F。
汉密尔顿回路: nnn个顶点,nnn条边组成了一个环路,这样的环路只要删除其中任意一条边就不会再有回路,这种环路叫做汉密尔顿回路。 通过图G的每个结点一次,且仅一次的通路(回路)。
具有偶数个节点的完全图都有P1F。
##拉丁方相关
对于k≤nk \leq nk≤n,一个k∗nk*nk∗n的拉丁矩阵是1个k∗nk*nk∗n的矩阵,而且矩阵的每一行和每一列都没有重复的元素。 通常我们使用Zn=0,1,⋯ ,n−1Z_n = {0, 1, \cdots, n-1}Zn=0,1,⋯,n−1作为元素集合,用L(k,n)L(k,n)L(k,n)叫做k∗nk*nk∗n的拉丁矩阵,L(k,n)L(k,n)L(k,n)中的第rrr行,第ccc列的元素是RrcR_{rc}Rrc。 我们称L(n,n)L(n,n)L(n,n)叫做拉丁方阵,且可以使用具有n2n^2n2个条目的333元组(row,column,symbol)(row, column, symbol)(row,column,symbol)来表示它。
拉丁矩阵RRR的每一行都是上述ZnZ_nZn的一个排列。如果拉丁方LLL的两行组成一个单一的环,那么LLL叫做行汉密尔顿拉丁方,本文关注列汉密尔顿拉丁方(CHIS),也就是两列组成一个环,如下图的C5C_5C5。
###CHIS和P1F的相互转换
CHIS和P1F具有紧密的联系。n阶CHIS可以转换为一个P1F(V, W, E),过程如下:使顶点V={vi∣0≤i≤n−1}V =\{ v_i | 0\leq i \leq n-1\}V={vi∣0≤i≤n−1},使顶点W={wi∣0≤i≤n−1}W =\{ w_i | 0\leq i \leq n-1\}W={wi∣0≤i≤n−1},对于所有的(i,j,k)∈L(i,j,k) \in L(i,j,k)∈L, 使边$(v_i, w_k) \in F_j $, 同样这个过程也可以反向进行。
如下图的例子,P1F和CHIS一一对应:
转换过程
首先由K5,5K_{5,5}K5,5生成一个完美1因子匹配(即每一个子图的顶点的度都是1),每一对因子FiF_iFi, FjF_jFj都可以形成汉密尔顿环路。 下面的是一个5阶列汉密尔顿拉丁方。 这两个图可以相互转换(C5和K5,5C_5 和 K_{5,5}C5和K5,5)。
将P1F中的FjF_jFj对应于C5C_5C5的第j列;将C5C_5C5第jjj列的元素的行号iii作为FjF_jFj中V顶点的下标, 即viv_ivi; 将C5C_5C5第jjj列的元素的值kkk作为FjF_jFj中W顶点的下标, 即wkw_kwk。 举例说明: j=1,对应于K5,5K_{5,5}K5,5的F1F_1F1和C5C_5C5的第1列,即1,2,3,4,01,2,3,4,01,2,3,4,0; 在C5C_5C5中,当i=0i=0i=0时,k=1k=1k=1(第000行,第111列的元素值为111),因此在F1F_1F1中v0v_0v0与w1w_1w1相连, 同样当i=1i=1i=1时,k=2k=2k=2(第111行,第111列的元素值为222),因此F1F_1F1中v1v_1v1与w2w_2w2相连。
对于C5C_5C5中的第1,3列形成环路,其实就是说对于K5,5K_{5,5}K5,5中的P1F, F1F_1F1和F3F_3F3形成了环路,这两个是等价的。
如果Kn+1K_{n+1}Kn+1具有P1F,Kn,nK_{n,n}Kn,n也具有,由于已知偶数节点的完全图具有完美1因子,因此当n为奇数(n=2也可以)时,Kn,nK_{n,n}Kn,n 具有P1F。
#新的编码
#PDHLatin codes
#未完待续