本节摘要:分布式部署的关键不是把启动命令写长,而是把三件事在设计阶段定死——每台几块盘、纠删集多大、主机名怎么编址。本节以四节点、每节点四盘的标准配置为蓝本,给出从系统准备到集群成型的完整命令序列,以及纠删集规划的一手权衡。
四台新装的虚拟机到货,规格统一:16 核、64G 内存、每台挂四块 4T 数据盘加一块系统盘。主机名规划为 minio-1 到 minio-4,内网互通。下面这场施工的所有命令,都假设你已完成单机练习——二进制文件与 mc 客户端的存在感,这里不再重复。
动键盘之前先在纸上回答三个问题,答案会直接写进启动命令。
第一问:每台几块盘、总共几盘? 本例 4 节点 4 盘,共 16 盘。MinIO 要求每个节点的盘数一致(或呈规整的倍数关系),参差不齐的盘位会让纠删集编排变得别扭。
第二问:纠删集多大? 纠删集大小必须是 4 到 16 之间的偶数(2 的幂附近最规整),且总盘数能被整除。16 盘可选一个 16 盘大集,或两个 8 盘小集。权衡如下表:
| 方案 | 纠删集 | 容错上限 | 存储利用率(EC 8+4 时) | 恢复风暴面 |
|---|---|---|---|---|
| 单一大集 | 16 盘 | 8 块盘 | 约 66.7% | 大:重构波及全集群盘位 |
| 两个小集 | 8 盘 | 4 块盘 | 约 66.7% | 小:重构只波及本集 |
我们的选择是两个 8 盘小集:故障爆炸半径减半,16 盘大集能扛更多盘同时坏的理论优势,在真实机房里很少兑现——盘的故障相关性(同批次老化、同机箱振动)远比理想模型凶残。这个选择同时决定了可用性下限:任何一个纠删集只要存活分片不低于数据分片数加一,读写就继续。
第三问:主机名怎么编址? 用主机名而不是 IP 写启动参数。节点后续换 IP(机房迁移、网络重构)时,只需改 hosts 或 DNS,启动参数纹丝不动。
第一步:系统准备(四台同步执行)。
# 主机名与解析(每台各自设置对应名字) hostnamectl set-hostname minio-1 cat >> /etc/hosts <<'EOF' 10.0.0.51 minio-1 10.0.0.52 minio-2 10.0.0.53 minio-3 10.0.0.54 minio-4 EOF # 四块数据盘做成 xfs 并挂载到规整目录 # 目录命名纪律:-minio 后缀加序号,四台机器完全一致 for i in 1 2 3 4; do mkfs.xfs -f /dev/sd$(printf "%s" $(echo $i | tr '1-4' 'abcd')) mkdir -p /data/minio$i done # 逐盘 mount 并写入 fstab(此处以 sdb 到 sde 对应 minio1 到 minio4 为例) mount /dev/sdb /data/minio1 && mount /dev/sdc /data/minio2 mount /dev/sdd /data/minio3 && mount /dev/sde /data/minio4
盘符与目录的对应关系务必逐台核对——lsblk 看一遍再挂,盘序错乱是新手集群翻车的头号原因。
第二步:写环境变量文件(四台一致)。与其在启动命令里堆参数,不如交给一个配置文件,systemd 会读它:
# /etc/default/minio —— 四台机器内容完全相同 MINIO_VOLUMES="http://minio-{1...4}/data/minio{1...4}" MINIO_OPTS="--console-address :9001" MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD='Chang3Me!2026'
MINIO_VOLUMES 里的花括号是展开语法:minio-{1...4} 展开为四台主机名,data{1...4} 展开为每台的四个数据目录。整串的含义是"本集群由四台机器、每台四个目录组成"。注意一个容易看漏的点——主机名部分是 minio-(带连字符后缀),目录部分是 minio(不带),两者拼法不同是刻意的,别"顺手统一"。
第三步:systemd 服务单元(四台一致)。2.3 会给出完整单元文件,此处沿用即可——单元文件读 /etc/default/minio 的变量,四台机器装同一份文件,执行 systemctl enable --now minio。
第四步:验收。
# 任一节点执行:集群拓扑与磁盘健康 mc alias set fleet http://10.0.0.51:9000 admin 'Chang3Me!2026' mc admin info fleet # 期望输出要点: # 4 个节点在线、16 块盘全部在线 # 2 个 pool、纠删集大小 8 # 版本号与预期 RELEASE 一致
再传一个大文件到新集群,用 mc stat 查看,输出里的 Erasure info 会标注当前纠删配比——这行字就是 2.2 的验收章。

这张分布图解释了为什么规划纸比命令重要:纠删集的盘自动打散到所有节点,你无法也不需要手动指定"这块盘属于哪个集"——你只决定集的大小,打散是系统的事。若节点数与集大小不成倍数关系,打散比例会有倾斜,机箱级故障的爆炸半径随之变化,这正是"每节点盘数一致"纪律的由来。
集群成型时的另一个隐形决定是纠删配比(数据分片比校验分片)。未显式指定时,MinIO 默认取"一半数据、一半校验"的保守值(16 盘即 8+8),可用性最高、利用率只有一半。若目标是以典型的 8+4 配比运行(利用率 66.7%,可丢任意 4 盘),在建桶前用环境变量把默认配比设好,或建桶时逐桶指定。配比一旦写入对象便跟随其一生——后补只能重写数据。第 3 章会把这笔数学账算透。
集群躯干已成,下一节给它穿上生产的衣裳:证书、负载均衡与开机自启。