主题
附录 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 gv0C.2 Brick 损坏
现象
bash
gluster volume status gv0
# 某个 brick 显示 Offline原因
- 磁盘故障
- brick 目录被误删除
- 节点网络不可达
解决
- 修复节点或更换磁盘
- 重新创建 brick 目录
- 启动卷并触发 heal
bash
gluster volume start gv0 force
gluster volume heal gv0 fullC.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-ganeshaC.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 -tC.5 客户端 IO 卡住
现象
客户端读写 NFS 时长时间无响应。
原因
- 网络不稳定
- 使用了 hard 挂载但服务器无响应
- GlusterFS heal 任务占用资源
- 磁盘 IO 达到瓶颈
解决
- 检查网络连通性
- 检查 Ganesha 和 GlusterFS 服务状态
- 检查 heal 状态
- 检查磁盘 IO
bash
# 客户端检查
mount | grep nfs
cat /proc/self/mountstats
# 服务端检查
gluster volume heal gv0 info
iostat -x 1C.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