### NFS 服务端
dnf install -y nfs-utils rpcbind
# 创建或确定共享的目录
mkdir -p /srv/nfs_share
# 设置权限,NFS 默认会将远程 root 映射为 nobody/nfsnobody。
chmod 777 /srv/nfs_share
chown nfsnobody:nfsnobody /srv/nfs_share
# 编辑配置文件加入共享的目录
vi /etc/exports
/srv/nfs_share 192.168.1.101(rw,sync,no_subtree_check)
# 客户端 IP (或网段如 192.168.1.0/24)
# 参数 rw: 允许读写 (默认为 ro 只读) , sync : 同步写入 ,no_subtree_check : 禁用子树检查
# 启动服务并应用配置
systemctl start rpcbind
systemctl enable rpcbind
systemctl start nfs-server
systemctl enable nfs-server
# 重新加载 exports 配置 (无需重启服务即可生效)
exportfs -r
# 验证当前共享状态,预期输出配置的共享目录和允许的客户端 IP
showmount -e localhost
# 配置防火墙端口 111 2049
### NFS 客户端
dnf install -y nfs-utils
# 创建挂载点
mkdir -p /mnt/nfs_share
# 手动挂载测试,服务端 IP
mount -t nfs 192.168.1.100:/srv/nfs_share /mnt/nfs_share
# 验证挂载
df -h | grep nfs
ls -l /mnt/nfs_share
# 测试读写权限
touch /mnt/nfs_share/test.txt
echo "Hello NFS" > /mnt/nfs_share/test.txt
cat /mnt/nfs_share/test.txt
rm /mnt/nfs_share/test.txt
# 配置开机自动挂载,编辑 fstab 文件末尾添加
vi /etc/fstab
192.168.1.100:/srv/nfs_share /mnt/nfs_share nfs defaults,_netdev 0 0
# 参数解释:
# _netdev : 告诉系统这是网络设备,等待网络就绪后再挂载 (非常重要,否则启动可能卡住)
# defaults: 使用默认挂载选项 (rw, suid, dev, exec, auto, nouser, async)
# 测试 fstab 配置是否正确 (无需重启)
mount -a
# 如果没有报错,说明配置正确
# 如果修改了文件系统权限 (chmod/chown),客户端可能需要重新挂载才能看到新权限
# 在客户端执行:
mount -o remount /mnt/nfs_share
# 查看 NFS 挂载的详细选项
mount | grep nfs
cat /proc/mounts | grep nfs
# 在客户端执行卸载,记得同时从 /etc/fstab 中删除对应行,防止下次启动报错
umount /mnt/nfs_share
# 如果提示 "target is busy",可以使用 lazy unmount
umount -l /mnt/nfs_share
### Permission Denied (权限拒绝)
# 原因 1: 服务器端 /etc/exports 中的 IP 地址不匹配
# 解决: 检查 /etc/exports,确保客户端 IP 在允许列表中
# 原因 2: 文件系统权限不足
# 解决: 在服务器端检查目录权限
ls -ld /srv/nfs_share
# 确保 NFS 用户 (nobody/nfsnobody) 有读取/写入权限
# 原因 3: SELinux 阻止 (CentOS/RHEL)
# 解决: 临时关闭 SELinux 测试
setenforce 0
# 如果问题解决,永久配置 SELinux 布尔值:
setsebool -P nfs_export_all_rw on
setsebool -P use_nfs_home_dirs on
### Connection Refused / Timeout (连接被拒/超时)
# 原因 1: 防火墙未开放端口
# 解决: 检查服务器防火墙状态
firewall-cmd --list-all
# 原因 2: NFS 服务未启动
# 解决: 检查服务状态
systemctl status nfs-server
# 原因 3: 网络不通
# 解决: 从客户端 ping 服务器
ping 192.168.1.100
# 原因 4: rpcbind 服务异常
# 解决: 重启 rpcbind
systemctl restart rpcbind
### Stale File Handle (陈旧的文件句柄)
# 原因: 服务器重启或共享目录结构变化,客户端缓存未更新
# 解决: 卸载后重新挂载
umount /mnt/nfs_share
mount -a
### 性能优化 (可选)
# 在 /etc/fstab 中可以调整 rsize 和 wsize 以提高大文件传输性能
# 例如:
# 192.168.1.100:/srv/nfs_share /mnt/nfs_share nfs defaults,_netdev,rsize=1048576,wsize=1048576 0 0
# 查看当前挂载的性能参数
nfsstat -m