初步認識Linux下的NFS服務
1)服務消費方(client)呼叫以本機呼叫方式呼叫服務;
2)client stub接收到呼叫後負責將方法、參數等組裝成能夠進行網路傳輸的訊息體;
3)client stub找到服務位址,並將訊息傳送到服務端;
4)server stub收到訊息後進行解碼;
5)server stub根據解碼結果呼叫本地的服務;
6)本機服務執行並將結果傳回給server stub;
7)server stub將回傳結果打包成訊息並傳送至消費方;
8)client stub接收到訊息,並進行解碼;
9)服務消費方得到最終結果。
NFS簡介NFS(Network File System)即網路檔案系統,是FreeBSD支援的檔案系統中的一種,它允許網路中的電腦之間透過TCP/IP網路共享資源。在NFS的應用程式中,本地NFS的客戶端應用可以透明地讀寫位於遠端NFS伺服器上的文件,就像存取本機檔案一樣。
目前NFS主要有兩個版本(NFSv2,NFSv3)兩個版本,而NFSv2和NFSv3除了3版本支援更多的新特性以外,最主要的區別應該是NFSv2是使用UDP協定進行傳輸的,所以NFSv2的連接在複雜網路環境下可能沒有那麼可靠,而NFSv3同時支援UDP和TCP協定。
剛剛看了一下,Centos7已經支援NFSv4協定了,這裡就不貼NFSv4了,有時間了再去看v4吧。
當client端要掛載NFS共享卷的時候,會發送RPC請求給服務端,而NFS服務端會在用戶驗證後將一個隨機的cookie傳送至客戶端,以便客戶端使用這個cookie來認證那些要存取的共享卷。
NFS的驗證支援內建的IP/主機權限分配,同時也被tcp wrappers所限制。
Redhat上的NFS服務Redhat核心中預設就開啟了NFS支持,並且透過NFS的Daemon來控制NFS服務端的啟動,而負責將網路套接字和RPC呼叫綁定起來,還需要一個rpcbind服務(在redhat5中名為portmap),如果你在系統中找不到nfs服務,是因為沒有安裝nfs-utils這個包,這個包提供了一些工具和服務腳本等。
整個NFS服務大概包含以下幾個(抄自紅帽官方文檔,但有點老了好像):
- nfs — 啟動回應的RPC程序來回應NFS
- nfslock — 這是一個可選的服務,用來回應客戶端對檔案加鎖的請求。
- rpcbind(portmap) — 這個是rpc服務的守護進程,用來建立連線並且回應rpc請求。
NFS服務提供了這幾個RPC呼叫(函數):
- rpc.mountd — 這個函數用來回應客戶端的mount請求並且驗證所要求的檔案系統是否有權可用,這個程序由nfs服務來啟動。
- rpc.nfsd — nfs服務的主程式(函數)。
- rpc.lockd — 上面nfslock這個服務的主要呼叫(函數),主要用來回應客戶的檔案加鎖請求。
- rpc.statd — 這個呼叫(函數)主要是用來當nfs server重啟或不正常關閉時通知client的,由nfslock服務啟用。
- rpc.rquotad — nfs服務用於支援配額的呼叫(函數)。
NFS的設定檔在/etc/exports
預設是一個空文件,只需要按照如下格式配置即可,一行一個共享卷
host:限定主機(網域)
1.單一主機或IP
2.通配符*(匹配任意字元)或?(符合任意單一字元),用在網域名稱或主機名稱中
3.IP/MASK,例如 192.168.110.0/24
options:掛載選項,用於限定前面主機的掛載權限。
常用選項:
- ro,rw:只讀或可讀寫
- sync:同步,當client的寫入請求完成後,立即將記憶體中的資料寫入到磁碟,並且這樣做是安全的。
- async:異步,當client的寫入請求完成後,server不是立即將資料寫入磁碟,而是在某個時機(空閒或….鬼知道)寫入到磁碟,這就造成了資料遺失的可能性。
- wdelay(write delay):寫入延遲,這是一個最佳化選項,允許伺服器延遲將資料寫入磁碟,這樣如果第二次client的寫入請求到來,將兩次資料使用一次write系統呼叫寫入到磁碟。
- nowdelay:與上相反,僅在sync模式下可使用。
- root_squash:「壓扁」root,因為client將文件寫入到server時,是使用client寫入用戶的uid直接映射為server同uid的用戶,這樣root用戶存放到nfs share volume上的文件,在server端屬主和屬群組還是root,有一定的安全隱患,所以可用此選項將root壓扁為nfsnobody使用者。
- all_squash:壓扁所有用戶,可使用anonuid=,anongid=來指定壓扁為哪個用戶。
以上是初步認識Linux下的NFS服務的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Linux系統的五個基本組件是:1.內核,2.系統庫,3.系統實用程序,4.圖形用戶界面,5.應用程序。內核管理硬件資源,系統庫提供預編譯函數,系統實用程序用於系統管理,GUI提供可視化交互,應用程序利用這些組件實現功能。

要查看 Git 倉庫地址,請執行以下步驟:1. 打開命令行並導航到倉庫目錄;2. 運行 "git remote -v" 命令;3. 查看輸出中的倉庫名稱及其相應的地址。

雖然 Notepad 無法直接運行 Java 代碼,但可以通過借助其他工具實現:使用命令行編譯器 (javac) 編譯代碼,生成字節碼文件 (filename.class)。使用 Java 解釋器 (java) 解釋字節碼,執行代碼並輸出結果。

在 Sublime 中運行代碼的方法有六種:通過熱鍵、菜單、構建系統、命令行、設置默認構建系統和自定義構建命令,並可通過右鍵單擊項目/文件運行單個文件/項目,構建系統可用性取決於 Sublime Text 的安裝情況。

Linux的主要用途包括:1.服務器操作系統,2.嵌入式系統,3.桌面操作系統,4.開發和測試環境。 Linux在這些領域表現出色,提供了穩定性、安全性和高效的開發工具。

要安裝 Laravel,需依序進行以下步驟:安裝 Composer(適用於 macOS/Linux 和 Windows)安裝 Laravel 安裝器創建新項目啟動服務訪問應用程序(網址:http://127.0.0.1:8000)設置數據庫連接(如果需要)

Sublime Text 提供了提高开发效率的快捷键,包括常用的(保存、复制、剪切等)、编辑(缩进、格式化等)、导航(项目面板、文件浏览等)以及查找和替换快捷键。熟练使用这些快捷键可显著提升 Sublime 的使用效率。
