NFS — Network File System

NFS(Network File System,网络文件系统)是一种分布式文件系统协议,让客户端通过网络像访问本地文件一样读写远程服务器上的文件。它是 Linux 集群架构中文件服务器层的基础方案,核心用途是实现跨服务器的文件共享。

原理与架构

NFS 基于 RPC(Remote Procedure Call) 机制工作:

客户端请求 → RPC(portmap/rpcbind)→ NFS 服务端 → 本地文件系统

关键进程

进程功能
rpc.statd网络状态监控,配合锁定
rpc.mountd挂载认证,校验客户端权限
rpc.nfsdNFS 服务本身
rpcbind端口映射器(客户端先查端口再连接)

通信流程

  1. 客户端向服务端 rpcbind 查询 NFS 端口
  2. rpcbind 返回 rpc.nfsd 的端口号
  3. 客户端直接连接 NFS 服务端口
  4. 服务端读取本地文件系统返回数据

配置详解

服务端 /etc/exports

/share 192.168.71.0/24(rw,sync,no_root_squash)

export 核心选项

选项说明推荐场景
rw / ro读写 / 只读共享上传目录用 rw
sync / async同步写入 vs 异步生产用 sync(安全)
wdelay / no_wdelay合并写入 vs 立即写入小文件用 no_wdelay
root_squash / no_root_squashroot 降级 vs 保留权限默认 root_squash
all_squash所有用户降级匿名共享
subtree_check跨子目录导出检查大目录关掉提升性能

客户端挂载

mount -t nfs server:/share /local/mount

配置 /etc/fstab 自动挂载,用 netstat -r 查看 NFS 连接状态。

高可用方案

NFS 单点故障解决方案:Keepalived + Rsync

主 NFS  ←→ Rsync 同步 → 备 NFS
    ↑                      ↑
    └─── Keepalived VIP ───┘
  • Keepalived:虚拟 IP(VIP)漂移,故障自动切换
  • Rsync:主备数据同步(rsync -avz
  • ⚠️ 脑裂风险:需第三方仲裁

存储架构对比

类型协议共享性能场景
DASSATA/SAS⭐⭐⭐本地盘
NAS(NFS/SMB)TCP/IP⭐⭐文件共享
SAN(FC/iSCSI)FC/网络⭐⭐⭐数据库块存储

NFS vs 分布式文件系统

方案特点适合场景
NFS简单成熟,单点中小规模文件共享
Ceph统一存储(对象/块/文件)大规模生产首选
FastDFSTracker+Storage 架构中小规模图片/文件
GlusterFS无中心节点,POSIX中大规模文件
HDFSHadoop 生态,大文件追加大数据分析

相关页面