如何在Ubuntu 20.04上安裝NFS客戶端和服務器

如何在Ubuntu 20.04上安裝NFS客戶端和服務器

網絡文件系統或簡稱NFS是一種分布式文件系統協議,允許您在服務器上安裝遠程目錄。您可以使用NFS從其他服務器或客戶端訪問文件和文件夾。您可以從網絡上的多個客戶端或遠程系統寫入該服務器。該技術提供了跨多個系統共享資源的靈活性。

在本教程中,您將學習如何設置NFS服務器以及如何使用Ubuntu 20.04在客戶端上安裝NFS共享。

前提

  • 兩個Ubuntu 20.04系統。每個服務器需要具有sudo特權和UFW防火牆的非root用戶。
  • 您可以通過專用網絡配置服務器和客戶端。在本教程中,我們將使用host_ip host_ip 地址和 client_ip 瀏覽到客戶端的IP地址。

步驟1-在服務器和客戶端上安裝NFS

主辦

必須安裝 nfs-kernel-server 使用主機上的軟件包共享目錄。

$ sudo apt update
$ sudo apt install nfs-kernel-server

客戶

客戶有 nfs-common 一個允許客戶端安裝主機目錄但不能託管目錄本身的軟件包。

$ sudo apt update
$ sudo apt install nfs-common

第2步-在主機上創建共享目錄

允許客戶端訪問主機上目錄的方法有兩種。默認情況下,NFS服務器不允許需要sudo特權的操作。這意味着客戶端超級用戶不能以root用戶身份寫入文件,重新分配所有權或執行需要提升特權的任務。

但是,客戶端可能需要在主機上執行某些需要提升權限但不需要超級用戶訪問權限的操作。

第一種方式

這是共享目錄的默認方式。這使得客戶端根用戶很難使用提升的特權與主機進行交互。

首先,創建一個共享目錄。

$ sudo mkdir /var/nfs/general -p

當我在客戶端上執行root操作時,NFS會將它們轉換為 nobody:nogroup 主機的憑據。因此,您需要賦予共享目錄適當的所有權。

$ sudo chown nobody:nogroup /var/nfs/general

第二種方式

在這裡,我們與客戶端共享主機的主目錄。這允許客戶機上的root用戶正確訪問主機。

不需要創建主目錄,因為它已經存在於主機服務器上。您甚至不需要更改權限,因為主機用戶將遇到多個問題。

步驟3-在主機上配置NFS

配置NFS並設置共享。

打開文件 /etc/exports 在主機服務器上。

$ sudo nano /etc/exports

添加以下行,每個要共享的目錄一行:

/var/nfs/general    client_ip(rw,sync,no_subtree_check)
/home               client_ip(rw,sync,no_root_squash,no_subtree_check)

讓我們看一下所有這些選項及其含義。

  • w:這使客戶端可以對主機目錄進行讀寫訪問。
  • 同步化:此選項強制在NFS響應之前寫入更改。這意味着NFS將首先完成對主機目錄的寫入,然後響應客戶端。這樣可以確保它反映了主機服務器的實際狀態,但是會減慢文件操作的速度。
  • no_subtree_check:此選項禁用子樹檢查。子樹檢查是一項操作,要求服務器檢查每個NFS請求是否存在所訪問的文件並且該文件位於導出的樹中。重命名客戶端訪問的文件時,此操作會導致問題。因此,我們建議您在大多數情況下禁用它。它具有安全性,但是更可靠。
  • no_root_squash:默認情況下,NFS會將客戶端作為根用戶執行的所有操作轉換為服務器上的非特權用戶。這樣做是為了提高安全性。此選項禁用某些共享的行為。

完成後,按關閉文件 Ctrl + X 然後輸入 ÿ 提示時。

重新啟動NFS服務器以應用更改。

$ sudo systemctl restart nfs-kernel-server

第4步-配置主機防火牆

NFS最佳實踐是為每個客戶端IP地址分別啟用它,而不是使其從任何位置均可訪問。

NFS使用端口2049。使用以下命令啟用對NFS的訪問:

$ sudo ufw allow from client_ip to any port nfs

檢查並確認狀態。

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                 
2049                       ALLOW       167.100.34.78        
OpenSSH (v6)               ALLOW       Anywhere (v6)

步驟5-在客戶端上創建安裝點

現在已經配置了主機,設置客戶端。

在客戶端上為掛載創建兩個目錄。

$ sudo mkdir -p /nfs/general
$ sudo mkdir -p /nfs/home

現在我們已在主機邊緣配置了所有內容,我們可以使用主機的IP地址掛載共享。

$ sudo mount host_ip:/var/nfs/general /nfs/general
$ sudo mount host_ip:/home /nfs/home

您可以使用以下命令檢查它們是否成功安裝:

$ df -h
Filesystem                      Size  Used Avail Use% Mounted on
udev                            448M     0  448M   0% /dev
tmpfs                            99M  664K   98M   1% /run
/dev/vda1                        25G  3.2G   21G  14% /
tmpfs                           491M     0  491M   0% /dev/shm
tmpfs                           5.0M     0  5.0M   0% /run/lock
tmpfs                           491M     0  491M   0% /sys/fs/cgroup
tmpfs                            99M     0   99M   0% /run/user/1000
123.175.112.87:/var/nfs/general  25G   18G  6.3G  74% /nfs/general
123.175.112.87:/home             25G   18G  6.3G  74% /nfs/home

兩個已安裝的共享都顯示在列表的底部。兩者都是從同一文件系統掛載的,因此會顯示總磁盤使用情況,而不是掛載目錄的實際使用情況。

要查看每個安裝上使用的實際空間,請使用以下命令:

$ du -sh /nfs/general
36K     /nfs/general

步驟6-測試NFS共享

測試文件 /var/nfs/general 分享。

$ sudo touch /nfs/general/general.test

檢查所有權。

$ ls -l /nfs/general/general.test
-rw-r--r-- 1 nobody nogroup 0 Aug  1 13:31 /nfs/general/general.test

這是使用默認的NFS選項掛載的,我使用客戶端計算機上的root用戶創建了文件,因此主機的所有權為 nobody:nogroup..在這裡,客戶端用戶無法在主機上運行管理作業。

在/ nfs / home共享上創建一個測試文件。

$ sudo touch /nfs/home/home.test

檢查所有權。

$ ls -l /nfs/home/home.test
-rw-r--r-- 1 root root 0 Aug  1 13:32 /nfs/home/home.test

在這裡,我使用客戶端計算機上的root用戶創建了測試文件,因此所有權保留在主機上。這是, no_root_squash 一個標誌,它允許客戶機上的root用戶也成為主機上的root用戶。

步驟7-在引導過程中掛載NFS共享

引導客戶端計算機時,不會保留這些安裝。為了使它們永久化, /etc/fstab 文件。

/etc/fstab 用於編輯的文件。

$ sudo nano /etc/fstab

將以下行粘貼到文件的底部。每行對應於引導時安裝的每個目錄。

. . .
host_ip:/var/nfs/general    /nfs/general   nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
host_ip:/home               /nfs/home      nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

有關這些選項的更多信息,請檢查以下手冊頁: nfs..

$ man nfs

按保存文件 Ctrl + X 然後輸入 ÿ 提示時。

重新啟動服務器並檢查安裝。

$ sudo reboot

登錄到客戶端/服務器,並確保安裝存在。

$ df -h
Filesystem                      Size  Used Avail Use% Mounted on
udev                            448M     0  448M   0% /dev
tmpfs                            99M  664K   98M   1% /run
/dev/vda1                        25G  3.2G   21G  14% /
tmpfs                           491M     0  491M   0% /dev/shm
tmpfs                           5.0M     0  5.0M   0% /run/lock
tmpfs                           491M     0  491M   0% /sys/fs/cgroup
tmpfs                            99M     0   99M   0% /run/user/1000
123.175.112.87:/var/nfs/general  25G   18G  6.3G  74% /nfs/general
123.175.112.87:/home             25G   18G  6.3G  74% /nfs/home

步驟8:卸載NFS共享

當不再需要NFS掛載時,可以使用以下命令將其卸載:

$ sudo umount /nfs/home
$ sudo umount /nfs/general

一個常見的錯誤是 unmount 代替 umount 這是實際的命令。

確保正確卸載。

$ df -h
Filesystem                      Size  Used Avail Use% Mounted on
udev                            448M     0  448M   0% /dev
tmpfs                            99M  664K   98M   1% /run
/dev/vda1                        25G  3.2G   21G  14% /
tmpfs                           491M     0  491M   0% /dev/shm
tmpfs                           5.0M     0  5.0M   0% /run/lock
tmpfs                           491M     0  491M   0% /sys/fs/cgroup
tmpfs                            99M     0   99M   0% /run/user/1000

您還需要從 /etc/fstab 防止在引導時重新安裝文件。還有 # 如果需要重新使用安裝,則使用前一個字符。

結論

本教程到此結束,它教您如何在主機上創建NFS掛載以及如何從各種客戶端計算機訪問它們。如有任何疑問,請在下面的評論中提出。

Source

Sidebar