1. 程式人生 > >2018.3.26 14周1次課

2018.3.26 14周1次課

Linux學習

十四周一次課(3月26日)

14.1 NFS介紹

14.2 NFS服務端安裝配置

14.3 NFS配置選項

14.1 NFS介紹

NFS是Network File System的縮寫

NFS最早由Sun公司開發,分2,3,4三個版本,2和3由Sun起草開發,4.0開始Netapp公司參與並主導開發,最新為4.1版本

NFS數據傳輸基於RPC協議,RPC為Remote Procedure Call的簡寫。

NFS應用場景是:A,B,C三臺機器上需要保證被訪問到的文件是一樣的,A共享數據出來,B和C分別去掛載A共享的數據目錄,從而B和C訪問到的數據和A上的一致

技術分享圖片

技術分享圖片

NFS服務不監聽端口,監聽端口實現tcp/ip通訊服務的是RPC服務,,默認監聽111端口。總之,NFS服務要借助RPC協議來進行通訊。

14.2 NFS服務端安裝配置

在centos上是使用NFS服務需要安裝兩個包(nfs-utils和rpcbind),不過當使用yum工具安裝nfs-utils時會一並安裝rpcbind

在服務端192.168.37.101上安裝nfs-utils:yum install -y nfs-utils

安裝完nfs-utils包後,會自動打開監聽111端口

技術分享圖片

服務端設置:

編輯vim /etc/exports加入如下內容

/home/nfstestdir 192.168.37.0/24(rw,sync,all_squash,anonuid=1002,anongid=1002)

共分為三部分:

  • 本地要共享出去的目錄:/home/nfstestdir

  • 允許訪問的主機(可以時一個ip,可以是一個ip段):192.168.37.0/24

  • 小括號裏面的是一些權限選項

保存配置文件後,執行如下準備操作

mkdir /home/nfstestdir //創建nfstestdir共享目錄

chmod 777 /home/nfstestdir //更改權限為777

systemctl start rpcbind //開啟rpcbind服務

技術分享圖片

systemctl start nfs //開啟nfs 服務,會自動啟動跟rpc相關的服務,這些服務都是跟nfs相關聯的。跟上圖相比,多了幾個rpc的服務

技術分享圖片

技術分享圖片

systemctl enable rpcbind //開機啟動rpcbind

systemctl enable nfs //開機啟動nfs

14.3 NFS配置選項

  • rw 讀寫

  • ro 只讀

  • sync 同步模式,內存數據實時寫入磁盤

  • async 非同步模式

  • no_root_squash 客戶端掛載NFS共享目錄後,root用戶不受約束,權限很大

  • root_squash 與上面選項相對,客戶端上的root用戶收到約束,被限定成某個普通用戶

  • all_squash 客戶端上所有用戶在使用NFS共享目錄時都被限定為一個普通用戶

  • anonuid/anongid 和上面幾個選項搭配使用,定義被限定用戶的uid和gid

客戶端掛載nfs

在客戶端192.168.37.100上安裝nfs-utils:yum install -y nfs-utils

在客戶端掛載nfs之前,我們需要先查看服務端共享了哪些目錄,可以用showmount命令查看

showmount -e 192.168.37.101 //該ip為NFS服務端ip

技術分享圖片

報錯,說明防火墻沒有開啟相應需要開啟的端口,就算把111端口開啟也沒有用,要把服務端和客戶端的防火墻都關掉

systemctl stop firewalld

getenforce

setenforce 0

技術分享圖片

可以看到192.168.37.101的共享目錄為/home/nfstestdir,信任主機為192.168.37.0/24這個網段

也可以不關閉防火墻,在服務端可開啟如下命令列出的所有端口即可

rpcinfo -p localhost

技術分享圖片

NFS v4內置遠程掛裝和文件鎖定等協議支持,因此NFS v4不再需要與rpcbind、rpc.mount、rpc.statd和lockd互動。

但是,當NFS服務器使用exports命令時仍然需要rpc.mount守護進程,但不參與跨越線的操作。NFS v4的NFS服務

仍然監聽tcp:2049端口。

NFS服務與防火墻

對於v4服務,僅開啟對tcp:2049端口即可

firewall-cmd --add-service=nfs --permanent

firewall-cmd -reload

對於v3服務除了rpcbind、rpc.mount、rpc.nfsd之外,其與NFS相關的基於RPC的服務每次啟動是其他端口號會隨機

生成這為服務器配置防火墻的NFS規則帶來困難,這就要設置/etc/sysconfig/nfs文件中的端口號,使強制NFS服務使用

固定端口

最後在配置防火墻

客戶端掛載nfs

mount -t nfs 192.168.37.101:/home/nfstestdir /mnt

df -h

技術分享圖片

touch /mnt/aminglinux.txt //創建文件

ls -l /mnt/ //查看文件信息,屬主和屬組都是mysql,客戶端是掛載服務端的/home/nfstestdir,所以其中uid和gid都是在服務端/etc/exports裏設置的/home/nfstestdir/目錄的權限:uid和gid都是1002,客戶端機1002是mysql

技術分享圖片

技術分享圖片

ls -l /home/nfstestdir/ //在服務端查看共享目錄,用戶和屬組都是aming,其中uid和gid都是在/etc/exports裏設置的/home/nfstestdir/目錄的權限:uid和gid都是1002,服務端機1002是aming

技術分享圖片

技術分享圖片

通過客戶端ls -l /mnt/ 和服務端ls -l /home/nfstestdir/命令裏看到的aminglinux.txt是同一文件


2018.3.26 14周1次課