第一节 MinIO简介

亮子 2023-03-28 02:02:09 10731 0 0 0

1、什么是minio?

MinlO是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据。例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。MinlO是一个非常轻量的服务 可以很简单的和其他应用的结合,类似NodeJS, Redis或者MySQL。

MInIO官网:https://min.io/

minIO官方文档:
MinIO High Performance Object Storage — MinIO Object Storage for Windows

2、MinIO的优点

  • 部署简单:一个single二进制文件即是一切,还可以支持各种平台。

  • minio支持海量存储,可按2one打展(原zone不受任何影响),支持单个对象最大5TB;

  • 兼容Amazon S3接口,充分考虑开发人员的需求和体验;

  • 低冗余且磁盘损坏高容忍,标准且最高的数据冗余系数为2(即存储一个1 M的数据对象,实际占用磁盘空间为2M)。但在任意n/2块disk损坏的情况下依然可以读出数据(n为一个纠删码集合(Erasure Coding Set)中的disk数量)。并且这种损坏恢复是基于单个对象的,而不是基于整个存储卷的。

  • 读写性能优异

图片alt

3、MinIO的基础概念

  • Object: 存储到Minio的基本对象,如文件、字节流,Anything..

  • Bucket:用来存储Object的逻辑空间。每个Bucket之间的数据是相互隔离的。对于客户端而言,就相当于一个存放文件的顶层文件夹。

  • Drive: 即存储数据的磁盘,在MinIO启动时,以参数的方式传入。Minio 中所有的对象数据都会存储在Drive里。

  • Set:即一组Drive的集合,分布式部署根据集群规模自动划分一 个或多个Set, 每个Set中的Drive分布在不同位置。一个对象存储在一个Set 上。(For example: {1..44} is divided into 4 sets each of size 16.)

  • 一个对象存储在一 个Set上

  • 一个集群划分为多个Set

  • 一个Set包含的Drive数显是固定的,默认由系统根据集群规模自动计算得出

  • 一个SET中的Drive尽可能分布在不同的节点上

4、纠删码EC (Erasure Code)

MinIO使用纠删码机制来保证高可靠性,使用highwayhash来处理数据损坏( Bit Rot Protection)。关于纠删码,简单来说就是可以通过数学计算,把丢失的数据进行还原,它可以将n份原始数据,增加m份数据,并能通过n+m份中的任意n份数据,还原为原始数据。

即如果有任意小于等于m份的数据失效,仍然能通过剩下的数据还原出来。

5、存储形式

文件对象上传到MinlO ,会在对应的数据存储磁盘中,以Bucket名称为目录,文件名称为下一级目录,文件名下是xl.meta,通过奇偶的形式存储 编码数据块及检验块和元数据文件。

如:

有data01,data02,data03,data04 四块盘

其中奇数盘:data01和data03中存储的是编码数据块及检验块(EC码)

偶数盘:data02和data04 存储的是元数据文件

6、存储方案

图片alt