nfs:server is not responding,still trying的解決辦法

# rpm -qa nfs-utils rpcbind
nfs-utils-1.3.0-0.33.el7.x86_64
rpcbind-0.2.0-38.el7.x86_64

系統(tǒng) :centos7.9
nfs版本:nfsstat: 1.3.0
rpcbind版本:rpcbind:0.2.0

查看message日志發(fā)現(xiàn)nfs 客戶連接端報如下錯誤

 kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
 kernel: nginx           D ffff94a9ffd1acc0     0 31787   1066 0x00000080
 kernel: Call Trace:
 kernel: [<ffffffff97585290>] ? bit_wait+0x50/0x50
 kernel: [<ffffffff97587169>] schedule+0x29/0x70
 kernel: [<ffffffff97584c51>] schedule_timeout+0x221/0x2d0
 kernel: [<ffffffff96f06362>] ? ktime_get_ts64+0x52/0xf0
 kernel: [<ffffffff97585290>] ? bit_wait+0x50/0x50
 kernel: [<ffffffff9758683d>] io_schedule_timeout+0xad/0x130
 kernel: [<ffffffff975868d8>] io_schedule+0x18/0x20
 kernel: [<ffffffff975852a1>] bit_wait_io+0x11/0x50
 kernel: [<ffffffff97584e51>] __wait_on_bit_lock+0x61/0xc0
 kernel: [<ffffffff96fbd2e4>] __lock_page+0x74/0x90
 kernel: [<ffffffff96ec6dd0>] ? wake_bit_function+0x40/0x40
 kernel: [<ffffffff97082072>] __generic_file_splice_read+0x5c2/0x5e0
 kernel: [<ffffffff97080930>] ? page_cache_pipe_buf_release+0x20/0x20
 kernel: [<ffffffff96ec6cd5>] ? wake_up_bit+0x25/0x30
 kernel: [<ffffffff97082474>] generic_file_splice_read+0x44/0x90
 kernel: [<ffffffffc07f700a>] nfs_file_splice_read+0x8a/0xd0 [nfs]
 kernel: [<ffffffff97081295>] do_splice_to+0x75/0x90
 kernel: [<ffffffff97081367>] splice_direct_to_actor+0xb7/0x200
 kernel: [<ffffffff97081630>] ? do_splice_from+0xf0/0xf0
 kernel: [<ffffffff97081512>] do_splice_direct+0x62/0x90
 kernel: [<ffffffff9704e1f8>] do_sendfile+0x1d8/0x3c0
 kernel: [<ffffffff9704f84e>] SyS_sendfile64+0x6e/0xc0
 kernel: [<ffffffff97593f92>] system_call_fastpath+0x25/0x2a
 kernel: INFO: task nginx:31790 blocked for more than 120 seconds.
 kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
 kernel: nginx           D ffff94a939266300     0 31790   1066 0x00000080
 kernel: Call Trace:
 kernel: [<ffffffffc0853a6e>] ? nfs4_file_open+0x14e/0x2b0 [nfsv4]
 kernel: [<ffffffff97588089>] schedule_preempt_disabled+0x29/0x70
 kernel: [<ffffffff97585ff7>] __mutex_lock_slowpath+0xc7/0x1d0
 kernel: [<ffffffff975853cf>] mutex_lock+0x1f/0x2f
 kernel: [<ffffffff9712d206>] ima_file_check+0xa6/0x1b0
 kernel: [<ffffffff9705ddda>] do_last+0x59a/0x1340
 kernel: [<ffffffff9705ec4d>] path_openat+0xcd/0x5a0
 kernel: [<ffffffff97060e9d>] do_filp_open+0x4d/0xb0
 kernel: [<ffffffff9706ef97>] ? __alloc_fd+0x47/0x170
 kernel: [<ffffffff9704c9e4>] do_sys_open+0x124/0x220
 kernel: [<ffffffff9704cafe>] SyS_open+0x1e/0x20
 kernel: [<ffffffff97593f92>] system_call_fastpath+0x25/0x2a
 kernel: nfs: server 192.168.10.121 not responding, still trying
 kernel: INFO: task nginx:31784 blocked for more than 120 seconds.
 kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
 kernel: nginx           D ffff94a9ffc5acc0     0 31784   1066 0x00000080
 kernel: Call Trace:
 kernel: [<ffffffffc0853a6e>] ? nfs4_file_open+0x14e/0x2b0 [nfsv4]
 kernel: [<ffffffff97588089>] schedule_preempt_disabled+0x29/0x70
 kernel: [<ffffffff97585ff7>] __mutex_lock_slowpath+0xc7/0x1d0
 kernel: [<ffffffff975853cf>] mutex_lock+0x1f/0x2f
 kernel: [<ffffffff9712d206>] ima_file_check+0xa6/0x1b0
 kernel: [<ffffffff9705ddda>] do_last+0x59a/0x1340
 kernel: [<ffffffff9705ec4d>] path_openat+0xcd/0x5a0
 kernel: [<ffffffff97060e9d>] do_filp_open+0x4d/0xb0
 kernel: [<ffffffff9706ef97>] ? __alloc_fd+0x47/0x170
 kernel: [<ffffffff9704c9e4>] do_sys_open+0x124/0x220
 kernel: [<ffffffff9704cafe>] SyS_open+0x1e/0x20
 kernel: [<ffffffff97593f92>] system_call_fastpath+0x25/0x2a
 kernel: INFO: task nginx:31787 blocked for more than 120 seconds.

問題原因:
Mandag 27 november 2006 20:12 skrev Verner Kj?rsgaard:

Mandag 27 november 2006 19:33 skrev John P. New:
Verner,

This is a problem with NFS and 2.6 kernels, fast server NICs and
comparatively slower client NICs. This will show up when the server has
a 1000Mb card and the client a 100Mb, or when the server has a 100Mb
card and the client a 10Mb.

Essentially, you have to pass some options to the kernel on terminal
boot, and this varies depending on whether you are using etherboot or
PXE.

See
http://wiki.ltsp.org/twiki/bin/view/Ltsp/NFS#NFS_Server_not_responding
for a deeper explanation of the problem and the cure.
//注:原因是server機和目標機網(wǎng)卡傳輸速率沖突,使得目標機需要大量時間復(fù)制大量數(shù)據(jù)包,其實如果目標機的網(wǎng)卡速率夠大,則不用分那么多包,也不會沖突。

協(xié)議版本解析:

NFS協(xié)議到現(xiàn)在經(jīng)歷了V1、V2、V3、V4四個版本,但是它有一個缺點就是協(xié)議沒有用戶認證機制,而且數(shù)據(jù)在網(wǎng)絡(luò)上傳送的時候是明文傳送,所以安全性極差,一般只能在局域網(wǎng)中使用。

NFSv3是1995年發(fā)布的,相比NFSv3,NFSv4發(fā)生了比較大的變化,最大的變化是NFSv4有狀態(tài)了。NFSv2和NFSv3都是無狀態(tài)協(xié)議,服務(wù)端不需要維護客戶端的狀態(tài)信息。無狀態(tài)協(xié)議的一個優(yōu)點在于災(zāi)難恢復(fù),當服務(wù)器出現(xiàn)問題后,客戶端只需要重復(fù)發(fā)送失敗請求就可以了,直到收到服務(wù)端的響應(yīng)信息。但是某些操作必須需要狀態(tài),如文件鎖。如果客戶端申請了文件鎖,但是服務(wù)端重啟了,由于NFSv3無狀態(tài),客戶端再執(zhí)行鎖操作可能就會出錯了。NFSv3需要NLM協(xié)助才能實現(xiàn)文件鎖功能,但是有的時候兩者配合不夠協(xié)調(diào)。NFSv4設(shè)計成了一種有狀態(tài)的協(xié)議,自身實現(xiàn)了文件鎖功能,就不需要NLM協(xié)議了。

NFSv4和NFSv3的差別如下:
  • (1) NFSv4設(shè)計成了一種有狀態(tài)的協(xié)議,自身實現(xiàn)了文件鎖功能和獲取文件系統(tǒng)根節(jié)點功能,不需要NLM和MOUNT協(xié)議協(xié)助了。
  • (2) NFSv4增加了安全性,支持RPCSEC-GSS身份認證。
    (3) NFSv4只提供了兩個請求NULL和COMPOUND,所有的操作都整合進了COMPOUND中,客戶端可以根據(jù)實際請求將多個操作封裝到一個COMPOUND請求中,增加了靈活性。
    (4) NFSv4文件系統(tǒng)的命令空間發(fā)生了變化,服務(wù)端必須設(shè)置一個根文件系統(tǒng)(fsid=0),其他文件系統(tǒng)掛載在根文件系統(tǒng)上導出。
    (5)NFSv4支持delegation。由于多個客戶端可以掛載同一個文件系統(tǒng),為了保持文件同步,NFSv3中客戶端需要經(jīng)常向服務(wù)器發(fā)起請求,請求文件屬性信息,判斷其他客戶端是否修改了文件。如果文件系統(tǒng)是只讀的,或者客戶端對文件的修改不頻繁,頻繁向服務(wù)器請求文件屬性信息會降低系統(tǒng)性能。NFSv4可以依靠delegation實現(xiàn)文件同步。當客戶端A打開一個文件時,服務(wù)器會分配給客戶端A一個delegation。只要客戶端A具有delegation,就可以認為與服務(wù)器保持了一致。如果另外一個客戶端B訪問同一個文件,則服務(wù)器會暫緩客戶端B的訪問請求,向客戶端A發(fā)送RECALL請求。當客戶端A接收到RECALL請求時將本地緩存刷新到服務(wù)器中,然后將delegation返回服務(wù)器,這時服務(wù)器開始處理客戶端B的請求。
    (6) NFSv4修改了文件屬性的表示方法。由于NFS是Sun開發(fā)的一套文件系統(tǒng),設(shè)計之出NFS文件屬性參考了UNIX中的文件屬性,可能Windows中不具備某些屬性,因此NFS對操作系統(tǒng)的兼容性不太好。NFSv4將文件屬性劃分成了三類:
    Mandatory Attributes: 這是文件的基本屬性,所有的操作系統(tǒng)必須支持這些屬性。
    Recommended Attributes: 這是NFS建議的屬性,如果可能操作系統(tǒng)盡量實現(xiàn)這些屬性。
    Named Attributes: 這是操作系統(tǒng)可以自己實現(xiàn)的一些文件屬性。
    (7)服務(wù)器端拷貝:
    如果客戶需要從一個NFS服務(wù)器拷貝數(shù)據(jù)到另外一個NFS服務(wù)器,nfsv4可以讓兩臺NFS服務(wù)器之間直接拷貝數(shù)據(jù),不需要經(jīng)過客戶端。
    (8)資源預(yù)留和回收:
    NFSv4為虛擬分配提供的新特性。隨著存儲虛擬分配功能的普及使用,nfsv4可以為預(yù)留固定大小的存儲空間;同樣在文件系統(tǒng)上刪除文件后,也能夠在存儲上面釋放相應(yīng)空間。
    (9)國際化支持:
    NFSv4文件名、目錄、鏈接、用戶與組可以使用 UTF-8字符集,UTF-8兼容ASCII碼,使得NFSv4支持更多語言。
    (10)RPC合并調(diào)用:
    NFSv4允許將多個請求合并為一個rpc引用,在NFSv3每個請求對應(yīng)一個rpc調(diào)用。WAN環(huán)境中,NFSv4合并rpc調(diào)用可以顯著降低延遲。
    (11)安全性:
    NFSv4用戶驗證采用“用戶名+域名”的模式,與Windows AD驗證方式類似,NFSv4強制使用Kerberos驗證方式。(Kerberos與Windows AD都遵循相同RFC1510標準),這樣方便windows和*nix環(huán)境混合部署。
    (12)pNFS
    并行NFS文件系統(tǒng),元數(shù)據(jù)服務(wù)器負責用戶請求調(diào)度、數(shù)據(jù)服務(wù)器負責客戶請求處理。pNFS需要NFS服務(wù)器和客戶端協(xié)同支持

后來的 NFSv4.1
與NFSv4.0相比,NFSv4.1最大的變化是支持并行存儲了。在以前的協(xié)議中,客戶端直接與服務(wù)器連接,客戶端直接將數(shù)據(jù)傳輸?shù)椒?wù)器中。當客戶端數(shù)量較少時這種方式?jīng)]有問題,但是如果大量的客戶端要訪問數(shù)據(jù)時,NFS服務(wù)器很快就會成為一個瓶頸,抑制了系統(tǒng)的性能。NFSv4.1支持并行存儲,服務(wù)器由一臺元數(shù)據(jù)服務(wù)器(MDS)和多臺數(shù)據(jù)服務(wù)器(DS)構(gòu)成,元數(shù)據(jù)服務(wù)器只管理文件在磁盤中的布局,數(shù)據(jù)傳輸在客戶端和數(shù)據(jù)服務(wù)器之間直接進行。由于系統(tǒng)中包含多臺數(shù)據(jù)服務(wù)器,因此數(shù)據(jù)可以以并行方式訪問,系統(tǒng)吞吐量迅速提升。現(xiàn)在新的是nfsv4.2
所以盡可能用nfs4

補充:
nfs4掛載的fsid問題
問題現(xiàn)象:
掛載nfs4時,報錯:reason given by server :No such file or directory

背景知識:
NFSv4將所有共享使用一個虛擬文件系統(tǒng)展示給客戶端。偽文件系統(tǒng)根目錄(/)使用fsid=0標示,只有一個共享可以是fsid=0。客戶端需要使用“nfs server ip:/”掛載偽文件系統(tǒng),偽文件系統(tǒng)一般使用RO方式共享,其他共享可以通過mount –bind選項在偽文件系統(tǒng)目錄下掛載??蛻舳藪燧d過程需要通過mount –t nfs4指定NFS版本為4,默認采用nfsv3。

解決:
以下是我的配置文件,我想掛在/datapool/nfs目錄
/ *(rw,fsid=0,insecure,no_root_squash)
/datapool/nfs *(rw,fsid=1000,insecure,no_root_squash

然后mount -t nfs4 ip:/datapool/nfs /mnt/nfs/

nfs配置參數(shù)選項說明:
ro:共享目錄只讀;
rw:共享目錄可讀可寫;
all_squash:所有訪問用戶都映射為匿名用戶或用戶組;
no_all_squash(默認):訪問用戶先與本機用戶匹配,匹配失敗后再映射為匿名用戶或用戶組;
root_squash(默認):將來訪的root用戶映射為匿名用戶或用戶組;
no_root_squash:來訪的root用戶保持root帳號權(quán)限;
anonuid=<UID>:指定匿名訪問用戶的本地用戶UID,默認為nfsnobody(65534);
anongid=<GID>:指定匿名訪問用戶的本地用戶組GID,默認為nfsnobody(65534);
secure(默認):限制客戶端只能從小于1024的tcp/ip端口連接服務(wù)器;
insecure:允許客戶端從大于1024的tcp/ip端口連接服務(wù)器;
sync:將數(shù)據(jù)同步寫入內(nèi)存緩沖區(qū)與磁盤中,效率低,但可以保證數(shù)據(jù)的一致性;
async:將數(shù)據(jù)先保存在內(nèi)存緩沖區(qū)中,必要時才寫入磁盤;
wdelay(默認):檢查是否有相關(guān)的寫操作,如果有則將這些寫操作一起執(zhí)行,這樣可以提高效率;
no_wdelay:若有寫操作則立即執(zhí)行,應(yīng)與sync配合使用;
subtree_check(默認) :若輸出目錄是一個子目錄,則nfs服務(wù)器將檢查其父目錄的權(quán)限;
no_subtree_check :即使輸出目錄是一個子目錄,nfs服務(wù)器也不檢查其父目錄的權(quán)限,這樣可以提高效率;
Troubleshooting

1、在上面的操作過程中,如果你不幸遇到下面這個問題的話,可以嘗試更新 Linux kernel 或通過打開 IPv6 來解決這個問題,這是1個 bug:

mount -t nfs4 172.16.20.1:/ /home/vpsee/bak/

mount.nfs4: Cannot allocate memory

2、如果遇到如下問題,可能是因為你的 mount -t nfs 使用的是 nfsv3 協(xié)議,需要明確指出使用 nfsv4 協(xié)議掛載 mount -t nfs4:

mount -t nfs 172.16.20.1:/ /home/vpsee/bak/

mount: mount to NFS server '172.16.20.1' failed: RPC Error: Program not registered.

mount -t nfs4 172.16.20.1:/ /home/vpsee/bak/

如果網(wǎng)絡(luò)不穩(wěn)定

NFS默認是用UDP協(xié)議,換成TCP協(xié)議掛載即可:

mount -t nfs 11.11.165.115:/tmp/test0920 /data -o proto=tcp -o nolock

nfs:server xxx.xxx.xxx.xxx is not responding,still trying的解決方法
方法1 :
我在arm上通過NFS共享文件時出現(xiàn)下面的錯誤提示
nfs:server is not responding,still trying 原因分析:NFS 的默認傳輸協(xié)議是 UDP,而PC機與嵌入式系統(tǒng)通過UPD交互時就會出現(xiàn)嚴重的網(wǎng)卡丟包現(xiàn)象。

解決方法:在客戶端改用TCP協(xié)議,使用下面的命令, **#mount -o tcp 10.10.19.25:/home/export /mnt/local

方法2:** 在目標板上通過NFS復(fù)制PC機上較大文件到目標板上的時候遇到的問題:
nfs: server *** not responding, still trying

修改方法:
nfs mount時候出現(xiàn)的NFS崩潰,按照以下的方式mount
mount -t nfs -o intr,nolock,rsize=1024,wsize=1024 192.168.1.3/root/somedir /client

附 問題四:在測試時,“./progressbar -qws”后出現(xiàn)如Q3一樣的提示 ,按Q3來處理。
以上參考了一些 “ 快樂的天空”的經(jīng)驗,他的網(wǎng)頁是:
http://blog.chinaunix.net/u2/67519/showart_677885.html
他的
mount -t nfs -o intr,nolock,rsize=1024,wsize=1024 192.168.1.3/root/somedir /host
應(yīng)該改成
mount -t nfs -o intr,nolock,rsize=1024,wsize=1024 192.168.1.3/root/somedir /client

轉(zhuǎn)載于:https://www.cnblogs.com/cxjchen/archive/2013/04/28/3048435.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容