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. Web前端理论知识记录

      Web前端理论知识记录 Elena· 5 个月前 cookies,sessionStorage和localStorage的区别? sessionStorage用于本地存储一个会话(session) ...

  2. java:类集操作,多对多的关系

    java:类集操作,多对多的关系 //一个课程有多个学生报名, //一个学生可以报名多个课程 demo.java, Student.java, Course.java' public class Co ...

  3. 手把手编写PHP框架 深入了解MVC运行流程

    1 什么是MVC MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller ...

  4. g++能过,c++过不了

    可能原因: 1.在递归的时候,递归函数中忘记加返回return.(详见Wrong Answer,Memory Limit Exceeded) 代码1:错误 g++--------accepted c+ ...

  5. 防止未登录用户操作—struts2拦截器简单实现(转)

    原文地址:http://blog.csdn.net/zhutulang/article/details/38351629 尊重原创,请访问原地址 一般,我们的web应用都是只有在用户登录之后才允许操作 ...

  6. type为number的input标签输入小数的方法

    纠结了一段时间都没找出方法,最后灵光一现想出这个方法,没想到测试下果然成功了! 看目前网上几乎很难找到相对应的解决方法,所以这里分享出来,如果有更佳方法欢迎提出. 方法如下: <input ty ...

  7. Struts2 - action通配符映射

    一个 Web 应用可能有成百上千个 action 声明. 可以利用 struts 提供的通配符映射机制把多个彼此相似的映射关系简化为一个映射关系 通配符映射规则 –      若找到多个匹配, 没有通 ...

  8. 设计模式 之 《观察者模式 (Observer)》

    #ifndef __OBSERVER_MODEL__ #define __OBSERVER_MODEL__ #include <string> #include <iostream& ...

  9. 【二叉树的递归】05二叉树中找任意起点和终点使他们的路径和最大【Binary Tree Maximum Path Sum】

    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 给定一个二叉树,寻找值最大的路径. ...

  10. elasticsearch监控平台cerebro-0.8.3 相关操作

    上面这个平台是cerebro-0.8.3  在github上找就有了 #################### GET /hnscan_source_o_comm_drv_bad_bhv_occur/ ...