Background

Erasure Code

纠删码:与纠错码、检错码类似,均为线性分组码,通过编码可以在有限损失的前提下恢复丢失的数据。

假设每个磁盘存储w比特数据,设\(d_0,\cdots,d_{k-1}\)是存储在k个数据磁盘上的数据,\(c_0,\cdots,c_{m-1}\)是存储在m个编码盘上的编码。编码定义为数据的线性组合:

\(c_0 = a(0,0)d_0 + \cdots + a(0, k-1)d_{k-1} \)
\(c_1 = a(1,0)d_0 + \cdots +a(1,k-1)d_{k-1}\)
\(\cdots \cdots\)
\(c_{m-1} = a(m-1,0)d_0 + \cdots + a(m-1,k-1)d_{k-1}\)

编码只需要乘法和加法(\(w=1\)时加法指模2加/异或、乘法指二进制与运算),解码需要用高斯消除或矩阵求逆求的方法解一组线性方程。

译码准则:最小差错概率译码、最大似然译码

以上计算建立在\(GF(2^w)\)上,这里的w值一般选取2的幂,较为流行的值有\(w=1\)(计算简单)\(w=8\)(一个字节)w值越大,纠删码越丰富,但随w值增大,在伽罗瓦域上的计算复杂度不断提高。

\(GF(2^w)\)扩展域上的计算

加法、减法

假设\(A(x),B(x) \in GF(2^w)\),求和结果为\(C(x)\)。
\[C(x) = A(x) + B(x) = \sum\limits_{i=0}^{w-1}c_i x^i ,\quad c_i \equiv a_i + b_i mod 2 \]

乘法

假设\(A(x),B(x) \in GF(2^w)\),且
\[P(x) = \sum\limits_{i=0}^{w-1}p_i x^i ,\quad p_i \in GF(2)\]
是一个不可约多项式。两个元素的乘法运算定义为:
\[C(x)=A(x)\cdot B(x) mod P(x)\]

求逆

在乘法中定义的\(P(x)\)基础上,任一非零元\(A \in GF(2^w)\)的逆元定义为:
\[A^{-1}(x)\cdot A(x) \equiv 1 mod P(x)\]

Scalar Codes

让每个数据块由L个字节组成。在标量码的情况下,从k个数据块中的每一个中挑选一个字节,并且以m个不同的方式将k个字节以线性方式组合,以获得m个奇偶校验字节。所得到的\(n = k + m\)个字节的集合称为码字。对数据块中的所有L字节并行重复该操作以获得L个码字。 这个操作也会产生m个奇偶校验块,每个奇偶校验块由L个字节组成。

Vector Codes

选取\(\alpha \geqslant 1\)个字节组(形成superbyte). 在编码过程中,选取k个数据块中的每个数据块的superbyte,然后以m种不同的方式线性组合k个超级字节,以获得m个奇偶校验超级字节。 所得到的\(n = k + m\)个superbyte称为(矢量)码字。

MDS Codes

一个\((n, n-r, r+1)\)码称为最大距离可分(Maximum Distance Separable, MDS)码。一个MDS码是冗余度为r,最小距离等于r+1的线性码。(实现最佳容错能力)

Reed-Solomon Codes(RS码)

RS码是当且仅当\(n \leqslant 2^w\)时存在的MDS码。例如,存储系统包含256个或更少的磁盘,可以在\(GF(2^8)\)中定义一种计算。有多种方式来定义\(a(i,j)\)系数。

最简单是“Cauchy”结构:在\(GF(2^w)\)中选择n个不同的数字,并将它们分成两组X和Y,使得X具有m个元素,Y具有k个元素。计算纠删码系数:
\[a(i,j) = \frac{1}{x_i \oplus y_j}\]

MSR Codes

矢量性质的MDS码(修复时占用带宽最少)

Node Repair

节点修复分布式存储系统中对节点修复的需求可能是由于特定的硬件组件出现故障,由节点修复请求引起的流量吞噬可用于服务用户数据请求的带宽。节点修复所花费的时间也直接影响系统可用性。

Sub-chunking through Interleaving

当分包级别\(\alpha\)很大时,考虑到涉及多个码字的操作是并行执行的,从存储器易于访问的角度考虑,插入字节是有利的, 如图3所示,跨越不同码字的相应字节被连续存储。当块内的超字节的数目N很大时,例如当L = 8KB并且\(\alpha\) = 2时,连续访问N = 4K 字节是可能的。 通过交织,每个数据块被分割成一个子集,称之为子组块。 因此,节点内的每个子块保存存储在该节点中的N个码字中的每一个的一个字节。

Note: Clay Codes: Moulding MDS Codes to Yield an MSR Code的更多相关文章

  1. System Error Codes

    很明显,以下的文字来自微软MSDN 链接http://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx M ...

  2. 05-树9 Huffman Codes及基本操作

    哈夫曼树与哈弗曼编码 哈夫曼树 带权路径长度(WPL):设二叉树有n个叶子结点,每个叶子结点带有权值 Wk,从根结点到每个叶子结点的长度为 Lk,则每个叶子结点的带权路径长度之和就是: WPL = 最 ...

  3. Windows Error Codes

    http://www.briandunning.com/error-codes/?source=Windows Windows Error Codes List All Error Codes | S ...

  4. RFID 读写器 Reader Writer Cloner

    RFID读写器的工作原理 RFID的数据采集以读写器为主导,RFID读写器是一种通过无线通信,实现对标签识别和内存数据的读出和写入操作的装置. 读写器又称为阅读器或读头(Reader).查询器(Int ...

  5. RFID Reader 线路图收集

    This 125 kHz RFID reader http://www.serasidis.gr/circuits/RFID_reader/125kHz_RFID_reader.htm http:// ...

  6. CRUD生成器DBuilder设计与实现

    源码位于github:https://github.com/lvyahui8/dbuilder.git .文中图片如果太小看不清楚,请右键点击“在新标签页中打开”即可看到原图 有兴趣还可以加QQ群交流 ...

  7. RFC3261--sip

    本文转载自 http://www.ietf.org/rfc/rfc3261.txt 中文翻译可参考 http://wenku.baidu.com/view/3e59517b1711cc7931b716 ...

  8. Understanding and Using HRMS Security in Oracle HRMS

    Understanding and Using HRMS Security in Oracle HRMS Product:Oracle Human Resources Minimum Version: ...

  9. Globalization Guide for Oracle Applications Release 12

    Section 1: Overview Section 2: Installing Section 3: Configuring Section 4: Maintaining Section 5: U ...

随机推荐

  1. Ubuntu application

    inkscape 矢量画图 gimp 类PS gpick 抓色工具 kdenlive 视频编辑 blender 3D Tweaks 外观设置 Krita 绘画工具 Fontforge 字体制作工具 B ...

  2. linux 设备文件

    一.设备文件 在dev目录下 外部设备通过创建好的设备文件连接到服务器上,例如可以通过设备号给连接上去的硬件发消息. 二.设备文件分类 块设备 按块为单位,随机访问的设备 常见的有 硬盘 字符设备 按 ...

  3. 计算地球上两个坐标点(经度,纬度)之间距离sql函数

    go --计算地球上两个坐标点(经度,纬度)之间距离sql函数 --作者:lordbaby --整理:www.aspbc.com CREATE FUNCTION [dbo].[fnGetDistanc ...

  4. fatal error C1071: unexpected end of file found in comment

    1.错误 #include<iostream> using namespace std; int main() { ..... return 0; } //如果把注释放到这里了,那么提交就 ...

  5. vue-mixins使用注意事项和高级用法

    因为在项目中 mixins(混合)特性使用频率是很高的 有必要熟练掌握官方文档: mixins 实际项目中 一般都存在 列表(list) 这种很常见的使用场景 话再多都不如上demo file: mi ...

  6. codeforces 655D D. Robot Rapping Results Report(拓扑排序+拓扑序记录)

    题目链接: D. Robot Rapping Results Report time limit per test 2 seconds memory limit per test 256 megaby ...

  7. codeforces 637D D. Running with Obstacles(dp,水题,贪心)

    题目链接: D. Running with Obstacles time limit per test 2 seconds memory limit per test 256 megabytes in ...

  8. django学习笔记(三)模型

    1.创建一个django app: python manage.py startapp books 2.validate 命令检查你的模型的语法和逻辑是否正确.一旦你觉得你的模型可能有问题,运行 py ...

  9. Android学习路线01

    part1:Java 1.Java基础 2.Java面向对象 3.数组与集合,异常,常用类 4.Io流 5.多线程socket编程 6.数据库,网络传输,数据解析 part2:Android 1.An ...

  10. Skype SILK vs. iLBC vs. Speex

    对比一下这三种VOIP语音算法的特点: 1 参数与特征 2 SILK性能 关于iLBC和Speex的性能可以参考以前写的文章. 3 关于VOIP一些观点(仅代表个人观点) 1)  Skype 辛苦三年 ...