目录
原理
MinIO是一个S3兼容的高性能对象存储,其主要特点如下:
-
适合存储大容量非结构化的数据,如图片,视频,日志文件;
-
一个对象文件可以任意大小,从几 KB 到最大的 5T 不等;
-
轻量,高效;MinIO 默认不计算 MD5 ,除非传输给客户端的时候,所以很快;
-
支持 windows;
-
有 web 页进行管理,命令行和控制台双重管理;
-
分布式集群支持动态升级;
-
使用纠删码实现数据冗余:Minio采用Reed-Solomon code将对象拆分成N/2数据和N/2 奇偶校验块。 这就意味着如果是12块盘,一个对象会被分成6个数据块、6个奇偶校验块,你可以丢失任意6块盘(不管其是存放的数据块还是奇偶校验块),你仍可以从剩下的盘中的数据进行恢复
MinIO的两大组件:
-
MinIO Server:服务端,提供对象存储服务
-
MinIO Client:命令行客户端,命令关键字为mc,可通过ls,cat,find等类unix指令操作Server端存储的对象
概念
名词解释
MINIO 有几个概念比较重要:
-
Object:存储到 Minio 的基本对象,如文件、图片、视频.……
-
Bucket:用来存储 Object 的逻辑空间。每个 Bucket 之间的数据是相互隔离的。对于客户端而言,就相当于一个存放文件的顶层文件夹。
-
Drive:即存储数据的磁盘,在 MinIO 启动时,以参数的方式传入。Minio 中所有的对象数据都会存储在 Drive 里。
-
Set
即一组 Drive 的集合,分布式的minio根据集群规模自动划分一个或多个 Set ,每个 Set 中的 Drive 分布在不同位置:
-
一个对象存储在一个Set上
-
一个集群划分为多个Set
-
一个Set包含的Drive数量是固定的,默认由系统根据集群规模自动计算得出
-
一个SET中的Drive尽可能分布在不同的节点上
-
Set /Drive 的关系
Set /Drive 这两个概念是 MINIO 里面最重要的两个概念,一个对象最终是存储在 Set 上面的。
下图为 MINIO 集群存储示意图,每一行是一个节点机器,有 32 个节点,每个节点里有一个小方块我们称之 Drive,Drive 可以简单地理解为一个硬盘。一个节点有 32 个 Drive,相当于 32 块硬盘。
Set 是另外一个概念,Set 是一组 Drive 的集合,图中,所有蓝色、橙色背景的Drive(硬盘)的就组成了一个 Set.
MinIO部署
MinIO的两种部署模式:
-
standalone:单节点minio
-
distributed:分布式的minio集群,需要说明的是,一个分布式的minio至少需要四块磁盘
单机Minio服务存在单点故障,如果是一个有N块硬盘的分布式Minio,只要有N/2硬盘在线,数据就不会丢失。但是要想实现数据的写入,至少需要N/2+1个硬盘。比如一个16节点的Minio集群,每个节点16块硬盘,就算8台服务器宕机,这个集群仍然是可读的,不过需要9台服务器才能写数据。
只要遵守分布式Minio的限制,可以组合不同的节点和每个节点几块硬盘。比如,可以使用2个节点,每个节点4块硬盘,也可以使用4个节点,每个节点两块硬盘,诸如此类
单机
单机单盘
挂载磁盘
root@master:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 63.9M 1 loop /snap/core20/2105
loop1 7:1 0 64M 1 loop /snap/core20/2379
loop2 7:2 0 87M 1 loop /snap/lxd/27037
loop3 7:3 0 87M 1 loop /snap/lxd/29351
loop4