NFS(Network File System)即網絡檔案系統。
主要功能:通過網絡(區域網路)讓不同的主機系統之間可以共享檔案或目錄。
主要用途:NFS網絡檔案系統一般被用來存儲共享視訊,圖檔,附件等靜态資源檔案。
當使用者A通過網際網路上傳檔案時,經過負載均衡,随機或者定向配置設定到某個節點。但是當使用者B去下載下傳這個檔案的時候,并不确定會向哪個節點發送請求,這樣會導緻使用者存在一定幾率下載下傳不到的情況。

當使用者A通過網際網路上傳檔案時,經過負載均衡,無論發送到哪個節點都會被存儲到NFS檔案伺服器。但是當使用者B去下載下傳這個檔案的時候,任何節點都可以讀取NFS檔案伺服器的檔案。
簡單容易上手
友善部署非常快速,維護十分簡單
節省本地存儲空間将常用的資料存放在一台伺服器可以通過網絡通路
在高并發下NFS效率/性能有限
NFS的資料是明文的,對資料完整性不做驗證
多台機器挂載NFS伺服器時,連接配接管理維護麻煩
容易發生單點故障,如果服務端當機,所有用戶端将不能通路
用戶端沒用使用者認證機制,且資料是通過明文傳送,安全性一般(一般建議在區域網路内使用)
NFS支援的功能非常多,不同的功能會有不同的服務來完成,很多服務都需要監聽在一些端口,其中的很多端口并不是固定的。這些服務在啟動時,都需要向rpcbind服務注冊一個端口,rpcbind服務随機選取一個未被使用的端口予以配置設定。rpcbind服務監聽在111端口,是以rpcbind的主要功能就是指定每個RPC service對應的port number,并且通知給用戶端,讓用戶端連接配接到正确的端口上去。
用戶端向NFS伺服器端請求的步驟:
首先使用者通路網站程式,由程式在NFS用戶端上發出存取NFS檔案的請求,這是NFS用戶端的RPC服務就不通過網絡向NFS伺服器端的RPC服務的111端口發出NFS檔案存取功能的查詢請求,包括要實作的什麼功能。
NFS伺服器端的RPC服務找到對應的已注冊的NFS端口,通知NFS用戶端的RPC服務。
此時NFS用戶端擷取到正确的端口,并與NFS聯機存取資料。
NFS用戶端把資料存取成功後,傳回給用戶端程式,告知使用者存取結果。
注意:由于rpc service在啟動時需要向rpcbind注冊端口,是以rpcbind要先啟動。另外若rpcbind重新啟動,原來注冊的資料也會不見,是以一但rpcbind重新啟動,讓所管理的服務因為需要重新啟動以重新向rpcbind注冊。
NFS伺服器:192.168.1.180
如果沒有,安裝 NFS 伺服器所需的軟體包,實際上需要安裝兩個包nfs-utils(nfs服務主程式)和rpcbind(rpc主程式), 不過當使用yum安裝nfs-utils時會把rpcbind一起安裝上。
/etc/exports的配置格式:
nfs共享目錄 nfs用戶端位址1(參1,參2.....) 用戶端位址2(參1,參2...)
說明:
nfs共享目錄:為nfs伺服器要共享的實際目錄,絕對目錄。注意權限問題。
nfs用戶端位址:為nfs伺服器授權可以通路的用戶端的位址,可以是單獨的ip位址或主機名,域名。也可以是整個網段。
授權整個網段:eg:10.0.0.0/24
檔案配置執行個體說明:
若伺服器端對/etc/exports檔案進行了修改,可以通過exportfs指令重新加載服務而不需要重新開機服務。若重新開機服務需要重新向prcbind注冊,而且對用戶端的影響也很大,是以盡量使用exportfs指令來使配置檔案生效。
A. 選項:選項用來設定輸出目錄的通路權限、使用者映射等。
設定輸出目錄隻讀:ro
設定輸出目錄讀寫:rw
B. 使用者映射選項
all_squash:将遠端通路的所有普通使用者及所屬組都映射為匿名使用者或使用者組(nfsnobody);
no_all_squash:與all_squash取反(預設設定);
root_squash:将root使用者及所屬組都映射為匿名使用者或使用者組(預設設定);
no_root_squash:與rootsquash取反;
anonuid=xxx:将遠端通路的所有使用者都映射為匿名使用者,并指定該使用者為本地使用者(UID=xxx);
anongid=xxx:将遠端通路的所有使用者組都映射為匿名使用者組賬戶,并指定該匿名使用者組賬戶為本地使用者組賬戶(GID=xxx);
C. 其它選項
secure:限制用戶端隻能從小于1024的tcp/ip端口連接配接nfs伺服器(預設設定);
insecure:允許用戶端從大于1024的tcp/ip端口連接配接伺服器;
sync:将資料同步寫入記憶體緩沖區與磁盤中,效率低,但可以保證資料的一緻性;
async:将資料先儲存在記憶體緩沖區中,必要時才寫入磁盤;
wdelay:檢查是否有相關的寫操作,如果有則将這些寫操作一起執行,這樣可以提高效率(預設設定);
no_wdelay:若有寫操作則立即執行,應與sync配合使用;
subtree:若輸出目錄是一個子目錄,則nfs伺服器将檢查其父目錄的權限(預設設定);
no_subtree:即使輸出目錄是一個子目錄,nfs伺服器也不檢查其父目錄的權限,這樣可以提高效率;
1、先為rpcbind和nfs做開機啟動:
2、然後分别啟動rpcbind和nfs服務:
使用exportfs檢視本機上已經共享的目錄:
NFS用戶端:192.168.1.190
用戶端不需要啟動nfs服務,隻需要啟動rpcbind服務。
vim /etc/fstab 加入以下内容:
_netdev明确說明這是網絡檔案系統,避免網絡啟動前挂載出現錯誤。
儲存後,重新挂載 /etc/fstab 裡面的内容。
mount -a
作者: 小柒
分享是快樂的,也見證了個人成長曆程,文章大多都是工作經驗總結以及平時學習積累,基于自身認知不足之處在所難免,也請大家指正,共同進步。