我有一台存储文件的服务器 A,还有一台通过 NFS-v3 挂载到服务器 A 的服务器 B。当服务器 A 由于任何原因无法响应时,在 B 上发出的任何读取请求都会挂起很长时间(几分钟)。
我需要这些请求非常快地失败(1-2秒)。
我尝试调整 timeo、retrans、retry、soft/hard、sync/async 等参数,但效果不佳,这似乎是一个已知的未解决的问题。我总是得到一个非常长的超时。
有没有针对 NFS 客户端的修复程序,或者任何其他用户空间客户端?
是否有任何用于文件共享的网络协议(NFS 除外)可以正确处理断开的连接和不可用的服务器?
答案1
NFS 是一种非常可靠的协议,尤其是在处理较小的设置(20 台或更少的服务器)时。我会使用软挂载来避免服务器 A 发生故障时出现问题。如果您想快速断开挂载,快速使用 iptables 应该会导致连接相当快地超时并允许您卸载(假设 10.10.0.1 是您的 NFS 服务器 A 的 IP):
iptables -A OUTPUT -d 10.10.0.1 -j REJECT
还有其他几种文件共享协议,但没有一种像 NFS、IHMO 那样普遍。
答案2
您尝试过 afs 或 gluster 吗?
(@vmfarms sshfs 如果您不介意性能问题,这是一个很好的解决方案。但它会给您的网络增加太多开销)