【linux 】伺服器異常down 機 NFS掛載失敗

楊奇龍發表於2012-02-18
工作中遇到的一個案例,由於rac1 異常dang 機導致nfs 掛載失敗,具體環境如下
nfs server端 als_mybak4 10.251.134.205
nfs client端 rac1       10.250.7.225
在rac1上使用掛載nfs 失敗 使用showmount檢視,報timeout錯誤!
root@rac1#showmount -e 10.251.134.205
mount clntudp_create: RPC: Port mapper failure - RPC: Timed out

在nfs服務端檢視埠資訊
root@als_mybak4 # netstat -ltpn | more
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:42251               0.0.0.0:*                   LISTEN      6451/rpc.mountd     
tcp        0      0 0.0.0.0:875                 0.0.0.0:*                   LISTEN      6435/rpc.rquotad    
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      1361/rpcbind        
tcp        0      0 0.0.0.0:51954               0.0.0.0:*                   LISTEN      1379/rpc.statd      
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1514/sshd           
tcp        0      0 0.0.0.0:57949               0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:20351               0.0.0.0:*                   LISTEN      1578/python         
tcp        0      0 0.0.0.0:2049                0.0.0.0:*                   LISTEN      -                   
tcp        0      0 :::111                      :::*                        LISTEN      1361/rpcbind        
tcp        0      0 :::22                       :::*                        LISTEN      1514/sshd           
tcp        0      0 :::38359                    :::*                        LISTEN      -                   
tcp        0      0 :::12865                    :::*                        LISTEN      26721/netserver     
tcp        0      0 :::42918                    :::*                        LISTEN      1379/rpc.statd  
執行nfs所需要的後臺程式:
 rpc.nfsd管理clinet是否有許可權登入,以及判別登入者的uid等;
 rpc.mountd讀取/etc/exports的許可權,對檔案訪問許可權進行控制;
 rpc.lockd檔案的互斥鎖,保證檔案在同一時間只有一個人訪問,需要nfslockd服務;
 rpc.statd檢查檔案的一致性,需要nfslockd服務。

網路方面的acl配置
3970 permit tcp host 10.250.7.225 host 10.251.134.205 eq sunrpc
3980 permit tcp host 10.250.7.225 host 10.251.134.205 eq 2049
3990 permit tcp host 10.250.7.225 host 10.251.134.205 eq 38520
4000 permit tcp host 10.250.7.225 host 10.251.134.205 eq sunrpc
4010 permit tcp host 10.250.7.225 host 10.251.134.205 eq 2049
4020 permit tcp host 10.250.7.225 host 10.251.134.205 eq 38520
伺服器上面的埠和網路配置的ACL的埠不對應,造成了兩個伺服器之間不可連線,從而超時!
這裡還要說說NFS 
        網路檔案系統(NFS,Network File System)是一種將遠端主機上的分割槽(目錄)經網路掛載到本地系統的一種機制,透過對網路檔案系統的支援,客戶可以在本地系統上像操作本地分割槽一樣來對遠端主機的共享分割槽(目錄)進行操作。因為NFS支援的功能很多,而不同的功能會使用不同的方式來啟動,每啟動一個功能就會啟用一些port來傳輸資料!因此, NFS的功能所對應的port是不固定的,而是採用隨機取用一些未被使用的小於1024的埠口來作為傳輸之用。此時我們就得需要遠端程式呼叫(RPC)的服務。RPC最主要的功能就是在指定每個NFS功能所對應的port number ,並且回報給客戶端,讓客戶端可以連結到正確的埠口上去。那RPC又是如何知道每個NFS的埠口呢?這是因為當伺服器在啟動NFS時會隨機取用數個埠口,並主動的向RPC註冊,因此RPC可以知道每個埠口對應的NFS功能,然後RPC又是固定使用port 111 來監聽客戶端的需求並回報客戶端正確的埠口!
        portmap 程式的主要功能是把RPC程式號轉化為Internet的埠號
當一個RPC伺服器啟動時,會選擇一個空閒的埠號並在上面監聽(每次啟動後的埠號各不相同),同時它作為一個可用的服務會在portmap程式註冊。一個RPC伺服器對應惟一一個RPC程式號,RPC伺服器告訴portmap程式它在哪個埠號上監聽連線請求和為哪個RPC程式號提供服務。經過這個過程,portmap程式就知道了每一個已註冊的RPC伺服器所用的Internet埠號,而且還知道哪個程式號在這個埠上是可用的。portmap程式維護著一張RPC程式號到Internet埠號之間的對映表,它的欄位包括程式號、版本號、所用協議、埠號和服務名,portmap程式透過這張對映表來提供程式號-埠號之間的轉化功能。如果portmap程式停止了執行或異常終止,那麼該系統上的所有RPC伺服器必須重新啟動。首先停止NFS伺服器上的所有NFS服務程式,然後啟動portmap程式,再啟動伺服器上的NFS程式。但portmap只在第一次建立連線的時候起作用,幫助網路應用程式找到正確的通訊埠,但是一旦這個雙方正確連線,埠和應用就繫結,portmap也就不起作用了。但對其他任何第一次需要找到埠建立通訊的應用仍然有用。
nfs 伺服器端和客戶端連線的步驟:
1 客戶端會向伺服器端的RPC (port 111)發出NFS檔案存取功能的詢問要求;
2 伺服器端找到對應的已註冊的NFS daemon埠口後,會回報給客戶端;
3 客戶端了解正確的埠口後,就可以直接與NFS daemon來連線。
        由於NFS的各項功能都必須要向RPC來註冊,如此一來RPC才能瞭解NFS這個服務的各項功能之port number, PID, NFS在主機所監聽的IP等等,而客戶端才能夠透過RPC的詢問找到正確對應的埠口。也就是說,NFS必須要有RPC存在時才能成功的提供服務,因此我們稱NFS為RPC server的一種。
       我的環境是客戶端從 伺服器端的111埠獲取nfs 正在監聽的埠,再向伺服器端發起連線的時候被acl訪問控制限制導致不可連線!重新配置acl的埠號,或者將10.250.7.225 到 10.251.134.205 之間的ip 全部埠開放~!這樣當下次rac1 down機 重啟之後,就不會因為網路ACL的埠限制而不能正常使用nfs服務了~!
 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-716715/,如需轉載,請註明出處,否則將追究法律責任。

相關文章