前言

大家好,我是码农刚子。在数据量爆炸式增长的今天,图片、视频、日志、备份等非结构化数据的管理成为每个开发者都必须面对的课题。公有云对象存储(如 AWS S3)固然强大,但长期使用的成本令人咋舌,数据安全和合规风险也是绕不开的问题。那么,有没有一种方案,既能享受 S3 的生态便利,又能将数据牢牢掌握在自己手中?

答案是 MinIO

本文将带你全面了解 MinIO 是什么、为什么它如此受欢迎,并手把手教你如何在 Windows、Linux、macOS 以及 Docker 环境中完成安装部署。

一、MinIO 是什么?

MinIO 是一个开源的、与 Amazon S3 API 完全兼容的高性能对象存储服务。你可以把它理解为一套可以部署在自己服务器上的私有 S3

它采用 Go 语言开发,核心代码仅约 3 万行,以“简单、高性能、云原生”为核心设计理念,专为存储图片、视频、备份等大规模非结构化数据而设计。

核心特性

1. 极高性能

MinIO 对性能的追求近乎极致。通过 Go 语言的高并发特性、异步 I/O 以及对 NVMe SSD 的深度优化,官方数据显示,一个 32 节点的集群读写速度可达 325 GiB/s。在标准硬件上,单节点吞吐量也能达到惊人的水平。

2. S3 完全兼容

这是 MinIO 最核心的优势。它完整实现了 AWS S3 的核心 API,意味着所有为 S3 开发的工具、SDK 和应用——从 aws-clirclone 到 Hadoop、Spark——几乎无需修改即可直接对接 MinIO。

3. 云原生架构

MinIO 是为 Kubernetes 时代量身打造的。它提供官方 Docker 镜像,支持 Helm Chart 和 MinIO Operator,可以在 K8s 集群中作为 StatefulSet 运行,实现自动扩缩容、故障自愈和滚动升级。

4. 纠删码(Erasure Code)数据保护

MinIO 使用纠删码技术保障数据安全。它将一个对象切分为 N 个数据块和 M 个校验块,分散存储在不同磁盘上。相比传统三副本方案,纠删码在同等可靠性下存储开销更低(例如 8+4 配置下仅需 1.5 倍空间,而三副本需要 3 倍)。

5. 极致轻量

MinIO 是单个二进制文件,无任何外部依赖。下载即可运行,部署和维护极其简单。

典型应用场景

场景 说明
Web / App 文件存储 作为图片、视频、用户上传文件的后端存储
备份与归档 数据库备份、服务器日志归档
AI / 大数据 存储训练数据集、模型文件,对接 Spark、Hadoop
混合云架构 本地开发用 MinIO,生产环境无缝切换至公有云 S3

二、安装前的准备

在开始安装之前,先了解 MinIO 的两个核心端口:

  • API 端口:默认 9000,用于应用程序通过 S3 API 上传/下载文件
  • 控制台端口:默认 9001,用于通过浏览器登录 Web 管理界面

⚠️ 重要提示:MinIO 是命令行工具,不能通过双击 exe 文件运行,必须通过命令行或脚本启动。

三、Windows 系统安装教程

1. 下载 MinIO 服务端

方式一:浏览器下载

访问 MinIO 官方下载页面:

https://www.minio.org.cn/download.shtml#/windows

选择 Windows 版本,下载 minio.exe 文件。

MinIO 官网下载页面

方式二:命令行下载

以管理员身份打开 PowerShell,执行:

Invoke-WebRequest -Uri "https://dl.min.io/server/minio/release/windows-amd64/minio.exe" -OutFile "C:\minio.exe"

2. 创建目录结构

在非系统盘(如 D 盘)根目录下创建以下文件夹:

D:\MinIO\
├── bin\      # 存放 minio.exe
├── data\     # 存放数据
└── logs\     # 存放日志

将下载的 minio.exe 剪切到 D:\MinIO\bin\ 目录下。

创建目录结构示例截图

3. 设置管理员账号和密码

以管理员身份打开 CMD 或 PowerShell,进入 D:\MinIO\bin\ 目录,执行:

setx MINIO_ROOT_USER admin
setx MINIO_ROOT_PASSWORD 123456

用户名至少 3 个字符,密码至少 8 个字符。

4. 启动 MinIO 服务

D:\MinIO\bin\ 目录下打开终端,执行:

.\minio.exe server D:\MinIO\data --console-address ":9001" --address ":9000"

其中:

  • D:\MinIO\data 是数据存储目录
  • --console-address ":9001" 指定控制台端口
  • --address ":9000" 指定 API 端口

5. 创建快捷启动脚本(可选)

D:\MinIO\bin\ 目录下新建 start.bat 文件,内容如下:

@echo off
chcp 65001 >nul
title MinIO Server
cd /d "%~dp0"

set MINIO_ROOT_USER=admin
set MINIO_ROOT_PASSWORD=123456

if not exist "..\data" mkdir ..\data

.\minio.exe server ..\data --console-address ":9001" --address ":9000"
pause

以后双击 start.bat 即可启动服务。

6. 访问控制台

浏览器打开 http://127.0.0.1:9001,用刚才设置的用户名和密码登录即可。

MinIO 控制台登录页面截图

四、Linux 系统安装教程

方法一:使用预编译二进制文件(推荐)

1. 下载 MinIO 二进制文件

wget https://dl.min.io/server/minio/release/linux-amd64/minio

2. 授予执行权限

chmod +x minio

3. 创建数据目录并启动

mkdir -p /data/minio
./minio server /data/minio --console-address ":9001"

方法二:使用 RPM 包安装(适用于 CentOS/RHEL)

1. 下载并安装 RPM 包

wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio-*.rpm -O minio.rpm
yum install minio.rpm

2. 验证安装

minio --version

3. 创建数据目录并设置权限

mkdir -p /mnt/data
groupadd -r minio-user
useradd -M -r -g minio-user minio-user
chown -R minio-user:minio-user /mnt/data

4. 配置环境变量

编辑 /etc/default/minio

vim /etc/default/minio

添加以下内容:

MINIO_ROOT_USER="admin"
MINIO_ROOT_PASSWORD="your_password_here"
MINIO_VOLUMES="/mnt/data"
MINIO_OPTS="--address :9000 --console-address :9001"

5. 启动 MinIO 服务

systemctl start minio
systemctl enable minio   # 设置开机自启

方法三:使用 APT 仓库安装(适用于 Ubuntu/Debian)

添加官方仓库并安装:

curl -fsSL https://dl.min.io/server/minio/release/linux-amd64/archive/minio_*.deb -o minio.deb
dpkg -i minio.deb

五、macOS 系统安装教程

方法一:使用 Homebrew(推荐)

brew install minio/stable/minio

如果之前安装过旧版本,建议先卸载再重新安装:

brew uninstall minio
brew install minio/stable/minio

方法二:下载二进制文件

Intel 芯片(amd64)

curl -O https://dl.min.io/server/minio/release/darwin-amd64/minio
chmod +x ./minio
sudo mv ./minio /usr/local/bin/

Apple Silicon 芯片(arm64)

curl -O https://dl.min.io/server/minio/release/darwin-arm64/minio
chmod +x ./minio
sudo mv ./minio /usr/local/bin/

启动 MinIO

mkdir -p ~/data
minio server ~/data --console-address ":9001"

六、Docker 部署(跨平台通用)

Docker 方式是最简单、最干净的部署方案,适用于所有操作系统。

1. 拉取镜像

docker pull minio/minio:latest

2. 一键启动(开发测试)

docker run -d \
  --name minio \
  -p 9000:9000 \
  -p 9001:9001 \
  -e "MINIO_ROOT_USER=admin" \
  -e "MINIO_ROOT_PASSWORD=your_password_here" \
  minio/minio server /data --console-address ":9001"

3. 使用 Docker Compose(推荐生产环境)

创建 docker-compose.yml

version: '3.8'

services:
  minio:
    image: minio/minio:latest
    container_name: minio
    ports:
      - "9000:9000"
      - "9001:9001"
    environment:
      MINIO_ROOT_USER: admin
      MINIO_ROOT_PASSWORD: your_password_here
    volumes:
      - ./data:/data
      - ./config:/root/.minio
    command: server /data --console-address ":9001"
    restart: unless-stopped

启动服务:

docker-compose up -d

4. 验证部署

docker ps | grep minio

浏览器访问 http://localhost:9001 即可看到 MinIO 控制台。

七、首次登录与基本使用

无论通过哪种方式安装,启动成功后:

  1. 打开浏览器,访问 http://127.0.0.1:9001(或你的服务器 IP:9001)
  2. 登录:使用你设置的 MINIO_ROOT_USERMINIO_ROOT_PASSWORD
  3. 创建 Bucket(存储桶):点击 "Create Bucket",输入名称即可
  4. 上传文件:进入 Bucket,点击上传按钮即可开始使用

八、常见问题与注意事项

问题 解决方案
启动时报错 "拒绝访问" 右键以管理员身份运行命令行或脚本
密码太简单导致启动失败 确保密码至少 8 个字符
端口被占用 修改 --address--console-address 端口
忘记密码 重新设置环境变量 MINIO_ROOT_PASSWORD 后重启
Windows 下双击 exe 没反应 MinIO 不能双击运行,必须通过命令行启动

九、总结

MinIO 以其高性能、S3 兼容、轻量部署、云原生友好等特性,已成为开源对象存储领域的事实标准。无论是个人项目的文件存储、团队内部的开发测试,还是企业级的生产环境,MinIO 都能提供一个成本可控、性能优越、数据自主的存储解决方案。

更重要的是,MinIO 采用 GNU AGPL v3 开源协议,完全免费使用,无需为软件授权支付任何费用。

小提示:如果你觉得本文对你有帮助,不妨收藏起来,下次部署 MinIO 时随时查阅!如果在安装过程中遇到问题,欢迎在评论区留言交流。😊