文档

部署 MinIO:单节点多驱动器

此页面上的步骤介绍了在单节点多驱动器 (SNMD) 配置中部署 MinIO 的方法。 SNMD 部署提供了驱动器级别的可靠性和故障转移/恢复功能,但单节点的部署会限制性能和扩展能力。

对于生产环境,MinIO 强烈建议使用 多节点多驱动器(分布式) 拓扑结构进行部署,以获得企业级性能、可用性和可扩展性。

先决条件

存储需求

以下要求总结了 MinIO 硬件建议中 存储 部分的内容

使用本地存储

与网络存储(NASSANNFS)相比,直接连接存储 (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 模式挂载驱动器,其中 n1 开始,每个驱动器递增 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 会自动生成唯一的根凭据

在启动时满足这些条件后,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_USERMINIO_ROOT_PASSWORD 登录。

MinIO Console displaying Buckets view in a fresh installation

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