NFS數據共享(全面講解使用教程)


一:NFS數據共享

1.NFS簡介:
NFS是Network File System的縮寫及網絡文件系統。NFS主要功能是通過局域網絡讓不同的主機系統之間可以共享文件或目錄。

NFS系統和Windows網絡共享、網絡驅動器類似, 只不過windows用於局域網, NFS用於企業集群架構中, 如果是大型網站, 會用到更復雜的分布式文件系統FastDFS,glusterfs,HDFS,ceph

image

2.什么是NFS?
NFS就是Network File System的縮寫,它最大的功能就是可以通過網絡,讓不同的機器、不同的操作系統可以共享彼此的文件。

​ NFS服務器可以讓PC將網絡中的NFS服務器共享的目錄掛載到本地端的文件系統中,而在本地端的系統中來看,那個遠程主機的目錄就好像是自己的一個磁盤分區一樣,在使用上相當便利;

NFS一般用來存儲共享視頻,圖片等靜態數據。

image

  • 如上圖:
當我們在NFS服務器設置好一個共享目錄/home/public后,其他的有權訪問NFS服務器的NFS客戶端就可以將這個目錄掛載到自己文件系統的某個掛載點,這個掛載點可以自己定義,如上圖客戶端A與客戶端B掛載的目錄就不相同。並且掛載好后我們在本地能夠看到服務端/home/public的所有數據。如果服務器端配置的客戶端只讀,那么客戶端就只能夠只讀。如果配置讀寫,客戶端就能夠進行讀寫。掛載后,NFS客戶端查看磁盤信息命令:df –h。
3.NFS的應用
1.用戶訪問NFS客戶端,將請求轉化為函數
2.NFS通過TCP/IP連接服務端
3.NFS服務端接收請求,會先調用portmap進程進行端口映射
4.Rpc.nfsd進程用於判斷NFS客戶端能否連接服務端;
5.Rpc.mount進程用於判斷客戶端對服務端的操作權限
6.如果通過權限驗證,可以對服務端進行操作,修改或讀取
  • NFS客戶端和NFS服務器的過程:
    image

二:NFS數據共享實踐

  • 服務端
1、安裝NFS和rpcbind
[root@nfs ~]# yum install nfs-utils rpcbind -y

2、創建掛載點(掛載的目錄)
[root@nfs ~]# mkdir /web
[root@nfs ~]# mkdir /web/nfs{1..9}

3、配置掛載點
[root@nfs ~]# vim /etc/exports
格式:
[掛載點] [可以訪問的IP]([權限])
/web/nfs1  172.16.1.0/20(rw,sync,all_squash)

4、關閉selinux和防火牆
[root@nfs ~]# setenforce 0
[root@nfs ~]# systemctl disable --now firewalld

重啟
[root@nfs ~]# systemctl restart nfs-server rpcbind

5、啟動Nfs和rpcbind服務
[root@nfs ~]# systemctl start nfs-server 
[root@nfs ~]# systemctl start rpcbind

6、檢查服務端是否正常
[root@nfs ~]# showmount -e [服務端的地址,默認是本機地址]

[root@nfs ~]# showmount -e
結果為正常:
Export list for nfs:
/web/nfsv1 172.16.1.0/20
[root@nfs ~]# showmount -e 172.16.1.31
結果為正常:
Export list for 172.16.1.31:
/web/nfsv1 172.16.1.0/20

[root@nfs ~]# cat /var/lib/nfs/etab

7、給掛載點授權
[root@nfs ~]# chown -R nfsnobody.nfsnobody /web

chown		: 將指定文件的擁有者改為指定的用戶或組
-R		    : 指定目錄以及其子目錄下的所有文件
/web		: 指定目錄文件
  • 客戶端
1、安裝NFS
[root@web01 opt]# yum install -y nfs-utils

2、創建目錄
[root@web01 opt]# mkdir /opt/nfs/

3、掛載NFS
[root@web01 opt]# mount -t nfs 172.16.1.31:/web/nfs1  /opt/nfs/

解析:
-t		: 指定文件設備類型
nfs		: 類型
172.16.1.31:/web/nfs1	: 掛載點
/opt/nfs/	: 掛載到該,目錄下
將NFS/web/nfs1掛載到 web1主機opt/nfs/目錄下
實現目錄下的數據共享
如刪除將都不存在

4、測試NFS文件同步功能
[root@web01 opt]# touch nfs/{1..9}.txt
[root@web01 opt]# ll nfs/

結果為正常:
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 1txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 2txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 3txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 4txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 5txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 6txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 7txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 8txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 9txt
服務端
[root@nfs ~]# ll /web/nfs1

結果為正常:
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 1txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 2txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 3txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 4txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 5txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 6txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 7txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 8txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 9txt

二:NFS配置詳解

nfs共享參數 參數作用
rw 讀寫權限 (常用)
ro 只讀權限 (不常用)
root_squash 當NFS客戶端以root管理員訪問時,映射為NFS服務器的匿名用戶 (不常用)
no_root_squash 當NFS客戶端以root管理員訪問時,映射為NFS服務器的root管理員 (不常用)
all_squash 無論NFS客戶端使用什么賬戶訪問,均映射為NFS服務器的匿名用戶 (常用)
no_all_squash 無論NFS客戶端使用什么賬戶訪問,都不進行壓縮 (不常用)
sync 同時將數據寫入到內存與硬盤中,保證不丟失數據 (常用)重要數據使用
async 優先將數據保存到內存,然后再寫入硬盤;這樣效率更高,但可能會丟失數據 (不常用)不重要數據使用
anonuid 配置all_squash使用,指定NFS的用戶UID,必須存在系統 (常用)
anongid 配置all_squash使用,指定NFS的用戶GID,必須存在系統 (常用)
  • 配置解析
1.控制文件權限

root_squash(當NFS客戶端以root管理員訪問時,映射為NFS服務器的匿名用戶)

1.進入 vim /etc/exports 修改配置文件(NFS)
/web/nfs1  172.16.1.0/20(rw,sync,root_squash)
2.重啟
systemctl restart nfs-server rpcbind

1.nfs內創建(1-9)文件(客戶端)
[root@web01 nfs]# touch {1..9}txt
2.wed(客戶端)之前掛載過,先取消掛載
[root@web01 opt]# umount /opt/nfs/
3.實現共享文件
[root@web01 opt]# mount -t nfs 172.16.1.31:/web/nfs1 /opt/nfs/

* 測試共享文件
1.客戶端
ll nfs



* 測試共享文件
1.服務端
ll /web/nfs1

[root@nfs nfs1]# ll
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 1txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 2txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 3txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 4txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 5txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 6txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 7txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 8txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 9txt

no_root_squash(當NFS客戶端以root管理員訪問時,映射為NFS服務器的root管理員)

.進入 vim /etc/exports 修改配置文件(NFS)
/web/nfs1  172.16.1.0/20(rw,sync,no_root_squash)
2.重啟
systemctl restart nfs-server rpcbind

1.nfs內創建文件(客戶端)
[root@web01 nfs]# touch 11.txt
2.wed(客戶端)之前掛載過,先取消掛載
[root@web01 opt]# umount /opt/nfs/
3.實現共享文件
[root@web01 opt]# mount -t nfs 172.16.1.31:/web/nfs1 /opt/nfs/
[root@web01 opt]# touch nfs/11.txt

* 測試共享文件
1.客戶端
ll nfs


* 測試共享文件
1.服務端
ll /web/nfs1
 [root@nfs web]# ll nfs1
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:52 10.txt
-rw-r--r-- 1 root      root      0 Dec 30 16:02 11.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 1txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 2txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 3txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 4txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 5txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 6txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 7txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 8txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 9txt

all_squash(無論NFS客戶端使用什么賬戶訪問,均映射為NFS服務器的匿名用戶

1.進入 vim /etc/exports 修改配置文件(NFS)
/web/nfs1  172.16.1.0/20(rw,sync,all_squash)
2.重啟
systemctl restart nfs-server rpcbind


1.wed(客戶端)之前掛載過,先取消掛載
[root@web01 opt]# umount /opt/nfs/
2.實現共享文件
[root@web01 opt]# mount -t nfs 172.16.1.31:/web/nfs1 /opt/nfs/
3.創建新用戶
[root@web01 opt]# useradd test
4.切換用戶
[root@web01 opt]# su - test
5.創建新文件
[test@web01 opt]$ touch nfs/12.tct

[test@web01 nfs]$ ll
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:52 10.txt
-rw-r--r-- 1 root      root      0 Dec 30 16:02 11.txt
-rw-rw-r-- 1 nfsnobody nfsnobody 0 Dec 30 16:14 12.tct
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 1txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 2txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 3txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 4txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 5txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 6txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 7txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 8txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 15:45 9txt

no_all_squash(無論NFS客戶端使用什么賬戶訪問,都不進行壓縮 (其他默認壓縮))

服務端(修改共享文件權限(普通用戶無法修改使用))
[root@nfs nfs1]# chmod 000 ./*
[root@nfs nfs1]# ll
total 4
---------- 1 nfsnobody nfsnobody 0 Dec 30 15:52 10.txt
---------- 1 root      root      0 Dec 30 16:02 11.txt
---------- 1 nfsnobody nfsnobody 0 Dec 30 16:14 12.txt
---------- 1 nfsnobody nfsnobody 0 Dec 30 15:45 1txt
---------- 1 nfsnobody nfsnobody 4 Dec 30 16:28 1.txt
---------- 1 nfsnobody nfsnobody 0 Dec 30 15:45 2txt
---------- 1 nfsnobody nfsnobody 0 Dec 30 15:45 3txt
---------- 1 nfsnobody nfsnobody 0 Dec 30 15:45 4txt
---------- 1 nfsnobody nfsnobody 0 Dec 30 15:45 5txt
---------- 1 nfsnobody nfsnobody 0 Dec 30 15:45 6txt
---------- 1 nfsnobody nfsnobody 0 Dec 30 15:45 7txt
---------- 1 nfsnobody nfsnobody 0 Dec 30 15:45 8txt
---------- 1 nfsnobody nfsnobody 0 Dec 30 15:45 9txt

客戶端(普通用戶無法使用)
[test@web01 nfs]$ echo 123 > 1.txt
-bash: 1.txt: Permission denied
[test@web01 nfs]$ ll
total 4
---------- 1 nfsnobody nfsnobody 0 Dec 30 15:52 10.txt
---------- 1 root      root      0 Dec 30 16:02 11.txt
---------- 1 nfsnobody nfsnobody 0 Dec 30 16:14 12.txt
---------- 1 nfsnobody nfsnobody 0 Dec 30 15:45 1txt
---------- 1 nfsnobody nfsnobody 4 Dec 30 16:28 1.txt
---------- 1 nfsnobody nfsnobody 0 Dec 30 15:45 2txt
---------- 1 nfsnobody nfsnobody 0 Dec 30 15:45 3txt
---------- 1 nfsnobody nfsnobody 0 Dec 30 15:45 4txt
---------- 1 nfsnobody nfsnobody 0 Dec 30 15:45 5txt
---------- 1 nfsnobody nfsnobody 0 Dec 30 15:45 6txt
---------- 1 nfsnobody nfsnobody 0 Dec 30 15:45 7txt
---------- 1 nfsnobody nfsnobody 0 Dec 30 15:45 8txt
---------- 1 nfsnobody nfsnobody 0 Dec 30 15:45 9txt

image

三:配置文件分類

1、控制讀寫
rw、ro

2、控制文件權限
root_squash
no_root_squash
all_squash
no_all_squash

3、控制寫模式
sync
async

4、控制用戶
anonuid
anongid

四:NFS統一用戶

  • 簡介:
統一用戶,為了平台統一 一個id 保證組內用戶能夠完全訪問共享數據權限
1、創建用戶(客戶端與服務端 都要輸入)
[root@nfs nfs1]# groupadd www -g 666
[root@nfs nfs1]# useradd www -u 666 -g 666 -M -r -s /sbin/nologin ​

image

2.服務端寫入配置
[root@nfs ~]# vim /etc/exports
/web/nfs1  172.16.1.0/20(rw,sync,all_squash,anonuid=666,anongid=666)​

image

3.重啟(服務端)
systemctl restart nfs-server rpcbind​
4.修改掛載點權限(客戶端)
[root@nfs nfs1]# chown -R www.www /web/
3、客戶端使用
root@web01 opt]# touch nfs/13.txt
[root@web01 opt]# ll nfs

image

  • 服務器與客戶端區分
nfs		: 服務端(數據共享服務器)
m01		: OpenVPN中央服務器
wed01	:客戶端1
wed02	:客戶端2
wed3	:客戶端3

五:搭建WEB服務(實現數據同步共享)

  • 搭建考試系統(以考試系統為例)
1、安裝web軟件(客戶端同按以下步驟)
[root@web01 opt]# yum install httpd php php-devel -y

image

2.將代碼放置於網站的根目錄
2、將代碼放置於網站的根目錄
[root@web01 opt]# cd /var/www/html/

# 上傳代碼到 /var/www/html/ 目錄下
兩種方式:
1.拉取文件到該目錄下
2.xftp
協議:SFTP

image

3.壓縮包方式需要解壓

image

4.授權
[root@web01 html]# chown -R www.www /var/www/html
5.關閉selinux和防火牆
[root@nfs ~]# setenforce 0
[root@nfs ~]# systemctl disable --now firewalld
6.修改web軟件的用戶
[root@web01 html]# vim /etc/httpd/conf/httpd.conf
User www
Group www

image

7.啟動web軟件
systemctl start httpd
8.測試

內網鏈接,開啟OPENVPN
1、上傳
image
2、訪問
http://172.16.1.7/upload/1_linux.jpg
···
image

六:實現文件共享前操作

1.將客戶端/var/www/html 考試系統傳輸給另兩個客戶端。
[root@web01 html]# scp kaoshi.zip 172.16.1.8:/var/www/html/

[root@web01 html]# scp kaoshi.zip 172.16.1.9:/var/www/html/

image

2.web2解壓壓縮包
3.web3解壓壓縮包

image

  • web與web3執行一遍WEB服務流程

七:配合NFS實現文件數據同步共享

1、修改NFS配置文件(服務端)
[root@nfs nfs1]# vim /etc/exports
/web/upload  172.16.1.0/20(rw,sync,all_squash,anonuid=666,anongid=666)

image

2、創建掛載點
[root@nfs nfs1]# mkdir /web/upload
[root@nfs nfs1]# chown www.www /web/upload
3.重啟NFS
[root@nfs nfs1]# systemctl restart nfs-server rpcbind
4.客戶端安裝NFS軟件
wed01
[root@web01 html]# yum install nfs-utils -y
wed02
[root@web02 html]# yum install nfs-utils -y
wed03
[root@web03 html]# yum install nfs-utils -y

image

5、掛載
[root@web01 html]# mount -t nfs 172.16.1.31:/web/upload /var/www/html/upload
[root@web02 html]# mount -t nfs 172.16.1.31:/web/upload /var/www/html/upload
[root@web03 html]# mount -t nfs 172.16.1.31:/web/upload /var/www/html/upload

image

6.數據共享測試

用web2上傳,web3查看
image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM