文章目錄
- 1、NFS服務
- 2、RPC服務與NFS
- 3、NFS的優缺點
- 4、NFS服務端的搭建與配置
- 5、小結
1、NFS服務
NFS,全稱Network File System,即網絡檔案系統。最大的功能是通過網絡,讓不同的機器、不同的作業系統可以共享彼此的檔案。
😉
更直白的說就是:
讓PC将網絡中的NFS伺服器共享的目錄挂載到本地的檔案系統中,這樣在本地端通路挂載點就等于通路共享目錄,NFS伺服器共享的目錄就像是自己的一個磁盤分區一樣。
如圖,在NFS伺服器設定了一個共享目錄/home/public,有權通路的用戶端A就可以将這個共享目錄挂載到自己檔案系統的某個點,如/home/data/mypublic,如此,就可以在本地通路遠端共享目錄。
# 挂載後,可以看用戶端磁盤的具體資訊:
df -h /home/data/mypublic
# 這裡指定了挂載點是/home/data/mypublic
NFS是通過網絡來進行伺服器端和用戶端之間的資料傳輸,那麼兩者之間要傳輸資料就要有相對應的網絡端口。NFS伺服器的端口開在2049,此外,由于檔案系統非常複雜。是以NFS還有其他的程式去啟動額外的端口,這些額外的用來傳輸資料的端口是随機選擇的,是小于1024的端口。既然是随機選擇,那用戶端如何知道NFS伺服器使用的是哪個端口呢?
答案是通過遠端過程調用協定,即RPC服務(Remote Procedure Call)
2、RPC服務與NFS
RPC( Remote Procedure Call )協定的主要目的是做到:不同服務間調用方法像同一服務間調用本地方法一樣。
當NFS啟動後,會随機使用一些端口,然後NFS會向RPC去注冊登記這些端口。RPC記錄下這些端口,并開啟自身111端口,等待用戶端請求。當用戶端請求時,RPC就将NFS記錄的端口資訊告訴用戶端,用戶端擷取到了NFS伺服器的端口資訊,進而建立連接配接進行資料傳輸。
具體流程:
1)首先伺服器端啟動RPC服務,并開啟111端口
2)伺服器端啟動NFS服務,并向RPC注冊登記端口資訊
3)用戶端啟動RPC,向服務端的RPC服務請求服務端的NFS端口
4)服務端的RPC服務回報NFS端口資訊給用戶端
5)用戶端通過擷取的NFS端口來建立和服務端的NFS連接配接并進行資料的傳輸
3、NFS的優缺點
優點:
- 節省本地存儲空間,将一些常用的資料存放在一台伺服器通過網絡通路
- 對于大多數負載均衡群集來說,使用NFS協定來共享資料存儲是比較常見的方法
缺點:
-
局限性:
容易發生單點故障,即server伺服器當機所有的用戶端都不能通路
-
性能瓶頸:
網站高并發的情況下,NFS性能有限
-
安全性:
用戶端的資料都是通過明文傳送,用戶端沒有使用者認證機制,安全性一般,建議在區域網路内使用
-
資料完整性:
NFS伺服器傳輸資料都是采用明文的方式進行傳輸,對資料沒有什麼驗證機制,對資料完整性較高的業務不建議使用
-
維護繁瑣:
NFS伺服器都是多台用戶端挂載在一台server端,對于共享伺服器的連接配接管理維護都是一項比較繁瑣的事情
4、NFS服務端的搭建與配置
第一步:NFS服務端包安裝(服務端)
//查詢是否安裝nfs-utils和rpcbind,未裝則安裝
rpm -q nfs-utils|| yum -y install nfs-utils
rpm -q rpcbind || yum -y install rpcbind
注意:
有的文章中提到了portmap,centos 6.4中portmap已經被rpcbind取代,而它又已經在安裝nfs-utils包的時候安裝了,不放心可以裝完nfs後service rpcbind status驗證
第二步:NFS配置檔案修改(服務端)
# 建立服務端用于測試的共享目錄
mkdir -p /root/test
# 編輯配置檔案,我直接>>追加了
# 以下:*即客戶機随意,ro表示用戶端是隻讀權限
echo "/root/test *(ro)" >> /etc/exports
關于NFS配置權限設定,即/etc/exports檔案配置格式中小括号()裡的參數集:
第三步:關閉防火牆(服務端)并啟動服務
# 關閉防火牆
systemctl stop firewalld
# 檢視是否關閉成功
systemctl status firewalld
# 先啟動rpcbind!!!并設定開機自啟動
systemctl start rpcbind
systemctl enable rpcbind
# 再啟動nfs并設定開機自啟動
systemctl start nfs
systemctl enable nfs
# 釋出共享目錄
exportfs -rv
# 檢視共享目錄
showmount -e
第四步:用戶端安裝NFS并挂載
//查詢是否安裝nfs-utils和rpcbind,未裝則安裝
rpm -q nfs-utils|| yum -y install nfs-utils
rpm -q rpcbind || yum -y install rpcbind
//啟動rpcbind和nfs
systemctl start rpcbind
systemctl start nfs
//檢視NFS服務端共享的目錄情況,假設服務端IP為1.1.1.1
showmount -e 1.1.1.1
//挂載
//其中,1.1.1.1是NFS伺服器IP,/root/test是第二步中共享出來的目錄
//目錄/home/mnt是用戶端的挂載點
mount 1.1.1.1:/root/test /home/mnt
//檢視挂載是否成功
df -h /home/mnt
mount的時候報錯no route to host,八成是防火牆忘關了,systemctl stop firewalld
5、小結
NFS是一種基于TCP/IP傳輸的網絡檔案系統協定,可以實作客戶機通路遠端伺服器中的共享資源,NFS服務配置檔案是/etc/exports,其缺點是安全性差。
配置NFS共享存儲的步驟:
伺服器端
第一步:安裝nfs-utils和rpcbind軟體,并關閉防火牆和增強安全功能
第二步:設定共享目錄并把共享目錄的權限設為777
第三步:修改NFS的配置檔案(格式為:共享的目錄名稱 客戶機位址(權限))
第四步:啟動NFS服務(先啟動rpcbind,再啟動nfs),并設定開機自啟動
第五步:釋出NFS共享目錄,并檢視
用戶端
第一步:安裝nfs-utils和rpcbind軟體,并關閉防火牆和增強安全功能
第二步:檢視伺服器端的共享目錄,并将其挂載到建立目錄上(可手動或自動挂載)
參考文章:
篇一:NFS詳解
篇二:NFS實驗