Pre
NFS简介
NFS的全称是Network FileSystem,即网络文件系统
NFS最初是由 Sun Microsytem 公司开发出来的,主要实现的功能是让网络上的不同操作系统之间共享数据。
- NFS首先在远程服务器端(共享数据的操作系统)共享出文件或者目录
- N然后远端共享出来的文件或者目录就可以通过挂载(mount)的方式挂接到本地的不同操作系统上
- N最后,本地系统就可以很方便地使用远端提供的文件服务,操作起来像在本地操作一样,从而实现了数据的共享。
NFS共享数据结构图
NFS由两个部分组成,NFS服务器和NFS客户端。
NFS服务器端主要负责共享数据和相关的权限设定,
而多个NFS客户端可以同时挂载共享出来的数据到自己指定的一个目录。
例如,NFS客户端A将NFS服务器共享的目录挂载到了自己指定的/home/share目录下,而NFS客户端B将共享的目录挂载到了/data目录。接着进入挂载点目录,就能看到从服务器端共享出来的文件了。
如果有足够的权限,还可以对这些共享资源进行复制、移动、修改、删除等操作。
NFS服务器的实现原理
NFS服务器启动后,都会开启对客户端连接对应的端口号,端口号的范围是1~1024,但每次启动NFS服务器,相应服务器端口号都各不相同。
为了确保客户端每次都能正确连接到NFS 服务器端,NFS通过一个远程过程调用(Remote Procedure Call,RPC)的协议来协助NFS服务器完成连接。
程序可以通过使用这种协议向网络中另一台计算机上的程序请求服务,在NFS中,RPC 最主要的功能就是指定并监控NFS守护进程对应的端口号,并将端口信息通知给客户端,让客户端可以连接到正确的端口上来,因此也可以说,NFS是一个RPC服务器。
需要注意的是,远程挂载NFS服务器的本地主机也需要同步启用RPC协议。
要使用NFS服务器,需要在NFS服务器端至少启用两个系统守护进程(daemons),分别是rpc.nfsd和rpc.mountd。
rpc.nfsd:用于分析和管理客户端PC是否有权限登录NFS服务器端主机,可以通过登入者的IP地址、用户ID等来判别。
rpc.mountd:用于管理NFS,在客户端PC通过rpc.nfsd的认证登录系统后,还必须要取得文件的使用权才能成功挂载进而使用文件。
要启动NFS服务器同样需要有两个系统服务才行,它们分别是portmap和nfs-utils。
portmap:RPC的 portmap管理器,它管理基于RPC服务的连接。
nfs-utils:提供rpc.nfsd及rpc.mountd这两个NFS守护进程的系统服务。
是否安装nfs
几乎所有的Linux发行版在安装系统时,都默认安装了NFS服务器。
这里以CentOS 7.1系统为例,介绍NFS的使用方法。首先通过下面的命令查看NFS服务器对应的rpm包是否安装。
[root@NFS Server ~]# rpm -qa|grep rpcbind rpcbind-0.2.0-26.el7.x86_64 [root@NFS Server ~]# rpm -qa|grep nfs nfs-utils-1.3.0-0.8.el7.x86_64 libnfsidmap-0.25-11.el7.x86_64
如果有类似上面的输出,表示NFS软件包已经安装。如果没有输出,就需要寻找NFS对应的rpm包,然后进行安装即可。