ubuntu18.04上安裝和配置NFS服務器


簡介

網絡文件系統(NFS)是一個分布式文件系統協議,允許你通過網絡共享遠程文件夾,通過NFS的方式,將遠程文件夾掛載到本地系統上,並且操作遠程機器的文件,就像本地文件一樣方便。

NFS 協議默認是不加密的,它不像 Samba,它不提供用戶身份鑒別。服務端通過限定客戶端的 IP 地址和端口來限制訪問。

在本文中,將介紹如何在 Ubuntu 18.04 上建立 NFSV4 服務器以及如何掛載 NFS 到本地系統中

前提條件

使用一台Ubuntu 18.04 的機器作為服務端,在該服務端,我們將安裝搭建NFS服務,另外一台linux 服務器作為 NFS 客戶端,服務端和客戶端之間能夠通過局域網互相連接。

搭建 NFS 服務器

這里說明如何安裝必要軟件包,創建並導出NFS目錄,配置防火牆

安裝NFS服務器

刷新軟件索引,並且安裝NFS服務

sudo apt update
sudo apt install nfs-kernel-server

安裝完成后,NFS 服務將會自動啟動,默認在Ubuntu 18.04上NFS2 被禁用,NFS3和NFS4可以使用。
查看NFS的版本信息 + 表示支持 - 表示不支持

sudo cat /proc/fs/nfsd/versions
-2 +3 +4 +4.1 +4.2

創建文件系統

配置NFSv4 服務器,最好使用一個全局的NFS根目錄,然后在這個根目錄下掛載實際的目錄,在這個例子中,/opt/nfsv4作為NFS 的root 根目錄。
分享兩個目錄(/var/data/opt/back),使用不同的配置,來說明如何掛載NFS,/var/data歸屬於用戶和用戶組data/opt/back歸屬於root
NFS 服務器的ip地址為192.168.174.10

  • 創建導出文件系統
sudo mkdir -p /opt/nfsv4/data
sudo mkdir -p /opt/nfsv4/back
  • 掛載實際的目錄
sudo mount --bind /var/data /opt/nfsv4/data
sudo mount --bind /opt/back /opt/nfsv4/back
  • 持久化掛載

    • 打開文件/etc/fstab
        sudo nano /etc/fstab 
      
    • 添加條目
       /var/data  /opt/nfsv4/data  none bind 0 0
       /opt/back  /opt/nfsv4/back  none bind 0 0
      
  • 導出文件系統

    • 修改配置文件
      修改/etc/exports文件,添加文件系統導出,
      這里將databack 導出,並且配置網絡訪問權限

      sudo nano /etc/exports
      

      添加如下內容

      /opt/nfsv4 192.168.174.0/24(rw,sync,no_subtree_check,crossmnt,fsid=0)
      /opt/nfsv4/back 192.168.174.0/24(ro,sync,no_subtree_check) 192.168.174.20(rw,sync,no_subtree_check)
      /opt/nfsv4/data 192.168.174.30(rw,sync,no_subtree_check)
      
    • 配置說明
      第一行包含fsid=0定義NFS根目錄/opt/nfs4,網絡192.168.174.0/24客戶端允許訪問NFS卷,crossmnt選項是必要的,用來分享被導出目錄的子目錄
      第二行表示如何針對一個文件系統,配置多個導出規則,導出目錄 /opt/nfs4/back ,允許192.168.174.0/24客戶端只讀訪問,允許192.168.174.20客戶端讀寫訪問
      第三行表示單個導出規則,導出目錄/opt/nfs4/data,允許192.168.174.30客戶端讀寫訪問

    • 導出分享

         sudo exportfs -ra
      
    • 查看當前活躍的導出和狀態

         sudo exportfs -v
      

      輸出會包含所有分享以及他們的選項,有些選項是默認的選項,如果需要修改這些,需要在配置中顯示設置這些選項

      /opt/nfsv4/back 192.168.174.20(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
      /opt/nfsv4/data 192.168.174.30(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
      /opt/nfsv4 192.168.174.0/24(rw,wdelay,crossmnt,root_squash,no_subtree_check,fsid=0,sec=sys,rw,secure,root_squash,no_all_squash)
      /opt/nfsv4/back 192.168.174.0/24(ro,wdelay,root_squash,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)
      

配置防火牆

如果網絡上有防火牆,需要在防火牆中添加一條規則,允許流量通過NFS端口
如果使用ufw管理防火牆,運行命令添加防火牆

sudo ufw allow from 192.168.174.0/24 to any port nfs

查看防火牆的狀態

sudo ufw status

輸出結果

To                         Action      From
--                         ------      ----
2049                       ALLOW       192.168.174.0/24
22/tcp                     ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)

NFS客戶端

安裝NFS客戶端

  • 在Ubuntu 上安裝NFS客戶端,客戶端的軟件名稱為 nfs-common
 sudo apt install nfs-common
  • 在Centos 上安裝NFS客戶端,客戶端的軟件名稱為nfs-utils
sudo yum install nfs-utils

掛載文件系統

客戶端ip為192.168.174.30,這台機器有對/opt/nfs4/back有只讀權限,對/opt/nfs4/data有讀寫權限
創建兩個新目錄作為掛載點

sudo mkdir -p /opt/back
sudo mkdir -p /opt/data

使用mount掛載文件系統

sudo mount -t nfs -o vers=4 192.168.174.10:/back /opt/back
sudo mount -t nfs -o vers=4 192.168.174.10:/data /opt/data

當掛載NFSV4 文件系統時,需要忽略NFS根目錄,不使用/opt/nfs4/data,而是使用/data

使用df -h 命令可以查看NFS是否掛載成功

如果想要持久化掛載,需要修改/etc/fstab文件,將掛載信息寫入到此文件中

sudo nano /etc/fstab

添加如下內容

192.168.174.10:/back /opt/back   nfs   defaults,timeo=900,retrans=5,_netdev	0 0
192.168.174.10:/data /opt/data       nfs   defaults,timeo=900,retrans=5,_netdev	0 0

測試NFS訪問

/opt/back中創建文件

sudo touch /backups/test.txt

back文件系統為只讀權限,會看到Read-only file system 的錯誤信息

以root 身份在/var/data中中創建測試文件,依然提示Permission denied

sudo touch /var/data/test.txt

原因分析:/var/data歸屬於data用戶,並且這個分享有root_squash選項,表示會將root用戶映射成nobody用戶和nogroup組,導致root用戶對遠程文件夾沒有寫入權限,假如data用戶在客戶機上存在,並且GIDUID和遠程服務器上的一致,則會有權限創建文件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM