MinIO 轻量的文件存储服务

  1. 简介
  2. 核心知识点
  3. 快速开始

太轻量了,像 redis !

还可以做私人网盘使用,美滋滋!

简介

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

MinIO 是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL。

MinIO 是基于 Go 语言开发的,截至 2020 年 12 月,Github 标星 24.9k,点击访问

# minio 团队 #

minio 出品自一个有着多年网络文件系统开发经验的团队,其初始创始团队都来自于原 Glusterfs 团队,该团队二次创业的产品 minio 的设计广泛吸取了 glusterfs 的经验和教训:

  • 部署简单:一个 single 二进制文件即是一切,还可支持各种平台。(托了 go 语言的福)

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

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

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

  • 读写性能优异

核心知识点

桶(Bucket):这个概念不陌生,就是存放文件的集合,可以有多个桶,阿里云 oss 有这层设计

纠删码(erasure code) 与 校验和(checksum):保护数据,无视数据损坏,可恢复数据。
详见 minio 纠删码工作原理

分布式:将多块硬盘(甚至在不同的机器上)组成一个对象存储服务,避免了单点故障。
详见 minio 高可用存储服务

TLS 证书:支持配置 TLS 证书安全的访问 MinIO 服务

多租户(Multi-tenant):一个租户一个 minio server,我感觉没什么卵用,目前没找到应用场景

存在服务限制:详见 minio 服务限制说明

桶通知:比如上传和删除对象,会通过消息队列、数据库、webhooks发布出去
详见 minio 桶通知

快速开始

我这里采用基于 docker 的单点部署模式

mkdir -p /data/minio/data;
mkdir -p /data/minio/config;
docker run -d -p 31000:9000 --name minio \
  -e "MINIO_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE" \
  -e "MINIO_SECRET_KEY=wJa1lrXUt3nF2EEXAM1PLE1K1EY" \
  -v /data/minio/data:/data \
  -v /data/minio/config:/root/.minio \
  minio/minio server /data

其中的 MINIO_ACCESS_KEYMINIO_SECRET_KEY 参数是登录管理界面的账号密码

浏览器访问 http://serverip:31000,可登录管理员界面,账号密码就是上面的

功能比较简单:

  • 桶的管理(Bucket)
  • 桶中目录、文件的管理
  • 桶中目录、文件的读写策略管理(Bucket Policy)

转载请注明来源。 欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。 可以在下面评论区评论,也可以邮件至 sharlot2050@foxmail.com。

文章标题:MinIO 轻量的文件存储服务

字数:794

本文作者:夏来风

发布时间:2020-12-07, 23:41:30

原始链接:http://www.demo1024.com/blog/minio/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。