# MinIO 生产级集群部署文档(EC:8+4) ## 文档信息 | 项目 | 内容 | |------|------| | **集群规模** | 3 节点 | | **每节点磁盘** | 8 块独立数据盘(共 24 块盘) | | **纠删码配置** | EC:8+4(每纠删集合 12 盘,8 数据 + 4 校验) | | **操作系统** | CentOS 9 Stream | | **MinIO 版本** | RELEASE.2025-09-07T16-13-09Z | | **部署方式** | 二进制 + Systemd 服务 | --- ## 目录 1. [环境规划](#1-环境规划) 2. [磁盘准备与挂载](#2-磁盘准备与挂载) 3. [主机名与网络配置](#3-主机名与网络配置) 4. [MinIO 二进制安装](#4-minio-二进制安装) 5. [MinIO 集群配置](#5-minio-集群配置) 6. [Systemd 服务配置](#6-systemd-服务配置) 7. [防火墙配置](#7-防火墙配置) 8. [启动与验证集群](#8-启动与验证集群) 9. [常见故障排查](#9-常见故障排查) 10. [附录:命令速查](#10-附录命令速查) --- ## 1. 环境规划 ### 1.1 硬件要求 | 组件 | 最低配置 | 推荐配置(本次测试) | |------|----------|----------------------| | CPU | 4 核 | 8 核 | | 内存 | 8 GB | 16 GB | | 系统盘 | 100 GB | 100 GB | | 数据盘 | 每节点 8 × 100 GB | 每节点 8 × 100 GB | | 网络 | 千兆 | 千兆或更高 | ### 1.2 节点信息 | 主机名 | IP 地址 | 数据盘挂载点 | |--------|---------|--------------| | node1 | 192.168.1.42 | /mnt/disk1 ~ /mnt/disk8 | | node2 | 192.168.1.43 | /mnt/disk1 ~ /mnt/disk8 | | node3 | 192.168.1.44 | /mnt/disk1 ~ /mnt/disk8 | > **注意**:请根据你的实际 IP 地址替换。 --- ## 2. 磁盘准备与挂载 此步骤在**所有三个节点**上分别执行。 ### 2.1 查看磁盘列表 ```bash lsblk ``` 预期输出应包含系统盘(sda)和 8 块数据盘(sdb ~ sdi)。 ### 2.2 格式化数据盘为 XFS ```bash for disk in sdb sdc sdd sde sdf sdg sdh sdi; do mkfs.xfs -f /dev/$disk done ``` ### 2.3 创建挂载点 ```bash for i in {1..8}; do mkdir -p /mnt/disk$i done ``` ### 2.4 临时挂载并设置优化参数 ```bash mount /dev/sdb /mnt/disk1 mount /dev/sdc /mnt/disk2 mount /dev/sdd /mnt/disk3 mount /dev/sde /mnt/disk4 mount /dev/sdf /mnt/disk5 mount /dev/sdg /mnt/disk6 mount /dev/sdh /mnt/disk7 mount /dev/sdi /mnt/disk8 for i in {1..8}; do mount -o remount,noatime,nodiratime /mnt/disk$i done ``` ### 2.5 获取 UUID 并写入 fstab ```bash blkid | grep -E 'sdb|sdc|sdd|sde|sdf|sdg|sdh|sdi' ``` 编辑 `/etc/fstab`,为每个磁盘添加一行(使用你自己的 UUID): ``` UUID=8ac8649a-... /mnt/disk1 xfs defaults,noatime,nodiratime 0 0 UUID=95a4dee5-... /mnt/disk2 xfs defaults,noatime,nodiratime 0 0 ... ``` ### 2.6 验证挂载 ```bash mount -a df -h | grep /mnt/disk ``` 应看到 8 行输出,每行对应一个磁盘。 --- ## 3. 主机名与网络配置 ### 3.1 设置主机名 - **node1**:`hostnamectl set-hostname node1` - **node2**:`hostnamectl set-hostname node2` - **node3**:`hostnamectl set-hostname node3` ### 3.2 配置 /etc/hosts(所有节点相同) ```bash cat >> /etc/hosts < /etc/default/minio < MINIO_STORAGE_CLASS_STANDARD="EC:4" 为8+4 如需 4+2 可改为 EC:2 > **注意**:三个节点的 `MINIO_VOLUMES` 必须完全相同。 --- ## 6. Systemd 服务配置 ### 6.1 创建服务文件 ```bash cat > /etc/systemd/system/minio.service < **关键**:`EC:4` 表示纠删码配置为 8+4(因为每个纠删集 12 盘,4 校验盘)。 ### 8.4 访问 Web 控制台 浏览器打开 `http://node1:9001`(或任意节点 IP),使用 `minioadmin` / `minioadmin123` 登录。 --- ## 9. 常见故障排查 ### 9.1 启动失败:`lookup node1: no such host` **原因**:主机名解析失败。 **解决**:检查 `/etc/hosts` 是否包含所有节点映射,并验证 `ping node1` 能通。 ### 9.2 集群无法形成:节点间网络不通 **原因**:防火墙未放行 9000/9001 端口。 **解决**:执行第 7 节的防火墙配置,或用 `telnet node1 9000` 测试连通性。配置 setenforce 0 ### 9.3 权限错误:`Permission denied` 写入磁盘 **原因**:MinIO 进程(用户 minio-user)无权写入挂载点。 **解决**:`chown -R minio-user:minio-user /mnt/disk*` ### 9.4 纠删码不是 EC:4(显示 EC:0 或 EC:2) **原因**:磁盘数量或分布不符合自动纠删集要求。 **解决**:确保每个节点的磁盘路径正确,且 `MINIO_VOLUMES` 使用通配符形式 `http://node{1...3}/mnt/disk{1...8}`。 ### 9.5 查看详细日志 ```bash journalctl -u minio -n 100 --no-pager ``` --- ## 10. 附录:命令速查 | 操作 | 命令 | |------|------| | 启动 MinIO | `systemctl start minio` | | 停止 MinIO | `systemctl stop minio` | | 重启 MinIO | `systemctl restart minio` | | 查看状态 | `systemctl status minio` | | 查看实时日志 | `journalctl -u minio -f` | | 查看集群信息 | `mc admin info myminio` | | 列出所有桶 | `mc ls myminio` | | 创建桶 | `mc mb myminio/new-bucket` | | 上传文件 | `mc cp localfile myminio/bucket/` | | 下载文件 | `mc cp myminio/bucket/file ./` | | 删除桶 | `mc rb myminio/bucket` | | 压力测试 | `warp mixed --host=... --analyze.v` | --- ## 文档结束 你现在拥有一个完全可用的 MinIO 生产级集群,具备 EC:8+4 数据保护能力。如需进一步调优或扩展,请参考 [MinIO 官方文档](https://min.io/docs/)。