目录
🚀 开篇导读:构建企业级高可用对象存储的必备指南
在分布式系统日益普及的今天,如何搭建一套高性能、高可用且云原生友好的对象存储系统,成为许多企业和技术团队面临的重要课题。MinIO 的多节点多磁盘部署模式(MNMD:Multi-Node Multi-Drive),正是为此而生。
本教程手把手教你如何在多台服务器上构建 MinIO 分布式集群,从底层磁盘挂载、系统服务配置,到最终集群测试验证,每一步都覆盖详尽,实战性强。
你将掌握以下关键能力:
- ✅ 部署一套具备纠删码冗余保护的 MinIO 集群,可容忍半数节点或磁盘宕机仍能读数据
- ✅ 快速上手磁盘自动挂载脚本,提升系统自动化与可靠性
- ✅ 配置 MinIO 为系统服务并实现开机启动,贴合生产环境需求
- ✅ 使用 MinIO 客户端
mc
进行对象存储管理与集群验证 - ✅ 了解 MinIO 适用与非适用场景,避免踩坑
但这只是开始——深入生产落地,你还可以继续探索:
- 🔐 安全加固:启用 HTTPS、IAM 权限管理、桶级访问策略
- 🌐 多地容灾:配置 Site Replication 实现跨站点对象同步与灾备
- 📊 监控与报警:集成 Prometheus + Grafana 构建可视化运维平台
- ☸️ Kubernetes 部署:使用 MinIO Operator 无缝接入容器编排平台
- ♻️ 对象治理:生命周期策略、版本控制、对象加密……全面提升数据治理能力
如果你是一名后端工程师、运维专家、数据平台构建者或 DevOps 从业者,这将是你迈向企业级对象存储架构的重要一课。
将这段内容放在教程前,可以让读者快速把握教程的重点与深度,同时也为后续扩展埋下伏笔,引导读者持续关注和学习。
如需我帮你把整篇文章整体结构化整理(如:添加目录、章节导航、Markdown 样式优化等),也可以继续告诉我。
官网地址:https://min.io/docs/minio/linux/operations/install-deploy-manage/deploy-minio-multi-node-multi-drive.html
一、MinIO 多节点多磁盘安装步骤
1. 环境准备
-
操作系统:建议使用 Linux Ubuntu 24.04
-
硬件: 4C 8G 40G*4 4台
-
说明:这里只是演示如何搭建,如果生成环境使用务必保持每个节点内存不低于32GB, CPU建议12核以上,磁盘使用SSD。
ip hostname 172.17.73.143 minio.example1.com 172.17.73.144 minio.example2.com 172.17.73.145 minio.example3.com 172.17.73.146 minio.example4.com 1.1 磁盘格式化及挂载
format_and_mount.sh
#!/bin/bash set -e # 检查参数 if [ $# -ne 2 ]; then echo "用法: $0 <磁盘设备名> <挂载点目录>" echo "示例: $0 /dev/vdb /mnt/data1" exit 1 fi DISK_DEVICE="/dev/$1" MOUNT_POINT=$2 # 检查磁盘是否存在 if [ ! -b "$DISK_DEVICE" ]; then echo "错误:设备 $DISK_DEVICE 不存在。" exit 2 fi # 创建挂载目录 echo "创建挂载目录 $MOUNT_POINT..." mkdir -p "$MOUNT_POINT" # 格式化磁盘为XFS echo "格式化 $DISK_DEVICE 为 XFS 文件系统..." mkfs.xfs -f "$DISK_DEVICE" # 获取UUID UUID=$(blkid -s UUID -o value "$DISK_DEVICE") if [ -z "$UUID" ]; then echo "获取 UUID 失败,退出。" exit 3 fi # 挂载磁盘 echo "挂载 $DISK_DEVICE 到 $MOUNT_POINT..." mount "$DISK_DEVICE" "$MOUNT_POINT" # 备份 fstab 并写入自动挂载配置 echo "备份 /etc/fstab 为 /etc/fstab.bak..." cp /etc/fstab /etc/fstab.bak echo "写入开机自动挂载配置..." grep -q "$UUID" /etc/fstab || echo "UUID=$UUID $MOUNT_POINT xfs defaults 0 0" >> /etc/fstab echo "挂载完成,验证挂载信息:" df -h | grep "$MOUNT_POINT" echo "✅ 操作完成。"
使用lsblk来获取没有挂载的磁盘
root@iZbp19o3mb8aenc710gma6Z:~# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS vda 253:0 0 40G 0 disk ├─vda1 253:1 0 1M 0 part ├─vda2 253:2 0 200M 0 part /boot/efi └─vda3 253:3 0 39.8G 0 part / vdb 253:16 0 40G 0 disk vdc 253:32 0 40G 0 disk vdd