Minio双节点(每节点4盘)集群无法启动,报错求助
问题背景
部署2节点(每节点4块磁盘)的Minio集群时,启动后出现主机数校验错误及磁盘在线不足的报错,单节点部署可正常运行。
报错信息
初始报错:
API: SYSTEM()
Time: 07:32:37 UTC 05/18/2023
Error: WARNING: Expected number of all hosts (2) to be remote +1 (2) (*errors.errorString)
5: internal/logger/logger.go:258:logger.LogIf()
4: cmd/peer-rest-client.go:781:cmd.newPeerRestClients()
3: cmd/notification.go:1099:cmd.NewNotificationSys()
2: cmd/server-main.go:278:cmd.initAllSubsystems()
1: cmd/server-main.go:541:cmd.serverMain()
后续循环报错:
API: SYSTEM()
Time: 07:32:40 UTC 05/18/2023
Error: Read failed. Insufficient number of drives online (*errors.errorString)
6: internal/logger/logger.go:258:logger.LogIf()
5: cmd/prepare-storage.go:245:cmd.connectLoadInitFormats()
4: cmd/prepare-storage.go:305:cmd.waitForFormatErasure()
3: cmd/erasure-server-pool.go:107:cmd.newErasureServerPools()
2: cmd/server-main.go:783:cmd.newObjectLayer()
1: cmd/server-main.go:609:cmd.serverMain()
Waiting for a minimum of 4 drives to come online (elapsed 3s)
解决方法
1. 修正集群端点配置
Minio集群要求所有节点能互相访问,启动命令必须包含所有节点的存储端点,不能仅用localhost。示例配置:
# 节点1的command配置 command: server http://node1/data{1..4} http://node2/data{1..4} --console-address ":9001" # 节点2的command需与节点1完全一致 command: server http://node1/data{1..4} http://node2/data{1..4} --console-address ":9001"
确保node1、node2是节点间可解析的主机名或IP,且所有容器处于同一Docker网络。
2. 检查磁盘挂载与权限
- 每个节点的4块磁盘需映射到本地独立目录,示例:
# 节点1的volumes配置 volumes: - /local/node1/data1:/data1 - /local/node1/data2:/data2 - /local/node1/data3:/data3 - /local/node1/data4:/data4
- 给本地挂载目录设置正确权限(Minio容器默认使用UID 10001的用户运行):
chown -R 10001:10001 /local/node1/data* /local/node2/data*
3. 清除旧格式化数据
若之前单节点部署过,磁盘上残留的旧格式信息会导致集群冲突:
- 停止所有容器:
docker-compose down - 删除所有挂载目录下的
.minio.sys文件夹:
rm -rf /local/node1/data*/.minio.sys /local/node2/data*/.minio.sys
- 重新启动集群:
docker-compose up -d
4. 验证节点连通性
在容器内测试节点间网络是否正常:
# 进入节点1容器 docker exec -it minio-node1 ping node2
若ping不通,检查Docker网络配置,确保节点加入同一自定义网桥,而非默认网桥。
内容的提问来源于stack exchange,提问作者Gennadii Belousov

