什么是Minio?

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

web dashboard

Minio架构

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

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

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

  • 文件系统对象存储fsObject

  • 差错码对象存储xlObject

  • 第三方对象存储GatewayLayer。

其中,GatewayLayer只是一个存储接口,用于对接到Azure、AWS或者GCS的对象存储
在这里插入图片描述

如何和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纠删码的设计目标是为了提升性能,尽可能地使用硬件加速。

分布式对象存储

在这里插入图片描述

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐