一.NFS服務器介紹
NFS服務器(Network File System)是一種基于網絡的分布式文件系統協議,允許不同操作系統的主機通過網絡共享文件和目錄3。其核心作用在于實現跨平臺的資源透明訪問,例如在Linux和Unix系統之間共享靜態數據(如視頻、圖片等
核心作用
- 跨平臺文件共享:使不同操作系統的客戶端能像訪問本地磁盤一樣操作遠程文件。
- 簡化存儲管理:集中存儲數據,客戶端通過掛載點訪問,降低多節點數據冗余2。
- 權限控制:通過RPC注冊的守護進程(daemons)管理客戶端登錄和操作權限1。
- 擴展性支持:可結合quota等機制實現磁盤配額管理
工作原理
-
C/S架構
NFS采用客戶端-服務器模型,服務端配置共享目錄(如/home/public
),客戶端通過掛載命令將其映射到本地文件系統(如/mnt/nfs
。 -
RPC依賴
- NFS啟動時需向RPC(Remote Procedure Call)注冊服務信息,包括端口號和功能。
- 客戶端通過RPC查詢可用服務,再與NFS服務端建立通信5。
-
工作流程
客戶端請求 → RPC查詢NFS服務 → 獲取端口信息 → 建立NFS連接 → 讀寫遠程文件
-
權限與虛擬文件系統
- 服務端通過
/etc/exports
定義共享規則(如?192.168.88.0/24(rw,sync)
)5。 - 客戶端掛載后,通過VFS(虛擬文件系統)層將遠程操作轉換為網絡請求3。
- 服務端通過
技術特點
特性 | 說明 |
---|---|
RPC依賴 | 必須運行rpcbind 服務實現動態端口分配15 |
權限控制 | 通過nfsd 和mountd 守護進程分別管理訪問權限和文件操作1 |
配置靈活性 | 支持IP白名單、讀寫模式(ro/rw)、數據同步策略(sync/async)5 |
版本兼容性 | 主流版本包括NFSv3(廣泛兼容)和NFSv4(增強安全性)4 |
二.NFS服務器搭建
1.安裝NFS服務器軟件
在Ubuntu上安裝NFS服務器軟件,可以通過以下命令完成
sudo apt update
sudo apt install nfs-kernel-server //這條命令會安裝NFS服務器的核心組件。
2. 創建共享目錄
選擇一個目錄作為共享目錄,或者創建一個新的目錄。例如,創建一個名為sudo mkdir -p /home/www/nfs/shared的目錄:
sudo mkdir -p /home/www/nfs/shared
然后,設置該目錄的權限。根據實際需求,可以將該目錄的所有者設置為nobody
用戶組,并設置適當的讀寫權限:
sudo chown nobody:nogroup /home/www/nfs/shared
sudo chmod 777 /home/www/nfs/shared
3.配置NFS共享
編輯NFS配置文件/etc/exports,以定義哪些目錄需要共享以及哪些主機能夠訪問這些目錄。使用以下命令打開/etc/exports文件:
sudo vim /etc/exports
在文件末尾添加如下行,表示將/home/www/nfs/shared目錄共享給網絡中的任何主機(假設你的NFS客戶端IP范圍是192.168.168.128/24,你可以根據需要調整,我這里直接用主機的):
/home/www/nfs/shared 192.168.168.128/24(rw,sync,no_subtree_check)
- /home/www/nfs/shared:NFS共享的目錄。
192.168.168.128/24
:允許訪問的客戶端IP地址范圍,也可以使用具體的IP地址或域名。rw
:讀寫權限。sync
:同步寫入數據,保證數據的安全性。確保所有寫入操作在返回前完成no_subtree_check
:不檢查父目錄的權限,提高效率。?
4.導出NFS共享
使配置生效,運行以下命令:
sudo exportfs -a
5.啟動NFS服務
啟動并啟用NFS服務,使其在啟動時自動運行:
sudo systemctl start nfs-kernel-server
sudo systemctl enable nfs-kernel-server
6.配置防火墻(可選)
如果系統使用了防火墻,需要確保允許NFS服務的相關端口。例如,可以使用ufw
命令來允許特定IP地址范圍的訪問:
sudo ufw allow from 192.168.168.128/24 to any port nfs
或者,如果希望允許所有網絡上的主機訪問NFS服務:
sudo ufw allow from any to any port nfs
7. 檢查NFS共享狀態
確認NFS服務器正在運行,并檢查共享目錄:
sudo exportfs -v
(未完待續)