第1章 NFS介紹 1.1 NFS服務內容的概述 □ RPC服務知識概念介紹說明,以及RPC服務存在價值(必須理解掌握) □ NFS服務工作原理講解(必須理解掌握) □ NFS共用文件系統使用原理講解(必須理解掌握) □ NFS服務配罝文件exports編寫格式說明(必須理解掌握) 1.2 NFS是 ...
第1章 NFS介紹
1.1 NFS服務內容的概述
□ RPC服務知識概念介紹說明,以及RPC服務存在價值(必須理解掌握)
□ NFS服務工作原理講解(必須理解掌握)
□ NFS共用文件系統使用原理講解(必須理解掌握)
□ NFS服務配罝文件exports編寫格式說明(必須理解掌握)
1.2 NFS是什麼
NFS(Network File System)即網路文件系統
它的主要功能是通過網路(一般是區域網)讓不同的主機系統之間可以共用文件或目錄。
分散式文件系統Moosefs(mfs)\glusterFS
1.2.1 NFS的qudian
nfs屬於本地文件存儲服務
缺點一:
winndows上無法使用
缺點二:
在高併發場景,以及存儲量比較高的場景,對數據安全性要求比較高場景
需要採用分散式儲存(mfs FastDFS)
分散式文件系統:無法在伺服器中看到真實的文件信息
1.2.2 實現Windows與linux系統文件數據共用方法
a.ftp(ftp服務部署)
b.samba服務
1.3 NFS共用網路文件系統企業應用
主要用於存儲web伺服器上用戶上傳的數據信息,圖片 附件 頭像 視頻 音頻
1.4 NFS文件系統存在意義
實現數據共用,數據統一一致
1.4.1 實現的不同方法
軟體實現:
本地文件系統NFS 分散式文件系統 mfs
硬體實現:
IBM (伺服器 小型機 大型機 存儲 DS V7000 V5000) oracle EMC = 去IOE
1.5 NFS 網路文件系統工作方式
在nfs服務端創建共用目錄
通過mount 網路掛載,將NFS客戶端本地目錄掛載到NFS服務端共用目錄上
NFS客戶端掛載目錄上創建、刪除、查看數據操作,等價於在服務端進行的創建、刪除、查看數據操作
如圖10-5所示,在 NFS伺服器端設置好一個共用目錄 /video後,其他有許可權訪問 NFS伺服器端的客戶端都可以將這個共用目錄 /video掛載到客戶端本地的某個掛載點(其實就是一個目錄,這個掛載點目錄可以自己隨意指定),圖10-5中的兩個 NFS客戶端本地的掛載點分別為/ v/video和/video ,不同客戶端的掛載點可以不相同。
客戶端正確掛載完畢後,就可以通過 NFS客戶端的掛載點所在的/v/video或 /video目錄查看
到 NFS伺服器端 /video共用出來的目錄下的所有數據。在客戶端上查看時 ,NFS伺服器端的 /video目錄就相當於客戶端本地的磁碟分區或目錄,幾乎感覺不到使用上的區別,根據 NFS伺服器端授予 的 NFS共用許可權以及共用目錄的本地系統許可權,只要在指定的 NFS客戶端操作掛載/ v/video或/video的目錄,就可以將數據輕鬆地存取到NFS伺服器端上的/video目錄中了。
1.6 NFS網路文件系統重點要瞭解兩個重要服務
RPC服務
NFS服務
1.6.1 NFS工作流程圖
1.6.2 RPC服務工作原理
1.6.3 NFS詳細的訪問流程
當訪問程式通過NFS客戶端向NFS伺服器存取文件時,其請求數據流程大致如下:
01.首先用戶訪間網站程式,由程式在NFS客戶端上發出存取NFS文件的請求,這時NFS客戶端(即執行程式的伺服器)的RPC服務(rpcbind服務)就會通過網路向NFS伺服器端的RPC服務(rpcbind服務)的111埠發出NFS文件存取功能的詢間請求.
02.NFS伺服器端的RPC服務(rpcbind服務)找到對應的已註冊的NFS埠後,通知NFS客戶端的RPC服務(rpcbind服務)。
03.此時NFS客戶端獲取到正確的埠,並與NFS daemon聯機存取數據
04.NFS客戶端把數據存取成功後,返回給前端訪間程式,告知用戶存取結果,作為網站用戶,就完成了一次存取操作。
因為NFS的各項功能都需要向RPC服務(rpcbind服務)註冊,所以只有RPC服務才能獲取到NFS服務的各項功能對應的埠號(port number)、PID、NFS在主機所監聽的IP等信息,而NFS客戶端也只能通過向RPC服務詢問才能找到正確的端□。也就是說,NFS需要有RPC服務的協助才能成功對外提供服務。從上面的描述,我們不難推斷,無論是NFS客戶端還是NFS伺服器端,當要使用NFS時,都需要首先啟動RPC服務,NFS服務必須在RPC服務啟動之後啟動,客戶端無需啟動NFS服務,但需要啟動RPC服務。
第2章 實踐操作NFS 服務
2.1 進行伺服器架構規劃
NFS伺服器部署角色IP
伺服器系統 |
角色 |
IP |
CentOS release 6.9 (Final) |
NFS伺服器端(NFS-Sever) |
10.0.0.31 |
CentOS release 6.9 (Final) |
NFS客戶端1(NFS-Client1) |
10.0.0.8 |
CentOS release 6.9 (Final) |
NFS客戶端2(NFS-Client2) |
10.0.0.41 |
2.2 NFS服務端部署過程
2.2.1 第一個裡程碑-確認軟體是否已經安裝,安裝NFS服務相關軟體
rpm -qa|grep nfs
rpm -qa|grep rpc
安裝rpcbind nfs-utils服務程式,併進行驗證安裝是否成功
yum install -y nfs-utils rpcbind
rpm -qa nfs-utils rpcbind
2.2.2 第二個裡程碑-編寫nfs配置文件
nfs配置文件預設存在/etc/exports
vim /etc/exports
#share /data by oldboy for share at 20170220
/data 172.16.1.0/24(rw,sync)
/etc/exports文件說明:
第一部分:/data --指定共用目錄信息
第二部分:172.16.1.0/24 --指定了一個網段信息,表示允許指定的網段主機掛載到我本地的共用目錄上
第三部分:(rw,sync) --表示定義共用參數信息,
rw 表示讀寫,對共用目錄設置的許可權
sync 同步,數據會先寫入到NFS伺服器記憶體中,會立刻同步到磁碟裡面==直接存儲硬碟中
2.2.3 第三個裡程碑:創建共用目錄,進行許可權設定
mkdir /data -p
chown -R nfsnobody.nfsnobody /data
說明:
NFS共用目錄管理用戶為nfsnobody,此用戶不用創建,安裝nfs軟體時會自動創建
2.2.4 第四個裡程碑:啟動服務(註意順序)
首先,啟動rpc服務
/etc/init.d/rpcbind start
其次,啟動nfs服務
/etc/init.d/nfs start
rpcbind服務啟動信息查看
[root@nfs01 ~]# ps -ef|grep rpcbind
rpc 4050 1 0 10:55 ? 00:00:00 rpcbind
root 4054 3878 0 10:55 pts/1 00:00:00 grep --color=auto rpcbind
[root@nfs01 ~]# netstat -lntup|grep 111
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 4050/rpcbind
tcp 0 0 :::111 :::* LISTEN 4050/rpcbind
udp 0 0 0.0.0.0:111 0.0.0.0:* 4050/rpcbind
udp 0 0 :::111 :::* 4050/rpcbind
[root@nfs01 ~]# rpcinfo -p localhost
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
nfs啟動後查看信息
[root@nfs01 ~]# rpcinfo -p localhost
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 28467 status
100024 1 tcp 56269 status
100011 1 udp 875 rquotad
100011 2 udp 875 rquotad
100011 1 tcp 875 rquotad
100011 2 tcp 875 rquotad
100005 1 udp 32886 mountd
100005 1 tcp 6154 mountd
100005 2 udp 38339 mountd
100005 2 tcp 60288 mountd
100005 3 udp 49824 mountd
100005 3 tcp 24427 mountd
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 2 tcp 2049 nfs_acl
100227 3 tcp 2049 nfs_acl
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 2 udp 2049 nfs_acl
100227 3 udp 2049 nfs_acl
100021 1 udp 61803 nlockmgr
100021 3 udp 61803 nlockmgr
100021 4 udp 61803 nlockmgr
100021 1 tcp 6064 nlockmgr
100021 3 tcp 6064 nlockmgr
100021 4 tcp 6064 nlockmgr
2.2.5 到此服務端部署配置完成
[root@nfs01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
2.3 NFS 客戶端部署
2.3.1 第一個裡程碑:確認軟體有沒有安裝,進行nfs rpc 服務軟體安裝部署
yum install rpcbind nfs-utils -y
2.3.2 第二個裡程碑:啟動服務
提示:
rpcbind和nfs軟體都可以不啟動
2.3.3 第三個裡程碑: 檢查NFS服務端是否有可以進行掛載的目錄
[root@nfs01 ~]# rpm -qf `which showmount`
nfs-utils-1.2.3-75.el6.x86_64
說明:showmount使用,需要安裝nfs-utils軟體
2.3.4 第四個裡程碑:進程nfs客戶端掛載
mount -t nfs 172.16.1.31:/data /mnt
[root@backup ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
[root@backup ~]# mount -t nfs 172.16.1.31:/data /mnt
說明: 如果nfs軟體不安裝
a 無法使用showmount 命令
b 客戶端無法識別nfs 文件系統類型
2.3.5 第五個裡程碑: 進行檢查測試
[root@backup ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 1.5G 17G 9% /
tmpfs 238M 0 238M 0% /dev/shm
/dev/sda1 190M 40M 141M 22% /boot
172.16.1.31:/data 19G 1.5G 17G 9% /mnt
【測試】本地nfs客戶端 進行增刪改數據 等價於 nfs服務端共用目錄操作
[root@backup mnt]# echo "test123">test.txt
[root@backup mnt]# ll test.txt
-rw-r--r-- 1 nfsnobody nfsnobody 8 Oct 13 11:28 test.txt
[root@nfs01 data]# cat test.txt
test123
第3章 知識深入
3.1 NFS服務相關進程信息
3.1.1 簡略說明
rpcbind rpc啟動進程 主進程
rpc state 檢查數據存儲的一致性
rpc.rquotad 磁碟配額
rpc.mountd 許可權管理驗證
nfsd NFS主進程
rpc.idmapd 用戶壓縮映射
3.1.1 進程/服務 詳細說明
服務或進程名 |
用途說明 |
portmapper |
rpcbind服務的進程(centos5.x 上為 portmap軟體) |
rquotad |
磁碟配額進程 |
nfs、nfs_acl |
nfs服務進程 |
nfsd (rpc.nfsd ) |
rpc.nfsd的主要功能是管理NFS客戶端是否能夠登入NFS伺服器端主機,其中還包括含登入者的ID判別等。 |
mountd |
rpc.mountd的主要功能則是管理NFS文件系統。當NFS客戶端順利通過rpc.nfsd登入NFS伺服器端主機時,在使用NFS伺服器提供數據之前,它會去讀NFS的配置文件/etc/exports來比對NFS客戶端的許可權,通過這一關之後,還要經過NFS伺服器端本地文件系統使用許可權(就是owner、group、other許可權)等認證程式。如果都通過了,NFS客戶端就可以取得使用NFS伺服器端文件的許可權。 註意:這個/etc/exports文件也是我們用來管理NFS共用目錄的使用許可權與安全設置的地方,特別強調,NFS本身設置的是網路共用許可權,整個共用目錄的許可權還和目錄自身的系統許可權有關。 |
rpc.lockd (非必要) |
用來鎖定文件,用於多客戶端同時寫入 |
rpc.statd (非必要) |
檢查文件的一致性,與rpc.lockd有關。c、d兩個服務雲要客戶端,伺服器端同時開啟才可以;rpc.statd監聽來自其他主機重啟的通知,並且管理當本地系統重啟時主機列表。 |
rpc.idmapd |
表示用戶映射或用戶壓縮(重要) |
3.2 /etc/exports配置文件說明
3.2.1 /etc/exports文件說明
□ NFS共用目錄:
為 NFS伺服器端要共用的實際目錄,要用絕對路徑,如 (/data )。註意共用目錄的本地許可權,如果需要讀寫共用,一定要讓本地目錄可以被 NFS客戶端的用戶 (nfsnobody)讀寫。
□ NFS客戶端地址:
為NFS伺服器端授權的可訪問共用目錄的NFS客戶端地址,可以為單獨的IP地址或主機名、功能變數名稱等,也可以為整個網段地址。還可以用來匹配所有客戶端伺服器,這裡所謂的客戶端一般來說是前端的業務的業務伺服器,例如:web服務。
□許可權參數集
對授權的NFS客戶端的訪問許可權設置。
nfs許可權(共用目錄\借給你手機)nfs配置的/ etc/exports /data 172.16.1.0/24(rw)
本地文件系統許可權(\手機密碼不告訴你)掛載目錄的許可權rwxr- xr-x root root/data
3.2.2 指定 NFS客戶端地址的配置詳細說明
客戶端地址 |
具體地址 |
說 明 |
授權單一客戶端訪問NFS |
10.0.0.30 |
一般情況,生產環境中此配置不多 |
授權整個網段可訪問NFS |
10.0.0.0/24 |
其中的24等同於255.255.255.0 ,指定網段為生產環境中最常見的配置。配置簡單,維護方便 |
授權整個網段可訪問NFS |
10.0.0.* |
指定網段的另外寫法(不推薦使用) |
授權某個功能變數名稱客戶端訪問 |
nfs.oldboyedu.com |
此方法生產環境中一般情況不常用 |
授權整個功能變數名稱客戶端訪問 |
*.oldboyedu.com |
此方法生產環境中一般情況不常用 |