Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux NFS 基礎知識全攻略:原理、RPC 協議、服務端與客戶端配置

編輯:Linux 教學

NFS (Network File System) 由 Sun 公司開發,是 UNIX/Linux 系統間共享文件的標準協議。它允許客戶端將遠程服務器的目錄掛載到本地文件系統树中,操作體驗與本地磁盤分區無異。本文系統講解 NFS 協議版本、RPC 依賴、服務端守護進程、掛載參數及安全最佳實踐。

一、 NFS 協議版本演進

版本RFC關鍵特性
NFSv2RFC 1094基礎功能,同步寫入,32位文件偏移,無鎖機制
NFSv3RFC 1813異步寫入、64位偏移、讀取目錄優化、ACL 支持
NFSv4RFC 3010/7530有狀態協議、複合操作、強制強一致性、集成鎖/委派、Kerberos 認證、防火牆友好(單端口 2049)

異步寫入優勢

NFSv3 客戶端發送 WRITE 請求時可指定 UNSTABLE 模式,服務器將數據寫入內存緩存即應答,後台批量刷盤。客戶端保留數據副本,直到收到 COMMIT 確認。相比 NFSv2 必須同步寫入穩定存儲,顯著提升吞吐量並減少延遲抖動。

二、 RPC 核心角色

NFS 本身不處理網絡傳輸,完全依賴 RPC (Remote Procedure Call) 實現進程間通信:

  • Portmapper (rpcbind):監聽端口 111,維護「程序號 ↔ 端口」映射表。客戶端首次連接先查詢 portmapper 獲取 NFS 服務端口(默認 2049)。
  • NFS Server 守護進程:
    • rpc.nfsd:核心文件服務進程,處理客戶端 READ/WRITE/LOOKUP 等 VFS 請求。
    • rpc.mountd:掛載服務,驗證客戶端權限(讀取 /etc/exports),返回文件句柄。
  • 客戶端也需運行 rpcbind:以便服務器回調(NFSv4 回調、NFSv3 鎖管理器)。

三、 服務端部署步驟

1. 安裝軟件包

# Debian/Ubuntu
apt-get install nfs-kernel-server

# RHEL/CentOS
yum install nfs-utils rpcbind

2. 配置導出表 /etc/exports

# 格式:導出目錄  客戶端(選項列表)
/data/nfs  192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash)
/home      *(ro,async,root_squash)

關鍵選項解析

選項含義
rw / ro讀寫 / 唯讀
sync / async同步寫入磁盤 / 異步(高性能但風險)
root_squash / no_root_squash將 root 映射為匿名用戶 / 保留 root 權限(危險)
all_squash所有用戶映射為匿名
no_subtree_check禁用子樹校驗(提升性能,適用整盤導出)
insecure允許非保留端口(>1024)客戶端連接

3. 啟動服務

systemctl enable --now rpcbind nfs-server
# 或傳統
service rpcbind start
service nfs start

# 重新導出
exportfs -rv

四、 客戶端掛載

1. 手動掛載

# 基礎掛載
mount -t nfs 192.168.1.100:/data/nfs /mnt/nfs

# 生產推薦參數
mount -t nfs -o rw,hard,intr,rsize=32768,wsize=32768,timeo=600,retrans=2,nfsvers=3 192.168.1.100:/data/nfs /mnt/nfs

2. 自動掛載 /etc/fstab

192.168.1.100:/data/nfs  /mnt/nfs  nfs  rw,hard,intr,rsize=32768,wsize=32768,_netdev  0  0

3. 掛載參數深度解析

參數推薦值說明
hard / softhardhard:無限重試(關鍵業務);soft:超時返回錯誤(非關鍵)
intr必加允許信號中斷掛起的 hard 掛載
rsize / wsize32768 (32K)讀/寫最大塊大小,匹配服務器 max_block_size
timeo600 (60秒)重試超時(十分之一秒單位),網絡不穩可調大
retrans2-3重試次數,超過則報錯(soft)或繼續(hard)
nfsvers3 或 4指定協議版本,避免協商失敗
_netdevfstab 必加標記網絡設備,啟動時等待網絡就緒

五、 安全加固建議

  1. 網絡隔離:防火牆僅開放 111 (rpcbind)、2049 (nfs)、mountd 端口(可通過 mountd=port 固定)。
  2. Kerberos 認證:NFSv4 強制支持 sec=krb5/krb5i/krb5p,防止數據竄改與重放。
  3. 最小權限導出:避免 no_root_squash、insecure,嚴格限制客戶端 IP 段。
  4. 監控指標:nfsstat -s (服務端)、nfsstat -c (客戶端) 觀察 RPC 調用延遲、重傳率、錯誤碼。

六、 故障排查速查

  • showmount -e server_ip:查看服務端導出列表。
  • rpcinfo -p server_ip:驗證 RPC 服務註冊。
  • tcpdump -i eth0 port 2049:抓包分析 NFS 交互。
  • 掛載卡住:檢查 hard 選項、防火牆、服務端 rpc.mountd 是否運行。
  • 權限拒絤:核對 /etc/exports 客戶端匹配、root_squash、文件系統 ACL。
Copyright © Windows教程網 All Rights Reserved