NFS

  NFS

NFSNetworkFileSystem),网络文件系统,基于RPC实如今远程主机上完成读写功能,NFS服务端功能由Kernel中提供,因此只能在LinuxUNIX中使用,另外只能根据IP地址限制用户访问。服务器

RPC (Remote Procedure Call),实现两个远程主机之间功能函数的调用、参数传递功能。在Linux中一些通用功能都被作成库,本地的应用程序须要使用这些功能时,直接调用便可,这就叫本地调用;本地所须要的库(功能函数)在远程主机上,这时候就可使用RPC协议将调用请求、参数封装成报文在网络上传输,而且服务端能理解以后将调用请求在本地执行返回结果,这称为远程过程调用。不少服务都会基于RPC完成某些功能, 例如NFS服务就基于RPC调用远程 主机上的open() ,read(),write(),close()…等函数将执行结果返回本地,完成文件共享功能。网络

 

工做原理:多线程

                    image.png                 

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.lockdrpc.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

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息