Linux 7.3 的 NFS 更新合进来了:客户端 I/O 提速,还有目录委托
技术笔记 5 次阅读

Linux 7.3 的 NFS 更新合进来了:客户端 I/O 提速,还有目录委托

Linux 7.3 NFS

Linux 内核 7.3 的合并窗口眼瞅着就要关了,NFS 这波更新赶上了末班车。客户端、服务端都有改动,我挑重点聊聊。

服务端:目录委托来了,还能主动召回

这次 NFSD 最值得关注的变化,是补上了 NFSv4.1 目录委托的 CB_NOTIFY 支持。啥意思呢?就是服务器可以通过 FSNOTIFY 机制盯着目录的动静,一旦监控的目录里有文件被添加、删除、重命名,或者属性变了,服务器能立刻召回之前授出去的委托。

这对跑在 NFS 上的应用挺重要。以前目录缓存失效全靠客户端自己猜,现在服务器会主动通知,缓存一致性好了不止一星半点。做过分布式存储的应该懂,这种"主动召回"机制能省掉多少头疼的缓存问题。

服务端:线程池没了,Netlink 还在完善

另外两个改动也值得一说。NFSD 把服务线程池给移除了,开发团队的理由是现代主机上基于每节点(per-node)的处理方式更优。翻译一下:以前线程池是全局调度,现在按 NUMA 节点各管各的,跨节点抢锁的开销直接省了。

上一周期启动的 Netlink 支持也在继续完善。虽然现在还是"能用"阶段,但方向很明确——内核越来越想把那些老掉牙的 procfs 接口换掉。

客户端:I/O 提交优化,性能有惊喜

客户端这边这轮以修 bug 为主,不过藏了一个性能优化:在非内存回收(memory reclaim)场景下,I/O 提交路径做了优化。说白了,就是正常业务读写的时候,提交 I/O 的开销变小了。内存压力大的时候该咋样还咋样,但平时跑起来会更顺。

还有个 NFSv4.2 的新功能:服务器可以指定某些文件数据不允许客户端缓存。这个对强一致场景挺实用,比如数据库文件,以前想关缓存得靠挂载参数硬调,现在协议层面直接支持了。

说点我的看法

NFS 这玩意,吐槽的人多,但真到了生产环境,尤其是 NAS、容器集群共享存储这块,它依然是绕不开的主力。7.3 这波更新没有大刀阔斧,但目录委托召回加 I/O 提交优化这两点,对实际运维体验的提升是实打实的。

反正内核社区一贯的节奏:小步快跑,慢慢变好。等 7.3 正式发布,跑 NFS 的朋友可以重点关注下这几条 changelog。

分享

评论 (0)

评论通过后显示

暂无评论,来写第一条吧 ✍️