文档基于2025-10-10日社区最终版构建     
切换到英文版    进入演示系统    进入交流社区

MinIO Documentation

在 Ubuntu Linux 上部署 MinIO

本页档记录了在 Ubuntu Linux 操作系统上部署 MinIO 的步骤。

MinIO 官方支持 Ubuntu 长期支持(LTS)版本在标准 or Ubuntu ProUbuntu 生命周期中的支持阶段。 MinIO 强烈建议仅使用包含 Linux 5.X 及以上内核的版本以获得最佳性能。 截至本文撰写时,这包括:

  • Ubuntu 24.04+ LTS (Noble Numbat) (推荐)

  • Ubuntu 22.04+ LTS (Jammy Jellyfish)

  • Ubuntu 20.04+ LTS (Focal Fossa)

  • Ubuntu 18.04.5 LTS (Bionic Beaver) (Ubuntu Pro Only)

上述列表假设您的组织已与Ubuntu签订必要的服务合同,以确保在版本生命周期内获得端到端的支持能力。

MinIO可能在那些使用较旧内核、已停止支持或处于遗留支持阶段的Ubuntu版本上运行,这些版本仅能获得来自MinIO或RedHat的有限支持或故障排除。

该流程主要针对生产级多节点多驱动器(MNMD)“分布式”配置。MNMD部署提供企业级的性能、可用性和可扩展性,是所有生产工作负载的推荐拓扑结构。

该流程包含部署单节点多驱动器(SNMD)和单节点单驱动器(SNSD)拓扑结构的指导,旨在支持早期开发和评估环境。

注意事项

审查清单

在尝试此过程之前,请确保您已查阅我们发布的硬件、软件和安全检查清单。

擦除编码奇偶校验

MinIO 自动确定默认值纠删码基于拓扑中的节点和驱动器总数配置集群。 您可以配置每个对象的奇偶性设置集群时的设置or让 MinIO 选择默认值(EC:4适用于生产级集群)。

Parity controls the relationship between object availability and storage on disk. Use the MinIOErasure Code Calculator为您的集群选择合适的纠删码奇偶校验级别提供指导。

虽然您可以随时更改擦除码奇偶校验设置,但使用特定奇偶校验写入的对象自动更新到新的奇偶校验设置。

基于容量的规划

MinIO建议规划足够的存储容量来存储至少在达到70%使用率前的2年数据。 正在执行服务器池扩展更频繁地或"即时"地进行通常表明存在架构或规划问题。

例如,假设某个应用套件预计每年至少产生100 TiB数据,且设定3年扩容周期。 通过确保部署时拥有约500 TiB可用存储,集群既能安全满足70%存储水位阈值,又可为每年数据存储量的增长预留缓冲空间。

考虑使用 MinIOErasure Code Calculator关于特定擦除编码设置的容量规划指导。

过程

1. 下载 MinIO RPM

使用以下命令下载最新的稳定版 MinIO DEB 并安装。

wget DEBURL -O minio.deb
sudo dpkg -i minio.deb

2. 审查systemd服务文件

The.debpackage install the followingsystemd服务文件到/usr/lib/systemd/system/minio.service:

[Unit]
Description=MinIO
Documentation=https://docs.min.io/community/minio-object-store/index.html
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio

[Service]
WorkingDirectory=/usr/local

User=minio-user
Group=minio-user
ProtectProc=invisible

EnvironmentFile=-/etc/default/minio
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES

# MinIO RELEASE.2023-05-04T21-44-30Z adds support for Type=notify (https://www.freedesktop.org/software/systemd/man/systemd.service.html#Type=)
# This may improve systemctl setups where other services use `After=minio.server`
# Uncomment the line to enable the functionality
# Type=notify

# Let systemd restart this service always
Restart=always

# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536

# Specifies the maximum number of threads this process can create
TasksMax=infinity

# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no

[Install]
WantedBy=multi-user.target

# Built for ${project.name}-${project.version} (${project.name})

3. 为 MinIO 创建用户和组

Theminio.service文件以...身份运行minio-user默认的用户和组。 您可以使用以下方式创建用户和组:groupadduseradd命令。 以下示例创建用户、组,并设置访问 MinIO 使用的文件夹路径的权限。 这些命令通常需要 root(sudo) 权限。

groupadd -r minio-user
useradd -M -r -g minio-user minio-user

上面的命令创建了用户没有主目录,这是系统服务账户的典型配置。

你好必须 chown您打算与 MinIO 一起使用的驱动器路径。 如果minio-user用户或组无法读取、写入或列出任何驱动器的内容时,MinIO进程会在启动时返回错误。

例如,以下命令设置minio-user:minio-user作为所有驱动器的用户组所有者/mnt/drives-n哪里n介于1到16之间(含1和16):

chown -R minio-user:minio-user /mnt/drives-{1...16}

4. 启用 TLS 连接

您可以跳过此步骤以在不启用 TLS 的情况下部署。 MinIO 强烈建议反对早期开发阶段之外的非TLS部署。

创建或提供传输层安全协议 (TLS)证书到 MinIO 以自动启用服务器与客户端之间的 HTTPS 安全连接。

MinIO 期望的默认证书名称为private.keypublic.crt分别用于私钥和公钥。 将证书放置在可访问的目录中。minio-user用户/组:

mkdir -p /opt/minio/certs
chown -R minio-user:minio-user /opt/minio/certs

cp private.key /opt/minio/certs
cp public.crt /opt/minio/certs

MinIO 验证客户端证书时会参照操作系统/系统的默认受信任证书颁发机构列表。 要启用对第三方或内部签名证书的验证,请将 CA 文件放置在/opt/minio/certs/CAs文件夹。 CA 文件应包含从叶子证书到根证书的完整信任链,以确保验证成功。

有关配置 MinIO TLS 的更多具体指导,包括通过服务器名称指示(SNI)实现多域名支持,请参阅网络加密(TLS).

早期开发证书

对于本地测试或开发环境,您可以使用 MinIOcertgen要生成自签名证书。 例如,以下命令生成一个自签名证书,其中包含一组与MinIO服务器主机关联的IP和DNS使用者可选名称(SAN):

certgen -host "localhost,minio-*.example.net"

放置生成的public.crtprivate.key进入/path/to/certsdirectory 来为 MinIO 部署启用 TLS。 应用程序可以使用public.crt作为受信任的证书颁发机构,允许连接到 MinIO 部署而无需禁用证书验证。

5. 创建 MinIO 环境文件

在以下位置创建环境文件:/etc/default/minioMinIO 服务使用此文件作为所有环境变量由 MinIO 使用theminio.servicefile.

根据您的部署拓扑修改示例。

在生产环境中使用多节点多驱动器("分布式")部署拓扑。

# Set the hosts and volumes MinIO uses at startup
# The command uses MinIO expansion notation {x...y} to denote a
# sequential series.
#
# The following example covers four MinIO hosts
# with 4 drives each at the specified hostname and drive locations.
#
# The command includes the port that each MinIO server listens on
# (default 9000).
# If you run without TLS, change https -> http

MINIO_VOLUMES="https://minio{1...4}.example.net:9000/mnt/disk{1...4}/minio"

# Set all MinIO server command-line options
#
# The following explicitly sets the MinIO Console listen address to
# port 9001 on all network interfaces.
# The default behavior is dynamic port selection.

MINIO_OPTS="--console-address :9001 --certs-dir /opt/minio/certs"

# Set the root username.
# This user has unrestricted permissions to perform S3 and
# administrative API operations on any resource in the deployment.
#
# Defer to your organizations requirements for superadmin user name.

MINIO_ROOT_USER=minioadmin

# Set the root password
#
# Use a long, random, unique string that meets your organizations
# requirements for passwords.

MINIO_ROOT_PASSWORD=minio-secret-key-CHANGE-ME

在开发和评估环境中使用单节点多驱动器部署。 您也可以将它们用于可以容忍因节点停机而导致数据丢失或不可用的较小存储工作负载。

# Set the volumes MinIO uses at startup
# The command uses MinIO expansion notation {x...y} to denote a
# sequential series.
#
# The following specifies a single host with 4 drives at the specified location
#
# The command includes the port that the MinIO server listens on
# (default 9000).
# If you run without TLS, change https -> http

MINIO_VOLUMES="https://minio1.example.net:9000/mnt/drive{1...4}/minio"

# Set all MinIO server command-line options
#
# The following explicitly sets the MinIO Console listen address to
# port 9001 on all network interfaces.
# The default behavior is dynamic port selection.

MINIO_OPTS="--console-address :9001 --certs-dir /opt/minio/certs"

# Set the root username.
# This user has unrestricted permissions to perform S3 and
# administrative API operations on any resource in the deployment.
#
# Defer to your organizations requirements for superadmin user name.

MINIO_ROOT_USER=minioadmin

# Set the root password
#
# Use a long, random, unique string that meets your organizations
# requirements for passwords.

MINIO_ROOT_PASSWORD=minio-secret-key-CHANGE-ME

在早期开发和评估环境中使用单节点单驱动器("独立")部署。 MinIO 不建议在生产环境中使用独立部署,因为节点或其存储介质的丢失会导致数据丢失。

重要

SNSD部署不支持通过添加新服务器池来扩展存储。

# Set the volume MinIO uses at startup
#
# The following specifies the drive or folder path

MINIO_VOLUMES="/mnt/drive1/minio"

# Set all MinIO server command-line options
#
# The following explicitly sets the MinIO Console listen address to
# port 9001 on all network interfaces.
# The default behavior is dynamic port selection.

MINIO_OPTS="--console-address :9001 --certs-dir /opt/minio/certs"

# Set the root username.
# This user has unrestricted permissions to perform S3 and
# administrative API operations on any resource in the deployment.
#
# Defer to your organizations requirements for superadmin user name.

MINIO_ROOT_USER=minioadmin

# Set the root password
#
# Use a long, random, unique string that meets your organizations
# requirements for passwords.

MINIO_ROOT_PASSWORD=minio-secret-key-CHANGE-ME

指定任何其他环境变量或根据您的部署需求配置服务器命令行选项。

对于分布式部署,所有节点必须有匹配的/etc/default/minio环境文件。 使用诸如shasum -a 256 /etc/default/minio在每个节点上验证所有节点之间的精确匹配。

6. 启动 MinIO 部署

使用systemctl start minio启动部署中的每个节点。

您可以使用以下方式跟踪启动状态:journalctl -u minio在每个节点上。

成功启动后,MinIO 进程会输出如下所示的部署摘要:

MinIO Object Storage Server
Copyright: 2015-2024 MinIO, Inc.
License: GNU AGPLv3 - https://www.gnu.org/licenses/agpl-3.0.html
Version: RELEASE.2024-06-07T16-42-07Z (go1.22.4 linux/amd64)

API: https://minio-1.example.net:9000 https://203.0.113.10:9000 https://127.0.0.1:9000
   RootUser: minioadmin
   RootPass: minioadmin

WebUI: https://minio-1.example.net:9001 https://203.0.113.10:9001 https://127.0.0.1:9001
   RootUser: minioadmin
   RootPass: minioadmin

CLI: https://docs.min.io/community/minio-object-store/reference/minio-mc.html#quickstart
   $ mc alias set 'myminio' 'https://minio-1.example.net:9000' 'minioadmin' 'minioadmin'

Docs: https://docs.min.io/community/minio-object-store/index.html
Status:         16 Online, 0 Offline.

在集群启动和同步过程中,您可能会看到日志活动增加。

创业失败的常见原因包括:

  • MinIO 进程对指定驱动器没有读写列表访问权限

  • 驱动器不为空或包含非MinIO数据

  • 驱动器未正确格式化或挂载

  • 一个或多个主机无法通过网络访问

遵循我们的检查清单通常可以降低遇到这些或类似问题的风险。

7. 连接到部署

打开浏览器并通过端口访问任意 MinIO 主机名:9001要打开MinIO 控制台登录页面。 例如,https://minio1.example.com:9001.

使用登录MINIO_ROOT_USERMINIO_ROOT_PASSWORD从上一步。

MinIO Console Login Page

您可以使用 MinIO 控制台执行常规管理任务,例如身份和访问管理、指标和日志监控或服务器配置。 每个 MinIO 服务器都包含其自己内嵌的 MinIO 控制台。

遵循安装说明formc在您的本地主机上运行。mc --version验证安装。

如果您的 MinIO 部署使用第三方或自签名的 TLS 证书,请复制CA文件到~/.mc/certs/CAs允许mc

安装完成后,为 MinIO 部署创建别名:

mc alias set myminio https://minio-1.example.net:9000 USERNAME PASSWORD

将主机名、用户名和密码更改为反映您的部署配置。 主机名可以是部署中的任何 MinIO 节点。 您也可以指定处理连接到部署的主机名负载均衡器、反向代理或类似网络控制平面。

8. 后续步骤

TODO