### 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