NFS介紹、NFS服務端安裝配置、NFS配置選項
NFS 介紹
NFS(Network File System)即網路檔案系統,是FreeBSD支援的檔案系統中的一種,它允許網路中的計算機之間通過TCP/IP網路共享資源。在NFS的應用中,本地NFS的客戶端應用可以透明地讀寫位於遠端NFS伺服器上的檔案,就像訪問本地檔案一樣。NFS的資料傳輸基於RPC(remote procedure call)協議。
-
NFS 應用場景是:A,B,C 三臺機器上需要保證被訪問到的檔案是一樣的。A共享資料出來,B和C分別去掛載A共享的資料目錄,從而B和C訪問到的資料和A上的一致。
- 例子:跑了一個網站,上面傳輸了很多圖片,使用者訪問一個圖片時,需要從A機器上去請求,但A機器負載高,為了分擔負載,就多弄了兩臺機器,B機器C機器同時提供服務;正常的話,需要到A機器上才能拿到資料,但是B機器和C機器做了負載均衡,分擔了相同的伺服器,那麼使用者也有可能到B機器或者C機器上;那麼使用者請求到B機器上的時候,如何才能獲取到A機器上的資料呢;要麼把A機器的資料傳輸到B機器上,同時傳輸到C機器上,但是這個不能時時更新,(使用者上傳的資料是存放在A機器上,但使用者請求的時候資料是請求到B機器上)這樣A上的資料還沒到B上面去,就會導致使用者請求獲取的資料訪問不到,訪問為空,為404;那麼NFS服務就可以解決這個問題,將A機器的資料共享到B機器、C機器,通過NFS來實現。有NFS服務以後,上傳到A機器上的資料,B機器或C機器上就能馬上看到和呼叫。NFS可以實時同步資料。
- NFS原理圖
NFS服務需藉助RPC協議實現通訊。
服務端需要啟動一個NFS服務,服務端要想給客戶端提供服務,需要藉助RPC協議,RPC協議是由rpcbind服務所實現的;在centos 5或者之前的版本叫portmap服務,centos6及之後的版本叫rpcbind服務,這兩個都是一個服務,最終實現了RPC協議的通訊,NFS服務預設不會監聽任何埠(啟動服務,但不會監聽埠),最終監聽埠,實現RPC通訊的過程是由rpcbind服務產生的RPC協議實現的,RPC協議 預設監聽的埠是111 埠;
整個流程為: 服務端的NFS服務監聽一個埠通過RPC協議監聽的埠,再去告訴客戶端RPC協議,然後NFS客戶端通過本機的RPC埠回傳資料資訊到服務端NFS監聽的埠,最終實現通訊.
NFS 服務端安裝配置
準備兩臺虛擬機器,一臺作為服務端,一臺作為客戶端。
服務端配置
服務端IP:192.168.159.131
-
安裝NFS工具:
[root@localhost ~]# yum install -y nfs-utils rpcbind
-
配置
編輯/etc/exports 檔案,加入下面內容:
[root@localhost ~]# vim /etc/exports
/home/nfstestdir 192.168.159.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
// /home/nfstestdir 要分享出去的目錄是哪一個,這個目錄是不存在的,後期還需要建立。
// ip段 為指定要給哪個ip段機器去分享這個目錄,也可以寫單個ip。 -
啟動NFS服務
在yum安裝完成後,系統會自動啟動rpcbind服務(在服務端程式名為systemd),預設監聽的埠為111埠
[root@localhost ~]# ps aux | grep rpc
rpc 2390 0.0 0.0 64964 1044 ? Ss 21:19 0:00 /sbin/rpcbind -w
root 3826 0.0 0.0 112680 972 pts/0 R+ 21:31 0:00 grep –color=auto rpcbind
[root@localhost ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0: LISTEN 1/systemd
……
tcp6 0 0 :::111 ::: LISTEN 1/systemd
……啟動NFS服務:
[root@localhost ~]# systemctl start nfs
//啟動NFS 服務是會自動幫你啟動rpc相關的服務將NFS服務加入開機啟動項:
[root@localhost ~]# systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
客戶端配置
IP : 192.168.159.132
-
安裝NFS工具
[root@localhost ~]# yum install -y nfs-utils
-
客戶端掛載
檢查客戶端是否有許可權訪問服務端檔案:
[root@localhost ~]# showmount -e 192.168.159.131 //131為服務端ip
clnt_create: RPC: Port mapper failure – Unable to receive: errno 113 (No route to host)
// 報錯!說明網路不通,不能和192.168.159.131 的113埠通訊。解決辦法:
1、檢查服務端NFS服務是否開啟(有沒有監聽111埠)
2、如果確認服務端NFS服務已經開啟,那麼檢查防火牆狀態,關閉服務端和客戶端firewalld和SELinux防火牆(systemctl stop firewalld)關閉防火牆後再次檢查客戶端是否有許可權訪問服務端檔案:
[root@localhost ~]# showmount -e 192.168.159.131
Export list for 192.168.159.131:
/home/nfstestdir 192.168.159.0/24
// 客戶端已有許可權訪問服務端開始掛載:
[root@localhost ~]# mount -t nfs 192.168.159.131:/home/nfstestdir /mnt/
// -t 指定檔案系統型別
[root@localhost ~]# df -h
檔案系統 容量 已用 可用 已用% 掛載點
……
192.168.159.131:/home/nfstestdir 16G 5.2G 11G 33% /mnt -
測試
在客戶端/mnt目錄下建立test檔案
[root@localhost ~]# touch /mnt/test
[root@localhost ~]# ls -l /mnt/
總用量 0
-rw-r–r–. 1 mysql mysql 0 1月 16 22:05 test檢視服務端/home/nfstestdir/目錄:
[root@localhost ~]# ls -l /home/nfstestdir/
總用量 0
-rw-r–r–. 1 mysql mysql 0 1月 16 22:05 test
// 存在個客戶端上一樣的檔案,實現了同步共享。
其中,檔案的使用者和使用者組都為mysql,是因為之前nfs服務端配置時,指定了anonuid=1000,anongid=1000。
服務端:
[root@localhost ~]# awk -F `:` `$3==1000 {print $0}` /etc/passwd
mysql:x:1000:1000::/home/mysql:/bin/bash
客戶端:
[root@localhost ~]# awk -F `:` `$3==1000 {print $0}` /etc/passwd
mysql:x:1000:1000::/home/mysql:/bin/bash
// 由於兩邊uid都為1000,所以都為mysql使用者。所以檔案的所屬組和所屬主是由服務端配置檔案中定義的anonuid,anongid決定的。(假設兩個伺服器上uid1000不是同一個使用者,則同步檔案在兩個伺服器上的屬主和屬組是不一樣的。)
NFS配置選項
- rw 讀寫
- ro 只讀
- sync 同步模式,記憶體資料實時寫入磁碟/ 記憶體資料實時寫入磁碟,這樣會降低磁碟效率。
- async 非同步模式 // 每隔一段時間把記憶體資料刷入磁碟一次,如果突然斷電,會丟失一本分資料。
- no_root_squash 客戶端掛載NFS共享目錄後,root使用者不受約束,許可權很大
- root_squash 與上面選項相對,客戶端上的root使用者收到約束,被限定成某個普通使用者
- all_squash 客戶端上所有使用者在使用NFS共享目錄時都被限定為一個普通使用者
- anonuid/anongid 和上面幾個選項搭配使用,定義被限定使用者的uid和gid
相關文章
- CentOS6.7安裝配置nfs服務CentOSNFS
- NFS服務配置總結NFS
- linux Direct NFS配置介紹LinuxNFS
- CentOS 7 安裝配置 NFSCentOSNFS
- nfs伺服器安裝配置NFS伺服器
- heartbeat+drbd+nfs安裝配置NFS
- Centos7 安裝配置NFSCentOSNFS
- CentOS 6 NFS的安裝配置CentOSNFS
- Ubuntu 20.04 中配置NFS服務UbuntuNFS
- AIX配置NFS注意事項AINFS
- SUSE 11 NFS server/client 安裝配置NFSServerclient
- Ubuntu 14.04下NFS安裝配置UbuntuNFS
- linux中配置NFS服務step by stepLinuxNFS
- NFS伺服器的安裝與配置NFS伺服器
- centos7配置nfs共享儲存服務CentOSNFS
- NFS服務搭建NFS
- 配置NFS固定埠NFS
- nfs配置 /etc/exportsNFSExport
- linux NFS 配置LinuxNFS
- linux配置nfsLinuxNFS
- NFS介紹與搭建NFS
- 配置nfs伺服器NFS伺服器
- AIX 上配置、使用NFSAINFS
- AIX平臺NFS配置AINFS
- win10搭建nfs服務端詳細步驟_win10怎麼搭建nfs服務端Win10NFS服務端
- Linux CentOS 檔案共享NFS的安裝配置LinuxCentOSNFS
- 【NFS】Linux配置NFS共享常用SQL指令碼目錄NFSLinuxSQL指令碼
- fedora14 nfs如何安裝?edora14 nfs安裝教程NFS
- NFS共享儲存服務NFS
- samba,nfs安裝使用SambaNFS
- Oracle Linux 6.4配置NFSOracleLinuxNFS
- hpux nfs配置一例UXNFS
- Linux 上配置、使用NFSLinuxNFS
- linux下nfs的配置LinuxNFS
- CentOS 6.X 上安裝配置 NFS 目錄共享CentOSNFS
- Aix 上NFS詳細介紹AINFS
- Linux中NFS介紹(轉)LinuxNFS
- linux as4下NFS配置注意事項LinuxNFS