NFS是Network File System的縮寫,即網絡文件系統。它的主要功能是通過網絡(一般是局域網)讓不同的主機系統之間可以共享文件或目錄。NFS客戶端(一般為應用服務器,例如web)可以通過挂載(mount)的方式将NFS服務端共享的數據目錄挂載到NFS客戶端本地系統中(就是某一個挂載點下)。從NFS客戶端的機器本地看,NFS服務端共享的目錄就好像是客戶自己的磁盤分區或者目錄一樣,而實際上确是遠端的NFS服務端的目錄。
NFS網絡文件系統類似windows系統的網絡共享、安全功能、網絡驅動器映射,這也和linux系統裡的samba服務類似。應用于互聯網中小型集群架構後端作為數據共享,如果是大型網站,那麼有可能還會用到更複雜的分布式文件系統,例如Moosefs(mfs)、glusterfs、FastDFS。
在企業集群架構的工作場景中,NFS網絡文件系統一般被用來存儲共享視頻、圖片、附件等靜态資源文件。一般是把網站用戶上傳的文件都放在NFS共享裡,例如,BBS産品的圖片、附件、頭像,注意網站BBS程序不要放在NFS共享裡,然後前端所有的節點訪問存儲服務之一,特别是中小網站公司應用頻率更高。
NFS流程圖
NFS原理圖
NFS的RPC服務,在CentOS5.x下名稱為portmap,在CentOS6.x下名稱為rpcbind。
RPC(Remote Procedure Call)遠程過程調用,它是一種通過網絡從遠程計算機程序上請求服務,而不需要了解底層網絡技術的協議。其工作在TCP/UDP的111端口。建立在Socket之上的,主要是簡化編程的工作在底層提供網絡之間的通信。
RPC采用客戶機/服務器模式。請求程序就是一個客戶機,而服務提供程序就是一個服務器。首先,客戶機調用進程發送一個有進程參數的調用信息到服務進程,然後等待應答信息。在服務器端,進程保持睡眠狀态直到調用信息的到達為止。當一個調用信息到達,服務器獲得進程參數,計算結果,發送答複信息,然後等待下一個調用信息,最後,客戶端調用進程接收答複信息,獲得進程結果,然後調用執行繼續進行。
在Linux6中實現RPC協議的軟件是RPCbind程序包,進程名稱是portmapper。RPC并不提供任何具體的服務,要想提供具體的服務就必須在Linux上提供具體的軟件。而網絡文件系統(NFS)就是基于RPC協議工作的,如NFS客戶端——-Portmap客戶端——Portmap服務端——NFS服務端。如圖是RPC的工作原理:
經常聽到的挂載實際上大多數都是用的NFS,所以了解這塊是很有必要的,後面會分享更多關于devops和DBA方面的内容,感興趣的朋友可以關注下!!
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!