[轉] linux arm nfs: server is not responding,still trying 解決方法

出處:http://hi.baidu.com/rjz78/blog/item/a3e6e7ee6276512e2cf53447.html

描述:我在arm上通过NFS共享文件时出现下面的错误提示
nfs:server is not responding,still trying


原因分析:NFS 的默认传输协议是 UDP,而PC机与嵌入式系统通过UPD交互时就会出现严重的网卡丢包现象。


解决方法:在客户端改用TCP协议,使用下面的命令,
#mount -o tcp 10.10.19.25:/home/export /mnt/local






第十三章、檔案伺服器之一:NFS 伺服器
http://linux.vbird.org/linux_server/0330nfs.php#nfsserver_look



個人步驟:
1.vi /etc/exports
增加內容:/home/eric      *(rw,async,no_root_squash)
2.重啟nfs:/etc/init.d/nfs restart   or   exportfs -arv


3..檢查分享目錄
showmount -e localhost
4.關閉防火牆
service iptables stop
5.在arm上mount
mount -t nfs -o nolock -o tcp 172.21.5.65:/home/eric /nand3

  • 防火牆的設定問題與解決方案:
一般來說, NFS 的服務僅會對內部網域開放,不會對網際網路開放的。然而,如果你有特殊需求的話, 那麼也可能會跨不同網域就是了。但是,NFS 的防火牆特別難搞,為什麼呢?因為除了固定的 port 111, 2049 之外, 還有很多不固定的埠口是由 rpc.mountd, rpc.rquotad 等服務所開啟的,所以,你的 iptables 就很難設定規則! 那怎辦?難道整個防火牆機制都要取消才可以?
為了解決這個問題, CentOS 6.x 有提供一個固定特定 NFS 服務的埠口設定檔,那就是 /etc/sysconfig/nfs 啦! 你在這個檔案裡面就能夠指定特定的埠口,這樣每次啟動 nfs 時,相關服務啟動的埠口就會固定,如此一來, 我們就能夠設定正確的防火牆囉!這個設定檔內容很多,絕大部分的資料你都不要去更改,只要改跟 PORT 這個關鍵字有關的資料即可。 那麼需要更改的 rpc 服務有哪些呢?主要有 mountd, rquotad, nlockmgr 這三個,所以你應該要這樣改:
[root@www ~]# vim /etc/sysconfig/nfs
RQUOTAD_PORT=1001   <==約在 13 行左右
LOCKD_TCPPORT=30001 <==約在 21 行左右
LOCKD_UDPPORT=30001 <==約在 23 行左右
MOUNTD_PORT=1002    <==約在 41 行左右
# 記得設定值最左邊的註解服務要拿掉之外,埠口的值你也可以自行決定。

[root@www ~]# /etc/init.d/nfs restart
[root@www ~]# rpcinfo -p | grep -E '(rquota|mount|nlock)'
    100011    2   udp   1001  rquotad
    100011    2   tcp   1001  rquotad
    100021    4   udp  30001  nlockmgr
    100021    4   tcp  30001  nlockmgr
    100005    3   udp   1002  mountd
    100005    3   tcp   1002  mountd
# 上述的輸出資料已經被鳥哥彙整過了,沒用到的埠口先挪掉了啦!




未經允許不得轉載:GoMCU » [轉] linux arm nfs: server is not responding,still trying 解決方法