部署 MinIO:单节点单驱动器
本页上的步骤涵盖了在早期开发和评估阶段以单节点单驱动器 (SNSD) 配置部署 MinIO。SNSD 部署使用零奇偶校验擦除编码后端,除了底层存储卷所实现的功能外,不提供额外的可靠性或可用性。这些部署最适合本地测试和评估,或不具有可用性或性能要求的小规模数据工作负载。
对于扩展开发或生产环境,请在 多节点多驱动器(分布式) 拓扑中部署 MinIO
重要
RELEASE.2022-10-29T06-21-33Z 完全删除了 已弃用的网关/文件系统 后端。如果 MinIO 启动并检测到现有的文件系统后端文件,它将返回错误。
要从 FS 后端部署迁移,请使用 mc mirror
或 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 硬件建议的 存储 部分
- 使用本地存储
直接连接存储 (DAS) 在性能和一致性方面比网络存储(NAS,SAN,NFS)具有显著优势。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"
其他架构
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
用户和组运行。可以使用 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
管理的部署,请参见 更新 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
变量
已:
使用 支持的 KMS 目标 设置 KES
使用 MinIO 环境变量 禁用 root 访问
满足这些条件时,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_USER
和 MINIO_ROOT_PASSWORD
登录。
您可以使用 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 部署。