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

  • 什么是纠删码Erasure-Code?
  • 什么是位衰减bit rot保护?
  • 驱动器(盘)如何使用纠删码?
  • Erasure-Code介绍

Minio使用纠删码 erasure codechecksum来保护数据免受硬件故障和无声数据损坏。 即便您丢失一半数量(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相关推荐

  1. minio存储之纠删码(Erasure Code)

    纠删码的原理介绍可以参考: https://www.jianshu.com/p/4abf65ad03af 一般上我们如果要保证数据高可用,主流的有两种策略: 多副本 纠删码 副本(Replicatio ...

  2. MiniO纠删码快速入门

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

  3. minio分布式集群搭建完全教程(纠删码,数据恢复)

    minio存储 单机测试 minio对象存储: 编译安装: minio 服务器安装: git clone https://gitee.com/mirrors/minio.git cd minio go ...

  4. (数据库系统概论|王珊)第六章关系数据理论-第一节:为什么要研究关系数据理论

    文章目录 一:概念回顾:关系模式 二:数据依赖 三:一个例子:不遵循关系数据理论导致的问题 一句话,研究关系数据库理论就是为了设计出合适的关系模式,也即合适.高效的表 一:概念回顾:关系模式 相关文章 ...

  5. 《如何搭建小微企业风控模型》第一节 小微企业数据贷发展情况概述

    <如何搭建小微企业风控模型>第一节小微企业数据贷发展情况概述 第一章 小微企业数据风控技术的框架 小微企业数据贷发展情况概述 搭建小微企业风控模型所需知识 风控模型概览 第二章 强相关变量 ...

  6. Python Orange入门之第一节:数据输入格式

    数据 本节介绍如何在Orange中加载数据.我们还将展示如何探索数据,执行一些基本统计以及如何对数据进行采样. 数据输入 Orange可以以原生制表符分隔格式读取文件,也可以从任何主要标准电子表格文件 ...

  7. 斯坦福大学数据可视化课程学习笔记:第一节 可视化的发展与目标

    <斯坦福大学数据可视化课程学习笔记>课程资源来自于斯坦福大学数据可视化课程,是我所在团队实习生提升计划的一部分.本系列是 "秉姝" 同学在学习过程中记录和整理的学习笔记 ...

  8. 第一节 使用ISM Web组态软件采集Modbus设备数据

    系列文章目录 第一节 使用ISM Web组态软件采集Modbus设备数据 文章目录 系列文章目录 前言 一.登录系统,并创建项目 二.创建Modbus设备数据模型 三.添加Modbu设备模型的寄存器组 ...

  9. 【大数据入门笔记系列】第一节 大数据常用组件

    [大数据入门笔记系列]第一节 大数据常用组件 大数据释义 大数据组件 跳转 大数据释义 近些年来,坊间一直流传着这样的言论:"大数据时代,人人都在裸奔".对于外行人来说,对于&qu ...

最新文章

  1. ceph osd 由于“No space left on device” 异常down,通过扩容文件系统或者显式运行osd进程解决
  2. Java之JDK、JRE、JVM
  3. oracle如何计算2个坐标的距离,百度地图两个坐标之间的距离计算
  4. 对路径的访问被拒绝怎么办_学习了解ACL—扩展访问控制列表,就在网工知识角...
  5. Python 学习之作用域
  6. java用循环给map里面存值_Java中如何遍历Map对象的4种方法
  7. 阿里云HBase发布冷存储特性,助你不改代码,1/3成本轻松搞定冷数据处理
  8. Hive与Hadoop的调用关系
  9. html 折叠焦点图切换,jQuery层叠式图片切换焦点图插件
  10. bzoj1051 [HAOI2006]受欢迎的牛
  11. MarathonLb的负载研究
  12. 基于双碳背景和趋势讲述AcrelEMS企业微电网能效管理系统-Susie 周
  13. Attention UNet
  14. Duplicate entry ‘‘ for key ‘Primary‘
  15. c语言程序设计21点扑克牌,c语言程序设计 21点扑克牌游戏
  16. 《果然新鲜》电商项目(44)- 利用Logstash自动同步数据库内容到ES
  17. Auto.js视频笔记
  18. (二)OpenCV | 阿尔法混合
  19. 01虚拟化与系统部署
  20. 怎么查看linux系统中有哪些数据库,linux命令查询mysql的有哪些

热门文章

  1. 以太坊Parity节点搭建
  2. oracle11g 服务端+客户端
  3. ROS control-----controller_manager简介
  4. 修改策略组/注册表 屏蔽Win10升级解决方法
  5. “熊猫烧香”作者被捕后写的有关熊猫感想
  6. 转转显示服务器异常,转转验机报告--各种问题详解
  7. JS 唤起QQ对话框
  8. 迭代次数表达的宇称不守恒现象
  9. 计算机实验基础1,大学计算机基础上机实验1
  10. python函数基础