中文文档

单节点单硬盘部署MinIO

这个步骤中介绍了如何在一个单节点单驱动(SNSD)的配置中部署MinIO,用于早期的开发和评估。 SNSD 部署不会提供任何超出底层存储卷实现的额外可靠性或可用性(RAID,LVM,ZFS等)。 SNSD 部署使用零奇偶校验的纠删码后端,这提供的可靠性或可用性与底层存储卷实现的一致,没有额外的可靠性或可用性。 这些部署最适合用于本地测试和评估,或者用于没有可用性或性能要求的小规模数据工作负载。

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

重要

RELEASE.2022-10-29T06-21-33Z 完全删除了 已弃用的文件和网关系统 后端. 如果MinIO在启动时检测到存在的文件系统后端文件,它会返回一个错误。

要从FS后端部署进行迁移,使用 mc mirror or 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硬件建议的 Storage 部分:

使用本地存储

直接连接存储(DAS)在性能和一致性方面显著优于网络存储( NAS, SAN, NFS)。 MinIO 强烈建议使用闪存存储(NVMe、SSD)作为主要或 “热” 数据。

对驱动器使用 XFS 格式化

MinIO 强烈建议为存储格式化 XFS 文件系统的驱动器。 MinIO 在其内部测试和验证套件中使用 XFS,这增加了对所有规模下的性能和行为表现的额外信心。

持久化驱动器挂载和映射跨重启

为了确保在节点重启后驱动器到挂载点的映射一致,请使用 /etc/fstab 文件。

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

Exclusive access to drives

MinIO 要求 专有 对提供给对象存储的驱动器或卷的访问。 其他任何进程、软件、脚本或人员都不得直接对提供给MinIO的驱动器或卷执行 任何 操作,也不得对MinIO放置在其上的对象或文件执行操作。

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

内存要求

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

MinIO 建议每个主机 最小 32GiB 的内存。 请参阅 Memory 以获取有关 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主机,请指定一个类似Windows风格的路径: C:\minio\config . MinIO服务器容器可以使用此文件作为来源: environment variables .

以下示例提供了一个启动的环境变量配置文件:

# 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.
# 例如, `--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 或更高版本运行

  • Have not defined:

    • MINIO_ROOT_USER variable

    • MINIO_ROOT_PASSWORD variable

  • Have:

当这些条件在启动时得到满足时,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 所需的 options 以便在您的本地环境中使用。

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

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 命令指定任何其他的 options

对于以无根模式运行Docker,您可能需要设置以下附加的Docker CLI选项:

Linux

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

Windows

--security-opt credentialspec=file://path/to/file.json - 指示容器使用Windows的 Group Managed Service Account 运行。

以下表格描述了命令的每一行,并提供了额外的配置指导:

Line

描述

podman run -dt
docker run -dt

指示Podman/Docker创建并以分离的( -d )后台进程方式启动容器,同时分配一个伪TTY( -t )。 这允许容器在后台运行,同时为一个bash-like访问打开一个TTY。

-p 9000:9000 -p 9001:9001

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

-v PATH:/data/minio

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

Linux or 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服务器使用此环境变量配置文件进行配置。

-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界面设置一个静态端口。 这个选项在容器化环境中是 必需的

如果您修改了这个值,请确保使用Podman/Docker的 -p 标志设置正确的端口映射,以确保本地主机和容器之间的流量转发。

在您对命令进行了任何进一步的自定义之后,请在您喜欢的终端或壳环境中运行它。 该命令应返回创建的容器的唯一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: https://minio.org.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://minio.org.cn/docs/minio/container/index.html

Container Networks May Not Be Accessible Outside of the Host

APICONSOLE 块可能包括容器的网络接口。

容器网络外的客户端无法使用这些地址访问MinIO API或控制台。

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

5) 连接到MinIO服务

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

使用配置为容器的环变量配置文件中的 MINIO_ROOT_USERMINIO_ROOT_PASSWORD 登录。

在全新安装中,MinIO控制台显示桶视图。

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

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

你可以使用终端或Shell访问MinIO部署,请参考以下文档 MinIO客户端 (mc). See MinIO客户端安装快速入门 for instructions on installing mc.

使用下面的命令 alias 可创建一个新的mc连接,连接对应于的MinIO部署的S3服务器。 使用本地计算机的主机名或IP地址以及S3 API端口 9000 来访问MinIO部署。 任何对本地主机上该端口的流量都将重定向到容器。

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

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

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

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

Join Slack 商业支持购买咨询