推荐一个好用的对象存储系统:Minio

阿里云教程3个月前发布
16 9 0

一、简介

推荐一个好用的对象存储系统:Minio

既然你不小心点进来了,不妨耐心听我讲几句,吃不了亏,上不了当。我力气言简意赅地描述本文主旨,使得大家快速判断是否值得看下去。

Minio 的大名我想许多开发人员都听过,其是一个开源的、云原生的分布式对象存储系统,兼容 Amason S3协议,适合存储非结构化数据,包括:文本文件、图片以及视频等,可以说是中小型企业常用的对象存储组件。此外,其支持多种编程语言 SDK,如:Java、python 、go 等。当然,我之所以要介绍是由于最近打算介绍网盘聚合软件:OpenList。其支持 S3协议软件,打算用Minio 、RustFS(号称Minio平替)以及腾讯的COS做演示。所以在这之前有必要简单介绍一下。

当然,作为一款知名的开源免费的存储系统,我想大多数人都介绍过,但本文中会详细介绍 minio 的普通安装方式和基于 docker安装方式,并会演示其命令工具:mc 的常见用法。

好了,闲言少叙,话归正题,诸君且听我娓娓道来。

Minio 的中文官网地址为:MinIO | 用于AI的S3 & Kubernetes原生对象存储

推荐一个好用的对象存储系统:Minio

二、安装

2.1 普通安装

2.1.1 下载

普通安装即传统安装方式,通过下载指定的二进制文件进行安装。

在官网主页面点击“下载”便会跳转到下载页面:

推荐一个好用的对象存储系统:Minio

由于本人电脑的操作系统为 Windows,因此选择 Windows安装方式:

推荐一个好用的对象存储系统:Minio

从官方文档可知,需下载两个二进制程序:minio server 和 minio cilent。分别点击进行下载,下载后的文件如下所示:

推荐一个好用的对象存储系统:Minio

2.1.2 启动

由于刚才下载的两个程序便为最终的可执行程序,而非安装程序,因此无需进行安装。不过,在启动前,需创建如下目录结构:

E:DATAMINIO
    ├─bin
    ├─logs
    └─data

各目录的含义为:

  • bin:存放二进制文件,即刚才下载的 minio,exe 和 mc.exe
  • logs:存放日志信息
  • data:存放具体的数据

接着将刚才下载的两个文件拷贝到 bin 目录下:

推荐一个好用的对象存储系统:Minio

接着在该目录下创建一个 start_minio.bat文件,并输入如下内容:

set MINIO_ROOT_USER=minioadmin
set MINIO_ROOT_PASSWORD=minioadmin
.minio.exe server E:dataminiodata --console-address "127.0.0.1:9000" --address "127.0.0.1:9005" > E:dataminiologsminio.log 2>&1

保存后,双击该脚本便可启动 minio:

推荐一个好用的对象存储系统:Minio

双击执行结果如下所示:

推荐一个好用的对象存储系统:Minio

此时打开浏览器,输入“http://localhost:9000”便能看到minio 的登录页面:

推荐一个好用的对象存储系统:Minio

输入对应的密码后登录的主页面如下所示:

推荐一个好用的对象存储系统:Minio

2.2 Docker安装

2.2.1 确认安装 Docker

第一是在命令行窗口执行 “docker –version”命令来确认是否安装 docker:

推荐一个好用的对象存储系统:Minio

若安装过 docker,则证明已安装过 docker。若不能,则需进行安装。具体如何在 Windows上进行安装,可自行翻阅本人发文史,此处不再赘述。

2.2.2 安装

在 安装前需创建挂载目录:data 和 config,下面是本人创建的挂载目录:

推荐一个好用的对象存储系统:Minio

接着是编写构建 Docker 容器的脚本:

docker run -p 9000:9000 -p 9005:9005 --name minio -d --restart=always -e "MINIO_ACCESS_KEY=minioadmin" -e "MINIO_SECRET_KEY=minioadmin" -v E:/data/minio/data:/data minio/minio:latest server /data --console-address ":9000" --address ":9005"

接着在命令行执行该命令:

推荐一个好用的对象存储系统:Minio

接着运行 “docker ps” 命令来查看容器列表:

推荐一个好用的对象存储系统:Minio

或在 Docker Desktop 的 “Containers”页面查看容器状态:

推荐一个好用的对象存储系统:Minio

当然,为了进一步确认是否真正启动,可执行 “docker logs mino”来查看启动日志:

推荐一个好用的对象存储系统:Minio

或点击 Docker Desktop 的容器详情查看:

推荐一个好用的对象存储系统:Minio

接着打开浏览器,输入“http://localhost:9000”便会自动跳转登录页面:

推荐一个好用的对象存储系统:Minio

输入指定的用户名和密码后(若完全按本文 docker 脚本构建,则都为 minioadmin)便能进入如下页面:

推荐一个好用的对象存储系统:Minio

三、使用

由于从2025 年 5 月 24 日更新版本后, Minio 的社区版以简化控制台为名,删除了11万代码,目前最新版的Web 管理页面移除了用户账户管理、访问策略配置、存储桶 (Bucket) 管理工具以及系统配置等核心管理功能。也就是说,目前所有的管理任务只能通过 mc 命令行进行。

之前有下过 Minio 的 Client 程序如下所示:

推荐一个好用的对象存储系统:Minio

即可以通过该客户端程序来操作 Minio。下面只介绍常用操作,其余的大家可自行参考官方文档。当然,命令行操作的前提是打开命令行窗口并定位到 mc.exe 所在目录:

推荐一个好用的对象存储系统:Minio

3.1 查看协助

查看协助的命令为 “mc –help”,执行结果如下所示:

推荐一个好用的对象存储系统:Minio

接着可通过按上下键进行浏览:

推荐一个好用的对象存储系统:Minio

此时按“q” 或 “ESC”键便能退出协助。下面只介绍常用的命令操作。

3.2 存储服务管理

3.2.1 添加

添加S3存储服务的命令为 “mc alias set”,其格式为:

mc alias set alais_name host_name accessKey secretKey

替换后的命令为:

mc alias set myminio http://localhost:9005 minioadmin minioadmin

需要说明的是,这里的端口为api 端口,而非web页面端口。执行后如下所示:

推荐一个好用的对象存储系统:Minio

3.2.2 查看

查看存储服务列表的命令为“mc alias list”,其格式为:

mc alias list

执行结果如下所示:

推荐一个好用的对象存储系统:Minio

3.2.3 移除服务

移除服务对应的命令为 “mc alias remove”,其格式为:

mc alias remove hostname

替换后的命令为:

mc alias remove myminio

执行结果如下所示:

推荐一个好用的对象存储系统:Minio

3.3 桶操作

3.3.1 创建桶

创建桶对应的命令为“mc mb”,其格式为:

mc mb --with-locks  alias_name/bucket_name

其中,alias_name其通过 alias 设置的存储服务别名,bucket_name 即创建的桶名称。替换后的命令为:

mc mb --with-lock myminio/test

执行结果如下所示:

推荐一个好用的对象存储系统:Minio

此时回到 Web 管理页面刷新后便会看到创建的桶:

推荐一个好用的对象存储系统:Minio

3.3.2 查看桶内容

查看桶列表的命令为“mc ls”,其格式为:

mc ls --recursive --versions alias_name/bucket_name

这里的“–recursive” 即递归列出桶中的内容,而 “–versions” 包含所有的对象版本。

替换后的命令为:

mc ls --recursive --versions myminio/test

由于是空桶,所以为了展示效果,需上传一个文本文件:

推荐一个好用的对象存储系统:Minio

接着执行查看桶内容的结果如下所示:

推荐一个好用的对象存储系统:Minio

3.3.3 查看桶状态

查看桶状态的命令为“mc stat”,其格式为:

mc stat --recursive alias_name/bucket_name

替换后的命令为:

mc stat --recursive myminio/test

执行结果如下所示:

推荐一个好用的对象存储系统:Minio

3.3.4 删除桶

删除桶对应的命令为“mc rb”,其格式为:

mc rb --force alias_name/bucket_name

这里的“–force”表明强制删除,当桶内有内容时,必须加此参数才能删除桶。

替换后的命令为:

mc rb --force myminio/test

执行结果如下所示:

推荐一个好用的对象存储系统:Minio

此时回到 Web 管理页面,刷新后发现桶已被删除:

推荐一个好用的对象存储系统:Minio

3.4 对象操作

在 minio 中将文件和目录都统称为对象。这里为了演示对象操作,需先创建两个测试通:

推荐一个好用的对象存储系统:Minio

接着创建一个文本文件用于测试:

推荐一个好用的对象存储系统:Minio

下面开始介绍常见的对象操作。

3.4.1 上传

上传文件对应的命令为“mc put”,其格式为:

mc put source_file alias_name/bucket_name

替换后的命令为:

mc put .测试文本.txt myminio/test

执行结果如下所示:

推荐一个好用的对象存储系统:Minio

此时在Web 管理页面查看效果如下所示:

推荐一个好用的对象存储系统:Minio

3.4.2 下载

下载对应的命令为“mc get”,其格式为:

mc get S3源文件 本地目录

替换后的命令为:

mc get myminio/test/测试文本.txt download.txt

执行后如下所示:

推荐一个好用的对象存储系统:Minio

此时在对应目录下能看到下载的文件:

推荐一个好用的对象存储系统:Minio

打开内容也与上传的文本保持一致:

推荐一个好用的对象存储系统:Minio

3.4.3 查找

查找对应的命令为“mc find”,其格式为:

mc find alias_name/bucket_name --name 文件名

当然,文件名支持模糊匹配,如:“*.txt”,表明查找所有的txt文件。

为了演示查找效果,先通过 Web管理页面添加一下其他媒体文件:

推荐一个好用的对象存储系统:Minio

替换后的命令为:

mc find myminio/test --name "*.txt"

执行结果如下所示:

推荐一个好用的对象存储系统:Minio

3.4.4 移动

所谓移动即从一个对象源移动到另一个移动源,或从同一对象源的一个桶移动到另一个桶,甚至于在对象源和本地文件系统之间移动。其命令为“mc mv”,对应格式为:

mc mv --recursive source_alias_name/bucket_name target_alias_name/bucket_name

由于我只搭建了一个 Minio,所以这里只演示同一对象源的不同桶之间的文件移动。

替换后的命令为:

mc mv --recursive myminio/test myminio/other

执行结果如下所示:

推荐一个好用的对象存储系统:Minio

当然,命令行显示信息不全,打开 Web 管理页面,发现已成功将 test 桶下的文件移动了 other桶下:

推荐一个好用的对象存储系统:Minio

3.4.5 复制

复制是将对象从一个对象源下的指定文件复制到另一个对象源,或从同一对象源的一个桶复制到另一个桶,甚至与在对象源和本地文件系统之间移动。

复制对应的命令为“mc cp”,其格式为:

mc cp --recursive source_alias_name/bucket_name target_alias_name/bucket_name

当然,本次我也只演示同一个对象源的不同桶之间的复制。替换后的命令为:

mc cp --recursive myminio/other/test myminio/test

执行后如下所示:

推荐一个好用的对象存储系统:Minio

此时在 Web 管理页面查看:

推荐一个好用的对象存储系统:Minio

3.4.6 删除

删除桶中数据对应的命令为 “mc rm”,其格式为:

mc rm --recursive [--force] alias_name/bucket_name

这里我以删除 other 桶为例进行演示。由于 other 桶还有数据,故需使用–force参数来强制删除。替换后的命令为:

mc rm --recursive --force myminio/other

执行后如下所示:

推荐一个好用的对象存储系统:Minio

此时再回到 Web管理页面查看,发现 other 桶中的数据已被删除:

推荐一个好用的对象存储系统:Minio

© 版权声明

相关文章

9 条评论

none
暂无评论...