首頁  >  文章  >  nfs是什麼

nfs是什麼

青灯夜游
青灯夜游原創
2022-11-29 11:16:3623046瀏覽

nfs是指網路檔案系統,是FreeBSD支援的檔案系統中的一種,它允許網路中的電腦之間透過TCP/IP網路共享資源。 NFS是基於UDP/IP協定的應用,其實作主要是採用遠端過程呼叫RPC機制,RPC提供了一組與機器、作業系統以及低層傳送協定無關的存取遠端檔案的操作。

nfs是什麼

本教學操作環境:linux7.3系統、Dell G3電腦。

1. nfs簡介

網路檔案系統,英文Network File System(NFS),是由SUN公司研製的UNIX表示層協定(presentation layer protocol),能使使用者存取網路上別處的檔案就像在使用自己的電腦一樣。

NFS是基於UDP/IP協定的應用,其實作主要是採用遠端過程呼叫RPC機制,RPC提供了一組與機器、作業系統以及低層傳送協定無關的存取遠端檔案的操作。 RPC採用了XDR的支援。 XDR是一種與機器無關的資料描述編碼的協議,他以獨立與任意機器體系結構的格式對網路上傳送的資料進行編碼和解碼,支援在異質系統之間資料的傳送。

1.1 nfs特點

  • NFS(Network File System)即網路檔案系統,是FreeBSD支援的檔案系統中的一種,它允許網路中的電腦之間透過TCP/IP網路共享資源
  • 在NFS的應用程式中,本地NFS的客戶端應用程式可以透明地讀寫位於遠端NFS伺服器上的文件,就像存取本地文件一樣
  • nfs適用於Linux與Unix之間實作檔案共用,無法實作Linux與Windows間的檔案共用功能
  • nfs是運作在應用程式層的協議,其監聽於2049/tcp與2049 /udp套接字上
  • nfs服務只能基於IP進行認證

#1.2 nfs的應用場景

nfs有很多實際應用場景,以下是一些常用的場景:

  • 多個機器共用一台CDROM或其他裝置。這對於在多台機器中安裝軟體來說更加便宜與方便
  • 在大型網路中,配置一台中心NFS伺服器用來放置所有用戶的home目錄可能會帶來便利。這些目錄能被輸出到網路以便用戶不管在哪台工作站上登錄,總是能得到相同的home目錄
  • 不同客戶端可在NFS上觀看影視文件,節省本地空間
  • 在客戶端完成的工作數據,可以備份保存到NFS伺服器上用戶自己的路徑下

#1.3 nfs的體系組成

nfs體系至少有兩個主要部分:

  • 一台nfs伺服器
  • 若干台客戶機

nfs體系的架構圖如下:

nfs是什麼

客戶機透過TCP/IP網路遠端存取存放在NFS伺服器上的資料
在NFS伺服器正式啟用前,需要根據實際環境和需求,設定一些NFS參數

2. nfs工作機制

nfs是基於rpc來實作網路檔案系統共享的。所以我們先來說說rpc。

2.1 RPC

RPC(Remote Procedure Call Protocol),遠端過程呼叫協議,它是一種透過網路從遠端電腦程式上請求服務,而不需要了解底層網路技術的協定。

RPC協定假定某些傳輸協定的存在,如TCP或UDP,為通訊程序之間攜帶資訊資料。在OSI網路通訊模型中,RPC跨越了傳輸層和應用層。

RPC採用客戶機/伺服器模式。請求程式就是一個客戶機,而服務提供者就是一個伺服器。

nfs是什麼

rpc工作機制如上圖所示,以下來描述它:

  • 客戶端程式發起一個RPC系統呼叫基於TCP協定傳送給另一台主機(服務端)
  • 服務端監聽在某個套接字上,當收到客戶端的系統呼叫請求以後,將收到的請求和其所傳遞的參數通過本地的系統調用執行一遍,並將結果返回給本地的服務進程
  • 服務端的服務進程收到返回的執行結果後將其封裝成回應報文,再透過rpc協定傳回給客戶端
  • 客戶端呼叫程序接收答覆訊息,取得進程結果,然後呼叫執行繼續進行

2.2 nfs工作機制

NFS伺服器端運行著四個進程:

  • ##nfsd

##mountd

idmapd

#portmapper

idmapd 

#實作使用者帳號的集中映射,把所有的帳號都映射為NFSNOBODY,但是在存取時卻能以本機使用者的身分去存取

mountd  

用於驗證用戶端是否在允許存取此NFS檔案系統的用戶端清單中,在則允許存取(發放一個令牌,持令牌去找nfsd),否則拒絕存取

mountd的服務連接埠是隨機的,由rpc服務(portmapper)提供隨機連接埠號碼

nfsd 

#nfs的守護進程,監聽在2049/tcp和2049/udp埠上

不負責檔案儲存(由NFS伺服器本地核心負責調度儲存),用於理解客戶端發起的rpc請求,並將其轉交給本地內核,而後存儲在指定的檔案系統上

portmapper

NFS伺服器的rpc服務,其監聽於111/TCP和111/UDP套接字上,用於管理遠端程序呼叫(RPC)nfs是什麼

    下面透過一個例子來說明NFS的簡單工作流程:
  • 需求:查看
  • file
  • 檔案的信息,此
  • file
  • 儲存在遠端NFS服務端主機上(掛載在本機目錄/shared/nfs中)

  • 客戶端發起檢視file資訊的指令(ls file)給內核,核心透過NFS模組得知此文件並非本機檔案系統中的文件,而是在遠端NFS主機上的一個檔案
  • 客戶端主機的核心透過RPC協定把檢視file訊息的指令(系統呼叫)封裝成rpc請求透過TCP的111埠傳送給NFS服務端主機的portmapper
  • NFS服務端主機的portmapper(RPC服務程序)告訴客戶端說NFS服務端的mountd服務在某某連接埠上,你去找它驗證
  • ##因為mountd在提供服務時必須要向portmapper註冊一個埠號,所以portmapper是知道其工作於哪個埠的
  • 客戶端得知服務端的mountd程序埠號後,經過已知的服務端mountd連接埠號碼請求驗證
mountd收到驗證請求後驗證發起請求的客戶端是否在允許存取此NFS檔案系統的客戶端清單中,在則允許存取(發放一個令牌,持令牌去找nfsd),否則拒絕存取

驗證透過後客戶端持mountd發放的令牌去找服務端的nfsd進程,請求查看某檔

服務端的nfsd進程發起本機系統調用,向核心請求查看客戶端要查看的檔案的資訊######服務端的核心執行nfsd請求的系統調用,並將結果傳回給nfsd服務######nfsd進程收到核心傳回的結果後將其封裝成rpc請求封包並透過tcp/ip協定傳回給客戶端#########更多相關知識,請造訪###常見問題###欄位! ###

以上是nfs是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn