NFS(NetworkFileSystem),网络文件系统,基于RPC实如今远程主机上完成读写功能,NFS服务端功能由Kernel中提供,因此只能在Linux、UNIX中使用,另外只能根据IP地址限制用户访问。服务器
RPC (Remote Procedure Call),实现两个远程主机之间功能函数的调用、参数传递功能。在Linux中一些通用功能都被作成库,本地的应用程序须要使用这些功能时,直接调用便可,这就叫本地调用;本地所须要的库(功能函数)在远程主机上,这时候就可使用RPC协议将调用请求、参数封装成报文在网络上传输,而且服务端能理解以后将调用请求在本地执行返回结果,这称为远程过程调用。不少服务都会基于RPC完成某些功能, 例如NFS服务就基于RPC调用远程 主机上的open() ,read(),write(),close()…等函数将执行结果返回本地,完成文件共享功能。网络
工做原理:多线程
1.服务端启动时将NFS功能(NFS daemons)像RPC进行注册端口。并发
2.客户端经过RPC链接服务器获取NFS Daemon注册的端口。app
3.客户端连与NFS daemon进行联机,mountd对用户进行认证,nfs提供文件共享服务功能。异步
注意:RPC(tcp/111,udp/111),NFS(tcp/2049,udp/2049) 使用的都是知名端口,但mountd并非知名服务,客户端不知道mountd在哪,不知道如何去认证,而NFS必需要mountd认证经过返回令牌才能提供服务,因此NFS在启动时须要向RPC注册使用随机端口,这样客户端直接找RPC便可.async [root@el6 ~]# rpcinfo -p 127.0.0.1tcp program vers proto port serviceide 100000 4 tcp 111 portmapper函数 100000 3 tcp 111 portmapper 100000 2 tcp 111 portmapper 100000 4 udp 111 portmapper 100000 3 udp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 57168 status 100024 1 tcp 57017 status 100011 1 udp 875 rquotad 100011 2 udp 875 rquotad 100011 1 tcp 875 rquotad 100011 2 tcp 875 rquotad 100005 1 udp 40548 mountd 100005 1 tcp 60166 mountd 100005 2 udp 46629 mountd 100005 2 tcp 39141 mountd 100005 3 udp 48524 mountd 100005 3 tcp 50953 mountd 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100227 2 tcp 2049 nfs_acl 100227 3 tcp 2049 nfs_acl 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100227 2 udp 2049 nfs_acl 100227 3 udp 2049 nfs_acl 100021 1 udp 48054 nlockmgr 100021 3 udp 48054 nlockmgr 100021 4 udp 48054 nlockmgr 100021 1 tcp 43004 nlockmgr 100021 3 tcp 43004 nlockmgr 100021 4 tcp 43004 nlockmgr (daemon进程有多个是由于NFS支持并发访问) |
NFS daemon:
rpc.nfsd 提供NFS服务
rpc.mountd 用于验证用户是否有权限使用NFS
rpc.lockd与rpc.statd 用于锁定文件防止多个用户同时修改,致使文件混乱。
rpc.quota 用于设置NFS的磁盘配额。
rpc.bind 用于将服务与端口绑定
rpc.statd 通知NFS客户端何时一个NFS服务器非正常重启动.这个进程被nfslock服务自动启动,不须要用户的配置.
rpc.idmapd 用于将全部用户的ID映射为nobody用户
安装NFS:
[root@7-1 ~]# yum install -y nfs-utils 通常OS自带无需安装 |
NFS配置文件
Usage: Directory(or filesystem) Client1(option1,option2…) Client2(option1,option2…) |
Directory 共享目录
Client 容许访问的客户端IP
172.16.1.1 单个IP
172.16.1.0/24 网段
hostname/FQDN 主机名或者FQDN名
Options 可以使用权限选项
rw 读写权限,默认ro
async 异步读写,不启用多线程,也能进行多个I/O操做
secure 缺省选项,表示客户端挂载创建链接时采用小于1024的端口号
insecure 关闭上述功能
root_squash 缺省选项,将root用户映射成nfsnobody
no_root_squash 关闭上述功能,很是危险,这表示以root的身份进行读写
all_squash 将全部用户映射成nfsnobody