NFS架構搭建及配置
14.1 NFS介紹
NFS(Network File System)即網絡文件系統,是FreeBSD支持的文件系統中的一種,它允許網絡中的計算機之間通過TCP/IP網絡共享資源。在NFS的應用中,本地NFS的客戶端應用可以透明地讀寫位於遠端NFS服務器上的文件,就像訪問本地文件一樣。NFS的數據傳輸基於RPC(remote procedure call)協議。
應用場景
A,B,C三臺機器上需要被訪問到的文件是一樣的,A共享數據出來,B和C分別取掛載A共享的數據目錄,從而B和C訪問到的數據和A上的一致。
14.2 NFS服務端安裝配置
準備兩臺虛擬機,一臺作為服務端,一臺作為客戶端。
服務端
IP:192.168.8.130
安裝NFS工具:
[root@localhost ~]# yum install -y nfs-utils rpcbind
配置
[root@localhost ~]# vim /etc/exports
/home/nfstestdir 192.168.8.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
#指定要進行分享的目錄;指定要共享該目錄的機器
創建分享目錄並制定權限:
[root@localhost ~]# mkdir /home/nfstestdir
[root@localhost ~]# chmod 777 /home/nfstestdir
在yum安裝完成後,系統會自動啟動rpcbind服務(在服務端進程名稱為systemd),默認監聽的端口時111端口。
[root@localhost ~]# systemctl start nfs
將NFS服務加入開機啟動項:
[root@localhost ~]# systemctl enable nfs
客戶端
IP:192.168.8.132
安裝NFS工具:
[root@centos-01linux ~]# yum install -y nfs-utils
客戶端掛載
檢查客戶端是否有權限訪問服務端文件:
[root@centos-01linux ~]# showmount -e 192.168.8.130
報錯: 無法連接到服務端機器(網絡不通)!
解決辦法:
檢查服務端NFS服務是否開啟(監聽111端口)
如果確認服務端NFS服務已經開啟,那麽檢查防火墻狀態,關閉服務端和客戶端firewalld和SELinux防火墻
解決完上述錯誤後再次執行命令:
[root@centos-01linux ~]# showmount -e 192.168.8.130
Export list for 192.168.8.130:
/home/nfstestdir 192.168.8.0/24
即,客戶端可以正常訪問服務端機器。
開始掛載
[root@centos-01linux ~]# mount -t nfs 192.168.8.130:/home/nfstestdir /mnt/
[root@centos-01linux ~]# df -h
文件系統 容量 已用 可用 已用% 掛載點
192.168.8.130:/home/nfstestdir 18G 7.5G 11G 42% /mnt
測試
在客戶機掛載目錄創建文件:
[root@centos-01linux ~]# cd /mnt/
[root@centos-01linux mnt]# ll
總用量 0
-rw-r--r-- 1 mysql mysql 0 8月 23 19:50 test123
查看服務端共享目錄:
[root@localhost ~]# ll /home/nfstestdir/
總用量 0
-rw-r--r--. 1 mysql mysql 0 8月 23 19:50 test123
即,實現了同步共享!
14.3 NFS配置選項
[root@localhost ~]# vim /etc/exports
/home/nfstestdir 192.168.8.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
14.4 exportfs命令
exportfs命令用來管理當前NFS共享的文件系統列表。
Options:
-a:全部卸載或全部掛載
-r:重新掛載
-u:卸載某個目錄
-v:顯示共享目錄
常用組合: exportfs -arv
服務端更改配置文件後,不重啟服務,直接執行該命令就可以使更改後的配置文件生效。
註意: 在重啟nfs服務之前需要先將所有掛載點卸載,否則將發生程序錯誤,嚴重者會拖垮系統。
以上操作均在服務端進行!!!
14.5 NFS客戶端問題
針對NFS4版本在centos6中應用存在如下問題:
客戶端掛載共享目錄後,不管是root用戶還是普通用戶,創建新文件時屬主、數組為nobody。
解決方法:
方法1:在客戶端進行掛載時加上選項-o nfsvers=3
[root@centos-01linux ~]# monunt -t nfs -o nfsvers=3 192.168.8.130:/tmp/ /mnt/
如果目錄已經掛載,而又不想卸載,執行如下命令:
[root@centos-01linux ~]# monunt -t nfs -o remount,nfsvers=3 192.168.8.130:/tmp/ /mnt/
方法2:客戶端和服務端都需要
[root@centos-01linux ~]# vim /etc/idmapd.conf
把該配置文件中的“Domain = local.domain.com”改為“Domain = xxx.com”(此處xxx.com自定義),然後重啟rpcidmapd服務(在centos7中直接重啟rpcbind服務)。
NFS架構搭建及配置