一、NFS文件服務器簡介
??????? NFS是Network File System的縮寫,即網絡文件系統。一種使用于分散式文件系統的協定,由Sun公司開發,于1984年向外公布。功能是通過網絡讓不同的機器、不同的操作系統能夠彼此分享個別的數據,讓應用程序在客戶端通過網絡訪問位于服務器磁盤中的數據,是在類Unix系統間實現磁盤文件共享的一種方法。
???????NFS在文件傳送或信息傳送過程中依賴于RPC協議,RPC遠程過程調用(Remote Procedure Call)是能使客戶端執行其他系統中程序的一種機制,NFS本身是沒有提供信息 傳輸的協議和功能的。
?????? NFS應用場景,常用于高可用文件共享,多臺服務器共享同樣的數據,可擴展性比較差,本身高可用方案不完善,取而代之的數據量比較大的可以采用MFS、TFS、 HDFS、 GFS 等等分布式文件系統。
二、NFS文件服務器原理
NFS (網絡文件系統) :讓網絡上的不同linux/unix系統機器實現文件共享
nfs本身只是一種文件系統,沒有提供文件傳遞的功能,但卻能讓我們進行文件的共享, 原因在于NFS使用RPC服務,用到NFS的地方都需要啟動RPC服務,無論是NFS客戶端還是服務端
nfs和rpc的關系:nfs是一個文件系統,負責管理分享的目錄rpc負責文件的傳遞
nfs啟動時至少有rpc.nfsd和rpc.mountd2個daemon
rpc.nfsd主要是管理客戶機登陸nfs服務器時,判斷改客戶機是否能登陸,和客戶機ID信息。
Rpc.mountd主要是管理nfs 的文件系統。當客戶機順利登陸nfs服務器時,會讀 /etc/exports文件中的配置,然后去對比客戶機的權限。
協議使用端口: RPC: 111tcp/udp
nfsd: 2049 tcp/udp
mountd: RPC服務在nfs 服務啟動時默認會為mountd動態選取一個隨機端口 (32768--65535)來進行通訊,可以在/etc/nfsmount.conf 文件中指定mountd的端口
三、NFS文件服務器實戰
yum -y install nfs*如下圖,安裝完成即可:
?????? NFS安裝完畢,需要創建共享目錄,共享目錄在vi /etc/exports 文件里面配置,可配置參數如下:
/data/????? *(rw,no root squash,no all squash, sync)
配置文件中添加如上一行,然后重啟Portmap,NFS服務即可
service portmap restart;service nfs restart
第一列/data/表示需要共享的目錄。
IP表示允許哪個客戶端訪問。
IP后括號里的設置表示對該共享文件的權限。
■ ro???????????????????????????????????????????? 只讀訪問;
■ rw???????????????????????????????????????????? 讀寫訪問;
■ sync?????????????????????????????????????????所有數據在請求時寫入共享;
■ all squash??????????????????????????????? 共享文件的UID和GID映射匿名用戶anonymous;
■ no all squash??????????????????????????? 保留共享文件的UID和GID (默認);
■ root squash root???????????????????????用戶的所有請求映射成如anonymous用戶-樣的權限:
■ no root squash root????????????????? 用戶具有根目錄的完全管理訪問權限。
Linux客戶端,如何想使用這個NFS文件系統,需要在客戶端掛載,掛載命令為:
mount -t nfs 192.168.xxx.xxx:/data/ /mnt 即可。
??????? 如果有報錯根據錯誤信息排查。常見問題有rpc服務沒有啟動、防火墻沒關閉、selinux 未關閉等問題。(有興趣的可以研究MFS(分布式文件系統)。)