Skip to content

附录 C 故障案例库

C.1 卷离线

现象

bash
gluster volume info gv0
# Status: Stopped

原因

  • glusterd 服务停止
  • 所有 brick 目录不可访问
  • 集群 quorum 不足

解决

bash
# 启动 glusterd
systemctl start glusterd

# 启动卷
gluster volume start gv0

# 检查 brick
gluster volume status gv0

C.2 Brick 损坏

现象

bash
gluster volume status gv0
# 某个 brick 显示 Offline

原因

  • 磁盘故障
  • brick 目录被误删除
  • 节点网络不可达

解决

  1. 修复节点或更换磁盘
  2. 重新创建 brick 目录
  3. 启动卷并触发 heal
bash
gluster volume start gv0 force
gluster volume heal gv0 full

C.3 Ganesha 无法导出

现象

bash
showmount -e localhost
# clnt_create: RPC: Program not registered

原因

  • Ganesha 服务未启动
  • ganesha.conf 配置错误
  • GlusterFS 卷未启动

解决

bash
# 检查服务
systemctl status nfs-ganesha

# 检查配置语法
ganesha.nfsd -f /etc/ganesha/ganesha.conf -L /var/log/ganesha/ganesha.log -N DEBUG

# 检查 GlusterFS 卷
gluster volume info gv0

# 重启 Ganesha
systemctl restart nfs-ganesha

C.4 VIP 漂移异常

现象

停止 Master 节点的 Ganesha 后,VIP 没有漂移到 Backup。

原因

  • Keepalived 未运行
  • VRRP 被防火墙拦截
  • 健康检查脚本返回 0
  • virtual_router_id 冲突

解决

bash
# 检查 Keepalived
systemctl status keepalived
journalctl -u keepalived -f

# 检查 VRRP 广播
tcpdump -i eth0 vrrp

# 检查健康检查脚本
/etc/keepalived/check_ganesha.sh
echo $?

# 检查配置
keepalived -t

C.5 客户端 IO 卡住

现象

客户端读写 NFS 时长时间无响应。

原因

  • 网络不稳定
  • 使用了 hard 挂载但服务器无响应
  • GlusterFS heal 任务占用资源
  • 磁盘 IO 达到瓶颈

解决

  1. 检查网络连通性
  2. 检查 Ganesha 和 GlusterFS 服务状态
  3. 检查 heal 状态
  4. 检查磁盘 IO
bash
# 客户端检查
mount | grep nfs
cat /proc/self/mountstats

# 服务端检查
gluster volume heal gv0 info
iostat -x 1

C.6 脑裂修复

现象

bash
gluster volume heal gv0 info split-brain
# 显示 split-brain 文件

解决

bash
# 选择最新时间戳的副本
gluster volume heal gv0 split-brain latest-mtime <file-path>

# 或选择指定 brick
gluster volume heal gv0 split-brain source-brick <brick-path> <file-path>

C.7 容量使用不均衡

现象

某些 brick 快满了,其他 brick 还很空。

原因

  • 分布式卷未再平衡
  • 文件大小差异大
  • 新增 brick 后未 rebalance

解决

bash
# 查看容量分布
gluster volume status gv0 detail

# 执行再平衡
gluster volume rebalance gv0 start
gluster volume rebalance gv0 status