NFS到底是怎么工作的?

发布时间 2023-03-31 13:10:30作者: Linux运维阿铭
NFS介绍
NFS是Network File System的缩写,NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发。NFS数据传输基于RPC协议,RPC为Remote Procedure Call的简写。
 
NFS应用场景很简单,当多台机器需要共享一份数据时,就用NFS。如上图,sdb1为A机器上的一块盘,A机器把sdb1上的一个目录共享出来了,然后B机器和C机器呢通过NFS将A机器共享的目录挂载到了它们自己的服务器上,看起来就像是它们本地的一块盘,此时无论是A机器,还是B机器,又或者是C机器,到这个挂载的目录里去写文件,另外的两台机器都会跟着写。
NFS工作原理
首先,说一个结论:NFS依赖RPC,RPC存在的意义是为了解决NFS服务端和客户端通信多端口并且端口不固定的问题。也就是说,NFS的服务端和客户端通信时,并不是只有一个端口,因为毕竟需要数据传输,数据的读、写,它们中间复杂得很,一个端口做不了这么多事情,所以就需要很多端口来实现这些操作。
最麻烦的是,端口还不固定,所以就得有一个中心,来记录这些不固定的端口,怎么记录呢,这里就用到了RPC。当访问程序通过NFS客户端向NFS服务器端存取文件时,其请求数据流程大致如下:① NFS服务启动时,首先会将端口信息登记到NFS服务端的RPC服务(也就是图中的rpcbind)里。
② 用户在NFS客户端上发出存取NFS文件请求,这时NFS客户端的RPC服务就会通过网络向NFS服务器端的RPC服务的111端口发出NFS文件存取功能的询问请求。
 
③ NFS服务端的RPC服务找到对应已注册的NFS端口后,通知NFS客户端RPC服务。④ NFS客户端获取到正确的端口,并与NFS 服务建立连接,然后开始存取数据由于NFS的各项功能都需要向RPC服务注册,所以只有RPC服务才能获取到NFS服务的各项功能对应的端口号、PID、NFS在主机所监听的IP等信息,而NFS客户端也只能通过向RPC服务询问才能找到正确的端口。也就是说,NFS需要有RPC服务的协助才能成功对外提供服务。因此,无论是NFS客户端还是NFS服务器端,都需要首先启动RPC服务,NFS服务必须在RPC服务启动之后启动,客户端无须启动NFS服务,但需要启动RPC服务。