只考虑 NFSv4,NFSv4 强制要求 TCP
参考资料
https://docs.aws.amazon.com/efs/latest/ug/mounting-fs-nfs-mount-settings.html
fsc
本地缓存,需要另一个软件支持
hard
行为:当 NFS 服务器不可达时,客户端会无限期不断重试 I/O 请求,直到服务器恢复正常为止。程序会“停住”不动,等待恢复后继续正常运行。
常与 intr 或其替代选项一起使用,使挂载操作可中断(尤其在老内核中),避免客户端彻底卡死。(但是 intr 在 内核 2.6.25 开始废弃,2008 年,RHEL6 开始)
通常 如果 nfs 挂载的是重要数据盘,一般是 hard。硬挂载将保持数据一致性
soft
客户端在发起 I/O 请求后,如果在一定重试次数或超时时间内未收到服务器响应,就会返回错误给应用程序,而不是一直等下去。
可设置 timeo(超时时间),retrans(最大重发次数),让挂载更具灵活性
一般建议是只读挂载才使用软挂载。
timeo & retrans
硬挂载一般使用默认值就可以,软挂载特别是 timeo 可能需要设短一点,否则会产生超长时间的卡顿后才报错。
而硬挂载,因为会不断重试,本身就会一直卡顿。
另外需要注意的是,早期 NFS 是使用 UDP 的,很多教程会与混淆,而在 NFSv4 中,只是用 TCP,需要考虑 TCP 自身的 timeout 情况。
NFS Server 命令
exportfs -ra
nfs server 刷新配置而不用重启