如何在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用戶身份寫入文件,重新分配所有權或執行任何需要提升特權的任務。
但是有時,客戶端需要在主機上執行某些操作,這些操作需要提升的特權,但不需要超級用戶訪問許可權。
第一種方法
這是共享目錄的默認方式。這使得客戶端上的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)
讓我們研究所有這些選項及其含義。
- rw:這使客戶端可以在主機目錄上進行讀寫訪問。
- sync:此選項強制NFS在回復之前寫入更改。這意味著NFS將首先完成寫入主機目錄,然後響應客戶端。這樣可以確保反映主機伺服器的實際狀態,但會減慢文件操作的速度。
- no_subtree_check:此選項禁用子樹檢查。子樹檢查是一項操作,其中對於每個NFS請求,伺服器必須檢查所訪問的文件是否存在以及該文件是否在導出的樹中。當客戶端訪問的文件被重命名時,此操作會導致問題。因此,在大多數情況下,最好將其禁用。它對安全性有一些輕微影響,但可以提高可靠性。
- no_root_squash:默認情況下,NFS會將客戶端以root用戶身份執行的所有操作轉換為伺服器上的非特權用戶。這樣做是為了提高安全性。此選項禁用某些共享的行為。
完成後,通過按Ctrl + X並在出現提示時輸入Y來關閉文件。
重新啟動NFS伺服器以應用更改。
$sudo systemctl restart nfs-kernel-server
步驟4-配置主機防火牆
NFS的最佳實踐是分別為每個客戶端的IP地址啟用它,而不是允許從任何地方訪問它。
NFS使用埠2049。通過以下命令啟用對NFS的訪問。
$sudo ufw allow from client_ip to any port nfs
檢查狀態以進行驗證。Advertisements.banner-1{text-align:center; padding-top:10pximportant; padding-bottom:10pximportant; padding-left:0pximportant; padding-right:0pximportant; width:100%important; box-sizing:border-boximportant; background -color:#eeeeeeimportant; border:1px實心#dfdfdf}
$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
您可以在列表底部看到兩個已安裝的共享。由於這兩個文件都是從同一文件系統掛載的,因此它們顯示的是完整磁碟使用情況,而不是掛載目錄的實際使用情況。Advertisements.large-leaderboard-2{text-align:center; padding-top:10pximportant; padding-bottom:10pximportant; padding-left:0pximportant; padding-right:0pximportant; width:100%important; box-sizing:border-boximportant; background -color:#eeeeeeimportant; border:1px實心#dfdfdf}
要查看每個安裝下佔用了多少實際空間,請使用以下命令。
$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
將以下行粘貼到文件的底部。每行對應於我們要在引導時掛載的每個目錄。Advertisements.leader-1{text-align:center; padding-top:10pximportant; padding-bottom:10pximportant; padding-left:0pximportant; padding-right:0pximportant; width:100%important; box-sizing:border-boximportant; background -color:#eeeeeeimportant; border:1px實心#dfdfdf}
. . .
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並在出現提示時輸入Y來保存文件。
重新引導伺服器以檢查安裝。
$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掛載以及如何從不同的客戶端計算機訪問它們。如果您有任何疑問,請在下面的評測中提出。