14.1-14.3 NFS介紹,服務端安裝,客戶端掛載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架構
應用場景:
A B C為別是三臺機器
他們分別需要訪問同一個目錄,且目錄中都是圖片。傳統的做法就是把這些圖片分別放到A,B,C中,
但若使用NFS,只需要把圖片放到A上,然後A共享給B和C即可。訪問B和C時,是通過網絡的方式去訪問A上的那個目錄的。
NFS原理圖
NFS服務端 啟動NFS服務,利用RPC服務(啟動rpcbind,實現RPC通信)去提供NFS客戶端使用NFS服務
rpcbind監聽111端口
NFS服務需要借助RPC協議實現通信
14.2 NFS服務端安裝配置
大綱
準備工作:
2臺或以上linux機器
centos7-01(192.168.189.128)客戶端
centos7-02(192.168.189.129)服務端
*以下全部操作都在服務端操作
1 先在服務端和客戶端安裝兩個包
[root@centos7-01 ~]# yum install -y nfs-utils rpcbindc
[root@centos7-02 ~]# yum install -y nfs-utils rpcbindc
2 安裝完成後,編輯exports文件
[root@centos7-01 ~]#vim /etc/exports //加入如下內容
/home/nfstestdir 192.168.133.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
格式解釋:
以空格(空格鍵)分割,分為三部分
第一部分是本地要分享出去的目錄(如果不存在,需要自行創建)
第二部分是允許訪問的主機(可以是一個IP,也可以是一個IP段)
第三部分是小括號裏面的權限選項。
3 啟動服務
3.1 啟動服務之前的準備
[root@centos7-01 ~]#mkdir /home/nfstestdir創建分享目錄
[root@centos7-01 ~]#chmod 777 /home/nfstestdir
檢查監聽端口,看看rpcbind監聽端口狀態
[root@centos7-01 ~]# netstat -lntp |grep 111
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
其實111端口就是rpcbind的服務,這裏顯示systemd並不代表rpcbind沒被監聽,
只需記住111端口就是rpcbind服務使用即可。
3.2 啟動服務
#systemctl start rpcbind 啟動rpc服務
#systemctl start nfs啟動nfs服務
#systemctl enable rpcbind 開機啟動rpc服務
#systemctl enable nfs開機啟動nfs服務(服務端)
14.3 NFS配置選項
大綱
先看看服務端配置的參數選項
[root@centos7-01 home]# cat /etc/exports
/home/nfstestdir 192.168.189.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
選項解釋:
rw 讀寫
ro 只讀
sync 同步模式,內存數據實時寫入磁盤(降低磁盤效率)
async 非同步模式,表示把內存中的數據定期寫入磁盤。(好處:保證磁盤效率,壞處:斷電可能會丟失某部分數據)
no_root_squash 客戶端掛載NFS共享目錄後,root用戶不受約束,權限很大
root_squash 與上面選項相對,客戶端上的root用戶收到約束,被限定成某個普通用戶
all_squash 客戶端上所有用戶在使用NFS共享目錄時都被限定為一個普通用戶
anonuid/anongid 和上面幾個選項搭配使用,定義被限定用戶的uid和gid
客戶端掛載NFS
大綱
1 安裝nfs-utils包
#yum install -y nfs-utils
2 查看指定ip掛載服務狀態,下面的ip為NFS服務端ip
[root@centos7-02 ~]# showmount -e 192.168.189.128
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
報錯提示,網絡不通,通訊失敗(原因:防火墻、rpc的端口沒被監聽)
2.1 關閉客戶端與服務端的防火墻服務
[root@centos7-01 home]# systemctl stop firewalld
[root@centos7-01 home]# setenforce 0
[root@centos7-02 home]# systemctl stop firewalld
[root@centos7-02 home]# setenforce 0
2.2 關閉防火墻後,再次showmount
[root@centos7-02 ~]# showmount -e 192.168.189.128
Export list for 192.168.189.128:
/home/nfstestdir 192.168.189.0/24
關閉防火墻後正常輸出,可以看到狀態信息和服務端的NFS設置一樣
3 掛載NFS
[root@centos7-02 ~]# mount -t nfs 192.168.189.128:/home/nfstestdir /mnt/
3.1 檢查掛載
[root@centos7-02 ~]# df -h
文件系統 容量 已用 可用 已用% 掛載點
/dev/sda3 28G 1.1G 27G 4% /
devtmpfs 483M 0 483M 0% /dev
tmpfs 493M 0 493M 0% /dev/shm
tmpfs 493M 6.8M 486M 2% /run
tmpfs 493M 0 493M 0% /sys/fs/cgroup
/dev/sda1 187M 97M 91M 52% /boot
tmpfs 99M 0 99M 0% /run/user/0
192.168.189.128:/home/nfstestdir 28G 9.3G 19G 34% /mnt
3.2 在客戶端創建文件測試
3.2.1 在客戶端上創建文件
[root@centos7-02 ~]# cd /mnt/
[root@centos7-02 mnt]# touch client.test
[root@centos7-02 mnt]# ls -l
總用量 0
-rw-r--r--. 1 user5 user5 0 5月 9 16:14 client.test
3.2.2 在服務端檢查文件是否被建立
[root@centos7-01 home]# cd /home/nfstestdir/
[root@centos7-01 nfstestdir]# ls -l
總用量 0
-rw-r--r-- 1 aming aming 0 5月 9 16:14 client.test
文件被創建,
但可以看到客戶端創建的文件用戶名和組都不同。
原因是:在服務端限定了uid和gid為1000,所以 客戶端和服務端的用戶和用戶組是不同的。
服務端ID為1000的用戶
[root@centos7-01 nfstestdir]# cat /etc/passwd |grep 1000
aming:x:1000:1000::/home/aming:/bin/bash
客戶端ID為1000的用戶
[root@centos7-02 mnt]# cat /etc/passwd |grep 1000
user5:x:1000:1000::/home/user5:/bin/bash
由此可以證明,NFS搭建成功。
14.1-14.3 NFS介紹,服務端安裝,客戶端掛載NFS