💾 NFS 網路檔案系統

Linux 原生高效能網路檔案共享

NFS(Network File System)是 Unix/Linux 系統間的標準網路檔案系統,適合在 Linux 伺服器叢集間掛載共享儲存,效能高且整合 Linux 權限系統。

NFS 伺服器設定

$ # 安裝 NFS 伺服器
sudo apt update && sudo apt install -y nfs-kernel-server
sudo systemctl enable --now nfs-server
$ # 建立共享目錄
sudo mkdir -p /srv/nfs/shared
sudo chown nobody:nogroup /srv/nfs/shared
sudo chmod 777 /srv/nfs/shared
$ sudo vim /etc/exports
# 格式:/共享路徑  允許的客戶端(選項)
# 允許特定子網掛載(推薦)
/srv/nfs/shared  192.168.1.0/24(rw,sync,no_subtree_check)

# 只讀共享
/srv/data        192.168.1.0/24(ro,sync,no_subtree_check)

# 允許單一 IP(最嚴格)
/srv/private     192.168.1.10(rw,sync,no_subtree_check,no_root_squash)

# 允許所有人(不推薦,測試用)
# /srv/public   *(ro,sync)
$ # 套用 exports 設定
sudo exportfs -ra

# 查看目前的 export 清單
sudo exportfs -v

# 開放防火牆
sudo ufw allow from 192.168.1.0/24 to any port nfs

NFS 客戶端掛載

$ # 安裝 NFS 客戶端工具
sudo apt install -y nfs-common

# 查看伺服器的 export 清單
showmount -e 192.168.1.100

# 建立掛載點
sudo mkdir -p /mnt/nfs/shared

# 手動掛載
sudo mount -t nfs 192.168.1.100:/srv/nfs/shared /mnt/nfs/shared

# 確認掛載成功
df -h /mnt/nfs/shared

設定開機自動掛載(/etc/fstab)

# 格式:伺服器:路徑  本機掛載點  nfs  選項  0  0
192.168.1.100:/srv/nfs/shared  /mnt/nfs/shared  nfs  rw,sync,hard,intr  0  0
$ # 測試 fstab 設定(不需重啟)
sudo mount -a
# 確認掛載
mount | grep nfs

常用掛載選項說明

選項說明
rw / ro可讀寫 / 唯讀
sync同步寫入(資料更安全,但效能較低)
async非同步寫入(效能較高,有風險)
no_subtree_check停用子樹檢查,提升效能(推薦)
no_root_squash允許客戶端 root 保留 root 權限(謹慎使用)
root_squash將客戶端 root 映射為 nobody(預設行為)
hard伺服器失連時持續重試(推薦)
intr允許在等待時用 Ctrl+C 中斷

常用操作

操作指令
套用 exports 設定sudo exportfs -ra
查看已 export 的目錄sudo exportfs -v
查看伺服器 export 清單showmount -e 伺服器IP
卸載 NFS 共享sudo umount /mnt/nfs/shared
強制卸載(連線斷開時)sudo umount -f -l /mnt/nfs/shared
查看 NFS 統計nfsstat