文档

部署 MinIO:单节点单驱动器

本页上的步骤涵盖了在早期开发和评估阶段以单节点单驱动器 (SNSD) 配置部署 MinIO。SNSD 部署使用零奇偶校验擦除编码后端,除了底层存储卷所实现的功能外,不提供额外的可靠性或可用性。这些部署最适合本地测试和评估,或不具有可用性或性能要求的小规模数据工作负载。

对于扩展开发或生产环境,请在 多节点多驱动器(分布式) 拓扑中部署 MinIO

重要

RELEASE.2022-10-29T06-21-33Z 完全删除了 已弃用的网关/文件系统 后端。如果 MinIO 启动并检测到现有的文件系统后端文件,它将返回错误。

要从 FS 后端部署迁移,请使用 mc mirrormc 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 硬件建议的 存储 部分

使用本地存储

直接连接存储 (DAS) 在性能和一致性方面比网络存储(NASSANNFS)具有显著优势。MinIO 强烈建议使用闪存存储(NVMe,SSD)用于主要数据或“热”数据。

使用 XFS 格式化驱动器

MinIO 强烈建议使用 XFS 格式化的驱动器进行存储。MinIO 在内部测试和验证套件中使用 XFS,在所有规模上都对性能和行为提供了额外的信心。

在重启之间持久化驱动器挂载和映射

使用 /etc/fstab 确保在节点重启之间一致的驱动器到挂载点的映射。

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

对驱动器的独占访问

MinIO **需要** 对提供用于对象存储的驱动器或卷进行**独占**访问。任何其他进程、软件、脚本或人员都不应直接对提供给 MinIO 的驱动器或卷执行**任何**操作,也不应对 MinIO 在这些驱动器或卷上放置的对象或文件执行**任何**操作。

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

内存需求

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

MinIO 建议每个主机至少拥有 32GiB 的内存。有关在 MinIO 中分配内存的更多指南,请参见 内存

部署单节点单驱动器 MinIO

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

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

MinIO 的严格**写入后读取**和**写入后列出**一致性模型需要本地驱动器文件系统。

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

1) 下载 MinIO 服务器

以下选项卡提供了使用 RPM、DEB 或二进制文件将 MinIO 安装到 64 位 Linux 操作系统的示例。RPM 和 DEB 包会自动将 MinIO 安装到必要的系统路径,并为 systemctl 创建一个 minio 服务。MinIO 强烈建议使用 RPM 或 DEB 安装方式。要更新使用 systemctl 管理的部署,请参见 更新 systemctl 管理的 MinIO 部署

amd64(英特尔或 AMD 64 位处理器)

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

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

wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20241029160148.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_20241029160148.0.0_amd64.deb -O minio.deb
sudo dpkg -i minio.deb

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

wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
sudo mv minio /usr/local/bin/
arm64(苹果 M1/M2 或其他 ARM 64 位处理器)

使用以下选项之一,为在 ARM 64 位处理器(如苹果 M1 或 M2)上运行 Linux 的机器下载 MinIO 服务器安装文件。

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

wget https://dl.min.io/server/minio/release/linux-arm64/archive/minio-20241029160148.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_20241029160148.0.0_arm64.deb -O minio.deb
sudo dpkg -i minio.deb

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

wget https://dl.min.io/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 服务文件安装到 /usr/lib/systemd/system/minio.service。对于二进制安装,请在所有 MinIO 主机上手动创建此文件。

注意

systemd 在检查 /usr/lib/systemd/... 路径之前检查 /etc/systemd/... 路径,并使用它找到的第一个文件。为了避免冲突或意外的配置选项,请检查该文件是否只存在于 /usr/lib/systemd/system/minio.service 路径中。

有关文件路径搜索顺序的详细信息,请参见 systemd.unit 手册页

[Unit]
Description=MinIO
Documentation=http://min-io.cn/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 管理的部署,请参见 更新 systemctl 管理的 MinIO 部署

3) 创建环境变量文件

/etc/default/minio 处创建一个环境变量文件。MinIO 服务器容器可以使用此文件作为所有 环境变量 的来源。

以下示例提供了一个起始环境文件

# 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 会自动生成唯一的 root 凭据

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

  • **未**定义

    • MINIO_ROOT_USER 变量

    • MINIO_ROOT_PASSWORD 变量

  • :

满足这些条件时,MinIO 在启动时使用 KMS 使用 基于哈希的消息身份验证代码 (HMAC) 为部署生成唯一的 root 凭据。

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

要轮换生成的 root 凭据,请在 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 服务不会在主机重启时自动启动。您必须使用 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:9001 http://127.0.0.1:9001
RootUser: myminioadmin
RootPass: minio-secret-key-change-me

Command-line: http://min-io.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: http://min-io.cn/docs/minio/linux/index.html

API 块列出了客户端可以访问 MinIO S3 API 的网络接口和端口。Console 块列出了客户端可以访问 MinIO Web 控制台的网络接口和端口。

5) 连接到 MinIO 服务

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

使用在指定给容器的环境文件中配置的 MINIO_ROOT_USERMINIO_ROOT_PASSWORD 登录。

MinIO Console displaying Buckets view in a fresh installation

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

如果您的本地主机防火墙允许外部访问控制台端口,则同一网络上的其他主机可以使用您本地主机的 IP 或主机名访问控制台。

您可以通过终端或 Shell 使用 MinIO 客户端 (mc) 访问 MinIO 部署。有关安装 mc 的说明,请参见 MinIO 客户端安装快速入门

创建一个与 MinIO 部署相对应的新 alias。指定 MinIO Server API 块中的任何主机名或 IP 地址,例如 http://127.0.0.1:9000

mc alias set myminio http://127.0.0.1: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 部署。