姓名:張猛
【嵌牛導(dǎo)讀】:NFS是一種分布式的文件系統(tǒng)堵泽,用于共享文件和打印機气忠。它允許用戶調(diào)用掛載遠端的文件系統(tǒng)或設(shè)備來實現(xiàn)共享,使用方式與掛載本機的文件系統(tǒng)一樣。NFS使用“客戶-服務(wù)器”模型侄旬。在這種模型中,服務(wù)器輸出需要共享的目錄煌妈,客戶可通過網(wǎng)絡(luò)掛載這些目錄并訪問其中的文件儡羔。以前只是聽別人說,現(xiàn)在終于用到了璧诵,感覺還不錯汰蜘,總結(jié)一些自己在Ubuntu下安裝配置的過程。
【嵌牛鼻子】:NFS? ?掛載? mount
【嵌牛提問】:如何在自己的linux上安裝配置nfs服務(wù)
【嵌牛正文】:首先看一張圖之宿,說明我們?nèi)粘T谇度胧筋I(lǐng)域中nfs扮演的角色
下面我是昨天晚上的具體安裝步驟:
1族操、執(zhí)行命令:sudo apt-get install nfs-kernel-server
2.執(zhí)行命令:mkdir /home/song/nfs建立一個nfs服務(wù)的專有的文件夾,這里路徑依自己喜好而定!不過要記得這個路徑
3.3色难、建立好文件夾后泼舱,接著執(zhí)行命令:sudo vim /etc/exports配置nfs,并在里面添加下面一句代碼
/home/wooya/nfs *(rw,sync,no_root_squash,no_subtree_check)這一行的含義是:
/home/wooya/nfs:與nfs服務(wù)客戶端共享的目錄枷莉,這個路徑必須和你前面設(shè)置的文件的路徑一致娇昙!
*:允許所有的網(wǎng)段訪問,也可以使用具體的IP
rw:掛接此目錄的客戶端對該共享目錄具有讀寫權(quán)限
sync:資料同步寫入內(nèi)存和硬盤
no_root_squash:root用戶具有對根目錄的完全管理訪問權(quán)限笤妙。
no_subtree_check:不檢查父目錄的權(quán)限冒掌。
5、修改完上述配置文件保存退出蹲盘。
6股毫、執(zhí)行命令:sudo /etc/init.d/portmap restart重啟portmap服務(wù)。nfs是一個RPC程序召衔,使用它前铃诬,需要映射好端口,通過portmap設(shè)定薄嫡。
7氧急、執(zhí)行命令:sudo /etc/init.d/nfs-kernel-server restart重啟nfs服務(wù)。
8.接下來就可以進行目標(biāo)板子的掛載了
目標(biāo)機上電毫深,目標(biāo)板上的Linux操作系統(tǒng)起來以后,在PC機上Ubuntu操作系統(tǒng)上打開minicom毒姨,通過串口向目 ? ? ? 標(biāo)板發(fā)送shell命令哑蔫。
像主機操作一樣,首先檢查目標(biāo)板(宿主機)的IP是否與宿主機的IP再同一個地址段上弧呐,否則用上面用過的命令 ? ? ? ? 進行檢查和設(shè)置本地IP闸迷。
設(shè)置完IP之后可以ping一下檢查網(wǎng)卡、網(wǎng)線是否連接正確俘枫。
既在minicom中輸入# ping 192.168.1.101 (宿主機IP地址)連接成功會不斷的打印信息腥沽。
接下來就是在開發(fā)板上進行掛載mount
# mount ?-onolock192.168.1.101:/opt/nfsroot ? ?/mnt
其中:/opt/nfsroot是 宿主機的共享目錄; ?/mnt是開發(fā)板的掛載目錄
如果你想取消掛在可以使用命令# umount? /mnt就可以了
PS?一下引用自:http://www.cnblogs.com/jingzhishen/p/3163742.html
其它nfs常用的參數(shù)有:
ro
只讀訪問
rw 讀寫訪問sync 所有數(shù)據(jù)在請求時寫入共享
async
nfs在寫入數(shù)據(jù)前可以響應(yīng)請求
secure
nfs通過1024以下的安全TCP/IP端口發(fā)送
insecure
nfs通過1024以上的端口發(fā)送
wdelay
如果多個用戶要寫入nfs目錄鸠蚪,則歸組寫入(默認)
no_wdelay
如果多個用戶要寫入nfs目錄今阳,則立即寫入,當(dāng)使用async時茅信,無需此設(shè)置盾舌。
hide 在nfs共享目錄中不共享其子目錄
no_hide
共享nfs目錄的子目錄
subtree_check
如果共享/usr/bin之類的子目錄時,強制nfs檢查父目錄的權(quán)限(默認)
no_subtree_check
和上面相對蘸鲸,不檢查父目錄權(quán)限
all_squash
共享文件的UID和GID映射匿名用戶anonymous妖谴,適合公用目錄。
no_all_squash
保留共享文件的UID和GID(默認)
root_squash
root用戶的所有請求映射成如anonymous用戶一樣的權(quán)限(默認)
no_root_squas
root用戶具有根目錄的完全管理訪問權(quán)限
anonuid=xxx
指定nfs服務(wù)器/etc/passwd文件中匿名用戶的UID
anongid=xxx
指定nfs服務(wù)器/etc/passwd文件中匿名用戶的GID
3酌摇、重啟服務(wù)
$sudo /etc/init.d/portmap restart
$sudo /etc/init.d/nfs-kernel-server restart
4膝舅、測試nfs
此時可以運行以下命令來顯示一下共享出來的目錄:
$showmount -e
關(guān)于NFS配置錯誤
ubuntu測試本機nfs出錯:mount.nfs:access denied by server while mounting...
相信出現(xiàn)這種錯誤的應(yīng)該有一些人吧嗡载,沒關(guān)系,一會就幫你搞定仍稀。
首先運行:sudo vim /etc/exports
在其文本后添加
/home/work 192.168.1.*(rw,sync,no_root_squash)
然后保存退出洼滚。
注意,上面的主機IP可能不能使用*來通配琳轿,否則在客戶機上會出現(xiàn)訪問拒絕判沟,但是如果我們要設(shè)置局域網(wǎng)訪問呢?怎么辦崭篡,使用子網(wǎng)掩碼例如:10.1.60.0/255.255.254.0即可讓10.1.60.*和10.1.61.*都可以訪問,還可以使用10.1.60/23這種方式類確定子網(wǎng)挪哄。
上面設(shè)置了只要在192.168.1.*這個網(wǎng)段的所有IP地址用戶都可以訪問共享目錄,但我只想讓一個IP地址訪問琉闪,比如 192.168.1.101(把剛才192.168.1.*直接換成192.168.1.101不行么迹炼?應(yīng)該可以吧,沒試過)颠毙,那么就可以這樣設(shè)置了斯入。
可以通過設(shè)定/etc/hosts.deny和/etc/hosts.allow文件來限制網(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
同時使用這兩個文件就會使得只有ip為192.168.1.101的機器使用NFS服務(wù)蛀蜜。你的target
board的ip地址設(shè)定為192.168.1.101刻两,這樣就可以了。
啟用新的配置
exportfs 指令主要的三個作用:
1. exportfs -rv 重新讀取共享配置文件滴某,馬上生效
2. exportfs -auv 馬上停止所有本機上的NFS共享磅摹,并不改變 /etc/exports 文件的內(nèi)容,只是當(dāng)前停止共享
3. exportfs -av 顯示所有當(dāng)前機器上的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)
#
開發(fā)板中自啟動腳本掛載文件:
############################################################
# 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 .正在分析軟件包的依賴關(guān)系樹
4 .正在讀取狀態(tài)信息... 完成
5 .注意霎奢,選取 rpcbind 而非 portmap
yingc@yingc:~$ sudo apt-getinstall portmap
正在讀取軟件包列表... 完成
正在分析軟件包的依賴關(guān)系樹
正在讀取狀態(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)
注意:使用上面這個,碰到了權(quán)限問題幕侠,開發(fā)板上不能創(chuàng)建文件等帝美,
但是在pc的對應(yīng)目錄上可以直接創(chuàng)建(不需要sudo權(quán)限)
此時可以使用:
/opt/nfs *(rw,async,no_root_squash)
再restart即可:
sudo /etc/init.d/nfs-kernel-server restart