姓名:張猛
【嵌牛導(dǎo)讀】:NFS是一種分布式的文件系統(tǒng)曼氛,用于共享文件和打印機(jī)。它允許用戶(hù)調(diào)用掛載遠(yuǎn)端的文件系統(tǒng)或設(shè)備來(lái)實(shí)現(xiàn)共享,使用方式與掛載本機(jī)的文件系統(tǒng)一樣佳吞。NFS使用“客戶(hù)-服務(wù)器”模型。在這種模型中棉安,服務(wù)器輸出需要共享的目錄底扳,客戶(hù)可通過(guò)網(wǎng)絡(luò)掛載這些目錄并訪問(wèn)其中的文件。以前只是聽(tīng)別人說(shuō)贡耽,現(xiàn)在終于用到了衷模,感覺(jué)還不錯(cuò)鹊汛,總結(jié)一些自己在Ubuntu下安裝配置的過(guò)程。
【嵌牛鼻子】:NFS? ?掛載? mount????
【嵌牛提問(wèn)】:如何在自己的linux上安裝配置nfs服務(wù)
【嵌牛正文】:首先看一張圖阱冶,說(shuō)明我們?nèi)粘T谇度胧筋I(lǐng)域中nfs扮演的角色
下面我是昨天晚上的具體安裝步驟:
1刁憋、執(zhí)行命令:sudo apt-get install nfs-kernel-server
2.執(zhí)行命令:mkdir /home/song/nfs建立一個(gè)nfs服務(wù)的專(zhuān)有的文件夾,這里路徑依自己喜好而定木蹬!不過(guò)要記得這個(gè)路徑
3.3至耻、建立好文件夾后,接著執(zhí)行命令:sudo vim /etc/exports配置nfs镊叁,并在里面添加下面一句代碼
/home/wooya/nfs *(rw,sync,no_root_squash,no_subtree_check)這一行的含義是:
/home/wooya/nfs:與nfs服務(wù)客戶(hù)端共享的目錄尘颓,這個(gè)路徑必須和你前面設(shè)置的文件的路徑一致!
*:允許所有的網(wǎng)段訪問(wèn)晦譬,也可以使用具體的IP
rw:掛接此目錄的客戶(hù)端對(duì)該共享目錄具有讀寫(xiě)權(quán)限
sync:資料同步寫(xiě)入內(nèi)存和硬盤(pán)
no_root_squash:root用戶(hù)具有對(duì)根目錄的完全管理訪問(wèn)權(quán)限疤苹。
no_subtree_check:不檢查父目錄的權(quán)限。
5敛腌、修改完上述配置文件保存退出痰催。
6、執(zhí)行命令:sudo /etc/init.d/portmap restart重啟portmap服務(wù)迎瞧。nfs是一個(gè)RPC程序夸溶,使用它前,需要映射好端口凶硅,通過(guò)portmap設(shè)定缝裁。
7、執(zhí)行命令:sudo /etc/init.d/nfs-kernel-server restart重啟nfs服務(wù)足绅。
8.接下來(lái)就可以進(jìn)行目標(biāo)板子的掛載了
目標(biāo)機(jī)上電捷绑,目標(biāo)板上的Linux操作系統(tǒng)起來(lái)以后,在PC機(jī)上Ubuntu操作系統(tǒng)上打開(kāi)minicom氢妈,通過(guò)串口向目 ? ? ? 標(biāo)板發(fā)送shell命令粹污。
像主機(jī)操作一樣,首先檢查目標(biāo)板(宿主機(jī))的IP是否與宿主機(jī)的IP再同一個(gè)地址段上首量,否則用上面用過(guò)的命令 ? ? ? ? 進(jìn)行檢查和設(shè)置本地IP壮吩。
設(shè)置完IP之后可以ping一下檢查網(wǎng)卡、網(wǎng)線是否連接正確加缘。
既在minicom中輸入# ping 192.168.1.101 (宿主機(jī)IP地址)連接成功會(huì)不斷的打印信息鸭叙。
接下來(lái)就是在開(kāi)發(fā)板上進(jìn)行掛載mount
# mount ?-onolock192.168.1.101:/opt/nfsroot ? ?/mnt
其中:/opt/nfsroot是 宿主機(jī)的共享目錄; ?/mnt是開(kāi)發(fā)板的掛載目錄
如果你想取消掛在可以使用命令# umount? /mnt就可以了
PS?一下引用自:http://www.cnblogs.com/jingzhishen/p/3163742.html
其它nfs常用的參數(shù)有:
ro
只讀訪問(wèn)
rw 讀寫(xiě)訪問(wèn)sync 所有數(shù)據(jù)在請(qǐng)求時(shí)寫(xiě)入共享
async
nfs在寫(xiě)入數(shù)據(jù)前可以響應(yīng)請(qǐng)求
secure
nfs通過(guò)1024以下的安全TCP/IP端口發(fā)送
insecure
nfs通過(guò)1024以上的端口發(fā)送
wdelay
如果多個(gè)用戶(hù)要寫(xiě)入nfs目錄拣宏,則歸組寫(xiě)入(默認(rèn))
no_wdelay
如果多個(gè)用戶(hù)要寫(xiě)入nfs目錄沈贝,則立即寫(xiě)入,當(dāng)使用async時(shí)勋乾,無(wú)需此設(shè)置宋下。
hide 在nfs共享目錄中不共享其子目錄
no_hide
共享nfs目錄的子目錄
subtree_check
如果共享/usr/bin之類(lèi)的子目錄時(shí)嗡善,強(qiáng)制nfs檢查父目錄的權(quán)限(默認(rèn))
no_subtree_check
和上面相對(duì),不檢查父目錄權(quán)限
all_squash
共享文件的UID和GID映射匿名用戶(hù)anonymous学歧,適合公用目錄罩引。
no_all_squash
保留共享文件的UID和GID(默認(rèn))
root_squash
root用戶(hù)的所有請(qǐng)求映射成如anonymous用戶(hù)一樣的權(quán)限(默認(rèn))
no_root_squas
root用戶(hù)具有根目錄的完全管理訪問(wèn)權(quán)限
anonuid=xxx
指定nfs服務(wù)器/etc/passwd文件中匿名用戶(hù)的UID
anongid=xxx
指定nfs服務(wù)器/etc/passwd文件中匿名用戶(hù)的GID
3、重啟服務(wù)
$sudo /etc/init.d/portmap restart
$sudo /etc/init.d/nfs-kernel-server restart
4撩满、測(cè)試nfs
此時(shí)可以運(yùn)行以下命令來(lái)顯示一下共享出來(lái)的目錄:
$showmount -e
關(guān)于NFS配置錯(cuò)誤
ubuntu測(cè)試本機(jī)nfs出錯(cuò):mount.nfs:access denied by server while mounting...
相信出現(xiàn)這種錯(cuò)誤的應(yīng)該有一些人吧蜒程,沒(méi)關(guān)系,一會(huì)就幫你搞定伺帘。
首先運(yùn)行:sudo vim /etc/exports
在其文本后添加
/home/work 192.168.1.*(rw,sync,no_root_squash)
然后保存退出昭躺。
注意,上面的主機(jī)IP可能不能使用*來(lái)通配伪嫁,否則在客戶(hù)機(jī)上會(huì)出現(xiàn)訪問(wèn)拒絕领炫,但是如果我們要設(shè)置局域網(wǎng)訪問(wèn)呢?怎么辦张咳,使用子網(wǎng)掩碼例如:10.1.60.0/255.255.254.0即可讓10.1.60.*和10.1.61.*都可以訪問(wèn),還可以使用10.1.60/23這種方式類(lèi)確定子網(wǎng)帝洪。
上面設(shè)置了只要在192.168.1.*這個(gè)網(wǎng)段的所有IP地址用戶(hù)都可以訪問(wèn)共享目錄,但我只想讓一個(gè)IP地址訪問(wèn)脚猾,比如 192.168.1.101(把剛才192.168.1.*直接換成192.168.1.101不行么葱峡?應(yīng)該可以吧,沒(méi)試過(guò))龙助,那么就可以這樣設(shè)置了砰奕。
可以通過(guò)設(shè)定/etc/hosts.deny和/etc/hosts.allow文件來(lái)限制網(wǎng)絡(luò)服務(wù)的存取權(quán)限。
***/etc/hosts.deny***
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
***/etc/hosts.allow***
portmap:192.168.1.101
lockd:192.168.1.101
mountd:192.168.1.101
rquotad:192.168.1.101
statd:192.168.1.101
同時(shí)使用這兩個(gè)文件就會(huì)使得只有ip為192.168.1.101的機(jī)器使用NFS服務(wù)提鸟。你的target
board的ip地址設(shè)定為192.168.1.101军援,這樣就可以了。
啟用新的配置
exportfs 指令主要的三個(gè)作用:
1. exportfs -rv 重新讀取共享配置文件称勋,馬上生效
2. exportfs -auv 馬上停止所有本機(jī)上的NFS共享胸哥,并不改變 /etc/exports 文件的內(nèi)容,只是當(dāng)前停止共享
3. exportfs -av 顯示所有當(dāng)前機(jī)器上的NFS共享目錄信息
我的/etc/exports 文件:
# /etc/exports: the access control list for filesystems which may be exported
#?? ??? ?to NFS clients.? See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes?????? hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4??????? gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes? gss/krb5i(rw,sync,no_subtree_check)
#/home/yingc/work *(rw,async,no_root_squash)
/home/yingc/work/durian/solution/output *(rw,async,no_root_squash)
/home/yingc/work/durian1/solution/output *(rw,async,no_root_squash)
/home/yingc/work/durian/buildroot/package/netscript/sbin1 *(rw,async,no_root_squash)
#
開(kāi)發(fā)板中自啟動(dòng)腳本掛載文件:
############################################################
# mount host dir
############################################################
mount -t nfs -o rw,nolock,udp 192.168.110.10:/home/yingc/work/durian/solution/ob
mount -t nfs -o rw,nolock,udp 192.168.110.10:/home/yingc/work/durian/buildroot/t
ubuntu14.10的相關(guān)配置:
1 .yingc@yingc:~$ sudo apt-getinstall portmap
2 .正在讀取軟件包列表... 完成
3 .正在分析軟件包的依賴(lài)關(guān)系樹(shù)
4 .正在讀取狀態(tài)信息... 完成
5 .注意赡鲜,選取 rpcbind 而非 portmap
yingc@yingc:~$ sudo apt-getinstall portmap
正在讀取軟件包列表... 完成
正在分析軟件包的依賴(lài)關(guān)系樹(shù)
正在讀取狀態(tài)信息... 完成
注意空厌,選取 rpcbind 而非 portmap
1.sudo apt-getinstall nfs-kernel-server
2.sudo vim /etc/exports
添加:
/opt/nfs? *(rw,sync,all_squash,no_subtree_check)
注意:使用上面這個(gè),碰到了權(quán)限問(wèn)題蝗蛙,開(kāi)發(fā)板上不能創(chuàng)建文件等蝇庭,
但是在pc的對(duì)應(yīng)目錄上可以直接創(chuàng)建(不需要sudo權(quán)限)
此時(shí)可以使用:
/opt/nfs *(rw,async,no_root_squash)
再restart即可:
sudo /etc/init.d/nfs-kernel-server restart