minio存储之纠删码(Erasure Code)
纠删码的原理介绍可以参考:
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)相关推荐
- Hadoop hdfs副本存储和纠删码(Erasure Coding)存储优缺点
The advantages and disadvantages of hadoop hdfs replicating storage and erasure coding storage. Hado ...
- MiniO纠删码快速入门
MiniO纠删码快速入门 Minio使用纠删码erasure code和校验和checksum来保护数据免受硬件故障和无声数据损坏. 即便您丢失一半数量(N/2)的硬盘,您仍然可以恢复数据. 什么是纠 ...
- 第一节 Minio保护数据免受硬件故障和无声数据损坏的纠删码Erasure-Code
第一节 第一节 Minio保护数据免受硬件故障和无声数据损坏的纠删码Erasure-Code 什么是纠删码Erasure-Code? 什么是位衰减bit rot保护? 驱动器(盘)如何使用纠删码? E ...
- K8s使用Ceph纠删码池做持久化卷
K8s使用Ceph纠删码池做持久化卷 Ceph侧准备 Ceph纠删码相关 创建纠删码规则 创建纠删码池 创建复制集池 创建用户并授权 K8s消费ec池 验证 (可选)缓存方式 Kubernetes版本 ...
- 全网最新最全的 HDFS 文件纠删码技术分析
前言 本文隶属于专栏<1000个问题搞定大数据技术体系>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见1000个问题搞定大数据技 ...
- 什么是纠删码(与纠错码的区别)|纠删码与副本对比|LDPC码
什么是纠删码(与纠错码的区别) 存储领域来看,数据冗余机制其实这几十年来没有太多进展,RAID.副本一直是当仁不让的最终选择.而近几年,尤其是规模较大的应用场景下,纠删码越来越多的出现在选择的视野范围 ...
- Hadoop 3.0 Erasure Coding 纠删码功能预分析
前言 HDFS也可以支持Erasure Coding功能了,将会在Hadoop 3.0中发布,可以凭图为证: 在HDFS-7285中,实现了这个新功能.鉴于此功能还远没有到发布的阶段,可能后面此块相关 ...
- 【海云捷迅云课堂】分布式存储系统纠删码技术分享
云课堂专题 海云捷迅云课堂专题,旨在秉承开源理念,为大家提供OpenStack技术原理与实践经验,该专题文章均由海云捷迅工程师理论与实践相结合总结而成,如大家有其他想要了解的信息,可留言给我们,我们会 ...
- Hadoop 3.0纠删码简单调研
目录: 1. 背景 2. 纠删码(Erasure Coding)介绍 3. 纠删码(Erasure Coding)原理 4. 总结 一. 背景 随着大数据技术的发展,HDFS作为Hadoop的核心模 ...
最新文章
- C#中 int.TryParse 的用法
- Jquery页面加载效果
- 修改Sublime Text3左侧导航字号大小及行高
- jmeter进行性能测试_使用JMeter进行性能测试
- angular1.2.27_Angular 8 + Spring Boot 2.2:立即构建一个CRUD应用程序!
- 加密机工作原理_端子机压力检测装置工作原理
- 微服务Eureka使用详解
- IDL 读取葵花8(Himawari-8)HSD数据
- JVM内存结构(1.8)
- 地摊经济一千年:从《韩熙载夜宴图》到木屋烧烤“撸串”
- 多个html合并一个PDF,如何将多个网页合并成一个PDF文件
- CE实现植物大战僵尸后台运行
- cocos2dx 通用性能优化方案
- 4个高质量站点推荐值得收藏
- 计算机共享访问权限 xp,上面就是xp访问win7共享要密码的解决方法
- python将小写字母转化为大写_python如何定义函数将小写转换为大写
- 扑捉和捕捉的区别照相_摄影,为的就是捕捉那一瞬间
- java从入门到精通----OOP 2
- 解决系统中没有ASPNET用户的烦恼
- OneFlow 的 Global Tensor 学习笔记和实习总结
热门文章
- 德国公民信用相关数据_作为公民数据科学家,没有任何事
- 360的流量监控还是不错的,
- 局域网用程控交换机电源的网络监控系统设计
- c语言强制写注册表,:注册表的认识以及用c语言编写一个“百分之一熊猫烧香”...
- 手机即时通服务器地址修改,手机即时通服务器地址修改
- PS应该学哪些内容和技术?
- 抠图大师:TouchRetouch for mac
- 「解读」华为云桌面说“高清”的时候,究竟在说什么?
- 16代表啥_十六型人格的四个字母分别代表了什么含义?
- 如何在网站左侧和右侧的漂浮图片上添加QQ咨询、旺旺、微博、电话?