云原生学习-Minio分布式存储

声明本文转载自: https://blog.csdn.net/tianshan2010/article/details/105478206

仅供个人总结学习使用

Minio

分布式文件存储,基于apache lience 2.0的开源的存储框架!

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

首先了解使用场景,有了使用场景我们才有动力去学习一些新的技术! 从而满足自身需求!

分布式文件系统的使用场景
  • 用来满足互联网海量的非结构化的文件存储,关系型数据库表结构是一个一个的字段做存储,有别于单个大文件如图片、视频、音频、独立的其他单个文件等等!

    • 电商网站: 海量的商品图片
    • 视频网站: 海量视频文件
    • 网盘: 海量文件
    • 社交网站: 海量的文件
存储架构
1、单主机,单硬盘模式

单主机多个服务、多用户访问同一块硬盘
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DB2onGjz-1654255972873)(img.png)]

2、单主机,多硬盘模式

单主机多个服务、多用户访问很多块硬盘
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
在这里插入图片描述

3、多主机、多硬盘模式(分布式高可用)

多主机、多用户、访问多个硬盘,主机互为备份。该模式最常用!

通过共享一个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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5bFThlWT-1654255972874)(img_2.png)]

数据安全保障

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

1、Reed-Solomon纠删码

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xDVF3AQv-1654255972874)(img_3.png)]

纠删码的工作原理和RAID或者副本不同

像RAID6可以在损失两块盘的情况下不丢数据,而Minio纠删码可以在丢失一半的盘的情况下,仍可以保证数据安全。

Minio纠删码是作用在对象级别,可以一次恢复一个对象,而RAID是作用在卷级别,数据恢复时间很长。 Minio对每个对象单独编码,存储服务一经部署,通常情况下是不需要更换硬盘或者修复。

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

比如在将比例调整为14:2后,存储100M的数据占用的空间仅为114M。如下图的 存储/使用 比例
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5WOuGwFZ-1654255972874)(img_4.png)]

2、位衰减保护

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

3、文件的修复

得益于Reed-Solomon纠删码,Minio可以更加灵活的对文件进行修复。目前,Minio提供了全量、bucket、文件夹、文件等各个粒度的修复操作:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Eb2fDeLi-1654255972875)(img_5.png)]

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

使用

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

Minio客户端提供了一系列类UNIX命令,它主要是对Minio服务进行管理
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qDce4lhT-1654255972875)(img_6.png)]

其他功能:自带Web服务的图形化管理界面、prometheus监控cpu、硬盘、网络等。

此外,它也提供了一些通知机制来记录具体的操作,目前主要支持AMQP,Redis,MySQL,Kafka,ES,Webhooks等

总结

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

官网:http://www.minio.org.cn/
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值