nfs是什麼

2022-11-29 14:00:36

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

php入門到就業線上直播課:進入學習
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API偵錯工具:

本教學操作環境: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體系的架構圖如下:

1.png

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

2. nfs工作機制

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

2.1 RPC

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

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

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

2.png

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的簡單工作流程:

需求:檢視file檔案的資訊,此file儲存在遠端NFS伺服器端主機上(掛載在本地目錄/shared/nfs中)

3.png

  • 使用者端發起檢視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是什麼的詳細內容,更多請關注TW511.COM其它相關文章!