💾 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 nfsNFS 客戶端掛載
$ # 安裝 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 |