文章目錄
- NFS服務介紹
- NFS作業原理
- NFS掛載原理
- NFS通訊原理
- RPC服務
- RPC與NFS如何通訊
- NFS客戶端和NFS服務端通訊程序
- NFS服務的優缺點
- 優點
- 缺點
- 部署NFS服務
- 搭建服務
- 例題
- 配置命令和截圖
NFS服務介紹
NFS最大的功能就是可以通過網路,讓不同的機器、不同的作業系統可以共享彼此的檔案,
NFS服務器可以讓PC將網路中的NFS服務器共享的目錄掛載到本地端的檔案系統中,而在本地端的系統中來看,那個遠程主機的目錄就好像是自己的一個磁盤磁區一樣,在使用上相當便利,
NFS作業原理
NFS(Network File System,網路檔案系統)是當前主流異構平臺共享檔案系統之一,主要應用在UNIX環境下,允許一個系統在網路上與他人共享目錄和檔案,通過使用NFS,用戶和程式可以像訪問本地檔案一樣訪問遠端系統上的檔案,使得每個計算機的節點能夠像使用本地資源一樣方便地使用網上資源,
NFS的作業原理是使用客戶端/服務器架構,由一個客戶端程式和服務器程式組成,服務器程式向其他計算機提供對檔案系統的訪問,其程序稱為輸出,NFS客戶端程式對共享檔案系統進行訪問時,把它們從NFS服務器中“輸送”出來,NFS傳輸協議用于服務器和客戶機之間檔案訪問和共享的通信,從而使客戶機遠程地訪問保存在存盤設備上的資料,
NFS掛載原理
掛載:
- 同一個掛載點可以連接多個設備(但是NFS中只能生效最后一個掛載在該掛載點的設備,)
- 一個設備可以連接多個掛載點,
如上圖示:
當我們在NFS服務器設定好一個共享目錄/home/public后,其他的有權訪問NFS服務器的NFS客戶端就可以將這個目錄掛載到自己檔案系統的某個掛載點,這個掛載點可以自己定義,如上圖客戶端A與客戶端B掛載的目錄就不相同,并且掛載好后我們在本地能夠看到服務端/home/public的所有資料,如果服務器端配置的客戶端只讀,那么客戶端就只能夠只讀,如果配置讀寫,客戶端就能夠進行讀寫,掛載后,NFS客戶端查看磁盤資訊命令:#df –h,
NFS通訊原理
既然NFS是通過網路來進行服務器端和客戶端之間的資料傳輸,那么兩者之間要傳輸資料就要有想對應的網路埠,NFS服務器到底使用哪個埠來進行資料傳輸呢?基本上NFS這個服務器的埠開在2049,但由于檔案系統非常復雜,因此NFS還有其他的程式去啟動額外的埠,這些額外的用來傳輸資料的埠是隨機選擇的,是小于1024的埠;既然是隨機的那么客戶端又是如何知道NFS服務器端到底使用的是哪個埠呢?這時就需要通過遠程程序呼叫(Remote Procedure Call,RPC)協議來實作了.RPC服務(portmap 或rpcbind服務)
RPC服務
RPC(Remote Procedure Call)即遠程程序呼叫,基于C/S模型,RPC 最主要的功能就是在指定每個 NFS 功能所對應的 port number ,并且回報給客戶端,讓客戶端可以連結到正確的port上去,
RPC與NFS如何通訊
因為NFS支持的功能相當多,而不同的功能都會使用不同的程式來啟動,每啟動一個功能就會啟用一些埠來傳輸資料,因此NFS的功能對應的埠并不固定,客戶端要知道NFS服務器端的相關埠才能建立連接進行資料傳輸,而RPC就是用來統一管理NFS埠的服務,并且統一對外的埠是111,RPC會記錄NFS埠的資訊,如此我們就能夠通過RPC實作服務端和客戶端溝通埠資訊,PRC最主要的功能就是指定每個NFS功能所對應的port number,并且通知客戶端,讓客戶端可以連接到正常埠上去,
RPC獲取每個NFS功能的埠:
首先當NFS啟動后,就會隨機的使用一些埠,然后NFS就會向RPC去注冊這些埠,RPC就會記錄下這些埠,并且RPC會開啟111埠,等待客戶端RPC的請求,如果客戶端有請求,那么服務器端的RPC就會將之前記錄的NFS埠資訊告知客戶端,如此客戶端就會獲取NFS服務器端的埠資訊,就會以實際埠進行資料的傳輸了,
注意:
- 在啟動NFS SERVER之前,首先要啟動RPC服務(即portmap服務)否則NFS SERVER就無法向RPC服務區注冊,
- 如果RPC服務重新啟動,原來已經注冊好的NFS埠資料就會全部丟失,因此此時RPC服務管理的NFS程式也要重新啟動以重新向RPC注冊,
- 一般修改NFS配置檔案后,是不需要重啟NFS的,直接在命令執行/etc/init.d/nfs reload或exportfs –rv即可使修改的/etc/exports生效,
NFS客戶端和NFS服務端通訊程序
### 介紹NFS通訊程序
1)首先服務器端啟動RPC服務,并開啟111埠
2)服務器端啟動NFS服務,并向RPC注冊埠資訊
3)客戶端啟動RPC(portmap服務),向服務端的RPC(portmap)服務請求服務端的NFS埠
4)服務端的RPC(portmap)服務反饋NFS埠資訊給客戶端,
5)客戶端通過獲取的NFS埠來建立和服務端的NFS連接并進行資料的傳輸,
NFS服務的優缺點
優點
a.節省本地存盤空間將常用的資料存放在一臺服務器可以通過網路訪問
b.簡單容易上手
c.方便部署非常快速,維護十分簡單
缺點
a.局限性容易發生單點故障,及server機宕機了所有客戶端都不能訪問
b.在高并發下NFS效率/性能有限
c.客戶端沒用用戶認證機制,且資料是通過明文傳送,安全性一般(一般建議在局域網內使用)
d.NFS的資料是明文的,對資料完整性不做驗證
e.多臺機器掛載NFS服務器時,連接管理維護麻煩
部署NFS服務
要部署NFS服務,必須安裝下面兩個軟體包:nfs-utils:NFS主程式,rpcbind:PRC主程式
1.查看NFS軟體包
#rpm -qa | egrep "nfs|rpcbind" grep -E
libnfsidmap-0.25-12.el7.x86_64
rpcbind-0.2.0-32.el7.x86_64
nfs-utils-1.3.0-0.21.el7.x86_64
1)行程
rpc.nfsd NFS守護行程
rpc.mountd 管理檔案系統和權限
rpcinfo實用工具顯示那些使用portmap注冊的程式的資訊,并向程式進行RPC呼叫,檢查它們是否正常運行,
[root@localhost 桌面]# rpcinfo -p localhost
rpcinfo: can't contact portmapper: RPC: Remote system error - Connection refused
[root@localhost 桌面]# lsof -i:111
注:rpcbind安裝成功后默認已經開啟,并且為開機自動啟動,如果沒有啟動的話,我們來重新啟動rcpbind服務
[root@localhost ~]# systemctl restart nfs
用于配置NFS服務程式組態檔的引數:
| 引數命令 | 引數用途 |
|---|---|
| rw | 表示可讀寫 |
| ro | Read-only表示只能讀權限 |
| sync | 請求或者寫入資料,資料同步寫入NFS server的硬碟中后才會回傳 |
| no_root_squash | 當NFS客戶端以root管理員訪問時,映射為NFS服務器的root管理員 |
| root_squash | 當NFS客戶端以root管理員訪問時,映射為NFS服務器的匿名用戶 |
| all_squash | 無論NFS客戶端使用什么賬戶訪問,均映射為NFS服務器的匿名用戶 |
| anonuid | anonuid就是匿名的uid和gid |
常用目錄和檔案:
/etc/exports
/usr/sbin/exportfs
/usr/sbin/showmount
/var/lib/nfs/*tab
etab 記錄NFS分享出來的目錄的完整權限設定值
xtab 記錄曾經鏈接到此NFS主機的相關客戶端資料
組態檔:
/etc/exports
格式
共享目錄 客戶端(選項)--------(訪問權限,用戶映射,其他) rwx u+s g+s o+t
輸出目錄: 需要共享的目錄路徑
客戶端: 服務的用戶物件
選項: 共享的權限,緊跟客戶端列
每個客戶端后面必須跟一個小括號,里面定義了此客戶訪問特性,如訪問權限等
192.168.200.130/24(ro,async) 192.16.0.0/24(rw,sync) *(ro)
exportfs命令:
-a:跟-r或-u選項同時使用,表示重新掛載所有檔案系統或取消匯出所有檔案系統;
-r: 重新匯出
-u: 取消匯出
-v: 顯示詳細資訊
showmount命令:
showmount -e NFS_SERVER: 查看NFS服務器"匯出"的各檔案系統
showmount -a NFS_SERVER: 查看NFS服務器所有被掛載的檔案系統及其掛載的客戶端對應關系串列
showmount -d NFS_SERVER: 顯示NFS服務器所有匯出的檔案系統中被客戶端掛載了檔案系統串列
搭建服務
例題
架設一臺NFS服務器,并按照以下要求配置
1)開放/nfs/shared目錄,供所有用戶查詢資料ro.
2)開放/nfs/upload目錄,為10.211.55.0/24網段主機可以上傳目錄,并將所有用戶及所屬的組映射為nfs-upload,其UID和GID均為2103)將/home/tom目錄
共享給10.211.55.11 這臺主機,并只有用戶tom可以完全訪問該目錄
配置命令和截圖
1、[root@localhost ~]# mount /dev/sr0 /mnt 掛載

2、關閉防火墻和selinux
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
3、啟動服務,修改組態檔



4、創建檔案夾


5、重啟服務

客戶端:




轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/75810.html
標籤:其他
下一篇:強大,Nginx配置一鍵生成
