配置nfs伺服器出現的問題

kevinhg發表於2010-10-28

nfs伺服器常見問題
1
、在配置nfs伺服器時,需要portmap支援,必須啟動portmap服務

2、防火牆,選中No firewall

3System services中去掉ipchainsiptables兩項服務,並確保nfs選中。
4
、在宿主機上自己mount自己,看是否成功就可以判斷NFS是否配好了。例如在宿主機/目錄下執行:
mount 192.168.2.32:/ /mnt
然後到/mnt/目錄下看是否可以列出/目錄下的所有檔案和目錄,可以則說明mount成功,NFS配置成功。
5
、關於通過NFS mount宿主機硬碟除錯應用程式的問題
嵌入式LINUX除錯應用程式最主要的方式就是通過NFS mount宿主機硬碟上的應用程式來執行,通過觀察其在串列埠終端列印的資訊來達到除錯的目的。
在這個過程中,存在一個許可權的問題,即板子mount宿主機硬碟後,這個NFS mount的操作預設的不是以root的許可權執行的,因此一般的板子沒有許可權執行宿主機硬碟上的程式,這時就要在宿主機上執行chmod 777 app,其中app為應用程式可執行檔案的名字。其實這種現象還是比較容易為開發人員解決的,因為當執行應用時,minicom就會報錯, permision denied,或者unknown error 4。但對於有的情況就不一定這麼容易看出是許可權的問題:

例如:除錯WEB管理軟體cgi程式碼時,我們把宿主機上/cgi-bin/通過NFS mount到板子的CGI工作目錄/home/httpd/cgi-bin/上,這時通過瀏覽器IE執行CGI操作時,就會報錯403,這裡也是一個許可權的問題,即 CGI要求其工作目錄可寫,這時就必須在宿主機上執行:chmod 777 /cgi-bin,這時瀏覽器裡立刻就可以工作了。

但實際上,REDHAT LINUX PC自己mount自己成功也不能完全說明NFS就可以工作了,因為還有一個防火牆的問題,一般的我們建議客戶在安裝REDHAT LINUX時就預設選擇NO FIREWALL,但若客戶沒有這樣選擇的話,REDHAT 啟動時會載入防火牆規則,這樣你自己能 mount 自己,但其它PC和板子也無法mount這臺PC。所以這時要執行setup關閉防火牆。注意!setup裡面的防火牆顯示永遠都是HIGH,這個是REDHAT一直的一個小BUG,即使你安裝時預設選擇了NO FIREWALLsetup裡面也照樣會顯示防火牆設定是HIGH的,這個可以不必理會。只要你選擇了一次NO FIREWALL就可以了。關於防火牆等問題,請參見您的光碟裡面的PDF手冊。另外,建議對LINUX操作不是非常熟悉的客戶,務必請閱讀我們手冊附錄的“LINUX常用命令
還有,就是REDHAT還有這樣一個問題,就是加入閘道器設定後,網路建立TCP連結非常慢,例如FTP/TELNET/NFS等都是,建立連結後,乙太網通訊還是很快的。若您安裝網路時加入了閘道器,就會出現你在板子NFS mount REDHAT PC時,敲入mount -o nolock pcip:/ /mnt後非常長的時間不返回SHELL提示符,就一直停在那裡,這就是建立連線的時間非常的長。一般的,遇到這種情況,建議在REDHAT LINUX PC上執行命令:route del default,即去掉閘道器,然後再進行NFS mount等操作就會非常快了。
再有,若您用的不是華恆的開發板,那麼可能您的busybox可能沒有加入NFS mount的支援,這樣您就需要重新編譯busybox,加入NFS mount支援,然後更新ramdisk,重新燒寫即可。

當然了,測試NFS你必須用乙太網將板子和REDHAT LINUX PC連線起來才行,連線的方式有兩種:一是板子和PC都用普通的網線接到HUB或者交換機上;二是用交叉網線將板子和PC直連起來,注意!這種網線是特製的,內部收發交換的!

測試板子和PC網路是否連通的方式是:板子正常啟動LINUX後,在minicom裡面ping PC看是否能通即可,當然了,用PCping板子看是否通也是可以的。注意:板子必須啟動到LINUX後才能ping通,板子處在bootloader階段一般是無法ping通的,即使這時板子的bootloader初始化了乙太網也不行。

若板子跟PC的網路不通,mount報錯資訊為:
# mount -o nolock 192.168.2.211:/ /mnt
mount: RPC: Unable to receive; eNrno = No route Fo host
mount: Sfsmount failed::Bad file descriptor
mount program didn't pass remote address!
mount: Mounting 192.168.2.211:/ on /mnt failed: Invalid argument
3
/etc/exports檔案中關於nfs配置的正確範例
/mnt/hdb6/2410/          *(rw,async,no_root_squash)

相關文章