NFS(網絡文件系統)
NFS 是Network File System的縮寫,即網絡文件系統。一種使用於分散式文件系統的協定,由Sun公司開發,於1984年向外公佈。功能是通過網絡讓不同的機器、不同的操作系統能夠彼此分享個別的數據,讓應用程序在客戶端通過網絡訪問位於服務器磁盤中的數據,是在類Unix系統間實現磁盤文件共享的一種方法。
NFS在文件傳送或信息傳送過程中依賴於RPC協議,RPC遠程過程調用 (Remote Procedure Call) 是能使客戶端執行其他系統中程序的一種機制,NFS本身是沒有提供信息傳輸的協議和功能的。
NFS應用場景,常用於高可用文件共享,多臺服務器共享同樣的數據,可擴展性比較差,本身高可用方案不完善,取而代之的數據量比較大的可以採用MFS、TFS、HDFS、GFS等等分佈式文件系統。
NFS(網絡文件系統):讓網絡上的不同linux/unix系統機器實現文件共享。 linux和window之間用samba
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: 111 tcp/udp
nfsd: 2049 tcp/udp
mountd:RPC服務在 nfs服務啓動時默認會爲 mountd動態選取一個隨機端口(32768–65535)來進行通訊 ,可以在/etc/nfsmount.conf文件中指定mountd的端口。
原理圖
NFS服務部署服務器準備
服務器系統 角色 IP
CentOS-7.4-x86_64 NFS服務器端 192.168.42.5
CentOS-7.4-x86_64 NFS客戶端 192.168.42.6
服務端安裝 192.168.42.5
1)NFS文件系統安裝,執行以下命令
[root@localhost ~]# yum -y install nfs-utils
2)編輯vim /etc/exports,配置參數如下(可根據需求配置):
[root@localhost ~]# echo "/data 0.0.0.0 (ro,no_root_squash,no_all_squash,sync)" >> /etc/exports
[root@localhost ~]# mkdir -p /data
[root@localhost ~]# service rpcbind restart
[root@localhost ~]# service nfs restart
注意啓動順序rpcbind需要先啓動,nfs後啓動, reload爲平滑啓動。
參數詳解:
第一列/data/表示需要共享的目錄。
IP表示允許哪個客戶端訪問。
IP後括號裏的設置表示對該共享文件的權限。
ro #只讀訪問。
rw #讀寫訪問。
sync #所有數據在請求時寫入共享。
all_squash #共享文件的UID和GID映射匿名用戶 anonymous,適合公用目錄。
no_all_squash #保留共享文件的UID和GID(默認)。
root_squash #root用戶的所有請求映射成如 anonymous用戶一樣的權限(默認)。
no_root_squash #root用戶具有根目錄的完全管理訪問權限。
客戶端安裝192.168.42.6
[root@localhost ~]# yum -y install nfs-utils
啓動服務
[root@localhost ~]# service rpcbind restart
mount –t nfs 192.168.42.5:/data/ /mnt
df -h 查看