主备切换后必须验证存储挂载可用性而非仅确认vip漂移:需检查挂载状态、执行读写测试、校验数据一致性,并将全流程嵌入keepalived通知脚本中闭环执行。

主备切换后,存储挂载是否正常直接决定服务能否真正恢复——VIP漂移成功不等于NFS或共享存储可用。必须在Keepalived切换完成后,主动验证挂载点状态、文件系统可写性及数据一致性,不能只依赖IP漂移。
检查挂载点是否存在且已挂载
切换脚本或vrrp_notify脚本中应包含挂载状态校验逻辑:
- 用 mount | grep "/mnt/nfs" 或 findmnt /mnt/nfs 确认目标目录是否已挂载到预期的NFS服务器IP(如192.168.254.100)
- 若未挂载,需自动执行 mount -t nfs 192.168.254.100:/global /mnt/nfs -o rw,hard,intr,noatime
- 避免仅靠
/etc/fstab自动挂载:系统启动时可能网络未就绪,导致挂载失败且无重试机制
验证挂载内容可读可写
仅“挂载成功”不够,需模拟真实业务行为检测可用性:
- 在挂载点下创建临时测试文件:touch /mnt/nfs/.health_check_$(date +%s) 2>/dev/null
- 立即读取并删除:ls -l /mnt/nfs/.health_check_* && rm -f /mnt/nfs/.health_check_*
- 任一环节失败(权限拒绝、stale file handle、timeout),说明NFS服务异常或导出配置有误,应触发告警并阻止服务启动
同步状态与DRBD/文件一致性校验(如使用)
若底层采用DRBD+ext4/XFS等块级同步方案,切换后还需确认数据同步完成:
- 运行 drbdadm status r0,确保角色为 Primary/UpToDate,而非 Secondary/Inconsistent
- 对XFS文件系统,可执行 xfs_info /mnt/nfs 确认挂载参数与预期一致(如logbsize、agcount)
- 若使用rsync或inotify同步,建议在挂载后比对关键目录的 md5sum /mnt/nfs/common/tools/* 与基准值
集成到Keepalived通知流程
将上述检测嵌入Keepalived的 vrrp_notify 脚本中,例如:
- notify_master:执行挂载 → 健康写入测试 → 启动NFS服务 → 检查exportfs -v 输出
- notify_backup:卸载旧挂载 → 停止NFS服务 → 清理临时文件
- 所有步骤返回非0即中断流程,并记录日志到 /var/log/keepalived-switch.log
不复杂但容易忽略——挂载是动作,可用才是结果。每次切换都应走完“挂载→探测→验证→就绪”闭环,而不是只看VIP是否飘过去了。










