NFS介紹與搭建

風光小磊發表於2022-07-14

一、NFS的介紹

1.1、什麼是NFS

  •   NFS 是Network File System的縮寫,即網路檔案系統。一種使用於分散式檔案系統的協定,由Sun公司開發,於1984年向外公佈。
  •   NFS在檔案傳送或資訊傳送過程中依賴於RPC協議。RPC:遠端過程呼叫 (Remote Procedure Call) 是能使客戶端執行其他系統中程式的一種機制。
  •   NFS伺服器可以看作是一個FILE SERVER。它可以讓你的機器(客戶端)通過網路將遠端的NFS SERVER共享目錄MOUNT到自己的系統中。
      在客戶端看來使用NFS的遠端檔案就象是在使用本地檔案一樣,原理圖如下:
         

1.2、NFS守護程式

  • nfsd:它是基本的NFS守護程式,主要功能是管理客戶端是否能夠登入伺服器;
  • mountd:它是RPC安裝守護程式,主要功能是管理NFS的檔案系統。當客戶端登入到NFS伺服器後,必須通過檔案使用許可權的驗證。它會讀取NFS的配置檔案/etc/exports來對比客戶端許可權。
  • portmap:主要功能是進行埠對映工作。

1.3、NFS伺服器的配置

 1.3.1  需要的包:一般都預設安裝好了,如果需要可從映象檔案中安裝。

 1.3.2  NFS的相關配置檔案和命令

  • /etc/exports                  NFS服務的主要配置檔案
  • /usr/sbin/exportfs         NFS服務的管理命令
  • /usr/sbin/showmount   檢視命令

 1.3.3 /etc/exports檔案內容格式:

   <輸出目錄> [客戶端1 選項(訪問許可權,使用者對映,其他)] [客戶端2 選項(訪問許可權,使用者對映,其他)]
       如:將NFS Server的/soft共享給192.168.3.0/24網段,許可權為讀寫
  [root@NFS ~]# vi /etc/exports
   /soft 192.168.3.0/24(rw) 訪問許可權

二、NFS 搭建

2.1. 建立NFS伺服器

2.1.1 安裝nfs-utils和RPC

 [root@NFS ~]# rpm -qa nfs-utils rpcbin               #檢查系統中是否安裝 NFS 和 RPC
 [root@NFS ~]# yum -y install nfs-utils rpcbind       #使用 yum 安裝nfs 和 rpc

2.1.2 建立共享目錄

[root@NFS ~]# mkdir -p /data/nfs/ 

[root@NFS ~]# chmod 777 /data/nfs/

[root@NFS ~]# ll /data

2.1.3 編輯配置NFS配置檔案

編輯/etc/exports檔案新增需要共享目錄,每個目錄的設定獨佔一行,編寫格式如下:
      NFS共享目錄路徑 客戶機IP段(引數1,引數2,...,引數n)
引數說明:
引數說明
ro 只讀訪問
rw 讀寫訪問
sync 所有資料在請求時寫入共享
async nfs在寫入資料前可以響應請求
secure nfs通過1024以下的安全TCP/IP埠傳送
insecure nfs通過1024以上的埠傳送
wdelay 如果多個使用者要寫入nfs目錄,則歸組寫入(預設)
no_wdelay 如果多個使用者要寫入nfs目錄,則立即寫入,當使用async時,無需此設定
hide 在nfs共享目錄中不共享其子目錄
no_hide 共享nfs目錄的子目錄
subtree_check 如果共享/usr/bin之類的子目錄時,強制nfs檢查父目錄的許可權(預設)
no_subtree_check 不檢查父目錄許可權
all_squash 共享檔案的UID和GID對映匿名使用者anonymous,適合公用目錄
no_all_squash 保留共享檔案的UID和GID(預設)
root_squash root使用者的所有請求對映成如anonymous使用者一樣的許可權(預設)
no_root_squash root使用者具有根目錄的完全管理訪問許可權
anonuid=xxx 指定nfs伺服器/etc/passwd檔案中匿名使用者的UID
anongid=xxx 指定nfs伺服器/etc/passwd檔案中匿名使用者的GID
  • 注1:儘量指定IP段最小化授權可以訪問NFS 掛載的資源的客戶端
  • 注2:經測試引數insecure必須要加,否則客戶端掛載出錯 mount.nfs: access denied by server while mounting
例子:
[root@NFS ~]# cat >>/etc/exports<<EOF
> /data/nfs 192.168.3.87(rw,sync,no_subtree_check) 192.168.3.88(rw,sync,no_subtree_check)
> EOF
[root@NFS ~]# cat /etc/exports
/data/nfs 192.168.3.87(rw,sync,no_subtree_check) 192.168.3.88(rw,sync,no_subtree_check)
[root@NFS ~]#

2.1.4 啟動RPC和NFS服務

[root@NFS ~]# systemctl start rpcbind # 啟動rpc
[root@NFS ~]# systemctl start nfs-server #啟動nfs
[root@NFS ~]# systemctl enable rpcbind  #設定開機自啟
[root@NFS ~]# systemctl enable nfs-server #設定開機自啟

2.1.5 設定配置檔案生效

[root@NFS ~]# exportfs -r       #讓配置檔案生效

2.1.6 檢查

[root@NFS ~]# rpcinfo -p localhost # 檢查NFS服務是否向rpc註冊埠資訊
[root@NFS ~]# showmount -e   # 檢查共享目錄資訊

2.2 客戶端掛載

2.2.1  檢查客戶端是否可以連線服務端

[root@localhost ~]# showmount -e 192.168.0.89  # 檢查共享目錄資訊
Export list for 192.168.3.89:
/u01/upload 192.168.3.88,192.168.3.85,192.168.3.87

2.2.2 進行掛載

[root@localhost ~]# mount -t nfs 192.168.3.89:/data/nfs /u01/upload # 進行磁碟掛載
[root@localhost ~]# df -h  #檢查掛載情況
[root@localhost ~]# df -h
Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/centos-root    50G  7.4G   43G  15% /
devtmpfs                   16G     0   16G   0% /dev
tmpfs                      16G     0   16G   0% /dev/shm
tmpfs                      16G  8.9M   16G   1% /run
tmpfs                      16G     0   16G   0% /sys/fs/cgroup
/dev/sda1                1014M  145M  870M  15% /boot
/dev/mapper/centos-home   334G   34M  334G   1% /home
tmpfs                     3.2G     0  3.2G   0% /run/user/0
192.168.3.89:/data/nfs   50G   22G   29G  44% /u01/upload

三、安裝過程中的報錯與解決

報錯一
 clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
這個出現在客戶端用 showmount -e 檢查與服務端共享情況時報得錯,一般原因是因為服務端nfs服務沒啟動或者是防火牆沒關閉。
 
報錯二
 exportfs:  192.168.3.87:/data/share: Function not implemented
 這個報錯一般出現在exportfs -r 設定配置檔案生效時出現的,可能是因為相關nfs服務沒啟動或者相關伺服器需要加埠號才能訪問。
解決方法讓如下:
1. 嘗試重啟nfs服務和rpc服務
2. 配置檔案加上埠號如:/data/share/ 192.168.3.87/22(rw,no_root_squash,no_all_squash,sync)
 
報錯三
  -bash: showmount: command not found
 在客戶端測試時,發現無法使用showmount命令,需要執行命令yum -y install nfs-utils安裝相關命令
 
 其它詳情參考NFS檔案共享系統
 

相關文章