GlusterFS 常用故障处理手册

适用:Replica 复制卷(2副本/3副本);分布式卷无副本,故障直接丢数据,下面方案不适用 术语快速回顾

  • glusterd:管理进程(24007),集群peer、卷元数据管理
  • glusterfsd:brick数据进程,真正读写业务数据
  • AFR:自动文件复制自愈(heal),副本间数据同步
  • split-brain:脑裂,多副本同一文件内容/元数据冲突,无法自动修复

一、节点掉线 / Brick 离线

现象:gluster volume status 显示 brick Transport endpoint not connected / Offline

# 查看状态
gluster peer status
gluster volume status oldqiang01
gluster volume heal oldqiang01 info

情况1:节点只是网络/服务挂了,磁盘brick数据完好(可恢复上线)

  1. 登录故障节点,检查并启动glusterd
systemctl status glusterd
systemctl enable --now glusterd
  1. 排查:主机名解析 /etc/hosts、防火墙24007、brick端口、磁盘是否挂载(brick目录所在分区不能umount)
  2. 等待peer重连,brick自动上线
  3. 查看待修复条目,后台自动heal;大量差异手动触发
gluster volume heal oldqiang01 full
watch gluster volume heal oldqiang01 info

目标:所有brick Number of entries = 0

情况2:节点硬盘损坏、机器报废,brick数据不可读(永久下线)

不能用 replace-brick(replace需要旧brick可读) 操作顺序:

#1 强制移除故障brick
gluster volume remove-brick oldqiang01 glusterfs01:/data1 force
#2 确认brick已从卷列表删除
gluster volume info oldqiang01
#3 故障节点退出集群
gluster peer detach glusterfs01 force
#4 新服务器:安装gluster,peer probe加入集群
gluster peer probe glusterfs04
#5 新节点准备好空brick目录,添加新brick
gluster volume add-brick oldqiang01 glusterfs04:/data1
#6 触发自愈,从正常副本同步全部数据
gluster volume heal oldqiang01 full
#7 监控heal进度直到条目为0
gluster volume heal oldqiang01 info summary

二、Split-Brain 脑裂故障(高危!多副本文件冲突)

现象:heal info 出现split-brain标记,文件无法读写,AFR无法自动自愈

# 查看脑裂文件
gluster volume heal oldqiang01 info split-brain

修复方式:指定源brick作为正确版本覆盖其他副本

# 语法:选定源brick修复单个文件
gluster volume heal oldqiang01 split-brain source-brick glusterfs02:/data1 /wp/test.jpg

批量处理(谨慎!生产业务低峰,确认源数据正确)

# 将所有脑裂文件,以 glusterfs02 brick 的版本为准修复
gluster volume heal oldqiang01 split-brain source-brick glusterfs02:/data1

预防:2副本极易脑裂;推荐3副本,或2副本+arbiter仲裁节点。

三、节点丢失卷元数据(节点重启后看不到volume)

现象:peer状态connected,但gluster volume info在该节点看不到卷;/var/lib/glusterd/vols丢失/损坏

只修复卷配置元数据,不同步业务文件数据故障节点执行,从正常peer拉取卷元数据:

gluster volume sync glusterfs02

⚠️ 不要在正常节点自己sync自己,会报 sync from localhost not allowed

四、peer probe 失败:Connection failed

Connection failed. Please check if gluster daemon is operational.

排查顺序:

  1. 两端 systemctl status glusterd 确认running
  2. 双向ping主机名,/etc/hosts配置正确(gluster依赖hostname)
  3. 防火墙放行glusterfs服务(24007/tcp)
firewall-cmd --add-service=glusterfs --permanent
firewall-cmd --reload
  1. nc测试端口连通
nc -zv glusterfs02 24007
  1. 检查SELinux,临时setenforce 0测试

五、客户端挂载失败 / 挂载后卡住

高可用挂载写法

mount -t glusterfs glusterfs01,glusterfs02,glusterfs03:/oldqiang01 /mnt/gluster

/etc/fstab(必须加_netdev)

glusterfs01,glusterfs02,glusterfs03:/oldqiang01  /mnt/gluster glusterfs defaults,_netdev 0 0

故障排查:

  1. 客户端能解析所有集群节点hostname
  2. 客户端能访问集群24007端口
  3. 检查卷状态,确认至少一个brick组在线满足quorum
  4. 挂载卡住:检查网络、防火墙,dmesg看gluster客户端日志

六、brick目录磁盘满故障

现象:写入报错,heal卡住

  1. 清理brick所在磁盘空间
  2. 不要直接删除brick目录内文件!不要手动操作brick底层文件,会直接损坏副本一致性
  3. 空间释放后,heal会继续自动修复
  4. 扩容方案:add-brick新增brick,三副本自动均衡

七、replace-brick 在线替换brick(旧盘可读取场景)

适用:硬盘健康,只是想更换更大磁盘,旧brick可读

# 启动迁移
gluster volume replace-brick oldqiang01 glusterfs01:/data1 glusterfs01:/data2 start
# 查看进度
gluster volume replace-brick oldqiang01 glusterfs01:/data1 glusterfs01:/data2 status
# 迁移100%后提交
gluster volume replace-brick oldqiang01 glusterfs01:/data1 glusterfs01:/data2 commit
# 异常终止(未commit前)
gluster volume replace-brick oldqiang01 glusterfs01:/data1 glusterfs01:/data2 abort

❌ brick离线不可读时禁止使用replace-brick

八、常用排查命令汇总(故障排查三板斧)

#1 集群节点peer状态
gluster peer status

#2 卷整体信息,查看brick列表和副本数
gluster volume info oldqiang01

#3 brick进程在线状态(最重要)
gluster volume status oldqiang01

#4 查看自愈任务,待同步文件
gluster volume heal oldqiang01 info

#5 查看脑裂文件
gluster volume heal oldqiang01 info split-brain

#6 查看卷日志
tail -f /var/log/glusterfs/glusterd.log
tail -f /var/log/glusterfs/bricks/data1-glusterfs01.log

⚠️ 生产禁忌(非常重要)

  1. 禁止手动直接修改brick底层目录里的文件(/data1/wp/xxx),极易脑裂、破坏AFR元数据;所有读写走gluster挂载点
  2. brick磁盘不要随便umount,先下线卷/移除brick
  3. 业务高峰不执行heal full、replace-brick、add-brick(大量小文件会拖慢业务)
  4. 不要随意重启多台节点,防止quorum不满足,卷不可读写

快速故障判断流程(思维导图式)

  1. gluster peer status → 判断集群节点通信是否正常
  2. gluster volume status → 判断brick是否在线
  3. heal info → 判断是否存在待同步文件
  4. heal info split-brain → 判断脑裂
  5. 日志/网络/防火墙 → 定位通信问题
上一篇