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服務。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM