一、環境
虛拟機:VMware 7.0
Linux系統:Ubuntu10.04
PC機作業系統:WindowsXP
客戶機端 :ARM9開發闆(freescale iMx27)
二、安裝NFS伺服器程式
apt-get install nfs-kernel-server
apt-get install nfs-common
也可以使用Synaptic(新立得)軟體包管理器安裝,搜尋“nfs”,選擇軟體包"nfs-kernel- server"項進行安裝即可,安裝過程中預設啟動SUNRPC服務和nfs服務,并建立/etc/exports和、etc /default/nfs-kernel-server配置檔案,等待使用者完成nfs安裝後,配置将要共享的資源,可以使用netstat -tl指令檢查nfs端口是否已經打開;
三、 配置portmap
方法1: 編輯/etc/default/portmap, 将 -i 127.0.0.1 去掉.
方法2: $ sudo dpkg-reconfigure portmap , 對Should portmap be bound to the loopback address? 選N.
配置/etc/hosts.deny
(禁止任何host(主機)能和你的NFS伺服器進行NFS連接配接),加入:
### NFS DAEMONS
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
配 置/etc/hosts.allow
允許那些你想要的主機和你的NFS伺服器建立連接配接。下列步驟将允許任何IP位址以192.168.197開頭的主機(連 接到NFS伺服器上),也可以指定特定的IP位址。參看man頁 hosts_access(5), hosts_options(5)。加入:
### NFS DAEMONS
portmap: 10.176.28.
lockd: 10.176.28.
rquotad: 10.176.28.
mountd: 10.176.28.
statd: 10.176.28.
/etc/hosts.deny 和 /etc/hosts.allow 設定對portmap的通路. 采用這兩個配置檔案有點類似"mask"的意思. 現在/etc/hosts.deny中禁止所有使用者對portmap的通路. 再在/etc/hosts.allow 中允許某些使用者對portmap的通路.
運作 $ sudo /etc/init.d/portmap restart 重新開機portmap daemon.
配置/etc/exports
NFS挂載目錄及權限由/etc/exports檔案定義
比如我要将将我的home目錄中的/home/wjd/qte目錄讓10.176.28.*的IP共享, 則在該檔案末尾添加下列語句:
/home/wjd/work 10.176.28.* (rw,sync,no_root_squash)
10.176.28.* 網段内的NFS用戶端能夠共享NFS伺服器/home/wjd/work目錄内容.且有讀,寫權限, 并且該使用者進入/home/zp/share目錄後的身份為root
最好加上sync, 否則 $ sudo exportfs -r 時會給出警告, sync是NFS的預設選項.
(運作 $ showmount -e 檢視NFS server的export list.
若更改了/etc/exports, 運作 $ sudo exportfs -r 更新
運作 $ sudo /etc/init.d/nfs-kernel-server restart 重新開機nfs服務)
四.配置IP位址
1.配置主機IP位址:将PC主機IP位址設定為靜态IP:10.176.28.249 Mask:255.255.255.0;Gateway:10.176.28.1
2.配置VMware:
将VMware的網絡連接配接設定成橋接方式, 在VMware->Settings->Network Adapter->bridged,選上。Device status的連接配接全部選上。
3.配置Ubuntu
将Ubuntu也設定成靜态IP,IP位址與主機PC在同一個網段内,為:10.176.28.248
4、配置開發闆IP位址
開發闆IP位址設定為:10.176.28.247,與主機PC、Ubuntu都在同一網段内
測試一下,互相ping一下,看網絡是否連通
五、測試nfs
1、Ubuntu本機測試
#sudo mount 10.176.28.248:/home/wjd/work /mnt/nfs
2、開發闆測試
#mount -t nfs -o nolock 10.176.28.248:/home/wjd/work /mnt/nfs
若出現錯誤為:
portmap: server localhost not responding, timed out
解決辦法:
mount -t nfs -o nolock node1:/public /public
即增加-o nolock參數,原因:
Unfsd doesn't support NLM locking, and it's causing the lockd daemon to be started (which again requires the portmapper to be installed etc.)