# 工具部署MinIO

工具类型: shell 脚本

文档更新: 2025-02-22 16:43:06

适用场景: 非云化产品的的私有化部署(自建环境)

# 免责申明和使用须知

  • 1.工具定位声明

    • 本工具为 辅助部署工具,旨在帮助快速搭建云原生环境所依赖的中间件(包含并不仅限于Kubernetes、Nacos、Kafka等),便于项目组快速部署微服务应用。
    • 不承诺提供中间件的长期完整维护、支持或安全保障。
  • 2.开源组件免责声明

    • 本工具使用的 Kubernetes、etcd、calico、Nacos、Kafka等组件均为开源软件,受各自开源许可证保护。
    • 本工具 不修改、不篡改 任何开源组件,仅作为安装和部署的辅助工具。
    • 使用本工具即表示您已阅读并同意相关开源组件的 使用许可协议。
  • 3.安全与责任声明

    • 本工具 不承担 因使用过程中出现的安全问题、系统崩溃、数据丢失等后果的责任。
    • 建议用户自行评估部署环境的安全性,并根据自身需求选择合适的版本和配置。
  • 4.不提供长期维护

    • 本工具仅为临时部署工具,不承诺对中间件进行持续更新、补丁修复、安全处置和兼容性支持。
    • 用户应自行关注官方更新,并根据实际需要决定是否升级或更换工具。
  • 5.商业使用提醒

    • 若您将本工具用于 商业环境,请确保所有使用组件符合其 开源许可证,并遵守相关法律法规。
    • 本工具不提供任何形式的商业支持或担保。
  • 6.用户自主决策

    • 本工具仅供参考和学习使用,最终部署方案由用户自行决定。
    • 在使用前,请确保您具备足够的技术能力,并了解Kubernetes、Nacos、Kafka等等云原生组件的运行机制和配置方法。

# 相关下载

安装工具: https://pan.baidu.com/s/1cp8zb9ifxSk0-C8FfHw6tg?pwd=2024

推荐使用控制台具备全功能菜单的最后一个版本: RELEASE.2025-04-22T22-12-26Z

# 工具安装部署

# 环境准备要求

MinIO工具部署原理是:[MinIO主机] —-SSH远程部署—-> [MinIO单机/MinIO集群]

故,如果是单机,就将工具放在当前单机服务器上;如果是集群,就将工具放在集群第一个节点上,其余服务器确保SSH端口互通,工具自动部署。

# 准备工具安装包

将工具安装所需包上传到服务器任意位置,如 /seeyon/scripts/minio ,安装包包含两个文件(amd是X86,arm是ARM架构,按需选择上传):

上传后,解压安装包,其中.7z文件需要安装解压命令,如果操作系统没有,也可以在windows电脑解压然后改成zip再上传:

tar -xf multi-install-minio-amd64.tgz
7z x minio-binaries-20250422-amd64.7z

# 如果是全量包 不需要再下载和解压 minio-binaries-20250422-amd64.7z

1756184740512.png

# 运维机配置工具参数

vim multi-install-minio.sh

参数说明:

  • 具体参数解读,可见安装工具云盘地址里面的部署视频。
  • disks{"/dev/sdb"}和fsFormat="xfs"参数是主动格式化选项,需要确保minio独立服务器独立数据盘存储,工具会对数据盘进行格式化;个人单机环境不要调整,更不要设置成系统盘地址
  • 单机和集群环境,都需要配置服务器的SSH信息,要求每台服务器的SSH信息保持一致
  • 安装工具默认已经提供了桶的初始化信息,可以直接复用。

1756185303929.png

# 执行脚本工具

1、直接运行.sh不会执行安装,脚本工具会输出用法供参考:

bash multi-install-minio.sh

一般单机部署选择:单节点单设备;集群部署选择:多节点多设备。 生产环境默认推荐集群模式,以确保对象存储的高可用能力。

1756186413047.png

2、运行部署命令,参考上一步的用法信息,执行部署命令。 如单机部署执行:

bash multi-install-minio.sh i ss

部署过程中,如缺少依赖,按工具提示自行安装依赖再重新部署。

3、部署完成,注意记录部署信息,供后续配置使用

1756188555443.png

4、访问MinIO管理控制台效果:

1756189871811.png

# 日常运维

1、部署脚本目录下 /document/v8-minio.txt 存放了桶信息。

2、部署脚本目录下 document/deploy-minio.info 存放了minio的http和api访问地址及帐号密码。

3、服务启停:

启动systemctl start minio
停止systemctl stop minio
重启systemctl restart minio
查看状态systemctl status minio

# 单机部署截图

1754329010364.png

# 集群部署截图

1754328866578.png

# 附录

在MinIO集群中扩容磁盘需要遵循特定的规则,以确保数据均衡和纠删码(Erasure Coding)的有效性。以下是扩容磁盘的关键步骤和要求:


# 一、扩容磁盘的基本规则

  1. 扩容单位 MinIO要求以纠删码组(Erasure Set)为单位扩容,且扩容后需保持每组磁盘数量一致

    • 默认情况下,纠删码组大小为 4到16块磁盘(必须跨节点分布)。
    • 例如:初始集群为4节点×2磁盘=8块,若默认纠删码组大小为4,则共有2个纠删码组(每组4块,跨4节点)。
  2. 扩容磁盘数量要求

    • 必须成组扩容:每次扩容的磁盘数需是纠删码组大小的整数倍。
      • 若纠删码组大小为4,则每次至少扩容4块(例如:+4、+8、+12等)。
    • 必须均匀分布到所有节点:新磁盘需在所有节点间均衡添加。
      • 例如:4节点集群扩容4块磁盘 → 每节点新增1块磁盘。
  3. 扩容后磁盘数量限制

    • 单个MinIO集群最多支持32个节点,每个节点最多16块磁盘(总磁盘数≤512块)。

# 二、具体扩容步骤

# 场景示例

初始集群:4节点,每节点2块100G磁盘(共8块,默认2个纠删码组,每组4块)。 目标:扩容到每节点4块磁盘(共16块)。

# 步骤1:准备新磁盘
  • 确保每个节点新增的磁盘容量和类型与原磁盘一致(推荐)。
  • 例如:每节点新增2块100G磁盘(共+8块)。
# 步骤2:动态扩容(无需停机)
  1. 扩展磁盘目录 修改MinIO启动命令,将新磁盘路径加入原有命令:

    # 原命令(假设):
    minio server http://node{1...4}/data/{1...2}/disk
    
    # 扩容后命令(每节点新增2块磁盘):
    minio server http://node{1...4}/data/{1...4}/disk
    
    • 重启MinIO服务(滚动重启节点,避免服务中断)。
  2. 自动数据均衡

    • MinIO会自动将数据均衡分布到新磁盘,无需手动干预。
    • 通过监控工具(如mc admin info)观察均衡进度。
# 步骤3:验证扩容
# 检查集群状态和可用容量
mc admin info myminio
  • 确认新磁盘已加入,且Usable Space按纠删码比例增加。

# 三、扩容后的容量计算

  • 初始容量:8块×100G = 800G,默认EC:4(4数据+4校验),可用400G。
  • 扩容后:16块×100G = 1600G,EC组仍为4数据+4校验(每组8块,共2组),可用800G。
    • 可用容量公式(数据分片数 / 总磁盘数) × 总原始容量

# 四、注意事项

  1. 不可缩减磁盘
    MinIO不支持减少磁盘数量,扩容后无法回退。

  2. 节点扩展 vs 磁盘扩展

    • 增加节点:需保持每节点磁盘数一致(如从4节点×2盘扩容到8节点×2盘)。
    • 增加磁盘:需保持所有节点同步增加(如4节点×2盘→4节点×4盘)。
  3. 性能影响

    • 扩容期间可能短暂影响I/O性能(数据均衡占用资源)。
    • 建议在低峰期操作。

# 五、总结

  • 扩容要求:成组(纠删码组倍数)、均匀分布、同类型磁盘。
  • 操作步骤:修改启动命令→滚动重启→自动均衡。
  • 容量增长:可用空间按纠删码比例线性增加(如默认EC:4下,50%利用率)。

通过遵循上述规则,可以安全地扩展MinIO集群的存储容量。

编撰人:yangfc、het