根据网络上各处搜集来的资料:
- 2016 年,由 MinIO, Inc 发布,四年来,项目一直比较活跃
- Go 语言 +
Apache License 2.0AGPLv3
> As of April 23 2021 MinIO, Inc submitted a change that re-licensed the project from its previous Apache V2 to GNU Affero Public License Version 3 (AGPLv3). - 官网:https://min.io,中文社区:http://www.minio.org.cn/
- 仓库:https://github.com/minio/minio
- 文件大小限制:单文件小于 5TB
与之像类似的还有在 OpenStack 中广泛使用的 Ceph 和 Swift,应该都很成熟了。
但是架不住 minio 真的是上手极快(学习成本低 + 部署简单 + 各种 SDK),还带一个 UI,这样方便融入业务的良心软件,哪里去找?
服务端
wget -c https://dl.min.io/server/minio/release/linux-amd64/minio -P ~/SWAP
MINIO_ACCESS_KEY=minio MINIO_SECRET_KEY=minio123 ~/SWAP/minio server /tmp/minio
默认会在所有 IP 的 9000 端口启动 Web 管理服务,可以使用浏览器进行简单操作。
客户端
wget -c https://dl.min.io/client/mc/release/linux-amd64/mc -P ~/SWAP
~/SWAP/mc
mc: Configuration written to `/home/catroll/.mc/config.json`. Please update your access credentials.
mc: Successfully created `/home/catroll/.mc/share`.
mc: Initialized share uploads `/home/catroll/.mc/share/uploads.json` file.
mc: Initialized share downloads `/home/catroll/.mc/share/downloads.json` file.
<help string>
vim ~/.mc/config.json # 设置 local 的 ACCESS_KEY 和 SECRET_KEY
~/SWAP/mc mb local/new
~/SWAP/mc cp ks.cfg local/new --attr "key1=a@b.c;key2=x@y.z"
~/SWAP/mc stat local/new/ks.cfg
# Name : ks.cfg
# Date : 2019-01-17 00:51:29 CST
# Size : 1.2 KiB
# ETag : 4b8295b9e63f046dcc8806fd0a16d0d6
# Type : file
# Metadata :
# X-Amz-Meta-Key2 : x@y.z
# X-Amz-Meta-Key1 : a@b.c
# Content-Type : application/octet-stream
# X-Amz-Meta-Mc-Attrs: atime:1609749937#904037936/gid:1000/gname:catroll/mode:33188/mtime:1547657489#184461751/uid:1000/uname:catroll
客户端操作非常便利
ls
cp
上传,下载文件,就像 scp 一样
也可以从本地复制到本地,我试了,attr 参数没有效果,就是简单文件复制(可以上 /tmp/minio 目录找一下元数据存储位置)
或许可以从远程复制到远程,甚至不同源之间相互复制cat
查看文件mb
创建 Bucket,估计是 Make Bucket,类似于 mkdirfind
和 find 命令很像tree
列出目录结构,有 -f 列出文件,-d 指定深度等参数可用
有一个命令 pipe 可以用来从标准输入,在命令管道中使用。如果我们就是用来存储一些小文件,估计不会用到这个功能。
疑问
- 是否必须依赖文件系统,可不可以直接存储在块设备中?
文档里没有提到,我猜可能不行。 - 文件数量升起来,文件系统支撑不住怎么办?有没有性能问题?