(网络文件系统)N
NFS(Network File System,网络文件系统) 是一种由 Sun 公司开发的分布式文件系统协议,允许网络中的计算机通过 TCP/IP 网络共享文件和目录,使不同主机之间能像访问本地文件一样访问远程资源。以下是关于 NFS 的详细介绍:
一、核心功能与特点
跨平台共享
- 支持 Unix、Linux、Windows 等多系统间的文件共享(需安装相应客户端)。
- 通过网络挂载远程目录到本地文件系统,操作透明(用户无需感知文件实际存储位置)。
简单高效
- 基于 RPC(远程过程调用)机制,协议设计轻量,适合局域网内高吞吐量场景。
- 支持文件锁定(避免多客户端同时修改文件导致冲突)。
权限管理
- 通过 **UID/GID(用户 / 组 ID)** 校验访问权限,需确保客户端与服务器的用户 ID 一致,否则可能导致权限混乱(如文件显示为 “nobody” 所有)。
二、工作原理
组件架构
- NFS 服务器:存储共享文件,配置共享目录(如
/etc/exports
文件)并启动服务。- NFS 客户端:通过
mount
命令挂载远程目录到本地挂载点(如/mnt/nfs
)。- RPC 服务:NFS 依赖
rpcbind
(旧称 portmap)实现端口映射,确保客户端能正确连接服务器的 NFS 服务端口(默认 NFS 服务端口为 2049,RPC 端口为 111)。通信流程
- 客户端向服务器的 RPC 服务请求 NFS 服务端口。
- 服务器返回 NFS 服务端口(通常为 2049)。
- 客户端与 NFS 服务建立连接,进行文件操作(如读取、写入)。
三、常用配置与命令
1. 服务器端(以 Linux 为例)
五、优缺点与替代方案
优点
缺点
替代方案
六、注意事项
安装 NFS 服务
# Debian/Ubuntu sudo apt-get install nfs-kernel-server# RHEL/CentOS sudo yum install nfs-utils
配置共享目录
编辑/etc/exports
文件,定义共享目录及权限:/shared/dir 192.168.1.0/24(rw,sync,no_root_squash) # 允许192.168.1.0/24网段读写
常用选项说明:
rw/ro
:读写 / 只读权限。sync/async
:同步(数据实时写入磁盘)/ 异步(先缓存再写入,性能高但可能丢失数据)。no_root_squash
:允许客户端 root 用户以 root 权限操作共享文件(默认root_squash
会将 root 映射为匿名用户)。subtree_check
:启用子目录权限检查(默认开启,若共享目录为子目录需保留)。重启服务
sudo systemctl restart nfs-kernel-server # Ubuntu sudo systemctl restart nfs-server # CentOS
2. 客户端(以 Linux 为例)
安装客户端工具
sudo apt-get install nfs-common # Ubuntu sudo yum install nfs-utils # CentOS
挂载远程目录
sudo mount -t nfs 192.168.1.100:/shared/dir /mnt/nfs # 临时挂载
若需开机自动挂载,可编辑
/etc/fstab
:192.168.1.100:/shared/dir /mnt/nfs nfs defaults 0 0
卸载挂载
sudo umount /mnt/nfs
四、应用场景
集群共享存储
如 Web 服务器集群共享静态资源(图片、视频),避免多节点数据不一致。开发测试环境
开发机与测试机共享代码目录,实时同步更新。备份与归档
将多个服务器的数据集中备份到 NFS 存储服务器。- 协议简单,部署成本低,适合局域网内的文件共享。
- 与 Linux 系统深度集成,性能稳定。
- 安全性不足:基于明文传输,缺乏加密机制(可通过 VPN 或 Kerberos 认证增强安全)。
- Samba(CIFS):支持 Windows 与 Linux 共享,兼容更好,支持加密和认证。
- GlusterFS/Ceph:分布式文件系统,支持高可用、横向扩展,适合大规模存储。
- FTP/FTPS:通过网络传输文件,支持加密(FTPS/SSL),但非实时挂载。
防火墙设置
- 开放 RPC 端口(111)和 NFS 端口(2049),或允许 UDP/TCP 的 111、2049 端口通信。
- 若使用动态端口(如
rpc.statd
),需配置防火墙允许随机端口或启用nfs-server
的固定端口模式。用户 ID 一致性
确保客户端与服务器的用户 ID(UID)一致,避免文件权限错乱(可通过 NIS/LDAP 统一用户管理)。生产环境优化
- 使用
async
提升写入性能,但需配合备份防止数据丢失。- 结合
autofs
实现按需挂载,减少资源占用。- 跨广域网性能差:依赖 TCP/IP,延迟较高,不适合公网环境。
- 单点故障:服务器宕机后,所有依赖其共享的客户端将无法访问。