Background
Erasure Code
纠删码:与纠错码、检错码类似,均为线性分组码,通过编码可以在有限损失的前提下恢复丢失的数据。
假设每个磁盘存储w比特数据,设d0,⋯,dk−1d0,⋯,dk−1 是存储在k个数据磁盘上的数据,c0,⋯,cm−1c0,⋯,cm−1 是存储在m个编码盘上的编码。编码定义为数据的线性组合:
c0=a(0,0)d0+⋯+a(0,k−1)dk−1c0=a(0,0)d0+⋯+a(0,k−1)dk−1
c1=a(1,0)d0+⋯+a(1,k−1)dk−1c1=a(1,0)d0+⋯+a(1,k−1)dk−1
⋯⋯⋯⋯
cm−1=a(m−1,0)d0+⋯+a(m−1,k−1)dk−1cm−1=a(m−1,0)d0+⋯+a(m−1,k−1)dk−1
编码只需要乘法和加法(w=1w=1 时加法指模2加/异或、乘法指二进制与运算),解码需要用高斯消除或矩阵求逆求的方法解一组线性方程。
译码准则:最小差错概率译码、最大似然译码
以上计算建立在GF(2w)GF(2w) 上,这里的w值一般选取2的幂,较为流行的值有w=1w=1 (计算简单