深入探究 NFS:原理、组件与缓存机制
1. NFS 基础原理
NFS(网络文件系统)在客户端和服务器之间传输数据时,有着独特的工作原理。实验测量表明,在客户端发出提交请求之前,NFS 服务器将数据并行提交到稳定存储,同时客户端进行其他操作(如生成更多 NFS 请求),可以获得更快的吞吐量。通常,NFS 版本 3 客户端在即将关闭文件或缓冲区空间紧张时会发出提交请求。
在传输大小方面,NFS 版本 2 每个 NFS 读写请求的限制为 8192 字节,而 NFS 版本 3 允许客户端和服务器协商一个双方都能接受的限制。不过,较大的 NFS 传输大小会增加数据包重组问题的风险,因为当数据包大于网络介质的最大传输单元(MTU)时,需要进行分片。输出数据包的分片相对容易,但输入分片的重组较为困难,特别是当分片乱序到达、丢失或延迟时。NFS 版本 2 设计时考虑到当时操作系统、路由器和网络硬件能力较弱,对网络更为友好。如今,这些组件性能大幅提升,NFS 版本 3 取消了传输大小的人为限制。
NFS 版本 2 和版本 3 都可以在 UDP 和 TCP 上运行。虽然 TCP 是有状态的,而 NFS 是无状态的,但 NFS 和 TCP 之间的 RPC 层会隐藏 TCP 的状态问题。NFS 客户端首次通过 TCP 联系服务器时,RPC 层会负责建立连接。如果服务器崩溃,客户端不会立即知晓,但下次通过该连接发送请求时,由于服务器的连接重置或连接超时,连接会中断,此时 RPC 层会重新建立连接。不同的 NFS/TCP 实现方式有所不同,例如 Solaris 系统中,NFS 客户端和服务器之间维持一个单一连接,所有用户和挂载点的流量都在该连接上复用;而 BSD 发行版则为每个挂载点建立一个连接。除了像
超级会员免费看
订阅专栏 解锁全文

5680

被折叠的 条评论
为什么被折叠?



