基于DRBD的高可用NFS解决方案分析
这篇讲的是如何用 DRBD 和 NFS 搭建高可用文件共享方案的一次实践与踩坑。作者从分析 NFS 协议(特别是 NFSv4 对迁移和故障恢复的定义)出发,设计了一个方案:底层用 DRBD 实时镜像块设备,在其上建立文件系统,再通过 NFS 共享,期望在主机故障时能实现业务无感知的切换。 按照这个思路,作者搭建了测试环境,模拟在线业务时进行 DRBD 倒换、NFS 重启和 IP 漂移。理论上,NFS 协议的“grace time”机制应该能处理服务端重启,让客户端用旧的文件句柄重新连接时依然能定位文件。 但实际测试结果是:客户端报出“NFS句柄无效”的错误。作者分析指出,关键问题在于 DRBD 镜像的块设备在两台主机上各自挂载后,生成的 inode 分配并不一致。尽管文件系统数据完全一样,但 NFS 服务端是通过宿主文件系统看到共享目录的,当发生切换后,对端无法正确解析客户端原有的、基于旧 inode 信息构造的文件句柄,导致访问失败。文章最后也坦诚了验证未能完全成功,并提出了后续可以从 NFS 源码层面探索直接共享 DRBD 设备内容的思路。