中文文档

单节点单硬盘部署MinIO

这个步骤中介绍了如何在一个单节点单驱动(SNSD)的配置中部署MinIO,用于早期的开发和评估。 SNSD 部署不会提供任何超出底层存储卷实现的额外可靠性或可用性(RAID,LVM,ZFS等)。 SNSD 部署使用零奇偶校验的纠删码后端,这提供的可靠性或可用性与底层存储卷实现的一致,没有额外的可靠性或可用性。 这些部署最适合用于本地测试和评估,或者用于没有可用性或性能要求的小规模数据工作负载。

对于扩展开发或生产环境,将MinIO部署在 多节点多磁盘 (分布式) 网络拓扑中。

重要

RELEASE.2022-10-29T06-21-33Z 完全删除了 已弃用的文件和网关系统 后端. 如果MinIO在启动时检测到存在的文件系统后端文件,它会返回一个错误。

要从FS后端部署进行迁移,使用 mc mirror or mc cp 命令将数据复制到新的MinIO SNSD 部署中. 同时,您还需要在 SNSD 部署上重新创建必要的用户、组、策略和存储桶配置

预先存在的数据

MinIO的启动行为取决于指定的存储卷或路径的内容。 服务器会检查MinIO内部的后端数据以及现有文件夹和文件的结构。 以下表格列出了可能的存储卷状态和MinIO的行为:

存储容量状态

行为

不包含 任何文件、文件夹或MinIO后端数据的空目录

MinIO以 SNSD 模式启动并创建零冗余后端

存在 SNSD 零冗余对象和MinIO后端数据

MinIO以 SNSD 模式恢复

存在文件系统文件夹、文件,但没有MinIO后端数据

MinIO返回错误并且不启动

存在文件系统文件夹、文件和传统的“FS模式”后端数据

MinIO返回错误并且不启动

在 RELEASE.2022-10-29T06-21-33Z 版本发生变更.

先决条件

存储要求

以下要求概述了MinIO硬件建议的 Storage 部分:

使用本地存储

直接连接存储(DAS)在性能和一致性方面显著优于网络存储( NAS, SAN, NFS)。 MinIO 强烈建议使用闪存存储(NVMe、SSD)作为主要或 “热” 数据。

对驱动器使用 XFS 格式化

MinIO 强烈建议为存储格式化 XFS 文件系统的驱动器。 MinIO 在其内部测试和验证套件中使用 XFS,这增加了对所有规模下的性能和行为表现的额外信心。

持久化驱动器挂载和映射跨重启

为了确保在节点重启后驱动器到挂载点的映射一致,请使用 /etc/fstab 文件。

在非Linux操作系统中,应使用等效的驱动器挂载管理工具。

Exclusive access to drives

MinIO 要求 专有 对提供给对象存储的驱动器或卷的访问。 其他任何进程、软件、脚本或人员都不得直接对提供给MinIO的驱动器或卷执行 任何 操作,也不得对MinIO放置在其上的对象或文件执行操作。

除非由MinIO工程部门指导,否则不要使用脚本或工具直接修改、删除或移动提供给MinIO的驱动器上的任何数据片段、校验片段或元数据文件,包括从一个驱动器或节点移动到另一个驱动器或节点。 这些操作很可能会导致广泛的数据损坏和丢失,超出了MinIO的修复能力。

内存要求

在 RELEASE.2024-01-28T22-35-53Z 版本发生变更: MinIO 在启动时预分配 2GiB 的系统内存。

MinIO 建议每个主机 最小 32GiB 的内存。 请参阅 Memory 以获取有关 MinIO 中内存分配的更多指导。

布署单节点单磁盘的MinIO服务

以下流程部署了由单个MinIO服务器和单个驱动器或存储卷组成的MinIO。

网络文件系统卷打破一致性保证

MinIO强制实施 写入后读取写入后列举 的一致性模型, 需要本地驱动器文件系统。

如果底层存储卷是NFS或类似的网络附加存储卷, MinIO无法提供一致性保证。

1) 下载MinIO服务器文件

下面的内容提供了在64位Linux操作系统上使用RPM、DEB或二进制文件安装MinIO的示例。 RPM和DEB软件包会自动将MinIO安装到必要的系统路径,并创建一个适用于 systemctlminio 服务。 MinIO强烈建议使用RPM或DEB安装方式。 要更新使用的部署,其管理方式是: systemctl , 详细内容请查看 minio-upgrade-systemctl.

amd64 (Intel or AMD 64位处理程序)

使用以下选项之一下载适用于运行 Linux 操作系统的 Intel 或 AMD 64 位处理器的 MinIO 服务器安装文件。

使用以下命令下载最新版本的稳定 MinIO RPM 并安装:

wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20250422221226.0.0-1.x86_64.rpm -O minio.rpm
sudo dnf install minio.rpm

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

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

使用以下命令下载安装最新版本的稳定 MinIO二进制包, 并设置 $PATH :

wget https://dl.minio.org.cn/server/minio/release/linux-amd64/minio
chmod +x minio
sudo mv minio /usr/local/bin/
arm64 (ARM 64-bit processors)

使用以下选项之一为在 ARM 64 位处理器上运行 Linux 的机器下载 MinIO 服务器安装文件。

使用以下命令下载最新版本的稳定 MinIO RPM 并安装:

wget https://dl.min.io/server/minio/release/linux-arm64/archive/minio-20250422221226.0.0-1.aarch64.rpm -O minio.rpm
sudo dnf install minio.rpm

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

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

使用以下命令下载最新版本的稳定 MinIO 二进制文件, 并将其安装到系统 $PATH 中:

wget https://dl.minio.org.cn/server/minio/release/linux-arm64/minio
chmod +x minio
MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=password ./minio server /mnt/data --console-address ":9001"
其他架构

MinIO 还支持其他体系结构:

  • ppc64le

  • s390x

有关下载这些体系结构的二进制文件、RPM 或 DEB 文件的说明,请参考和阅读: MinIO下载.

2) 创建 systemd 系统启动服务文件

.deb``或 ``.rpm``软件包会将以下 `systemd <https://www.freedesktop.org/wiki/Software/systemd/>`__ 服务文件 安装到 ``/usr/lib/systemd/system/minio.service 。 对于二进制安装,请在所有 MinIO 主机上手动创建此文件。

备注

systemd 先检查 /etc/systemd/... 路径,然后再检查 /usr/lib/systemd/... 路径,并使用找到的第一个文件。 为避免配置选项冲突或出现意外,请检查文件是否只存在于 /usr/lib/systemd/system/minio.service 路径下。

请参阅 man page for systemd.unit 文件路径搜索顺序的详细信息。

[Unit]
Description=MinIO
Documentation=https://min.io/docs/minio/linux/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})

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

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

本例中的驱动器路径由 MINIO_VOLUMES 环境变量指定。更改此处和环境变量文件中的值,使其与 MinIO 打算使用的驱动器路径相匹配。

或者,将 UserGroup 值改为系统主机上另一个具有必要访问权限的用户和组。

MinIO 在以下网站发布了更多启动脚本示例 github.com/minio/minio-service

要更新使用 systemctl, 参阅 minio-upgrade-systemctl

3) 创建环境变量文件

/etc/default/minio 创建环境变量文件。 MinIO 服务器容器可以将此文件作为所有 environment variables

下面的示例提供了一个起始环境文件:

# MINIO_ROOT_USER and MINIO_ROOT_PASSWORD sets the root account for the MinIO server.
# This user has unrestricted permissions to perform S3 and administrative API operations on any resource in the deployment.
# Omit to use the default values 'minioadmin:minioadmin'.
# MinIO recommends setting non-default values as a best practice, regardless of environment

MINIO_ROOT_USER=myminioadmin
MINIO_ROOT_PASSWORD=minio-secret-key-change-me

# MINIO_VOLUMES sets the storage volume or path to use for the MinIO server.

MINIO_VOLUMES="/mnt/data"

# MINIO_OPTS sets any additional commandline options to pass to the MinIO server.
# For example, `--console-address :9001` sets the MinIO Console listen port
MINIO_OPTS="--console-address :9001"

根据部署需要加入其他环境变量。

在 Server 版本加入: RELEASE.2024-03-03T17-50-39Z

如果以下条件全部为真,MinIO 会自动生成唯一的根证书:

  • KES 运行 2024-03-01T18-06-46Z 或更高版本

  • Have not defined:

    • MINIO_ROOT_USER variable

    • MINIO_ROOT_PASSWORD variable

  • Have:

启动时满足这些条件后,MinIO 会使用 KMS 为部署生成唯一的根证书,并使用 hash-based message authentication code (HMAC)

如果 MinIO 生成了此类凭证,用于生成凭证的密钥 必须 保持不变, 并且 继续存在。 部署中的所有数据都使用此密钥加密!

要旋转生成的根证书,请在 KMS 中生成一个新密钥,然后用新密钥更新 MINIO_KMS_KES_KEY_NAME 的值。

4) 启动MinIO服务

在本地主机上发出以下命令来启动 MinIO SNSD 部署即服务:

sudo systemctl start minio.service

使用以下命令确认服务是否在线和功能正常:

sudo systemctl status minio.service
journalctl -f -u minio.service

MinIO在服务器处理连接和同步时可能会记录大量非关键性警告。 这些警告通常是短暂的, 在部署上线后应该会解决。

在 RELEASE.2023-02-09T05-16-53Z 版本发生变更: 如果MinIO检测到足够的驱动器以满足部署的 写入仲裁 需要,则会启动MinIO,如果不满足则会启动失败。

如果在启动MinIO后任何驱动器仍处于离线状态,请检查和修复阻止其功能的任何问题,然后再开始生产工作负载。

MinIO服务不会在主机重新启动时自动启动。 您必须使用 systemctl enable minio.service 将进程作为主机引导的一部分,在服务器重启的过程中该进程会自动重启,而不用再进行手动管理。

sudo systemctl enable minio.service

journalctl 的显示输出的样例如下面展示的内容:

Status:         1 Online, 0 Offline.
API: http://192.168.2.100:9000  http://127.0.0.1:9000
RootUser: myminioadmin
RootPass: minio-secret-key-change-me
Console: http://192.168.2.100:9090 http://127.0.0.1:9090
RootUser: myminioadmin
RootPass: minio-secret-key-change-me

Command-line: https://minio.org.cn/docs/minio/linux/reference/minio-mc.html
   $ mc alias set myminio http://10.0.2.100:9000 myminioadmin minio-secret-key-change-me

Documentation: https://minio.org.cn/docs/minio/linux/index.html

API 列出了客户端可以访问MinIO S3 API的网络接口和端口。 Console 列出了网络接口和端口,客户端可以通过这些接口和端口访问MinIO网页端的控制台。

5) 连接到MinIO服务

您可以通过在首选的浏览器中输入MinIO服务器 Console控制台 中的任何主机名或IP地址来访问MinIO控制台,例如http://localhost:9001。

登录MinIO的用户名和密码配置参数为 MINIO_ROOT_USERMINIO_ROOT_PASSWORD 这些配置可以在在容器指定的环境文件中进行修改。

MinIO控制台 displaying Buckets view in a fresh installation

您可以使用MinIO控制台进行一般管理任务,如身份和访问管理、指标和日志监控或服务器配置。每个MinIO服务器都包含其自己的嵌入式MinIO控制台。 如果您的本地主机防火墙允许外部访问控制台端口,则同一网络上的其他主机可以使用您的本地主机的IP地址或主机名访问控制台。

你可以使用终端或Shell访问MinIO部署,请参考以下文档 MinIO客户端 (mc) 。 请查看关于 MinIO客户端安装快速入门 的安装的说明 mc

使用下面的命令 alias 可创建一个新的mc连接,连接对应于的MinIO部署的S3服务器。

请指定来自MinIO 服务器的 API 对应的主机名或IP地址,例如: http://localhost:9000

mc alias set myminio http://localhost:9000 myminioadmin minio-secret-key-change-me
  • myminio 替换为所需的别名。

  • myminioadmin 替换为容器指定的环境文件中的 MINIO_ROOT_USER 值。

  • minio-secret-key-change-me 替换为容器指定的环境文件中的 MINIO_ROOT_PASSWORD 值。

您可以使用任何 mc 命令与容器进行交互。 如果您的本地主机防火墙允许外部访问MinIO S3 API端口,同一网络上的其他主机可以使用您本地主机的IP或主机名访问MinIO部署。

Join Slack 商业支持购买咨询