nfs分伺服器和客戶機,當使用遠端檔案時只要用mount命令就可把遠端nfs伺服器(ubuntu系統)上的檔案系統掛載在本地檔案系統之下,操作遠端檔案與操作本地檔案沒有不同。nfs伺服器所共享檔案或目錄記錄在/etc/exports檔案中。
嵌入式linux開發中,會經常使用nfs,目標系統(開發板arm)通常作為nfs客戶機使用,linux主機(ubuntu)作為nfs伺服器。在目標系統上通過nfs,將伺服器的nfs共享目錄掛載到本地,可以直接執行伺服器上的檔案。在除錯系統驅動模組以及應用程式,nfs都是十分必要的,並且linux還支援nfs根檔案系統,能直接從遠端nfs root啟動系統,這對嵌入式linux根檔案系統裁剪和整合也是十分有必要的。
第1、安裝nfs-kernel-server:
li@li-virtual-machine:~$ sudo apt-get install nfs-kernel-server
第2、設定nfs-server目錄(被訪問的目錄)。修改/etc/exports檔案,在其中增加nfs伺服器目錄。乙個nfs伺服器可以共享多個nfs目錄,在/etc/exports檔案中,每個目錄的設定獨佔一行,編寫格式如下:
nfs共享目錄路徑 客戶機ip或者名稱(引數1,引數2,...,引數n)
說明:nfs共享目錄可以是主機的任何乙個目錄,為了方便使用,最好將許可權設定為777。
客戶機指的是可以訪問共享目錄的客戶機的ip或者主機名,可以是指定的ip或者主機名。如果使用ip,可以使用萬用字元。假如指定ip為192.168.1.x的客戶機可 以訪問,可以寫成192.168.1.*,如果設定為*,則表示任何客戶機都可以訪問。
訪問引數可以是乙個,也可以是多個,用逗號分開。
引數說明如下: 引數
說明ro
唯讀訪問
rw讀寫訪問
sync
所有資料在請求時寫入共享
async
nfs在寫入資料前可以響應請求
secure
nfs通過1024以下的安全tcp/ip埠傳送
insecure
nfs通過1024以上的埠傳送
wdelay
如果多個使用者要寫入nfs目錄,則歸組寫入(預設)
no_wdelay
如果多個使用者要寫入nfs目錄,則立即寫入,當使用async時,無需此設定
hide
在nfs共享目錄中不共享其子目錄
no_hide
共享nfs目錄的子目錄
subtree_check
如果共享/usr/bin之類的子目錄時,強制nfs檢查父目錄的許可權(預設)
no_subtree_check
不檢查父目錄許可權
all_squash
共享檔案的uid和gid對映匿名使用者anonymous,適合公用目錄
no_all_squash
保留共享檔案的uid和gid(預設)
root_squash
root使用者的所有請求對映成如anonymous使用者一樣的許可權(預設)
no_root_squash
root使用者具有根目錄的完全管理訪問許可權
anonuid=***
指定nfs伺服器/etc/passwd檔案中匿名使用者的uid
anongid=***
指定nfs伺服器/etc/passwd檔案中匿名使用者的gid
假定nfs共享目錄是/home/ky/nfs,允許所有客戶機訪問,/etc/exports檔案最後一行可新增:
/home/ky/nfs *(rw,sync,no_subtree_check, no_root_squash)
第3、啟動nfs伺服器。
啟動portmap(如果有必要)和nfs-kernel-server服務:
li@li-virtual-machine:~$ sudo service portmap start
li@li-virtual-machine:~$ sudo service nfs-kernel-server start
第4、本地驗證nfs伺服器。將nfs伺服器目錄掛載到本機另外乙個目錄下,可以看到掛載點目錄下可以看到nfs伺服器目錄中的檔案。
伺服器中開啟,有hello.c
li@li-virtual-machine:~$ ls /home/ky/nfs/
hello.c
li@li-virtual-machine:~$ sudo mount -t nfs 127.0.0.1:/home/ky/nfs /mnt
li@li-virtual-machine:~$ ls /mnt
hello.c
li@li-virtual-machine:~$ sudo umount /mnt/
用開發板驗證nfs伺服器是否可用。啟動開發板,進入系統,配置好開發板的ip位址後,用mount命令掛載nfs伺服器的nfs目錄:
target# mount -t nfs 192.168.1.3:/home/ky/nfs /mnt -o nolock
或者target#
mount –o nolock 192.168.1.241:/home/ky/nfs /mnt(自己嘗試的較為簡便)
target# ls /mnt
hello.c
target# umount /mnt/
掛載成功後,可以在開發板的/mnt目錄下看到nfs伺服器上的檔案。
說明,使用開發板與虛擬機器安裝的客戶系統進行nfs掛載,需要將虛擬網絡卡設定為bridged模式,並建議使用靜態ip位址。
如果在使用中需要增加新的nfs共享目錄,直接修改/etc/exports檔案即可。修改該檔案後,可以不用重啟nfs服務,用exportfs命令讀取/etc/exports檔案,重新共享輸出。exportfs命令語法如下:
exportfs [-aruv]
選項說明:
-a:全部掛載(或解除安裝) /etc/exports的設定;
-r:重新掛載/etc/exports的設定;
-u:解除安裝某乙個目錄;
-v:在輸出的時候,把共享目錄顯示出來。
如果nfs已經啟動,修改了/etc/exports檔案,執行如下命令,新的設定即可生效:
li@li-virtual-machine
:~$ exportfs -ra
Ubuntu搭建NFS伺服器
sudo apt get install nfs kernel servernfs允許掛載的目錄和許可權需要在檔案 etc exports 這個檔案是使用上述命令安裝nfs kernel server後才生成的 中進行定義。在 etc exports的末尾新增 home liyihai rw,syn...
ubuntu搭建nfs伺服器
由於工作中需要兩台伺服器之間共享一塊硬碟空間,因此準備搭建乙個nfs伺服器,下面會為大家闡述安裝步驟和用php去訪問共享分割槽 nfs netword file system 網路檔案系統,是unix系統之間實現磁碟檔案共享的一種方法,它支援應用程式在客戶端通過網路訪問位於伺服器磁碟中資料的一種檔案...
ubuntu 下nfs 服務搭建
nfs network file system 網路檔案系統 nfs只是一種檔案系統,本身並沒有傳輸功能,是基於rpc協議實現的,為c s架構。也就是說,nfs也只是檔案系統而已,與jffs2,yaffs,ext4等是一類東西。但是nfs的特殊之處在於,它可以通過網路來掛載,而不用燒寫到裝置上。使用...