我们有一个使用 DRBD、心跳和 nfs 暴露给客户端的高可用性 NFS 环境(类似于以下https://help.ubuntu.com/community/HighlyAvailableNFS)。这似乎是执行 HA nfs 的一种相当常见且得到良好支持的方法,并且对我们来说效果非常好,有一个期望。
当心跳执行切换时,nfs 客户端全部挂起约 60-120 秒。我可以看到心跳仅需 5-10 秒即可完成接管并启动 nfs(我甚至可以手动挂载它)。但连接的客户端似乎要等待某种超时才能重新建立工作连接。
我尝试了以下操作但没有成功;
- 确保 /var/lib/nfs 存储在 drdb 磁盘上并符号链接回 /var/lib
- UDP 或 TCP 客户端连接
- NFS 服务器导出定义了导出中的 fsid。
- 在 mount 中使用客户端 timeo=
- 硬/软安装
设置如下;
- NFSv4
- Ubuntu LTS 服务器和客户端
- 当前客户端挂载选项=proto=tcp、noauto、bg、intr、hard、noatime、nodiratime、nosuid、noexec
笔记
- 我注意到 /var/lib/nfs/rmtab 始终为空,但我不知道为什么。这可能是原因吗?
- 客户端是无 GUI 的 ubuntu 10.4 LAMP 堆栈服务器。
- 当客户端停止时,任何试图访问共享的程序都会停止。例如,执行“df”将使 ssh 会话在 nfs 安装行上挂起,直到 nfs 恢复。
欢迎任何建议。
答案1
如果您使用 GUI 用户登录(例如 LTSP)运行 Ubuntu,则很可能是客户端存在问题。
Gnome-Settings-Daemon 有一个坏习惯,就是在 NFS 安装中四处搜索,检查它找到的任何垃圾文件夹的状态。这个问题存在于 Ubuntu 9.10 中,可能也存在于 10.04 中。
这是 Ubuntu 发行版中的硬编码问题,在 9.x 版本中被错误地删除了。据报道,这个问题在 Ubuntu 的后续版本中得到了修复,一个常见症状是平均负载过高,而 NFS 挂载无法访问。