一、NFS简介NFS(Network File System) 是一种分布式文件系统协议,允许用户通过网络在不同主机间共享文件和目录。它适用于局域网环境,常用于服务器集群、数据共享等场景。本文详细介绍NFS服务端与客户端的安装、配置及挂载流程。
NFS的架构为传统的C/S模式,工作流程可以概括为”请求-响应”模式:
服务器启动NFS服务并注册到RPC
客户端询问RPC服务:“NFS服务在哪?”
RPC回复:“NFS服务在XXX端口”
客户端连接到NFS服务端口
客户端发送文件操作请求,服务器执行并返回结果
rpcbind:最重要的RPC服务,扮演”总机接线员”角色
rpc.mountd:处理客户端挂载请求,验证权限
rpc.nfsd:NFS核心守护进程,处理文件读写请求
二、NFS服务端配置
1、安装服务
sudo yum install nfs-utils # CentOS 7
sudo dnf install nfs-utils # CentOS 8+/RHEL
2、创建共享目录
sudo mkdir -p /mnt/nfs_share
sudo chown nobody:nogroup /mnt/nfs_share # 设置权限整
3、配置NFS导出规则编辑配置文件 /etc/exports,定义共享目录及访问权限:
语法:<共享目录> <客户端IP/网段>(权限选项)
/mnt/nfs_share 192.168.1.0/24(rw,sync,no_subtree_check)
4、防火墙配置开放 NFS 相关端口(NFSv4 默认使用 TCP 2049):
sudo ufw allow 2049/tcp # Ubuntu
sudo firewall-cmd –permanent –add-service=nfs && firewall-cmd –reload # CentOS
三、客户端nfs安装配置
sudo yum install nfs-utils
sudo mkdir -p /mnt/nfs_client
sudo mount -t nfs <服务端IP>:/mnt/nfs_share /mnt/nfs_client
自动挂载在/etc/fstab
<服务端IP>:/mnt/nfs_share /mnt/nfs_client nfs defaults 0 0
验证挂载
df -h | grep nfs # 查看挂载状态
touch /mnt/nfs_client/test.txt # 测试读写权限服务端配置文件管理
exportfs -r # 重载使新配置生效
exportfs -v # 查看当前导出的共享列表
exportfs -a # 启用/导入所有共享
exportfs -ua # 取消/导出所有共享
#服务端
rpcinfo -p # 查看NFS相关服务使用的端口
nfsstat -s # 检查NFS服务器状态
cat /proc/fs/nfsd/versions # 查看当前NFS支持版本
客户端
rpcinfo -t <服务器IP> nfs # 测试NFS服务器可达性
showmount -e <服务器IP> # 查看服务器共享的目录
mount -t nfs [参数] <服务器IP>:<共享目录> <本地挂载点> # 挂载NFS共享目录
umount <本地挂载点> # 卸载NFS共享,-f 强制卸载
cat /proc/mounts | grep nfs # 检查NFS挂载参数
四、常见问题解决
1、日志查看
服务端日志: /var/log/messages(。
journalctl -u nfs-server | grep nfs
客户端日志:dmesg | grep nfs。
2、权限被拒
检查服务端 /etc/exports 的权限配置。
确保客户端用户对挂载点有访问权限。
3、连接超时或无法访问
确认防火墙已放行NFS端口(尤其是NFSv3需要额外开放 rpcbind 端口)。
使用 rpcinfo -p <服务端IP> 检查RPC服务状态。
4、挂载后文件属主显示为nobody
在服务端配置 no_all_squash 或指定 anonuid/anongid。
