當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > 嵌入式網(wǎng)絡(luò)NFS文件系統(tǒng)搭建流程
NFS介紹:
NFS就是Network File System的縮寫,是由Sun公司發(fā)展出來的。其目的是讓linux 機(jī)器之間彼此分享文檔。NFS可以讓服務(wù)器端共享的目錄掛載到本地客戶機(jī)上,對于本地客戶機(jī)器來說,遠(yuǎn)程服務(wù)器上的目錄就好像自己的一部分。
在基于Linux的嵌入式系統(tǒng)開發(fā)過程中,我們經(jīng)常用到NFS文件系統(tǒng),我們將嵌入式設(shè)備的文件系統(tǒng)放到NFS服務(wù)器上(經(jīng)常是一臺Linux主機(jī))。這樣,開發(fā)板就可以執(zhí)行NFS服務(wù)器特定目錄的可執(zhí)行程序。這樣做的優(yōu)點在于:不用將程序?qū)懭腴_發(fā)板的Flash,不僅減少了Flash的燒寫次數(shù),同時也方便程序的運行調(diào)試。
NFS服務(wù)搭建:
以下以Ubuntu系統(tǒng)為例安裝配置NFS服務(wù)。
1. 安裝NFS服務(wù)
sudo apt-get install nfs-kernel-server
2. 編輯NFS配置文件:
配置NFS主要涉及配置文件/etc/exports,它用于NFS服務(wù)器端,其中列出了NFS服務(wù)器中要導(dǎo)出的目錄,可以訪問這些目錄的NFS客戶機(jī)及其訪問權(quán)限。
/etc/exports文件的格式如下:
dir_to_export NFS_client (permissions) [NFS_client (permissions)…]
1) dir_to_export是要導(dǎo)出的文件系統(tǒng)或目錄名稱,也就是要共享給客戶端使用的目錄。該目錄必須是一個絕對路徑。
2) NFS_client是可以訪問該NFS服務(wù)器的客戶機(jī)名稱。客戶機(jī)的指定非常靈活,可以是單個主機(jī)的IP地址或域名,也可以是某個子網(wǎng)或域中主機(jī)等。格式中的輸出目錄和客戶端之間,客戶端與客戶端之間都使用空格分隔,但是客戶端和權(quán)限參數(shù)之間不能有空格。
3) Permissions是NFS客戶機(jī)訪問導(dǎo)出目錄的訪問權(quán)限,如ro(只讀)或rw(讀寫)。若權(quán)限參數(shù)不止一個時,則以逗號分隔。具體請參考最后的詳細(xì)說明。
例如:
/foo 192.168.2.0/24(ro) localhost(rw) *(ro,sync)
3. 重啟服務(wù):
sudo /etc/init.d/nfs-kernel-server restart
4. 掛載
mount -t nfs 192.168.2.2:/foo /mnt -o nolock
參數(shù)詳細(xì)說明:
1. 客戶端常用的指定方式 :
客戶端說明
192.168.2.2指定IP地址的主機(jī)
192.168.2.0/24(或192.168.2.*)指定子網(wǎng)中的所有主機(jī)
www.mairao.cn/xuexi/指定域名的主機(jī)
*. hqyj.com指定域中的所有主機(jī)
*(或缺省)所有主機(jī)
2. 選項用來設(shè)置輸出目錄的訪問權(quán)限,用戶映射等,在/etc/exports文件中選項比較多,一般可以分成三類。
用于控制輸出目錄訪問權(quán)限的選項:
訪問權(quán)限選項說明
ro設(shè)置輸出目錄只讀
rw設(shè)置輸出目錄可讀寫
用戶映射選項:
映射選項說明
all_squash不論登入 NFS 的使用者身份為何,他的身份都會被壓縮成為匿名使用者,通常也就是nobody
no_all_squash不將遠(yuǎn)程訪問的所有普通用戶及所屬用戶組都映射為匿名用戶或用戶組(默認(rèn)設(shè)置)
root_squash將root用戶及所屬用戶組都映射為匿名用戶或用戶組(默認(rèn)設(shè)置)
no_root_squash不將root用戶及所屬用戶組都映射為匿名用戶或用戶組
anonuid=xxx將遠(yuǎn)程訪問的所有用戶都映射為匿名用戶,并指定該匿名用戶賬戶為本地用戶賬戶(UID=xxx)
anongid=xxx將遠(yuǎn)程訪問的所有用戶組都映射為匿名用戶組賬戶,并指定該匿名用戶組賬戶為本地用戶組賬戶(GID=xxx)
其他常用選項:
其他選項說明
secure限制客戶端只能從小于1024的TCP/IP端口連接NFS服務(wù)器(默認(rèn)設(shè)置)
insecure允許客戶端從大于1024的TCP/IP端口連接NFS服務(wù)器
sync將數(shù)據(jù)同步寫入內(nèi)存緩沖區(qū)與磁盤中,雖然這樣做效率較低,但可以保證數(shù)據(jù)的一致性
async將數(shù)據(jù)先保存在內(nèi)存緩沖區(qū)中,必要時才寫入磁盤
wdelay檢查是否有相關(guān)的寫操作,如果有則將這些寫操作一起執(zhí)行,這樣可提高效率(默認(rèn)設(shè)置)
no_wdelay若有寫操作則立即執(zhí)行,應(yīng)與sync配合使用
subtree_check若輸出目錄是一個子目錄,則NFS服務(wù)器將檢查其父目錄的權(quán)限(默認(rèn)設(shè)置)
no_subtree_check即使輸出目錄是一個子目錄,NFS服務(wù)器也不檢查其父目錄的權(quán)限,這樣做可提高效率