目錄
- NFS服務簡介
- 什么是NFS?
- NFS掛載原理
- RPC與NFS通訊原理
- NFS客戶端和NFS服務器通訊過程
- Linux下NFS服務器部署
- NFS服務所需軟件及主要配置文件
- RPC主程序:rpcbind
- NFS主程序:nfs-utils
- NFS的相關文件
- 服務端安裝NFS服務步驟
- 第一步:安裝NFS和rpc
- 第二步:啟動服務和設置開啟啟動
- 第三步:配置共享文件目錄,編輯配置文件
- NFS客戶端掛載配置
- 第一步:使用showmount命令查看nfs服務器共享信息
- 第二步:在客戶端創(chuàng)建目錄,并掛載共享目錄
- 第三步:檢查
- 在Window上掛載NFS
- 第一步:在控制面板–>添加程序和功能–>添加NFS組件
- 第二步:在此電腦,映射驅動器中添加nfs地址,和要共享的文件夾
- 第三步:如果權限有問題
NFS服務簡介
什么是NFS?
- NFS就是Network File System的縮寫,它最大的功能就是可以通過網絡,讓不同的機器、不同的操作系統(tǒng)可以共享彼此的文件。
- NFS服務器可以讓PC將網絡中的NFS服務器共享的目錄掛載到本地端的文件系統(tǒng)中,而在本地端的系統(tǒng)中來看,那個遠程主機的目錄就好像是自己的一個磁盤分區(qū)一樣,在使用上相當便利;
- NFS一般用來存儲共享視頻,圖片等靜態(tài)數據。
NFS掛載原理
服務器掛載結構圖
如上圖示:
當我們在NFS服務器設置好一個共享目錄/home/public后,
其他的有權訪問NFS服務器的NFS客戶端就可以將這個目錄掛載到自己文件系統(tǒng)的某個掛載點
這個掛載點可以自己定義
如上圖客戶端A與客戶端B掛載的目錄就不相同。
并且掛載好后我們在本地能夠看到服務端/home/public的所有數據。
- 如果服務器端配置的客戶端只讀,那么客戶端就只能夠只讀。
- 如果配置讀寫,客戶端就能夠進行讀寫。
掛載后,NFS客戶端查看磁盤信息命令:#df –h。
既然NFS是通過網絡來進行服務器端和客戶端之間的數據傳輸,那么兩者之間要傳輸數據就要有想對應的網絡端口,
NFS服務器到底使用哪個端口來進行數據傳輸呢?
基本上NFS這個服務器的端口開在2049,但由于文件系統(tǒng)非常復雜。
因此NFS還有其他的程序去啟動額外的端口,這些額外的用來傳輸數據的端口是隨機選擇的,是小于1024的端口;
既然是隨機的那么客戶端又是如何知道NFS服務器端到底使用的是哪個端口呢?
這時就需要通過遠程過程調用(Remote Procedure Call,RPC)協議來實現了!
RPC與NFS通訊原理
因為NFS支持的功能相當多,而不同的功能都會使用不同的程序來啟動,每啟動一個功能就會啟用一些端口來傳輸數據,因此NFS的功能對應的端口并不固定,客戶端要知道NFS服務器端的相關端口才能建立連接進行數據傳輸,而RPC就是用來統(tǒng)一管理NFS端口的服務,并且統(tǒng)一對外的端口是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服務區(qū)注冊,
另外,如果RPC服務重新啟動,原來已經注冊好的NFS端口數據就會全部丟失。
因此此時RPC服務管理的NFS程序也要重新啟動以重新向RPC注冊。
特別注意:
一般修改NFS配置文檔后,是不需要重啟NFS的,直接在命令執(zhí)行systemctl reload nfs或exportfs –rv即可使修改的/etc/exports生效
NFS客戶端和NFS服務器通訊過程
- 首先服務器端啟動RPC服務,并開啟111端口
- 服務器端啟動NFS服務,并向RPC注冊端口信息
- 客戶端啟動RPC(portmap服務),向服務端的RPC(portmap)服務請求服務端的NFS端口
- 服務端的RPC(portmap)服務反饋NFS端口信息給客戶端。
- 客戶端通過獲取的NFS端口來建立和服務端的NFS連接并進行數據的傳輸。
Linux下NFS服務器部署
NFS服務所需軟件及主要配置文件
安裝NFS服務,需要安裝兩個軟件,分別是:
RPC主程序:rpcbind
NFS 其實可以被視為一個 RPC 服務,因為啟動任何一個 RPC 服務之前,我們都需要做好 port 的對應 (mapping) 的工作才行,這個工作其實就是『 rpcbind 』這個服務所負責的!
也就是說, 在啟動任何一個 RPC 服務之前,我們都需要啟動 rpcbind 才行! (在 CentOS 5.x 以前這個軟件稱為 portmap,在 CentOS 6.x 之后才稱為 rpcbind 的!)。
NFS主程序:nfs-utils
就是提供 rpc.nfsd 及 rpc.mountd 這兩個 NFS daemons 與其他相關 documents 與說明文件、執(zhí)行文件等的軟件!這個就是 NFS 服務所需要的主要軟件。
NFS的相關文件
- 主要配置文件:/etc/exports
這是 NFS 的主要配置文件了。該文件是空白的,有的系統(tǒng)可能不存在這個文件,主要手動建立。NFS的配置一般只在這個文件中配置即可。
- NFS 文件系統(tǒng)維護指令:/usr/sbin/exportfs
這個是維護 NFS 分享資源的指令,可以利用這個指令重新分享 /etc/exports 變更的目錄資源、將 NFS Server 分享的目錄卸除或重新分享。
- 分享資源的登錄檔:/var/lib/nfs/*tab
在 NFS 服務器的登錄文件都放置到 /var/lib/nfs/ 目錄里面,在該目錄下有兩個比較重要的登錄檔, 一個是 etab ,主要記錄了 NFS 所分享出來的目錄的完整權限設定值;另一個 xtab 則記錄曾經鏈接到此 NFS 服務器的相關客戶端數據。
- 客戶端查詢服務器分享資源的指令:/usr/sbin/showmount
這是另一個重要的 NFS 指令。exportfs 是用在 NFS Server 端,而 showmount 則主要用在 Client 端。showmount 可以用來察看 NFS 分享出來的目錄資源。
服務端安裝NFS服務步驟
第一步:安裝NFS和rpc
[root@localhost ~]# yum install -y nfs-utils
#安裝nfs服務
[root@localhost ~]# yum install -y rpcbind
#安裝rpc服務
第二步:啟動服務和設置開啟啟動
注意:先啟動rpc服務,再啟動nfs服務。
[root@localhost ~]# systemctl start rpcbind #先啟動rpc服務
[root@localhost ~]# systemctl enable rpcbind #設置開機啟動
[root@localhost ~]# systemctl start nfs-server nfs-secure-server
#啟動nfs服務和nfs安全傳輸服務
[root@localhost ~]# systemctl enable nfs-server nfs-secure-server
[root@localhost /]# firewall-cmd --permanent --add-service=nfs
success #配置防火墻放行nfs服務
[root@localhost /]# firewall-cmd --reload
success
第三步:配置共享文件目錄,編輯配置文件
首先創(chuàng)建共享目錄,然后在/etc/exports配置文件中編輯配置即可。
[root@localhost /]# mkdir /public
#創(chuàng)建public共享目錄
[root@localhost /]# vi /etc/exports
/public 192.168.245.0/24(ro)
/protected 192.168.245.0/24(rw)
[root@localhost /]# systemctl reload nfs
#重新加載NFS服務,使配置文件生效
配置文件說明:
- 格式: 共享目錄的路徑 允許訪問的NFS客戶端(共享權限參數)
如上,共享目錄為/public
, 允許訪問的客戶端為192.168.245.0/24網絡用戶,權限為只讀。
請注意,NFS客戶端地址與權限之間沒有空格。
NFS
輸出保護需要用到kerberos
加密(none
,sys
,krb5
,krb5i
,krb5p
),格式sec=XXX
none
:以匿名身份訪問,如果要允許寫操作,要映射到nfsnobody
用戶,同時布爾值開關要打開,
setsebool nfsd_anon_write 1
sys
:文件的訪問是基于標準的文件訪問,如果沒有指定,默認就是sys, 信任任何發(fā)送過來用戶名
krb5
:客戶端必須提供標識,客戶端的表示也必須是krb5,基于域環(huán)境的認證
krb5i
:在krb5的基礎上做了加密的操作,對用戶的密碼做了加密,但是傳輸的數據沒有加密
krb5p
:所有的數據都加密
用于配置NFS服務程序配置文件的參數:
參數 |
作用 |
ro |
只讀 |
rw |
讀寫 |
root_squash |
當NFS客戶端以root管理員訪問時,映射為NFS服務器的匿名用戶 |
no_root_squash |
當NFS客戶端以root管理員訪問時,映射為NFS服務器的root管理員 |
all_squash |
無論NFS客戶端使用什么賬戶訪問,均映射為NFS服務器的匿名用戶 |
sync |
同時將數據寫入到內存與硬盤中,保證不丟失數據 |
async |
優(yōu)先將數據保存到內存,然后再寫入硬盤;這樣效率更高,但可能會丟失數據 |
NFS客戶端掛載配置
第一步:使用showmount命令查看nfs服務器共享信息
輸出格式為“共享的目錄名稱 允許使用客戶端地址”
[root@localhost ~]# showmount -e 192.168.245.128
Export list for 192.168.245.128:
/protected 192.168.245.0/24
/public 192.168.245.0/24
showmount
命令的用法;
參數 |
作用 |
-e |
顯示NFS服務器的共享列表 |
-a |
顯示本機掛載的文件資源的情況NFS資源的情況 |
-v |
顯示版本號 |
第二步:在客戶端創(chuàng)建目錄,并掛載共享目錄
[root@localhost ~]# mkdir /mnt/public
[root@localhost ~]# mkdir /mnt/data
[root@localhost ~]# vim /etc/fstab
#在該文件中掛載,使系統(tǒng)每次啟動時都能自動掛載
192.168.245.128:/public /mnt/public nfs defaults 0 0
192.168.245.128:/protected /mnt/data nfs defaults 0 1
[root@localhost ~]# mount -a #是文件/etc/fstab生效
第三步:檢查
[root@mail ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/rhel-root xfs 17G 3.1G 14G 18% /
devtmpfs devtmpfs 1.4G 0 1.4G 0% /dev
tmpfs tmpfs 1.4G 140K 1.4G 1% /dev/shm
tmpfs tmpfs 1.4G 9.1M 1.4G 1% /run
tmpfs tmpfs 1.4G 0 1.4G 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 173M 842M 18% /boot
tmpfs tmpfs 280M 32K 280M 1% /run/user/0
/dev/sr0 iso9660 3.6G 3.6G 0 100% /mnt/cdrom
192.168.245.128:/public nfs4 17G 3.7G 14G 22% /mnt/public
192.168.245.128:/protected nfs4 17G 3.7G 14G 22% /mnt/data
在Window上掛載NFS
第一步:在控制面板–>添加程序和功能–>添加NFS組件
第二步:在此電腦,映射驅動器中添加nfs地址,和要共享的文件夾
第三步:如果權限有問題
打開注冊表:regedit
, 在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default
下新建兩個OWORD(64)位值,添加值AnonymousGid
,值默認為0,AnonymousUid
,值默認為0。
以上就是淺析NFS服務器原理以及搭建配置步驟的詳細內容,更多關于NFS服務器原理、搭建、配置的資料請關注腳本之家其它相關文章!