设为首页收藏本站language 语言切换
查看: 1663|回复: 0
收起左侧

[分享] NFSv3 源代码结构

[复制链接]
发表于 2013-1-9 15:43:53 | 显示全部楼层 |阅读模式
相比之前的两个版本,NFSv3 是一个较为稳定和成熟的 NFS 版本,而之后的 NFSv4 除了在安全和性能上有所提高外,还在网络连接中加入了状态属性,因此显得复杂一些。在此,本文以 NFSv3 为例来剖析 NFS 文件系统的源代码结构,所用源码来自 Linux 2.4.9 内核。
按照 NFS 文件系统的设计与实现,NFS 文件系统主要分为三个部分:The Protocol(网络协议),Client Side(NFS 客户端)和 Server Side(NFS 服务器)。
NFS客户端提供了接口,保证用户或者应用程序能像访问本地文件系统一样访问 NFS 文件系统,NFS 服务器作为数据源,为 NFS 客户端提供真实的文件系统服务,而网络协议则使得 NFS 客户端和 NFS 服务器能够高效和可靠地进行通信。
NFS网络协议使用的是RPC(Remote Procedure Call,远程过程调用)/XDR(External Data Representation,外部数据表示)机制,因此本文将剖析的重点放在 NFS 客户端和 NFS 服务器上。
Client Side 源代码
ClientSide 的头文件在 include/linux/ 下面,C 文件在 fs/nfs 下面。
•dir.c/file.c/inode.c/symlink.c/unlink.c:与文件操作相关的系统调用
•read.c/write.c/flushd.c:文件读写
•mount_clnt.c/nfs_root.c:将 NFS 文件系统作为 root 目录的相关实现
•proc.c/nfs2xdr.c/nfs3proc.c/nfs3xdr.c:网络数据交换
与文件操作相关的系统调用都在struct file_operations,structinode_operations 这两个数据结构里面定义。文件的读操作 nfs_file_read 和写操作 nfs_file_write 被单独提出来,因为文件读写性能将直接关系到文件系统的成败,本文在后续会重点阐述其实现过程。

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-2-9 13:27 , Processed in 0.078379 second(s), 14 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表