开源免费的对象存储Minio

发布时间 2023-12-26 14:12:42作者: GaoYanbing
简介: Minio是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合存储大容量、非结构化的数据。例如,图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小的,从几KB到5TB不等。

什么是Minio?


Minio是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合存储大容量、非结构化的数据。例如,图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小的,从几KB到5TB不等。

2a70f5c2f73d462d92c98fb96df7429d.png

Minio架构


Minio可以支持多种后端存储格式,最简单的是直接通过文件系统保存对象,这些对象在登录机器后可以直接打开文件查看,但是这样会使用比较多的存储空间,Minio使用更多的是差错码,或者纠错码(erasure code)的方式存储。

 

通过erasure code、校验和checksum来保护数据免受硬件故障和无声数据损坏。即便丢失了一半数量(N/2)的硬盘,仍然可以恢复数据。下图是Minio存储的逻辑架构图

 

主要支持三种存储方式,分别是:

 

  • 文件系统对象存储fsObject
  • 差错码对象存储xlObject
  • 第三方对象存储GatewayLayer。

 

其中,GatewayLayer只是一个存储接口,用于对接到Azure、AWS或者GCS的对象存储

c6f1fac2005d4ffca663db086c6a1c52.png

如何和k8s结合?


MinIO是S3对象存储呀,不能直接当 Storage Class的。可以套个 juicefs 间接使用。

和raid的区别?


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

 

看似和RAID很相似,但纠删码的工作原理和RAID或者复制并不同,例如,RAID6可以在损失两块盘的情况下不丢数据

Minio数据恢复的粒度


Minio纠删码在丢失一半的盘的情况下,仍可以保证数据安全。

 

Minio纠删码作用在对象级别,可以一次恢复一个对象

 

RAID作用在卷级别,数据恢复时间很长

 

Minio对每个对象单独编码,存储服务一经部署,通常情况下不需要更换硬盘或者修复。Minio纠删码的设计目标是为了提升性能,尽可能地使用硬件加速。

分布式对象存储


470e8af1b4e145d894fa241280dcce03.png