前言
在Ceph和RAID存储领域,RS纠删码扮演着重要的角色,纠删码是经典的时间换空间的案例,通过更多的CPU计算,降低低频存储数据的存储空间占用。

纠删码原理
纠删码基于范德蒙德矩阵实现,核心公式如下所示(AD=E)

假设某些数据丢失,右式部分行丢失,变成E’,则左式也相应去掉对应行,变成A’。

函数Inverse[A′]Inverse[A′]代表A’的逆矩阵,I代表单位矩阵

Python实现

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import numpy as np# 备份数量
backup_up = 2
# 原始数据
data = np.array([1, 0, 0, 8, 6])
# 根据纠删码原理生成的数据
vander_data = np.concatenate((np.identity(len(data)), np.vander(data, 3).transpose()[::-1]), axis=0)
storage_data = vander_data.dot(data)
print('生成数据',storage_data)
# 模拟数据丢失
loss_data = np.concatenate((storage_data[0:3], storage_data[5:7]), axis=0)
print('丢失后数据', loss_data)
# 恢复数据
recover_data = np.linalg.inv(np.concatenate((vander_data[0:3], vander_data[5:7]), axis=0)).dot(loss_data)
print('恢复数据',recover_data)

基于Python的Numpy库可以很容易地模拟纠删码数据恢复的流程。效果如下所示

伽罗华域优化

实际上,上述的Python代码只是纠删码的最基础版本,可以发现校验数据大于原始数据,这样就导致校验数据需要更多的存储位,并没有很好的优化存储空间。

在现实场景中,纠删码一般通过自定义的伽罗华域进行运算,保证位数在一定范围内。伽罗华域GF(2w)​代表所有运算结果只能在[0,2w)​之间。

伽罗华域的加法和减法为异或运算,乘法和除法需要基于生成多项式计算出gfilog表。GF(24)的gfilog表如下所示。

以8*9为例,计算过程如下所示,需要注意如果值大于2w,需要模2w。

更多优化
范德蒙德矩阵求逆矩阵的时间复杂度为O(N3),柯西矩阵求逆矩阵的时间复杂度为O(N2),因此可以采用柯西矩阵替代范德蒙德矩阵用于编码运算。

RS(纠删码)技术浅析及Python实现相关推荐

  1. RS 纠删码为什么可以提高分布式存储可靠性?| 原力计划

    作者 | .NY&XX 来源 | CSDN博客专家,责编 | 夕颜 封图 | CSDN 下载自视觉中国 出品 | CSDN(ID:CSDNnews) 前言 Erasure Code(EC),即 ...

  2. 全网最新最全的 HDFS 文件纠删码技术分析

    前言 本文隶属于专栏<1000个问题搞定大数据技术体系>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见1000个问题搞定大数据技 ...

  3. Hadoop 3.0 纠删码技术分析(Erasure Coding)

    背景 随着大数据技术的发展,HDFS作为Hadoop的核心模块之一得到了广泛的应用.为了数据的可靠性,HDFS通过多副本机制来保证.在HDFS中的每一份数据都有两个副本,1TB的原始数据需要占用3TB ...

  4. 【海云捷迅云课堂】分布式存储系统纠删码技术分享

    云课堂专题 海云捷迅云课堂专题,旨在秉承开源理念,为大家提供OpenStack技术原理与实践经验,该专题文章均由海云捷迅工程师理论与实践相结合总结而成,如大家有其他想要了解的信息,可留言给我们,我们会 ...

  5. 【hadoop】纠删码技术详解

    1 纠删码背景 随着大数据技术的发展,HDFS作为Hadoop的核心模块之一得到了广泛的应用.为了数据的可靠性,HDFS通过多副本机制来保证.在HDFS中的每一份数据都有两个副本,1TB的原始数据需要 ...

  6. fabric通过java怎么整合RS纠删码的实现

    fabric是一个分布式账本平台,它提供了一种简单的方式来构建区块链应用程序.如果想要在fabric中使用RS纠删码,可以按照以下步骤进行整合: 首先,需要在fabric中定义一个新的链码(chain ...

  7. go分布式存储,rs纠删码

    rs.txt 内容 AAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDSDG 分片和解码 ...

  8. 分布式系统下的纠删码技术(一) -- Erasure Code (EC)

    近几个月主要参与一个分布式存储系统的纠删码部分(用于数据容错),纠删码在学术界出现比较早,现在ceph,微软的存储系统,Hadoop 3.0等都用了EC.文章会分为多篇,主要将Erasure Code ...

  9. 信道编码之纠删码编码

    简介 随着数据的存储呈现出集中化(以分布式存储系统为基础的云存储系统)和移动化(互联网移动终端)的趋势,数据可靠性愈发引起大家的重视.集群所承载的数据量大大上升,但存储介质本身的可靠性进步却很小,这要 ...

最新文章

  1. 照葫芦画瓢-python editors(编辑器 IDE)
  2. 代码分析 公用类库
  3. [Student.Achieve] 学生教务管理系统开源
  4. 怎样在linux系统上安装r,Linux系统之路——如何在CentOS7.2安装R(示例代码)
  5. 学习推荐《精通Python网络爬虫:核心技术、框架与项目实战》中文PDF+源代码
  6. jeecg开源项目的IDEA的部署
  7. 一个c++程序员一年前的生活笔记
  8. 为什么nodejs是单进程的_Nodejs探秘:深入理解单线程实现高并发原理
  9. 解决mysql从windows迁移到centos出现乱码问题
  10. 正则表达式 IP域名
  11. 工资10000元,应该交多少税?
  12. 2013年第一季度中国移动互联网应用安全检测与分析报告
  13. dex2jar官网和jdgui官网链接
  14. Navicat premium11 一键破解 无需注册码
  15. Spring boot yml的格式
  16. 回溯法中解空间树的组织
  17. vue解决Not allowed to load local resource
  18. unity实现简单的地图编辑器,实现跑酷地图编辑器 2d地图编辑器,导出地图json数据,导入地图json数据
  19. 怎么更改Visual Studio项目名字
  20. 【笔记】SSH服务:基本概述、相关命令“ssh、scp、sftp”、验证方式、场景实践、安全优化

热门文章

  1. mdadm,用命令做RAID
  2. 网络系统工程师的最终归宿(一)创业还是打工
  3. exchange客户端不能正常登陆
  4. 德州职业技术学院计算机系,德州职业技术学院计算机系元旦晚会相声视频
  5. python pandas sqlserver_python学好了还可以用到SSIS上,将Python的能力嫁接到SSIS中
  6. iphone同步助手_教你如何用爱思助手给你的苹果手机设置自己喜欢的铃声
  7. 【总结】MTO/MTS操作步骤及月末结算
  8. 程序员最害怕的5件事,你中招了吗?
  9. SAP的资产负债表、损益表的利润体现
  10. 12星座男生最吃哪一套