NFS服务器简介
Linux和Windows之间可以通过Samba共享文件,Linux之间资源共享可以用到网络文件系统(Network File System , NFS)
它的核心功能就是可以通过网络,让不同的客户端,可以彼此访问共同的文件系统 ,来实现文件的共享。
NFS 服务器可以让客户端将网络远程的 NFS 服务器分享的目录,直接挂载到本地端的机器当中。本地端的机器通过直接读写挂载的目录,就可以同步
NFS的好处
1.本机使用更少的磁盘空间
2.home目录可以被放在NFS服务器上,并在网络中随处可用
实验原理:
RPC远程进程调用
因为NFS支持的功能相当多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此NFS的功能对应的端口并不固定,而RPC就是用来统一管理NFS端口的服务,并且统一对外的端口是111。
当客户端需求NFS服务时,就会访问服务器的111端口(RPC),RPC会将NFS工作端口返回客户端。
NFS服务流程
- NFS启动时,自动选择工作端口小于1024的1011端口,并向RPC(工作于111端口)汇报,RPC记录。
- 客户端需要NFS提供服务时,首先向111端口的RPC查询NFS工作端口。
- RPC回答客户端,NFS工作在1011端口。
- 然后,客户端直接访问NFS服务器的1011端口,请求服务。
- NFS服务经过权限认证,允许客户端访问自己的数据。
NFS服务组件
- rpc.nfsd
这个守护进程的主要作用就是判断,检查客户端是否具备登陆主机的权限,负责处理NFS请求。 - rpc.mounted
这个守护进程的主要作用就是管理NFS的文件系统。当客户端顺利通过rpc.nfsd登录主机后,在开始使用NFS主机提供的文件之前,它会检查客户端的权限(根据/etc/ exports来对比客户端的权限)。通过这一关之后,客户端才可以顺利访问NFS服务器上的资源。 - Rpcbind
这个守护进程的主要功能是进行端口映射工作。当客户端尝试连接并使用RPC服务器提供的服务(如NFS服务)时,rpcbind会将所管理的与服务对应的端口号提供给客户端,从而使客户端可以通过该端口向服务器请求服务。 - rpc.locked
rpc.stated守护进程使用本进程来处理崩溃系统的锁定恢复。因为既然NFS文件可以让众多的用户同时使用,客户端同时使用一个文件时,就有可能造成一些问题。此时,rpc.locked可以帮助解决这个难题。 - rpc.stated
这个守护进程负责处理客户与服务器之间的文件锁定问题,确定文件的一致性(与rpc.locked有关)。当因为多个客户端同时使用一个文件造成文件破坏时,rpc.stated可以用来检测该文件并尝试恢复。 - rpc.quotad
这个守护进程提供了NFS和配额管理程序之间的接口。不管客户端是否通过NFS对它们的数据进行处理,都会受配额限制。
Linux下NFS服务器部署
我是在centos7上进行的部署
- 首先安装nfs服务
[root@nfs ~]# yum clean all //安装前先清除缓存
[root@nfs ~]# yum install rpcbind nfs-utils -y
启动nfs服务
[root@nfs ~]# systemctl restart rpcbind
[root@nfs ~]# systemctl restart nfs
查询NFS程序是否正常运行
我们看到nfs和mounted选项,说明NFS正常运行。
root@nfs ~]# rpcinfo -p
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp