最直接方式是检查/proc/mounts或用mount|grep筛选,更可靠的是timeout 5 ls /mnt/dist测试访问;需捕获“stale file handle”等分布式存储特有错误;失败后可lazy umount并重挂,配合日志告警与crontab定时执行。

检测挂载点是否存活
最直接的方式是检查 /proc/mounts 或使用 mount | grep 筛选目标挂载路径,但更可靠的是执行一次轻量级访问——比如读取挂载点下的一个已知小文件(如 .mounted_ok)或用 stat 获取目录元数据。若命令超时或返回非零码,基本可判定挂载异常。
识别分布式存储特有的挂载失效特征
不同于本地文件系统,CephFS、GlusterFS、NFSv4.1+ 等常出现“stale file handle”、“Connection timed out”或卡在 hung task 状态。脚本中应捕获这些关键词:
- 对 NFS:检查 cat /proc/mounts | grep nfs 后接 showmount -e $server 验证服务可达性
- 对 CephFS:运行 ceph fs status 和 df -h /mnt/ceph,关注 HEALTH_WARN 或 Input/output error
- 通用判断:用 timeout 5 ls /mnt/dist > /dev/null 2>&1 设定操作上限,避免脚本长期阻塞
集成告警与自动恢复(可选)
检测失败后,先尝试安全卸载再重挂(仅适用于无活跃IO的场景):
- 执行 umount -l /mnt/dist(lazy unmount 避免僵死)
- 调用原始挂载命令(建议从 /etc/fstab 解析或复用独立配置文件)
- 告警建议走轻量通道:写入本地日志 + logger -t mountwatch,或调用 curl 推送企业微信/钉钉机器人(附主机名、时间、错误摘要)
部署为定时任务并守护自身运行
用 crontab -e 添加每 2–5 分钟检测项,例如:
*/3 * * * * /opt/bin/check-dist-mount.sh >> /var/log/mountwatch.log 2>&1同时在脚本开头加入锁机制(如 flock -n /tmp/mountcheck.lock),防止上一轮未结束时新实例并发执行;结尾清理临时状态,保持轻量稳定。











