admin 发表于 2025-4-24 20:33:04

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

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实验环境图片:


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

# 确认已安装 nfs-utils 和 rpcbind(若已安装可跳过, rpcbind兼容所有NFS版本,用于实现 RPC 协议通信V4及以上版本可不需要安装)
yum install -y nfs-utils rpcbind
2. 创建共享目录并设置本地权限
# 创建目录并赋予最大权限(777)
mkdir   -p   /data/nfs_share
chmod-R777   /data/nfs_share   #后面挂载完分区,重新赋予一下权限
3.输入lsblk查看本地磁盘详细情况


4.挂载本地磁盘sdb到/data/nfs_share:
#格式化sdb磁盘ext4文件格式
mkfs.ext4    /dev/sdb

#本机有单独一块20G的磁盘,磁盘名称sdb,将sdb挂载到/data/nfs_share目录
#编辑 /etc/fstab
vi /etc/fstab
#添加以下行:
/dev/sdb   /data/nfs_share   ext4   nodev,defaults   0    0

#生效配置:
mount    -a
df -h查看磁盘输出,data/nfs_share挂载情况


5. 配置 NFS 共享规则
编辑 /etc/exports:
vi /etc/exports
#添加以下内容(允许 Server A 完全读写):
/data/nfs_share192.168.77.133(rw,sync,no_root_squash,no_all_squash)

其他情况说明补充:
指定多个独立 IP
/data/nfs_share192.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_share192.168.77.0/24(rw,sync,no_root_squash,no_all_squash)
混合模式(IP + 网段):
/data/nfs_share192.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服务器共同配置)
systemctlenable--nowrpcbindnfs-server
systemctlrestart   nfs-server
5. 配置防火墙放行 NFS 服务(A服务器和B服务器共同配置)
# 放行 NFS 相关服务
firewall-cmd --permanent --add-service={nfs,rpc-bind,mountd}
firewall-cmd --reload
# 验证防火墙规则
firewall-cmd --list-all | grep services
6. 验证共享配置
# 检查共享目录是否生效
exportfs-arv
showmount-elocalhost预期输出:
/data/nfs_share192.168.77.133


三、Server A(客户端)操作
1. 安装 NFS 客户端工具
yum install -y nfs-utils
2. 创建本地挂载目录
# 创建目录并赋予最大权限(777)
mkdir   -p    /mnt/nfs_data
chmod777/mnt/nfs_data   #后面挂载完分区,重新赋予一下权限
3. 临时挂载测试
mount-t   nfs192.168.77.134:/data/nfs_share   /mnt/nfs_data
4. 验证读写权限
# 查看挂载状态
df -hT | grep nfs

df -h


# 测试写入(以 root 用户创建文件)
touch   /mnt/nfs_data/test_root.txt
成功标志:
文件 test_root.txt 和 test_nobody.txt 均能创建且无权限错误。
#ls   -l/mnt/nfs_data查看成功新建的文件权限:


5. 配置开机自动挂载
#编辑 /etc/fstab:
vi /etc/fstab
#添加以下行:
192.168.77.134:/data/nfs_share    /mnt/nfs_data   nfs   defaults,_netdev,rw0   0

#生效配置:
mount   -a
四、高级权限调优(可选,一般用不上)
1. 强制目录所有权(服务端)
若需客户端写入的文件归属特定用户/组,在 Server B 上操作:
# 修改共享规则(例如强制归属用户 1000:1000)
vi    /etc/exports
/data/nfs_share 192.168.77.133(rw,sync,all_squash,anonuid=1000,anongid=1000)
#重启服务生效
systemctlrestartnfs-server
2. 禁用 SELinux(如遇权限问题)
# 临时禁用
setenforce 0
# 永久禁用(需重启)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

五、故障排查命令
1. 服务端检查
# 查看 NFS 服务状态
systemctl status nfs-server
# 检查 RPC 服务端口
rpcinfo -p 192.168.77.134
# 查看 NFS 共享日志
tail-f/var/log/messages|grep nfs
2. 客户端检查
# 测试网络连通性
ping 192.168.77.134
telnet 192.168.77.1342049
# 查看挂载详情
mount | grep nfs
# 卸载目录(强制)
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 共享目录的完全读写权限。
页: [1]
查看完整版本: NFS工具使用方法(A服务器挂载B服务器磁盘分区文件共享)