nfs其最大功能時可以通過網路讓不同作業系統的計算機可以共享資料,所以也可以將其看作時一台檔案伺服器.
nfs有屬於自己的協議與使用的埠號,但是在傳送資料或者其他相關資訊時候,nfs伺服器使用乙個稱i「遠端過程呼叫」(rpc)的協議來協助nfs伺服器本身的執行
nfs協議:
使用nfs,客戶端可以透明地訪問伺服器中的檔案系統,這不同於提供檔案傳輸的ftp協議,ftp會產生檔案乙個完整的副本;nfs只訪問乙個程序應用檔案部分,並且乙個目的就是使用這種訪問透明,這意味著任何能夠訪問乙個本地檔案的客戶端程式不需要做任何修改,就應該能訪問乙個nfs檔案。
nfs是乙個使用sunrpc構造的客戶端/伺服器應用程式,器客戶端通過向一台nfs伺服器傳送rpc請求來訪問其中的檔案,儘管這一工作可以使用一般的使用者程序來實現,即nfs客戶端可以是乙個使用者程序,對伺服器進行顯示呼叫,而伺服器也可以是乙個使用者程序。因為兩個理由,nfs一般不這樣實現。首先訪問乙個nfs檔案必須對客戶端透明,因此nfs客戶端呼叫是由客戶端作業系統代表使用者程序來完成的;其次,出於效率的考慮,nfs伺服器在伺服器作業系統中實現。如果nfs伺服器是乙個使用者程序,每個客戶端請求和伺服器應答(包括讀和寫的資料)將不得不在核心和用具程序間切換,這個代價太大,第3版的nfs協議在2023年發布,nfs客戶端和一台nfs伺服器的典型結構。
(1)訪問乙個本地檔案還是乙個nfs檔案對於客戶端來說是透明的,當檔案被開啟時,由核心決定這一點。檔案被開啟後,核心將本地檔案的所有引用傳遞給名為「本地檔案訪問」的框中,而將乙個nfs檔案的所有應用傳遞給名為「nfs客戶端」的框中。
(2)nfs客戶端通過其tcp/ip模組向伺服器傳送rpc請求i,nfs主要使用udp,最新的實現也可以使用tcp
(3)nfs伺服器在埠20149接收為udp資料報的客戶端請求,儘管nfs可以被實現為使用埠對映器,允許伺服器使用乙個臨時埠,但是大多數實現都是直接指定udp埠2049
(4)當nfs伺服器收到乙個客戶端請求時,它將這個請求傳遞給本地檔案訪問歷程,然後訪問伺服器主機上的乙個本地磁碟檔案。
(5)nfs伺服器需要花費一定的時間來出倆乙個客戶端的請求,訪問本地檔案系統一般需要一部分時間。在這段時間間隔內,伺服器不應該組織其它客戶端的請求。為了實現這一功能,大多數的nfs伺服器都是多執行緒的--伺服器的核心中實際上由很多個nfs伺服器在nfs本身的加鎖管理程式中執行,具體實現以來於不同的作業系統。既然大多數unix核心不是多執行緒的,乙個共同的技術就是啟動乙個使用者程序(常稱為「nfsd」)的多個例項。這個例項執行乙個系統呼叫,使其作為乙個核心程序保留在作業系統的核心中
(6)在客戶端主機上,nfs客戶端需要花一定時間來處理乙個使用者程序的請求。nfs客戶端向伺服器主機發出乙個rpc呼叫,然後等待伺服器的應答。為了給使用nfs客戶端主機上的使用者程序提供更多的併發性,在客戶端核心中一般執行著多個nfs客戶端,同樣具體實現也依賴於作業系統。
rpc因為nfs支援的功能相當多,而不同的功能都會使用不同的程式來啟動,每啟動乙個功能就會器用一些埠來傳輸資料,因此nfs功能多對應的埠才沒有固定,而是採用隨機取用一些未被使用的小於724的埠來作為傳輸之用。但如此一來又造成客戶端要連線伺服器時的困擾,因為客戶端喲啊知道伺服器的相關埠才能聯機,此時我們需要遠端過程呼叫(rpc)的服務。rpc最主要的功能就是指定每個nfs功能所對應的埠號,並且回報給客戶端,讓客戶端可以連線到正確的埠上。當伺服器在啟動nfs時會隨機選用數個埠,並主動地向rpc註冊。因此rpc可以知道每個埠對應的nfs功能。然後rpc固定使用埠111來監聽客戶端的請求並回報客戶端正確的介面,所以可以讓nfs的啟動更為容易。注意,啟動nfs之前,要先啟動rpc;否則nfs無法向rpc註冊。另外,重新啟動rpc時原本註冊的資料會不見,因此rpc重新啟動後它管理的所有程式都要重新啟動以重新向rpc註冊。
當客戶端有nfs檔案要訪問請求時,它如何向伺服器端要求資料?
(1)客戶端會向伺服器端rpc(port 111)發出nfs檔案訪問功能的詢問請求
(2)伺服器端找到對應的已註冊的nfs-damon埠後會回報給客戶端。
(3)客戶端了解正確的埠後,就可以直接於nfs守護程序聯機。
由於nfs的各項功能都必須向rpc註冊,因此rpc才能了解nfs服務的各項功能的port number, pid和nfs在主機監聽的ip等,而客戶端才能夠通過rpc的詢問找到正確對應的埠。即nfs必須要有rpc存在時才能成功地提供服務,因此我們稱nfs為rpc server的一種。事實上,有很多這樣的伺服器都向tpc註冊。例如,nis(network information service)也是rpc server的一種。如圖所示,不論是客戶端還是伺服器,要使用nfs都需要啟動rpc。
NFS伺服器的工作原理
1.nfs nfs是分布式計算機系統的乙個組成部分,可實現在異構網路上共享和裝配遠端檔案系統。其最大功能是可以通過網路讓不同作業系統的計算機可以共享資料,所以也可以將其看做是一台檔案伺服器。客戶端pc可以掛在nfs伺服器所提供的目錄並且掛載之後這個目錄看起來如同本地的磁碟分割槽一樣,可以使用cp c...
NFS伺服器工作原理及部署
nfs就是network file system的縮寫,它最大的功能就是可以通過網路,讓不同的機器 不同的作業系統可以共享彼此的檔案。nfs伺服器可以讓pc將網路中的nfs伺服器共享的目錄掛載到本地端的檔案系統中,而在本地端的系統中來看,那個遠端主機的目錄就好像是自己的乙個磁碟分割槽一樣,在使用上相...
PNFS學習 NFS原理
nfs即 network filesystem,是通過網路實現檔案共享。乙個nfs伺服器設定好共享目錄,有權訪問的nfs客戶端就可以把該目錄掛載到本地。nfs通過網路埠實現伺服器端和客戶端的資料傳輸。因為nfs有許多功能,不同的功能需要使用不同的埠,因此埠是隨機的。那麼如何讓客戶端知道此時伺服器端使...