linux 老舊nfs系統 mount 超時問題的解決

背景簡介

由於業務需要,學校要把考試系統移植到雲平臺,第一步所做的是先把老系統A的nfs存儲平臺mount到新系統B上。老考試系統A服役時間已經很長了,操作系統還是redhat4系列,版本還是linux 2.4.20。 

問題

在B端mount的時候,出現一個問題,即輸入

mount  -t nfs 10.77.30.31:/opt/OJ/contests  /mnt/nfs
超時報錯

A端的nfs服務,其他老系統可以mountA的nfs文件,但是linux 3.0以後的服務器還是mount不了。後來問了下其他人,原來他們也早就知道了,但一直沒解決。

追蹤

首先在B端showmount看看,發現一切正常

root@ubuntu188:/mnt# showmount -e 10.77.30.31
Export list for 10.77.30.31:
/opt/OJ/contests (everyone)
這說明B端的nfs服務是正常運行的,且防火牆沒有攔截。

然後在A端查找日誌,發現一直循環報錯,

nfsd: unexporting all filesystems
nfsd: last server has exited
nfsd: unexporting all filesystems

於是網上百度這個問題,都說是nfs服務器中/proc/fs/nfsd沒有裝載,於是看了下,發現確實A端沒有這個東西

於是嘗試mount,發現不行,提示出錯

mount -t nfsd  nfsd  /proc/fs/nfsd 
mount: mount point /proc/fs/nfsd does not exist
而在B端或者其他較新的系統上進行此類mount,是一切正常的

那麼A端是不是沒裝nfsd服務呢,雖然基本不可能,但還是驗證一下,果然A端nfsd的服務模塊是加載了的,/proc裏也有

[root@cszjusrv3 contests]# lsmod|grep nfsd
nfsd                   81104   8  (autoclean)
lockd                  59536   1  (autoclean) [nfs nfsd]
sunrpc                 87516   1  (autoclean) [nfs nfsd lockd]
[root@cszjusrv3 contests]# ls /proc/net/rpc/nfsd 
/proc/net/rpc/nfsd


問題的解決

到這個時候我已經確認了基本是A端nfs服務版本過老的問題了。但是由於A的操作系統過老,已經不適合安裝新的nfs版本了,那麼就沒辦法了麼。

我查找"nfsd: unexporting all filesystems"的問題過程中,搜到兩個鏈接http://blog.csdn.net/zanget/article/details/6659314,http://www.233.com/Linux/Instructs/060210/172416755-2.html其中都提到nfsvers=x ,這我本能的感覺到問題所在。進一步閱讀後發現是用來選擇nfs版本做優化的。通過nfsstat查了下,A端只支持1-3的nfs版本,而現在默認都用4了,於是在B端嘗試了下參數,發現成功了。

root@ubuntu188:/mnt# mount  -t nfs 10.77.30.31:/opt/OJ/contests  /mnt/nfs -o nfsvers=3
root@ubuntu188:/mnt# ls /mnt/nfs
problems  problems.1  runs  work  working

總結

這類問題首先要找到問題的日誌信息,但是不能光依賴網上的萬能解答,而是應該瞭解其機理。最後感謝下兩篇上述引用文章的作者: )


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章