2018.3.26 14周1次課
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次課