NFS即网络文件系统,它允许网络中的计算机之间通过TCP/IP协议来共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。可以理解为把远端服务器上的文件挂载到本地客户端上,所以文件权限需要在远端服务器上进行配置。
现在有2台服务器,server1(主):192.168.0.58, server2(从):192.168.0.119。
一、服务端IP:192.168.0.58 ,共享文件路径:/usr/local/certs
1,查看Linux系统信息:
cat /etc/redhat-release
2,查看是否安装了nfs 和 rpcbind。提示:之所以截图会有显示,是因为系统已经安装了nfs 和 rpcbind。
rpm -aq | grep nfs
rpm -aq | grep rpcbind
rpcbind是一个RPC服务,主要是在nfs共享时负责通知客户端,服务器的nfs端口号
3,如果没有安装则需要安装这 nfs 和 rpcbind 两个服务
yum install nfs-utils rpcbind
4,增加nfs 配置
vi /etc/exports
4.1 加入共享信息:/usr/local/certs 192.168.0.119(rw,sync,no_root_squash)
4.2 重新加载 NFS 服务配置文件 :exportfs -rv
参数说明:
/usr/local/certs:共享文件夹
192.168.0.119:挂载服务端目录的客户端ip
共享参数说明: # ro 目录可读 # rw 目录可读可写 # sync 将数据同步写入内存缓冲区与磁盘中 # async 将数据先写入内存缓冲区,有必要时才写入磁盘 # all_squash 将远程访问用户及组全映射成默认用户或用户组nfsnobody(或nobody) # no_all_squash 与all_squash配置相反 # root_squash 将root用户及所属组映射成默认用户或用户组 # no_root_squash 与root_squash配置相反 # anonuid 将远程访问用户映射成指定用户及ID的用户 # anongid 将远程访问用户组映射成指定用户组ID的用户组
5,启动 nfs 和 rpcbind 服务
必须先启动rpcbind,再启动nfs,才能让NFS在rpcbind上注册成功
service rpcbind start
service nfs start
查看启动状态:
service rpcbind status
service nfs status
6,查看共享的服务:
showmount -e
7,查看rpc 服务注册状态:
rpcinfo -p 192.168.0.58
NFS服务使用的111和2049端口是固定的,mountd端口是动态的,需要固定,然后在防火墙放行,也可以暴力的直接关闭防火墙。
二、客户端IP:192.168.0.119 ,挂载文件路径:/usr/local/certs
1,客户端也需要安装 nfs 和 rpcbind 服务,先查看系统信息是否和服务端系统同属于CentOs7,如果系统版本一致,参考服务端安装、启动、查看启动状态。
yum install nfs-utils rpcbind service rpcbind start service nfs start service rpcbind status service nfs status
2,显示NFS 服务端共享文件列表:
showmount -e 192.168.0.58
3,创建挂载目录:mkdir /usr/local/certs
4,挂载服务端的共享目录: mount -t nfs4 nfs服务器IP:/data /data
mount -t nfs -o nfs4 192.168.0.58:/usr/local/certs /usr/local/certs
查看挂载状态:
df -h
至此,NFS 文件共享服务端 和客户端配置成功。
三、设置客户端开机自动挂载
vi /etc/fstab # 加上
192.168.0.58:/usr/local/certs /usr/local/certs nfs defaults 0 0
3.1 客户端挂载后,写文件时可能会报一个权限问题:Permission denied。
解决这个问题可以修改nfs主服务器/etc/exports文件。
方法一:较安全
1),先查看uid:
id root
2),修改/etc/exports文件:
/usr/local/certs 192.168.0.58(rw, sync ,fsid=0,anonuid=65534,anongid=65534)
注:root用户的权限在尝试修改文件服务器上的文件时,文件系统将其识别为65534,匿名用户,限制了其写文件的权限。
3),重新加载 NFS 服务配置文件 :exportfs -rv , 可使用 exportfs -v 查看配置。
方法二:简单粗暴
加了no_root_squash,也可以解决问题 , no_root_squash: 有root的权限,不建议使用
直接修改/etc/exports为:
/usr/local/certs 192.168.0.119(rw,sync,no_root_squash)
参考:https://blog.csdn.net/Duke147/article/details/87810417
https://www.bilibili.com/read/cv10536078/
https://blog.csdn.net/weixin_42256397/article/details/97283989
https://blog.csdn.net/d0_0b/article/details/8731957