1. 程式人生 > 其它 >網路服務-NFS

網路服務-NFS

1.什麼是nfs?

NFS是Network File System的縮寫,即網路檔案系統。一種使用於分散式檔案系統的協定,由Sun公司開發,於1984年向外公佈。功能是通過網路讓不同的機器、不同的作業系統能夠彼此分享個別的資料,讓應用程式在客戶端通過網路訪問位於伺服器磁碟中的資料,是在類Unix系統間實現磁碟檔案共享的一種方法。

它的主要功能是通過網路讓不同的機器系統之間可以彼此共享檔案和目錄。NFS伺服器可以允許NFS客戶端將遠端NFS伺服器端的共享目錄掛載到本地的NFPS客戶端中。在本地的NFS客戶端的機器看來,NFS伺服器端共享的目錄就好像自己的磁碟分割槽和目錄一樣。一般客戶端掛載到本地目錄的名字可以隨便,但為方便管理,我們要和伺服器端一樣比較好。

NFS 一般用來儲存共享視訊,圖片等靜態資料。

2.NFS掛載原理

NFS是通過網路來進行服務端和客戶端之間的資料傳輸。兩者之間要傳輸資料就要有想對應的網路埠來進行傳輸。NFS伺服器到底使用什麼網路埠來傳輸資料的,NFS伺服器端其實是隨機選擇埠來進行資料傳輸。那NFS客戶端又是如何知道NFS伺服器端到底使用的是哪個埠呢?其實NFS伺服器時通過遠端過程呼叫(remote procedure call簡稱RPC)協議/服務來實現的。也就是說RPC服務會統一管理NFS的埠,客戶端和服務端通過RPC來先溝通NPS使用了哪些埠,之後再利用這些埠(小於1024)來進行資料的傳輸。

也就是RPC管理服務端的NFS埠分配,客戶端要傳資料,那客戶端的RPC會先跟服務端的RPC去要伺服器的埠,要到埠後再建立連線,然後傳輸資料。

首先當NFS啟動後,就會隨機的使用一些埠,然後NFS就會向RPC去註冊這些埠。RPC就會記錄下這些埠。並且RPC會開啟111埠,等待客戶端RPC的請求,如果客戶端有請求,那服務端的RPC就會將記錄的NFS埠資訊告知客戶端。

在啟動NFS SERVER之前,首先要啟動RPC服務(即portmap服務,下同〉否則NFS SERVER就無法向RPC服務區註冊,另外,如果RPC服務重新啟動,原來已經註冊好的NFS埠資料就會全部丟失。因此此時RPC服務管理的NFS程式也要重新啟動以重新向RPC註冊。特別注意:一般修改·NFS配置文件後,是不需要重啟NFS的,直接在命令執行/etc/init.d/nfs reload

通訊過程

1)首先伺服器端啟動RPC服務,並開啟111埠

2)啟動NFS 服務,並向RPC 註冊埠資訊

3)客戶端啟動RPC( portmap服務),向服務端的RPC(portmap)服務請求服務端的NFS埠

4)服務端的RPC(portmap)服務反饋NFS埠資訊給客戶端。

5)客戶端通過獲取的NFS埠來建立和服務端的NFS連線並進行資料的傳輸。

3.NFS相關協議與軟體安裝管理

協議:

​ RPC (Remote Procedure Call Protocol) ——遠端過程呼叫協議

軟體: nfs-utils-* :包括NFS命令與監控程式 rpcbind-* :支援安全NFS RPC服務的連線

yum install nfs-utils-* -y
yum install rpcbind-* -y

4.nfs系統守護程序

nfs:它是基本的NFS守護程序,主要功能是管理客戶端是否能夠登入伺服器

rpcbind;主要功能是進行埠對映工作。當客戶端嘗試連線並使用RPC伺服器提供的服務(如NFS服務)時,rpcbind會將所管理的與服務對應的埠提供給客戶端,從而使客戶可以通過該埠向伺服器請求服務。

5.NFS 伺服器配置

nfs服務的配置檔案: /etc/exports

檔案內容格式:

共享目錄 客戶端(訪問許可權,使用者對映,其他) 客戶端2……

1.共享目錄:共享目錄是指NFS伺服器共享給客戶機使用的目錄

2.客戶端:客戶端是指網路中可以訪問這個NFS共享目錄的計算機

客戶端的指定方式:

​ 指定IP的主機: 10.35.202.20

​ 指定子網中的所有主機: 10.35.202.0

​ 指定域名的主機: www.hekang.com

​ 所有主機: *

3.設定輸出目錄的訪問許可權、使用者對映等。

訪問許可權選項:

​ 設定輸出目錄只讀: ro

​ 設定輸出目錄讀寫: rw

使用者對映選項:

​ root_squash:將root使用者的訪問對映為匿名(nfsnobody)使用者uid和gid;(預設生效)

​ no_root_squash:保留管理員許可權,以伺服器管理員的許可權管理;
​ all_squash:將遠端訪問的使用者及所屬組都對映為指定uid、gid的匿名使用者;

​ anonuid=xxx:將遠端訪問的所有使用者都對映為指定uid的匿名使用者 anongid=xxx:將遠端訪問的所有使用者組都對映為指定gid匿名組賬戶;

6.NFS伺服器的啟動與停止

​ 啟動服務

service rpcbind start
service nfs start

​ 檢視nfs服務狀態

service rpcbind status
service nfs status

​ 停止NFS伺服器

service nfs stop

​ 檢視rpc伺服器開啟了哪些埠

rpcinfo -p localhost

示例:

[root@master ~]# cat /etc/exports
/hekang 10.35.202.20(rw,all_squash,anonuid=1000,anongid=1000)

​ 檢視共享目錄

[root@master ~]# exportfs
/hekang         10.35.202.20

​ 服務端檢視nfs共享狀態

[root@master ~]# showmount -e 10.35.202.10
Export list for 10.35.202.10:
/hekang 10.35.202.20

​ 客戶端掛載nfs伺服器共享目錄

​ 命令 格式: mount nfs伺服器ip:共享目錄 本地掛載點目錄

 mount -o vers=3 10.35.202.10:/hekang/ /hekang

​ mount -o vers=3共享本地―#指定掛載使用nfs V3版本(避免同步延遲)

exportfs 命令

​ exportfs -au # 解除安裝所有共享目錄

​ exportfs -ra # 重新共享所有目錄並輸出詳細資訊