1. 程式人生 > 其它 >NFS(Network File System)網路檔案系統

NFS(Network File System)網路檔案系統

一、簡介

NFS(Network File System)即網路檔案系統,它允許網路中的計算機之間通過網路共享資源。將NFS主機分享的目錄,掛載到本地客戶端當中,本地NFS的客戶端應用可以透明地讀寫位於遠端NFS伺服器上的檔案,在客戶端端看起來,就像訪問本地檔案一樣。

RPC,基於C/S模型。程式可以使用這個協議請求網路中另一臺計算機上某程式的服務而不需知道網路細節,甚至可以請求對方的系統呼叫。

對於Linux而言,檔案系統是在核心空間實現的,即檔案系統比如ext3、ext4等是在Kernel啟動時,以核心模組的身份載入執行的。

二、原理

NFS本身的服務並沒有提供資料傳遞的協議,而是通過使用RPC(遠端過程呼叫 Remote Procedure Call)來實現。當NFS啟動後,會隨機的使用一些埠,NFS就會向RPC去註冊這些埠。RPC就會記錄下這些埠,RPC會開啟111埠。通過client端和sever端埠的連線來進行資料的傳輸。在啟動nfs之前,首先要確保rpc服務啟動。

具體過程如下:

  1. 本地使用者要訪問nfs伺服器中檔案,先向核心發起請求,核心處理呼叫nfs模組及rpc client
  2. rpc client向rpc server發起連線
  3. 在連線之前,NFS服務除了啟動nfsd本身監聽的埠2049/tcp和2049/udp,還會啟動其它程序(如mountd,statd,rquotad等)以完成檔案共享,這些程序的埠是不固定的;是每次NFS服務啟動時向RPC服務註冊的,RPC服務會隨機分配未使用的埠
  4. 完成連線,接受訪問請求
  5. nfs應用程式向核心發起請求
  6. 核心呼叫檔案系統

然後client端通過獲取的NFS埠來建立和server端的NFS連線並進行資料的傳輸。

以下為啟動各服務的作用

rpc:遠端過程呼叫協議,是實現本地呼叫遠端主機實現系統呼叫的協議。

portmapper:負責分配rpc server的埠,並在client端請求時,負責響應目的rpc server埠返回給client端,工作在tcp與udp的111埠上。

mountd:是nfs服務的認證服務的守護程序,client在收到返回的真正埠時,就會去連線mountd,認證取得令牌。

nfsd:nfs的守護程序,負責接收到使用者的呼叫請求後與核心發出請求並得到呼叫結果響應給使用者,工作在tcp和udp的2049埠。

idmapd:是NFS的一個程式,用來負責遠端client端建立檔案後的許可權問題。

quotad:用用於實現磁碟配額,當client端掛載nfs後可以限制磁碟空間的大小。