纠删码的原理介绍可以参考:
https://www.jianshu.com/p/4abf65ad03af

一般上我们如果要保证数据高可用,主流的有两种策略:

  • 多副本
  • 纠删码

副本(Replication)策略:

副本,实打实的复制,常见的是三副本,意味着现实世界有三份一样的数据。代价稍高,偏计算类的场景基本都会用该策略,比如虚拟机VM、数据库。如果一个副本挂了,马上切到另外一个,漂移时间非常短。n副本存储效率永远是1/n1/n1/n。

纠删码(Erasure Code)策略:

纠删码,会把数据进行切分,同时计算校验块。以常见的reedsolomon(RS)纠删码为例,在6数据块+3校验块的情景,可以允许3个块(任意数据块+校验块数量之和为3)损坏。在偏纯存储的场景会用到,例如对象存储。n数据块+m校验块的纠删码配置,存储效率是n/n+m, 但是在重构(Reconstruct)的时候,需要消耗cpu资源,而且有一定延时

golang reedsolomon

minio是一个对象存储服务,存储考虑的是低成本+高可用,其纠删码使用的是RS纠删码,对应的github仓库是
github.com/klauspost/reedsolomon
单核恢复能力超过1GB/s, 特定平台可以通过指令加速。

这个repo的文档比较完善,api的操作具体可以看文档。下面来做一个简单的验证

进入examples目录

$ go build simple-encoder.go && go build simple-decoder.go && rm *.go
$ ls
README.md  simple-decoder  simple-encoder

首先,以Readme.md为目标,执行encode操作,这一步是为了把文件分割成数据块+校验块

$ md5sum  README.md
0076c987f6cc5e98919b0b9403b12b5f  README.md
$ mkdir data && cd data
$ ../simple-encoder -out . ../README.md
Opening ../README.md
File split into 6 data+parity shards with 358 bytes/shard.
Writing to README.md.0
Writing to README.md.1
Writing to README.md.2
Writing to README.md.3
Writing to README.md.4
Writing to README.md.5
$ ls
README.md.0  README.md.1  README.md.2  README.md.3  README.md.4  README.md.5

simple-encoder 使用的是4数据块+2校验块的配置,一共会生成6个文件

这个时候我们删除2个数据块,看能否恢复

$ ../simple-decoder -out ./README.md.reconstruct README.md
Opening README.md.0
Error reading file open README.md.0: no such file or directory
Opening README.md.1
Error reading file open README.md.1: no such file or directory
Opening README.md.2
Opening README.md.3
Opening README.md.4
Opening README.md.5
Verification failed. Reconstructing data
Writing data to ./README.md.reconstruct
$ md5sum README.md.reconstruct
0076c987f6cc5e98919b0b9403b12b5f  README.md.reconstrut

md5sum 的结果显示,重构后的文件与源文件一致。

minio存储之纠删码(Erasure Code)相关推荐

  1. Hadoop hdfs副本存储和纠删码(Erasure Coding)存储优缺点

    The advantages and disadvantages of hadoop hdfs replicating storage and erasure coding storage. Hado ...

  2. MiniO纠删码快速入门

    MiniO纠删码快速入门 Minio使用纠删码erasure code和校验和checksum来保护数据免受硬件故障和无声数据损坏. 即便您丢失一半数量(N/2)的硬盘,您仍然可以恢复数据. 什么是纠 ...

  3. 第一节 Minio保护数据免受硬件故障和无声数据损坏的纠删码Erasure-Code

    第一节 第一节 Minio保护数据免受硬件故障和无声数据损坏的纠删码Erasure-Code 什么是纠删码Erasure-Code? 什么是位衰减bit rot保护? 驱动器(盘)如何使用纠删码? E ...

  4. K8s使用Ceph纠删码池做持久化卷

    K8s使用Ceph纠删码池做持久化卷 Ceph侧准备 Ceph纠删码相关 创建纠删码规则 创建纠删码池 创建复制集池 创建用户并授权 K8s消费ec池 验证 (可选)缓存方式 Kubernetes版本 ...

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

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

  6. 什么是纠删码(与纠错码的区别)|纠删码与副本对比|LDPC码

    什么是纠删码(与纠错码的区别) 存储领域来看,数据冗余机制其实这几十年来没有太多进展,RAID.副本一直是当仁不让的最终选择.而近几年,尤其是规模较大的应用场景下,纠删码越来越多的出现在选择的视野范围 ...

  7. Hadoop 3.0 Erasure Coding 纠删码功能预分析

    前言 HDFS也可以支持Erasure Coding功能了,将会在Hadoop 3.0中发布,可以凭图为证: 在HDFS-7285中,实现了这个新功能.鉴于此功能还远没有到发布的阶段,可能后面此块相关 ...

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

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

  9. Hadoop 3.0纠删码简单调研

    目录: 1.  背景 2. 纠删码(Erasure Coding)介绍 3. 纠删码(Erasure Coding)原理 4. 总结 一. 背景 随着大数据技术的发展,HDFS作为Hadoop的核心模 ...

最新文章

  1. C#中 int.TryParse 的用法
  2. Jquery页面加载效果
  3. 修改Sublime Text3左侧导航字号大小及行高
  4. jmeter进行性能测试_使用JMeter进行性能测试
  5. angular1.2.27_Angular 8 + Spring Boot 2.2:立即构建一个CRUD应用程序!
  6. 加密机工作原理_端子机压力检测装置工作原理
  7. 微服务Eureka使用详解
  8. IDL 读取葵花8(Himawari-8)HSD数据
  9. JVM内存结构(1.8)
  10. 地摊经济一千年:从《韩熙载夜宴图》到木屋烧烤“撸串”
  11. 多个html合并一个PDF,如何将多个网页合并成一个PDF文件
  12. CE实现植物大战僵尸后台运行
  13. cocos2dx 通用性能优化方案
  14. 4个高质量站点推荐值得收藏
  15. 计算机共享访问权限 xp,上面就是xp访问win7共享要密码的解决方法
  16. python将小写字母转化为大写_python如何定义函数将小写转换为大写
  17. 扑捉和捕捉的区别照相_摄影,为的就是捕捉那一瞬间
  18. java从入门到精通----OOP 2
  19. 解决系统中没有ASPNET用户的烦恼
  20. OneFlow 的 Global Tensor 学习笔记和实习总结

热门文章

  1. 德国公民信用相关数据_作为公民数据科学家,没有任何事
  2. 360的流量监控还是不错的,
  3. 局域网用程控交换机电源的网络监控系统设计
  4. c语言强制写注册表,:注册表的认识以及用c语言编写一个“百分之一熊猫烧香”...
  5. 手机即时通服务器地址修改,手机即时通服务器地址修改
  6. PS应该学哪些内容和技术?
  7. 抠图大师:TouchRetouch for mac
  8. 「解读」华为云桌面说“高清”的时候,究竟在说什么?
  9. 16代表啥_十六型人格的四个字母分别代表了什么含义?
  10. 如何在网站左侧和右侧的漂浮图片上添加QQ咨询、旺旺、微博、电话?