在Red Hat Enterprise Linux 5.0服務器中,如果NFS出現了故障,可以從以下幾個方面著手檢查。
1.1 故障排除思路
(2)/etc/exports文件的正確性。
(3)必要時重新啟動NFS或portmap服務。
運行下列命令重新啟動portmap和NFS:
service portmap restart
service nfs start
(4)檢查客戶端中的mount命令或/etc/fstab的語法是否正確。
(5)查看內核是否支持NFS和RPC服務。
普通的內核應有的選項為CONFIG_NFS_FS=m、CONFIG_NFS_V3=y、CONFIG_ NFSD=m、CONFIG_NFSD_V3=y和CONFIG_SUNRPC=m。
我們可以使用常見的網絡連接和測試工具ping及tracerroute來測試網絡連接及速度是否正常,網絡連接正常是NFS作用的基礎。rpcinfo命令用于顯示系統的RPC信息,一般使用-p參數列出某臺主機的RPC服務。用rpcinfo-p命令檢查服務器時,應該能看到portmapper、status、mountd nfs和nlockmgr。用該命令檢查客戶端時,應該至少能看到portmapper服務。
1.2 NFS錯誤信息
NFS錯誤信息如下表所示。
1.3 使用nfsstat命令查看NFS服務器狀態
nfsstat命令顯示關于NFS和到內核的遠程過程調用(RPC)接口的統計信息,也可以使用該命令重新初始化該信息。如果未給定標志,默認是nfsstat -csnr命令。使用該命令顯示每條信息,但不能重新初始化任何信息。
nfsstat命令的主要參數如下。
(1)-b:顯示NFS V4服務器的其他統計信息。
(2)c:只顯示客戶機端的NFS和RPC信息,允許用戶僅查看客戶機數據的報告。nfsstat命令提供關于被客戶機發送和拒絕的RPC和NFS調用數目的信息。
要只顯示客戶機NFS或者RPC信息,將該參數與-n或者-r參數結合。
(3)-d:顯示與NFS V4授權相關的信息。
(4)-g:顯示RPCSEC_GSS信息。
(5)-m:顯示每個NFS文件系統的統計信息,該文件系統和服務器名稱、地址、安裝標志、當前讀和寫大小,以及重新傳輸計數
(6)-n:為客戶機和服務器顯示NFS信息。要只顯示NFS客戶機或服務器信息,將該參數與-c和-s參數結合。
(7)-r:顯示RPC信息。
(8)-s:顯示服務器信息。
(9)-t:顯示與NFS標識映射子系統的轉換請求相關的統計信息,要只顯示NFS客戶機或服務器信息,將-c和-s<br />選項結合。
(10)-4:當與-c、-n、-s或-z參數組合使用時,將包含NFS V4客戶機或服務器的信息,以及現有的NFS V2和V3數據<br />。
(11)-z:重新初始化統計信息。該參數僅供root用戶使用,并且在顯示上面的標志后可以和那些標志中的任何一個組合到<br />統計信息的零特殊集合。
要顯示關于客戶機發送和拒絕的RPC和NFS調用數目的信息,輸入:
nfsstat -c
要顯示和打印與客戶機NFS調用相關的信息,輸入如下命令:
nfsstat -cn
要顯示和打印客戶機和服務器的與RPC調用相關的信息,輸入如下命令:
nfsstat -r
要顯示關于服務器接收和拒絕的RPC和NFS調用數目的信息,輸入如下命令:
1.4 NFS典型故障排除步驟
1.個別客戶端無法從一個或多個服務器導入
(1)在客戶端中檢查下列內容。
驗證在客戶端中是否有該本地目錄,如果不存在,使用mkdir創建。例如,如下命令:
# mkdir /opt/adobe
檢查局域網電纜是否沒有損壞并已連接上,所有的連接是否有效。
/etc/hosts是否存在并且有"相關信息"。
/etc/fstab是否存在并且有"相關信息",同時所有條目是否仍然指向服務器中的有效目錄。
/etc/resolv.conf是否存在并且有"相關信息"(僅適于DNS)。
(2)在服務器中檢查下列內容。
客戶端嘗試掛接的目錄是否已存在并在配置文件中列出。
客戶端是否具有掛接文件系統的權限。
相關信息說明如下。
/etc/hosts、/etc/fstab和/etc/resolv.conf中必須包含下列條目:
- /etc/hosts:系統主機名和IP地址,例如:
12.0.14.123 fredsys fredsys.mysite.myco.com
類似以下的條目:
127.0.0.1 localhost loopback #[no SMTP]
- /etc/fstab:對于標準掛接,每個導入的文件系統對應一個條目。
- /etc/resolv.conf(僅域名服務[DNS]需要使用):系統所在域的名稱,例如:
domain mysite.myco.com
至少一個名稱服務器,例如:
nameserver 12.0.14.165
2.所有客戶端都無法從指定的服務器導入
在服務器上執行下列步驟。
(1)確保服務器已啟動且正在運行,并且服務器和客戶端之間的局域網連接有效(是否可以從服務器ping通連接客戶端,并且反之也可)。
(2)確保客戶端要掛接的文件系統已在/etc/fstab中列出。
(3)重新啟動NFS服務器。
如果這些補救方法都失敗,而配置也正確(執行了上述所有測試),則服務器可能沒有正確引導,應重新引導服務器。
3.其他NFS常見故障排除
(1)當mount NFS文件系統時,如果錯誤信息是"Permission denied",則表示NFS服務器不允許客戶機掛接。一般可以用更改服務端上的/etc/exports文件來解決問題,使用exportfs-rv命令重新導出文件系統。
(2)如果出現的錯誤是"Program not registed",則是NFS服務可能沒有啟動或者運行不正常,最常用的解決方法是重新啟動NFS服務。
(3)如果出現"RPC:Unable to receive",則可能是服務端沒有啟動portmap服務;如果已經啟動,則可能是被防火墻所屏蔽。
(4)掛載文件系統的時候,客戶端沒有任何反應,則可能為客戶端沒有啟動portmap服務。
(5)在NFS服務器中共享目錄輸出失敗。
如果使用圖形化窗口對共享目錄進行配置,設置后必須測試共享目錄的輸出,以驗證配置是否正確,通常圖形化窗口不會報告配置錯誤。
使用"exportfs -v -a"命令檢查/etc/exports文件中設置的共享目錄是否能夠正常輸出,其中選項"-v"表示以冗余模式顯示,即顯示每一步的細節。
(6)顯示"設備正忙"無法卸載。
在使用umount命令卸載遠程NFS共享目錄時,出現"設備正忙"等卸載失敗消息。通常可能的原因是有一個進程仍然在使用這個目錄,可以使用lsof命令來查看是否有進程正在使用該共享目錄。
(7)掛載失敗。
如果在掛載NFS共享目錄時,客戶端提示"RPC(Remote Procedure Call)failed",即遠程過程調用失敗消息,則很可能是因為服務器上帶有約束性質的防火墻錯誤地阻止了NFS客戶端掛載NFS共享,即防火墻封鎖了NFS或者RPC端口。為了解決這個問題,可以使用iptable命令打開服務器上的111(RPC)和2049(NFS)端口,允許NFS客戶端訪問服務器。
(8)NFS請求掛起。
如果客戶端正在執行寫操作,而服務器無法響應或者在網絡上變得不可訪問,那么在默認情況下(使用hard選項進行掛載)客戶端進程將掛起直到寫操作完成。如果不中止寫操作,進程就不能從請求中退出。為了避免NFS請求掛起,在網絡狀況不穩定情況下可以在掛載目錄時指定soft選項以允許操作因超時而退出,或者指定intr選項以允許用戶在命令行上通過按下Ctrl+C組合鍵退出掛起的操作。
(9)NFS掛載在引導時掛起。
如果在/etc/fstab文件中設置了自動掛載NFS,但在系統引導時NFS共享目錄暫時不可用,那么默認情況下引導進程將進入等待狀態,直到NFS目錄變得可用為止。如果所需等待的NFS目錄是系統必須的,那么這種等待可能還可以接受。然而在很多情況下,用戶只想讓系統把掛載請求放在后臺并繼續引導系統。可以把bg選項添加到/etc/fstab文件中,這樣在首次掛載請求超時之后,掛載請求會轉入后臺,系統繼續引導。當需要在前臺掛載NFS共享目錄時可以將fg選項添加到/etc/fstab文件的掛載選項中。