
遇到个case,挂nfs协议的cfs在win10上使用,业务每15分钟会remount一次
问题根因:Windows MUP(多UNC提供程序)的 Prefix Cache 默认缓存时间为 15 分钟。失效后,MUP 重新按 ProviderOrder 顺序探测,由于 SMB 优先级高于 NFS,系统会先建立 TCP 445 (SMB) 连接,被 CFS 服务器 RST 拒绝后,才降级回退到 NFS 并重新发起 EXPORT Call 挂载,导致业务写操作出现 10 多秒停顿。 解决方案:修改注册表将 NFS 优先级调至 SMB 之前。
HKLM\SYSTEM\CurrentControlSet\Control\NetworkProvider\OrderProviderOrder 里的 NfsRdr 移到 LanmanWorkstation 之前(修改后如 NfsRdr,LanmanWorkstation,webclient 等),重启系统生效。
专门抓包看了下,如下面两张图,在12:51:35写操作之后就没有再发起write call,中间有尝试连接445端口,并且发起了remount export call ;从端口51646看,remount后,TCP连接没有断,而remount之前有smb请求被rst,rst后才remount的,remount后过10秒多业务就恢复正常写操作了(这里篇幅所限,只展示了一次remount,其实每次remount都是这个特征)


客户端机器是域成员机,业务不变的情况下,如果用smb协议的cfs,没有15分钟remount一次cfs的问题,用nfs协议的则会每15分钟remount一次cfs。

nfs server没有445端口,结合抓包,发现客户端会请求445端口,这很奇怪。确认只用smb协议的cfs没问题。我查了资料,一般建议linux客户端用nfs协议的存储、windows客户端用smb协议的存储,混合协议可能会有问题。所以,我先关闭这台机器的smb client(即关闭 LanmanWorkstation 服务)或者参考https://docs.microsoft.com/en-us/windows-server/storage/file-server/troubleshoot/detect-enable-and-disable-smbv1-v2-v3 关闭客户端的smb协议试试。
LanmanWorkstation这个服务默认是开机启动的,设置为开机禁止启动,重启机器后验证业务正常了。
后来想着既然是请求445造成的,那能不能在防火墙上阻止出向445端口的流量,试了下,不行,加不加这个防火墙规则,结果都是一样,看来出现问题并不是流量出去了,而是因为产生了445端口的出向请求,这才是关键。
添加防火墙规则的命令:
netsh advfirewall firewall add rule name=block445 protocol=TCP dir=out remoteport=445 action=block remoteip=cfsIP profile=any
例如:
netsh advfirewall firewall add rule name=block445 protocol=TCP dir=out remoteport=445 action=block remoteip=10.255.4.21 profile=any
netsh advfirewall set allprofiles state on
如此看来,禁止smb client也是个方向,让它发不了455请求,即禁止LanmanWorkstation服务或禁止smb协议。得到这个方案,完全是从这里突破的:nfs server没有445端口,结合抓包,发现客户端会请求445端口,这很奇怪。所以关闭smb client (LanmanWorkstation服务)来验证nfs协议的cfs不夹杂445请求 是否能正常,验证正常。但为了nfs协议的cfs能在这个业务场景的使用,要禁掉smb client未免有点因噎废食了。最好的方案还是使用cifs/smb协议的cfs,毕竟smb是windows原生的,兼容性是最好的。




NFS 和 SMB 都是经过实战考验的通过网络共享数据的解决方案。虽然 NFS 在基于 Linux 的环境中最容易使用,而 SMB 在 Windows 上最简单,但这两种协议都可以在任何主流操作系统上运行。尽管如此,重要的是要考虑与这两种协议相关的潜在配置和兼容性挑战,并评估商业文件共享平台是否是更好的选择。
NFS 与 SMB:网络文件共享速成课程
https://www.writeclick.co.il/nfs-vs-smb-a-crash-course-on-network-file-sharing/
网络共享:NFS 和 SMB 之间的性能差异
https://ferhatakgun.com/network-share-performance-differences-between-nfs-smb/
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。