CentOS 上 MinIO 存储空间扩容指南
一、先判断你的部署形态
- 单机模式:MinIO 数据目录位于本机某个挂载点(如 /data、/home/minio)。扩容思路是先在操作系统层面扩展该磁盘/分区/LVM 卷,然后让 MinIO 继续使用该目录。
- 分布式模式:扩容通常通过在集群中新增一整套“服务器池(Server Pool)”,即新增相同数量的节点与相同数量的磁盘,并按规则修改启动命令与负载均衡;不建议在现有池中只加单块盘或单个节点。
二、单机模式扩容步骤(CentOS 7/8,LVM + XFS 场景)
- 步骤概览
- 在虚拟化/存储侧给虚机或磁盘扩容;2) 扩展系统分区或新增分区并加入 LVM;3) 扩展逻辑卷(LV)与文件系统;4) 验证并重启 MinIO。
- 操作要点(示例命令,按你的实际盘符与 VG/LV 名称调整)
- 查看磁盘与分区
- 扩展 LVM 物理卷(新增分区后)
- parted /dev/sda(新建如 sda3)
- pvcreate /dev/sda3
- vgextend centos /dev/sda3
- 扩展逻辑卷(示例把 LV 扩展到 500G)
- lvextend -L 500G /dev/centos/data
- 扩展 XFS 文件系统(在线生效)
- 验证
- 重启 MinIO(systemd 示例)
- 说明
- 若原数据目录在 /home,也可先缩减 /home 腾出空间,再把新增空间并入新的 /data LV,用于 MinIO。上述流程(缩减 home、创建 sda3、vgextend、lvcreate、mkfs.xfs、mount)在实务中已验证可行。
三、分布式模式扩容步骤(推荐按“服务器池”对等扩容)
- 扩容原则
- 以“服务器池”为单位扩容:新增节点数与磁盘数需与原池对等(如原集群 4 节点 × 4 盘,扩容新增 4 节点 × 4 盘或为其倍数),以维持一致的纠删码/副本 SLA;单节点/单盘直扩不被推荐。
- 实施要点
- 准备新节点:相同 OS/内核/时间同步、相同磁盘数量与路径(如 /mnt/disk{1…4})、相同 MINIO_ROOT_USER/PASSWORD,主机名有序(如 minio01…minio04)。
- 配置启动参数:在环境变量或启动命令中新增一套 server pool 地址,例如
- MINIO_VOLUMES=“http://minio{1…4}:9000/mnt/disk{1…4}/minio http://minio{5…8}:9000/mnt/disk{1…4}/minio”
- MINIO_OPTS=“–console-address :9001”
- 负载均衡:更新 Nginx/ELB upstream,加入新节点,保持 9000/9001 端口一致。
- 滚动/批量重启:按池依次重启所有 MinIO 实例,使新池生效并完成数据放置策略的自动均衡。
- 容量与均衡:新对象将按各池可用空间比例分布,老对象在后台逐步再平衡,无需人工拷贝。
四、常见坑与优化建议
- 文件系统与 Inode
- 小文件极多时,ext4 可能出现 inode 100% 而报 “No space left on device”。建议生产使用 XFS,并可按需调整 inode 比例:
- 查看:xfs_info /mountpoint
- 调整:xfs_growfs -m 10 /mountpoint(示例将 inode 占比调至 10%)
- 时间同步
- 分布式集群务必保证节点间 NTP 时间一致,避免一致性与时序问题。
- 容量阈值与归档
- 当集群使用率超过 80% 时,优先考虑扩容或归档。对不常访问数据可用 mc 工具做自动/定时归档,降低成本并释放在线容量。