🐧 Linux:完整 NFS Server 與 Client 掛載指南(含 systemd 自動掛載)
本篇將帶你從零架設 NFS Server、設定 exports 權限、Client 掛載到 systemd 自動掛載完整流程,適用於家庭實驗室、Proxmox、Kubernetes、NAS 整合等情境。
📌 一、什麼是 NFS?適用情境與架構說明
NFS(Network File System)是一種透過網路共享檔案系統的協定,常用於伺服器之間共享資料。它的速度快、延遲低,非常適合:
- Proxmox / KVM 環境放置 ISO、Backup
- 多台 Linux 主機共享設定或資料目錄
- Kubernetes / Docker 節點共享儲存
- 企業內 IT 系統的共用檔案中心
# 常見 NFS 架構
[Client A] --\
[Client B] ----> [NFS Server] ----> Storage
[Client C] --/
---
📌 二、NFS Server 安裝與設定
1️⃣ 安裝 NFS 伺服器套件
# CentOS / RHEL / Rocky / AlmaLinux
sudo yum install -y nfs-utils
# Ubuntu / Debian
sudo apt install -y nfs-kernel-server
2️⃣ 建立共享資料夾
sudo mkdir -p /srv/nfs/data
sudo chown -R nobody:nogroup /srv/nfs/data # Debian/Ubuntu
# CentOS 可用 nfsnobody
3️⃣ 設定 /etc/exports
sudo nano /etc/exports
範例設定(允許 10.0.0.0/24 子網):
/srv/nfs/data 10.0.0.0/24(rw,sync,no_root_squash,no_subtree_check)
常用參數說明:
| 參數 | 說明 |
|---|---|
| rw | 允許讀寫 |
| sync | 同步寫入,較安全但稍慢 |
| no_root_squash | 保留 root 身份(內網環境常用) |
| no_subtree_check | 提升效能,常見最佳化 |
4️⃣ 套用設定並啟動服務
sudo exportfs -ra
sudo systemctl enable --now nfs-server
sudo systemctl status nfs-server
---
📌 三、Client 側掛載 NFS
1️⃣ 安裝必要工具
# CentOS / RHEL
sudo yum install -y nfs-utils
# Ubuntu / Debian
sudo apt install -y nfs-common
2️⃣ 手動掛載(測試用)
sudo mkdir -p /mnt/nfs
sudo mount -t nfs 10.0.0.10:/srv/nfs/data /mnt/nfs
確認掛載成功:
df -h | grep nfs
---
📌 四、設定 fstab 開機自動掛載
1️⃣ 編輯 fstab
sudo nano /etc/fstab
加入:
10.0.0.10:/srv/nfs/data /mnt/nfs nfs defaults,_netdev 0 0
2️⃣ 套用設定
sudo mount -a
---
📌 五、使用 systemd 自動掛載(比 fstab 更可靠)
在多節點部署(如 Proxmox / Kubernetes)中,systemd automount 能避免開機順序造成的掛載失敗。
1️⃣ 建立掛載目錄
sudo mkdir -p /mnt/nfs
2️⃣ 建立 systemd 單位檔
sudo nano /etc/systemd/system/mnt-nfs.mount
內容:
[Unit]
Description=NFS Share Mount
[Mount]
What=10.0.0.10:/srv/nfs/data
Where=/mnt/nfs
Type=nfs
Options=_netdev
[Install]
WantedBy=multi-user.target
3️⃣ 建立 automount(啟動後自動在存取時掛載)
sudo nano /etc/systemd/system/mnt-nfs.automount
內容:
[Unit]
Description=NFS Automount
[Automount]
Where=/mnt/nfs
[Install]
WantedBy=multi-user.target
4️⃣ 啟用
sudo systemctl daemon-reload
sudo systemctl enable --now mnt-nfs.automount
成功後:
cd /mnt/nfs # ← 這一刻 systemd 會自動掛載
---
📌 六、NFS 效能最佳化(可選)
| 最佳化項目 | 建議 |
|---|---|
| async | 提升速度(非極度重視資料一致性時) |
| rsize / wsize | 常用 131072 以提高 throughput |
| noatime | 降低 metadata 負擔 |
| 使用 SSD | 大幅提升 NFS IOPS 能力 |
10.0.0.10:/srv/nfs/data /mnt/nfs nfs defaults,noatime,rsize=131072,wsize=131072 0 0
---
🔗 延伸閱讀
- 🐧 Linux OpenVPN Server 架設完整指南
- 🛡 Linux 防火牆:iptables / nftables / firewalld 全解析
- 🔐 Linux 使用者與 ACL 高階權限管理
- 🧩 Proxmox 虛擬網路:Linux Bridge / OVS / VXLAN 完整解析
— WWFandy・Linux 技術筆記
沒有留言: