Minio入门系列【2】纠删码

news2024/11/26 12:00:30

1 纠删码

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

1.1 什么叫纠删码

纠删码是一种用于重建丢失或损坏数据的数学算法。

纠删码(erasure coding,EC)是一种数据保护方法,它将数据分割成片段,把冗余数据块扩展、编码,并将其存储在不同的位置,比如磁盘、存储节点或者其它地理位置。
在这里插入图片描述
Minio采用Reed-Solomon code将对象拆分成N/2数据和N/2 奇偶校验块。 这就意味着如果是12块盘,一个对象会被分成6个数据块、6个奇偶校验块,你可以丢失任意6块盘(不管其是存放的数据块还是奇偶校验块),你仍可以从剩下的盘中的数据进行恢复。

1.2 为什么纠删码有用?

纠删码的工作原理和RAID或者复制不同,像RAID6可以在损失两块盘的情况下不丢数据,而Minio纠删码可以在丢失一半的盘的情况下,仍可以保证数据安全。 而且Minio纠删码是作用在对象级别,可以一次恢复一个对象,而RAID是作用在卷级别,数据恢复时间很长。 Minio对每个对象单独编码,存储服务一经部署,通常情况下是不需要更换硬盘或者修复。Minio纠删码的设计目标是为了性能和尽可能的使用硬件加速。
在这里插入图片描述

1.3 什么是位衰减bit rot保护?

位衰减又被称为数据腐化Data Rot、无声数据损坏Silent Data Corruption,是目前硬盘数据的一种严重数据丢失问题。硬盘上的数据可能会神不知鬼不觉就损坏了,也没有什么错误日志。正所谓明枪易躲,暗箭难防,这种背地里犯的错比硬盘直接咔咔宕了还危险。 不过不用怕,Minio纠删码采用了高速 HighwayHash 基于哈希的校验和来防范位衰减。

2 纠错码单机模式环境搭建

2.1 创建存储文件夹

这里直接在D盘下创建了四个文件夹,也可以在不同的盘符下创建。
在这里插入图片描述

2.2 启动

直接在启动命名最后添加多个存贮位置就可以了。

# 设置用户名
set MINIO_ROOT_USER=admin
# 设置密码(8位)
set MINIO_ROOT_PASSWORD=admin123
# 指定启动端口(未指定默认9000)、控制台端口90001及存储位置
minio.exe  server  --address :9000 --console-address :9001 D:\tools\minio\data01  D:\tools\minio\data02 D:\tools\minio\data03 D:\tools\minio\data04

启动命令后,控制台显示了警告信息,这里只配置了4个位置,所以两个以上损坏就会造成数据不可用。

警告:主机本地有2个以上的驱动器故障,将导致数据变得不可用。

在这里插入图片描述
Status显示当前4个驱动器在线,0个不在线。

登录后查看控制台,也能看到当前所有驱动器的状态。

在这里插入图片描述

2.3 测试

首先上传一张150K大小的照片。
在这里插入图片描述
查看硬盘中文件,发现这4个文件下都存在以上传文件名命名的文件夹,而不是直接的文件了,是以文件名创建文件夹,然后将文件分片为了文件块的元数据。
在这里插入图片描述
然后我们删除data03和data04文件夹,然后会发现,被删除的文件夹竟然马上自动恢复了过来。然后直接删除data03和data04文件夹下的元数据:
在这里插入图片描述
发现尽管删除了两份分片数据,依然可以正常下载。
在这里插入图片描述
接着再删了一个元数据,发现该文件就会找不到了,说明半数以上元数据丢失,这个文件就真的找不到了。。。
在这里插入图片描述

3 分布式MinIO

分布式Minio可以让你将多块硬盘(甚至在不同的机器上)组成一个对象存储服务。由于硬盘分布在不同的节点上,分布式Minio避免了单点故障。
在这里插入图片描述

3.1 分布式存储可靠性常用方法

分布式存储,很关键的点在于数据的可靠性,即保证数据的完整,不丢失,不损坏。只有在可靠性实现的前提下,才有了追求一致性、高可用、高性能的基础。而对于在存储领域,一般对于保证数据可靠性的方法主要有两类,一类是冗余法,一类是校验法。

3.1.1 冗余

冗余法最简单直接,即对存储的数据进行副本备份,当数据出现丢失,损坏,即可使用备份内容进行恢复,而副本备份的多少,决定了数据可靠性的高低。这其中会有成本的考量,副本数据越多,数据越可靠,但需要的设备就越多,成本就越高。可靠性是允许丢失其中一份数据。当前已有很多分布式系统是采用此种方式实现,如Hadoop的文件系统(3个副本),Redis的集群,MySQL的主备模式等。

3.1.2 校验

校验法即通过校验码的数学计算的方式,对出现丢失、损坏的数据进行校验、还原。注意,这里有两个作用,一个校验,通过对数据进行校验和( checksum )进行计算,可以检查数据是否完整,有无损坏或更改,在数据传输和保存时经常用到,如TCP协议;二是恢复还原,通过对数据结合校验码,通过数学计算,还原丢失或损坏的数据,可以在保证数据可靠的前提下,降低冗余,如单机硬盘存储中的RAID技术,纠删码(Erasure Code)技术等。MinlO采用的就是纠删码技术。

3.2 分布式Minio有什么好处?

在大数据领域,通常的设计理念都是无中心和分布式。Minio分布式模式可以帮助你搭建一个高可用的对象存储服务,你可以使用这些存储设备,而不用考虑其真实物理位置。

3.2.1 数据保护

分布式Minio采用 纠删码来防范多个节点宕机和位衰减bit rot。

分布式Minio至少需要4个硬盘,使用分布式Minio自动引入了纠删码功能。

3.2.2 高可用

单机Minio服务存在单点故障,相反,如果是一个有N块硬盘的分布式Minio,只要有N/2硬盘在线,你的数据就是安全的。不过你需要至少有N/2+1个硬盘来创建新的对象。

例如,一个16节点的Minio集群,每个节点16块硬盘,就算8台服務器宕机,这个集群仍然是可读的,不过你需要9台服務器才能写数据。

注意,只要遵守分布式Minio的限制,你可以组合不同的节点和每个节点几块硬盘。比如,你可以使用2个节点,每个节点4块硬盘,也可以使用4个节点,每个节点两块硬盘,诸如此类。

3.2.3 一致性

Minio在分布式和单机模式下,所有读写操作都严格遵守read-after-write一致性模型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1009189.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQL注入类型判断

SQL注入的类型分为字符型和数字型,以sqli-labs靶场1、2关为例: 文章目录 第一关第二关无错误回显的判断 第一关 第一关注入一个1’,错误回显出下面内容,其中1’是注入的内容,0,1后面的单引号和最前面的单引号是一对&am…

湖北中级工程师职称网上申报流程是怎么样?应该如何在网上填写申报信息呢?

现在湖北中级职称全部采取网上申报形式,不管是水测还是后面职称评审都是需要网上申报信息,那么中级职称评审,网上如何申报信息呢?填写信息的时候需要注意哪些方面呢?今天甘建二这边给大家整理一下,希望对大…

电动垂直起降飞行器的发展现状

摘要 近年来,电动垂直起降(eVTOL)飞行器在城市空运中得到快速发展。本文介绍了近5年来世界范围内主要的在研电动垂直起降飞行器项目,从飞行器布局形式、总体设计参数、推进系统类型、飞行控制等级等方面进行了归纳和总结,分析了不同构型下相应电动垂直起…

Redis 五大类型源码及底层实现

面试题: 谈谈Redis数据类型的底层数据结构: SDS动态字符串双向链表玉缩列表ziplist哈希表hashtable跳表kiplist整数集合intset快速列表quicklist紧凑列表listpack Redis源代码的核心部分 官网:GitHub - redis/redis: Redis is an in-memory…

jenkins自动化脚本集成时钉钉消息未发送

在进行jenkins自动化脚本集成时,需要配置钉钉发送消息。钉钉的配置正确,测试钉钉消息发送成功,但是当构建项目时,却没有收到钉钉消息,报错如下: [钉钉插件]发送消息时报错: java.lang.NullPointerExceptio…

项目经理晋升为企业高管,需要杀死自己三次

大家好,我是老原。 “猴子屁股理论”,大家应该都知道吧。 就拿职场来说,它就像是一棵树,从树底下开始爬,一层一层的基层员工-基层干部-中层干部-高层-老板。 你会发现,无论你在哪一层,往上看都…

PyTorch实战-实现神经网络图像分类基础Tensor最全操作详解(二)

前言 PyTorch可以说是三大主流框架中最适合初学者学习的了,相较于其他主流框架,PyTorch的简单易用性使其成为初学者们的首选。这样我想要强调的一点是,框架可以类比为编程语言,仅为我们实现项目效果的工具,也就是我们…

开始使用Filebeat

认识Beats Beats是用于单用途数据托运人的平台。它们以轻量级代理的形式安装,并将来自成百上千台机器的数据发送到Logstash或Elasticsearch。 (画外音:通俗地理解,就是采集数据,并上报到Logstash或Elasticsearch&…

用matlab在hfss中建模

hfss可以导入vbs语言建模 怎么生成建模的vbs文档? 1.在hfss中建模建一遍 导出建模的vbs,然后笔记本打开vbs,需要改的话直接改。 参考 https://blog.csdn.net/m0_56117494/article/details/128007860 一文 这个方法朴实无华 但是需要写vbs语言…

英语单词(6)

1.person 人 2.start 开始 3.menu 菜单 4.login 登录 5.main 主要的 6.document 文档 7.display 显示 8.method 方法,条理 9.version 版本 10parameter 参数

Leecode1160: 拼写单词

直接使用一个哈希表存整体的结果,一个临时的哈希表每次算一遍,但是1是要设置标志位来判断最后是否正确并加上长度,2是千万要记得每次新建一个空间来存哈希表绝对不能不空间就等于,会出事!!

【小吉送书—第三期】Linux私教课:技术内核与企业运维篇

文章目录 🍔查找⭐find命令🎈按文件名🎈按拥有者🎈查找Linux系统下大于200M的文件 ⭐locate命令🎈使用方法 ⭐which命令(查找指令的,而不是文件)🎈使用方法 ⭐grep命令和…

Appium混合页面点击方法tap的使用

原生应用开发,是在Android、IOS等移动平台上利用官方提供的开发语言、开发类库、开发工具进行App开发;HTML5(h5)应用开发,是利用Web技术进行的App开发。目前,市面上很多app都是原生和h5混合开发&#xff0c…

【推荐】SpringMVC与JSON数据返回及异常处理机制的使用

🎬 艳艳耶✌️:个人主页 🔥 个人专栏 :《【推荐】Spring与Mybatis集成整合》 ⛺️ 生活的理想,为了不断更新自己 ! 1.JSON 在SpringMVC中,JSON数据返回通常是通过使用ResponseBody注解将Java对象转换为JSO…

2023年有哪些值得推荐的深度学习书?

深度学习指的是用一种特定的方法来解决一些机器学习的问题。 这种方法的中心思想是:基于一系列的离散的层(layer) 构建机器学习算法。如果将这些层 垂直堆叠,就说这个结果是有深度 (depth)的,或…

淘宝新品店铺运营必做的任务!

首先我们需要知道,新品上线前需要进行私域预热,以便达到上新后的销量效果,那上线后的运营又该怎么做呢? “ 完成新品孵化任务 进入【千牛后台】-【商品】-【新品运营】 这里可以看到淘宝针对新品扶持新开的板块,可以…

遥测终端机RTU助力城市内涝监测系统

一、背景概述 2023年第5号台风“杜苏芮”,周末登陆福建晋江,一波未平一波又起,卡努台风也进入了48小时警戒线,台风侵袭给城市基础设施和居民生活带来了严重的影响。后面第11号台风“海葵”号随之带来了更多城市内涝问题&#xff0…

Mobile Vision Transformer-based Visual Object Tracking

论文作者:Goutam Yelluru Gopal,Maria A. Amer 作者单位:Concordia University 论文链接:https://arxiv.org/pdf/2309.05829v1.pdf 项目链接:https://github.com/goutamyg/MVT 内容简介: 1)方向&#…

添加Typora主题皮肤

到官网下载喜欢的主题皮肤,比如【vue风格】 https://theme.typora.io 下载压缩包 打开 typora 主题皮肤文件夹 将解压后文件夹中的 vue文件夹 和 vue.css 复制到 主题皮肤文件夹中 重启 typora ,主题菜单中选择 新装的 vue 皮肤即可

华为云云耀云服务器L实例评测|基于云耀云服务器部署Samba服务

本实验将使用华为云云耀云服务器L实例,使用CentOS 7.9系统,搭建部署Samba服务器,并在本地Windows端进行访问。 文章目录 1、samba介绍2、环境准备3、安装samba软件包4、修改smb.conf配置文件5、添加访问samba的用户6、Windows下访问Samba服务…