第一节 Minio保护数据免受硬件故障和无声数据损坏的纠删码Erasure-Code
第一节 第一节 Minio保护数据免受硬件故障和无声数据损坏的纠删码Erasure-Code
- 什么是纠删码Erasure-Code?
- 什么是位衰减bit rot保护?
- 驱动器(盘)如何使用纠删码?
- Erasure-Code介绍
Minio使用纠删码 erasure code
和 checksum
来保护数据免受硬件故障和无声数据损坏。 即便您丢失一半数量(N/2)的硬盘,您仍然可以恢复数据。
什么是纠删码Erasure-Code?
纠删码是一种恢复丢失和损坏数据的数学算法, Minio采用里德-所罗门码将对象分片为数据和奇偶校验块。 这就意味着如果是12块盘,一个对象可被分片的范围是:6个数据块和6个奇偶校验块 到 10个数据块和2个奇偶校验块之间。
默认情况下, MinIO 将对象拆分成N/2数据和N/2 奇偶校验盘. 虽然你可以通过 存储类型 自定义配置, 但是我们还是推荐N/2个数据和奇偶校验块, 因为它可以确保对硬盘故障提供最佳保护。
比如上面12个盘的例子,通过默认配置运行MinIO服务的话,你可以丢失任意6块盘(不管其是存放的数据块还是奇偶校验块),你仍可以从剩下的盘中的数据进行恢复。
Minio对每个对象单独编码,存储服务一经部署,通常情况下是不需要更换硬盘或者修复。Minio纠删码的设计目标是为了性能和尽可能的使用硬件加速。
什么是位衰减bit rot保护?
位衰减又被称为数据腐化Data Rot
、无声数据损坏Silent Data Corruption
,是目前硬盘数据的一种严重数据丢失问题。硬盘上的数据可能会神不知鬼不觉就损坏了,也没有什么错误日志。正所谓明枪易躲,暗箭难防,这种背地里犯的错比硬盘直接咔咔宕了还危险。 不过不用怕,Minio纠删码采用了高速 HighwayHash 基于哈希的校验和来防范位衰减。
驱动器(盘)如何使用纠删码?
MinIO会把你提供的所有驱动器,按照4 到 16个一组划分为多个纠删码集合,因此,你提供的驱动器数量必须是以上这些数字(4到16)的倍数。每个对象都会被写入一个单独的纠删码集合中。
Minio会尽可能使用最大的纠删码集合大小(EC set size)进行划分.比如 18个盘会被划分为2个纠删码集合,每个集合有9个盘;24个盘也会被划分为2个纠删码集合,每个集合有12个盘。对于将MinIO作为独立的纠删码部署运行的场景而言,这是正确的。然而,在 分布式部署 时,选择的是基于节点(亲和力)的纠删条带大小.
驱动器的大小应当都差不多。
Erasure-Code介绍
EC编码:校验数据生成
Vandermonde 矩阵:
- 编码矩阵-数据转换计算矩阵是一个k阶方阵,表示输入和输出不变
- 编码矩阵-校验块计算矩阵是一个m*k矩阵
- 对要存储的k组数据逐字节读入,形成 d1,d2…dk
- 进行矩阵乘法运算,得到最后要存储的k个数据块和m个校验块
注意:把单位矩阵也放到编码矩阵上面,看起来只是把输入无变化的输出出来。实际上,在编码理论中,并不是所有生成的Code都是k个原始数据和m个校验数据的形式。
EC解码:数据损坏时,通过生成解码矩阵来恢复数据
对所有丢失的数据,将它对应的第i行从编码矩阵-数据转换计算矩阵中移除,保留编码矩阵的前k行,构成1个k*k的矩阵。
例如:第2、3个数据块丢失,移除第2, 3行,保留第k+1和k+2行(即校验块计算矩阵的第1和2行):此时矩阵中丢失的数据块用u2和u3占位,未丢失的数据块(d1,d4,d5…),校验块(y1和y2)
最后求逆矩阵,与未丢失的块相乘,就可以恢复出已丢失数据块 u2,u3:
第一节 Minio保护数据免受硬件故障和无声数据损坏的纠删码Erasure-Code相关推荐
- minio存储之纠删码(Erasure Code)
纠删码的原理介绍可以参考: https://www.jianshu.com/p/4abf65ad03af 一般上我们如果要保证数据高可用,主流的有两种策略: 多副本 纠删码 副本(Replicatio ...
- MiniO纠删码快速入门
MiniO纠删码快速入门 Minio使用纠删码erasure code和校验和checksum来保护数据免受硬件故障和无声数据损坏. 即便您丢失一半数量(N/2)的硬盘,您仍然可以恢复数据. 什么是纠 ...
- minio分布式集群搭建完全教程(纠删码,数据恢复)
minio存储 单机测试 minio对象存储: 编译安装: minio 服务器安装: git clone https://gitee.com/mirrors/minio.git cd minio go ...
- (数据库系统概论|王珊)第六章关系数据理论-第一节:为什么要研究关系数据理论
文章目录 一:概念回顾:关系模式 二:数据依赖 三:一个例子:不遵循关系数据理论导致的问题 一句话,研究关系数据库理论就是为了设计出合适的关系模式,也即合适.高效的表 一:概念回顾:关系模式 相关文章 ...
- 《如何搭建小微企业风控模型》第一节 小微企业数据贷发展情况概述
<如何搭建小微企业风控模型>第一节小微企业数据贷发展情况概述 第一章 小微企业数据风控技术的框架 小微企业数据贷发展情况概述 搭建小微企业风控模型所需知识 风控模型概览 第二章 强相关变量 ...
- Python Orange入门之第一节:数据输入格式
数据 本节介绍如何在Orange中加载数据.我们还将展示如何探索数据,执行一些基本统计以及如何对数据进行采样. 数据输入 Orange可以以原生制表符分隔格式读取文件,也可以从任何主要标准电子表格文件 ...
- 斯坦福大学数据可视化课程学习笔记:第一节 可视化的发展与目标
<斯坦福大学数据可视化课程学习笔记>课程资源来自于斯坦福大学数据可视化课程,是我所在团队实习生提升计划的一部分.本系列是 "秉姝" 同学在学习过程中记录和整理的学习笔记 ...
- 第一节 使用ISM Web组态软件采集Modbus设备数据
系列文章目录 第一节 使用ISM Web组态软件采集Modbus设备数据 文章目录 系列文章目录 前言 一.登录系统,并创建项目 二.创建Modbus设备数据模型 三.添加Modbu设备模型的寄存器组 ...
- 【大数据入门笔记系列】第一节 大数据常用组件
[大数据入门笔记系列]第一节 大数据常用组件 大数据释义 大数据组件 跳转 大数据释义 近些年来,坊间一直流传着这样的言论:"大数据时代,人人都在裸奔".对于外行人来说,对于&qu ...
最新文章
- ceph osd 由于“No space left on device” 异常down,通过扩容文件系统或者显式运行osd进程解决
- Java之JDK、JRE、JVM
- oracle如何计算2个坐标的距离,百度地图两个坐标之间的距离计算
- 对路径的访问被拒绝怎么办_学习了解ACL—扩展访问控制列表,就在网工知识角...
- Python 学习之作用域
- java用循环给map里面存值_Java中如何遍历Map对象的4种方法
- 阿里云HBase发布冷存储特性,助你不改代码,1/3成本轻松搞定冷数据处理
- Hive与Hadoop的调用关系
- html 折叠焦点图切换,jQuery层叠式图片切换焦点图插件
- bzoj1051 [HAOI2006]受欢迎的牛
- MarathonLb的负载研究
- 基于双碳背景和趋势讲述AcrelEMS企业微电网能效管理系统-Susie 周
- Attention UNet
- Duplicate entry ‘‘ for key ‘Primary‘
- c语言程序设计21点扑克牌,c语言程序设计 21点扑克牌游戏
- 《果然新鲜》电商项目(44)- 利用Logstash自动同步数据库内容到ES
- Auto.js视频笔记
- (二)OpenCV | 阿尔法混合
- 01虚拟化与系统部署
- 怎么查看linux系统中有哪些数据库,linux命令查询mysql的有哪些