MinIO 作为 AWS S3 的替代方案。MinIO 概述与安装。

概述与安装 Minio

目录

MinIO 是一个开源、高性能、分布式对象存储系统,完全兼容 Amazon S3 API。

它可以部署在本地、云端或边缘,优化了速度、可扩展性和安全性。MinIO 广泛用于现代数据工作负载,包括人工智能/机器学习、分析、备份和混合云环境。

aws-s3 vs minio

MinIO 非常易于使用

  • 简单部署: MinIO 以其简单直观的安装和配置过程而闻名。与更复杂的自托管解决方案(如 Ceph)相比,它被认为更容易设置和管理。
  • S3 API 兼容性: 其对 S3 API 的严格遵循意味着为 AWS S3 构建的应用程序和工具可以在不进行修改的情况下与 MinIO 一起工作,简化了迁移和集成。
  • 用户体验: MinIO 提供了基于 Web 的 UI 和 CLI,两者都因其简单性和易用性而受到称赞。
  • 文档和社区: 虽然 MinIO 有一个不断增长的社区和不错的文档,但它可能无法与 AWS S3 提供的广泛资源相媲美。

对比:MinIO 与 AWS S3

特性 MinIO AWS S3
部署 自托管/本地/云端/边缘 完全由 AWS 管理
可扩展性 手动/水平扩展 自动,几乎无限
API 兼容性 S3 兼容 原生 S3
定制化 高度可定制 有限(在 AWS 生态系统内)
集成 广泛(任何 S3 兼容工具) 与 AWS 服务深度集成
合规性 用户管理 AWS 管理,符合标准认证
性能 优化速度,硬件依赖 因地区和层级而异
支持 社区/商业支持 AWS 企业支持
成本 无授权费用,运行在通用硬件上 按使用量计费,按需付费

作为 Systemd 服务安装 Minio

建议下载 deb 包并使用 dpkg 安装,这也将创建一个 minio systemd 服务文件。

wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio_20250422221226.0.0_amd64.deb -O minio.deb
sudo dpkg -i minio.deb

如何安装 Docker 化的 MinIO

MinIO 可以通过 Docker 使用单个命令快速部署。以下是基本单节点、单磁盘设置的逐步说明。

1. 准备数据目录

在您的主机系统上创建一个目录以持久化 MinIO 数据:

mkdir -p ~/minio/data

这确保即使容器被删除或重新启动,您的数据仍然保留。

2. 使用 Docker 运行 MinIO

使用以下命令启动 MinIO:

docker run -p 9000:9000 -p 9001:9001 \
  --name minio1 \
  -e "MINIO_ROOT_USER=minioadmin" \
  -e "MINIO_ROOT_PASSWORD=minioadmin" \
  -v ~/minio/data:/data \
  minio/minio server /data --console-address ":9001"
  • -p 9000:9000: 在端口 9000 上公开 MinIO API。
  • -p 9001:9001: 在端口 9001 上公开 MinIO Web 控制台。
  • --name minio1: 为容器命名以便于管理。
  • -e "MINIO_ROOT_USER=minioadmin"-e "MINIO_ROOT_PASSWORD=minioadmin": 设置根用户和密码(在生产环境中请更改这些值)。
  • -v ~/minio/data:/data: 将本地数据目录挂载到容器中以实现持久存储。
  • minio/minio server /data --console-address ":9001": 启动 MinIO 服务器并启用 Web 控制台。

3. 访问 MinIO 控制台

  • 打开浏览器并访问 http://localhost:9001
  • 使用您上面设置的凭据登录(默认为 minioadmin / minioadmin)。

4.(可选)使用 Docker Compose

对于更高级的设置或开发,可以使用 Docker Compose。示例 Compose 文件和说明可在社区仓库中找到。

5.(可选)安装 MinIO 客户端

要通过 CLI 与 MinIO 服务器进行交互,请安装 MinIO 客户端(mc):

curl -O https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/mc

然后配置它以连接到您的 MinIO 服务器:

mc alias set local http://127.0.0.1:9000 minioadmin minioadmin

此设置为您提供了一个通过 Docker 本地运行的完全功能、S3 兼容的对象存储服务器。对于生产部署,请参阅官方 MinIO 文档以获取高级配置、安全性和扩展选项。

使用 Docker Compose 配置 MinIO 的步骤

1. 准备数据目录

在您的主机上创建一个目录以持久化 MinIO 数据:

mkdir -p ~/minio/data

此目录将被挂载到容器中,以确保数据在重启后仍然存在。


2. 创建 Docker Compose 文件

在您的工作目录中,创建一个名为 docker-compose.yml 的文件并添加以下内容(根据需要进行自定义):

version: '3.7'

services:
  minio:
    image: minio/minio
    container_name: minio
    ports:
      - "9000:9000"
      - "9001:9001"
    environment:
      MINIO_ROOT_USER: minioadmin
      MINIO_ROOT_PASSWORD: minioadmin
    volumes:
      - ~/minio/data:/data
    command: server /data --console-address ":9001"
  • MINIO_ROOT_USERMINIO_ROOT_PASSWORD 更改为生产环境中更安全的值。
  • 如果使用不同的目录,请调整卷路径。

3. 启动 MinIO 服务

在包含 docker-compose.yml 的同一目录中运行以下命令:

docker-compose up -d

此命令将拉取 MinIO 镜像(如果尚未存在),创建容器并以分离模式启动服务。


4. 验证服务

检查 MinIO 是否正在运行:

docker-compose ps

您还可以查看日志以确保没有错误:

docker-compose logs minio

5. 访问 MinIO 控制台

  • 打开浏览器并访问 http://localhost:9001
  • 使用您设置的凭据登录(默认为 minioadmin / minioadmin)。

摘要表

步骤 描述
准备目录 mkdir -p ~/minio/data
Compose 文件 创建并编辑 docker-compose.yml
启动服务 docker-compose up -d
验证 docker-compose psdocker-compose logs
访问控制台 在浏览器中访问 http://localhost:9001

对于更高级的设置(例如分布式模式、自定义配置),请参阅官方 MinIO Compose 文档或社区指南。

MinIO 的优势

  • 成本效益: 无授权费用;运行在通用硬件上,与托管云存储相比,可以显著降低总体拥有成本。
  • 开源: 完全开源,允许自定义和透明度。
  • S3 API 兼容性: 为基于 S3 的应用程序提供无缝迁移;与现有的 S3 工具和工作流程兼容。
  • 性能: 优化了高吞吐量和低延迟,尤其是在现代硬件上;在某些工作负载中通常优于 AWS S3。
  • 部署灵活性: 可以部署在任何地方——本地、任何云或边缘,实现混合和多云策略。
  • 数据控制: 组织保留对数据位置和访问的完全控制,这对于数据主权和安全性至关重要。

MinIO 的挑战

  • 手动扩展: 扩展需要手动配置和管理,与 AWS S3 的自动扩展不同。
  • 合规负担: 合规性(如 GDPR、HIPAA)是部署组织的责任,而不是 MinIO 本身。
  • 支持: 虽然 MinIO 提供商业支持,但其支持的广度和深度可能无法与 AWS 的企业级支持相媲美。
  • 运营开销: 作为一个自托管解决方案,MinIO 需要用户进行持续的维护、监控和更新。
  • 功能差距: 一些高级功能和集成在 AWS S3 中可用,但在 MinIO 中可能不存在或不够成熟。

MinIO 与 AWS S3 的定价对比

  • MinIO: 在开源许可证(AGPL v3)下免费使用。成本主要来自底层基础设施(服务器、存储、网络)和任何可选的商业支持合同。
  • AWS S3: 按使用量计费,基于使用的存储、数据传输和 API 请求。提供多种存储类,成本各异,使 不同使用案例 的成本优化成为可能。

总结

MinIO 是 AWS S3 的一个强大、开源替代方案,提供 S3 API 兼容性、高性能和部署灵活性,成本较低,尤其是对于偏好或需要 自托管 存储的组织。它易于使用,并且与现有的 S3 兼容工具集成良好。然而,它需要更多的手动管理,尤其是在扩展和合规方面,并且缺乏 AWS S3 的深度集成和支持生态系统。MinIO 与 AWS S3 之间的选择取决于您对控制、成本、可扩展性、合规性和运营开销的具体需求。

有用的链接