NFS服務
NFS服務簡介
什麼是NFS?
NFS就是Network File System的縮寫,它最大的功能就是可以通過網路,讓不同的機器、不同的作業系統可以共享彼此的檔案。
NFS伺服器可以讓PC將網路中的NFS伺服器共享的目錄掛載到本地端的檔案系統中,而在本地端的系統中來看,那個遠端主機的目錄就好像是自己的一個磁碟分割槽一樣,在使用上相當便利;
NFS一般用來儲存共享視訊,圖片等靜態資料。
NFS掛載原理:
如上圖示:
當我們在NFS伺服器設定好一個共享目錄/home/public後,其他的有權訪問NFS伺服器的NFS客戶端就可以將這個目錄掛載到自己檔案系統的某個掛載點,這個掛載點可以自己定義,如上圖客戶端A與客戶端B掛載的目錄就不相同。並且掛載好後我們在本地能夠看到服務端/home/public的所有資料。如果伺服器端配置的客戶端只讀,那麼客戶端就只能夠只讀。如果配置讀寫,客戶端就能夠進行讀寫。掛載後,NFS客戶端檢視磁碟資訊命令:#df –h。
既然NFS是通過網路來進行伺服器端和客戶端之間的資料傳輸,那麼兩者之間要傳輸資料就要有想對應的網路埠,NFS伺服器到底使用哪個埠來進行資料傳輸呢?基本上NFS這個伺服器的埠開在2049,但由於檔案系統非常複雜。因此NFS還有其他的程式去啟動額外的埠,這些額外的用來傳輸資料的埠是隨機選擇的,是小於1024的埠;既然是隨機的那麼客戶端又是如何知道NFS伺服器端到底使用的是哪個埠呢?這時就需要通過遠端過程呼叫(Remote Procedure Call,RPC)協議來實現了!
RPC與NFS通訊原理:
因為NFS支援的功能相當多,而不同的功能都會使用不同的程式來啟動,每啟動一個功能就會啟用一些埠來傳輸資料,因此NFS的功能對應的埠並不固定,客戶端要知道NFS伺服器端的相關埠才能建立連線進行資料傳輸,而RPC就是用來統一管理NFS埠的服務,並且統一對外的埠是111,RPC會記錄NFS埠的資訊,如此我們就能夠通過RPC實現服務端和客戶端溝通埠資訊。PRC最主要的功能就是指定每個NFS功能所對應的port number,並且通知客戶端,記客戶端可以連線到正常埠上去。
那麼RPC又是如何知道每個NFS功能的埠呢?
首先當NFS啟動後,就會隨機的使用一些埠,然後NFS就會向RPC去註冊這些埠,RPC就會記錄下這些埠,並且RPC會開啟111埠,等待客戶端RPC的請求,如果客戶端有請求,那麼伺服器端的RPC就會將之前記錄的NFS埠資訊告知客戶端。如此客戶端就會獲取NFS伺服器端的埠資訊,就會以實際埠進行資料的傳輸了。
注意:在啟動NFS SERVER之前,首先要啟動RPC服務(即portmap服務,下同)否則NFS SERVER就無法向RPC服務區註冊,另外,如果RPC服務重新啟動,原來已經註冊好的NFS埠資料就會全部丟失。因此此時RPC服務管理的NFS程式也要重新啟動以重新向RPC註冊。特別注意:一般修改NFS配置文件後,是不需要重啟NFS的,直接在命令執行systemctl reload nfs或exportfs –rv即可使修改的/etc/exports生效
NFS客戶端和NFS伺服器通訊過程:
-
1. 首先伺服器端啟動RPC服務,並開啟111埠
-
2. 伺服器端啟動NFS服務,並向RPC註冊埠資訊
-
3. 客戶端啟動RPC(portmap服務),向服務端的RPC(portmap)服務請求服務端的NFS埠
-
4. 服務端的RPC(portmap)服務反饋NFS埠資訊給客戶端。
-
5. 客戶端通過獲取的NFS埠來建立和服務端的NFS連線並進行資料的傳輸。
Linux下NFS伺服器部署
NFS服務所需軟體及主要配置檔案:
安裝NFS服務,需要安裝兩個軟體,分別是:
· RPC主程式:rpcbind
NFS 其實可以被視為一個 RPC 服務,因為啟動任何一個 RPC 服務之前,我們都需要做好 port 的對應 (mapping) 的工作才行,這個工作其實就是『 rpcbind 』這個服務所負責的!也就是說, 在啟動任何一個 RPC 服務之前,我們都需要啟動 rpcbind 才行! (在 CentOS 5.x 以前這個軟體稱為 portmap,在 CentOS 6.x 之後才稱為 rpcbind 的!)。
· NFS主程式:nfs-utils
就是提供 rpc.nfsd 及 rpc.mountd 這兩個 NFS daemons 與其他相關 documents 與說明檔案、執行檔案等的軟體!這個就是 NFS 服務所需要的主要軟體。
NFS的相關檔案:
主要配置檔案:/etc/exports
· 這是 NFS 的主要配置檔案了。該檔案是空白的,有的系統可能不存在這個檔案,主要手動建立。NFS的配置一般只在這個檔案中配置即可。
NFS 檔案系統維護指令:/usr/sbin/exportfs
· 這個是維護 NFS 分享資源的指令,可以利用這個指令重新分享 /etc/exports 變更的目錄資源、將 NFS Server 分享的目錄卸除或重新分享。
分享資源的登入檔:/var/lib/nfs/*tab
· 在 NFS 伺服器的登入檔案都放置到 /var/lib/nfs/ 目錄裡面,在該目錄下有兩個比較重要的登入檔, 一個是 etab ,主要記錄了 NFS 所分享出來的目錄的完整許可權設定值;另一個 xtab 則記錄曾經連結到此 NFS 伺服器的相關客戶端資料。
客戶端查詢伺服器分享資源的指令:/usr/sbin/showmount
這是另一個重要的 NFS 指令。exportfs 是用在 NFS Server 端,而 showmount 則主要用在 Client 端。showmount 可以用來察看 NFS 分享出來的目錄資源。
vi /etc/exports 時裡面的許可權引數
用於配置NFS服務程式配置檔案的引數:
引數 作用
ro 只讀
rw 讀寫
root_squash 當NFS客戶端以root管理員訪問時,對映為NFS伺服器的匿名使用者
no_root_squash 當NFS客戶端以root管理員訪問時,對映為NFS伺服器的root管理員
all_squash 無論NFS客戶端使用什麼賬戶訪問,均對映為NFS伺服器的匿名使用者
sync 同時將資料寫入到記憶體與硬碟中,保證不丟失資料
async 優先將資料儲存到記憶體,然後再寫入硬碟;這樣效率更高,但可能會丟失數
相關文章
- NFS服務部署NFS
- NFS服務搭建NFS
- linux之nfs服務LinuxNFS
- Ceph提供nfs服務NFS
- NFS服務搭建過程NFS
- NFS共享儲存服務NFS
- NFS服務配置總結NFS
- Ubuntu 20.04 中配置NFS服務UbuntuNFS
- NFS儲存服務及部署NFS
- 如何為NFS服務安全加固NFS
- mac環境配置本地nfs服務MacNFS
- win10搭建nfs服務端詳細步驟_win10怎麼搭建nfs服務端Win10NFS服務端
- 架構期day4-NFS服務架構NFS
- centos7配置nfs共享儲存服務CentOSNFS
- linux nfs共享儲存服務詳細解釋。LinuxNFS
- Linux系統下對NFS服務安全加固的方法LinuxNFS
- WINDOWS2016想要使用NFS掛載,但是沒有NFS服務,無法使用mount命令WindowsNFS
- NFS服務有什麼優缺點呢?linux入門用什麼書NFSLinux
- 百度搜尋:藍易雲【Ubuntu 22.04上安裝NFS服務教程】UbuntuNFS
- 部署YUM倉庫及NFS共享服務NFS
- Linux系統配置NFS檔案共享服務LinuxNFS
- 【Azure 儲存服務】如何把開啟NFS 3.0協議的Azure Blob掛載在Linux VM中呢?(NFS: Network File System 網路檔案系統)NFS協議Linux
- NFS 部署NFS
- NFS磁碟共享NFS
- 服務與服務之間的呼叫
- 微服務的服務間通訊與服務治理微服務
- NFS練習題NFS
- NFS伺服器NFS伺服器
- 使用NFS建立PVNFS
- 配置NFS固定埠NFS
- Debian 搭建 NFS 共享NFS
- NFS全攻略NFS
- nfs-server 搭建NFSServer
- AIX掛載NFSAINFS
- [翻譯]微服務設計模式 - 5. 服務發現 - 服務端服務發現微服務設計模式服務端
- docker內服務訪問宿主機服務Docker
- go微服務系列(二) - 服務註冊/服務發現Go微服務
- 磁碟服務