• NFS工作原理及配置文件详解


    nfs工作原理流程

         
    如上图所示,当访问程序通过NFS客户端向NFS服务端存取文件时,其请求数据流程如下几点:
        1、首先用户访问网站程序,由程序在NFS客户端上发出NFS文件存取功能的询问请求,这时NFS客户端(即执行程序的服务器)RPC服务(portmap 或rpcbind服务)就会通过网络向NFS服务端的RPC服务(即portmap或rpcbind服务)的111端口发出NFS文件存取功能的询问请求。
        2、NFS服务端的RPC服务(即portmap或rpcbind服务)找到对应的已注册的NFSdaemon端口后,通知NFS客户端的RPC服务(即portmap或rpcbind服务)。
        3、此时NFS客户端就可获取到正确的端口,然后就直接与NFS daemon联机存取数据了。
        4、NFS客户端把数据存取成功后,返回给前端程序,告诉用户存取结果,作为网站用户,我们就完成了一次存取操作。
            由于NFS的各项功能都需要向RPC服务(即portmap或rpcbind)注册,所以RPC服务(即portmap或rpcbind服务)才能获取到NFS服务的各项对应的端口号(portnumber)、PID、NFS在主机所监听的IP等,而NFS客户端才能够通过向RPC服务(即portmap或rpcbind服务)询问从而找到正确的端口。也就是说,NFS需要有RPC服务(即portmap或rpc服务),NFS服务只需在服务端后于RPC服务启动,客户端无需启动NFS服务。
    NFS的rpc服务,在CentOS5.X下名称为portmap,在CentOS6.x下名称为rpcbind。
    [root@nfsserver /]# /etc/init.d/nfs restart
    Shutting down NFS daemon:                                  [  OK  ]
    Shutting down NFS mountd:                                  [  OK  ]
    Shutting down NFS quotas:                                  [  OK  ]
    Shutting down NFS services:                                [  OK  ]
    Shutting down RPC idmapd:                                  [确定]
    Starting NFS services:                                     [  OK  ]
    Starting NFS quotas:                                       [  OK  ]
    Starting NFS mountd:                                       [  OK  ]
    Starting NFS daemon:                                       [  OK  ]
    正在启动 RPC idmapd:                                       [确定] 
    从上面NFS服务启动过程的提示,可以看护运行NFS服务默认需要启动的服务或进程至少有:NFS quotas(rpc.rquotad)、NFS daemon(nfsd)、NFS mountd(rpc.mountd)。可以通过如下命令查看启动NFS后,系统中运行的NFS相关进程:
    [root@nfsserver /]# ps -ef | grep -E 'rpc|nfs'
    rpc       3631     1  0 21:29 ?        00:00:00 rpcbind         rpc服务   
    root      3688     2  0 21:31 ?        00:00:00 [rpciod/0]
    root      3824     1  0 21:32 ?        00:00:00 rpc.rquotad            磁盘配额进程        
    root      3828     1  0 21:32 ?        00:00:00 rpc.mountd                权限管理进程
    root      3834     2  0 21:32 ?        00:00:00 [nfsd4]
    root      3835     2  0 21:32 ?        00:00:00 [nfsd4_callbacks]
    root      3836     2  0 21:32 ?        00:00:00 [nfsd]
    root      3837     2  0 21:32 ?        00:00:00 [nfsd]
    root      3838     2  0 21:32 ?        00:00:00 [nfsd]
    root      3839     2  0 21:32 ?        00:00:00 [nfsd]            NFS主进程
    root      3840     2  0 21:32 ?        00:00:00 [nfsd]
    root      3841     2  0 21:32 ?        00:00:00 [nfsd]
    root      3842     2  0 21:32 ?        00:00:00 [nfsd]
    root      3843     2  0 21:32 ?        00:00:00 [nfsd]
    root      3869     1  0 21:32 ?        00:00:00 rpc.idmapd
    root      4039  3260  0 21:43 pts/1    00:00:00 grep -E rpc|nfs
    以上的进程查看均可以执行“man 进程名”来查看进程的功能细节
    例:[root@nfsserver /]# man rpcbind     #查看rpcbind的信息
            [root@nfsserver /]# man nfsd             #查看nfsd的信息
    NFS配置文件路径
    [root@nfsserver /]# cat /etc/exports       NFS服务主配置文件,配置NFS具体共享服务的地点,默认内容为空,以行为单位。
    [root@nfsserver /]# /usr/sbin/exportfs      NFS服务的管理命令
    [root@nfsserver /]# /usr/sbin/showmount         常用来在客户端,查看NFS配置及挂载结果的命令;配置nfserver,分别在服务端以及客户端查看挂载情况。
    [root@nfsserver /]# cd /var/lib/nfs/
    [root@nfsserver nfs]# ls
    etab  export-lock  rmtab  rpc_pipefs  statd  state  v4recovery  xtab
    [root@nfsserver nfs]# cat /var/lib/nfs/etab 
    /data    192.168.161.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534,sec=sys,rw,root_squash,no_all_squash)    NFS配置文件的完整参数设定的文件(有很多没有配置但是默认就有的NFS参数)
    [root@nfsserver nfs]# cat /var/lib/nfs/xtab    在CentOS-5.x   记录曾经挂载过的NFS客户端的信息,包括IP地址等,在CentOS-6.5中内容为空
    [root@nfsserver nfs]# nfsstat    #nfs状态
    Server rpc stats:
    calls      badcalls   badclnt    badauth    xdrcall
    100        0          0          0          0       
     
    Server nfs v4:
    null         compound     
    1         1% 99       99% 
     
    Server nfs v4 operations:
    op0-unused   op1-unused   op2-future   access       close        commit       
    0         0% 0         0% 0         0% 5         3% 1         0% 0         0% 
    create       delegpurge   delegreturn  getattr      getfh        link         
    0         0% 0         0% 0         0% 31       20% 4         2% 0         0% 
    lock         lockt        locku        lookup       lookup_root  nverify      
    0         0% 0         0% 0         0% 2         1% 0         0% 0         0% 
    open         openattr     open_conf    open_dgrd    putfh        putpubfh     
    1         0% 0         0% 1         0% 0         0% 31       20% 0         0% 
    putrootfh    read         readdir      readlink     remove       rename       
    3         2% 0         0% 2         1% 0         0% 0         0% 0         0% 
    renew        restorefh    savefh       secinfo      setattr      setcltid     
    63       42% 0         0% 0         0% 0         0% 1         0% 2         1% 
    setcltidconf verify       write        rellockowner bc_ctl       bind_conn    
    2         1% 0         0% 0         0% 0         0% 0         0% 0         0% 
    exchange_id  create_ses   destroy_ses  free_stateid getdirdeleg  getdevinfo   
    0         0% 0         0% 0         0% 0         0% 0         0% 0         0% 
    getdevlist   layoutcommit layoutget    layoutreturn secinfononam sequence     
    0         0% 0         0% 0         0% 0         0% 0         0% 0         0% 
    set_ssv      test_stateid want_deleg   destroy_clid reclaim_comp 
    0         0% 0         0% 0         0% 0         0% 0         0% 
    1、NFS共享的目录:为NFS服务端要共享的实际目录,要用绝对路径。如(/data/bbs)
                        注意:共享目录的本地权限,如果需要读写共享,一定要让本地目录被NFS客户端的用户(nfsnobody)可以读写。
    2、NFS客户端地址:为NFS服务端授权的可访问共享目录的NFS客户端地址,可以为单独的IP地址或主机名、域名等,也可以为整个网段地址,还可以用"*"来匹配所有客户端服务器可以访问,这里所谓的客户但端一般来说是前端的业务服务器,例如:web服务。
  • 相关阅读:
    Codeforces 1355 D. Game With Array
    Codeforces 1355 C. Count Triangles
    Codeforces Round #641 (Div. 2)
    Codeforces 1345 D
    hdu6787(骰子+往回推的传输带问通过方案,dp)
    hdu6745(渐减1过程的最多互质对数,dp)
    D Points Construction Problem(思维构造,等周定理)
    Codeforces Round #658 (Div. 2)D(01背包)
    Codeforces Round #655 (Div. 2)E(矩阵范围dp)
    hdu4622([u,v]内有多少个子串)
  • 原文地址:https://www.cnblogs.com/hwlong/p/5804831.html
Copyright © 2020-2023  润新知