1、背景

在实际的软件系统开发过程中,经常避免不了需要用到文件存储服务。 例如,对于小型的网站系统,通常会将文件存储服务和网站系统部署在一台服务器中,以实现低成本的资源投入,如果访问量不大,基本上没什么问题。当访问量逐渐升高,此时网站的文件资源读取越来越频繁,单台服务器可能难以承载较大的请求量,这个时候网站可能会出现打不开,甚至系统异常等问题。 当出现这个场景,很容易第一时间想到将文件采用云存储服务来解决。所谓云存储服务,简单的说,就是将访问很频繁的文件资源服务,由本地改成云厂商提供的文件存储服务,比如阿里云 OSS、七牛云、腾讯云、百度云等等,迁移之后,网站的访问压力会得到极大的释放,服务也会变得更加稳定。但是,这些云存储服务大部分都是收费的,以阿里云为例,数据存储通常按照 0.12 元/GB/月的标准来收费,虽然便宜,但是日积月累下来也是一笔不小的开支啊。 为了节省成本,很多项目团队会自己搭建一套云存储服务,比如采用开源的 fastDFS 工具来作为文件存储服务器,虽然能性能不错,但是软件安装环境非常复杂,最重要的是没有一个完整的技术文档,大部分都是某某公司或者某某网友自己总结的文档,每次维护起来很是麻烦。 直到出现了 MinIO,云存储服务工具又多了一个新的可选项。 MinIO 是一款号称世界上速度最快的对象存储服务,专为大规模数据存储和分析而设计。它支持在各种环境中部署,包括物理服务器、虚拟机、容器等,最关键的是它的技术文档非常完善,非常容易上手;同时,对个人用户是完全开源免费的。 一起了解一下如何利用 MinIO 来搭建一套属于自己的云存储服务。

2、快速安装

minio 工具的安装非常简单,如果本机安装了 Docker 容器,可以通过 Docker 命令一键实现安装操作。 以 windows 操作系统为例,安装命令如下。
  1. docker run \
  2. -p 9000:9000 \
  3. -p 9001:9001 \
  4. --name minio1 \
  5. -v D:\minio\data:/data \
  6. -e "MINIO_ROOT_USER=ROOTUSER" \
  7. -e "MINIO_ROOT_PASSWORD=CHANGEME123" \
  8. quay.io/minio/minio server /data --console-address ":9001"
相关参数解读:
  • <font style="color:rgb(1, 1, 1);">docker run</font>:表示启动运行容器
  • <font style="color:rgb(1, 1, 1);">-p</font>:表示为容器绑定一个本地的端口
  • <font style="color:rgb(1, 1, 1);">-name</font>:表示为容器创建一个本地的名字
  • <font style="color:rgb(1, 1, 1);">-v</font>:表示将文件路径设置为容器使用的持久卷位置。当 MinIO 将数据写入 <font style="color:rgb(1, 1, 1);">/data</font>时,该数据会镜像到本地路径<font style="color:rgb(1, 1, 1);">~/minio/data</font>,使其能够在容器重新启动时保持持久化。您可以设置任何具有读取、写入和删除权限的文件路径来使用。
  • <font style="color:rgb(1, 1, 1);">-e</font>:表示设置登陆控制台的用户名和密码。其中控制台的访问地址为<font style="color:rgb(1, 1, 1);">http://本机ip:9001</font>,api 的访问地址为<font style="color:rgb(1, 1, 1);">http://本机ip:9000</font>
如果没有 docker 容器,可以采用软件包方式进行安装,具体实现方式可以参考官网中文文档,地址如下。

https://minio.org.cn/docs/minio/container/index.html

服务启动成功之后,在浏览器中访问<font style="color:rgb(239, 112, 96);">http://127.0.0.1:9001</font>地址,会看到类似于如下界面。

MinIO 一款开源、强大的云存储工具 - 图1

输入上文设置的用户名和密码,即可登陆!

3、使用介绍

登陆成功之后,会看到类似于如下的主界面。

MinIO 一款开源、强大的云存储工具 - 图2

由于官方并没有提供汉化版,如果想要实现中文展示,可以使用浏览器插件进行翻译,翻译之后的内容如下。

MinIO 一款开源、强大的云存储工具 - 图3

在对象存储服务里面,所有的文件都是以桶的形式来组织的。简单的说,可以将桶看作是目录,这个目录下有很多的文件或者文件夹,这和其它云存储服务基本一致。 下面一起来快速体验一下!

3.1、创建存储桶

所有的文件必须要存储到桶中,因此需要先创建一个存储桶。

MinIO 一款开源、强大的云存储工具 - 图4

如果想要修改存储桶信息,点击左侧的<font style="color:rgb(239, 112, 96);">Buckets</font>菜单,就可以看到相关的存储桶配置信息。

3.2、上传和下载文件

存储桶创建完成之后,就可以上传文件了。 点击<font style="color:rgb(239, 112, 96);">Object Browser</font>菜单,可以看到刚刚创建的存储桶<font style="color:rgb(239, 112, 96);">public-bucket</font>,点击进入,上传想要存储的文件了。

MinIO 一款开源、强大的云存储工具 - 图5

MinIO 一款开源、强大的云存储工具 - 图6

MinIO 一款开源、强大的云存储工具 - 图7

如果想要下载文件或者预览文件,点击文件,右侧会弹出相关的操作按钮,点击相应的操作按钮就可以了。

3.3、设置文件公开访问

默认创建的存储桶,都是私有桶,也就是说无法被公开访问。

MinIO 一款开源、强大的云存储工具 - 图8

以上文的文件为例,如果以 api 的方式直接访问,会提示无权限,示例如下:

MinIO 一款开源、强大的云存储工具 - 图9

通常来说,会将数据写入操作进行控制;对于读操作,很多不涉及安全问题的,希望能被互联网公开访问,以便加快文件的访问速度,此时如何实现呢? 可以在存储桶里面配置,将数据读取权限设置为公开访问,操作示例如下:

MinIO 一款开源、强大的云存储工具 - 图10

此时,再次以 api 的方式访问,结果如下:

MinIO 一款开源、强大的云存储工具 - 图11

可以清晰的看到,此时文件可以公开访问了。

4、小结

最后总结一下,minio 用来做个人云存储工具完全是开源免费的,如果当前需要一个云存储工具,不妨试试 minio。