MinIO 是一个高性能、兼容 S3 的对象存储解决方案,采用 GNU AGPL v3.0 许可证开源发布。它专为速度和可扩展性而设计,能够以业界领先的性能支持 AI/ML、分析和数据密集型工作负载。

🔹 兼容 S3 API – 可以无缝集成现有的 S3 工具 🔹 为 AI 和分析而构建 – 针对大规模数据管道进行了优化 🔹 高性能 – 非常适合要求严苛的存储工作负载

👉 AI 存储文档地址:https://min.io/solutions/object-storage-for-ai

本 README 提供了在裸金属硬件上运行 MinIO 的快速上手指南,包括基于容器的安装方式。如果你使用的是 Kubernetes 环境,请参考 MinIO Kubernetes Operator


容器安装

使用以下命令运行一个独立(standalone)的 MinIO 容器服务:

独立的 MinIO 服务适合早期开发和评估。像版本控制(versioning)、对象锁定(object locking)、桶复制(bucket replication)等功能需要使用纠删码(Erasure Coding)部署的分布式 MinIO。 在长期开发或生产环境中,建议启用纠删码并至少为每个 MinIO 服务器配置 4 个驱动器。详细文档见:MinIO Erasure Code 概述

稳定版本

运行以下命令,在容器中以临时数据卷的方式启动最新稳定版的 MinIO:

  1. podman run -p 9000:9000 -p 9001:9001 \
  2. quay.io/minio/minio server /data --console-address ":9001"

MinIO 部署启动后默认使用的 root 凭证是:minioadmin:minioadmin。你可以通过 MinIO Console(一个内嵌的对象浏览器)来测试部署结果。打开浏览器访问 http://127.0.0.1:9000,使用默认凭证登录。你可以在浏览器中创建 bucket、上传对象,并浏览 MinIO 中的内容。

你也可以使用任何兼容 S3 的工具进行连接,比如 MinIO 的命令行工具 mc。查看 使用 MinIO Client mc 测试 了解详情。 如果你是应用开发者,可以访问 https://min.io/docs/minio/linux/developers/minio-drivers.html,查看支持的语言 SDK。

[!NOTE] 如果要将 MinIO 部署到持久化存储上,你需要使用 podman -v 参数将主机的本地持久目录映射到容器。例如: -v /mnt/data:/data 表示将主机的 /mnt/data 挂载到容器的 /data

macOS

使用以下命令可以在 macOS 上运行一个独立的 MinIO 服务。

独立的 MinIO 服务适合早期开发和评估。某些功能(比如版本控制、对象锁定、桶复制)需要使用纠删码(Erasure Coding)部署的分布式 MinIO。在长期开发或生产环境中,建议启用纠删码,并为每个 MinIO 服务实例配置 至少 4 个驱动器。详见 MinIO Erasure Code 概述

使用 Homebrew(推荐方式)

运行以下命令,通过 Homebrew 安装最新稳定版本的 MinIO。请将 /data 替换为你希望存储 MinIO 数据的路径:

  1. brew install minio/stable/minio
  2. minio server /data

[!NOTE] 如果你之前使用 brew install minio 安装过 MinIO,建议重新从官方源 minio/stable/minio 安装一次:

  1. brew uninstall minio
  2. brew install minio/stable/minio

MinIO 启动后会使用默认的 root 凭证 minioadmin:minioadmin。你可以使用 MinIO Console(内嵌的 Web 对象浏览器)来测试部署情况。在主机浏览器中访问 http://127.0.0.1:9000,使用默认凭证登录,即可创建 bucket、上传对象和浏览数据。

你也可以使用兼容 S3 的工具连接,比如命令行工具 MinIO Client mc。更多内容详见:使用 MinIO Client mc 测试。 如果你是开发者,也可以前往 https://min.io/docs/minio/linux/developers/minio-drivers.html/,查看支持的 SDK 列表。


使用二进制文件下载

使用以下命令下载并运行一个独立的 MinIO 服务(macOS)。请将 /data 替换为你希望用于存储数据的路径:

  1. wget https://dl.min.io/server/minio/release/darwin-amd64/minio
  2. chmod +x minio
  3. ./minio server /data

MinIO 启动后会使用默认 root 凭证 minioadmin:minioadmin。你可以使用 MinIO Console 测试部署结果,浏览器访问 http://127.0.0.1:9000 登录后即可管理 bucket 和对象。

同样地,你可以通过 MinIO Client mc 工具或其他兼容 S3 的工具连接。更多内容见:使用 MinIO Client mc 测试。 开发者也可以查看 https://min.io/docs/minio/linux/developers/minio-drivers.html,获取各语言的 MinIO SDK。

GNU/Linux

在运行 64 位 Intel/AMD 架构的 Linux 主机上,可以使用以下命令来运行独立的 MinIO 服务。请将 /data 替换为你希望 MinIO 存储数据的目录路径:

  1. wget https://dl.min.io/server/minio/release/linux-amd64/minio
  2. chmod +x minio
  3. ./minio server /data

下表列出了 MinIO 支持的架构。请根据你的 Linux 主机架构替换下载链接中的地址:

架构类型 下载地址
64 位 Intel/AMD https://dl.min.io/server/minio/release/linux-amd64/minio
64 位 ARM https://dl.min.io/server/minio/release/linux-arm64/minio
64 位 PowerPC LE (ppc64le) https://dl.min.io/server/minio/release/linux-ppc64le/minio

MinIO 启动后默认使用 root 凭证 minioadmin:minioadmin。你可以通过内置的 MinIO Console(基于网页的对象浏览器)测试是否部署成功:在主机的浏览器中访问 http://127.0.0.1:9000,使用默认凭证登录,然后可以创建 bucket、上传对象和浏览数据。

此外,你也可以使用任何兼容 S3 的工具进行连接,比如 MinIO 的命令行工具 mc。参考 使用 MinIO Client mc 测试。 开发者可以访问 https://min.io/docs/minio/linux/developers/minio-drivers.html,查看支持语言的 MinIO SDK。

[!NOTE] 独立的 MinIO 服务器最适合用于开发初期和测试评估。若需要使用如版本控制、对象锁定、桶复制等高级功能,必须通过纠删码方式部署分布式 MinIO。在长期开发或生产环境中,务必启用纠删码,并确保每个 MinIO 服务节点至少有 4 块硬盘。详细信息参见 MinIO Erasure Code 概述

Microsoft Windows

如果你使用的是 64 位 Windows 主机,可以通过以下方式下载并运行 MinIO:

首先,下载 MinIO 可执行文件:

  1. https://dl.min.io/server/minio/release/windows-amd64/minio.exe

然后,在命令行或 PowerShell 中运行以下命令来启动独立的 MinIO 服务。请将 D:\ 替换为你希望用于存储数据的路径。你需要将终端目录切换到 minio.exe 所在的位置,或者将其所在目录添加到系统环境变量 $PATH 中:

  1. minio.exe server D:\

MinIO 启动后默认使用的 root 凭证是:minioadmin:minioadmin。你可以使用内置的 MinIO Console(基于网页的对象浏览器)进行测试: 打开浏览器访问 http://127.0.0.1:9000,使用默认凭证登录,创建 bucket、上传对象并浏览服务器上的内容。

你还可以使用任何兼容 S3 的工具连接 MinIO,比如命令行工具 MinIO Client mc。更多信息请查看:使用 MinIO Client mc 测试。 开发者可参考 https://min.io/docs/minio/linux/developers/minio-drivers.html 查看各语言的 SDK。

[!NOTE] 独立的 MinIO 服务器适合用于开发初期和评估阶段。若要使用版本控制、对象锁定和桶复制等功能,必须使用纠删码部署的分布式 MinIO。 在正式开发或生产环境中,请启用纠删码,并确保 每个 MinIO 实例至少配置 4 个驱动器。详见:MinIO Erasure Code 概述

从源码安装

使用以下命令从源码编译并运行一个独立的 MinIO 服务。源码安装仅适用于开发者及高级用户。如果你还没有配置好 Golang 环境,请参考 How to install Golang 进行安装,最低要求版本为 go1.24

  1. go install github.com/minio/minio@latest

MinIO 启动后默认使用 root 凭证 minioadmin:minioadmin。你可以使用内置的 MinIO Console 进行测试:在主机的浏览器中访问 http://127.0.0.1:9000,使用默认凭证登录后,即可创建 bucket、上传对象并浏览服务器上的内容。

你也可以使用任何兼容 S3 的工具连接,比如 MinIO Client mc。更多详情请参考:使用 MinIO Client mc 测试。 对于应用开发者,请访问 https://min.io/docs/minio/linux/developers/minio-drivers.html 查看支持的各语言 SDK。

[!NOTE] 独立的 MinIO 服务器最适用于开发初期和评估阶段。若需要使用版本控制、对象锁定或桶复制等功能,必须通过纠删码方式部署分布式 MinIO。在长期开发或生产环境中,请务必启用纠删码,并确保 每个 MinIO 实例至少配置 4 个驱动器。详见 MinIO Erasure Code 概述

MinIO 强烈建议在生产环境中不要使用从源码编译的 MinIO 服务器。

部署建议

为防火墙开放端口

MinIO 默认监听端口 9000,用于接收外部连接。如果你的系统或云平台默认阻止该端口,你需要手动开放它。


使用 ufw(适用于基于 Debian 的发行版)

如果你的主机启用了 ufw(Uncomplicated Firewall),可以使用如下命令允许访问特定端口。以下命令允许访问 9000 端口:

  1. ufw allow 9000

如果你希望一次性放通 9000 到 9010 之间的所有端口,可以使用:

  1. ufw allow 9000:9010/tcp

使用 firewall-cmd(适用于 CentOS 等基于 RHEL 的系统)

若主机启用了 firewall-cmd,可以使用如下命令开放所需端口。首先,查看当前使用中的防火墙区域:

  1. firewall-cmd --get-active-zones

然后,将端口规则应用到上一步输出的区域。假设区域是 public,则使用以下命令开放 9000 端口:

  1. firewall-cmd --zone=public --add-port=9000/tcp --permanent

[!NOTE] --permanent 表示该规则在防火墙重启或重新加载后仍然有效。添加完规则后,需要重新加载防火墙才能生效:

  1. firewall-cmd --reload

使用 iptables(适用于 RHEL、CentOS 等)

若主机使用 iptables,可以用以下命令允许指定端口的流量通过。比如开放 9000 端口:

  1. iptables -A INPUT -p tcp --dport 9000 -j ACCEPT
  2. service iptables restart

如果你希望开放 9000 到 9010 的所有端口,可以使用:

  1. iptables -A INPUT -p tcp --dport 9000:9010 -j ACCEPT
  2. service iptables restart

测试 MinIO 的连通性(Test MinIO Connectivity)

你可以通过以下方式测试 MinIO 是否正常运行:

使用 MinIO Console

在浏览器中访问 http://127.0.0.1:9000,输入默认的 root 凭证 minioadmin:minioadmin 登录。登录成功后,你可以通过图形界面创建 bucket、上传对象或管理权限。

使用 curl

你也可以使用 curl 命令行工具测试:

  1. curl http://localhost:9000

如果 MinIO 正常运行,它将返回类似 XML 格式的错误响应,提示缺少签名信息,这意味着服务器可以正常响应请求。


配置 MinIO 服务(Configure MinIO as a Service)

你可以将 MinIO 设置为系统服务,以便在系统启动时自动运行。下面是配置 systemd 的示例(适用于大多数 Linux 发行版):

  1. 创建 MinIO 的服务文件:
  1. sudo nano /etc/systemd/system/minio.service
  1. 添加以下内容(请根据实际路径和配置修改):
  1. [Unit]
  2. Description=MinIO
  3. Documentation=https://min.io/docs/minio/linux/index.html
  4. Wants=network-online.target
  5. After=network-online.target
  6. [Service]
  7. User=minio-user
  8. Group=minio-user
  9. ExecStart=/usr/local/bin/minio server /data --console-address ":9001"
  10. Restart=always
  11. LimitNOFILE=65536
  12. [Install]
  13. WantedBy=multi-user.target

⚠️ 注意:请确保你已经创建了 minio-user 用户,并拥有访问 /data 的权限。你也需要将 /usr/local/bin/minio 替换为你实际的 MinIO 可执行文件路径。

  1. 重新加载 systemd 并启动服务:
  1. sudo systemctl daemon-reexec
  2. sudo systemctl daemon-reload
  3. sudo systemctl enable minio
  4. sudo systemctl start minio
  1. 检查服务状态:
  1. sudo systemctl status minio

启动 MinIO 服务(Start MinIO)

MinIO 可以直接通过命令行启动:

  1. minio server /data

你也可以使用更高级的参数进行启动,例如指定控制台端口:

  1. minio server /data --console-address ":9001"

运行后,你可以通过以下方式访问:

  • API 接口:http://127.0.0.1:9000
  • 控制台界面:http://127.0.0.1:9001

下一步建议(Next Steps)

完成基本安装后,你可以继续以下操作来深入使用 MinIO: