nfs:server 172.168.1.22 not responding,still trying問題解決方法 ,平臺爲RealARM 210平臺。linux
這裏的問題是在使用nfs掛載文件系統時遇到的,因此這裏只說明文件系統掛載時出現這問題的解決方案。出現問題的狀況請看下圖:ubuntu
在網上搜索能夠搜到解決的辦法,但基本都是大同小異,或者說的不太明白,致使卡了我半天也沒解決。網上的解決方法以下,也許有些人的問題能夠解決可是個人問題確實是沒有解決。服務器
在mini2440開發板上掛載主機上的nfs文件系統後傳送較大文件時會出現下面的提示:
nfs:server is not responding, still trying
問題緣由:
Mandag 27 november 2006 20:12 skrev Verner Kjrsgaard:
> 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.
大意是說具備較高的傳送速率的NFS主機網卡和較低速率的目標機網卡之間不匹配,要解決此問題須要在掛載文件系統時添加額外的參數。
解決辦法:
1 當目標機啓動後已經進入linux系統的狀況下,使用如下mount命令:
mount -t nfs -o intr,nolock,rsize=1024,wsize=1024 59.70.245.216:/home/lizhao/rootfs /mnt/nfs
(即添加了intr rsize=1024 wsize=1024 參數,參數的具體意義見下面註釋)
2 當目標機處在引導階段向內核傳遞命令行參數時,使用如下參數:
console=ttySAC0 root=/dev/nfs nfsroot=59.70.245.216:/home/lizhao/rootfs, flags=intr,rsize=1024,wsize=1024ip=59.70.245.222:59.70.245.216:59.70.245.216:255.255.255.0:leao:eth0:off
參數解釋:
intr -- 當服務器宕機或者沒法到達時,容許中斷NFS請求。 nolock--禁用文件鎖。 rsize = 8192 和 wsize=8192 -- 經過設定大的同時傳輸的數據塊大小(bytes),以提升NFS讀寫的速度。改變這些值時要小心,一些舊的linux內核和網卡在大的塊大小不能正常工做。this
後來看到一個貼說了,在加載文件系統時,是否是進行了系統的IP配置,進而致使了這樣的錯誤(以下圖所示),檢測rcS文件後發現確實有配置。興奮之餘,趕忙修改試試吧。spa
因爲這是掛載linux(我這裏使用的是ubuntu10.04版本)系統下共享的,因此文件的修改是在ubuntu中直接修改的。以下圖:命令行
看上圖圈的部分,這裏是加載了一個腳本文件,該文件與rcS相同文件夾下,ifconfig-eth0這個腳本文件就是對ip的配置。好來看看ifconfig-eth0這個腳本的內容吧,以下圖:server
這裏面有一個if條件句,在這裏if條件句是爲真的,在/etc目錄下有這個文件,以下圖:ip
那麼這裏執行的就是ifconfig-eth0這個腳本文件中source /etc/eth0-setting這部分,也就是下圖的方框部分,若是沒有這個文件的話執行的就是if語句中else部分(即下圖中橢圓部分)了。開發
由此可知,IP的配置文件是eth0-setting這個文件了,打開看看,以下圖:terminal
因爲個人IP網關是172.168.1.1,那麼這個IP配置就是不行的了,在u-boot時IP網關是172.168.1.1,可是在掛載文件系統時就被修改成上圖所示的IP了,而就由於此,IP就再也不同一網段內了,通訊失敗,因此就出現了無應答的錯誤了。修改這個文件以下圖所示,個人是下圖的IP,你們請修改爲本身的網段IP。
修改後,保存重啓。以徹底正常了。
對於其餘的開發板,rcS腳本中可能不是加載ifconfig-eth0這個腳本去配置IP,就是沒有下面這句:
而是可能有下面這句去配置
那麼,修改上圖所示的IP便可。
另附上個人u-boot的環境參數設置:
在附上設置的命令:
setenv bootcmd "tftp C0008000 zImage;bootm C0008000 40800000"
setenv bootargs noinitrd root=/dev/nfs console=ttySAC2 init=/linuxrc nfsroot=172.168.1.22:/nfsboot/210system_new/system ip=172.168.1.21:172.168.1.22:172.168.1.1:255.255.255.0::eth0:on
IP和文件系統的目錄修改成本身的便可。