NFS 概述 NFS(Network File System)是一種能使伺服器上的信息被其他電腦掛載而達到資源共用的網路文件系統。一個客戶機可以把遠程文件系統掛載到本地文件系統的某個目錄下,作為本地系統的一部分來使用。NFS 有屬於自己的協議和埠號,但在傳送資料或其他相關信息時,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