nfs(network file system),即網路檔案系統。一種使用於分布式檔案協定,由sun公司開發。功能是通過網路讓不同的機器、不同的作業系統能夠分享個人資料,讓應用程式通過網路可以訪問位於伺服器磁碟中的資料。
nfs在檔案傳送或資訊傳送的過過程中,依賴於rpc協議。rpc,遠端過程呼叫(remote procedure call),是使客戶端能夠執行其他系統中程式的一種機制。nfs本身是沒有提供資訊傳輸的協議和功能的,但nfs卻能讓我們通過網路進行資料的分享,就是因為nfs使用了rpc提供的傳輸協議,可以說nfs就是使用prc的乙個程式。
首先確定一下是否已經安裝了nfs,因為在通常情況下,是作為系統的預設包安裝的。
未安裝的情況下,可以使用下面的命令進行安裝:
nfs伺服器端安裝配置:(在centos6.3當中,portmap服務由rpcbind負責)
[root@localhost ~]# yum -y install nfs-utils rpcbind
nfs客戶端安裝配置:(安裝無需啟動nfs服務,直接掛載目錄)
[root@localhost ~]# yum -y install nfs-utils
系統平台:centos release 6.3 (final)
nfs server ip:192.168.86.53
nfs client ip:192.168.86.66
防火牆已關閉/iptables: firewall is not running.
注:這裡僅是測試環境下臨時關閉防火牆,不過這樣做很不安全。被訪問的nfs伺服器上的防火牆沒有新增規則,向iptables裡面新增以下命令檢視的所有埠即可。
rpcinfo -p 192.168.86.53
1、開啟rcp服務
[root@localhost ~]# service rpcbind start
starting rpcbind: [ ok ]
檢視rpcbind服務埠
[root@localhost ~]# netstat -antlp|grep rpcbind
tcp 0 0 0.0.0.0:111 0.0.0.0:* listen 1368/rpcbind
2、開啟nfs服務
[root@localhost ~]# service nfs start
starting nfs services: [ ok ]
starting nfs quotas: [ ok ] #磁碟檢查。這是乙個定義使用者最多使用多少磁碟空間的執行緒(實現磁碟配額的控制)。
starting nfs mountd: [ ok ] #等待客戶端掛載 掛載守護程序,負責客戶端**認證的程序
starting nfs daemon: [ ok ]#守護程序,檔案讀寫nfs 。不受rpc的管理,監聽在tcp和udp的2049埠。
starting rpc idmapd: [ ok ]#id號對映
4、停止nfs服務
[root@localhost ~]# service nfs stop
[root@localhost ~]# service rpcbind stop
nfs的常用目錄
/etc/exports nfs服務的主要配置檔案
/usr/sbin/exportfs nfs服務的管理命令
/usr/sbin/showmount 客戶端的檢視命令
/var/lib/nfs/etab 記錄nfs分享出來的目錄的完整許可權設定值
/var/lib/nfs/xtab 記錄曾經登入過的客戶端資訊
nfs服務的配置檔案為 /etc/exports,檔案內容格式如下:
《共享目錄》 [客戶端1 選項(訪問許可權,使用者對映,其他)] [客戶端2 選項(訪問許可權,使用者對映,其他)]
例:/home/nfs 192.168.86.66(insecure,rw)
格式說明
◆共享目錄:
共享目錄是指nfs系統中需要共享給客戶機使用的目錄;
◆客戶端:
客戶端是指網路中可以訪問這個nfs共享目錄的計算機
客戶端常用的指定方式:
指定ip位址的主機:192.168.86.66
指定子網中的所有主機:192.168.86.0/24 192.168.86.0/255.255.255.0
指定網域名稱的主機:www.sample.com
指定域中的所有主機:*.sample.com
所有主機:*
◆選項:
選項用來設定共享目錄的訪問許可權、使用者對映等。
nfs主要有3類選項:
●訪問許可權選項
設定共享目錄唯讀:ro
設定共享目錄讀寫:rw
●使用者對映選項
all_squash:將遠端訪問的所有普通使用者及所屬組都對映為匿名使用者或使用者組(nfsnobody);
no_all_squash:與all_squash取反(預設設定);
root_squash:將root使用者及所屬組都對映為匿名使用者或使用者組(預設設定);
no_root_squash:與rootsquash取反;對於登陸nfs主機的共享目錄使用者如果是root的話則對該目錄具有root許可權。 這樣做極不安全,建議不用為好!
anonuid=***:將遠端訪問的所有使用者都對映為匿名使用者,並指定該使用者為本地使用者(uid=***);
anongid=***:將遠端訪問的所有使用者組都對映為匿名使用者組賬戶,並指定該匿名使用者組賬戶為本地使用者組賬戶(gid=***);
●其它選項
secure:限制客戶端只能從小於1024的tcp/ip埠連線nfs伺服器(預設設定);
insecure:允許客戶端從大於1024的tcp/ip埠連線伺服器;
sync:將資料同步寫入記憶體緩衝區與磁碟中,效率低,但可以保證資料的一致性;
async:將資料先儲存在記憶體緩衝區中,必要時才寫入磁碟;
wdelay:檢查是否有相關的寫操作,如果有則將這些寫操作一起執行,這樣可以提高效率(預設設定);
no_wdelay:若有寫操作則立即執行,應與sync配合使用;
subtree_check:若共享目錄是乙個子目錄,強制nfs檢查父目錄的許可權(預設設定)。
no_subtree_check:和上面相對,即使共享目錄是乙個子目錄,nfs伺服器也不檢查其父目錄的許可權,這樣可以提高效率;
hide:不共享nfs目錄的子目錄
no_hide:共享nfs目錄的子目錄
將nfs伺服器端 的/home/nfs/ 共享給客戶端(192.168.86.66),許可權讀寫。
伺服器端配置如下:
1、/etc/exports檔案配置
[root@localhost ~]# vi /etc/exports
/home/nfs 192.168.86.66(rw)
2、重啟rpcbind和nfs 服務
[root@localhost ~]# service rpcbind restart
[root@localhost ~]# service nfs restart
客戶端:
1、[root@bogon ~]# showmount -e 192.168.86.53#顯示server段共享出來的目錄
export list for 192.168.86.53:
/home/nfs 192.168.86.66
2、[root@bogon ~]# mount 192.168.86.53:/home/nfs /tmp/nfs #掛載server端的/home/nfs 目錄到client端的/tmp/nfs目錄
3、[root@bogon ~]# mount | grep nfs
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
192.168.86.53:/home/nfs on /tmp/nfs type nfs (rw,vers=4,addr=192.168.86.53,clientaddr=192.168.86.66)
掛載成功。
4、解除安裝已掛載的nfs共享目錄
[root@bogon ~]# umount /tmp/nfs/
問題:
[root@bogon ~]# showmount -e 192.168.86.53
clnt_create: rpc: program not registered
解決方法:
在伺服器端執行下記命令:
[root@localhost ~]# rpc.mountd
Linux nfs伺服器配置
nfs是網路檔案系統network file system的縮寫,最早是由 sun 這家公司所發展出來的。它最大的功能就是可以透過網路,讓不同的機器 不同的作業系統 可以彼此分享檔案和目錄 share files 我們可以簡單的將他看做是乙個檔案伺服器 file server 這個 nfs 伺服器可...
Linux NFS伺服器的安裝與配置
ps auxww grep auxww a選項顯示出所有執行程序的內容,而不僅僅是您的程序。u選項顯示出程序所歸屬的使用者名字以及 記憶體使用,x選項顯示出後台程序。而ww選項表示為 ps 1 把每個程序的整個命令列全部顯示完,而不是由於命令列過長就把它從螢幕上截去 df h 在各個節點上對比可以看...
Linux NFS 伺服器測試
1 nfs 能做什麼?在嵌入式 linux 開發中,需要在 linux 主機為目標機編寫程式 然後編譯程式,生 成的程式是要傳輸到目標機上才能除錯 執行。那麼如何更快 更便捷地傳輸檔案,將影響 到開發工作的效率。nfs 無疑是最好的選擇。通過 nfs 服務,主機將使用者指定的目錄通過 網路共享給目標...