概述

Minio 是一个基于Go语言的对象存储服务。它实现了大部分亚马逊S3云存储服务接口,可以看做是是S3的开源版本,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。区别于分布式存储系统,minio的特色在于简单、轻量级,对开发者友好,认为存储应该是一个开发问题而不是一个运维问题。

存储架构

Minio针对不同应用场景也设置了对应的存储架构:

1、单主机,单硬盘模式
该模式下,Minio只在一台服务器上搭建服务,且数据都存在单块磁盘上,该模式存在单点风险,主要用作开发、测试等使用

minio --config-dir ~/tenant1 server --address :9001 /disk1/data/tenant1

2、单主机,多硬盘模式
该模式下,Minio在一台服务器上搭建服务,但数据分散在多块(大于4块)磁盘上,提供了数据上的安全保障

minio --config-dir ~/tenant1 server --address :9001 /disk1/data/tenant1 /disk2/data/tenant1 /disk3/data/tenant1 /disk4/data/enant1

3、多主机、多硬盘模式(分布式)
该模式是Minio服务最常用的架构,通过共享一个accesskey和secretkey,在多台(2-32)服务器上搭建服务,且数据分散在多块(大于4块,无上限)磁盘上,提供了较为强大的数据冗余机制(Reed-Solomon纠删码)。

export MINIO_ACCESS_KEY=<TENANT1_ACCESS_KEY>
export MINIO_SECRET_KEY=<TENANT1_SECRET_KEY>
minio --config-dir ~/tenant1 server --address :9001 http://192.168.10.11/data/tenant1 http://192.168.10.12/data/tenant1 http://192.168.10.13/data/tenant1 http://192.168.10.14/data/tenant1

数据安全

Minio使用了Reed-Solomon纠删码和校验和来保护数据免受硬件故障和无声数据损坏。

1、Reed-Solomon纠删码

纠删码是一种恢复丢失和损坏数据的数学算法, Minio默认采用Reed-Solomon code将数据拆分成N/2个数据块和N/2个奇偶校验块。这就意味着如果是16块盘,一个对象会被分成8个数据块、8个奇偶校验块,你可以丢失任意8块盘(不管其是存放的数据块还是校验块),你仍可以从剩下的盘中的数据进行恢复。

纠删码的工作原理和RAID或者副本不同,像RAID6可以在损失两块盘的情况下不丢数据,而Minio纠删码可以在丢失一半的盘的情况下,仍可以保证数据安全。 而且Minio纠删码是作用在对象级别,可以一次恢复一个对象,而RAID是作用在卷级别,数据恢复时间很长。 Minio对每个对象单独编码,存储服务一经部署,通常情况下是不需要更换硬盘或者修复。

此外,针对不同应用所需的数据安全级别不同,Minio还提供了存储级别(Storage Class)的配置,调整数据块和校验块的比例,做到对空间的最佳使用。

比如在将比例调整为14:2后,存储100M的数据占用的空间仅为114M。

2、位衰减保护

位衰减又被称为数据腐化Data Rot、无声数据损坏Silent Data Corruption,是目前硬盘数据的一种严重数据丢失问题。硬盘上的数据可能会神不知鬼不觉就损坏了,也没有什么错误日志。针对这一问题,最新的Minio采用了HighwayHash算法计算校验和来防范位衰减,根据测试结果,其可以实现10GB/s的处理速度。

3、文件的修复

得益于Reed-Solomon纠删码,Minio可以更加灵活的对文件进行修复。目前,Minio提供了全量、bucket、文件夹、文件等各个粒度的修复操作:

相比一般的RAID方式,Minio可以在非常小的粒度下对文件进行修复操作,灵活性有了很大提高。

Minio的相关操作

Minio提供了客户端以及sdk以对系统和数据进行操作,目前sdk有java、js、python、go以及.NET版本。

其中,Minio客户端提供了一系列类UNIX命令,它主要是对Minio服务进行管理

而sdk则主要提供了对bucket以及文件对象的操作,java应用可通过maven引入依赖。

Minio提供的其他一些功能

Minio还提供了一些辅助功能以方便使用,比如其自带了一个管理界面,实现对文件等的操作。

另外,它还支持集成prometheus,用以监控CPU、硬盘、网络等数据此外,它也提供了一些通知机制来记录具体的操作,目前主要支持AMQP,Redis,MySQL,Kafka,ES,Webhooks等

总结

Minio作为一个分布式存储系统,学习成本较低,安装运维简单,基本属于开箱即用,且sdk支持较为完善,可以尝试作为分布式存储需求的解决方案。

之前一直使用MongoDB的GirdFS存储文件,在并发处理能力和扩容能力上没有遇到问题。但是使用总是不够变量,各种功能都需要自己开发。存储上是wt文件,无法直接识别。

所以,希望找一款替代产品。目前开源的文件存储系统比较多,比较了多个,我们的要求是要支持S3存储,最终选定了minio。

从对比中,目前文件存储在ceph和minio中进行比较选型:

参考资料:

https://docs.minio.io/docs/
https://blog.minio.io/highwayhash-fast-hashing-at-over-10-gb-s-per-core-in-golang-fee938b5218a
https://blog.csdn.net/wangsiman/article/details/80101654

分布式存储系统Minio简介相关推荐

  1. Minio分布式存储系统

    Minio分布式存储系统 Minio简介 分布式系统高可用设计 分布式设计 数据保护 高可用 限制 一致性 安全 Minio纠删码 Minio如何使用纠删码 Minio优点 位衰减bit rot保护 ...

  2. 分布式文件存储系统MinIO笔记

    文章目录 一.MinIO介绍 1.文件系统应用场景 2.MinIO介绍 3.MinIO优点 4.MinIO的基础概念 5.纠删码EC(Erasure Code) 6.存储形式 7.存储方案 二.Min ...

  3. 分布式文件存储系统Minio使用总结

    分布式文件存储系统Minio使用总结 1.分布式文件系统应用: 1.1.Minlo 介绍: Minlo 是一个基于Apache License v2.0开源协议的对象存储服务.它兼容亚马逊S3云存储服 ...

  4. 1. Ceph分布式存储系统简介

    一.Ceph简介 Ceph是一个统一的分布式存储系统,提供较好的性能.可靠性和扩展性 二.Ceph 与其他存储对比 三.Ceph特点 高性能: a. 摒弃了传统的集中式存储元数据寻址的方案,采用 CR ...

  5. 各类分布式存储系统简介

    分布式文件系统原理 本地文件系统如ext3,reiserfs等(这里不讨论基于内存的文件系统),它们管理本地的磁盘存储资源.提供文件到存储位置的映射,并抽象出一套文件访问接口供用户使用.但随着互联网企 ...

  6. 性能 1.84 倍于 Ceph!网易数帆开源分布式存储系统 Curve

    作者 | 陈利鑫 头图 | CSDN 下载自东方 IC 出品 | CSDN(ID:CSDNnews) 也许是厂家+"云"的后缀会让人产生这些厂商都是竞争关系的错觉,网易云最近宣布品 ...

  7. 网易开源的分布式存储系统 Curve 正式成为 CNCF 沙箱项目

    | 作者:OpenCurve | 责编:沈于蓝 | 设计:张晨曦 | 编辑:胡欣元 2022年6月15日,云原生计算基金会 (CNCF) 宣布,分布式存储系统 Curve 被正式接纳为 CNCF 沙箱 ...

  8. 分布式存储系统——《Neo4j》

    第四阶段 大型分布式存储系统架构进阶 Neo4j 文章目录 第四阶段 大型分布式存储系统架构进阶 Neo4j 1.第一部分 图 和 Neo4j 1.1 图论 1.1.1 图论起源 --- 柯尼斯堡(K ...

  9. 开源分布式存储系统的对比

    我们在选型开源分布式存储系统框架之前需要对不同的框架进行调研. 所有的开源存储系统介绍链接 存储系统对比 目前比较热门的分布式文件系统有如下几种: Ceph,GlusterFS,Sheepdog,Lu ...

  10. Linux部署IPFS(分布式存储系统)私有网络

    Linux部署IPFS(分布式存储系统)私有网络 简介: 星际文件系统是一个旨在创建持久且分布式存储和共享文件的网络传输协议.它是一种内容可寻址的对等超媒体分发协议.在IPFS网络中的节点将构成一个分 ...

最新文章

  1. 深度学习面临天花板,亟需更可信、可靠、安全的第三代AI技术|AI ProCon 2019
  2. ByteBuffer常用方法详解
  3. IntelliJ IDEA——数据库集成工具(Database)的使用
  4. linux tar 使用
  5. 清华博士后黄石生:深度神经网络实时三维重建和在线语义分割技术报告
  6. python中read函数解释_Python内置函数解释教程,readwill(非常详细的代码演示截图),详解,看,了,就,会,很...
  7. 【剖析 | SOFARPC 框架】系列之 SOFARPC 注解支持剖析
  8. 手机自学html,5套Bootstrap手机模板HTML源文件分享
  9. 4G多卡聚合路由器解决视频直播中的网络不稳定问题
  10. SharePoint 2019 图文安装教程
  11. Block Formatting Context (Flow Root)
  12. python数字转中文大写_阿拉伯数字转换成大写汉字的Python代码
  13. java nio和io的区别_Java NIO和IO的区别
  14. 发布微信小程序体验版
  15. mac录屏快捷键 - mac截图截屏快捷键 - 自带录屏软件QuickTime Player如何使用
  16. Python Plt颜色配色一览(热力图)
  17. 关于Android写入文件失败的问题
  18. 计算机在职双证博士的学校,国内在职双证博士5所高校是哪些
  19. 留在Facebook:首席运营官桑德伯格否认将加入希拉里政府
  20. DropDownList ListBox GridView DataList Repeater FormView DetailsView 数据绑定控件详解

热门文章

  1. 9. CSS 背景属性
  2. 第012讲 盒子模型经典应用
  3. spring 13-Spring框架基于Annotation的AOP配置
  4. js图片绘制框架 (折线图、柱状图、饼图、热力图) echarts
  5. hdu 6155 - Subsequence Count
  6. character-RNN模型介绍以及代码解析
  7. php生成html文件方法总结
  8. 怎么把pdf文件转换成word文件
  9. HDU 1695 GCD ★(容斥原理+欧拉函数)
  10. 小白一步步:EntLib5.0 - Data Access 最简练习