自學 Linux 21—Linux 應用層網絡服務程序簡介—NFS 協議和服務

NFS 協議和服務

  NFS 協議是一種用於文件共享的協議,它可以使得主機之間進行文件的共享。客戶端可以像在本機上的文件一樣操作遠程主機的文件。NFS 協議最初僅支持 UDP 協議,目前最新版本的 NFS 可以支持 UDP 或者 TCP 協議,不過 UDP 協議的速度會更快。

1. 安裝 NFS 服務器和客戶端

  NFS 協議是一個十分簡單的協議,它本身沒有提供信息傳輸的協議和功能。之所以 NFS 能夠讓主機之間通過網絡進行資料共享,這是因爲 NFS 使用了一些其他傳輸的協議,主要用到了 RPC(Remote Procedure Call) 功能。所以在啓動 NFS 服務器的時候需要啓動 RPC 服務。

  在 Ubuntu 下進行 NFS 服務器的安裝有兩個版本可供選擇,nfs-kemel-servernfe-user-server。兩者之間的差別在於前者是在內核層實現的,速度更加快,後者的速度相對慢一些。小夥伴可以根據自己的需要進行選擇安裝。

  安裝 NFS 服務還需要安裝 nfs-common,當然,Ubuntu 會自動提示軟件之間的依賴關係進行安裝。

2. 服務器端的設定

  要使安裝的服務器程序能夠正常工作,主要的工作是對服務器的配置文件進行編輯。這個配置文件是 /etc/exports,這個文件中的格式如下:

共享的目錄 主機名稱 1 或者 IP1 (參數 1,參數 2)  主機名稱 2 或者 IP2 (參數 3,參數 4)

  上面這個格式表示,將同一個目錄共享給兩個不同的主機,但這兩臺主機的訪問權限和參數是不同的,所以需設置兩個主機對應的權限。可以設定的參數如下表(NFS 的服務器配置參數說明)所示。

參數 含義
rw 可讀寫的權限
ro 只讀的權限
no_root_squash 登錄到 NFS 主機的用戶如果是 root 用戶,擁有 root 的權限,此參數很不安全,建議不要使用
root_squash 不能使用 root 權限
allsquash 不管登錄 NFS 主機的用戶是什麼都會被重新設定爲 nobody
anonuid 將登錄 NFS 主機的用戶都設定成指定的 user id,此 ID 必須存在於 /etc/passwd
anongid anonuid,但是換成了組 ID
sync 資料同步寫入存儲器中
async 資料會先暫時存放在內存中,不會直接寫入硬盤
insecure 允許從這臺機器過來的非授權訪問

  編輯 /etc/exports 爲如下的內容。將 /tmp 目錄共享爲任何人可以共享並可以進行讀寫操作:/home/test 目錄 192.168.1 子網下的主機可以進行讀寫,其他主機只讀。

/tmp		*(rw,no_root_squash)
/home/test 	192.168.1.*(rw) 	*(ro)

  配置好後可以使用以下命令啓動 NFS

/etc/init.d/nfs-kernel-server start

3. 客戶端的操作

  要在客戶端掛載服務器上共享的 NFS 目錄,使用通用的 mount 命令進行,其命令格式爲:

mount -t nfs 主機名或者主機 IP 地址:/共享目錄名 掛載的本機目錄

  例如對於上述服務器的設置,使用如下命令將 /home/test 目錄掛載到本機的 /mnt/nfs 目錄下。

mount -t nfs 192.168.1.153:/home/test /mnt/nfs

  掛載到本機目錄後,由於本機和服務器在同一個網段上,可以像操作本機目錄中的文件一樣進行操作。

  ㊨ 注意:在服務器正常開啓之後,可能客戶端不能正常掛載服務器已經共享出來的目錄。一般是由於 Linux 防火牆開啓,可以將防火牆清空或者關閉,清空的命令爲:

iptables -F

4. showmount 命令

  在 NFS 相關的命令中 showmount 命令是經常使用的命令。它主要有兩個命令選項,含義如下所述。

  █ -a:這個參數是一般在 NFS SERVER 上使用,是用來顯示已經掛載上本機 nfs 目錄的客戶端機器列表。
  █ -e:顯示指定的 NFS SERVERexport 出來的目錄。

  例如,下面的命令列出當前系統中的 NFS 服務中的目錄共享設置情況:

$ showmount -e 192.168.1.151
Export list for localhost:
/tmp *
/home/test 192.168.1.*
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章