Linux NFSD软件架构与代码解析
2023-08-22 04:17:39 来源:数据存储张
在Linux操作系统发行版有一个NFS服务端,该服务端由内核态的模块和用户态的守护进程构成。其中内核态模块负责数据处理,而用户态守护进程则负责内核态的配置管理等功能。由于核心功能在内核态实现,因此与Linux中的本地文件系统有很好的兼容性,性能也比较好。
由于网络锁和挂载等协议与NFS协议不统一,因此都有独立的服务来处理相关的逻辑,这样整个NFS服务略显繁杂。但是到NFSv4之后,NFS协议将网络锁协议和挂载协议都融入其中,因此具体实现也简洁了很多。
(资料图)
在前面文章中我们已经简要的描述了NFS协议在Linux内核中的层次结构。本节我们再进一步详细的介绍一下服务端的软件架构。NFSD的软件架构其实并不复杂,我们可以进一步细化为如图1所示。
图片
从该图可以看出,当RPC服务收到来自客户端的请求时,它会对请求进行分发,由具体的程序(例如NFS或者NLM)来完成相关请求。其中请求的分发依据是其中的程序ID和例程ID,根据这两个信息就可以找到具体的函数指针。
如果相关请求涉及到文件操作,那么在例程中会直接调用VFS的接口(例如读数据)进行下一步的处理。而VFS则根据导出的目录信息调用本地文件系统(例如Ext4和XFS等)的接口实现具体的操作。
在内核中实现了所有的NFS协议,比如NFS v3、NFS v4、挂载和NLM等。由于从RPC服务到协议程序的流程是一样的,限于篇幅本文并不会对每种协议都做介绍。本节我们主要以NFS v3协议为例,介绍一下从网络收到消息到最终完成协议层处理的整个流程。如果大家熟悉了一个流程,再按照此流程来理解其它流程将非常容易。
1启动流程简析首先我们分析一下NFSD的启动过程,该过程主要完成函数指针集向RPC服务注册的过程。以处理NFS协议的服务端为例,关键是启动了一个内核线程池。该线程池不断地接收网络消息,然后译码之后调用注册的回调函数进行具体命令的处理。如下代码所示是NFS服务的主函数,函数指针的注册和线程池的创建都在其中实现。
图片
在该函数中,其中nfsd_create_serv完成函数指针的初始化,主要涉及如下函数指针。
图片
上述函数指针中,svc_set_num_threads用于创建线程池,而nfsd则是线程函数,负责数据的接收和处理。我们看一下该函数的主体部分,具体如下:
图片
可以看出该函数主要调用两个函数,svc_recv用于接收消息,svc_process用于处理消息。这两个函数其实都是RPC模块的函数。其中svc_process会解析数据包,然后调用函数指针进行后续的处理。以NFSv3为例,它会调用如下函数指针集中的某个函数。
图片
2写数据流程示例以写数据流程为例,当RPC服务接收到数据包后,根据协议格式解析出程序ID和例程的ID等信息,然后从注册的函数指针集就可以找到期望的函数指针进行处理。对于写数据而言,就会调用nfsd中的nfsd3_proc_write函数。
nfsd3_proc_write函数的工作其实并不多,更进一步会调到VFS的接口,具体如下图所示。最后,VFS会调用到具体文件系统的接口。如果我们导出的是Ext4的子目录,那么会调用Ext4的接口来处理写数据的请求。
图片
总体来看,NFSD的逻辑是比较清晰的,代码也并不复杂。而且各个接口的逻辑一致,因此理解了一个接口后,再理解其它接口也就容易很多了。
关键词:
推荐内容
- Linux NFSD软件架构与代码解析
- 天门公安开展打击整治网络乱象专项行动
- 联想推出Windows游戏掌机 Legion Go 9月1日-5
- 限时优惠2万元 2023款欧拉好猫木兰版尊荣型
- 立秋后,不管有钱没钱,这鱼要多给家人吃,肉嫩刺
- 东利机械(301298.SZ)发布半年度业绩,净利润2969
- 北京手机回收平台(北京手机回收)
- 联播观察丨美猴王“驾到”!孙悟空的原型是它?
- 仁信新材:8月18日融资买入1160.86万元,融资融券
- 重庆市第十届“好记者讲好故事”第三片区赛今日开
- 光大同创:8月18日融资买入800万元,融资融券余额
- 中国香港正式接纳世界贸易组织《渔业补贴协定》
- 凯格精机:8月18日融资买入753.66万元,融资融券
- 75个国家和国际组织将在本届服贸会设展办会
- 南向资金8月21日净流入超99亿:大举加仓三只ETF及
- 中考冲刺经验分享
- 今年暑期旅游火热 多地推出特色游让游客轻松又新鲜
- IDC:2023 Q2 中国折叠屏手机市场持续保持快速增长
- 男子离家10分钟发现家中火灾 充电宝引发火灾
- 男装进入存量竞争时代,谁会是下一个破局者
- 特斯拉数据泄露:涉及7.5万人个人信息,特斯拉已
- 穿越三个街道!宝安四季绿道怎么建?听你的!
- 央视:频繁上演的“抹黑小作文”扰乱资本市场正常
- 2023“未来钢琴家”全球音乐盛典总决赛在天津举办
- 市场监管系统城镇燃气安全专项整治行动启动
- 李氏大药厂(00950.HK)预计上半年纯利约1200万港元
- 国产超高性能碳纤维规模化生产取得突破
- 假期游园欢乐多
- 川发龙蟒(002312.SZ):攀枝花项目首期5万吨磷酸铁
- 小米笔记本限时特惠 16G+512G+集显 到手价3879元
- UWB概念利好股票有哪些?(2023/8/21)
- 上海出台一系列行动方案和措施,助推跨境电商蓬勃
- 加拿大千起林火同时燃烧 欧洲多地遭遇“毁灭性”
- 269万!路虎揽胜SV Carmel版限量7台
- 机构今日看好这些个股
- 保险公司排名前十名?
- 央行宣布调整!LPR一降一平释放什么信号?
- 恒生科技指数午后持续调整,相关ETF集体跌超2%
- 格力集团成立文旅公司
- 【活动报名开启】2023龙城数字产业集聚发展论坛