在企业内部或开发环境中,经常需要在不同服务器之间共享文件。NFS(Network File System,网络文件系统)是Linux/Unix环境下最常用的文件共享协议之一,它允许服务器将目录导出到网络,让客户端像访问本地文件一样访问远程文件。本文将详细介绍如何在CentOS/RHEL系统上搭建NFS服务,从安装、配置到客户端挂载,并扩展介绍其适用场景及与同类软件的对比。一、环境准备与安装
1. 安装NFS软件包
使用yum一键安装NFS工具和RPC绑定服务(rpcbind负责管理NFS的端口映射):yum -y install nfs-utils rpcbind
2. 配置防火墙放行NFS服务
NFS依赖多个端口,建议直接放行对应的服务名称(防火墙将自动映射到实际端口):firewall-cmd --add-service=nfs --permanent --zone=publicfirewall-cmd --add-service=mountd --permanent --zone=publicfirewall-cmd --add-service=rpc-bind --permanent --zone=publicfirewall-cmd --reload
注意:如果未开启防火墙,可忽略此步骤;但在生产环境务必开启防火墙并精细控制访问。
二、配置NFS服务器
1. 编辑共享目录配置文件 /etc/exports
该文件定义了哪些目录共享给哪些客户端,以及共享权限。示例内容如下:/home/vms-nfs/ 10.10.1.0/24(rw,no_root_squash,no_all_squash,sync,anonuid=501,anongid=501)/home/files-nfs/ 10.10.1.0/24(rw,no_root_squash,no_all_squash,sync,anonuid=501,anongid=501)/home/vm/ylb/image/ 10.10.1.0/24(rw,no_root_squash,no_all_squash,sync,anonuid=501,anongid=501)/home/vm/ylb/voice/ 10.10.1.0/24(rw,no_root_squash,no_all_squash,sync,anonuid=501,anongid=501)
配置格式解析
安全提示:生产环境建议使用root_squash并指定anonuid为普通用户UID,避免客户端root权限过大。
2. 使配置生效
可通过exportfs -v查看当前生效的共享列表。3. 启动服务并设置开机自启
systemctl enable rpcbindsystemctl enable nfssystemctl start rpcbindsystemctl start nfs
三、客户端挂载NFS共享
1. 查看服务器共享了哪些目录
在客户端执行(假设NFS服务器IP为10.10.1.85):2. 挂载共享目录
mkdir -p /datamount -t nfs 10.10.1.85:/home/vms-nfs/ /data
无输出即表示成功,可用df -h或mount | grep nfs查看。3. 常见问题:使用TCP协议避免网络不稳定
如果挂载失败或卡顿,可能是UDP协议不稳定,可指定TCP:mount -t nfs 10.10.1.85:/home/vms-nfs/ /data -o proto=tcp -o nolock
proto=tcp:强制使用TCP传输。
nolock:禁用文件锁(某些场景需要)。
4. 设置开机自动挂载(可选)
10.10.1.85:/home/vms-nfs/ /data nfs defaults,_netdev 00
四、扩展:NFS的适用场景与同类软件对比
1. NFS的典型应用场景
企业内部文件共享:如开发团队共享代码、文档。
虚拟化/容器存储:KVM、Docker等可将虚拟机镜像或容器数据卷存放在NFS上,便于迁移。
高可用集群:配合Keepalived、Pacemaker等实现共享存储。
备份与归档:将多台服务器的数据集中存储到NFS服务器,统一备份。
2. 与其他共享/存储方案的对比
软件/协议 | 优点 | 缺点 | 适用场景 |
|---|
NFS | Linux原生支持,性能高,配置简单 | 跨平台性弱(Windows需额外软件),安全性较低(默认无加密) | 纯Linux环境,需要高性能共享 |
Samba (CIFS) | 跨平台强(Windows/macOS/Linux),权限管理细 | 配置复杂,性能略低于NFS | 混合环境,需与Windows域集成 |
GlusterFS | 分布式、高可用,可弹性扩展 | 部署运维复杂,小文件性能一般 | 大规模、需要横向扩展的场景 |
Ceph | 统一存储(块、对象、文件),高可靠 | 部署管理极复杂,资源消耗大 | 云平台(OpenStack)、容器化存储 |
小结:如果你只需要在Linux服务器间简单高效地共享文件,NFS是最佳选择;如果涉及Windows客户端,Samba更合适;若需要分布式存储或高可用,可以考虑GlusterFS或Ceph。五、安全建议与优化
限制访问IP:在/etc/exports中使用具体IP或网段,避免全网开放。
使用NFSv4:NFSv4支持更强的认证和加密(配合Kerberos),修改配置文件/etc/nfs.conf启用。
调整挂载参数:如增加rsize=1048576,wsize=1048576提高大文件传输性能。
防火墙加固:仅允许必要IP访问NFS相关端口(默认TCP 2049、111等)。
六、常见问题排查
mount失败,提示“access denied”:检查/etc/exports语法和客户端IP是否匹配,并执行exportfs -r重载。
客户端写文件时权限不足:检查共享目录的本地权限以及anonuid设置。
防火墙阻止:临时关闭防火墙测试,若正常则按第一部分开放服务。
RPC超时:网络不稳定时,尝试TCP协议挂载。
NFS作为Linux系统内置的轻量级文件共享方案,凭借其简单、高效的特点,至今仍在众多场景中广泛使用。希望本文能帮助你快速搭建起NFS服务,并在实际工作中灵活运用。如果你在配置过程中遇到问题,欢迎留言交流!