部署 MinIO:单节点多驱动器
此页面上的步骤介绍了在单节点多驱动器 (SNMD) 配置中部署 MinIO 的方法。 SNMD 部署提供了驱动器级别的可靠性和故障转移/恢复功能,但单节点的部署会限制性能和扩展能力。
对于生产环境,MinIO 强烈建议使用 多节点多驱动器(分布式) 拓扑结构进行部署,以获得企业级性能、可用性和可扩展性。
先决条件
存储需求
以下要求总结了 MinIO 硬件建议中 存储 部分的内容
- 使用本地存储
与网络存储(NAS、SAN、NFS)相比,直接连接存储 (DAS) 具有显著的性能和一致性优势。MinIO 强烈建议将闪存存储 (NVMe、SSD) 用于主数据或“热”数据。
- 为驱动器使用 XFS 格式
MinIO 强烈建议预配使用 XFS 格式的驱动器进行存储。MinIO 在内部测试和验证套件中使用 XFS,从而增强了在所有规模下性能和行为的信心。
MinIO **不**测试也不推荐任何其他文件系统,例如 EXT4、BTRFS 或 ZFS。
- 使用一致类型的驱动器
MinIO 不区分驱动器类型,并且不会从混合存储类型中受益。每个 池 必须使用相同的类型 (NVMe、SSD)
例如,部署一个仅包含 NVMe 驱动器的池。如果您部署了一些 SSD 或 HDD 驱动器,MinIO 会将这些驱动器与 NVMe 驱动器视为相同。这可能会导致性能问题,因为某些驱动器具有不同的或更差的读/写特性,并且无法以与 NVMe 驱动器相同的速率响应。
- 使用一致大小的驱动器
MinIO 将每个驱动器使用的容量限制为部署中容量最小的驱动器。
例如,部署一个包含相同数量的 NVMe 驱动器的池,这些驱动器具有相同的
7.68TiB
容量。如果您部署了一个3.84TiB
的驱动器,MinIO 会将池中的所有驱动器视为具有该较小的容量。- 配置顺序驱动器挂载
MinIO 在创建新部署时使用 Go 扩展表示法
{x...y}
来表示驱动器的顺序序列,其中部署中的所有节点都具有相同的一组已挂载驱动器。将驱动器挂载路径配置为顺序序列以最佳支持此表示法。例如,使用/mnt/drive-n
模式挂载驱动器,其中n
从1
开始,每个驱动器递增1
。- 在重启过程中保持驱动器挂载和映射
使用
/etc/fstab
确保在节点重启期间驱动器到挂载点的映射一致。非 Linux 操作系统应使用等效的驱动器挂载管理工具。
驱动器的独占访问
MinIO **需要**对提供用于对象存储的驱动器或卷进行*独占*访问。任何其他进程、软件、脚本或人员都不应对提供给 MinIO 的驱动器或卷,或 MinIO 在其上放置的对象或文件执行*任何*操作。
除非 MinIO 工程师指示,否则请勿使用脚本或工具直接修改、删除或移动提供的驱动器上的任何数据分片、奇偶校验分片或元数据文件,包括从一个驱动器或节点移动到另一个驱动器或节点。此类操作极有可能导致广泛的损坏和数据丢失,超出 MinIO 的修复能力。
内存需求
版本 RELEASE.2024-01-28T22-35-53Z 中已更改: MinIO 在启动时预分配 2GiB 的系统内存。
MinIO 建议每个主机至少有 32GiB 的内存。有关 MinIO 中内存分配的更多指导,请参阅 内存。
部署单节点多驱动器 MinIO
以下过程部署由单个 MinIO 服务器和多个驱动器或存储卷组成的 MinIO。
1) 下载 MinIO 服务器
打开终端并运行以下命令,使用 Homebrew 安装最新的稳定版 MinIO 软件包。
brew install minio/stable/minio
重要
如果您之前使用 brew install minio
安装了 MinIO 服务器,那么我们建议您从 minio/stable/minio
重新安装。
brew uninstall minio
brew install minio/stable/minio
打开终端,然后使用以下命令下载最新的稳定版 MinIO 二进制文件,将其设置为可执行文件,并将其安装到系统 $PATH
curl -O https://dl.min.io/server/minio/release/darwin-arm64/minio chmod +x ./minio sudo mv ./minio /usr/local/bin/
打开终端,然后使用以下命令下载最新的稳定版 MinIO 二进制文件,将其设置为可执行文件,并将其安装到系统 $PATH
curl -O https://dl.min.io/server/minio/release/darwin-amd64/minio chmod +x ./minio sudo mv ./minio /usr/local/bin/
2) 创建环境变量文件
在 /etc/default/minio
创建一个环境变量文件。对于 Windows 主机,请指定类似于 C:\minio\config
的 Windows 样式路径。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 volumes or paths to use for the MinIO server.
# The specified path uses MinIO expansion notation to denote a sequential series of drives between 1 and 4, inclusive.
# All drives or paths included in the expanded drive list must exist *and* be empty or freshly formatted for MinIO to start successfully.
MINIO_VOLUMES="/data-{1...4}"
# 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 或更高版本正在运行
**未**定义
MINIO_ROOT_USER
变量MINIO_ROOT_PASSWORD
变量
已:
使用 受支持的 KMS 目标 设置 KES
使用 MinIO 环境变量 禁用了根访问
在启动时满足这些条件后,MinIO 使用 KMS 使用 基于散列的消息身份验证代码 (HMAC) 为部署生成唯一的根凭据。
如果 MinIO 生成此类凭据,则用于生成凭据的密钥**必须**保持相同*并且*继续存在。部署上的所有数据都使用此密钥加密!
要轮换生成的根凭据,请在 KMS 中生成一个新密钥,然后使用新密钥更新 MINIO_KMS_KES_KEY_NAME
的值。
3) 启动 MinIO 部署
在本地主机上发出以下命令,将 MinIO SNSD 部署作为前台进程启动。您必须保持 shell 或终端会话打开以使进程继续运行。
从终端使用 minio server
在 ~/data
文件夹中启动本地 MinIO 实例。如果需要,您可以将 ~/data
替换为用户对 MinIO 实例具有读、写和删除访问权限的其他位置。
export MINIO_CONFIG_ENV_FILE=/etc/default/minio
minio server --console-address :9001
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: https://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: https://min-io.cn/docs/minio/linux/index.html
API
块列出了客户端可以访问 MinIO S3 API 的网络接口和端口。Console
块列出了客户端可以访问 MinIO Web 控制台的网络接口和端口。
4) 连接到 MinIO 部署
您可以通过在您喜欢的浏览器中输入 MinIO 服务器 Console
块中的任何主机名或 IP 地址来访问 MinIO 控制台,例如 https://127.0.0.1:9001。
使用在指定给容器的环境文件中配置的 MINIO_ROOT_USER
和 MINIO_ROOT_PASSWORD
登录。
您可以使用 MinIO 控制台执行一般管理任务,例如身份和访问管理、指标和日志监控或服务器配置。每个 MinIO 服务器都包含其自己的嵌入式 MinIO 控制台。
如果您的本地主机防火墙允许外部访问控制台端口,则同一网络上的其他主机可以使用您的本地主机的 IP 或主机名访问控制台。
您可以使用 MinIO 客户端 (mc
) 通过终端或 Shell 访问 MinIO 部署。有关安装 mc
的说明,请参阅 MinIO 客户端安装快速入门。
创建一个对应于 MinIO 部署的新 别名
。指定 MinIO 服务器 API
块中的任何主机名或 IP 地址,例如 https://127.0.0.1:9000。
mc alias set myminio https://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 部署。