部署 MinIO:单节点单驱动器
此页面上的步骤涵盖了在单节点单驱动器 (SNSD) 配置中部署 MinIO,以便进行早期开发和评估。 SNSD 部署使用零奇偶校验擦除码后端,除了底层存储卷实现之外,不提供任何额外的可靠性或可用性。这些部署最适合本地测试和评估,或用于没有可用性或性能要求的小规模数据工作负载。
对于在编排环境中的扩展开发或生产环境,请使用 MinIO Kubernetes 运算符在多个工作节点上部署租户。
重要
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 的最新稳定镜像
选择 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 会自动生成唯一的根凭据
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) 创建并运行容器
为相关的命令语法选择您选择的容器管理界面。
将命令复制到文本文件以进行进一步修改。
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 以分离的 ( |
|
将本地机器上的端口 |
|
将本地机器上的存储卷
|
|
将上一步中创建的环境文件挂载到容器上的 MinIO Server 使用此环境文件进行配置。 |
|
设置一个指向环境文件容器挂载路径的 MinIO 环境变量。 |
|
为容器设置自定义名称。省略此值以允许 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
容器网络可能无法从主机外部访问
API
和CONSOLE
块可能包含容器的网络接口。容器网络外部的客户端无法使用这些地址访问 MinIO API 或控制台。
外部访问需要使用容器主机机的网络地址,并假设主机防火墙允许访问相关端口(示例中为9000
和9090
)。
5) 连接到 MinIO 服务
您可以通过在您首选的浏览器中输入http://127.0.0.1:9001来访问 MinIO Web 控制台。对本地主机上 MinIO 控制台端口的任何流量都将重定向到容器。
使用在容器指定的环境文件中配置的MINIO_ROOT_USER
和 MINIO_ROOT_PASSWORD
登录。
您可以使用 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
替换为此部署要创建的别名。将
myminioadmin
和minio-secret-key-change-me
替换为在容器指定的环境文件中MINIO_ROOT_USER
和MINIO_ROOT_PASSWORD
的值。
如果容器正在运行并且可以在指定的端口访问,则该命令应返回成功。
然后,您可以使用任何mc
命令与容器交互。如果您的本地主机防火墙允许外部访问 MinIO S3 API 端口,则同一网络上的其他主机可以使用本地主机的 IP 或主机名访问 MinIO 部署。