文档

部署 MinIO:单节点单驱动器

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

对于在编排环境中的扩展开发或生产环境,请使用 MinIO Kubernetes 运算符在多个工作节点上部署租户。

重要

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 的最新稳定镜像

选择 Podman 或 Docker 的选项卡以查看拉取 MinIO 容器镜像的说明。这些说明包括 quay.io 和 DockerHub 的示例。

quay.io
podman pull quay.io/minio/minio
DockerHub
podman pull docker://minio/minio
quay.io
docker pull quay.io/minio/minio
DockerHub
docker pull docker://minio/minio

2) 创建环境变量文件

/etc/default/minio处创建一个环境变量文件。对于 Windows 主机,请指定类似于C:\minio\config的 Windows 样式路径。MinIO Server 容器可以使用此文件作为所有环境变量的来源。

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

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

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

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

要轮换生成的根凭据,请在 KMS 中生成一个新密钥,然后使用新密钥更新MINIO_KMS_KES_KEY_NAME的值。

3) 创建并运行容器

为相关的命令语法选择您选择的容器管理界面。

将命令复制到文本文件以进行进一步修改。

podman run -dt                                  \
  -p 9000:9000 -p 9001:9001                     \
  -v PATH:/mnt/data                             \
  -v /etc/default/minio:/etc/config.env         \
  -e "MINIO_CONFIG_ENV_FILE=/etc/config.env"    \
  --name "minio_local"                          \
  minio server --console-address ":9001"

根据您的本地环境需要,指定对podman run的任何其他选项

将命令复制到文本文件以进行进一步修改。

docker run -dt                                  \
  -p 9000:9000 -p 9001:9001                     \
  -v PATH:/mnt/data                             \
  -v /etc/default/minio:/etc/config.env         \
  -e "MINIO_CONFIG_ENV_FILE=/etc/config.env"    \
  --name "minio_local"                          \
  minio server --console-address ":9001"

根据您的本地环境需要,指定对docker run的任何其他选项

对于在无根模式下运行 Docker,您可能需要设置以下其他 Docker CLI 选项

Linux

--user $(id -u):$(id -g) - 指示容器以当前登录的用户身份运行。

Windows

--security-opt "credentialspec=file://path/to/file.json" - 指示容器使用 Windows组托管服务帐户运行。

下表描述了命令的每一行并提供了其他配置说明

描述

podman run -dt
docker run -dt

指示 Podman/Docker 以分离的 (-d) 后台进程和伪终端 (-t) 创建并启动容器。这允许容器在后台运行,并为类似 bash 的访问打开一个 TTY。

-p 9000:9000 -p 9001:9001

将本地机器上的端口90009090绑定到容器上的相同端口。这允许通过本地机器访问容器。

-v PATH:/data/minio

将本地机器上的存储卷PATH绑定到容器上的/data路径。将此值替换为本地机器上存储卷或文件夹的完整路径。例如

Linux 或 macOS

~/minio/data/

Windows

C:\minio\data

-v /etc/default/minio:/etc/config.env

将上一步中创建的环境文件挂载到容器上的/etc/config.env路径。对于 Windows 主机,请指定 Windows 样式路径-v C:\minio\config:/etc/config.env

MinIO Server 使用此环境文件进行配置。

-e "MINIO_CONFIG_ENV_FILE=/etc/config.env"

设置一个指向环境文件容器挂载路径的 MinIO 环境变量。

--name "minio_local"

为容器设置自定义名称。省略此值以允许 Podman/Docker 自动生成容器名称。您可以替换此值以最好地反映您的需求。

minio server --console-address ":9001"

使用从前面步骤拉取的minio:minio镜像启动 MinIO 服务器。minio server --console-address ":9001"选项指示服务器为 MinIO 控制台 Web 界面设置静态端口。此选项对于容器化环境是**必需的**。

如果修改此值,请确保使用-p标志对 Podman/Docker 进行正确的端口映射,以确保本地主机和容器之间流量转发。

应用任何进一步的自定义到命令后,在您首选的终端或 shell 环境中运行它。该命令应为创建的容器返回一个唯一的 ID。

4) 验证容器状态

运行以下命令以从容器中检索日志。将容器名称替换为上一步中指定给--name的值。

podman logs minio

该命令应返回类似于以下内容的输出

运行以下命令以从容器中检索日志。将容器名称替换为上一步中指定给--name的值。

docker logs minio

该命令应返回类似于以下内容的输出

Status:         1 Online, 0 Offline.
API: http://10.0.2.100:9000  http://127.0.0.1:9000
RootUser: myminioadmin
RootPass: minio-secret-key-change-me
Console: http://10.0.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/container/index.html

容器网络可能无法从主机外部访问

APICONSOLE块可能包含容器的网络接口。容器网络外部的客户端无法使用这些地址访问 MinIO API 或控制台。

外部访问需要使用容器主机机的网络地址,并假设主机防火墙允许访问相关端口(示例中为90009090)。

5) 连接到 MinIO 服务

您可以通过在您首选的浏览器中输入http://127.0.0.1:9001来访问 MinIO Web 控制台。对本地主机上 MinIO 控制台端口的任何流量都将重定向到容器。

使用在容器指定的环境文件中配置的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 部署的新别名。使用本地机器的主机名或 IP 地址以及 S3 API 端口9000来访问 MinIO 部署。到本地主机该端口的任何流量都会重定向到容器。

mc alias set minio-alias http://127.0.0.1:9000 myminioadmin minio-secret-key-change-me
  • minio-alias替换为此部署要创建的别名。

  • myminioadminminio-secret-key-change-me替换为在容器指定的环境文件中MINIO_ROOT_USERMINIO_ROOT_PASSWORD 的值。

如果容器正在运行并且可以在指定的端口访问,则该命令应返回成功。

然后,您可以使用任何mc命令与容器交互。如果您的本地主机防火墙允许外部访问 MinIO S3 API 端口,则同一网络上的其他主机可以使用本地主机的 IP 或主机名访问 MinIO 部署。