Ubuntu18.04.4 配置 NFS 服務器


NFS 概述

NFS(Network File System)是一種能使服務器上的信息被其他計算機掛載而達到資源共享的網絡文件系統。一個客戶機可以把遠程文件系統掛載到本地文件系統的某個目錄下,作爲本地系統的一部分來使用。NFS 有屬於自己的協議和端口號,但在傳送資料或其他相關信息時,NFS 服務器需要使用 RPC 協議來協助運行。


RPC

因爲 NFS 支持的功能很多,每當啓動一個功能就要啓用一些端口來傳輸數據,因此 NFS 的功能所對應的端口是不固定的,通常是隨機取用一些未被使用的小於 1024 的端口作爲傳輸之用,而客戶端必須知道服務器相關端口才能連接,此時需要 RPC 服務。

RPC(遠程過程調用協議)的功能是制定每個 NFS 功能對應的端口號,並且回送給客戶端,讓客戶端連接到正確的端口上。NFS 服務器啓動時會隨機啓用數個端口號,並主動向 RPC 註冊,RPC 固定使用 111 號端口監聽客戶機的請求並回應正確的端口號。因此,啓動 NFS 之前,要先啓動 RPC。


NFS 文件系統配置

Ubuntu 系統所使用的軟件包爲 nfs-kernel-server,當然還需要其他包支持,比如 rpcbind 作端口映射工作,這些支持包在安裝 NFS 時會自動安裝。

sudo apt install nfs-kernel-server

NFS 的服務是 nfs-server.service,可以使用服務管理的辦法進行管理

sudo systemctl enable/disable nfs-server.service	# 啓用/禁用
systemctl status nfs-server.service	# 檢查狀態
systemctl start/stop/restart/reload nfs-server.service	# 啓動/停止/重啓/重載

NFS 配置文件爲 /etc/exports,每一行描述一個共享目錄,並且說明該目錄如何被共享,每一有效行的格式爲:共享目錄 訪問者(選項) 訪問者(選項)

訪問者爲主機或 IP 地址,括號內的選項只對括號前的訪問者有效,訪問者格式可以爲:

  • 指定 IP 地址
  • 指定網段中所有主機,如 192.168.137.0/24
  • 單臺主機名,如 pc001
  • 含有通配符的主機名,如 proj*.local.domain,表示 local.domain 域的所有以 proj 開業的主機

常用選項及說明如表所示

選項 說明
ro/rw 只讀/讀寫
sync/async 同步/異步寫入
secure 只允許 NFS 通過 1024 以前端口連接(默認)
insecure 允許 NFS 通過 1024 及以上的端口連接,此選項關閉 secure
secure_locks 使用安全的文件鎖
insecure_looks/no_auth_nlm 允許使用不安全的文件鎖,此選項關閉 secure_locks
wdelay 延遲寫,如果多個用戶要寫入 NFS 目錄,則歸組寫入(默認)
no_wdelay 同步寫入。當使用 async 時,無須此設置
hide 不共享子目錄或隱藏子目錄
no_hide 共享 NFS 目錄的子目錄
subtree_check 共享目錄樹,如果共享目錄是一個子目錄,將強制檢查父目錄權限(默認)
no_subtree_check 與 subtree_check 相對應,不檢查父目錄權限
root_squash 客戶機用 root 用戶訪問共享文件夾時,將 root 映射爲匿名用戶
no_root_squash 客戶機用 root 用戶訪問共享文件夾時,不做映射
all_squash 客戶機所有用戶映射爲匿名用戶
anonuid=xxx,anongid=xxx 使用 all_squash 選項時,指定 NFS 服務器 /etc/passwd 文件中用戶的 UID 和 GID
no_all_squash 保留共享文件的 UID 和 GID(默認)

在客戶端使用 NFS,需要安裝支持包

sudo apt-get install nfs-common

使用 mount 命令來將服務器上的共享目錄安裝到本地

mount -t nfs [options] server:dir mount_point

其意義是將 server 服務器上的 dir 目錄安裝在本地的 mount_point 安裝點上,文件系統類型爲 nfs


NFS 系統的使用

首先建立一個共享目錄,然後向其中添加一些用於共享的文件

sudo mkdir -p /var/nfs_share
sudo /etc/init.d /var/nfs_share

編輯 /etc/exports 文件,加入如下行

/var/nfs_share *(rw,no_root_squash,insecure)

重載 NFS 服務

sudo systemctl reload nfs-server.service

在任意一臺可以 ping 通服務器的主機上安裝共享目錄,這裏以 Ubuntu 客戶端爲例

sudo mkdir -p /mnt/nfs
sudo mount -t nfs 192.168.1.105:/var/nfs_share /mnt/nfs

將 192.168.1.105 上的 /var/nfs_share 目錄掛載到本機的 /mnt/nfs 目錄下。到此,在客戶端可以通過命令查看其中內容了

ls -l /mnt/nfs

NFS 文件系統的拆卸與普通文件的拆卸方法相同

sudo umount /mnt/nfs

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章