NFS(Network File System的縮寫,即網絡檔案系統),依賴于RPC協定 (Remote Procedure Cal的縮寫,即遠端過程調用) 實作檔案或資訊傳送,隻要用到NFS的地方都要啟動RPC服務,不論是NFS SERVER或者NFS CLIENT。這樣SERVER和CLIENT才能通過RPC來實作PROGRAM PORT的對應。簡單說:NFS是一個檔案系統,而RPC是負責資訊的傳輸。
注:NFS使用TCP/IP提供的協定和服務,并且位于OSI模型中的應用層,具體如下:
層數
名稱
功能
1
應用層
NFS
2
表示層
XDR
3
會話層
RPC
4
傳輸層
UDP,TCP
5
網絡層
IP
6
資料鍊路層
7
實體層 Ethernet
server:10.15.72.38
client:10.15.72.83
一、啟動NFS服務
centos7 systemctl enable rpcbind.service systemctl enable nfs-server.service
systemctl start rpcbind.service systemctl start nfs-server.service
NFS啟動後的端口:
nfs開啟的是2049,portmap/rpcbind開啟的是111,其餘則是rpc開啟的
NFS啟動時會随機啟動多個端口并向RPC注冊,這樣如果使用iptables對NFS端口進行限制就會有點麻煩,可以更改配置檔案固定NFS服務相關端口。
配置設定端口,編輯配置檔案,文末添加以下,然後在iptables中設定對應端口
上面的端口不能與跟/etc/services檔案中定義的重複:
二、NFS日志
NFS服務的日志記錄在/var/log/messages檔案中
三、配置NFS
NFS的常用目錄
/etc/exports NFS服務的主要配置檔案
/usr/sbin/exportfs NFS服務的管理指令
/usr/sbin/showmount 用戶端的檢視指令
/var/lib/nfs/etab 記錄NFS分享出來的目錄的完整權限設定值
/var/lib/nfs/xtab 記錄曾經登入過的用戶端資訊
配置檔案/etc/exports,可以設定NFS的共享目錄、通路權限和允許通路的主機等參數,在預設情況下,這個檔案是個空檔案,沒有配置任何共享目錄,這是基于安全性的考慮,即使系統啟動NFS服務也不會共享任何資源。
/etc/exports檔案内容格式:
server:

允許某一網段通路:/home/nfs 10.15.72.0/24 (ro,sync.no_subtree_check,anouid=0,anogid=0)
也可以是具體IP、或者所有主機(*),還可以是域名,域名支援通配符 如: *.51cto.com
服務啟動時我們一定首先啟動portmap程序,之後再啟動nfs主程序。由于在6系列裡面,portmap已經改名了 ,6系列需要使用 service rpcbind start啟動啟動的時候最好先啟動rpcbind,再啟動nfs,停止則反過來
守護程序啟動順序:rpc.portmap, rpc.mountd, rpc.nfsd, rpc.statd, rpc.lockd (新版本會自動跟着nfsd啟動起來), rpc.rquotad
mounted已經順利啟動,這個服務管理nfs挂載
daemon也已經順利啟動,這個服務管理用戶端機能否順利登入主機
/home/nfs 共享的目錄
10.15.72.83允許通路的IP,也可設定允許通路共享的網段如10.15.72.0/24,如果允許所有用戶端通路,可以用通配符“*”
ro 用戶端通路共享目錄時的權限,ro表示隻讀,rw表示可讀可寫
sync 檔案同時寫入硬碟和記憶體,這樣不會輕易丢失資料,建議所有的NFS共享目錄都使用該選項
secure:限制用戶端隻能從小于1024的tcp/ip端口連接配接nfs伺服器(預設設定);
insecure:允許用戶端從大于1024的tcp/ip端口連接配接伺服器;
async:将資料先儲存在記憶體緩沖區中,必要時才寫入磁盤;
wdelay:檢查是否有相關的寫操作,如果有則将這些寫操作一起執行,這樣可以提高效率(預設設定);
no_wdelay:若有寫操作則立即執行,應與sync配合使用;
subtree:若輸出目錄是一個子目錄,則nfs伺服器将檢查其父目錄的權限(預設設定);
fsid=0 表示将共享目錄包裝成根目錄
/data 192.168.0.100(rw,sync,fsid=0) 192.168.0.101(rw,sync,fsid=0)
fsid=0表示将/data找個目錄包裝成根目錄
no_subtree:即使輸出目錄是一個子目錄,nfs伺服器也不檢查其父目錄的權限,這樣可以提高效率;
no_subtree_check 不檢查目錄權限,提高目錄讀取速率
all_squash:将遠端通路的所有普通使用者及所屬組都映射為匿名使用者或使用者組(nfsnobody);
no_all_squash:與all_squash取反(預設設定);
root_squash:登入NFS主機,使用該共享目錄時相當于該目錄的擁有者。但是如果是以root身份使用這個共享目錄的時候,那麼這個使用者(root)的權限将被壓縮成為匿名使用者,即通常他的UID與GID都會變成nobody或nfsnobody身份
no_root_squash:NFS用戶端連接配接服務端時如果使用的是root的話,那麼對服務端分享的目錄來說,也擁有root權限。顯然開啟這項是不安全的。
anonuid=xxx:将遠端通路的所有使用者都映射為匿名使用者,并指定該使用者為本地使用者(UID=xxx);這個UID必需要存在于你的/etc/passwd當中
anongid=xxx:将遠端通路的所有使用者組都映射為匿名使用者組賬戶,并指定該匿名使用者組賬戶為本地使用者組賬戶(GID=xxx);
可以設定同一目錄不同IP端的權限比如再設定/home/nfs 72.73隻讀不可寫,在上面72.83行後面添加一行/home/nfs 10.15.72.73 (ro)即可
修改了/etc/exports後,并不需要重新開機nfs服務,隻要用exportfs重新掃描一次/etc/exports,并且重新加載即可
exportfs[-aruv]
參數 含義
a 全部挂載(或解除安裝)/etc/exports檔案内的設定
r 重新挂載/etc/exports 裡面的設定,也同步的更新/etc/exports和/var/lib/nfs/xtab裡面的内容
u 解除安裝某一目錄
v 在export的時候,将分享的目錄顯示到熒屏上
三、使用showmount指令查詢NFS的共享狀态
client:
用戶端也需要安裝rpcbind, 建議nfs一起安裝,便于使用showmount指令
10.15.43.238:/app/redis/logs /app/nfs nfs4 defaults,soft,intr 0 0
如果一個NFS伺服器上有許多的用戶端一直連接配接的話,NFS伺服器會承受很大的帶寬壓力,這對NFS伺服器的正常使用會造成很大的影響,而且,永久挂載後每次系統啟動都會自動挂載伺服器端NFS,當服務端NFS沒有開啟時,本地用戶端啟動時會執行挂載任務,導緻系統啟動速度變慢,是以,為了解決這一弊端,我可以這樣做:讓NFS用戶端在擷取資料時與NFS伺服器進行連接配接,而在沒有擷取資料的時間内,自動的斷開與NFS伺服器之間的連接配接,這就是NFS的自動挂載技術。需要注意的是,配置方法是在NFS用戶端方面進行配置的。
自動挂載用到的軟體包automount,一般系統都預設安裝了的。如果沒有安裝再安裝下:yum install autofs
/app是用戶端挂載的本地路徑,我們在向NFS伺服器發送請求信号時,一定要在這個目錄下面進行操作,否則是無效的,實驗的時候我事先建立了nfs檔案夾,當達到超市時候後nfs檔案夾用ls也是看不到,但是可以在根目錄下可以檢視挂載後的檔案
/etc/auto.nfs: 是一個配置 NFS伺服器共享檔案的路徑,及本地在/app目錄中要與遠端共享檔案挂載的目錄及權限,在auto.nfs檔案中還要詳細說明。
--timeout=60:指NFS用戶端在多久沒有向NFS伺服器請求資料時斷開挂載連接配接。
nfs是一個本地目錄,我們不需要建立它,用于挂載遠端共享檔案10.15.43.238:/app/redis/logs,在我們想要使用遠端共享檔案時,隻要在本地目/app下鍵入:cd server 系統就會自動挂載到遠端共享目錄:10.15.43.238:/app/redis/logs,我們就可以正常使用裡面的共享檔案了 ,在到達逾時時間時就會自動解除安裝。
Windows 7通路NFS:
(1)打開Windows7系統程式--->控制台--->程式和功能--->打開或關閉windows功能--->選中nfs安裝
Tips:
在服務端執行以下:
1.關閉服務端的SELINUX
2.服務端防火牆中開啟相應端口,nfs使用:tcp/udp 2049
同時開啟多個端口
NFS服務端端口管理檔案:
檢視連結的用戶端:
檢視用戶端檢視的目錄:
###########################################################
關注微信平台,了解更多分享
2014,我們沒有時間再去揮霍;
2014,我們需要學習以及堅持;
我們需要把等公交、乘地鐵的時間一點點利用;
關注微信平台,随時都可以檢視分享;
我們更需要大家一起來分享。
Linux交流QQ群:333212786
################################################################################