单节点单硬盘部署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安装到必要的系统路径,并创建一个适用于 systemctl
的 minio
服务。
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"
其他架构
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
用户和组的身份运行。
您可以使用 groupadd
和 useradd
创建用户和组。
命令。下面的示例创建了用户和组,并设置了权限
来访问供 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 打算使用的驱动器路径相匹配。
或者,将 User
和 Group
值改为系统主机上另一个具有必要访问权限的用户和组。
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
variableMINIO_ROOT_PASSWORD
variable
Have:
使用 supported KMS target 设置 KES
使用 MinIO 环境变量 关闭 root 访问权限
启动时满足这些条件后,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_USER
和 MINIO_ROOT_PASSWORD
这些配置可以在在容器指定的环境文件中进行修改。

您可以使用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部署。