MinIO 在 CentOS 上的故障排查清单
一、快速定位流程
systemctl status minio、journalctl -u minio -n 50 --no-pager、journalctl -n 100 | grep -E "(minio|killed|oom|error)"。free -h(内存)、df -h(磁盘)、du -sh <数据目录>(数据盘用量)、uptime 与 top -bn1 | head -20(负载与 CPU)。ss -tlnp | grep -E ':9000|:9001',ps aux | grep minio。cat /usr/lib/systemd/system/minio.service、cat /etc/default/minio、ls -ld <数据目录>。telnet/curl),并确认云厂商安全组/本机防火墙已放行。二、常见故障与修复要点
MINIO_VOLUMES、MINIO_ROOT_USER、MINIO_ROOT_PASSWORD、MINIO_OPTS="--console-address :9001";确认服务文件中 EnvironmentFile=-/etc/default/minio 已包含;核对 User/Group 是否存在且对数据目录有权限;执行 systemctl daemon-reload && systemctl restart minio 后复查日志。ss 显示 :9000/:9001 已被占用。处理要点:释放占用进程(ss -tlnp | grep :9000 查 PID,必要时 kill <PID>),或修改 minio.service 中的 --address 与 --console-address 使用未占用端口,重启服务。chown -R minio:minio <数据目录> && chmod -R 755 <数据目录>);若仍异常,临时将 SELinux 设为 permissive 验证是否为 SELinux 问题(setenforce 0),生产环境请改为正确的 SELinux 策略而非长期关闭。firewall-cmd --permanent --zone=public --add-port=9000/tcp --add-port=9001/tcp && firewall-cmd --reload),并同步检查云上安全组/本机 iptables。dd if=/dev/zero of=/swapfile bs=1M count=2048 && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile),并优化应用/清理磁盘,降低内存压力。df -h 与 du -sh 定位大文件/旧日志,清理或扩容;必要时扩容磁盘后重启服务。timedatectl set-ntp true 或 ntpdate 0.asia.pool.ntp.org),确保系统时间准确。三、最小可用配置示例
[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
[Service]
User=minio
Group=minio
EnvironmentFile=/etc/default/minio
ExecStartPre=/bin/bash -c ". /etc/default/minio; if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set\"; exit 1; fi"
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES --address 0.0.0.0:9000 --console-address :9001
Restart=always
LimitNOFILE=65536
TasksMax=infinity
TimeoutStartSec=300
TimeoutStopSec=infinity
SendSIGKILL=no
[Install]
WantedBy=multi-user.target
MINIO_ROOT_USER=admin
MINIO_ROOT_PASSWORD=YourStrongP@ssw0rd
MINIO_VOLUMES="/data/minio"
MINIO_OPTS="--console-address :9001"
mkdir -p /data/minio
chown -R minio:minio /data/minio
chmod -R 755 /data/minio
systemctl daemon-reload
systemctl enable --now minio
firewall-cmd --permanent --zone=public --add-port=9000/tcp --add-port=9001/tcp
firewall-cmd --reload
该示例确保服务以 minio 用户运行、加载环境变量、监听 0.0.0.0:9000/9001,并完成了最小权限与防火墙放行。
四、Docker 部署的专项排查
docker run -p 9000:9000 -p 9001:9001 -v /mnt/data:/data:z -e "MINIO_ROOT_USER=admin" -e "MINIO_ROOT_PASSWORD=..." minio/minio server /data --console-address ":9001"。