NFS工具使用方法(A服务器挂载B服务器磁盘分区文件共享)

文档创建者:admin
浏览次数:211
最后更新:2025-04-24
NFS 工具简介
NFS(Network File System)工具是一组用于实现网络文件共享的开源组件,包含服务端与客户端程序。其核心工具包 nfs-utils 提供以下功能:

1.服务端工具
nfsd:NFS 守护进程,处理客户端文件请求。
rpc.mountd:管理挂载请求与权限验证。
exportfs:动态管理共享目录(如 exportfs -arv 重载配置)。

2.客户端工具
mount.nfs:挂载远程共享目录(支持 NFSv3/v4)。
showmount:查看服务端共享列表(如 showmount -e <IP>)。

3.辅助工具
rpcinfo:检查 RPC 服务状态(如端口映射)。
nfsstat:监控 NFS 性能与连接统计。

4.配置管理
通过 /etc/exports 定义共享规则,结合 systemctl 管理服务启停(如 nfs-server)。
NFS 工具支持跨平台文件共享,适用于 Linux/Unix 环境,需配合 rpcbind 实现 RPC 协议通信。其优势在于低配置成本和高性能,但需注意权限控制与防火墙设置(如开放 2049 端口)。

一、环境说明
Server B(NFS 服务端):
IP: 192.168.77.134
共享目录: /data/nfs_share
权限目标: 允许 Server A 完全读写(rw + no_root_squash

Server A(NFS 客户端):
IP: 192.168.77.133
挂载目录: /mnt/nfs_data

Centos 9实验环境图片:
批注 2025-04-24 134043.png

二、Server B(服务端)操作
1. 安装 NFS 服务端工具

  1. # 确认已安装 nfs-utils 和 rpcbind(若已安装可跳过, rpcbind兼容所有NFS版本,用于实现 RPC 协议通信V4及以上版本可不需要安装)
  2. yum install -y nfs-utils rpcbind
复制代码

2. 创建共享目录并设置本地权限
  1. # 创建目录并赋予最大权限(777)
  2. mkdir   -p   /data/nfs_share
  3. chmod  -R  777   /data/nfs_share   #后面挂载完分区,重新赋予一下权限
复制代码

3.输入lsblk查看本地磁盘详细情况
2-lsblk  -sdb.png

4.挂载本地磁盘sdb到/data/nfs_share
  1. #格式化sdb磁盘ext4文件格式
  2. mkfs.ext4    /dev/sdb
复制代码
3-格式化sdb.png

  1. #本机有单独一块20G的磁盘,磁盘名称sdb,将sdb挂载到/data/nfs_share目录
  2. #编辑 /etc/fstab
  3. vi /etc/fstab
  4. #添加以下行:
  5. /dev/sdb     /data/nfs_share   ext4   nodev,defaults     0    0
复制代码
4-编辑fstab.png

  1. #生效配置:
  2. mount    -a
复制代码

df -h查看磁盘输出,data/nfs_share挂载情况
5-输入.png

5. 配置 NFS 共享规则
  1. 编辑 /etc/exports:
  2. vi /etc/exports
  3. #添加以下内容(允许 Server A 完全读写):
  4. /data/nfs_share  192.168.77.133(rw,sync,no_root_squash,no_all_squash)
复制代码
6.png

其他情况说明补充:
指定多个独立 IP
/data/nfs_share  192.168.77.133(rw,sync,no_root_squash,no_all_squash) 192.168.77.135(rw,sync,no_root_squash,no_all_squash)
使用 CIDR 网段(推荐)
允许整个子网内的服务器访问(例如 192.168.77.0/24):
/data/nfs_share  192.168.77.0/24(rw,sync,no_root_squash,no_all_squash)
混合模式(IP + 网段):
/data/nfs_share  192.168.77.133(rw,sync,no_root_squash,no_all_squash) 10.0.1.0/24(rw,sync,no_root_squash,no_all_squash)

参数解释:
rw: 读写权限
sync: 同步写入磁盘
no_root_squash: 允许客户端 root 用户保持权限
no_all_squash: 不压缩其他用户权限

4. 启动 NFS 服务并设置开机自启(A服务器和B服务器共同配置)
  1. systemctl  enable  --now  rpcbind  nfs-server
  2. systemctl  restart   nfs-server
复制代码

5. 配置防火墙放行 NFS 服务(A服务器和B服务器共同配置)
  1. # 放行 NFS 相关服务
  2. firewall-cmd --permanent --add-service={nfs,rpc-bind,mountd}
  3. firewall-cmd --reload
复制代码
  1. # 验证防火墙规则
  2. firewall-cmd --list-all | grep services
复制代码

6. 验证共享配置
  1. # 检查共享目录是否生效
  2. exportfs  -arv
  3. showmount  -e  localhost
复制代码
预期输出:
/data/nfs_share  192.168.77.133
7.png

三、Server A(客户端)操作
1. 安装 NFS 客户端工具
  1. yum install -y nfs-utils
复制代码

2. 创建本地挂载目录
  1. # 创建目录并赋予最大权限(777)
  2. mkdir   -p    /mnt/nfs_data
  3. chmod  777  /mnt/nfs_data   #后面挂载完分区,重新赋予一下权限
复制代码

3. 临时挂载测试
  1. mount  -t   nfs  192.168.77.134:/data/nfs_share   /mnt/nfs_data
复制代码

4. 验证读写权限
  1. # 查看挂载状态
  2. df -hT | grep nfs
复制代码
8.png

df -h
9.png

  1. # 测试写入(以 root 用户创建文件)
  2. touch   /mnt/nfs_data/test_root.txt
复制代码

成功标志:
文件 test_root.txt test_nobody.txt 均能创建且无权限错误。
#ls   -l  /mnt/nfs_data查看成功新建的文件权限:
10.png

5. 配置开机自动挂载
  1. #编辑 /etc/fstab:
  2. vi /etc/fstab
  3. #添加以下行:
  4. 192.168.77.134:/data/nfs_share    /mnt/nfs_data   nfs   defaults,_netdev,rw  0   0
复制代码
11.png

  1. #生效配置:
  2. mount   -a
复制代码

四、高级权限调优(可选,一般用不上)
1. 强制目录所有权(服务端)
若需客户端写入的文件归属特定用户/组,在 Server B 上操作:
  1. # 修改共享规则(例如强制归属用户 1000:1000)
  2. vi    /etc/exports
  3. /data/nfs_share 192.168.77.133(rw,sync,all_squash,anonuid=1000,anongid=1000)
复制代码
  1. #重启服务生效
  2. systemctl  restart  nfs-server
复制代码

2. 禁用 SELinux(如遇权限问题)
  1. # 临时禁用
  2. setenforce 0
复制代码
  1. # 永久禁用(需重启)
  2. sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
复制代码


五、故障排查命令
1. 服务端检查
  1. # 查看 NFS 服务状态
  2. systemctl status nfs-server
复制代码
  1. # 检查 RPC 服务端口
  2. rpcinfo -p 192.168.77.134
复制代码
  1. # 查看 NFS 共享日志
  2. tail  -f  /var/log/messages  |  grep nfs
复制代码

2. 客户端检查
  1. # 测试网络连通性
  2. ping 192.168.77.134
  3. telnet 192.168.77.134  2049
复制代码
  1. # 查看挂载详情
  2. mount | grep nfs
复制代码
  1. # 卸载目录(强制)
  2. umount -lf  /mnt/nfs_data
复制代码

六、最终验证
服务端:
ls -l   /data/nfs_share  # 查看客户端创建的文件权限

客户端:
echo "test" > /mnt/nfs_data/test_write.txt  # 写入测试
cat /mnt/nfs_data/test_write.txt           # 读取测试

总结
权限最大化核心:
服务端 /etc/exports 使用 rw + no_root_squash
本地目录权限 chmod 777
持久化配置:
客户端 /etc/fstab 添加挂载条目。
防火墙与 SELinux:
确保防火墙放行 NFS 服务,按需调整 SELinux 策略。
按此流程操作后,Server A 将拥有 Server B 共享目录的完全读写权限。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则